"Lebih mudah untuk menjawab daripada berdiam diri" - wawancara hebat dengan bapa ingatan transaksi, Maurice Herlihy

Maurice Herlihy - pemilik dua Hadiah Dijkstra. Yang pertama adalah untuk kerja "Penyegerakan Tanpa Tunggu" (Brown University) dan yang kedua, lebih baru, - "Memori Transaksi: Sokongan Seni Bina untuk Struktur Data Tanpa Kunci" (Universiti Teknologi Virginia). Hadiah Dijkstra diberikan untuk kerja yang kepentingan dan pengaruhnya telah dapat dilihat selama sekurang-kurangnya sepuluh tahun dan Maurice jelas merupakan salah seorang pakar paling terkenal dalam bidang itu. Beliau kini bekerja sebagai profesor di Universiti Brown dan mempunyai banyak pencapaian yang sepanjang perenggan. Beliau kini sedang meneliti blockchain dalam konteks pengkomputeran teragih klasik.

Sebelum ini, Maurice telah pun datang ke Rusia untuk SPTCC (pita rakaman) dan membuat pertemuan cemerlang komuniti pembangun Java JUG.ru di St. Petersburg (pita rakaman).

Habrapost ini adalah wawancara yang hebat dengan Maurice Herlihy. Ia membincangkan topik berikut:

  • Interaksi antara akademik dan industri;
  • Yayasan untuk Penyelidikan Blockchain;
  • Dari mana datangnya idea terobosan? Pengaruh populariti;
  • PhD di bawah penyeliaan Barbara Liskov;
  • Dunia sedang menunggu multi-teras;
  • Dunia baru membawa masalah baru. NVM, NUMA dan penggodaman seni bina;
  • Penyusun lwn pemproses, RISC lwn CISC, memori kongsi lwn penghantaran mesej;
  • Seni menulis kod berbilang benang yang rapuh;
  • Bagaimana untuk mengajar pelajar menulis kod berbilang benang yang kompleks;
  • Edisi baharu buku "The Art of Multiprocessor Programming";
  • Bagaimana memori transaksi dicipta;   
  • Mengapa patut menjalankan penyelidikan dalam bidang pengkomputeran teragih;
  • Adakah pembangunan algoritma dihentikan, dan bagaimana untuk meneruskan;
  • Bekerja di Universiti Brown;
  • Perbezaan antara penyelidikan di universiti dan dalam syarikat;
  • Hydra dan SPTDC.

Temu bual dijalankan oleh:

Vitaly Aksenov β€” pada masa ini, post-doc di IST Austria dan pekerja Jabatan Teknologi Komputer di Universiti ITMO. Menjalankan penyelidikan dalam bidang teori dan amalan struktur data kompetitif. Sebelum bekerja di IST, beliau menerima PhD dari Universiti Paris Diderot dan Universiti ITMO di bawah penyeliaan Profesor Peter Kuznetsov.

Alexey Fedorov - Pengeluar di JUG Ru Group, sebuah syarikat Rusia yang menganjurkan persidangan untuk pemaju. Alexey mengambil bahagian dalam penyediaan lebih daripada 50 persidangan, dan resumenya merangkumi segala-galanya daripada jawatan jurutera pembangunan di Oracle (JCK, Java Platform Group) kepada jawatan pembangun di Odnoklassniki.

Vladimir Sitnikov - Jurutera di Netcracker. Sepuluh tahun bekerja pada prestasi dan kebolehskalaan NetCracker OS, perisian yang digunakan oleh operator telekom untuk mengautomasikan proses pengurusan peralatan rangkaian dan rangkaian. Berminat dengan isu prestasi Pangkalan Data Java dan Oracle. Pengarang lebih daripada sedozen peningkatan prestasi dalam pemandu rasmi PostgreSQL JDBC.

Interaksi antara akademik dan industri

Alexey: Maurice, anda telah bekerja dalam persekitaran akademik untuk masa yang sangat lama dan soalan pertama ialah interaksi antara bidang akademik dan industri. Bolehkah anda bercakap tentang bagaimana interaksi antara mereka telah berubah baru-baru ini? Apa yang berlaku 20-30 tahun yang lalu dan apa yang berlaku sekarang? 

Maurice: Saya sentiasa cuba untuk bekerja rapat dengan syarikat komersial kerana mereka mempunyai masalah yang menarik. Mereka, sebagai peraturan, tidak begitu berminat sama ada untuk menerbitkan keputusan mereka atau dalam penjelasan terperinci masalah mereka kepada masyarakat dunia. Mereka hanya berminat untuk menyelesaikan masalah ini. Saya bekerja untuk syarikat sedemikian untuk beberapa lama. Saya menghabiskan masa lima tahun bekerja sepenuh masa di makmal penyelidikan di Digital Equipment Corporation, yang dahulunya merupakan sebuah syarikat komputer yang besar. Saya bekerja satu hari seminggu di Sun, di Microsoft, di Oracle, dan melakukan sedikit kerja di Facebook. Sekarang saya akan pergi bercuti sabatikal (seorang profesor di universiti Amerika dibenarkan mengambil cuti sedemikian selama setahun kira-kira sekali setiap enam tahun) dan bekerja di Algorand, ini adalah syarikat mata wang kripto di Boston. Bekerja rapat dengan syarikat sentiasa menyeronokkan kerana itulah cara anda belajar tentang perkara baharu dan menarik. Anda mungkin menjadi orang pertama atau kedua yang menerbitkan artikel mengenai topik yang dipilih, dan bukannya berusaha menambah baik secara berperingkat penyelesaian kepada masalah yang sedang diusahakan oleh orang lain.

Alexey: Bolehkah anda memberitahu kami dengan lebih terperinci bagaimana ini berlaku?

Maurice: Sudah tentu. Anda tahu, semasa saya bekerja di Digital Equipment Corporation, saya dan Elliot Moss, kami mencipta memori transaksi. Ia adalah satu tempoh yang sangat bermanfaat apabila semua orang mula berminat dalam teknologi maklumat. Paralelisme, termasuk, walaupun sistem berbilang teras belum wujud. Semasa hari Matahari dan Oracle, saya banyak bekerja pada struktur data selari. Di Facebook saya mengusahakan projek blockchain mereka, yang saya tidak boleh bercakap tentangnya, tetapi saya harap ia akan diumumkan tidak lama lagi. Tahun depan, di Algorand, saya akan bekerja dalam kumpulan penyelidikan yang mengkaji kontrak pintar.

Alexey: Blockchain telah menjadi topik yang sangat popular dalam beberapa tahun kebelakangan ini. Adakah ini akan membantu penyelidikan anda? Mungkin ia akan memudahkan untuk mendapatkan geran atau menyediakan akses kepada sumber daripada syarikat yang beroperasi dalam industri?

Maurice: Saya sudah menerima geran kecil daripada Yayasan Ethereum. Populariti blockchain sangat membantu dalam memberi inspirasi kepada pelajar untuk bekerja dalam bidang ini. Mereka sangat berminat dan teruja untuk terlibat, tetapi kadang-kadang mereka tidak menyedari bahawa penyelidikan yang kelihatan menarik di luar ternyata melibatkan kerja keras. Walau bagaimanapun, saya sangat teruja untuk menggunakan semua mistik ini di sekitar blockchain untuk membantu menarik pelajar. 

Tetapi bukan itu sahaja. Saya berada di lembaga penasihat beberapa pemula blockchain. Sesetengah daripada mereka mungkin berjaya, sesetengah daripada mereka mungkin tidak, tetapi ia sentiasa sangat menarik untuk melihat idea mereka, mengkajinya dan menasihati orang ramai. Perkara yang paling menggembirakan ialah apabila anda memberi amaran kepada orang ramai supaya tidak melakukan sesuatu. Banyak perkara kelihatan seperti idea yang baik pada mulanya, tetapi adakah ia benar-benar?

Yayasan untuk Penyelidikan Blockchain

Vitaly: Sesetengah orang berfikir bahawa masa depan terletak pada blockchain dan algoritmanya. Dan orang lain mengatakan ia hanya gelembung lain. Bolehkah anda berkongsi pendapat anda tentang perkara ini?

Maurice: Banyak perkara yang berlaku dalam dunia blockchain adalah salah, ada yang hanya penipuan, banyak yang berlebihan. Walau bagaimanapun, saya fikir terdapat asas saintifik yang kukuh untuk kajian ini. Hakikat bahawa dunia blockchain penuh dengan perbezaan ideologi menunjukkan tahap keterujaan dan dedikasi. Sebaliknya, ini tidak begitu bermanfaat untuk penyelidikan saintifik. Sekarang, jika anda menerbitkan artikel yang bercakap tentang kelemahan algoritma tertentu, tindak balas yang terhasil tidak selalunya saintifik sepenuhnya. Selalunya orang membuang emosi mereka. Saya berpendapat bahawa keseronokan seperti ini dalam bidang ini mungkin kelihatan menarik bagi sesetengah orang, tetapi pada akhirnya, terdapat isu saintifik dan kejuruteraan sebenar yang perlu ditangani. Terdapat banyak Sains Komputer di sini.

Vitaly: Jadi anda cuba meletakkan asas untuk penyelidikan blockchain, bukan?

Maurice: Saya cuba meletakkan asas untuk disiplin yang kukuh, kukuh dari segi saintifik dan matematik. Dan sebahagian daripada masalahnya ialah kadangkala anda perlu bercanggah dengan beberapa pendirian orang lain yang terlalu keras dan mengabaikan mereka. Kadang-kadang orang bertanya kenapa saya bekerja di kawasan yang hanya diminati oleh pengganas dan pengedar dadah. Reaksi sebegitu tidak bermakna seperti tingkah laku pengikut yang mengulangi kata-kata anda secara membabi buta. Saya rasa kebenaran ada di tengah-tengah. Blockchain akan memberi impak yang mendalam kepada masyarakat dan ekonomi global. Tetapi ini mungkin tidak akan berlaku terima kasih kepada teknologi moden. Teknologi moden akan berkembang dan apa yang akan dipanggil blockchain pada masa hadapan akan menjadi sangat penting. Ia mungkin tidak kelihatan seperti blockchain moden, itu soalan terbuka.

Jika orang mencipta teknologi baharu, mereka akan terus memanggilnya blockchain. Maksud saya, sama seperti Fortran hari ini tiada kaitan dengan bahasa Fortran dari tahun 1960-an, tetapi semua orang terus memanggilnya Fortran. Sama untuk UNIX. Apa yang dipanggil "blockchain" masih akan membuat revolusinya. Tetapi saya ragu-ragu blockchain baharu ini akan menjadi seperti apa yang semua orang suka gunakan hari ini.

Dari mana datangnya idea terobosan? Kesan populariti

Alexey: Adakah populariti blockchain membawa kepada hasil baharu dari sudut pandangan saintifik? Lebih banyak interaksi, lebih ramai pelajar, lebih banyak syarikat di kawasan itu. Adakah sudah ada hasil daripada peningkatan populariti ini?

Maurice: Saya mula berminat dengan perkara ini apabila seseorang menyerahkan risalah rasmi kepada saya untuk sebuah syarikat yang baru mengumpul wang yang banyak. Ia menulis tentang tugas jeneral Byzantine, yang saya lebih kenali. Apa yang ditulis dalam risalah jelas secara teknikalnya tidak betul. Orang yang menulis semua ini tidak begitu memahami model di sebalik masalah... namun syarikat ini mengumpul banyak wang. Selepas itu, syarikat itu secara senyap-senyap menggantikan risalah ini dengan versi yang lebih betul - dan saya tidak akan mengatakan apa nama syarikat ini. Mereka masih ada dan melakukannya dengan sangat baik. Insiden ini meyakinkan saya bahawa, pertama, blockchain hanyalah satu bentuk pengkomputeran teragih. Kedua, ambang kemasukan (sekurang-kurangnya empat tahun lalu) adalah agak rendah. Orang yang bekerja dalam bidang ini sangat bertenaga dan bijak, tetapi mereka tidak membaca kertas saintifik. Mereka cuba mencipta semula perkara yang diketahui dan melakukan perkara yang salah. Hari ini drama telah berkurangan.

Alexey: Ini sangat menarik, kerana beberapa tahun lalu kami mempunyai trend yang berbeza. Ia agak seperti pembangunan bahagian hadapan, apabila pembangun bahagian hadapan berasaskan pelayar mencipta semula keseluruhan teknologi yang sudah popular di bahagian belakang: membina sistem, penyepaduan berterusan, perkara seperti itu. 

Maurice: Saya setuju. Tetapi ini tidak menghairankan, kerana idea-idea yang benar-benar terobosan sentiasa datang dari luar komuniti yang ditubuhkan. Penyelidik yang mapan, terutamanya ahli akademik yang mapan, tidak mungkin melakukan sesuatu yang benar-benar terobosan. Sangat mudah untuk menulis kertas untuk persidangan seterusnya tentang cara anda menambah baik sedikit hasil kerja anda yang lalu. Pergi ke persidangan, berkumpul dengan rakan-rakan, bercakap tentang perkara yang sama. Dan orang yang menceburkan diri dengan idea terobosan hampir selalu datang dari luar. Mereka tidak tahu peraturan, mereka tidak tahu bahasa, tetapi bagaimanapun... Jika anda berada dalam komuniti yang mantap, saya menasihati anda untuk memberi perhatian kepada perkara baru, kepada sesuatu yang tidak sesuai dengan gambaran keseluruhan. Dari satu segi, percubaan boleh dibuat untuk menggabungkan perkembangan luaran yang lebih cair dengan kaedah yang sudah kita fahami. Sebagai langkah pertama, cuba wujudkan asas saintifik, dan kemudian ubahnya supaya ia boleh digunakan pada idea terobosan baharu. Saya rasa blockchain itu bagus untuk menjadi idea yang segar dan mengganggu.

Alexey: Mengapa anda fikir ini berlaku? Kerana orang "di luar" tidak mempunyai sebarang halangan khusus yang wujud dalam komuniti?

Maurice: Ada corak berlaku di sini. Jika anda membaca sejarah impresionis dalam lukisan dan seni secara umum, maka pada satu masa artis terkenal menolak impresionisme. Mereka berkata ia agak kebudak-budakan. Satu generasi kemudian, bentuk seni yang ditolak sebelum ini menjadi standard. Apa yang saya lihat dalam bidang saya: pencipta blockchain tidak berminat dengan kuasa, dalam meningkatkan penerbitan dan indeks petikan, mereka hanya mahu melakukan sesuatu yang baik. Maka mereka duduk dan mula melakukannya. Mereka tidak mempunyai jumlah kedalaman teknikal tertentu, tetapi itu boleh diperbaiki. Adalah lebih sukar untuk menghasilkan idea kreatif baharu daripada membetulkan dan mengukuhkan idea yang tidak cukup matang. Terima kasih kepada pencipta ini, saya kini mempunyai sesuatu untuk dilakukan!

Alexey: Ini adalah sama dengan perbezaan antara permulaan dan projek warisan. Kami mewarisi banyak batasan pemikiran, halangan, keperluan khas, dan sebagainya.

Maurice: Analogi yang baik ialah pengkomputeran teragih. Fikirkan blockchain seolah-olah ia adalah permulaan dan pengkomputeran yang diedarkan sebagai sebuah syarikat yang besar dan mantap. Pengkomputeran teragih sedang dalam proses untuk diperoleh dan digabungkan dengan blockchain.

PhD di bawah penyeliaan Barbara Liskov

Vitaly: Kami masih mempunyai banyak soalan! Kami melihat latar belakang anda dan menemui fakta menarik tentang ijazah kedoktoran anda. Ya, ini sudah lama dahulu, tetapi ia nampaknya menjadi topik penting. Anda menerima PhD anda di bawah bimbingan anda sendiri Barbara Liskov! Barbara sangat terkenal dalam komuniti bahasa pengaturcaraan, dan seorang yang sangat terkenal secara umum. Adalah logik bahawa penyelidikan anda adalah dalam bidang bahasa pengaturcaraan. Bagaimanakah anda bertukar kepada pengkomputeran selari? Mengapa anda memutuskan untuk menukar topik?

Maurice: Pada masa itu, Barbara dan kumpulannya hanya melihat pengkomputeran yang diedarkan, yang merupakan idea yang sangat baru. Ada juga yang mengatakan bahawa pengkomputeran teragih adalah karut dan komputer yang berkomunikasi antara satu sama lain adalah sia-sia. Salah satu isu yang ditangani dalam pengkomputeran teragih yang membezakannya daripada pengkomputeran berpusat ialah toleransi kesalahan. Selepas banyak penyelidikan, kami memutuskan bahawa bahasa pengaturcaraan pengkomputeran teragih perlu mempunyai sesuatu seperti transaksi atom kerana anda tidak boleh pasti bahawa panggilan jauh akan berjaya. Sebaik sahaja anda mempunyai transaksi, masalah pengurusan konkurensi timbul. Kemudian terdapat banyak kerja untuk mendapatkan struktur data transaksi yang sangat selari. Kemudian, apabila saya tamat pengajian, saya pergi ke Carnegie Mellon dan mula mencari topik untuk diusahakan. Saya terfikir bahawa pengkomputeran telah berpindah dari komputer individu ke rangkaian komputer. Berbilang pemproses akan menjadi kesinambungan semula jadi kemajuan - perkataan "berbilang teras" belum wujud. Saya fikir: apakah persamaan transaksi atom untuk sistem berbilang teras? Sudah tentu bukan transaksi biasa kerana ia terlalu besar dan berat. Dan itulah cara saya mendapat idea itu kebolehlinearan dan itulah cara saya menghasilkan keseluruhan penyegerakan tanpa menunggu. Ini adalah percubaan untuk menjawab persoalan apakah analogi transaksi atom untuk sistem berbilang pemproses dengan memori bersama. Pada pandangan pertama, karya ini mungkin kelihatan berbeza, tetapi sebenarnya ia adalah kesinambungan tema yang sama.

Dunia sedang menunggu multi-teras

Vitaly: Anda menyebut bahawa pada masa itu terdapat sangat sedikit komputer berbilang teras, bukan?

Maurice: Mereka tiada di sana. Terdapat beberapa yang dipanggil berbilang pemproses simetri, yang pada asasnya disambungkan ke bas yang sama. Ini tidak berfungsi dengan baik kerana setiap kali syarikat baharu mencipta sesuatu yang serupa, Intel akan mengeluarkan pemproses tunggal yang lebih baik daripada berbilang pemproses.

Alexey: Bukankah ini bermakna bahawa pada zaman dahulu ia lebih kepada kajian teori?

Maurice: Ia bukan kajian teori, sebaliknya kajian spekulatif. Semua ini bukan tentang bekerja dengan banyak teorem; sebaliknya, kami mengemukakan hipotesis tentang seni bina yang tidak wujud pada masa itu. Inilah gunanya penyelidikan! Tiada syarikat akan melakukan sesuatu seperti ini; semuanya adalah sesuatu dari masa depan yang jauh. Malah, ini berlaku sehingga 2004, apabila pemproses berbilang teras sebenar muncul. Kerana pemproses terlalu panas, anda boleh menjadikan pemproses lebih kecil, tetapi anda tidak boleh membuatnya lebih pantas. Disebabkan ini, terdapat peralihan kepada seni bina berbilang teras. Dan kemudian itu bermakna bahawa tiba-tiba terdapat penggunaan untuk semua konsep yang telah kami bangunkan pada masa lalu.

Alexey: Mengapakah anda fikir pemproses berbilang teras hanya muncul pada tahun XNUMX-an? Jadi kenapa lambat sangat?

Maurice: Ini disebabkan oleh had perkakasan. Intel, AMD dan syarikat lain sangat baik dalam meningkatkan kelajuan pemproses. Apabila pada satu ketika pemproses menjadi cukup kecil sehingga mereka tidak lagi dapat meningkatkan kelajuan jam kerana pemproses akan mula terbakar. Anda boleh menjadikannya lebih kecil, tetapi tidak lebih cepat. Apa yang ada dalam kuasa mereka - bukannya pemproses yang sangat kecil, mereka boleh memuatkan lapan, enam belas atau tiga puluh dua pemproses ke dalam volum yang sama kes itu, di mana sebelum ini hanya satu boleh muat. Kini anda mempunyai multithreading dan komunikasi pantas antara mereka kerana mereka berkongsi cache. Tetapi anda tidak boleh memaksa mereka untuk berlari lebih pantas - terdapat had laju yang sangat khusus. Mereka terus meningkat sedikit demi sedikit, tetapi tidak begitu banyak lagi. Undang-undang fizik menghalang penambahbaikan.

Dunia baru membawa masalah baru. NUMA, NVM dan penggodaman seni bina

Alexey: Bunyinya sangat munasabah. Dengan pemproses berbilang teras baharu datang masalah baharu. Adakah anda dan rakan sekerja anda menjangkakan masalah ini? Mungkin anda mempelajarinya terlebih dahulu? Dalam kajian teori selalunya tidak mudah untuk meramalkan perkara sebegitu. Apabila masalah berlaku, bagaimana ia memenuhi jangkaan anda dan rakan sekerja anda? Atau adakah mereka benar-benar baru, dan anda dan rakan sekerja anda terpaksa menghabiskan banyak masa untuk menyelesaikan masalah seperti yang muncul?

Vitaly: Saya akan menambah soalan Alexey: adakah anda meramalkan seni bina pemproses dengan betul semasa anda mempelajari teori itu?

Maurice: Bukan 100%. Tetapi saya fikir rakan sekerja saya dan saya telah melakukan kerja yang baik meramalkan berbilang teras dengan memori yang dikongsi. Saya fikir kami telah meramalkan dengan betul kesukaran dalam membangunkan struktur data selari yang beroperasi tanpa kunci. Struktur data sedemikian penting untuk banyak aplikasi, walaupun tidak semua, tetapi selalunya perkara yang anda perlukan ialah struktur data tidak mengunci. Apabila kami menciptanya, ramai yang berpendapat bahawa ini adalah karut, bahawa semuanya berfungsi dengan baik dengan kunci. Kami meramalkan dengan baik bahawa akan ada penyelesaian sedia untuk banyak masalah pengaturcaraan dan masalah struktur data. Terdapat juga masalah yang lebih kompleks, seperti NOMBOR – akses tidak sekata kepada ingatan. Malah, ia tidak dipertimbangkan sehingga pemproses berbilang teras dicipta kerana ia terlalu khusus. Komuniti penyelidikan sedang mengusahakan soalan yang biasanya boleh diramal. Beberapa masalah perkakasan yang berkaitan dengan seni bina tertentu terpaksa menunggu di bahagian sayap - sebenarnya, penampilan seni bina ini. Sebagai contoh, tiada siapa yang benar-benar bekerja pada struktur data khusus GPU kerana GPU tidak wujud pada masa itu. Walaupun banyak kerja telah dilakukan SIMD, algoritma ini sedia untuk digunakan sebaik sahaja perkakasan yang sesuai tersedia. Walau bagaimanapun, adalah mustahil untuk meramalkan segala-galanya.

Alexey: Jika saya faham dengan betul, NUMA adalah sejenis kompromi antara kos, prestasi dan beberapa perkara lain. Sebarang idea mengapa NUMA keluar lewat?

Maurice: Saya rasa NUMA wujud kerana masalah dengan perkakasan yang digunakan untuk menghasilkan memori: semakin jauh komponen, semakin perlahan untuk mengaksesnya. Sebaliknya, nilai kedua abstraksi ini ialah keseragaman ingatan. Jadi salah satu ciri pengkomputeran selari ialah semua abstraksi rosak sedikit. Jika akses adalah seragam sempurna, semua memori akan sama, tetapi ini adalah mustahil dari segi ekonomi, dan mungkin juga secara fizikal. Oleh itu konflik ini timbul. Jika anda menulis program anda seolah-olah memori itu seragam, maka kemungkinan besar ia betul. Dalam erti kata ia tidak akan memberikan jawapan yang salah. Tetapi persembahannya juga tidak akan menangkap bintang dari langit. Begitu juga jika anda menulis spinlocks Tanpa memahami hierarki cache, penyekatan itu sendiri akan betul, tetapi anda boleh melupakan prestasi. Dari satu segi, anda perlu menulis program yang hidup di atas abstraksi yang sangat mudah, tetapi anda perlu mengecoh orang yang memberi anda abstraksi itu: anda perlu tahu bahawa di bawah abstraksi terdapat beberapa hierarki ingatan, bahawa terdapat bas antara anda dan ingatan ini, dan seterusnya. Oleh itu, terdapat beberapa konflik antara abstraksi yang berguna secara individu, yang membawa kita kepada masalah yang sangat konkrit dan pragmatik.

Vitaly: Bagaimana dengan masa depan? Bolehkah anda meramalkan bagaimana pemproses akan berkembang seterusnya? Terdapat idea bahawa salah satu jawapan adalah memori transaksi. Anda mungkin mempunyai sesuatu yang lain dalam stok.

Maurice: Terdapat beberapa cabaran besar di hadapan. Satu ialah ingatan yang koheren adalah abstraksi yang indah, tetapi ia mula rosak dalam kes-kes khas. Jadi, sebagai contoh, NUMA ialah contoh hidup sesuatu yang anda boleh terus berpura-pura bahawa ingatan seragam wujud. Sebenarnya tidak, produktiviti akan membuat anda menangis. Pada satu ketika, arkitek perlu meninggalkan idea seni bina memori tunggal; anda tidak boleh berpura-pura selama-lamanya. Model pengaturcaraan baharu akan diperlukan yang cukup mudah untuk digunakan dan cukup berkuasa untuk menjadikan perkakasan asas cekap. Ini adalah kompromi yang sangat sukar, kerana jika anda menunjukkan kepada pengaturcara seni bina yang sebenarnya digunakan dalam perkakasan, mereka akan menjadi gila. Ia terlalu rumit dan tidak mudah alih. Jika anda membentangkan antara muka yang terlalu mudah, prestasinya akan menjadi lemah. Oleh itu, banyak pertukaran yang sangat sukar perlu dibuat untuk menyediakan model pengaturcaraan yang berguna untuk pemproses berbilang teras yang benar-benar besar. Saya tidak pasti bahawa sesiapa selain pakar mampu memprogramkan pada komputer 2000-teras. Dan melainkan anda melakukan pengkomputeran atau kriptografi yang sangat khusus atau saintifik atau sesuatu seperti itu - ia masih tidak jelas sama sekali cara melakukannya dengan betul. 

Satu lagi kawasan yang serupa ialah seni bina khusus. Pemecut grafik telah wujud sejak sekian lama, tetapi ia telah menjadi contoh klasik tentang cara anda boleh mengambil jenis pengkomputeran khusus dan menjalankannya pada cip khusus. Ini menambah cabarannya sendiri: cara anda berkomunikasi dengan peranti sedemikian, cara anda memprogramnya. Saya baru-baru ini telah mengusahakan masalah di kawasan itu berhampiran pengkomputeran memori. Anda mengambil pemproses kecil dan melekatkannya pada sebahagian besar memori supaya memori berjalan pada kelajuan cache L1 dan kemudian berkomunikasi dengan peranti seperti TPU – pemproses sedang sibuk memuatkan tugas baharu ke dalam teras memori anda. Mereka bentuk struktur data dan protokol komunikasi untuk perkara seperti ini adalah satu lagi contoh yang menarik. Jadi pemproses dan perkakasan tersuai akan terus melihat peningkatan untuk beberapa lama.

Alexey: Bagaimana pula dengan ingatan yang tidak menentu (ingatan tidak meruap)?

Maurice: Oh, itu satu lagi contoh hebat! NVM akan banyak mengubah cara kita melihat perkara seperti struktur data. Memori yang tidak menentu, dalam erti kata lain, menjanjikan untuk mempercepatkan keadaan. Tetapi ia tidak akan menjadikan hidup lebih mudah kerana kebanyakan pemproses, cache dan daftar masih tidak menentu. Apabila anda bermula selepas ranap sistem, keadaan dan keadaan ingatan anda tidak akan sama seperti sebelum ranap sistem. Saya sangat berterima kasih kepada orang yang bekerja di NVM - akan ada banyak untuk penyelidik lakukan untuk masa yang lama cuba memikirkan keadaan ketepatan. Pengiraan adalah betul jika ia boleh bertahan daripada ranap sistem di mana kandungan cache dan daftar hilang, tetapi ingatan utama kekal utuh.

Penyusun lwn pemproses, RISC lwn CISC, memori kongsi lwn penghantaran mesej

Vladimir: Apakah pendapat anda tentang dilema "penyusun vs. pemproses" dari sudut pandangan set arahan? Biar saya terangkan kepada mereka yang tidak tahu: jika kita pergi ke memori yang condong atau sesuatu yang serupa, kita boleh menggunakan set arahan yang sangat mudah dan meminta pengkompil untuk menjana kod kompleks yang boleh memanfaatkan kelebihan baharu. Atau kita boleh pergi dengan cara lain: laksanakan arahan yang kompleks dan minta pemproses menyusun semula arahan dan melakukan manipulasi lain dengannya. Apa pendapat anda mengenainya?

Maurice: Saya tidak mempunyai jawapan untuk soalan itu. Perdebatan ini telah berlangsung selama empat dekad. Ada masanya antara disingkatkan satu set arahan dan rumit perang saudara telah diperangi oleh satu set perintah. Untuk sementara waktu, orang RISC menang, tetapi kemudian Intel membina semula enjin mereka supaya set arahan yang dikurangkan digunakan secara dalaman, dan set penuh dieksport ke luar. Ini mungkin topik di mana setiap generasi baharu mesti mencari kompromi sendiri dan membuat keputusan sendiri. Adalah sangat sukar untuk meramalkan yang mana antara perkara ini akan lebih baik. Jadi apa-apa ramalan yang saya buat akan menjadi benar untuk masa tertentu, dan kemudian palsu sekali lagi untuk seketika, dan kemudian benar lagi.

Alexey: Betapa biasa bagi industri bahawa beberapa idea menang selama beberapa dekad dan kalah pada masa akan datang? Adakah terdapat contoh lain perubahan berkala tersebut?

Maurice: Mengenai topik pengkomputeran teragih, terdapat orang yang percaya ingatan bersama dan orang yang beriman mesej. Pada mulanya, dalam pengkomputeran teragih, pengkomputeran selari bermaksud penghantaran mesej. Kemudian seseorang mendapati bahawa lebih mudah untuk memprogramkan dengan memori yang dikongsi. Sebaliknya mengatakan bahawa memori yang dikongsi adalah terlalu rumit, kerana ia memerlukan kunci dan sebagainya, jadi ia patut beralih ke bahasa di mana tiada apa-apa selain penghantaran mesej semata-mata. Seseorang melihat apa yang terhasil daripada ini dan berkata, "wah, pelaksanaan pemesejan ini kelihatan seperti memori yang dikongsi, kerana anda mencipta banyak dan banyak modul kecil ini, mereka menghantar mesej kepada satu sama lain, dan semuanya interlock"Mari kita buat pangkalan data memori kongsi yang lebih baik!" Semua ini diulang berulang kali, dan mustahil untuk mengatakan bahawa salah satu pihak pasti betul. Salah satu pihak akan sentiasa mendominasi kerana sebaik sahaja salah satu daripada mereka hampir menang, orang ramai lagi dan lagi mencipta cara untuk memperbaiki yang lain.

Seni Menulis Kod Berbilang Benang Rapuh

Alexey: Ini sangat menarik. Sebagai contoh, apabila kita menulis kod, tidak kira apa bahasa pengaturcaraan, kita biasanya perlu mencipta abstraksi seperti sel yang boleh dibaca dan ditulis. Tetapi sebenarnya, pada tahap fizikal tertentu, ini mungkin kelihatan seperti menghantar mesej melalui bas perkakasan antara komputer yang berbeza dan peranti lain. Ternyata kerja sedang berlaku pada kedua-dua peringkat abstraksi sekaligus.

Maurice: Memang benar bahawa memori dikongsi dibina berdasarkan penghantaran mesej - bas, cache dan sebagainya. Tetapi sukar untuk menulis atur cara menggunakan penghantaran mesej, jadi perkakasan sengaja berbohong, berpura-pura bahawa anda mempunyai beberapa jenis memori seragam. Ini akan memudahkan anda menulis atur cara yang ringkas dan betul sebelum prestasi mula merosot. Kemudian anda akan berkata: nampaknya sudah tiba masanya untuk berkawan dengan cache. Dan kemudian anda mula bimbang tentang lokasi cache, dan dari situ ia pergi. Dari satu segi, anda sedang menggodam abstraksi: anda tahu ia bukan sekadar ingatan yang rata dan seragam, dan anda akan menggunakan pengetahuan itu untuk menulis program mesra cache. Inilah yang anda perlu lakukan dalam masalah sebenar. Konflik antara abstraksi yang manis, ringkas dan bagus yang telah anda berikan dan pelaksanaan perkakasan asas yang sangat kompleks adalah tempat semua orang akan membuat kompromi mereka sendiri. Saya mempunyai buku tentang berbilang pemproses dan penyegerakan, dan pada satu ketika saya akan menulis satu bab tentang struktur data dalam java.util.concurrent. Jika anda melihat mereka, perkara seperti senarai dengan peninggalan Ini adalah karya seni yang menakjubkan. (Nota editor: Mereka yang biasa dengan bahasa Java sekurang-kurangnya harus melihat pelaksanaannya ConcurrentSkipListMap, anda boleh melihat pautan di API ΠΈ kod sumber). Tetapi dari sudut pandangan saya, adalah tidak bertanggungjawab untuk menunjukkannya kepada pelajar, kerana struktur data sedemikian adalah seperti seorang lelaki dalam sarkas yang berlari di atas tali ketat di atas lubang beruang. Jika anda menukar walaupun satu butiran kecil, keseluruhan struktur akan runtuh. Kod ini sangat pantas dan elegan hanya kerana ia ditulis dengan sempurna, tetapi sedikit perubahan akan membawa kepada kegagalan sepenuhnya. Jika saya memberikan kod ini sebagai contoh kepada pelajar, mereka akan segera berkata: Saya juga boleh melakukannya! Dan kemudian beberapa pesawat akan terhempas atau reaktor nuklear akan meletup, dan saya akan bersalah kerana memberi mereka terlalu banyak maklumat pada masa yang salah.

Alexey: Semasa saya masih muda, banyak kali saya cuba mengkaji kod sumber Doug Lee, sebagai contoh, java.util.concurrent, kerana ia adalah sumber terbuka, ia sangat mudah dicari dan cuba memahami apa yang berlaku di sana. Ia ternyata tidak begitu baik: selalunya, tidak jelas sepenuhnya mengapa Doug memutuskan untuk melakukan sesuatu dengan cara ini apabila orang lain melakukannya secara berbeza. Bagaimanakah anda menerangkan perkara ini kepada pelajar anda? Adakah terdapat cara tertentu yang betul untuk menerangkan butiran khusus algoritma tegar, sebagai contoh? Bagaimana anda melakukan ini?

Maurice: Guru lukisan mempunyai klise yang mereka ingat dahulu: jika anda ingin melukis seperti Picasso, anda perlu belajar cara melukis gambar realistik yang mudah, dan hanya apabila anda mengetahui peraturan anda boleh mula melanggarnya. Jika anda mula melanggar peraturan serta-merta, anda akan menjadi kucar-kacir. Pertama, saya mengajar pelajar cara menulis kod yang mudah dan betul tanpa perlu risau tentang prestasi. Apa yang saya katakan ialah, terdapat isu pemasaan yang kompleks yang mengintai di sini, jadi jangan risau tentang cache, jangan risau tentang model memori, cuma pastikan semuanya berfungsi dengan betul. Ini sudah cukup sukar: pengaturcaraan moden tidak mudah dengan sendirinya, terutamanya untuk pelajar baru. Dan apabila mereka mempunyai intuisi tentang cara menulis program yang betul, saya katakan: lihat dua pelaksanaan spinlock ini: satu sangat perlahan, dan yang kedua juga tidak terlalu, tetapi lebih baik. Walau bagaimanapun, secara matematik kedua-dua algoritma adalah sama. Malah, salah seorang daripada mereka menggunakan lokaliti cache. Salah satu daripadanya berjalan pada data cache setempat, dan yang lain berulang kali melakukan operasi merentasi bas. Anda tidak boleh menulis kod yang cekap jika anda tidak faham apa itu, dan tidak tahu cara memecahkan abstraksi dan melihat struktur asas. Tetapi anda tidak akan dapat mula melakukan ini dengan segera. Ada orang yang mula melakukan perkara ini dengan segera dan percaya kepada kepandaian mereka sendiri, biasanya ia berakhir dengan teruk kerana mereka tidak memahami prinsip. Tiada siapa melukis seperti Picasso atau menulis program seperti Doug Lee baru keluar dari kolej pada minggu pertamanya. Ia mengambil masa bertahun-tahun untuk mencapai tahap pengetahuan ini.

Alexey: Ternyata anda membahagikan masalah kepada dua bahagian: yang pertama ialah ketepatan, yang kedua ialah prestasi?

Maurice: Betul. Dan, betul-betul dalam susunan itu. Sebahagian daripada masalah ialah pelajar baru tidak memahami bahawa ketepatan adalah sukar untuk dicapai. Pada pandangan pertama mereka berkata: ini jelas betul, yang tinggal hanyalah untuk mempercepatkannya. Jadi kadang-kadang saya memberitahu mereka tentang algoritma yang pada mulanya tidak betul seolah-olah ia betul.

Bagaimana untuk mengajar pelajar menulis kod berbilang benang yang kompleks

Alexey: Hanya untuk melihat sama ada mereka dapat merasakan tangkapan?

Maurice: Saya sentiasa memberi amaran terlebih dahulu bahawa kadangkala saya akan mencadangkan algoritma yang salah. Anda tidak sepatutnya menipu orang. Saya cadangkan mereka mengambil maklumat dengan sebutir garam. Jika saya memberitahu sesuatu dan berkata: "lihat, ini jelas betul" - ini adalah isyarat bahawa di suatu tempat mereka cuba menipu anda, dan anda harus mula bertanya soalan. Seterusnya, saya cuba menggalakkan pelajar untuk terus bertanya, dan kemudian saya mencadangkan, "Apakah yang akan berlaku jika kita membiarkan perkara seperti sedia ada?" Dan mereka segera melihat kesilapan itu. Tetapi meyakinkan pelajar bahawa mereka perlu bimbang tentang ketepatan adalah jauh lebih sukar daripada yang kelihatan pada pandangan pertama. Ramai daripada pelajar ini datang dengan pengalaman pengaturcaraan di sekolah menengah, ada yang telah mendapat pekerjaan dan telah melakukan pengaturcaraan di sana, dan mereka semua penuh dengan keyakinan. Ini adalah sesuatu seperti tentera: anda perlu mengubah mood mereka terlebih dahulu untuk meyakinkan mereka supaya sabar menangani masalah yang timbul. Atau mungkin ia seperti sami Buddha: mula-mula mereka belajar untuk menaakul tentang ketepatan, dan apabila mereka memahami cara-cara menaakul tentang ketepatan, mereka dibenarkan untuk bergerak ke peringkat seterusnya dan mula bimbang tentang prestasi.

Alexey: Iaitu, kadangkala anda menunjukkan pelajar contoh tidak berfungsi, terima kasih kepada anda mendapat maklum balas yang menunjukkan sama ada mereka memahami intipati masalah, sama ada mereka boleh mencari kod yang salah dan hasil yang salah. Jadi, adakah pelajar biasanya membuat anda gembira atau sedih?

Maurice: Pelajar hampir selalu mencari kesilapan akhirnya. Jika mereka mencari terlalu perlahan, saya bertanya soalan utama, dan di sini adalah penting untuk memahami bahawa jika anda tidak pernah menipu mereka, mereka akan mula menganggap kata-kata anda sebagai kebenaran muktamad. Kemudian mereka akan bosan dan mula tertidur semasa membaca Facebook di komputer riba mereka semasa kelas. Tetapi apabila anda memberitahu mereka terlebih dahulu bahawa mereka akan ditipu, dan mereka akan kelihatan bodoh jika mereka tidak merasakan helah, mereka menjadi lebih berhati-hati. Ini bagus dalam cara yang berbeza. Saya ingin pelajar bukan sahaja mempersoalkan pemahaman mereka tentang isu tersebut, tetapi juga mempersoalkan kewibawaan guru. Ideanya ialah seorang pelajar boleh mengangkat tangan pada bila-bila masa dan berkata: Saya rasa apa yang anda katakan tadi adalah salah. Ia adalah alat pembelajaran yang penting. Saya tidak mahu mana-mana pelajar duduk dan berfikir secara senyap sendiri: semua ini kelihatan tidak masuk akal, tetapi mengangkat tangan anda terlalu menakutkan, dan bagaimanapun, dia seorang profesor, jadi semua yang dia katakan adalah kebenaran. Oleh itu, jika mereka diberi amaran terlebih dahulu bahawa tidak semua yang diceritakan semestinya benar, mereka mempunyai insentif untuk memberi lebih perhatian kepada bahan tersebut. Saya jelaskan bahawa tidak mengapa untuk mengangkat tangan anda dan bertanya soalan. Soalan anda mungkin kedengaran bodoh atau naif, tetapi inilah yang selalunya soalan terbaik timbul.

Alexey: Sangat menarik. Biasanya orang mempunyai beberapa jenis halangan psikologi yang tidak membenarkan mereka bertanya soalan kepada profesor. Terutama jika terdapat ramai orang di dalam bilik, dan semua orang takut membincangkan soalan bodoh anda akan mengambil semua masa orang ini. Adakah terdapat sebarang helah untuk menangani perkara ini?

Maurice: Saya sering berhenti dan bertanya soalan klasik. Sama ada pernyataan itu betul, atau bagaimana ia akan menyelesaikan masalah yang dibincangkan. Ini adalah tindakan utama, terutamanya pada permulaan pelajaran apabila orang malu untuk mengatakan walaupun perkara yang paling kecil. Anda bertanya soalan kepada pelajar dan tidak berkata apa-apa lagi. Ada kesunyian, semua orang menjadi sedikit tegang, ketegangan bertambah, kemudian tiba-tiba seseorang tidak dapat menahannya, pecah dan berkata jawapannya. Beginilah cara anda mengubah keadaan: terus berdiam diri menjadi lebih sukar dan menyusahkan daripada menjawab! Ini adalah helah pedagogi standard. Setiap guru di dunia harus tahu bagaimana untuk melakukan ini.

Alexey: Sekarang kami mempunyai tajuk yang sangat baik untuk wawancara ini: "lebih mudah untuk menjawab daripada berdiam diri."

Vitaly: Biar saya tanya lagi. Anda sedang mengusahakan bukti topologi. Bagaimanakah anda terlibat dalam perkara ini, kerana pengkomputeran dan topologi teragih adalah perkara yang sama sekali berbeza!

Maurice: Ada sambungan tersembunyi di sana. Semasa saya belajar matematik, saya belajar matematik tulen. Saya tidak berminat dengan komputer sehinggalah pengajian saya tamat dan saya mendapati diri saya berdepan dengan keperluan mendesak untuk mencari pekerjaan. Sebagai seorang pelajar saya mempelajari topologi algebra. Bertahun-tahun kemudian, semasa bekerja pada masalah yang dipanggil "Masalah Perjanjian k-Set", saya menggunakan graf untuk memodelkan masalah dan, seperti yang kelihatan pada masa itu, saya telah menemui penyelesaian. Anda hanya perlu duduk dan mengelilingi kiraan. Cuba cari jawapan yang sesuai pada graf ini. Tetapi algoritma saya tidak berfungsi: ternyata dia akan berlari dalam bulatan selama-lamanya. Malangnya, semua ini tidak dapat dijelaskan dalam bahasa formal teori graf - yang diketahui oleh semua saintis komputer. Dan kemudian saya teringat bahawa bertahun-tahun yang lalu, kembali dalam kelas topologi, kami menggunakan konsep itu "kompleks ringkas", yang merupakan generalisasi graf kepada dimensi yang lebih tinggi. Kemudian saya bertanya kepada diri sendiri: apa yang akan berlaku jika kita merumuskan semula masalah dari segi kompleks mudah? Ini menjadi detik penting. Dengan menggunakan formalisme yang lebih berkuasa, masalahnya tiba-tiba menjadi lebih mudah. Orang ramai menentangnya untuk masa yang lama, menggunakan graf, tetapi mereka tidak dapat berbuat apa-apa. Dan sekarang mereka tidak boleh - jawapan yang betul ternyata bukan algoritma, tetapi bukti ketidakmungkinan menyelesaikan masalah. Iaitu, algoritma sedemikian tidak wujud. Tetapi setiap bukti kemustahilan berdasarkan sama ada pada kompleks ringkas atau pada perkara yang orang berpura-pura tidak menganggap kompleks mudah. Hanya kerana anda memanggil sesuatu nama baru, ia tidak kehilangan intipatinya.

Vitaly: Ternyata anda hanya bernasib baik?

Maurice: Selain nasib, ia juga kesediaan. Ini bermakna anda tidak sepatutnya melupakan perkara "tidak berguna" yang anda pelajari sebelum ini. Lebih banyak perkara sia-sia yang anda pelajari, lebih banyak idea yang anda boleh keluarkan apabila berhadapan dengan masalah baru. Padanan corak intuitif seperti ini penting kerana... Mari kita lakukan ini, ini adalah rantaian: pada mulanya saya mendapati bahawa graf tidak berfungsi sama sekali atau tidak berfungsi sama sekali, ia mengingatkan saya tentang sesuatu daripada peristiwa lapan tahun lalu dan tahun pelajar saya, apabila kami mempelajari semua kompleks mudah ini. Ini seterusnya membolehkan saya mencari buku teks topologi lama saya dan memuatkannya semula ke dalam kepala saya. Tetapi jika bukan kerana pengetahuan lama itu, saya tidak akan mencapai sebarang kemajuan dalam menyelesaikan masalah asal.

Edisi baharu buku β€œThe Art of Multiprocessor Programming”

Alexey: Anda mengatakan beberapa perkataan tentang buku anda. Ini mungkin bukan rahsia yang paling teruk bahawa anda menulis buku paling terkenal di dunia tentang multithreading, "Seni Pengaturcaraan Berbilang Pemproses". Ia sudah berusia kira-kira 11 tahun dan sejak itu ia hanya dikeluarkan  cetakan semula yang disemak. Adakah akan ada edisi kedua?

Maurice: Baguslah awak tanya! Ia akan segera, dalam masa tiga bulan atau lebih. Terdapat dua lagi pengarang, kami menambah lebih banyak bahan, menambah baik bahagian pada fork/join parallelism, menulis bahagian di MapReduce, menambah banyak perkara baharu dan membuang perkara yang tidak perlu - sesuatu yang sangat menarik pada masa penulisan edisi pertama, tetapi tidak lagi ada hari ini. Hasilnya adalah buku yang disemak dengan sangat serius.

Alexey: Semuanya telah dilakukan, yang tinggal hanyalah melepaskannya?

Maurice: Beberapa bab masih memerlukan kerja. Penerbit kami (yang saya rasa sudah membenci kami) masih cuba menyampaikan mesej bahawa kami harus bekerja lebih cepat. Kami jauh ketinggalan dari jadual. Secara teorinya, kita boleh membuat buku ini beberapa tahun lebih awal.

Alexey: Ada peluang untuk mendapatkan versi baharu buku sebelum Krismas?

Maurice: Ini matlamat kami! Tetapi saya telah meramalkan kemenangan berkali-kali sehingga tiada siapa yang mempercayai saya lagi. Anda mungkin tidak sepatutnya terlalu mempercayai saya dalam perkara ini juga.

Alexey: Walau apa pun, ini adalah berita yang hebat. Saya sangat menyukai edisi pertama buku itu. Anda boleh kata saya peminat.

Maurice: Saya harap edisi baharu ini sesuai dengan keghairahan anda, terima kasih!

Bagaimana Memori Transaksi Dicipta

Vitaly: Soalan seterusnya ialah mengenai memori transaksi. Setakat yang saya faham, anda adalah perintis dalam bidang ini, anda menciptanya pada masa yang tiada siapa yang memikirkan perkara sebegitu. Mengapa anda memutuskan untuk berpindah ke bidang ini? Mengapakah transaksi kelihatan penting kepada anda? Adakah anda fikir suatu hari nanti ia akan dilaksanakan dalam perkakasan?

Maurice: Saya telah mengetahui tentang transaksi sejak hari penyelidikan siswazah saya.

Vitaly: Ya, tetapi ini adalah transaksi yang berbeza!

Maurice: Saya bekerja dengan Elliott Moss dalam pengumpulan sampah yang tidak menyekat. Masalah kami ialah kami ingin menukar beberapa perkataan secara atom dalam ingatan dan kemudian algoritma akan menjadi sangat mudah, dan sekurang-kurangnya sebahagian daripadanya akan menjadi lebih cekap. menggunakan bandingkan-dan-tukar untuk muat-pautan/stor-bersyaratyang disediakan oleh seni bina selari, adalah mungkin untuk melakukan sesuatu, tetapi ia adalah sangat tidak cekap dan hodoh kerana anda perlu berurusan dengan lapisan tidak arah. Saya mahu menukar perkataan ingatan dan saya perlu menukar kerana saya hanya boleh menukar satu penunjuk, jadi mereka perlu menunjuk kepada beberapa jenis struktur seperti direktori. Kami bercakap tentang betapa hebatnya jika kami boleh menukar perkakasan supaya ia boleh melakukan rakaman serentak. Elliott nampaknya menyedari perkara ini: jika anda melihat protokol koheren cache, mereka sudah menyediakan kebanyakan fungsi yang diperlukan. Dalam urus niaga yang optimistik, protokol koheren cache akan melihat bahawa terdapat konflik masa dan cache akan menjadi tidak sah. Apakah yang berlaku jika anda secara spekulatif menjalankan transaksi pada cache anda dan menggunakan mekanisme protokol koheren untuk mengesan konflik? Seni bina perkakasan spekulatif mudah direka bentuk. Jadi kami menulis yang itu penerbitan pertama tentang ingatan transaksi. Pada masa yang sama, syarikat tempat saya bekerja, Digital Equipment Corporation, sedang mencipta pemproses 64-bit baharu yang dipanggil Alpha. Jadi saya pergi dan memberikan pembentangan kepada kumpulan pembangunan Alpha tentang memori transaksi kami yang menakjubkan dan mereka bertanya: Berapa banyak hasil tambahan yang akan diperoleh oleh syarikat kami jika kami menambah semua ini terus ke pemproses? Dan saya sama sekali tidak mempunyai jawapan untuk ini, kerana saya seorang ahli teknologi, saya bukan pakar pemasaran. Saya benar-benar tidak mempunyai apa-apa untuk menjawab. Mereka tidak begitu kagum kerana saya tidak tahu apa-apa.

Vitaly: Berbilion! Katakan sahaja berbilion!

Maurice: Ya, itulah yang sepatutnya saya katakan. Sekarang, dalam zaman permulaan dan segala-galanya, saya tahu bagaimana untuk menulis rancangan perniagaan. Bahawa anda boleh berbohong sedikit tentang saiz potensi keuntungan anda. Tetapi pada masa itu ia kelihatan naif, jadi saya hanya berkata, "Saya tidak tahu." Jika anda melihat sejarah penerbitan pada memori transaksi, anda akan melihat bahawa selepas setahun terdapat beberapa rujukan kepadanya, dan kemudian selama kira-kira sepuluh tahun tiada siapa yang memetik kertas ini sama sekali. Petikan itu muncul sekitar tahun 2004, apabila berbilang teras sebenar muncul. Apabila orang ramai mendapati bahawa menulis kod selari boleh menghasilkan wang, penyelidikan baharu bermula. Ravi Rajwar menulis artikel, yang dalam beberapa cara memperkenalkan konsep ingatan transaksi kepada arus perdana. (Nota editor: Terdapat versi kedua artikel ini, dikeluarkan pada tahun 2010 dan tersedia secara percuma sebagai PDF). Tiba-tiba orang menyedari dengan tepat bagaimana semua ini boleh digunakan, bagaimana algoritma tradisional dengan kunci boleh dipercepatkan. Contoh yang baik tentang sesuatu yang pada masa lalu kelihatan seperti masalah akademik yang menarik. Dan ya, jika anda bertanya kepada saya pada masa itu sama ada saya fikir bahawa semua ini akan menjadi penting pada masa hadapan, saya akan berkata: sudah tentu, tetapi apabila sebenarnya tidak jelas. Mungkin dalam 50 tahun? Dalam amalan, ini ternyata hanya satu dekad. Ia sangat bagus apabila anda melakukan sesuatu dan selepas hanya sepuluh tahun orang menyedarinya.

Mengapa patut menjalankan penyelidikan dalam bidang pengkomputeran teragih

Vitaly: Jika kita bercakap tentang penyelidikan baharu, apakah yang akan anda nasihatkan kepada pembaca - pengkomputeran teragih atau berbilang teras dan mengapa? 

Maurice: Hari ini, mudah untuk mendapatkan pemproses berbilang teras, tetapi lebih sukar untuk menyediakan sistem teragih yang benar. Saya mula mengerjakannya kerana saya ingin melakukan sesuatu yang berbeza daripada tesis PhD saya. Inilah nasihat yang saya selalu berikan kepada pelajar baharu: jangan tulis sambungan disertasi andaβ€”cuba pergi ke arah baharu. Dan juga, multithreading adalah mudah. Saya boleh bereksperimen dengan garpu saya sendiri yang berjalan pada komputer riba saya tanpa bangun dari katil. Tetapi jika saya tiba-tiba mahu mencipta sistem pengedaran sebenar, saya perlu melakukan banyak kerja, menarik pelajar, dan sebagainya. Saya seorang yang malas dan lebih suka bekerja pada multi-core. Mengeksperimen pada sistem berbilang teras juga lebih mudah daripada melakukan eksperimen pada sistem teragih, kerana walaupun dalam sistem teragih yang bodoh terdapat terlalu banyak faktor yang perlu dikawal.

Vitaly: Apa yang anda lakukan sekarang, menyelidik blockchain? Artikel manakah yang perlu anda perhatikan dahulu?

Maurice: Baru-baru ini muncul artikel yang sangat bagus, yang saya tulis bersama pelajar saya, Vikram Saraf, khas untuk ceramah di Persidangan Tokenomcs di Paris tiga minggu lalu. Ini ialah artikel tentang sistem teragih praktikal, di mana kami mencadangkan untuk membuat Ethereum berbilang benang. Pada masa ini, kontrak pintar (kod yang berjalan pada blockchain) dilaksanakan secara berurutan. Kami menulis artikel sebelum ini yang membincangkan tentang cara menggunakan transaksi spekulatif untuk mempercepatkan proses. Kami mengambil banyak idea daripada memori transaksi perisian dan berkata bahawa jika anda menjadikan idea ini sebahagian daripada mesin maya Etherium, maka semuanya akan berfungsi dengan lebih pantas. Tetapi untuk ini adalah perlu bahawa tiada konflik data dalam kontrak. Dan kemudian kami menganggap bahawa dalam kehidupan sebenar tidak ada konflik seperti itu. Tetapi kami tidak mempunyai cara untuk mengetahuinya. Kemudian kami terfikir bahawa kami mempunyai hampir sedekad sejarah kontrak sebenar di tangan kami, jadi kami membuang blockchain Ethereum dan bertanya kepada diri sendiri: apakah yang akan berlaku jika rekod sejarah ini dilaksanakan secara selari? Kami mendapati peningkatan ketara dalam kelajuan. Pada hari-hari awal Ethereum, kelajuan meningkat dengan sangat banyak, tetapi hari ini semuanya agak rumit, kerana terdapat lebih sedikit kontrak dan kemungkinan konflik ke atas data yang memerlukan serialisasi telah menjadi lebih tinggi. Tetapi semua ini adalah kerja eksperimen dengan data sejarah sebenar. Perkara yang menarik tentang blockchain ialah ia mengingati segala-galanya selama-lamanya, jadi kita boleh kembali ke masa lalu dan mengkaji apa yang akan berlaku jika kita telah menggunakan algoritma yang berbeza untuk menjalankan kod tersebut. Bagaimanakah orang pada masa lalu akan menyukai idea baharu kami? Penyelidikan sedemikian adalah lebih mudah dan lebih menyeronokkan untuk dilakukan, kerana ada perkara yang memantau segala-galanya dan merekodkan segala-galanya. Ini sudah menjadi sesuatu yang lebih serupa dengan sosiologi daripada pembangunan algoritma.

Adakah pembangunan algoritma berhenti dan bagaimana untuk meneruskan?

Vitaly: Masa untuk soalan teori yang terakhir! Adakah ia merasakan kemajuan dalam struktur data kompetitif semakin berkurangan setiap tahun? Adakah anda fikir kami telah mencapai tahap pemahaman kami tentang struktur data atau adakah terdapat beberapa penambahbaikan besar? Mungkin ada beberapa idea bijak yang boleh mengubah segala-galanya?

Maurice: Kami mungkin telah mencapai dataran tinggi dalam struktur data untuk seni bina tradisional. Tetapi struktur data untuk seni bina baharu masih merupakan kawasan yang sangat menjanjikan. Jika anda ingin mencipta struktur data untuk, katakan, pemecut perkakasan, maka struktur data untuk GPU adalah sangat berbeza daripada struktur data untuk CPU. Apabila anda membangunkan struktur data untuk blockchain, anda perlu mencincang kepingan data dan kemudian memasukkannya ke dalam sesuatu seperti itu Pokok Merkle, untuk mengelakkan pemalsuan. Terdapat lonjakan aktiviti di kawasan ini sejak kebelakangan ini, dengan ramai yang melakukan kerja yang sangat baik. Tetapi saya fikir apa yang akan berlaku ialah seni bina baharu dan aplikasi baharu akan membawa kepada struktur data baharu. Aplikasi warisan dan seni bina tradisional - mungkin tidak ada banyak ruang untuk penerokaan lagi. Tetapi jika anda keluar dari laluan yang dipukul dan melihat ke luar, anda akan melihat perkara gila yang tidak dipandang serius oleh arus perdana - di situlah semua perkara yang menarik benar-benar berlaku.

Vitaly: Oleh itu, untuk menjadi penyelidik yang sangat terkenal, saya terpaksa mencipta seni bina saya sendiri :)

Maurice: Anda boleh "mencuri" seni bina baharu orang lain - nampaknya lebih mudah!

Bekerja di Brown University

Vitaly: Bolehkah anda memberitahu kami lebih lanjut tentang Universiti Browndi mana awak bekerja? Tidak banyak yang diketahui tentang beliau dalam konteks teknologi maklumat. Kurang daripada MIT, sebagai contoh.

Maurice: Universiti Brown ialah salah satu universiti tertua di Amerika Syarikat. Saya rasa hanya Harvard yang lebih tua sedikit. Brown adalah sebahagian daripada apa yang dipanggil Liga Ivy, yang merupakan koleksi lapan universiti tertua. Harvard, Brown, Cornell, Yale, Columbia, Dartmouth, Pennsylvania, Princeton. Ia semacam universiti lama, kecil dan agak bangsawan. Tumpuan utama adalah kepada pendidikan seni liberal. Ia tidak cuba menjadi seperti MIT, MIT sangat khusus dan teknikal. Brown ialah tempat yang bagus untuk belajar Kesusasteraan Rusia atau Yunani Klasik, dan sudah tentu, Sains Komputer. Ia memberi tumpuan kepada pendidikan menyeluruh. Kebanyakan pelajar kami pergi ke Facebook, Apple, Google - jadi saya rasa pelajar kami tidak mempunyai masalah mencari pekerjaan dalam industri. Saya bekerja di Brown kerana saya pernah bekerja di Digital Equipment Corporation di Boston sebelum ini. Ini adalah syarikat yang mencipta banyak perkara menarik, tetapi menafikan kepentingan komputer peribadi. Sebuah syarikat dengan nasib yang sukar, yang pengasasnya dahulunya adalah revolusioner muda, mereka tidak belajar apa-apa dan melupakan apa-apa, maka mereka bertukar daripada revolusioner kepada reaksioner dalam masa kira-kira sedozen tahun. Mereka suka bergurau bahawa komputer peribadi adalah kepunyaan dalam garajβ€”sudah tentu garaj terbiar. Agak jelas bahawa mereka telah dimusnahkan oleh syarikat yang lebih fleksibel. Apabila menjadi jelas bahawa syarikat itu menghadapi masalah, saya menghubungi rakan saya di Brown, iaitu kira-kira sejam di luar Boston. Saya tidak mahu meninggalkan Boston pada masa itu kerana tidak banyak pembukaan di universiti lain. Ini adalah masa di mana tidak banyak pekerjaan dalam Sains Komputer seperti sekarang. Dan Brown mempunyai pembukaan, saya tidak perlu memindahkan rumah saya, saya tidak perlu memindahkan keluarga saya, dan saya sangat suka tinggal di Boston! Itulah cara saya memutuskan untuk pergi ke Brown. Saya sukakannya. Pelajarnya hebat, jadi saya tidak pernah cuba pergi ke tempat lain. Semasa sabatikal saya, saya bekerja di Microsoft selama setahun, pergi ke Technion di Haifa selama setahun, dan kini saya akan berada di Algorand. Saya mempunyai ramai rakan sekerja di mana-mana dan oleh itu lokasi fizikal bilik darjah kami tidak begitu penting. Tetapi yang paling penting ialah pelajar, mereka adalah yang terbaik di sini. Saya tidak pernah cuba pergi ke tempat lain kerana saya cukup gembira di sini.

Namun di sebalik kemasyhuran Brown di Amerika Syarikat, dia secara mengejutkan tidak dikenali di luar negara. Seperti yang anda lihat, saya kini melakukan segala yang mungkin untuk membetulkan keadaan ini.

Perbezaan antara penyelidikan di universiti dan dalam syarikat

Vitaly: Okay, soalan seterusnya ialah mengenai Peralatan Digital. Anda berada di sana sebagai penyelidik. Apakah perbezaan antara bekerja di jabatan R&D syarikat besar dan bekerja di universiti? Apakah kelebihan dan kekurangan?

Maurice: Selama dua puluh tahun saya bekerja di Microsoft, bekerja rapat dengan pekerja Sun Microsystems, Oracle, Facebook, dan kini Algorand. Berdasarkan semua ini, saya ingin mengatakan bahawa adalah mungkin untuk menjalankan penyelidikan kelas pertama di syarikat dan di universiti. Perbezaan penting ialah dalam syarikat anda bekerja dengan rakan sekerja. Sekiranya saya tiba-tiba mempunyai idea untuk projek yang belum wujud, saya mesti meyakinkan rakan sebaya saya bahawa ini adalah idea yang baik. Jika saya di Brown, maka saya boleh memberitahu pelajar saya: mari kita usahakan antigraviti! Mereka sama ada akan pergi untuk orang lain atau mengambil projek. Ya, saya perlu mencari pembiayaan, saya perlu menulis permohonan geran, dan sebagainya. Walau apa pun, akan sentiasa ada ramai pelajar, dan anda akan dapat membuat keputusan secara unilateral. Tetapi di universiti anda berkemungkinan besar tidak akan bekerja dengan orang yang setaraf dengan anda. Dalam dunia penyelidikan industri, anda perlu meyakinkan semua orang bahawa projek anda berbaloi untuk dilaksanakan. Saya tidak boleh memesan apa-apa kepada sesiapa. Dan kedua-dua cara bekerja ini adalah berharga, kerana jika anda sedang mengerjakan sesuatu yang benar-benar gila dan rakan sekerja anda sukar diyakinkan, lebih mudah untuk meyakinkan pelajar siswazah - terutamanya jika anda membayar mereka. Jika anda sedang mengerjakan sesuatu yang memerlukan banyak pengalaman dan kepakaran yang mendalam, maka anda memerlukan rakan sekerja yang boleh berkata "tidak, kebetulan saya faham dalam bidang ini dan idea anda buruk, ia tidak akan berjaya." Ini sangat berguna dari segi membuang masa. Juga, jika di makmal perindustrian anda menghabiskan banyak masa menulis laporan, maka di universiti anda menghabiskan masa ini untuk mencari wang. Jika saya mahu pelajar boleh pergi ke suatu tempat, saya perlu mencari wang untuk itu di tempat lain. Dan lebih penting kedudukan anda di universiti, lebih banyak masa yang anda perlu habiskan untuk mengumpul wang. Jadi sekarang anda tahu untuk apa saya bekerja - pengemis profesional! Seperti salah seorang bhikkhu yang berjalan-jalan dengan membawa pinggan persembahan. Secara umumnya, kedua-dua aktiviti ini saling melengkapi antara satu sama lain. Itulah sebabnya saya cuba untuk hidup dan mengekalkan kaki saya di bumi di kedua-dua dunia.

Vitaly: Nampaknya meyakinkan syarikat adalah lebih sukar daripada meyakinkan saintis lain.

Maurice: Lebih sukar, dan banyak lagi. Lebih-lebih lagi, di kawasan yang berbeza ia berbeza: sesetengah menjalankan penyelidikan berskala penuh, manakala yang lain menumpukan pada topik mereka. Jika saya pergi ke Microsoft atau Facebook dan berkata: mari kita buat anti-graviti, mereka tidak akan menghargainya. Tetapi jika saya mengatakan perkara yang sama kepada pelajar siswazah saya, kemungkinan besar mereka akan bekerja serta-merta, walaupun sekarang saya akan menghadapi masalah - lagipun, saya perlu mencari wang untuk ini. Tetapi selagi anda ingin melakukan sesuatu yang sejajar dengan matlamat syarikat, syarikat itu boleh menjadi tempat yang sangat baik untuk melakukan penyelidikan.

Hydra dan SPTDC

Vitaly: Soalan saya akan berakhir, jadi mari kita bercakap sedikit tentang perjalanan ke Rusia yang akan datang.

Maurice: Ya, saya tidak sabar untuk kembali ke St. Petersburg.

Alexey: Saya berbesar hati untuk mempunyai anda bersama kami tahun ini. Ini kali kedua anda ke St. Petersburg, bukan?

Maurice: Sudah yang ketiga!

Alexey: Saya faham, tetapi SPTDC – pasti yang kedua. Kali terakhir sekolah dipanggil SPTCC, kami kini telah menukar satu huruf (C kepada D, Serentak kepada Diedarkan) untuk menekankan bahawa terdapat lebih banyak bidang yang berkaitan khusus dengan pengkomputeran teragih pada tahun ini. Bolehkah anda mengatakan beberapa perkataan tentang laporan anda di Sekolah dan Persidangan Hydra?

Maurice: Di Sekolah saya ingin bercakap tentang asas-asas blockchain dan perkara yang boleh anda lakukan dengannya. Saya ingin menunjukkan bahawa rantaian blok sangat serupa dengan pengaturcaraan berbilang benang yang kita kenali, tetapi dengan nuansanya sendiri, dan perbezaan ini penting untuk difahami. Jika anda membuat kesilapan dalam aplikasi web biasa, ia hanya menjengkelkan. Jika anda menulis kod buggy dalam aplikasi kewangan, seseorang pasti akan mencuri semua wang anda. Ini adalah tahap tanggungjawab dan akibat yang sama sekali berbeza. Saya akan bercakap sedikit tentang bukti kerja, tentang kontrak pintar, tentang urus niaga antara rantaian blok yang berbeza.

Akan ada penceramah lain yang bekerja di sebelah saya yang juga mempunyai sesuatu untuk dikatakan tentang blockchain, dan kami bersetuju untuk menyelaraskan antara satu sama lain supaya cerita kami sesuai bersama. Tetapi untuk laporan kejuruteraan, saya ingin memberitahu khalayak luas penjelasan yang boleh difahami tentang mengapa anda tidak sepatutnya mempercayai semua yang anda dengar tentang rantaian blok, mengapa rantaian blok adalah bidang yang hebat, bagaimana ia sesuai dengan idea lain yang diketahui, dan mengapa kita perlu melihat dengan berani kepada masa hadapan.

Alexey: Di samping itu, saya ingin mengatakan bahawa ini tidak akan berlaku dalam format pertemuan atau kumpulan pengguna, seperti dua tahun lalu. Kami memutuskan untuk mengadakan persidangan kecil berhampiran sekolah. Alasannya ialah selepas berkomunikasi dengan Peter Kuznetsov, kami menyedari bahawa sekolah itu terhad kepada seratus, mungkin 120 orang sahaja. Pada masa yang sama, terdapat ramai jurutera yang ingin berkomunikasi dengan anda, menghadiri pembentangan, dan secara amnya berminat dengan topik tersebut. Atas sebab ini kami telah mewujudkan persidangan baharu dipanggil Hydra. By the way, ada idea kenapa Hydra?

Maurice: Kerana akan ada tujuh penceramah? Dan kepala mereka boleh dipotong, dan pembesar suara baharu akan tumbuh di tempat mereka?

Alexey: Idea yang bagus untuk mengembangkan pembesar suara baharu. Tetapi sebenarnya, ada cerita di sini. Ingat legenda Odysseus, di mana dia terpaksa belayar antara Scylla dan Charybdis? Hydra adalah sesuatu seperti Charybdis. Kisahnya ialah pernah saya bercakap di persidangan dan bercakap tentang multithreading. Hanya terdapat dua trek pada persidangan ini. Pada awal laporan, saya memberitahu penonton di dewan bahawa mereka kini mempunyai pilihan antara Scylla dan Charybdis. Haiwan semangat saya ialah Charybdis kerana Charybdis mempunyai banyak kepala dan tema saya ialah pelbagai benang. Ini adalah bagaimana nama persidangan muncul.

Walau apa pun, kami telah kehabisan soalan dan masa. Jadi, terima kasih, kawan-kawan, untuk temu bual yang hebat, dan jumpa anda di Sekolah SPTDC dan Hydra 2019!

Anda boleh meneruskan perbualan anda dengan Maurice di persidangan Hydra 2019, yang akan diadakan pada 11-12 Julai 2019 di St. Petersburg. Dia akan datang dengan laporan "Rantai sekatan dan masa depan pengkomputeran teragih". Tiket boleh dibeli di laman web rasmi.

Sumber: www.habr.com

Tambah komen