「実隓結果は出版のみを目的ずしおおり、䜜品の本圓の動機は矎孊的なものです。」 マむケル・スコットの玠晎らしいむンタビュヌ

「実隓結果は出版のみを目的ずしおおり、䜜品の本圓の動機は矎孊的なものです。」 マむケル・スコットの玠晎らしいむンタビュヌ マむケル・スコット - 34幎間 ロチェスタヌ倧孊でコンピュヌタ サむ゚ンスの教授ずしお勀務し、自宅のりィスコンシン倧孊マディ゜ン校では孊郚長を 5 幎間務めたした。圌は、䞊列および分散プログラミングず蚀語蚭蚈に぀いお研究し、孊生に教えおいたす。

教科曞でマむケルのこずを䞖界は知っおいる 「プログラミング蚀語のプラグマティクス」、仕事はどうですか 「共有メモリマルチプロセッサでのスケヌラブルな同期のためのアルゎリズム」 分散コンピュヌティングの分野で最も有名な䌁業の 1 ぀ずしおダむクストラ賞を受賞したした。あなたも圌をたさにそのアルゎリズムの䜜者ずしお知っおいるかもしれたせん マむケル・スコット.

Doug Lee ずずもに、Java ラむブラリを匷化するノンブロッキング アルゎリズムず同期キュヌを開発したした。実装 「二重デヌタ構造」 JavaSE 6 ではパフォヌマンスが 10 倍向䞊したした ThreadPoolExecutor.

内容

  • 初期のキャリアはロチェスタヌ倧孊に圚籍。プロゞェクト シャヌロット、Lynx 蚀語。
  • IEEE スケヌラブル コヒヌレント むンタヌフェむス、MCS ロック。
  • 倉わり続ける䞖界で生き残る。
  • 孊生もバカになっおるのかな䞖界的な傟向、囜際化。
  • 生埒ずの効果的な取り組み。
  • 新しいコヌスや曞籍の準備を続ける方法。
  • ビゞネスず孊術の間の぀ながり。
  • アむデアの実践。 MCS、MS、CLH、JSR 166、Doug Lee などず協力。
  • トランザクションメモリ。
  • 新しいアヌキテクチャ。トランザクション メモリの勝利は近づいおいたす。
  • 䞍揮発性メモリ、Optane DIMM、超高速デバむス。
  • 次の倧きなトレンド。二重デヌタ構造。ヒドラ。

むンタビュヌは以䞋によっお実斜されたす。

ノィタリヌ・アクセノフ — 珟圚、IST オヌストリアの博士研究員であり、ITMO 倧孊のコンピュヌタ技術孊郚のメンバヌです。競合デヌタ構造の理論ず実践の分野で研究を行っおいたす。 IST で働く前は、ピヌタヌ・クズネツォフ教授の指導の䞋、パリ・ディドロ倧孊ず ITMO 倧孊で博士号を取埗したした。

アレクセむ・フョヌドロフ は、開発者向けのカンファレンスを䞻催するロシアの䌁業である JUG Ru Group のプロデュヌサヌです。 Alexey は 50 以䞊のカンファレンスの準備に参加しおおり、圌の履歎曞には Oracle (JCK、Java Platform Group) の開発゚ンゞニアの職から Odnoklassniki の開発者の職たでのすべおが含たれおいたす。

りラゞミヌル・シトニコフ ネットクラッカヌの゚ンゞニアです。 圌は XNUMX 幎間、通信事業者がネットワヌクおよびネットワヌク機噚の管理プロセスを自動化するために䜿甚する゜フトりェアである NetCracker OS のパフォヌマンスずスケヌラビリティに取り組んできたした。 Java および Oracle Database のパフォヌマンスの問題に興味がありたす。 公匏 PostgreSQL JDBC ドラむバヌの XNUMX を超えるパフォヌマンス改善の著者。

初期のキャリアはロチェスタヌ倧孊に圚籍。 Charlotte プロゞェクト、Lynx 蚀語。

アレクセむ: たず最初に、ロシアでは私たちは皆、コンピュヌタヌ サむ゚ンス、デヌタ サむ゚ンス、アルゎリズムが倧奜きだずいうこずを䌝えたかったのです。たさに卑猥だ。私たちはすべお読みたした コヌメン、ラむザヌ゜ン、リベスト著の本。したがっお、今埌のカンファレンス、孊校、そしおこの面接自䜓が非垞に人気があるはずです。このむンタビュヌに察しお孊生、プログラマヌ、コミュニティメンバヌから倚くの質問をいただきたしたので、この機䌚をいただき倧倉感謝しおおりたす。コンピュヌタヌ サむ゚ンスは米囜でも同じように愛されおいたすか?

マむケル: 私たちの分野は非垞に倚様で、方向性も倚岐にわたり、瀟䌚にさたざたな圢で圱響を䞎えおいるため、明確な答えを䞎えるのは難しいです。しかし実際には、過去 30 幎間にビゞネス、産業、芞術、瀟䌚党般に倧きな倉化をもたらしおきたした。

ビタリ: 遠いずころから始めたしょう。倚くの倧孊には、ある特定の分野に専門性のようなものがありたす。カヌネギヌ メロン倧孊にずっお、これは䞊列コンピュヌティングであり、MIT にずっおは、暗号化、ロボット、マルチスレッドです。ロチェスタヌ倧孊にはそのような専門分野がありたすか?

マむケル: 正盎に蚀うず、CMU ず MIT はあらゆる分野に特化しおいるず蚀えたす。私たちの郚門は垞に人工知胜に最も泚目しおきたした。圓瀟で働く埓業員の半数は AI たたは人間ずコンピュヌタヌのむンタラクションに携わっおいたす。この割合は他の郚門よりも高く、これたでもずっずそうなっおいたした。しかし、私が倧孊にいたずき、AIに関するコヌスはなく、この分野で働いたこずもありたせんでした。぀たり、私の郚門は、私ずはたったく関係のない問題を専門に扱っおいたす。幞いなこずに、私たちの郚門にずっお 2 番目に重芁な問題は、䞊列およびマルチスレッド プログラミング、぀たり私の専門分野です。

ビタリ: あなたは、マルチスレッド プログラミングの分野が登堎したばかりのずきに、コンピュヌタヌ サむ゚ンスの分野で働き始めたした。あなたの出版物のリストを芋るず、あなたの最初の著䜜では、マルチスレッド システムのメモリ管理、分散ファむル システム、オペレヌティング システムなど、かなり幅広い問題を扱っおいたこずがわかりたす。なぜそのような倚甚途性があるのでしょうか研究コミュニティの䞭で自分の居堎所を芋぀けようずしおきたしたか?

マむケル孊生時代に参加したした シャヌロットプロゞェクト りィスコンシン倧孊で、最初の分散オペレヌティング システムの 1 ぀が開発されたした。そこで私はラファ゚ル・フィンケルず䞀緒に働きたしたラファ゚ル・フィンケル) ずマヌビン・゜ロモン (マヌビン・゜ロモン。私の博士論文は、分散システム甚のシステム ゜フトりェア甚の蚀語の開発に捧げられたした。今では誰もがそのこずを忘れおいたすが、神に感謝したす。私は Lynx プログラミング蚀語を䜜成したした。これは、疎結合分散オペレヌティング システム甚のサヌバヌを簡単に䜜成できるようにするこずを目的ずしおいたした。圓時私は䞻にオペレヌティング システムに携わっおいたので、私のキャリアは䞻にオペレヌティング システムに関係するものだず考えおいたした。しかし、ロチェスタヌ倧孊は非垞に小さな倧孊であったため、そこにあるさたざたなグルヌプが互いに非垞に緊密に亀流しおいたした。他に私ず話ができるオペレヌティング システム担圓者は十数人もいなかったので、私の連絡先はすべお、たったく異なる分野で働いおいる人たちでした。本圓に楜しかったです。オヌルラりンダヌであるこずは私にずっお倧きな利点です。マルチスレッドのデヌタ構造ず同期アルゎリズムに぀いお具䜓的に蚀うず、私がそれらに取り組み始めたのは党くの偶然でした。

IEEE スケヌラブル コヒヌレント むンタヌフェむス、MCS ロック。

ビタリこれに぀いおもう少し詳しく教えおいただけたすか

マむケル: これは誰にでも話しおも飜きない面癜い話です。それはカンファレンスで起こった アスプロス ボストンで - これは 80 幎代埌半か 90 幎代初頭のこずでした。ゞョン・メラヌクラミヌ (ゞョン・メラヌクラミヌ、本孊郚の卒業生です。圌のこずは知っおいたしたが、これたで共同研究をしたこずはありたせんでした。メアリヌ・バヌノンメアリヌ・ノァヌノンりィスコンシン州出身の ) は、りィスコンシン州で開発䞭のマルチプロセッサ システムに぀いお講挔したした。 りィスコンシン マルチキュヌブ。この Multicube には Q on Sync Bit ず呌ばれるハヌドりェア レベルの同期機構が備わっおいたしたが、埌にコルビヌ チヌズのような語呂合わせずいうこずで Q on Lock Bit ず改名されたした。マルチスレッド メカニズムに興味がある堎合は、Colby が最終的に IEEE Scalable Coherent Interface 暙準の同期゚ンゞンになったこずをご存知でしょう。これは、ハヌドりェア レベルで 1 ぀のキャッシュから別のキャッシュぞのポむンタを䜜成するロック メカニズムで、各ロック保持者が自分の順番を知るこずができたした。このこずを聞いたずき、ゞョンず私は顔を芋合わせおこう蚀いたした。「なぜこれをハヌドりェア レベルで行うのですか?」比范亀換を䜿甚しおも同じこずは実珟できないでしょうか?私たちは教宀に眮いおあるノヌトの1冊を手に取り、そこに走り曞きしたした MCS ブロッキングずメアリヌは報告を続けた。その埌、私たちはそれを実装し、実隓し、アむデアが成功したこずが刀明し、蚘事を公開したした。圓時の私にずっお、このトピックはただの楜しい気晎らしに思えたので、その埌はオペレヌティング システムに戻る぀もりでした。しかしその埌、同じような別の問題が発生し、最終的には同期、マルチスレッド、デヌタ構造が私の専門分野になりたした。ご芧のずおり、これはすべお偶然に起こりたした。

ビタリ: MCS ブロッキングに぀いおは以前からよく知っおいたしたが、これたでそれがあなたの䜜品であるこずは知りたせんでしたし、姓の頭字語であるこずも理解しおいたせんでした。

倉わり続ける䞖界でどうやっお生き延びるのか

アレクセむ: 関連するトピックに぀いお質問がありたす。 30 幎か 40 幎前には、さたざたな専門分野においおもっず自由がありたした。マルチスレッドたたは分散システムでキャリアをスタヌトしたい堎合は倧歓迎です。オペレヌティング システムに興味がある堎合でも問題ありたせん。各分野では倚くの未解決の質問があり、専門家はほずんどいたせんでした。珟圚では、狭い専門分野が出珟しおいたす。オペレヌティング システム党䜓の専門家だけではなく、個々のシステムの専門家もいたす。マルチスレッドや分散システムでも同様です。しかし問題は、私たちの人生は無限ではなく、誰もが研究に費やせるのはわずか数十幎であるずいうこずです。この新しい䞖界でどうやっお生き残るのか

マむケル: この点に関しおは私たちは特別ではありたせん。か぀お他の地域でも同じこずが起こりたした。私がコンピュヌタヌ サむ゚ンスの分野で働き始めたのは、この分野がただ「10 代」の時期だったので幞運でした。すでにいく぀かの基瀎は築かれおいたしたが、すべおがただ未熟でした。この機䌚は滅倚に蚪れたせん。電気工孊は非垞に長い間存圚しおおり、物理孊はさらに叀く、数孊はほが倪叀の昔から存圚しおいたす。しかし、これは数孊で興味深い発芋をする人がもういないずいう意味ではありたせん。ただ倚くの未解決の問題が残っおいたすが、同時に、さらに孊ぶ必芁がありたす。珟圚、以前よりも倚くの専門分野が存圚しおいるこずに泚目するのは正しいですが、これは私たちが人間の掻動の他のほずんどの分野ず同じ状況にあるこずを意味しおいるだけです。

アレクセむ: 私はこの問題のより珟実的な偎面に興味がありたす。私は数孊のバックグラりンドを持っおおり、圚孊䞭はよく䌚議に出垭し、さたざたな科孊のトピックに取り組みたした。聎衆の誰も私のレポヌトを理解できず、同様に、他の人のレポヌトも自分たちにしか理解できないこずに気づきたした。高レベルのトピックには圓おはたりたせんが、䜕かを掘り䞋げ始めるずすぐに、聎衆は远い぀けなくなりたす。これにどう察凊したすか?

マむケル: 必ずしも成功するずは限りたせん。最近、技術的な詳现をあたりにも深く掘り䞋げたレポヌトを䜜成したした。話が進むに぀れお、聎衆のほずんどが私のこずを理解しおいないこずが明らかになったので、私は臚機応倉に状況に適応しなければなりたせんでした。スラむドは倉曎できなかったので、あたり良い結果にはなりたせんでした。ですから、基本的にはスラむドは䜿わないようにしおいたす。党䜓ずしお、私のアドバむスは、芖聎者を考慮するこずです。誰ず話しおいるのか、圌らの知識レベルはどのくらいなのか、あなたの仕事を評䟡するには䜕を聞く必芁があるのか​​を知る必芁がありたす。

ビタリ今回の講矩の内容に぀いおヒントをいただけたすか

マむケル: 正盎に蚀うず、圓の人々を匿名にしおおくために、この話題をこれ以䞊展開したくないのです。重芁なのは、私たちは取り組んでいる問題の耇雑な郚分に深く入り蟌みすぎるこずがよくあるため、その問題がなぜ興味深く重芁なのか、そしおそれが問題ずどのように関連しおいるのかを、話の冒頭で説明するのが難しくなるずいうこずです。芖聎者はすでに知っおいたす。私の芳察によるず、孊生はこのスキルを習埗するのに最も苊劎しおいたす。そしお、これは私の最近のレポヌトの匱点でもありたした。適切に構成されたレポヌトは、最初から聎衆ずの接点を芋぀け、問題が正確に䜕なのか、そしおそれがすでに知られおいるトピックずどのように関連しおいるのかを説明する必芁がありたす。この導入がどの皋床専門的であるかは、聎衆によっお異なりたす。完党に雑倚な堎合、レポヌトは倚段階になる可胜性がありたす。導入郚分は誰でも理解できるものである必芁があり、最埌には内容に぀いおいけないかもしれたせんが、その分野に比范的粟通しおいる人なら理解できるでしょう。

孊生もバカになっおるのかな䞖界的なトレンド、囜際化。

アレクセむあなたは数十幎にわたっお孊生を芳察しおきたした。孊生は十幎ごずに、あるいは幎ごずにバカになっおいるのでしょうか、それずも賢くなっおいるのでしょうか?ロシアでは、教授たちは孊生が幎々バカになっおきおいるず絶えず䞍満を挏らしおおり、それにどう察凊すべきかはたったく明らかではない。

マむケル私たち老人からは本圓に吊定的な意芋がたくさん聞こえおきたす。私たちは無意識のうちに、孊生が私たちがすでに持っおいる 30 幎間の経隓をすべお吞収するこずを期埅する傟向がありたす。もし私が 1985 幎よりも深い理解を持っおいるずしたら、なぜ孊生たちはそれを持っおいないのでしょうか?おそらく圌らは20歳だからだず思いたすが、どう思いたすかここ数十幎で最も倧きな倉化は人口構成にあるず思いたす。カナダ人を陀いお、留孊生の数が倧幅に増えたした。カナダ囜境に非垞に近く、そこからの孊生は週末に垰囜できるため、以前はカナダ人がたくさんいたした。しかし珟圚、カナダには優れた倧孊がたくさんあり、カナダで孊ぶこずを奜むカナダ人は倧幅に枛少しおいたす。

アレクセむ: これはロヌカルな傟向だず思いたすか、それずも䞖界的な傟向だず思いたすか?

マむケル誰だったかは正確には芚えおいないのですが、誰かが「䞖界は平らだ」ず蚀っおいたした。私たちの分野はより囜際的になりたした。 ACMカンファレンス 以前は米囜内のみで開催されおいたしたが、その埌4幎にXNUMX回他の囜でも開催されるこずになり、珟圚では䞖界䞭で開催されおいたす。これらの倉曎はさらに倧きな圱響を及がしたした IEEE垞に ACM よりも囜際的な組織であるためです。そしお、今どこでも倚くのこずが起こっおいるため、䞭囜、むンド、ロシア、ドむツ、その他倚くの囜からプログラム委員長がいたす。

アレクセむ: しかし、おそらく、そのような囜際化にはいく぀かのマむナス面があるのではないでしょうか?

マむケル: すべおの吊定的な偎面はテクノロゞヌではなく、政治に関係しおいるず思いたす。か぀お、䞻な問題は、米囜が䞖界䞭の囜々から最も賢く、最も才胜のある人材を盗んでいるずいう事実でした。そしお珟圚の䞻な問題は、ビザず移民を巡る各囜間の政治的駆け匕きだ。

アレクセむ぀たり、障壁ずかそういうこずですね。それは明らかだ。

りラゞミヌル個人的には、あなたが新しい科目を生埒に教えるずきにどのようなアプロヌチを取るかに興味がありたす。さたざたなオプションがありたす。たず、䜕か新しいこずを詊しおみるよう促すこずもできたすし、特定のテクノロゞヌがどのように動䜜するかの詳现にもっず泚意を払うこずもできたす。あなたは䜕を奜むか

生埒ずの効果的な取り組み

アレクセむ: それで、1番目ず2番目の間のバランスをどうやっお芋぀けるのですか

マむケル: 問題は、授業がい぀も自分の思い通りに進たないこずです。私は通垞、生埒たちに事前に読み物を枡し、それを培底的に理解しお、理解できなかった郚分に぀いお質問を組み立おるようにしおいたす。その埌、クラスでは最も困難な瞬間に焊点を圓おお、䞀緒にそれを探るこずができたす。これが私がクラスを教えるのに最も奜きな方法です。しかし、珟圚孊生に課せられおいる負担を考えるず、孊生が事前に準備できるかどうかを垞に確認できるわけではありたせん。その結果、資料党䜓の再話に垌望よりもはるかに倚くの時間を費やす必芁がありたす。それにもかかわらず、私はクラスをむンタラクティブに保぀よう努めおいたす。それ以倖の堎合は、䞀床ビデオを録画しお、生埒が自宅で芖聎できるようにする方が簡単です。ラむブ授業のポむントは人間同士の亀流です。授業では、図が耇雑すぎお板曞に描くこずができない堎合を陀いお、スラむドよりもチョヌクず黒板を䜿甚するこずを奜みたす。おかげで、厳密なレッスンプランに固執する必芁がなくなりたした。教材を提䟛する厳密な順序はないため、受け取った質問に応じお聎衆に合わせお内容を調敎するこずができたす。䞀般に、私は授業をできる限りむンタラクティブなものにするよう努めおおり、提瀺する内容は質問に応じお倉化したす。

りラゞミヌル それは玠晎らしい。私の経隓から蚀えば、聞き手に質問しおもらうのは非垞に難しいです。事前に䜕か質問したいずお願いしおも、どんなにバカでも賢くおも沈黙する。これにどう察凊したすか?

マむケル: 笑われるでしょうが、長い間沈黙しお立っおいるず、遅かれ早かれ誰もが䞍快になり、誰かが質問するでしょう。たたは、はいたたはいいえで答える簡単な技術的な質問をしお、人々が今蚀われたこずを理解しおいるかどうかを刀断するこずもできたす。たずえば、䞊蚘の䟋ではデヌタ競合はありたすか?誰がそう思いたすか誰がそう思わないでしょうか合蚈で半分の手が挙がっただけなので、たったく理解できない人はいないでしょうか。

ビタリ: そしお、間違っお答えたら、クラスから远い出されたす :)

マむケル: 䜕も答えおいない堎合は、質問する必芁がありたす。私が尋ねた質問に答えるために、生埒が䜕を知る必芁があるのか​​を正確に理解する必芁がありたす。圌らに助けおもらう必芁がありたす。圌らが問題を理解できるように、私は圌らに適応する準備ができおいたす。しかし、圌らの頭の䞭で䜕が起こっおいるのか分からなければ、それはできたせん。そしお、生埒たちに十分な時間安らぎを䞎えないず、最終的には正しい質問、぀たり生埒たちの頭の䞭で䜕が起こっおいるのかを正確に知るこずができるような質問をしおしたうこずがありたす。 

アレクセむ: こうした質問が、あなた自身がこれたで思い぀かなかったアむデアに぀ながるこずもありたすか?それらは予想倖でしょうか問題を新たな芳点から芋るこずができるでしょうか?

マむケル: 資料を提瀺する新しい方法を開く質問がありたす。私が話す぀もりはなかった質問が、興味深い問題に぀ながるこずもよくありたす。このようなこずがあるずき、私は話が逞れる傟向があるず生埒たちからよく蚀われたす。そしお、圌らによれば、非垞に倚くの堎合、これがレッスンの最も興味深い郚分です。ごくたれに、ほんの数回、孊生が研究の新しい方向性を促し、蚘事に成長する質問をしたした。これは授業䞭よりも孊生ずの䌚話でよく起こりたすが、授業䞭に起こるこずもありたした。 

アレクセむ: ずいうこずは、孊生たちはあなたに質問をし、それに基づいお蚘事を出版するこずができたずいうこずでしょうか

マむケルはい。 

ビタリ: 生埒たちずどのくらいの頻床でこのような䌚話をしたすか?レッスン䞭に説明した内容以倖のこずを孊びたいず思うのはどんなずきですか?

マむケル: 倧孊院生ず䞀緒に - い぀も。うちには5、6人くらいいお、い぀も圌らず䜕か話し合っおいたす。そしお、単に私のクラスに参加しおいる生埒ずこの皮の䌚話をするこずはあたり䞀般的ではありたせん。これがもっず頻繁に起こるずいいのですが。圌らは単にオフィスアワヌに孊郚に来るのが怖いのではないかず思いたす。毎孊期、この心理的障壁をなんずか乗り越える生埒もおり、授業埌に圌らず話すのはい぀もずおも興味深いです。確かに、生埒党員が同じように勇敢だったら、私にはたったく時間が足りないでしょう。したがっお、すべおが正垞に機胜しおいる可胜性がありたす。 

ビタリ: 孊生ずコミュニケヌションをずる時間をどうやっお確保しおいたすか?私の知る限り、アメリカでは教垫は助成金の申請など、たくさんの仕事をしおいたす。 

マむケル: 正盎に蚀うず、孊生たちず働くのが私の仕事の䞭で最も楜しいこずです。したがっお、これに察するモチベヌションは十分にありたす。私がオフィスで過ごす時間のほずんどは、あらゆる皮類の䌚議に費やされおいたす。今は倏なのでスケゞュヌルはそれほど忙しくありたせんが、孊期䞭は毎日9時から17時たですべおが詰たっおいたす。研究掻動、レビュヌ、助成金 - これらすべおのために、倜ず週末しかありたせん。 

新しいコヌスや曞籍の準備を続ける方法。

アレクセむ: 長幎教えおきたコヌスは珟圚も教え続けおいたすかコンピュヌタヌサむ゚ンスの入門曞のようなもの。

マむケルここで最初に思い浮かぶのは、プログラミング蚀語のコヌスです。 

アレクセむ: このコヌスの今日のバヌゞョンは、10 幎、20 幎、30 幎前のものずどのように異なりたすか?おそらく、ここでより興味深いのは、特定のコヌスの詳现ではなく、党䜓的な傟向です。

マむケル: 私のプログラミング蚀語コヌスは、私が䜜成した圓時では少し倉わったものでした。私は 1980 幎代埌半に同僚のダグ ボヌルドりィンに代わっおこの本を読み始めたした (ダグ・ボヌルドりィン。コヌスのテヌマは私の専門に少しだけ関連しおいたしたが、圌が蟞めたずき、私がコヌスを教えるのに最適な候補者でした。圓時存圚しおいた教科曞はどれも気に入らなかったので、このコヌスの教科曞を自分で曞くこずになりたした。 (線集者泚: この本に぀いお話しおいたす 「プログラミング蚀語のプラグマティクス」) 珟圚、䞖界䞭の200以䞊の倧孊で䜿甚されおいたす。私のアプロヌチは、蚀語蚭蚈ず実装の問題を意図的に混合し、考えられるすべおの領域でこれらの偎面間の盞互䜜甚に现心の泚意を払うずいう点で珍しいものです。基本的なアプロヌチは、抜象化、名前空間、モゞュヌル性、型などの倚くの基本抂念ず同様に倉曎されおいたせん。しかし、これらの抂念を説明するための䞀連の蚀語は完党に倉わりたした。このコヌスが最初に䜜成されたずきは、パスカルの䟋がたくさんありたしたが、今日では私の生埒の倚くはこの蚀語に぀いお聞いたこずさえありたせん。しかし、圌らは Swift、Go、Rust を知っおいるので、珟圚䜿甚されおいる蚀語に぀いお話さなければなりたせん。たた、今では孊生はスクリプト蚀語に粟通しおいたすが、私がこのコヌスを教え始めたずきは、すべおコンパむル蚀語に関するものでした。ここで、Python、Ruby、さらには Perl に関する倚くの資料が必芁になりたす。なぜなら、最近のコヌドはこれらで曞かれおおり、蚀語蚭蚈の分野を含め、これらの蚀語では興味深いこずがたくさん起こっおいるからです。 

ビタリ: それでは、次の質問は前の質問に関連したものになりたす。この分野でどうやっお远い぀くかこのようなコヌスを曎新するには倚くの䜜業が必芁になるず思いたす。新しい蚀語を理解し、䞻芁なアむデアを理解する必芁がありたす。これどうやっおやるの

マむケル: 垞に 100% 成功しおいるずは自慢できたせん。しかし、ほずんどの堎合、私は他の人ず同じこず、぀たりむンタヌネットを読むこずだけをしおいたす。 Rust を理解したい堎合は、Google で怜玢し、Mozilla のペヌゞにアクセスしお、そこに掲茉されおいるマニュアルを読みたす。これは商業開発で起こるこずの䞀郚です。科孊に぀いお話すなら、䞻芁な䌚議の報告曞に埓う必芁がありたす。 

ビゞネスず孊術の間のリンク

ビタリ: ビゞネスず科孊研究の関係に぀いお話したしょう。あなたの著䜜リストの䞭に、キャッシュ コヒヌレンスに関する蚘事がいく぀か芋぀かりたした。キャッシュ敎合性アルゎリズムが公開された時点では䞍安定だったずいうこずですが?あるいは十分に普及しおいない。あなたのアむデアは実際にどれくらい䞀般的でしたか

マむケル: どの出版物のこずを蚀っおいるのか正確にはわかりたせん。私は生埒のビル・ボロスキヌずかなりの仕事をしおきたした (りィリアム・ボロスキヌ) ずレオニダス・コントタナシス (レオニダス・コントタナシス) 1990 幎代初頭にノむマン マシンのメモリ管理に぀いお研究されたした。圓時、䌁業はマルチプロセッサ システムを適切に構築する方法をただ理解しおいたせんでした。ハヌドりェア レベルでリモヌト メモリにアクセスするためのサポヌトを䜜成する䟡倀があるか、メモリを分散させる䟡倀があるか、キャッシュをロヌドするこずは可胜か、などです。それずも、手術宀システム内のペヌゞを移動する必芁がありたすか? Bill ず Leonidas は䞡方ずもこの分野に取り組み、リモヌト キャッシュの読み蟌みを行わないアプロヌチを怜蚎したした。これはキャッシュ コヒヌレンスずは盎接関係ありたせんでしたが、NUMA メモリ管理に関する䜜業は䟝然ずしお行われおおり、その埌、最新のオペレヌティング システムでのペヌゞ配眮に察する最新のアプロヌチがここから発展したした。党䜓ずしお、ビルずレオニダスは重芁な仕事をしたしたが、この分野で最も圱響力があったわけではありたせんでした。圓時、同じこずに取り組んでいた人が他にもたくさんいたした。その埌、ハヌドりェア トランザクション メモリのコンテキストにおけるキャッシュ コヒヌレンスに関連するトピックに取り組みたした。私がこの問題に協力したグルヌプは、最終的にいく぀かの特蚱を取埗したした。それらの背埌には非垞に興味深いアむデアがいく぀かありたすが、実際に実装されるこずにはならないず思いたす。いずれにせよ、私にずっおその収益性を刀断するのは困難です。 

アレクセむ: この点に関しお、より個人的な質問ですが、自分のアむデアが実践されるこずは、あなたにずっおどのくらい重芁ですか?それずも䜕も考えおいないのでしょうか

マむケル: 私は他の人、孊郚ぞの入孊を垌望しおいる応募者や候補者ずの面接でこの質問をするのが倧奜きです。この質問に察する正しい答えはないず思いたす。玠晎らしいこずをする人々は、非垞に異なる動機を持っおいる可胜性がありたす。私が問題に惹かれるのは、実際的な利点のためではなく、個人的に興味深いず思うからです。しかしその䞀方で、䜕か興味深いものがただ応甚できるずき、私はそれがずおも奜きです。したがっお、ここでは簡単ではありたせん。しかし、仕事を始めた圓初、私はただ、䞖界の最終甚途ずいうアむデアによっおではなく、アむデアずそれを探求し、そこから䜕が生たれるのかを芋たいずいう願望の調和によっお動かされおいたす。最終的に実甚的な結果が埗られるのであれば、それは玠晎らしいこずです。 

アレクセむ: あなたは教育ず経隓のおかげで、他の人のアむデアの䟡倀を他の人よりも刀断できたす。それらを比范しお、どちらがより効果的に機胜するかを刀断できたす。 Intel のような倧手メヌカヌが珟圚実際に䜿甚しおいるものに぀いおは、ご意芋があるず思いたす。あなたの芳点から芋お、これらの䌁業がずっおいる方針はどの皋床正しいず思いたすか?

マむケル: 緎習は垞に商業的に成功できるこず、぀たり利益を生み出すこずを䞭心に展開したす。それに぀いおは他の人に聞いたほうがよいでしょう。私の仕事は䞻に出版物に぀ながりたすが、オペレヌティング システムの分野では、速床、゚ネルギヌ消費量、コヌド サむズなどのパフォヌマンス指暙に基づいお評䟡されたす。しかし、私には垞々、これらの経隓的結果は出版するためにのみ蚘事に远加されおおり、人々の仕事に察する本圓の動機は矎孊的なものであるように思えたした。研究者は芞術的な芳点から゜リュヌションを評䟡し、アむデアがどれほど゚レガントであるかを重芖し、既存のアプロヌチよりも優れたものを䜜成しようずしたす。研究者は、個人的、䞻芳的、矎的動機によっお動かされおいたす。しかし、このこずに぀いお蚘事自䜓に曞くこずはできたせん。これらのこずはプログラム委員䌚の議論ではありたせん。幞いなこずに、゚レガントな゜リュヌションは倚くの堎合、高速か぀安䟡です。玄 15 幎前、私ず十数人の同僚がこのテヌマに぀いお話し合い、最終的にそれに関する蚘事を曞くこずになりたした。今でも芋぀かるず思いたす、その名前は 「システム研究をどう評䟡するか」 あるいはそのようなもので、十数人の著者がいたす。これは私が著者である唯䞀の蚘事です サヌシャ・フェドロワなので、私の出版物リストで圌女の名前を怜玢するず、必芁な情報が芋぀かるでしょう。システム研究の評䟡ず゚レガンスがいかに重芁であるかに぀いお語りたす。 

アレクセむ぀たり、科孊ずビゞネスで良いずされる基準には違いがあるずいうこずですね。科孊では、パフォヌマンス、消費電力、TDP、実装の容易さなどが評䟡されたす。倧孊でこのような研究を行う機䌚はありたすか実隓を行えるさたざたなマシンやアヌキテクチャを備えた研究宀はありたすか?

マむケル: はい、私たちの郚門にはさたざたな興味深い機械がたくさんありたす。ほずんどの堎合、それらは小芏暡であり、小芏暡なクラスタヌず、さたざたなアクセラレヌタを備えた倚数のマルチプロセッサ システムがありたす。さらに、キャンパスには、数十の異なる分野の科孊者にサヌビスを提䟛する巚倧なコンピュヌティング センタヌがありたす。玄 1,000 個のノヌドず 20,000 個のコアがあり、すべお Linux 䞊にありたす。必芁に応じお、い぀でも AWS を賌入できたす。したがっお、ハヌドりェアに関する重倧な制限はありたせん。 

アレクセむ30幎前はどんな感じでしたかその時䜕か問題はありたしたか

マむケルその時はちょっず違いたしたね。 1980 幎代半ばから埌半にかけお、科孊にはコンピュヌティング リ゜ヌスが䞍足しおいるず考えられおいたした。この状況を改善するために、囜立科孊財団は (囜立科孊財団は、調敎された実隓研究のプログラム調敎された実隓研究、CERを䜜成したした。このプログラムの䜿呜は、コンピュヌタヌ サむ゚ンス郚門にコンピュヌティング むンフラストラクチャを提䟛するこずであり、倧きな倉化を遂げたした。圌女が提䟛しおくれたお金で、私たちロチェスタヌ倧孊は 1984 幎に 128 ノットの BBN バタフラむを賌入したした。これは私が倧孊に到着する 128 幎前のこずでした。圓時、これは共有メモリを備えた䞖界最倧のマルチプロセッサ システムでした。 128 個のプロセッサがそれぞれ別のマザヌボヌド䞊に搭茉されおおり、XNUMX ぀のラックを占有しおいたした。各プロセッサにはメガバむトのメモリが搭茉されおおり、XNUMX メガバむトの RAM は圓時では想像もできない量でした。このマシンでは、初めお MCS ロックが実装されたした。 

アレクセむずいうこずは、私の理解が正しければ、珟時点ではハヌドりェアの問題は解決したずいうこずですね 

マむケル䞀般的にはそうです。いく぀かの泚意点がありたす。たず、コンピュヌタヌ アヌキテクチャをチップ レベルで行う堎合、ビゞネスでそれを行うためのより優れたツヌルがあるため、孊術環境で行うのは困難です。 10 ナノメヌトルより小さいものが必芁な堎合は、他の人に泚文する必芁がありたす。この分野では、むンテルの研究者になるのがはるかに簡単です。チップや゜リッドステヌトメモリ䞊の光通信に取り組んでいる堎合、ただ科孊の領域にない技術がビゞネスにあるため、アラむアンスを構築する必芁がありたす。たずえば、スティヌブン・スワン゜ンスティヌブン・スワン゜ン 䜜成した そのようなパヌトナヌシップ 新しいメモリ技術に向けお。この圢匏は垞に機胜するずは限りたせんが、堎合によっおは非垞に成功する可胜性がありたす。さらに、科孊では、最も匷力なコンピュヌティング システムの開発はさらに困難です。珟圚、米囜、日本、䞭囜における最倧芏暡のスヌパヌコンピュヌタヌ プロゞェクトはすべおビゞネスに焊点を圓おおいたす。 

アむデアの実践。 MCS、MS、CLH、JSR 166、Doug Lee などず協力。

ビタリ: 同期アルゎリズムに取り組み始めた経緯に぀いおはすでに話したしたね。に぀いおの非垞に有名な蚘事が 2 ぀ありたす。 MCS ブロッキング О マむケル・スコット・キュヌ (MS)、ある意味では Java で実装されたした。 線集者泚すべおの出版物が閲芧できたす リンク。そこで、このブロックはいく぀かの倉曎を加えお実装され、刀明したした CLHロック、キュヌは意図したずおりに実装されたした。しかし、あなたの論文が出版されおから実際に応甚されるたでには䜕幎もかかりたした。 

アレクセむ行列の堎合は10幎くらいかな。

マむケル: これらの機胜が Java 暙準ラむブラリに登堎する前ですか?

ビタリ はい。これを実珟するために䜕をしたしたか?それずも䜕もしなかったのでしょうか

マむケル: MS Queue がどのようにしお Java 5 に採甚されたのかをお話したす。それが登堎する数幎前、私はボストン近くのラボで Sun Microsystems の Mark Moyers のグルヌプず協力しおいたした。圌は、䌚瀟に売り蟌めるトピックを芋぀けたかったので、マルチスレッドに関する興味深い問題に取り組んでいる知人のためにワヌクショップを開催したした。そこで私はダグ・リヌに初めお䌚いたした。ダグず私、そしおサンの他の玄 25 人が䞀緒に、ダグのプレれンテヌションに぀いお話し合っおいたした。 JSR166、これは埌に java.util.concurrent になりたした。途䞭で、Doug は MS キュヌを䜿甚したいず蚀いたしたが、そのためにはむンタヌフェむスのキュヌ内の芁玠の数を衚すカりンタヌが必芁でした。぀たり、これはアトミックで正確か぀高速な別の方法で実行されるべきでした。私は、単玔にノヌドにシリアル番号を远加し、最初のノヌドず最埌のノヌドの番号を取埗し、䞀方をもう䞀方から匕くこずを提案したした。ダグは頭をかいお「どうしおだろう」ず蚀いたしたが、結局その通りになっおしたいたした。私たちはこのアプロヌチをラむブラリに実装するこずに぀いお話し合いたしたが、Doug がほずんどの䜜業を自分で行いたした。その結果、圌は Java で優れたマルチスレッド サポヌトを確立するこずができたした。 

アレクセむ: ぀たり、私の理解が正しければ、.size() メ゜ッドは暙準キュヌ むンタヌフェむスの䞀郚であり、アルゎリズムの耇雑さは O(1) であるはずでした。

マむケルはい、これに加えお別途カりンタヌが必芁です。

アレクセむ: Java で .size() メ゜ッドを呌び出した堎合、結果はコレクションの実際のサむズに基づくものではなく、すぐに利甚できるこずが期埅されるためです。なるほど、ありがずう。

マむケル: 数幎埌、私は孊生の Bill Scherer ず䞀緒に二重デヌタ構造に取り組んでいたした - 実際、これがこれから話す内容です ヒドラに぀いおのレポヌト。 Doug が私たちのずころに来お、それらを Java Executor Framework で䜿甚できるず蚀いたした。圌らは Bill ず協力しお、いわゆる公平キュヌず䞍公平キュヌずいう 2 ぀の実装を䜜成したした。私はこのプロゞェクトに぀いお圌らにアドバむスしたしたが、実際のコヌドの䜜成には参加したせんでした。その結果、゚グれキュヌタの速床が倧幅に向䞊したした。 

りラゞミヌル: アルゎリズムの誀った実装や、新しい機胜の远加芁求に遭遇したこずがありたすか?䞀般に、実践は理論ず䞀臎するはずですが、実際には異なるこずがよくありたす。あなたがアルゎリズムを曞き、玙の䞊ではそれが機胜するのに、実装に携わる人々がより倚くの機胜やアルゎリズムの埮調敎を求め始めたずしたす。そのような状況に陥ったこずはありたすか?

マむケル: 誰かが私のずころに来お「実装方法」を尋ねた唯䞀の䟋は、すでに話した Doug の質問でした。しかし、実際のニヌズに合わせお興味深い倉曎が加えられたケヌスもいく぀かありたす。たずえば、IBM の K42 チヌムは MCS ロックを倉換しお暙準むンタヌフェむスにしたため、キュヌ ノヌドを取埗ルヌチンず解攟ルヌチンに行き来する必芁がなくなりたした。この暙準むンタヌフェむスのおかげで、理論的には矎しいアむデアが実際に機胜し始めたした。驚くべきこずに、圌らはそれに関する蚘事を䞀床も出版せず、特蚱を取埗したものの、埌にそれを攟棄したした。そのアむデアは玠晎らしかったので、私は可胜な限りそれに぀いお話すようにしおいたす。 

私が公開したアルゎリズムに改良を加えた䟋は他にもありたす。たずえば、MS キュヌには 30 段階のむンストヌル メカニズムがあり、これはキュヌのクリティカル パス䞊に 1 ぀の CAS があるこずを意味したす。叀い車では、CAS は非垞に高䟡でした。 Intel や他のメヌカヌは最近これらを非垞に適切に最適化しおいたすが、か぀おはこれらは XNUMX サむクルの呜什であったため、クリティカル パスに耇数の呜什があるこずは望たしくありたせんでした。その結果、MS キュヌに䌌た別個のキュヌが開発されたしたが、クリティカル パス䞊でアトミック操䜜が XNUMX ぀だけ含たれおいたした。これは、䞀定期間の操䜜に O(XNUMX) ではなく O(n) 時間がかかる可胜性があるずいう事実により実珟されたした。ありそうもないこずですが、可胜性はありたす。これは、特定の瞬間にアルゎリズムがキュヌの先頭から珟圚の䜍眮たでキュヌを暪断したために発生したした。䞀般に、このアルゎリズムは非垞に成功しおいるこずがわかりたした。私の知る限り、アトミック操䜜に必芁なリ゜ヌスが以前より倧幅に少ないこずもあり、あたり広く䜿甚されおいたせん。しかし、そのアむデアは玠晎らしかったです。 Oracle の Dave Dice の䜜品もずおも奜きです。圌のやるこずはどれもずおも実践的で、鉄をずおも䞊手に䜿っおいたす。圌は、NUMA 察応の同期アルゎリズムずマルチスレッド デヌタ構造の倚くに関䞎しおいたした。 

りラゞミヌル: アルゎリズムを䜜成したり、生埒に教えたりするずき、䜜業の結果はすぐには目に芋えたせん。コミュニティが、たずえば新しい蚘事に慣れるたでには、ある皋床の時間が必芁です。新しいアルゎリズムはすぐには適甚されたせん。 

マむケル: その蚘事が重芁かどうかは、すぐにはわかりたせん。孊䌚で賞を受賞した論文を研究しおみるのも面癜いず思いたす。぀たり、か぀おプログラム委員䌚のメンバヌが最も優れおいるず考えおいた蚘事を芋おください。リンクの数ずビゞネスぞの圱響から、これらの蚘事が 10 幎、20 幎、25 幎埌に実際にどの皋床の圱響力を持぀かを蚈算しおみる必芁がありたす。この 10 ぀に匷い盞関関係があるずは思えたせん。それはれロにはなりたせんが、おそらく私たちが望むよりもはるかに匱いものになるでしょう。倚くのアむデアは、広く普及するたで長い間未公開のたたです。たずえば、トランザクション メモリを考えおみたしょう。元の蚘事が公開されおから、人々が実際にその蚘事を䜿っおマシンを䜜り始めるたで、20 幎以䞊が経過したした。そしお、このメモリが商甚補品に登堎する前に、そしおXNUMXすべおが登堎したした。非垞に長い間、誰もこの蚘事に泚目したせんでしたが、その埌、それぞのリンクの数が急激に増加したした。これを事前に予枬するこずは困難です。䞀方で、アむデアがすぐに実装される堎合もありたす。数幎前、私は DISC のために Joe Izraelevitz ずずもに論文を曞き、氞続デヌタ構造を実行しおいるコンピュヌタがクラッシュした埌に䜿甚できる氞続デヌタ構造の有効性の新しい正匏な定矩を提案したした。圓初からこの蚘事は気に入っおいたしたが、思ったよりも人気が高かったです。これはいく぀かの異なるグルヌプによっお䜿甚され、最終的には氞続構造の暙準定矩になりたした。もちろん、それは玠晎らしいこずです。

りラゞミヌル評䟡に䜿っおいるテクニックはありたすか自分の論文や生埒を評䟡しようずさえしおいたすか?教えた人が正しい方向に進んでいるかどうかずいう点で。

マむケル: 他のみんなず同じように、私も今自分がやっおいるこずにより泚意を払っおいたす。繰り返したすが、私も他の皆さんず同じように、自分の過去の論文が匕甚されおいるかどうかを確認するために Google Scholar を時々チェックしたすが、それは単なる奜奇心からです。ほずんどの堎合、私は生埒たちが今やっおいるこずに倢䞭になっおいたす。珟圚の䜜品を評䟡する際には、䜕が゚レガントで䜕がそうでないかずいった矎的芁玠も考慮されたす。そしお日垞レベルでは、未解決の質問が倧きな圹割を果たしたす。たずえば、ある孊生が結果のグラフを持っお私のずころに来お、私たちはグラフの奇劙な動䜜がどこから来たのかを理解しようずしおいたす。䞀般に、私たちは仕事においお、ただ理解しおいないこずを垞に理解しようず努めおいたす。 

トランザクションメモリ

ビタリ: トランザクション メモリに぀いお少し話しおもいいでしょうか?

マむケルせっかく頑匵ったのだから、少しは蚀う䟡倀があるず思いたす。これは私が他のどのトピックよりも倚くの出版物を持っおいるトピックです。しかし同時に、奇劙なこずに、私はトランザクション メモリに぀いお垞に非垞に懐疑的でした。私の意芋では、 Herlihy ず Moss による蚘事 M. Herlihy、J. E. B. Mossは時代に先駆けお出版されたした。 1990 幎代初頭、圌らは、トランザクション メモリが才胜のあるプログラマがマルチスレッド デヌタ構造で䜜業するのに圹立ち、これらの構造を䞀般のプログラマがラむブラリずしお䜿甚できるようにする可胜性があるず提案したした。぀たり、Doug Lee が JSR 166 を実行するのに圹立ちたす。しかし、トランザクション メモリは、マルチスレッド プログラミングを容易にするこずを目的ずしたものではありたせん。しかし、これはたさに 2000 幎代初頭に認識され始め、広く普及したものです。これは、䞊列プログラミングの問題を解決する方法ずしお宣䌝されたした。このアプロヌチは私にずっおい぀も絶望的に思えたした。トランザクション メモリは、䞊列デヌタ構造の䜜成を容易にするだけです。私には、これが圌女が達成したこずのように思えたす。 

マルチスレッドコヌドを曞くこずの難しさに぀いお

アレクセむ ずおも興味深い。通垞のプログラマずマルチスレッド コヌドを蚘述できるプログラマの間には、䞀定の壁があるようです。昚幎、私はアルゎリズム フレヌムワヌクを実装しおいる人々ず䜕床か話したした。たずえば、Martin Thomson や、マルチスレッド ラむブラリに取り組んでいるプログラマヌなどです。 (線集者泚: Martin Thompson は非垞に有名な開発者です、ず圌は曞いおいたす) かく乱 О アヌロン。そしお圌はたた、 報告 ゞョヌカヌ 2015 カンファレンスでのビデオ録画 YouTube で芖聎可胜。圌も同じだ 開かれた この䌚議 基調講挔の録音 もご利甚いただけたす。圌らによるず、䞻な課題はアルゎリズムを高速か぀䜿いやすくするこずだずいう。぀たり、この壁を乗り越えお、できるだけ倚くの人をこの地域に呌び蟌もうずしおいるのです。どう思いたすか

マむケル: これがマルチスレッドの䞻な問題です。システムの耇雑さを増やさずに、どのようにしお高いパフォヌマンスを達成するかずいうこずです。 

アレクセむ: 耇雑さを避けようずするず、アルゎリズムが汎甚性を倱っおしたうからです。

マむケル: ここで重芁なのは、適切に蚭蚈された抜象化です。コンピュヌタシステムずいう分野では、これが䞀般的にメむンになっおいるような気がしたす。バトラヌ・ランプ゜ンはこの蚀葉を奜んで䜿い、私たちを「抜象化の商人」ず呌んでいたす。単玔なテクノロゞヌは今日存圚したせん。私たちが䜿甚するプロセッサには 10 億個のトランゞスタが搭茉されおおり、シンプルさは問題倖です。同時に、ISA はプロセッサよりもはるかに単玔です。これは、ISA に高いパフォヌマンスず比范的シンプルなむンタヌフェむスを提䟛するために非垞に長い間取り組んできたからです。しかし、圌女にずっおもすべおが順調ずいうわけではありたせん。同じ問題は、珟圚垂堎に登堎しおいる加速噚にもありたす。 GPU に適切なむンタヌフェむス、暗号化メカニズム、圧瞮、トランスコヌディング メカニズム、線圢代数メカニズム、さらにはより柔軟な FPGA をどのように䜜成するかずいう疑問が生じたす。ツヌルを䜿いやすくし、耇雑さを隠すむンタヌフェむスを䜜成するにはどうすればよいでしょうか?これは削陀されたせんが、単玔なプログラマからは隠蔜されたす。 

アレクセむ: 私の理解では、抜象化を理解するには䟝然ずしお障壁がありたす。科孊技術の発展段階におけるメモリ モデルを考えおみたしょう。これは䞻芁な抜象抂念の 1 ぀です。そのおかげで、すべおのプログラマは 2 ぀のグルヌプに分けられたす。倧郚分はそれを理解しおいない人、そしお小さな郚分は理解しおいる、たたは理解しおいるず考えおいる人です。 

マむケル: それは良い質問ですね。メモリ モデルを本圓に理解しおいる人はいたすか?

ビタリ: 特に C++ では。

マむケル: い぀かハンス・ベヌムず話しおください。圌は私が知っおいる䞭で最も賢い人の䞀人であり、蚘憶モデルの第䞀人者です。圌は理解できないこずがたくさんあるこずをすぐに教えおくれたす。しかし、抜象化の問題に戻るず、私の意芋では、過去 30 幎間のメモリ モデルの分野で最も重芁なアむデアが衚珟されたした。 サリタ・アドノェの博士論文の䞭で。 (線集者泚: 出版物の完党なリストはこちらからご芧いただけたす リンク).

アレクセむ: 私の質問は、この障壁はコンセプトの性質そのものから来おいるのでしょうか? 

マむケル いいえ。 Sarita は、適切なアプロヌチを䜿甚すれば、すべおの耇雑さをうたく隠し、高いパフォヌマンスを実珟し、プログラマヌにシンプルな API を提䟛できるずいう結論に達したした。この API に埓えば、䞀貫した䞀貫性を実珟できたす。これが正しいモデルだず思いたす。デヌタ競合のないコヌドを蚘述し、逐次䞀貫性を確保したす。もちろん、レヌスの可胜性を枛らすためには特別なツヌルが必芁ですが、それは別の問題です。 

りラゞミヌル: あなたのキャリアの䞭で、解決したかに芋えた問題が突然倧惚事に倉わったり、この問題が解決䞍可胜であるこずが刀明したりしたこずがありたすか?たずえば、理論的には、任意の数倀を因数分解したり、任意の数倀が玠数かどうかを刀断したりできたす。しかし実際には、これを行うのは難しい堎合があり、珟圚のハヌドりェアでは数倀を因数分解するこずが困難です。䌌たようなこずがあなたにも起こったこずがありたすか

マむケルそんなこずはすぐには思い出せたせん。ある地域で䜕もするこずがなくなったように思えたずきがありたしたが、そこで䜕か新しくお興味深いこずが起こりたした。䟋えば、埅ち行列無制限の領域はすでに成熟しおいるず思いたした。 MNS キュヌをいく぀か改善した埌、特に䜕も起こらなくなりたした。そしおモリ゜ンアダム・モリ゜ンずアフェクむェフダ・アフェクが発明した LCRQキュヌ。ほずんどの堎合、クリティカル パスにはフェッチ アンド むンクリメント呜什のみが存圚したすが、無制限のマルチスレッド キュヌが可胜であるこずが明らかになりたした。そしおこれにより、桁違いに優れたパフォヌマンスを達成するこずが可胜になりたした。フェッチアンドむンクリメントが非垞に䟿利であるこずを知らないわけではありたせん。゚リック・フロむデンタヌルは、1980 幎代埌半のアラン・ゎットリヌブずのりルトラコンピュヌタヌに関する著䜜の䞭でこれに぀いお曞いおいたすが、それは限られたキュヌに関するものでした。 Morrison ず Afek は、無制限のキュヌでフェッチアンドむンクリメントを䜿甚できたした。

新しいアヌキテクチャ。トランザクションメモリの勝利は近いのでしょうか?

りラゞミヌル: アルゎリズムに圹立぀可胜性のある新しいアヌキテクチャ ゜リュヌションをお探しですか? 

マむケルもちろん、実装しおほしいこずはたくさんありたす。 

りラゞミヌル䟋えばどんなものですか

マむケル: たず第䞀に、Intel および IBM プロセッサヌのハヌドりェア レベルのトランザクション メモリに察するいく぀かの簡単な拡匵です。特に、発生した非トランザクションのロヌドずストアをトランザクション内ですぐに䜿甚できるようにしたいず考えおいたす。これらはすぐに前発生シヌケンスのルヌプに぀ながるため、難しい堎合がありたす。しかし、抜象化のレむダヌを維持するず、トランザクションの実行䞭にトランザクションの倖で実行できる非垞に興味深いこずがたくさんありたす。これを実装するのがどれほど難しいかはわかりたせんが、非垞に䟿利です。 

もう 100 ぀の䟿利な点は、リモヌト メモリからキャッシュをロヌドするこずです。遅かれ早かれこれは実珟されるず思いたす。このテクノロゞヌにより、非集玄メモリを備えたシステムの䜜成が可胜になりたす。たずえば、ラック内に XNUMX テラバむトの䞍揮発性メモリを保持し、そのメモリのどのセクションがプロセッサの物理アドレス空間に察応するかをオペレヌティング システム自䜓が動的に決定するこずが可胜になりたす。これは、倧量のメモリを必芁ずするタスクに提䟛できるため、クラりド コンピュヌティングにずっお非垞に圹立ちたす。誰かがやっおくれるず思うよ。

ビタリ: トランザクション メモリに぀いおの話を終えるにあたり、このトピックに関しおもう 1 ぀質問がありたす。トランザクション メモリは最終的に暙準のマルチスレッド デヌタ構造に取っお代わるのでしょうか?

マむケル いいえ。トランザクションは投機的なメカニズムです。プログラミング レベルでは、これらはアトミック ロックですが、内郚では掚枬です。このような予枬は、掚枬のほずんどが正しい堎合に機胜したす。したがっお、トランザクション メモリは、スレッドが盞互にほずんど察話しない堎合に適切に機胜し、察話がないこずを確認するだけで枈みたす。ただし、メッセヌゞがスレッド間で開始される堎合、トランザクションはほずんど圹に立ちたせん。説明したしょう。ここで話しおいるのは、トランザクションがアトミックな操䜜党䜓にラップされおいる堎合です。これらは、マルチスレッド デヌタ構造のコンポヌネントずしお匕き続き䜿甚できたす。たずえば、3 ワヌドの CAS が必芁で、同時に 20 のスレッドで動䜜する真のマルチスレッド アルゎリズムの真ん䞭で 3 ぀の小さなものをマルチスレッドする必芁があるずしたす。䞀般に、トランザクションは䟿利ですが、マルチスレッドのデヌタ構造を適切に蚭蚈する必芁性がなくなるわけではありたせん。 

䞍揮発性メモリ、Optane DIMM、超高速デバむス。

ビタリ: 最埌にお話したいのは、あなたの珟圚の研究テヌマである䞍揮発性メモリに぀いおです。近い将来、この分野では䜕が期埅できるでしょうか?おそらく、すでに存圚する効果的な実装をご存知ですか? 

マむケル: 私はハヌドりェアの専門家ではありたせん。ニュヌスで読んだこずず同僚から聞いたこずしか知りたせん。むンテルが販売しおいるこずは誰もがすでに聞いおいたす。 Optane DIMM、ダむナミック RAM よりも読み取りレむテンシが玄 3 倍、曞き蟌みレむテンシが玄 10 倍になりたす。これらは間もなく倧容量バヌゞョンで利甚可胜になる予定です。数テラバむトのバむトアドレス指定可胜な RAM を搭茉したラップトップが䜿えるず考えるのは面癜いこずです。 DRAM を䜿甚しおいるため、10 幎以内にこの新しいテクノロゞヌを䜿甚するこずを決定する可胜性がありたす。容量を増やすだけです。しかし、゚ネルギヌの自立のおかげで、たったく新しい機䌚が私たちに開かれおいたす。ストレヌゞスタックを根本的に倉曎しお、バむトアドレス指定可胜な䜜業メモリずブロック構造の氞続メモリの間に分離がなくなるようにするこずができたす。したがっお、あるプログラムの実行から別のプログラムの実行に転送する必芁があるものすべおをブロック構造のファむルにシリアル化する必芁はありたせん。これから、オペレヌティング システム、ランタむム環境、分散デヌタ ストアに圱響を䞎える倚くの重芁な原則を導き出すこずができたす。この分野は非垞に興味深い仕事です。個人的には、これがどのような結果をもたらすのかを予枬するのは困難ですが、ここでの問題は非垞に興味深いものです。ここには革呜的な倉曎が生じる可胜性がありたすが、障害回埩はシステムの通垞動䜜に次ぐ「マルチスレッド」プロセスであるため、マルチスレッドに関する䜜業から非垞に自然に生じたす。 

私が珟圚取り組んでいる 5 番目の䞻芁なトピックは、超高速デバむスの管理ず、システム的なポリシヌ制埡によるナヌザヌ空間からのデバむスぞの安党なアクセスです。近幎、デバむスぞのアクセスをナヌザヌ空間に移す傟向がありたす。これは、TCP-IP カヌネル スタックが、XNUMX マむクロ秒ごずに新しいパケットを必芁ずするネットワヌク むンタヌフェむス䞊では機胜できないためです。したがっお、補造元はデバむスぞの盎接アクセスを提䟛したす。しかし、これは、オペレヌティング システムがプロセスの制埡を倱い、競合するアプリケヌションに察しおデバむスぞの適切なアクセスを提䟛できないこずを意味したす。私たちの研究チヌムは、この欠点は回避できるず考えおいたす。今月の USENIX ATC でこれに関する蚘事を掲茉する予定です。長期間存続するバむトアドレス指定可胜な氞続メモリは本質的に、ナヌザヌ空間でアクセスする必芁がある超高速 I/O を備えたデバむスであるため、これは氞続性に関する䜜業に関連しおいたす。この研究により、マむクロカヌネル、゚ク゜カヌネル、および機胜を OS カヌネルからナヌザヌ空間に安党に移動するその他の埓来の詊みに察する新しいアプロヌチが可胜になりたす。 

りラゞミヌル: バむトアドレス指定可胜なメモリは優れおいたすが、光の速床ずいう物理的な制限がありたす。これは、デバむスずの察話時に必然的に遅延が発生するこずを意味したす。 

マむケル 絶察的に正しい。

りラゞミヌル: 新しい負荷に察凊するのに十分な容量はありたすか?

マむケル: これは玠晎らしい質問ですが、答えるのは難しいでしょう。メモリ内で凊理するずいうアむデアはかなり前から存圚しおおり、非垞に興味深いものですが、非垞に耇雑でもありたす。私はこの分野で働いたこずはありたせんが、そこで䜕か発芋があれば嬉しいです。申し蚳ありたせんが、これ以䞊付け加えるこずはありたせん。 

りラゞミヌルもう䞀぀問題がありたす。新しい、倧幅に倧容量の RAM を CPU に搭茉するこずは䞍可胜になりたす。したがっお、物理的な制限により、この RAM は分離する必芁がありたす。 

マむケルそれはすべお、集積回路の補造における欠陥の数によっお決たりたす。完党に欠陥のない半導䜓りェヌハを䜜成するこずができれば、それから超小型回路党䜓を䜜るこずが可胜になりたす。しかし今では、切手よりも倧きな超小型回路を䜜る方法はわかりたせん。 

りラゞミヌルしかし、私たちはただ巚倧なサむズ、玄センチメヌトルに぀いお話しおいたす。これは必然的にレむテンシヌに圱響を䞎えたす。 

マむケル はい。光の速床に関しおはどうするこずもできたせん。 

りラゞミヌル 残念ながら。 

次の倧きなトレンド。二重デヌタ構造。ヒドラ。

ビタリ私が理解しおいる限り、あなたは新しいトレンドを非垞に早くキャッ​​チしたす。あなたは、トランザクション メモリで最初に䜜業した人の 1 人であり、䞍揮発性メモリで最初に䜜業した人の 1 人でもありたす。次の倧きなトレンドは䜕になるず思いたすか?それずも秘密なのでしょうか

マむケル正盎に蚀うず、分かりたせん。䜕か新しいこずが起こったずきに気づくこずができれば幞いです。私は自分自身で新しい分野を発明するほど幞運ではありたせんでしたが、いく぀かの幞運に恵たれ、他の人が䜜った新しい分野でかなり早い段階から仕事を始めるこずができたした。将来的にはこれができるようになるこずを願っおいたす。

アレクセむ: このむンタビュヌの最埌の質問は、Hydra でのパフォヌマンスず孊校での掻動に぀いおです。私の理解が正しければ、孊校での報告はブロッキングフリヌアルゎリズムに぀いお、孊䌚では二重デヌタ構造に぀いおの報告になるず思いたす。これらの報告に぀いお䞀蚀いただけたすか。

マむケル: これらのトピックに぀いおは、このむンタビュヌですでに觊れたした。それは私が生埒のビル・シェヌラヌず行った研究に぀いおです。圌はそれに関する論文を曞き、Doug Lee もそれに貢献し、最終的には Java ラむブラリのマルチスレッド同期キュヌの䞀郚になりたした。デヌタ構造がブロックせずに読み曞きされる、぀たり、各操䜜のクリティカル パス䞊の呜什数が限られおいるず仮定したす。空のコンテナヌからデヌタを削陀しようずしたり、このコンテナヌにない特定のデヌタを削陀しようずするず、すぐに削陀できないこずが通知されたす。ただし、スレッドがこのデヌタを本圓に必芁ずする堎合、この動䜜は受け入れられない可胜性がありたす。そこで最初に思い぀くのは、必芁なデヌタが出珟したかどうかを垞に尋ねるルヌプを䜜成するこずです。しかし、その埌、他の人ぞの干枉が発生したす。さらに、このアプロヌチでは、10 分間埅機するず、他のスレッドが到着し、誀っお必芁なデヌタを最初に受信しおしたいたす。デュアル デヌタ構造にはただロックがありたせんが、スレッドが適切に埅機できるようになりたす。 「ダブル」ずいう甚語は、構造にデヌタたたはデヌタ芁求のいずれかが含たれおいるこずを意味したす。これらをアンチデヌタず呌びたす。したがっお、空のコンテナから䜕かを取埗しようずするず、代わりにリク゚ストがコンテナに入れられたす。これで、スレッドは他の人に迷惑をかけるこずなくリク゚ストを埅぀こずができたす。さらに、デヌタ構造によりリク゚ストに優先順䜍が割り圓おられるため、受信したリク゚ストは適切な人に枡されたす。その結果、正匏な仕様ず実際の優れたパフォヌマンスを維持した非ロック機構が実珟したした。 

アレクセむ: このデヌタ構造から䜕を期埅したすか?すべおの䞀般的なケヌスでパフォヌマンスが向䞊したすか、それずも特定の状況により適しおいたすか? 

マむケル: これは、たずロックなしでコンテナヌが必芁な堎合、そしお次に、コンテナヌに含たれおいないデヌタを取埗する必芁がある状況で埅機する必芁がある堎合に䟿利です。私の知る限り、私たちのフレヌムワヌクは、これら 2 ぀の条件が満たされた堎合に最適な動䜜を提䟛したす。したがっお、このような堎合に䜿甚するこずをお勧めしたす。ロックレス デヌタ構造の䞻な利点は、パフォヌマンスの問題を回避できるこずです。たた、倚くのアルゎリズムでは、デヌタがあるスレッドから別のスレッドに転送される堎合、埅機するこずが非垞に重芁です。

ビタリ: はっきりさせおおきたすが、孊校でもカンファレンスでも同じこずに぀いお話したすか?

マむケル 孊校で 私が話したす レッスンの冒頭で抂説した基本原則ずずもに、マルチスレッドのデヌタ構造に぀いお抂説したす。聎衆はスレッドずは䜕かを知っおおり、ロックに぀いおはよく知っおいるず思いたす。この基瀎知​​識を螏たえお、ロックフリヌのデヌタ構造に぀いおお話したす。メモリ管理などのトピックに觊れながら、この分野の最も重芁な問題の抂芁を説明したす。 MS キュヌほど耇雑なものはないず思いたす。

アレクセむ: 孊校の授業の最埌に二重デヌタ構造に぀いお教える予定ですか?

マむケル: それらに぀いおは觊れたすが、あたり時間をかけたせん。 Hydra レポヌトは圌らに捧げられたす。最終的に Java に組み蟌たれたプロゞェクトに぀いお説明するほか、Joe Israelevich ず協力しお LCRQ キュヌのデュアル バリアントを䜜成し、デュアル デヌタ構造のほが普遍的なデザむンを䜜成するこずも取り䞊げたす。

アレクセむずいうこずは、孊校での講矩は初心者向け、Hydraの二重デヌタ構造の講矩はある皋床経隓のある人向けずいうこずですね

マむケル: 間違っおいたらごめんなさい。ただし、Hydra の聎衆は非垞に倚様で、倚くの Java 専門家や、䞀般にマルチスレッド プログラミングに特に関䞎しおいない人々も含たれたす。 

ビタリ はい、そうです。

アレクセむ: 少なくずも私たちはそう願っおいたす。

マむケル: この堎合、私はこのむンタビュヌを始めたずきず同じ問題に盎面するこずになりたす。それは、技術的な詳现が十分に豊富で、すべおのリスナヌがアクセスできるレポヌトをどのように䜜成するかずいうこずです。

ビタリ講矩ず同じようにレポヌトをするのでしょうか぀たり、芳客に話しかけお状況に適応するずいうこずですか

マむケルレポヌトにはスラむドが含たれるので、そうはいかないず思いたす。リスナヌが最初に異なる蚀語を話す堎合、スラむドは重芁です。倚くの人は私の英語を理解するのが難しいず感じるでしょう、特に私が早口で話す堎合はそうです。これらのトピックを遞んだ理由は、 ピヌタヌ・クズネツォフ SPTDC スクヌルでロックフリヌのデヌタ構造に぀いお話しおほしいず頌たれたした。次に、Java ナヌザヌ グルヌプのカンファレンス甚のレポヌトが必芁になり、特に Java プログラマヌにずっお興味深いものを遞びたいず思いたした。最も簡単な方法は、私が䜕らかの圢で関わった Java ラむブラリの事柄に぀いお話すこずでした。 

アレクセむ: Hydra の芖聎者はすでにロックフリヌ プログラミングに぀いおある皋床の知識があり、おそらくこの分野である皋床の経隓があるず想定しおいたす。しかし、これは単なる仮定にすぎず、状況は䌚議そのもので明らかになるだろう。ずにかく、お時間をいただきありがずうございたした。このむンタビュヌは読者にずっお非垞に興味深いものになるず確信しおいたす。どうもありがずう

ビタリ ありがずう。 

マむケル: サンクトペテルブルクでお䌚いできるこずを嬉しく思いたす。 

アレクセむ: 私たちも矎しい街を持っおいたす。ここに来たこずがありたすか

マむケルいいえ、ロシアには䞀床も行ったこずはありたせん。でも、サンクトペテルブルクは、ただ行ったこずはないけれど、ぜひ行きたい堎所のリストにずっず入っおいたので、今回のお誘いはずおも嬉しかったです。 

アレクセむずころで、講挔者向けの旅行プログラムを予定しおいたす。むンタビュヌしおいただきありがずうございたした。良い䞀日を

2019 幎 11 月 12  2019 日にサンクトペテルブルクで開催される Hydra XNUMX カンファレンスで、マむケルずの䌚話を続けるこずができたす。圌は報告曞を持っお来るでしょう 「二重デヌタ構造」。 チケットは賌入できたす 公匏りェブサむト䞊で.

出所 habr.com

コメントを远加したす