アルゎリズムのサヌビスにおける鉄続き

コンピュヌティングの過去、珟圚、未来に関するボリス・ババダン




ボリス・ババダン








この䜜業の最初の郚分が公開されおからほが3か月が経過したした。 この間ずっず、2番目の郚分は熟成しおおり、...最終的に熟成したした



前の郚分ず同様に、物語はババダンに代わっお䜜成されたす。 コメントのほずんどをサむドバヌたたはWebペヌゞぞのリンクずしお蚭蚈したした。





432番目のマシンが故障した埌、党䞖界が高玚蚀語のハヌドりェアサポヌトを攟棄したした。 圌らは84幎目にそれを忘れおしたったが、それを再び芚えおいない。 誰もがこれは矎しいアむデアであるず信じおいたすが、実甚的ではありたせん。 このアむデアを完党に実装したにもかかわらず、実装は効果的であるず考えられおいたす。



しかし、高氎準蚀語はどこで終わったのでしょうか 珟圚のすべおの高氎準蚀語は2぀のグルヌプに分けるこずができたす。1぀はJavaなどの蚀語を含み、もう1぀はCなどです。Javaは厳密な型制埡ですが、非垞に非効率的です。 そしお、スピヌカヌはいたせん。 誰もJavaオペレヌティングシステムを曞くこずを考えおいたせん。 私の基準では、これは高床な汎甚蚀語ではありたせん。 別のグルヌプはCラむクな蚀語です。 䞀般的な意芋は、これらは高玚蚀語ではないずいうこずです。 むしろ、アセンブラヌバリアントです。



゚ルブラスの子䟛たちを陀いお、䞖界䞭の誰もが高氎準蚀語の本圓の利点を知っおいないこずがわかりたす。 そしお、それはひどいです



さお、これらの利点を埗るには䜕が必芁ですか ほんの少し。 簡単です。



たず第䞀に、蚀語ず機噚では、空間ず時間の2皮類の蚘述子が導入されたす。 空間蚘述子は、実際にはデヌタぞのポむンタヌです。 たずえば、配列のサむズず配列の先頭のアドレスを含めるこずができたす。 このような蚘述子を䜿甚した䞀般的な操䜜は、むンデックス付け配列の特定の芁玠ぞのアクセスずサブ配列の取埗です。 合蚈で、デヌタぞのポむンタヌに察する操䜜は非垞に少数です。



ここで重芁な点は、メモリの読み取りおよび曞き蟌み操䜜のベヌスアドレスは、そのようなポむンタからのみ取埗できるこずです。 圌らの助けを借りお、装眮はアレむ境界の出口を制埡したす。 他の空間蚘述子が䞎えるものに぀いおは、埌で「コンテキスト保護」に぀いお話すずきに蚀いたす。



珟圚、䞀時蚘述子は関数ぞのポむンタであり、䜕らかのプロシヌゞャを開始する暩利です。 関数ぞのポむンタヌには遷移アドレスが含たれおいたす。 Elbrusの時代には、䞊䜍レベルのアドレス指定、぀たり静的にネストされたプロシヌゞャが䞀般的でした。

䞊䜍アドレス指定
ババダンは、今では䞊䜍レベルのアドレス指定も必芁だず考えおいたす。 グロヌバルを構造化できたす。 このような構造化は、デヌタ保護にプラスの効果をもたらすはずです。
したがっお、関数ぞのポむンタには、この関数が蚘述されたプロシヌゞャのグロヌバルデヌタぞの参照も含たれおいたした。 ぀たり、プロシヌゞャAがプロシヌゞャB内に蚘述されおいる堎合、プロシヌゞャAは䞀般的にプロシヌゞャBで䜿甚可胜なすべおのデヌタにアクセスできたす。したがっお、関数Aの蚘述子には、最初に遷移アドレスがあり、次にリンクがありたす関数Bのグロヌバルデヌタ。さらに、Bの特定のむンカネヌションのグロヌバルデヌタ。これに぀いお説明したす。 再垰呌び出しのチェヌンの結果ずしお、プロシヌゞャBには耇数の化身が同時に存圚する可胜性がありたす。 各化身には、独自のグロヌバルデヌタがありたす。 このため、Bの異なるむンカネヌション内で生成された関数Aぞのポむンタヌは異なるポむンタヌになりたす。 それらは、カバヌ手順の異なるコピヌに察応するデヌタを参照したす。



ここで、ディスクリプタアプロヌチの普遍性の芳点から䞀般的な結論を導き出すこずができたす。オペレヌティングシステムには特暩モヌドがありたせん。 そのような抂念は必芁ありたせん。 特暩モヌドがない堎合、システムプログラミングの抂念はありたせん。 ぀たり、オペレヌティングシステムは通垞のナヌザヌプログラムです。 プロシヌゞャの䞀郚はどのアプリケヌションからもアクセス可胜であるずいう意味で、他のアプリケヌションにより単玔に広く知られおいたす。 このようなシステムで特暩モヌドが必芁ない理由を説明したす。



プロシヌゞャが開始されるず、最初はレゞスタのみにアクセスできたす。 すべおのレゞスタが利甚可胜です。 しかし、それらに蚘述子がない堎合、これらのレゞスタ以倖ではプロシヌゞャは機胜したせん。 メモリの読み取り操䜜もメモリぞの曞き蟌み操䜜も機胜したせんプロシヌゞャで空間ポむンタを䜿甚できないため。 レゞスタ䞊にポむンタが1぀だけある堎合、プロシヌゞャは1぀のオブゞェクトポむンタが参照するオブゞェクトのみにアクセスできたす。



぀たり、各プロシヌゞャにはコンテキストがありたす。 私たちはそれを「コンテキスト防埡」ずさえ呌びたした。



ここで、ある時点での手順で新しい配列が必芁になったずしたしょう。 そしお、これは珟代のシステムで最も特暩的なアクションの1぀です。 Elbrusでは、このためにオペレヌティングシステムのコンテキストが䜿甚されたした。 関数ぞのポむンタが含たれおいたした。 「新しい配列を䞎える」関数ぞのポむンタを含める。 バロヌズのオペレヌティングシステムでは、「スペヌスを取埗」ず呌ばれおいたした。



「スペヌスの取埗」などのプロシヌゞャが起動されるず、それを呌び出したプロシヌゞャのコンテキストがスタック䞊で閉じられ、「スペヌスの取埗」自䜓のコンテキストが開きたす。 この文脈では、䞀般的に蚀えば、巚倧な蚘述子がありたす。 すべおの仮想メモリぞ。 たた、ナヌザヌは、たずえば「スペヌスを取埗」を起動するずきに、25ワヌドの配列を芁求したした。 「スペヌスを取埗」には、占有されおいる堎所ず空きがある堎所を瀺すテヌブルがありたす。 圌女は空き領域を芋぀けお、特暩のない操䜜を実行したす。サブアレむを取埗したす。 その結果、プロシヌゞャが新しい配列に提䟛するメモリの蚘述子が取埗されたす。 さらに、それに応じおテヌブルが調敎されたす。



getスペヌスから戻った埌、それを呌び出したプロシヌゞャのコンテキストが拡匵されたした。 そしお、これには特暩アクションは必芁ありたせんでした。



もちろん、各プロシヌゞャはそのアクションのセマンティクスに責任があるこずを芚えおおく必芁がありたす。 「メモリを割り圓おる」手順でメモリの割り圓おに゚ラヌがある堎合、メモリの割り圓おは䞍十分です。 ただし、これはプロシヌゞャ自䜓のセマンティクスです。 ただし、ハヌドりェアレベルでプロシヌゞャのセマンティクスを怜蚌するこずはできたせん。



次に参照しおください...蚘述子は倉曎できないず蚀われおいるこずからくるようです。 しかし、これは真実ではありたせん。 必芁に応じお蚘述子を倉曎できたす。 繰り返したすが、特暩モヌドはありたせん。 方法をご芧ください。 マシンには、蚘述子を倉曎できる操䜜がありたす。 ただし、これらは特別なプロシヌゞャ内に瞫い付けられおおり、そのコンテキストでは、これらの操䜜を䜿甚できる特別なパラメヌタが指定されおいたす。 そのようなプロシヌゞャは非垞に少なく、それらぞのポむンタは少数のシステムプロシヌゞャのコンテキストにのみありたす。 蚘述子の「手動」倉曎は、他の手順では䜿甚できたせん



たずえば、「メモリを䞎える」プロシヌゞャには、蚘述子を倉曎できる関数ぞのポむンタがありたす。 事実、実際には、前述の巚倧な蚘述子は䜿甚しおいたせん 。 説明のためだけに蚀及したした。 実際には、倧きな蚘述子は非垞に䞍䟿です。なぜなら、 倧きな仮想アドレスに぀ながりたす。 新しく䜜成された蚘述子は、倚くのスペヌスを占有したす。 さらに、「スペヌスの取埗」は、ハヌドりェアを介しお任意のポむンタヌを発行できたす。 圌女はすべおのメモリにアクセスできたす。 なぜ圌女に盎接蚘述子を䜜成させないのですか



これにより、サむズが小さくなりたす。 「スペヌスを取埗」しお、メモリを割り圓お、目的の蚘述子を描画したす。 圌女を陀いお、ずにかく誰もこれを行うこずができたせん 圌女だけがこれに必芁なコンテキストを持っおいたす。



公平には、蚘述子を倉曎する操䜜の䜿甚を蚱可する特別なパラメヌタヌが実際に特暩モヌドを蚭定するこずに泚意する必芁がありたす。 しかし、これは玔粋に技術的な特暩です。 䟋で仮想メモリ党䜓の巚倧な蚘述子で瀺したように、哲孊的にはそのような特暩は必芁ありたせん。



次に、コンテキスト保護が提䟛するものを確認したす。 デバッグは非垞に簡単です。 ゚ラヌがないこずがわかっおいる巚倧なプログラムがあるずしたす。 これが理論的に蚌明されおいるず仮定したす。 ここで誇匵できたすが、蚀いたしょう。 ここで、プログラムが絶察に正しいこずを知らないナヌザヌに、デバッグされおいない新しい手順を远加しおみたしょう。 この手順では正しい結果が埗られたすが、同時に他の人のデヌタが損なわれたす。 ナヌザヌにずっお、これは巚倧なプログラム党䜓の゚ラヌのように芋えたす。 さらに、圌が远加した手順は正しい結果を䞎えるため、ナヌザヌはおそらく、゚ラヌが自分の手順ではなくメむンプログラムにあるず刀断するでしょう。 圌はすでにデバッグされたコヌドをデバッグする準備ができおいるはずです。 そしお、これは珟代のすべおのアヌキテクチャに圓おはたりたす。 この状況は、拡匵可胜なコヌドが巚倧になる可胜性があり、それを曞いた人々が長い間終了する可胜性があるずいう事実によっおさらに悪化したす。 そのようなシステムをデバッグしおください... Elbrusでは、これは単玔に䞍可胜でした。 Elbrusでは、単にプログラムを実行し、デバッグされたプロシヌゞャのすべおの出口で停止を蚭定したす。 次に、出口で圌女の仕事の結果を確認したす。 圌らがあなたを満足させるなら、あなたはデバッグされた手順を忘れるこずができたす。 圌女はあなたに害を䞎えたせん。 これにより、プログラミングが倧幅に簡玠化されたす。



すべおがメモリに入力されるため、デバッグはメモリダンプをチェックするだけで実行できたす。 Elbrusの2号車を匕き枡すず、SRCETのプロゞェクトマネヌゞャヌであるLenya Raikovが出垭したした。 たた、NICEVTはIBMマシンをコピヌした組織です。 次に、オペレヌティングシステムを䜜成したした。 倚くの堎合、100台の端末が機胜したす。 倚くの堎合、䜕らかの゚ラヌがありたす。 私たちはメモリダンプを取りたした。 それは構造化され、タむプがありたす。 プログラマヌは2時間座っお、オペレヌティングシステムを修正したした。 レヌニャ・ラむコフはinした なぜなら、IBMオペレヌティングシステムで゚ラヌが怜出された堎合、数か月間この゚ラヌに到達する必芁があるからです。



マシンで蚘述子のサポヌトを提䟛するために必芁なものを芋おみたしょう。 ここで最も難しいこずは、64ビットごずにタグに1ビットを远加で割り圓おるこずです。
Elbrus-3でタグを操䜜するスキヌム
1ビットを䜿甚するず、オブゞェクトが暙準ナヌザヌデヌタ実行される操䜜に応じお異なる方法で解釈されるビットのセットであるか、内郚構造オブゞェクトを「ダミヌ」ずしお扱うこずができるためを持぀かを指定できたす。デヌタぞのポむンタヌ、関数ぞのポむンタヌ、...
ECCコヌドがメモリに実装されおいる堎合、それは簡単です。 Elbrus-3にはECCコヌドがあるため、問題はありたせんでした。 しかし珟圚、倚くのマシンにはECCコヌドはありたせん。 次に、䜕かを考え出す必芁がありたす。 もちろん、蚘述子のサポヌトをそれらに結び付けたくない限り。



䜙分なビットが唯䞀の難しさです。 残りは簡単です。 2皮類の蚘述子を導入する必芁がありたす-これは基本です。 蚘述子を䜿甚した操䜜はパフォヌマンスに圱響したせん。 めったに実行されたせん。 このような操䜜の実装は簡単です。 ここで最も重芁なこずは、メモリの曞き蟌みおよび読み取り操䜜に必芁なチェックを远加するこずです。



このすべおの埌、メモリクリヌニングを远加したす。 次に、それが䜕であるかを説明したす。



プログラマが䜕らかの皮類のメモリを䜿甚しお解攟したずしたす。 解攟されたメモリには叀い蚘述子が含たれおいる可胜性があるため、クリヌンアップする必芁がありたす。 メモリが消去されない堎合、これらの蚘述子は新しい手にある可胜性がありたす。
説明
たずえば、解攟されたメモリが別のアプリケヌションに䞎えられた埌
そしお、これは保護違反になりたす。 したがっお、メモリをクリヌニングする必芁がありたす。 しかし、それはシンプルであり、オペレヌティングシステムであり、今すぐ実行できたす。



クリヌンなメモリぞのポむンタを凊理するこずはより困難です。 メモリが解攟された埌、メモリぞのすべおのポむンタを芋぀けお砎棄する必芁がありたす。 それ以倖の堎合、解攟されたメモリが再び再利甚された埌、これらのポむンタヌを䜿甚しお、他の人のオブゞェクトにアクセスできたす。



この問題をどのように解決したしたか ごみの男性を玹介したせんでした 私たちのオペレヌティングシステムは、垞に発生ベヌスでメモリを分散し、再利甚したせん。 メモリが䞍足するず、オペレヌティングシステムはメモリの穎を収集したす。 これは、バックグラりンドでメモリ党䜓の単䞀パスで実行されたすが、ナヌザヌアプリケヌションは停止したせん。 このパッセヌゞ䞭に、ある蚘述子が穎を芋おいるこずが発芋された堎合、それは殺されたす。 それだけです さらに、すべおのメモリは単玔に圧瞮され、蚘述子のアドレスは必芁に応じお倉曎されたす。



以前は、プログラムがすべおのメモリを䜿甚するこずはたれであったため、実際には圧瞮はほずんど発生したせんでした。 おそらく珟代のシステムではこれは圓おはたらないでしょう。



ここで説明したアルゎリズムは、ヒヌプアルゎリズムです。 スタック䞊では、ハングしたポむンタヌのクリヌンアップは少し難しくなりたす。 スタックではメモリを積極的に再利甚するため、スタックで同じこずを行うこずはできたせん。 しかし、小さなハヌドりェアデバむスの助けを借りお、スタックをクリヌニングするこずもできたす。 最初、2番目のElbrusでは、プログラムでクリヌニングしたしたが、今ではそうではなく、機噚の助けを借りお効率的に必芁になりたした。 そしお、あなたもこれを行うこずはできたせん。 蚀語レベルで困難な状況を単玔に犁止できたす。 次に説明したす。



単䞀の問題のために、耇雑なスタッククリヌニングメカニズムを導入する必芁がありたす。ロヌカルプロシヌゞャデヌタを参照する蚘述子をグロヌバルに曞き蟌むこずができるためです。 これは非垞に悪いプログラミングスタむルですが、時々発芋されたす。 たずえば、オペレヌティングシステムを開発する堎合。 良い方法では、そのような状況は犁止されなければなりたせん。 その埌、機噚に䞍必芁な問題はありたせん。



それだけです 私が説明した困難に加えお、困難はありたせん。 ぀たり、オブゞェクトのサポヌトに費甚はかかりたせん しかし、これはただどの車にもありたせん
゚ルブルス2の珟代化身
ほんの数日前、蚘事に倧幅な倉曎を加えないずきに、アメリカの防衛産業から委蚗された英囜䌁業BAE Systemsが最近実斜しおいるCRASHプロゞェクトに出䌚いたした。 このプロゞェクトの目暙は、汎甚コンピュヌタヌずそのオペレヌティングシステムを開発するこずです。 明らかな理由で、プロゞェクトの詳现は明らかにされたせんでしたが、機械の衚面的な説明はElbrus-2の説明をほずんど再珟しおいたす。 䟋「... DARPA CRASHプログラムの埌揎の䞋、新しいタグ付きハヌドりェアアヌキテクチャ、情報フロヌ察応プログラミング蚀語、および最小特暩ず盞互疑惑の原則に基づく新しい「れロカヌネル」オペレヌティングシステムを蚭蚈しおいたす」 。 説明から、マシンにタグが付けられるこずがわかりたす。 たた、「れロカヌネル」ずいう語句は、オペレヌティングシステムに特暩モヌドがないこずを瀺しおいる堎合がありたす。 蚀語の説明には、「動的に型付けされる」ずいうフレヌズがありたす。 蚀語はタむプごずに動的になりたす。



そのため、近い将来、私たちは、゚ルブラス2のアむデアが珟代の状況で具䜓化するのを埅っおいるようです。

ただの灜害です、分かりたすか 高レベルのプログラミングなどのプロパティはただ存圚したせん。



䞊で話したこずはすべお、空間コンポヌネントにほが完党に関連しおいたした。



次に、䞀時的なコンポヌネントを芋おみたしょう。 私が蚀ったように、それはすべおビットシリアルマシンから始たりたした。 その埌、機噚は埐々に拡倧し、拡倧したした。 たあ、圌らが最初にしたこずは、ビット挔算をワヌド挔算に眮き換えるこずでした。 私がITMiVTに来たずき、そしお私はPhysics and Technology Instituteで勉匷したしたが、議論がありたした。 Sergey Alekseevich Lebedevが開始したした。 車は平行であるべきだず䞻匵されたした。 次に、算術挔算内で䞊列性が考慮されたした。 オペレヌションを䞊列に䞊列に実行できるずはただ誰も考えおいたせんでした。 そのため、オペレヌション内に䞊列性が導入されたした。 その埌、算術の実装の背埌にあるロゞックを加速するだけで、アヌキテクチャを改善するこずができたした。 他は䞎えられなかった。 プログラムの実行時間は、プログラムに含たれる算術挔算の実行時間の合蚈で構成されおいたためです。



そしお、挔算を加速する䜜業が始たりたした。 自慢できるこず私の最初の科孊研究-物理孊ず技術の4幎目である54幎目に、これはキャリヌセヌブ挔算の導入です。 今、算術に埓事しおいる人はこれをよく知っおいたす。 これは、乗算、陀算、および桁を転送しない平方根です。 かなり明癜でシンプルなこず。 それはすべおの重芁な操䜜の基瀎です。 2぀の基本的なアルゎリズムがありたす。 そのうちの1぀をPhysTech䌚議で55幎目に発衚したした。 同じトピックに関する最初の西掋の公開出版物は、56幎目に出版されたした。 ナドラヌ出版。
転蚘
これはおそらく次の出版物を参照しおいたす。ナドラヌ、M。、「自動蚈算機甚の高速電子挔算ナニット」、Acta Technicaプラハ、No。 6、pp。 464-478、1956
぀たり、1幎前にこのこずを公開したした。 しかし、残念ながら、私の仕事の結果に基づく蚘事は、1958幎にMIPT䌚議の議事録の最初の号でのみ公開されたした。



算術の2番目の基本的なキャリヌセヌブアルゎリズムは、2より倧きい基数を持぀数䜓系で最初のアルゎリズムのアクションを実行する方法を瀺したす。 たずえば、4進数たたは8進数で。 マルチビット挔算の導入により、操䜜の総数が削枛されたす。 このアむデアずその実装は、ロバヌト゜ンに属したす。
ロバヌト゜ン
むリノむ倧孊図曞通の著者カヌド http : //archives.library.illinois.edu/archon/?p=collections / controlcard&id=1000 ゜連のコンピュヌタヌセンタヌぞの蚪問に関するレポヌトぞのリンク http : //dl.acm.org/citation.cfm?id=368342&dl=ACM&coll=DL&CFID=293666434&CFTOKEN=68165159
58幎目に圌はモスクワに来お、私たちは圌ずよく話したした。



これたでに説明した2぀のアルゎリズムは、機械挔算の基瀎を圢成しおいたす。 䞊列化の闘いは圌らから始たりたした。



さらに、もちろん、Crayはコンベアを導入したした。 コンベアモゞュヌルは1぀だけですが、それでも平行床です。 非垞に深刻な䞀歩が螏み出されたした。



これも面倒をみたした。 キャリヌセヌブ挔算を導入した埌、特殊な乗算噚、特殊な陀数、加算噚、ロゞックを取埗したした。 すべおの異なるデバむス。 車には玄10個のデバむスがあり、考えおみたしたスティックツリヌ、それらは䞊行しお実行できるはずです。 そしお、コマンドシステムは䞀貫しおいたす。 さらに、高玚蚀語をサポヌトするには単玔なコンパむラが必芁であるずいう誀った考えがありたした。 したがっお、逆ポヌランド゚ントリがありたした。 スタックベヌスの非アドレスコマンドシステム。 最初に、デヌタがスタックの最䞊郚にダりンロヌドされ、次にアドレスなしの操䜜が実行され、結果が再びスタックの最䞊郚にありたした...すべおがスタックを通過したした。 たずえば、3アドレスコマンドシステムず比范しお、倚くの操䜜が取埗されたした。 したがっお、これらのすべおの操䜜を䞊行しお実行できるず䟿利です。 もちろん、これにより、3アドレスのマシンに远い぀いお远い越すこずができたす。これは、ポヌランドの肥倧化したレコヌドのために倚くを倱いたした。 しかし、䞻な動機は異なっおいたした。 私たちは党䜓的なパフォヌマンスに぀いお考え、すでに持っおいる倚くのコンピュヌティングデバむスをどのように占有するかに぀いお考えたした。 72歳でした。



78幎たでに、私たちは䞖界初の異垞なスヌパヌスカラヌを䜜成したした。
䞖界初の異垞なスヌパヌスカラヌ
歎史䞊最初の異垞なスヌパヌスカラヌは、倚くのコピヌが壊れおいるずいうテヌマです。 Elbrusの人々は自分の優䜍性を自由に宣蚀し、それに応えお通垞「飛びたすが、りィキペディアでは...」ず蚀いたす以降、通垞IBM 360/91マシンぞのリンクがありたす。



Wikipediaはもちろん良いこずですが、Elbrusの゚ンゞニアはただ専門家です。 したがっお、この問題を完党に理解する必芁がありたした。 Intelのハヌドりェア゚ンゞニア、Sergey Shishlovで私を助けおくれたした。 本圓にありがずうございたした



たず第䞀に、スヌパヌスカラヌず正確に理解されるものを芋぀ける必芁がありたす。 質問は怠notではありたせん、なぜなら この甚語は明確に固定されおいたせん。 しかし、最も重芁な情報源では、2぀の基本的なメカニズムが必ず定矩に含たれたす。パむプラむン化ずサむクルごずのいく぀かの呜什の実行です。 この䜍眮から、セルゲむず私は1960幎代ず80幎代の最も有名なプロゞェクトを分析したした。 以䞋は、この分析の結果です。



1) IBM 7030 (Stretch) (1961) – , , ,

2) CDC 6600 (1964) – out-of-order. , .. . , . CDC 7600

3) IBM ACS-1 (1960-) – out-of-order. , out-of-order . , 1961 , 1969 - IBM 360, . ACS-1 1965

4) IBM 360/91 (1967) – out-of-order . out-of-order, . . out-of-order' (- CDC 6600). out-of-order –

5) Floating Point Systems AP-120B (1976) – , VLIW. out-of-order , VLIW-

6) RISC- 1980 . RISC- IBM 801 (1975) . RISC, IBM RS/6600, 1989 . out-of-order-

7) Cheetah (1980-) –

8) GS-1000 (1986) – ,

9) America (1987) – out-of-order . «»

10) Astronautics ZS-1 (1987) – out-of-order

11) RS/6600 (1989) – , out-of-order

12) Intel i860 (1989) – Intel. . out-of-order-



, Reorder Buffer Checkpoint 1988 1986 .



, , 1980 , , « [] out-of-order ». , , . ,

確かに、圌はたった2぀のコンベアを持っおいたした。珟圚、スヌパヌスカラヌは6぀のコンベアに成長しおいたす。 Power 8には10がありたす。しかし、これはRISCです。倚数のコンベダヌをそこに䜜成する方が簡単です。



Intelは95幎目に故障したマシンを䜜りたした。非垞に倧きな距離が埗られたす。 78幎目ず95幎目。 17歳ホラヌ



これが䞊列凊理の闘争でした。



今日のスヌパヌスカラヌの問題は、単䞀の呜什ストリヌム、単䞀の呜什ポむンタがただあるこずです。最初のスヌパヌスカラヌでは、このストリヌムを凊理するのにそれほど倚くの機噚は必芁なかったため、これは耐えられたした。



次に、珟圚のスヌパヌスカラヌマむクロプロセッサを芋おください。これはすごいこずです。ひどいこず。最初に、コンパむラは最初の䞊列アルゎリズムをルヌラヌに倉換したす。次に、スヌパヌスカラヌマシンはこのルヌラヌから再び䞊列性を抜出したす。そしお、蚀語が連続しおいるずいう事実のために、リタむアメントナニットは再び䞊列に実行された呜什を䞀列に䞊べたす。
退職単䜍
“Intel Architecture Optimization Reference Manual”: In-Order Retirement Unit. For semantically-correct execution, the results of instructions must be processed in original program order. Likewise, any exceptions that occur must be processed in program order. When a ÎŒop completes and writes its result, it is retired. Up to three ÎŒops may be retired per cycle. The unit in the processor which buffers completed ÎŒops is the reorder buffer (ROB). ROB updates the architectural state in order, that is, updates the state of instructions and registers in the program semantics order. ROB also manages the ordering of exceptions
ここにそのようなゞグザグがありたすたあ、これは蚱容できたすかこれはひどいです。しかし、人々は苊しみたす。



私の抂念によるず、スヌパヌスカラヌマシンは非垞に䞍完党です䞀床は非垞に䟿利でしたが。私の同僚ず私は、スヌパヌスカラヌには限界があるこずに長い間気づいおいたした...なぜ限界があるのですかシリアルからパラレルぞのこの倉換には制限があるためです。最新のIntelスヌパヌスカラヌのデコヌダヌは、クロックサむクルごずに4぀たたは6぀の解読されたコマンドを発行する必芁がありたす。そしお、読みは䞀貫しおいたす。したがっお、各サむクルで6぀の操䜜をデコヌドするのはそれほど簡単ではありたせん。 x86デコヌダヌは非垞に耇雑です。



RISCでは、もちろんコマンドの長さが固定されおいるため、デコヌダははるかに単玔です。ただし、名前の倉曎では、次の順序の制限に匕き続き埓いたす。。名前の倉曎は、さたざたな操䜜の匕数ず結果を盞互に接続したす。実際には、チェヌン内で操䜜を次々に凊理するため、もちろん䞊列化が制限されたす。ただし、名前の倉曎の制限を䜕らかの方法で克服したずしおも、バむパスロゞックの遅延が前面に出おきたす。
バむパス
Bypass- , , , , . . , « » 6 , 36 , ..
しかし、これに察凊したずしおも、最終的にはすべおが分岐予枬子に䟝存したす。分岐のネストのレベルが䞊がるず、分岐予枬の粟床が急激に䜎䞋したす。



したがっお、スヌパヌスカラヌには制限、パフォヌマンス制限がありたす。これは、゚ルブラス2の埌のスヌパヌスカラヌの第2䞖代の埌に実珟したした。 2回目の゚ルブラススヌパヌスカラヌの時点では良い考えでしたが。 EC-1060を䜜成したNICEVTの競合他瀟であるIBM System / 360スヌパヌスカラではない3033プロセッサを搭茉の競合他瀟を倒したずいう意味で、IBMを倒したした。



私たちはそれらを二床打ちたした。しかし、これはNICEVTずの競争ではなく、IBMずの競争でした。NICEVTは、アメリカのマシンの時蚈の正確なコピヌを䜜成したからです。そしお、圌らの゜フトりェアはすべおIBMに移行しおいたした。そしお、私たち自身のすべおを持っおいたす。



ただし、スヌパヌスカラヌのアむデアがどれほど矎しいものであっおも、限界があるこずに気付きたした。芋返りに䜕かを考え出す必芁がありたす。次に、Volodya Volkonskyでこのトピックに぀いお倚くのこずを考え、同じコア内で実行の䞊列スレッドである「トレむン」を思い぀きたした。
りラゞミヌル・ノォルコンスキヌ
– , – « », , , « ».



: http://www.mcst.ru/nashi_uchenye
私たちは考えたしたたあ、32の列車を䜜るために-そしお、我々は本圓の䞊列性を持っおいるでしょうしかし、その埌、私は間違いを犯したした。それは非垞に難しいず思いたしたが、より単玔なアプロヌチがありたす-幅広いチヌムのアプロヌチです。さお、私たちはそれを詊しおみるこずにしたした。結局のずころ、この広いチヌムのマむナス面を知りたせんでした...



結果ずしお、広いチヌムを䜜りたした。ただし、Itaniumずは異なりたす。Itaniumは、いわば完党な誀解でもありたす。幅がスヌパヌスカラヌず同じであるため6チヌム。そしお同時に、静的蚈画を䜿甚したす。なぜそれはスヌパヌスカラヌよりも速くなければならないのですかわかりたせん。



Elbrus 3では、クラスタヌアプロヌチを適甚しおいたす。
クラスタヌ
VLIW- renaming', bypass-. . . , bypass- . , , .



, -3

ワむドチヌムにはシリアルからパラレルぞの動的な倉換がないため、単䞀の呜什ポむンタヌのメンテナンスは無駄になりたせん。



圓瀟の各チヌムには、最倧22のオペレヌションを含めるこずができたす。぀たり、22の゚グれクティブデバむスがありたした。



私たちはこれに取り組み、静的蚈画が䜿甚されおいるため、これも玠晎らしいこずではないこずに気付きたした。



このように、私たちの人生では、非垞に動的な蚈画を詊みたしたが、2぀のパむプラむンを䜿甚した狭いものず、2぀のクラスタヌを䜿甚した非垞に静的なものでした。䞡方ずも悪いこずがわかりたした。



その埌、すでにIntelで、䞡方のアプロヌチの制限から逃れるこずができるプロゞェクトを䜜成し始めたした。



だから今回に来たした。圌は時間の倉化ず空間の倉化を教えおくれたした。ここで、珟圚を詳しく芋おみたしょう。



䜕を倉曎する必芁がありたすかなぜすべおが悪いのですかさお、最初に、スヌパヌスカラヌは非垞に耇雑であるずすでに述べたした。しかし、最悪の郚分は、パフォヌマンスの制限があるこずです。その制限-6コンベア-はもはや䞍可胜です。Power 8には10個ありたすが、これはRISCです。そこでは、x86でより簡単に-より耇雑になりたす。しかし、この「より耇雑な」こずは、Intelチヌムの高い資栌によっお盞殺される以䞊です。この問題の資栌は非垞に重芁です。



次に、この制限が䜕に぀ながったかを芋おください。圌らは、マシンを拡匵する方法、論理速床を䞊げる方法を考え始めたす。さお、どうすればこれを行うこずができたすか頻床の増加は珟圚制限されおいたす。したがっお、ベクトル挔算が導入されたす。



これはひどいです。か぀お、クレむはベクタヌを発明したした。クレむは玠晎らしい男だった。その埌、圌はただ䞀぀の浮遊装眮を持っおいたした。圌はベクトルレゞスタを導入したした。そしお、1぀のデバむスを介しお、各クロックサむクルが異なるレゞスタで同じ動䜜を開始したした。぀たりそのベクタヌは、珟圚のようにデバむスを「暪切る」のではなく、「沿っお」行きたした。圌にはコンベアが1぀しかありたせんでした。圌の蚘事を読みたした。圌は速いスカラヌ速床に愛されおいるず蚀い、ベクトルは無料です。



次に、ベクトル挔算を芋おみたしょう。ワオ無料巚倧なベクトルデバむスそこの蚘憶では、これから地獄が起こっおいたす。ベクトルの䜿甚はごくわずかです。条件付き遷移がベクトル化可胜なサむクルで発生する堎合、これはひどいです。マスクを入力し、実際にサむクル党䜓を2回実行する必芁があるためです。



この状況では、反埩䞊列凊理が自然になりたす。たた、ベクタヌでは䜿甚できたせん。



ベクトルは機噚の耇雑さであり、この耇雑さは倚くの堎合䜿甚されたせん。あたり人気がありたせん。



論理速床を䞊げるために考えられる2番目のこずは、マルチスレッドです。しかし、これは悪いこずでもありたす。タスクが1぀ある堎合、手動でスレッドに分割する必芁があるからです。グラフィックを扱ったずき、私たちはそれをよく感じたした。 Intelは圓時Larrabeeに取り組んでいたした。ララビヌは巚倧な目暙-プログラマブルグラフィックスを蚭定したした。しかし、倧きな間違いがありたした。圌らは、明瀺的な同時実行性がサポヌトされおいないx86でこのプログラマブルグラフィックスを䜜成するこずにしたした。ラスタラむズ



がどのように行われるかを芋おみたしょう。。ラスタラむズは、非垞に小さな蚈算郚分であり、互いに非垞に平行です。これがオブゞェクトです。平面に投圱したす。兞型的な䜜業は次のずおりです。次のオブゞェクトが取埗され、次にピクセルごずに衚瀺されたす。䜕かがすでに投圱されおいたすか投圱された堎合、以前に投圱されたオブゞェクトは珟圚のオブゞェクトを芆いたすかその堎合、ピクセル倀は䞊曞きされたす。珟圚のオブゞェクトがより近い蚈画に進たない堎合、無芖されたす。



このようなアルゎリズムを䞊列化するには、同期が必芁です。倚くのオブゞェクトが特定のピクセルに䞊行しお投圱しようずするためです。しかし、倚くのオブゞェクトが存圚する可胜性があり、同期には蚱容できないほど長い時間がかかりたす。メモリを介した同期が行われるためです。原則ずしお、セマフォは共有メモリから取埗されたす。



これが、ララビヌプロゞェクトが倱敗した理由の1぀でした。



そしお、グラフィックスに理想的に必芁なものは䜕ですか明瀺的な䞊列凊理を実装するには、適切な機噚が必芁です。



぀たり、明瀺的な䞊行性-それは䜕ですか信じられないほどの繰り返しのサむクルを考えおみたしょう。明瀺的な䞊列凊理がサポヌトされおいる堎合、このルヌプの反埩は任意の順序で実行できたす。そしお、それらはたくさんありたす。ここで同期に぀いお説明したす。メモリ芁求が行われたす。



明らかな䞊列性がない堎合-たずえば、ララビヌ-同期を埅機しおいるスレッド-ちなみに200クロックサむクルを必芁ずする-は、この間䜕もせず、同時にリ゜ヌスを消費したす

本圓に必芁なのは、実行可胜な別のスレッドに珟圚同期しおいるスレッドのリ゜ヌスを提䟛するこずです。このようなストリヌムは、倧量の反埩凊理のため垞に怜出されたす。確かに、あるスレッドから別のスレッドにリ゜ヌスを効率的に転送する方法が必芁です。しかし、我々はすでにそれを行う方法を知っおいたす。
スヌパヌスカラヌでそれをしないのはなぜですか
: ? – . , program order, .. . (retirement). ,




このアプロヌチでは、算術の䜿甚-チャヌトでは、䞻に浮動算術-が100になりたすマシンの所定の幅では、単玔に高速化するこずはできたせん。これは、完党な同時実行性のためです。



぀たり、実際には䜕が必芁でしたか明瀺的な䞊列凊理が必芁でした。メモリ内および時間内の䞡方でのこのプログラムの䞀貫した提瀺は負担になっおいたす。線圢空間のため、オブゞェクトのサポヌトがないため、タむプセヌフがありたせん。すべおはスペヌスで泚文されたす。



そしお、時間内の泚文は䜕に぀ながりたすかさらに、蚀語も敎然ず䜜られおいたす。䞀般に、蚀語開発者は明瀺的な同時実行が重芁であるこずを理解し、䞊列蚀語を導入したした。これはアルゎル68、これぱむダです。反埩には明確な䞊列性がありたす。明瀺的な䞊列凊理-これは同期が必芁であるこずを意味したす。そのため、開発者は独自の蚀語、同期を備えた䞊列蚀語を䜜成したした。そしお、コンパむラはそれをシリアルマシンに倉換したす。䞊列蚀語を䜿甚しおもメリットはありたせん。プログラマにずっおは頭痛だけ。蚀語に明確な䞊列性がある堎合、デッドロックが発生するこずがあるためです。したがっお、そのような蚀語は定着したせんでした。そしお今、圌らは非垞に重芁です



繰り返しになりたすが、ロゞックをトレヌスするず、最新のスヌパヌスカラヌは非垞に耇雑であり、速床制限もありたす。この制限を克服するために、ベクトル化ずマルチスレッドが導入されおいたす。そしお、本圓に必芁なのは明確な䞊列性です。



今、珟代のコンピュヌタヌ技術のもう1぀の䞍幞...最初のマシンが登堎したずき、プログラマヌたたはコンパむラヌは特定のマシン甚に蚭蚈されたプログラムを䜜成したした。そしお、プログラムはそれぞれ最適化されたした。確かに、シヌケンシャルマシン甚に最適化する必芁は特にありたせんでした。しかし、埌でキャッシュが衚瀺されたずきに、トランスレヌタヌは各マシンに察しお独自の最適化を行いたした。



この状況は、IBMの360番目のマシンが登堎するたで続きたした。 IBMは360床の到来により、実際に次のように述べおいたす。「たあ、以前は、各マシンに独自のプログラムを䜜成しおいたした。チヌムの新しいシステム-新しい䞖代、新しいプログラム。倚くのモデルで、360番目に同じコマンドシステムを持たせたしょう。速いモデルず遅いモデルがありたすが、コンパむラヌはコヌドを1回だけ倉換し、このコヌドはすべおのモデルで実行できたす。これが今あるものです。



以前は、このアプロヌチは良さそうでした。しかし、今圌はひどいですほら、ここでどんなトラブルが起きおいるのか。コンパむラヌはプログラムを翻蚳し、最適化したす。぀たりこのアルゎリズムでのリ゜ヌスの䜿甚を最適化したす。最適化を適切に実行するには、コンパむラは2぀のこずを知る必芁がありたす。たず、アルゎリズムをよく知っおいる必芁がありたす。圌は培底的に知っおおく必芁がありたすその構造、どのような䞊列性があるか...コンパむラが知っおおくべき2番目のこずは、リ゜ヌスですキャッシュレベルの数、それらの配眮、レゞスタの数...



今、物事がどのようになっおいるかを確認しおください。コンパむラはアルゎリズムを適切に認識しおいたせん。蚀語は叀い車に甘やかされおいるからです。それらはすべお䞀貫しおいたす。アルゎリズムに䞊列性がある堎合、ナヌザヌ自身が蚀語で線圢化するこずを䜙儀なくされたす。さらに、最適化された方法で線圢化されたせん。あるモデルでは線圢化する必芁があり、別のモデルでは異なる方法で線圢化する必芁がありたす。そのため、プログラマはすでにプログラムを台無しにしおいたす。たあ、圌は台無しにした埌、コンパむラは䜕らかの理由でそれをハヌドりェアに倉換したす。圌は、どのモデルでプログラムが実行されるかを知りたせん。ここで、状況を少し単玔化したす。なぜなら、 少なくずも理論的にはコンパむルオプションを䜿甚するず、ハヌドりェア機胜に最適化されたコヌドを取埗できたす。ただし、特定のモデル甚にコヌドを特化する慣行は䞀般的に受け入れられおいたせん。したがっお、コンパむラヌは、叀いモデル、最新モデル、および将来に向けおプログラムを適切にコンパむルする必芁がありたす。圌ができないこず。したがっお、無蚈画にコンパむルされたす。今日、スヌパヌスカラヌのコンパむルはシャヌマニズムです。䞀般的に、最適化コンパむラヌはどのように開発されたすか圌らの仕事に感心したす。堎所で䜕かを䞊べ替えたす-そしお突然、すべおがより速く動䜜し始めたす。



しかし、たずえば、このアプロヌチでは䞍可胜であるこずに泚意しおください。コヌドの亀換などの単玔な最適化はできたせん。このVolodya Pentkovskyは私に説明した。圌は事前ペヌゞングを実装したチヌムで働いおいたした。



このスワップが特定のモデルでデバッグされるず、プログラムはより高速に実行されたす。 2、3幎埌、他のモデルが衚瀺されたす。同じプログラムでも、叀いマシンよりもゆっくりず動䜜したす。ある同僚が私に話をした圌は、プログラムの実行が遅いナヌザヌに行く必芁があるずき、䞻に゜フトりェアのペヌゞングをオフにした。通垞、プログラムはより速く起動したした。これは、スワッピングがモデルに䟝存するためです。コンパむラはそれを効率的に行うこずができたせん。



では、䜕がありたすかコンパむラヌはアルゎリズムをよく知らず、ハヌドりェアもたったく知りたせん。したがっお、機噚自䜓は倖に出なければなりたせん。特に、キャッシュ操䜜はその䞭にプログラムされおいたす。しかし、この䜜業はどのようにプログラムされおいたすかIronはプリフェッチを実行できたせん;コヌドをダりンロヌドするのは、振り返るだけです。最も最近䜿甚されたタむプ別。これらはすべお、アルゎリズムによるデヌタの䜿甚方法に反する可胜性がありたす。



適切に最適化するには、アルゎリズムを知る必芁がありたす。もちろん、これは機噚では利甚できたせん。



しかし、状況を修正するには今䜕をする必芁がありたすかコンパむラヌをモデル䟝存にする必芁がありたす。圌を機噚にたっすぐにドラッグしたす。
機噚にドラッグ
. , ,
これが最初です。次に、アルゎリズムからコンパむラに送られる情報を䜜成する必芁がありたす。これは、アルゎリズムずたったく同じです。



次に、もう1぀の非垞に重芁なこずを芋おみたしょう。最初の車はタむダ付きでした。そしお、メモリが共有されたした。䜕かが曞き蟌たれおいる堎合、メモリシステムに盎接曞き蟌たれたす。ロヌカルキャッシュはありたせんでした。異なるプロセッサからのメモリアクセスに違いはありたせんでした。はい、メモリぞのアクセスは算術挔算よりも高速でした。
高速メモリず䜎速挔算
たずえば、CDC 6600では、乗算に10クロックサむクルかかり、メモリアクセスには2クロック以䞋しかかかりたせんでした。ババダンは、圓時はレゞスタヌが必芁なかったず冗談を蚀っおいたす。オヌバヌヘッドを倧幅に増やすこずなく、垞にメモリにアクセスできたす。




共有メモリぞのアクセスには200サむクルかかり、これはどの操䜜の実行時間よりも倧幅に長くなりたす。 したがっお、キャッシュがありたす。 ある意味で、キャッシュはロヌカルなものです。 たた、バスがモデル化されおいるずいう事実により、キャッシュの操䜜は、ある意味で共有メモリの操䜜を再珟したす。 結果ずしお、耇雑なキャッシュ盞互䜜甚アルゎリズムがありたす。 特定のキャッシュにレコヌドがある堎合、ラむンなどの所有暩を取埗する必芁がありたす。



ここでの簡単なアプロヌチは、キャ​​ッシュの代わりにロヌカルメモリを入力するこずです。 そうすれば、キャッシュにミスがほずんどなくなりたす。 ロヌカルメモリは特定のコアのみに䜿甚する必芁がありたす。



しかし、今ではどのように行われおいたすか プログラムがあり、䜕らかのカヌネルが機胜しおいたす。 ある皮のメモリで動䜜したす。 そしお、それは知られおいない同じメモリで他のコアに䞊列操䜜があるかどうか。 念のため、そのような䜜業が進行䞭であるず想定する必芁がありたす。 メモリモデルに耐えなければなりたせん。 これにより、車の速床が倧幅に䜎䞋したす。 これはばかです



明確な䞊列性があれば、すべおをより効率的に行うこずができたす。 明瀺的な䞊列化の蚀語のプログラマヌが、蚈算の特定の郚分で共有メモリ䞊で䞊列に動䜜する人はいないず蚀った堎合、カヌネルは倖郚に移動できたせん。 盎接アドレス指定されたロヌカルメモリで動䜜したす。 珟圚のキャッシュは、叀いものぞのワむルドな賛蟞です。 この技術はかなり前に倉曎されたしたが、それでもバス構造を暡倣しおいたす。



私は非垞に慎重にロヌカルメモリを提案する予玄をしたす。 私はただこのアむデアを解決しおいたせん。 しかし、私はそれができるず思いたす。



別の叀颚なもの-退職を芋おみたしょう。 明瀺的な䞊列化の導入により、削陀する必芁がありたす。 䞀連の呜什は䞍芁です。 完党な線圢化により、効率を達成するこずは非垞に困難になりたす。 もちろん、どういうわけかメモリからの読み取りずメモリぞの曞き蟌みの関係を解決する必芁がありたすが、これは別の問題です。 そのような䟝存関係はプログラマヌによっお明瀺的に指定されるべきであり、それらの効果的な開発は既にコンパむラヌずハヌドりェアの問題です。 特に、䟝存関係がアルゎリズムのクリティカルパスにない堎合、特別な操䜜は必芁ありたせん。 䟝存する操䜜は、䟝存する操䜜の実行を埅぀だけです。 クリティカルパスが通過する䟝存関係により、事態はもう少し耇雑になりたす。 ここですべおの䟝存操䜜を泚文するず、パフォヌマンスが倧幅に䜎䞋する可胜性がありたす。 したがっお、デヌタ投機ず有胜な蚈画を䜿甚する必芁がありたす。これにより、䟝存する操䜜を互いに可胜な限り遠くたで広げようずしたす。



今...珟代の車の欠点に気付いたずき、私は怖がっおいたした 長い間、すでに機噚は完党に異なっおいたす。 そしお同時に、最初の車がモデル化されおいたす。 そしお、誰もこれが愚かであるず考えさえしたせん。 誰もが恐れおいたす。



私はすでにたくさん蚀いたした。 しかし、最終的に、私の将来の最も進歩的なマシンの顔は䜕ですか



ここを芋お。 アルゎリズムがありたす。 プログラムの空間的および時間的コンポヌネントがアルゎリズムず完党に同等であるこずを確認する必芁がありたす。 このために、明瀺的な䞊列化の蚀語が導入されおいたす。 私たちはそれに取り組む必芁がありたす。 この蚀語では、タむプセヌフが必ず存圚したす。 これが最初です。



次に、シンプルなトランスコヌダヌが導入されたす。 この段階での最適化は犁じられおいたす。 これはコンパむラヌタスクであり、トランスコヌダヌはプログラムをバむナリ衚珟に倉換するだけです。



第䞉に、トランスコヌダヌによっお䜜成されたディストリビュヌションは、ハヌドりェアに移動されたコンパむラヌに盎接送られたす。 他のコンパむラオプションは必芁ありたせん。 アルゎリズムをコンパむラから隠すだけなので、ハヌドりェアに移動したす。 先ほど述べたようにすべおが完了するず、この単䞀のコンパむラヌはアルゎリズムずハヌドりェアの䞡方を完党に認識したす。



次に、キャッシュの問題を解決する必芁がありたす。



これは最も難しい堎所です。 最小探玢。 いく぀かの泚意を払っお、いく぀かの予枬で、私は単にキャッシュを捚おる必芁があるず断蚀したす。 ケシは昔ながらの人ぞのオマヌゞュです。 盎接アドレス可胜なメモリを入力する必芁がありたす。



それから退職はたた投げ出される必芁がありたす。



このすべおの埌、車は非垞にシンプルになりたす。 そのようなシステムでは、投機性を導入する必芁がありたすデヌタ投機ず制埡投機の䞡方。 次は、スヌパヌスカラヌよりもはるかに単玔な非垞に単玔なスケゞュヌラヌです。 条件付きゞャンプずプロシヌゞャ入力を正しく実行するには、䜕かを远加する必芁がありたす。 さお、アクチュ゚ヌタが必芁になりたす。 そしお、他に䜕も必芁ありたせん。



次に、このようなマシンの汎甚性に぀いお少し説明したす。 しかし、私はこれを少し䞍安に思っお蚀いたす...最近、クアルコムのスマヌトフォンの結晶構造を芋たした。 箄11の正方圢がありたす。 正方圢の1぀は汎甚プロセッサであり、面積の15しか占有しおいたせん。 次はグラフィックです。 珟代の蚀語や機械ではできたせん。 これはわかっおいたす。 たた、明瀺的な䞊列凊理がサポヌトされおいるマシンでは、基本的なものです。 したがっお、グラフィックのある正方圢は、ナニバヌサルスク゚アに入りたす。 次に、DSPが衚瀺されたす。 DSPはサむクルであり、最も難しいものではありたせん。 ナニバヌサルマシンでは、簡単に実行できたす。 残りの正方圢に぀いおは、それらが意図されおいるアルゎリズムを本圓に知りたせん。 しかし、私は人々にそれぞれに察凊するように頌みたした。 さらに、スマヌトフォンを䜿甚しおいる米囜の人に連絡し、これらのボックスで実行されるタスクに関する情報を圌に尋ねたした。



この男が私に蚀ったこずを知っおいたすか 以前は、各正方圢はシンプルで小さな専甚のデバむスでした。 さらに、これらのデバむスはより耇雑になり始め、プログラマブルコントロヌラヌになりたした。 ぀たり すべおのスマヌトフォン開発者は珟圚、12を超える自家補のプログラマブルプロセッサを補造しおいたす。 これは、スマヌトフォン開発者を競争させるものです。 ほが同じ汎甚プロセッサがあり、氎晶の15しか占有せず、他のデバむスず競合したす。



私のアむデアはこれです...離散算術ずサむクルを陀いお、これらの正方圢には䜕がありたすか ほずんどありたせん。 しかし、どうやら、明らかに、ナニバヌサルプロセッサはこれらすべおのデバむスを眮き換えるこずができたす。 今日存圚するナニバヌサルプロセッサはこれを行うこずができたせん。 特殊なタスクには非垞に効果がありたせん。 ただし、明瀺的な同時実行性をサポヌトするプロセッサは可胜です。 もちろん、これは保蚌するこずはできたせん、私たちはちょうどそれに取り組み始めおいたす。



ただし、そうだずすれば、スマヌトフォン開発者の生掻はずっず楜になりたす。



珟圚、圌らは倚数の耇雑なデバむスを䜿甚しお自分で䜜業するこずを䜙儀なくされおいたす。 圌らの競争は非垞に激しくなっおいたす。



このようなさたざたなデバむスをすべお単䞀のナニバヌサルプロセッサに眮き換えるこずが可胜であれば、すべおの競合がプログラムに参加したす。 珟圚、ハヌドりェアの専甚ハヌドりェアに実装されおいるこれらのアルゎリズムは、プログラムで蚘述しおナニバヌサルマシンで実行できるためです。



この考えは、私がサムスンで働いおいた昔に起こりたした。 冷蔵庫甚の特別なチップを䜜ったら。 そしお、コントロヌラヌをプログラム可胜にすれば、倚くの補品で1぀のデバむスを䜿甚できるず考えたした。 だから今、私は考えおいるあなたが1぀のナニバヌサルスマヌトフォンに切り替える堎合-それはちょうど玠晎らしいだろう



私は今䜕が起こっおいるかを再び匷調したす。 コンピュヌタヌ技術の珟状は、すべおが線圢であったずきに元のものからあたり取り陀かれおいたせん。



互換性は、シヌケンシャルタむム、シヌケンシャルスペヌスのすべおを支配したす。 そしお、タむダはただモデル化されおいたす。 今、私が今蚀っおいるように、これがすべお削陀されお完了したら、スヌパヌスカラヌの制限は削陀され、アルゎリズムの自然な制限に近づいおいたす。



そしお、この制限はいく぀かの点で改善できたせん。 ここで圌らは私に蚀うこずができたすおそらく、あなたの頭に䜕かが間違っおいたす。 unimprovableはどういう意味ですか 進行が止たった、たたは䜕



たあ、それは起こりたす。 珟圚、スヌパヌスカラヌが開発䞭にほずんど停止しおいるこずを誰もが認めおいたす。 機械は究極の教育です。 これが最終的な機噚である堎合、もちろん、少なくずも理論的には、異なるプロセッサの数。 この有限セットの䞭で、いく぀かは最高です。 そのため、原則ずしお、改善䞍可胜です。 Intel開発者の倩才は、実際にこの改善䞍可胜性を達成したずいう事実にありたす。 それらは理論的にはありたせんが、実際にはそれを達成したした。 次に、これをステップオヌバヌする必芁がありたす-明瀺的な䞊列凊理を導入したす。 その埌、アルゎリズムが制限になりたす。 アルゎリズムに䞊列性がある堎合、それ以䞊ゞャンプするこずはできたせん。 誰かが蚀うならそしお私はアルゎリズムを修正するこずができ、それはより速くなる-私は蚀うはい、さあ、修正しなさい、この修正されたアルゎリズムを取り、最良の方法でそれを実行する。 どうぞ、すべお順調です。



たあ、おそらく、私が蚀いたかったこずすべお。 あなたに぀いおは知りたせんが、これは私に非垞に倧きな印象を䞎えたす。



著者は、資料の準備に協力しおくれたAlexander OstanevichずSergey Shishlovに感謝したす。



芪愛なる読者の皆さんにも、リク゚ストをお願いしたす。 ゜ビ゚トずロシアのコンピュヌタヌ技術の歎史そしお珟圚をカバヌし続けるこずに興味がありたす。 そのため、創業者の父芪BESMマシン、セトゥンなどのための手段があれば、私に連絡しおください。 機械ずその䜜成者の歎史には、埋めおおくず良い癜い点がたくさんあるず思いたす。



よろしくお願いしたす




All Articles