Ekosistem perangkat lunak: prinsip membangun

gambar



Artikel ini mengalami kesulitan. Beberapa bulan yang lalu saya diminta untuk menulis ulasan tentang subjek membangun ekosistem perangkat lunak untuk arsitektur yang berbeda. Awalnya saya menyangkal dan bercanda bahwa ekosistem bukanlah biologi. Ini bahkan bukan teknologi. Ini secara eksklusif tentang uang. Dan terkadang tentang politik. Kemudian dia mengumpulkan keinginannya menjadi kepalan, pikiran dalam tumpukan, duduk dan menulis semuanya secara harfiah dalam satu hari. Dalam Bahasa Inggris. Review tersebut kemudian diterjemahkan ke dalam bahasa Mandarin dan diterbitkan. “Dalam perjalanan”, penerjemah telah meningkatkan teks secara signifikan dan menambahkan beberapa pemikiran yang menarik. Kemudian saya memutuskan bahwa teks tersebut mungkin menarik bagi audiens Habr, dan juga berguna bagi saya untuk merujuknya di masa mendatang. Dan dia mulai memahat versi Rusia, dipersenjatai dengan bahasa Inggris asli dan terjemahan Cina. Itu adalah perjuangan yang sama dengan istilah bahasa Inggris tertentu (ekosistem SW? = Ekosistem perangkat lunak,mengaktifkan? = promosi, teknisi aplikasi? = insinyur aplikasi) dan hieroglif masih kabur. Akibatnya, teks bahasa Rusia membutuhkan waktu lebih lama daripada gabungan bahasa Inggris dan Mandarin ... Itu terjadi.





Selama empat atau lima dekade terakhir, kami telah melihat banyak upaya untuk menghadirkan arsitektur prosesor dan mikrokontroler baru ke pasar. Sangat sedikit dari ini yang terbukti berhasil dalam jangka panjang. Dua contoh yang paling jelas adalah arsitektur x86 untuk server dan PC dan ARM untuk ponsel dan mikrokontroler. Sisanya menempati (menempati) ceruk kecil, atau tidak akan bertahan lama. Tentunya, salah satu komponen kunci dari keberhasilan arsitektur komputasi secara keseluruhan adalah kemampuannya untuk memenuhi kebutuhan pelanggan yang paling penting di segmennya. Untuk server, tuntutan ini adalah kinerja; untuk perangkat seluler, konsumsi daya rendah / masa pakai baterai lama. Namun faktor penting lainnya adalah keberadaan ekosistem perangkat lunak yang kaya,yang memungkinkan Anda mengembangkan perangkat lunak baru secara efektif, serta mem-port perangkat lunak yang sudah ada. Penciptaan ekosistem adalah proses yang sangat memakan waktu dan mahal, karena semua perangkat lunak aplikasi yang diperlukan harus dikembangkan. Tetapi hanya dengan cara ini arsitektur dapat menempati segmen pasar sasaran. Namun, begitu ekosistem dikembangkan, ia berfungsi sebagai mekanisme pertahanan alami, mencegah arsitektur pesaing memasuki pasar. Dalam artikel ini, penulis merangkum pelajaran utama yang dipelajari dari pengalaman yang diterapkan pada tugas membangun ekosistem ARM di segmen pasar server.Tetapi hanya dengan cara ini arsitektur dapat menempati segmen pasar sasaran. Namun, begitu ekosistem dikembangkan, ia berfungsi sebagai mekanisme pertahanan alami, mencegah arsitektur pesaing memasuki pasar. Dalam artikel ini, penulis merangkum pelajaran penting yang dipelajari dari pengalaman yang diterapkan pada tugas membangun ekosistem ARM di segmen pasar server.Tetapi hanya dengan cara ini arsitektur dapat menempati segmen pasar sasaran. Namun, begitu ekosistem dikembangkan, ia berfungsi sebagai mekanisme pertahanan alami, mencegah arsitektur pesaing memasuki pasar. Dalam artikel ini, penulis merangkum pelajaran utama yang dipelajari dari pengalaman yang diterapkan pada tugas membangun ekosistem ARM di segmen pasar server.



Tantangan hari ini



Hari ini kita menyaksikan waktu yang paling menarik di pasar mikroelektrik. Tidak seperti 5 tahun lalu, ketika Intel menguasai 95% pasar korporat, saat ini kami memiliki lebih banyak inovasi arsitektur daripada sebelumnya. Yang pertama menyebutkan chip seri Ryzen , yang secara serius bersaing dengan Intel. Namun, inovasi ini bukan arsitektur: Prosesor AMD menggunakan ekosistem x86 yang dikembangkan. Keuntungan mereka terletak pada implementasi yang efisien. Inovasi lain lebih menarik karena membutuhkan pembangunan ekosistem perangkat lunak baru.



"Revolusi kecerdasan buatan" yang dipelopori dan dipimpin oleh NVidia telah merevolusi lanskap pasar server. Dia menciptakan segmen yang sama sekali baru, hampir secara eksklusif dikendalikan oleh penciptanya. Ini didasarkan pada -platform pemrograman paralel CUDA . CUDA (pertama kali diperkenalkan pada tahun 2007) adalah salah satu contoh menarik dalam membangun ekosistem, nanti akan kita lihat lebih detail. Pada gilirannya, Intel mencoba memperkenalkan GPU-nya sendiri (sebagian didasarkan pada GPU Gen ) untuk bersaing di bidang kecerdasan buatan. Intel telah memperkenalkan toolkit OneAPI untuk menciptakan lingkungan pemrograman . Ini adalah konsep ambisius dari metode universal untuk akselerator pemrograman (GPU, AI, FPGA, dll.). Selain itu, Intel menggunakan open source untuk OneAPI, yang membuat antarmuka lebih menarik daripada model sumber tertutup. Inti dari konsep OneAPI adalahData Paralel C ++ . Ini adalah satu set ekstensi C ++ berdasarkan standar CYCL. Tampaknya bagi saya bahwa keberhasilan upaya yang menarik ini akan bergantung pada penyertaan ekstensi ini dalam standar C ++ mendatang. Dan juga dari implementasi efektif GPU Intel. Contoh terbaru adalah penetrasi arsitektur ARM ke bidang kecerdasan buatan, cloud, dan komputasi kinerja tinggi. Arsitektur ARM dikenal karena keberhasilannya di pasar daya rendah dan memiliki ekosistem perangkat lunak yang signifikan. Karenanya, upaya menembus segmen pasar yang lebih tinggi terlihat wajar. Ini adalah kasus yang paling menarik bagi kami, dan kami akan mempertimbangkannya lebih detail dari berbagai sudut pandang.



Teknologi



Latar belakang teknologi telah saya berikan di sini .



Ekonomi



Meningkatnya persaingan dari AMD ke Intel telah menyebabkan "perang harga" yang signifikan antara raksasa prosesor tersebut. Ini memotong pendapatan produsen, tetapi membuat hidup lebih mudah bagi pengguna akhir. Sebaliknya, di bidang kecerdasan buatan, kita melihat dominasi NVidia, yang menentukan harga di pasar. Dan di sini konsumen lebih aktif mencari sistem alternatif.



Politik



Sehubungan dengan peningkatan ketegangan geopolitik, China dan Rusia telah memulai jalur untuk mengembangkan ekosistem yang 100% mandiri. Namun, ini berarti lebih dari sekedar kemandirian perangkat keras. Perangkat lunak memainkan peran yang sama pentingnya. Banyak aplikasi perlu dipindahkan atau diganti untuk kemerdekaan sejati. Gambar di bawah menggambarkan situasi di Rusia.



gambar



Faktor politik menciptakan permintaan yang kuat akan sumber daya untuk menutup celah perangkat lunak dan dukungan jangka panjang untuk upaya ini. Ada beberapa kekuatan kuat di balik penciptaan ekosistem ARM. Tapi ada juga masalah yang sangat serius. Izinkan saya menyebutkan beberapa di antaranya:



Masalah ayam-dan-telur tahap awal yang khas



Beberapa aplikasi sumber tertutup komersial menjadi standar de facto untuk segmen penting. Misalnya SAP-Hana, Oracle untuk database, VMWareuntuk virtualisasi, dll. Biasanya developer tidak tertarik untuk mem-porting dan memelihara produknya pada arsitektur yang tidak memiliki pangsa pasar yang memadai. Di sisi lain, pengguna akhir tidak membeli perangkat keras yang tidak didukung oleh perangkat lunak. Ada beberapa cara untuk memutus lingkaran setan ini. Yang pertama adalah membayar uang (besar) kepada perusahaan perangkat lunak untuk porting. Yang kedua adalah menciptakan solusi kompetitif yang akan mendorong produk keluar dari pasar atau memaksa porting yang diinginkan. Yang ketiga adalah meyakinkan seseorang dari pengembang khusus besar untuk "mendorongnya". Namun, tidak ada rute yang mudah atau murah.



Software Lawas



Sebagian besar aplikasi di pasar server telah ditulis dan dioptimalkan selama beberapa dekade untuk arsitektur x86 yang dominan. Secara eksplisit atau implisit, taruhan ditempatkan lebih pada kinerja single-threaded daripada pada paralelisme masif. Jadi, meskipun kode sumber tersedia, pengerjaan ulang dan pengoptimalan yang signifikan mungkin diperlukan agar dapat berjalan dengan sukses di server ARM.



Ada banyak masalah di depan mata, dan untuk menyelesaikannya kita harus belajar



Pelajaran dari masa lalu



Sejarah berbagai arsitektur dan ekosistem perangkat lunak adalah topik yang cukup menarik bagi mereka, tetapi cakupan minimumnya pun secara signifikan melebihi volume artikel ini (cukup untuk beberapa tesis). Oleh karena itu, saya akan menjelaskan beberapa kasus penting yang dapat membantu kita menavigasi keadaan saat ini.



Pada masa-



masa awal Ketika Intel merilis prosesor 8-bit 8080 pertamanya di pertengahan 70-an, ia memiliki sedikit keunggulan arsitektural dibandingkan pesaingnya Motorola 6800 atau Zilog Z80.... Namun Intel adalah orang pertama yang menyadari pentingnya perangkat lunak dalam mempromosikan perangkat keras. Dia juga orang pertama yang memperkenalkan kompilernya sendiri untuk mempercepat, menyederhanakan, dan mengurangi biaya pengembangan perangkat lunak. Itu adalah alat yang menciptakan keunggulan kompetitif yang penting bagi Intel dan memungkinkannya untuk sukses sejak awal. Intel kemudian memperkenalkan MKL untuk aljabar linier, VTuneuntuk pengoptimalan program dan banyak alat lainnya yang telah memainkan peran penting dalam pembentukan ekosistem x86. Apalagi Intel telah menjamin kompatibilitas alatnya. Belakangan, Intel menyadari pentingnya OS, yang mengatur pengoperasian perangkat keras. Bersama-sama dengan Microsoft (Wintel) menjadi kekuatan dominan di pasar PC selama sekitar tiga dekade. Namun, dengan perkembangan pasar server, Linux dan open source secara umum menjadi sangat relevan. Dengan demikian, Intel menjadi kontributor utama kernel Linux, dan masih berada di posisi nomor 1 (tebak siapa nomor 2?). Yang terpenting, Intel selalu berpegang teguh pada kompatibilitas biner (kompatibilitas mundur) dari platformnya. Fakta bahwa biner yang dibuat untuk arsitektur generasi sebelumnya bekerja pada generasi selanjutnya di luar kotak,dan membiarkan x86 menjadi gaya dominan. Membangun ekosistem membutuhkan waktu, tetapi itu sepadan.



Matahari terbit dan terbenam



Ini adalah satu-satunya contoh tandingan di mana ekosistem yang dikembangkan bermain melawan penciptanya. Di awal tahun 2000-an, Sun Microsystems memiliki posisi yang signifikan di pasar server SPARC. Perusahaan memprakarsai dan mengembangkan ekosistem Jawa . Masalahnya, bagaimanapun, adalah bahwa mesin Java didasarkan pada interpreter, bukan kompiler. Jadi ketika keadaan memaksa Sun untuk membuka Java, itu adalah awal dari akhir. Dengan mengimplementasikan interpreter Java untuk x86, Intel secara bertahap mendorong Sun keluar dari pasar server. Pelajaran yang dapat diambil adalah bahwa bahasa yang ditafsirkan (begitu populer saat ini) bukanlah pembela pangsa pasar yang efektif.



Keberhasilan ARM di pasar daya rendah



Arsitektur workstation telah memimpin pasar ponsel dan tablet sejak awal 2000-an. Sifat dominasinya sangat berbeda dengan x86 di PC dan server. ARM adalah komunitas terbuka - lisensinya relatif murah, yang menciptakan prasyarat bagi sejumlah besar pemain untuk memasuki permainan. Dan sistem operasi Android yang terbuka semakin mengurangi penghalang untuk masuk. Itu juga berperan ketika para pemain terkemuka (Samsung, Qualcomm, Huawei, dll.) Menyadari perlunya aliansi industri untuk menciptakan ekosistem. Ini memungkinkan untuk membangunnya dalam waktu yang sangat singkat.



Upaya Intel untuk menyerbu pasar ponsel



Sekitar tahun 2007, Intel (atau sedikit lebih awal) menyadari potensi pasar ponsel dan tablet dan berusaha untuk menaklukkannya. Proyek ini didasarkan pada arsitektur Atom (x86 dengan konsumsi daya rendah) dan terjemahan biner dari ARM ke x86 ( Houdini ). Mekanisme ini memanfaatkan ekosistem perangkat lunak yang ada. Aplikasi diluncurkan pada perangkat Intel dalam waktu singkat. Namun, ada dua fakta yang melawan Intel. Yang pertama adalah ketidakmampuan untuk mengejar ARM dalam hal konsumsi daya. Yang kedua adalah kompleksitas terjemahan biner dari RISC ke set instruksi CISC yang lebih kompleks... Terjemahan ini melibatkan overhead yang signifikan yang mungkin tidak dapat diterima untuk beberapa kelas aplikasi. Dengan demikian, penyiaran biner dapat dipandang sebagai alat masuk pasar, tetapi hampir tidak dapat berfungsi sebagai solusi jangka panjang.



Ekosistem CUDA



Meski kesuksesan Nvidia di segmen AI tidak dapat disangkal, namun pengembangan ekosistem CUDA-nya sendiri masih menimbulkan pertanyaan saya. Misalnya di HPC, proporsi aplikasi yang menggunakan CUDA masih rendah. Alasannya adalah tingginya biaya porting dan pemeliharaan aplikasi semacam itu. Beberapa pengembang mem-porting (dengan bantuan besar dari insinyur NVidia) kode mereka, tetapi kemudian meninggalkannya karena biaya dukungan. Sebaliknya, di segmen kecerdasan buatan, posisi Nidia sangat kuat. Namun, sebagian besar peneliti menggunakan framework level yang lebih tinggi ( TensorFlow , PyTorchdan seterusnya) dan tidak langsung memprogram di CUDA. Hal ini membawa kita pada kesimpulan bahwa memilih level abstraksi yang tepat untuk “perangkat lunak harness” sangat penting untuk kemajuan perangkat keras.



Kembali ke masa depan



Sekarang mari kembali ke tugas kita, dipersenjatai dengan pelajaran di masa lalu.



Aliansi Industri



Masalah terbesar dengan ekosistem ARM di segmen server, dibandingkan dengan seluler, adalah masih sangat terfragmentasi. Kami membutuhkan semacam pusat daya tarik untuk mengkoordinasikan upaya. Aliansi ini terlihat wajar, mengingat pangsa semua vendor ARM di pasar server sekitar 1%. Mereka tidak punya alasan untuk bersaing. Tugas membangun ekosistem bersama harus didahulukan daripada diferensiasi di antara mereka sendiri. Beberapa upaya telah dilakukan untuk membuat aliansi semacam itu.



Sebutkan dapat dibuat dari Open Green Computing Consortium (openGCC - sulit bagi programmer untuk memikirkan nama yang lebih aneh), dan upaya terbaru kami diKomite Teknologi Canggih ARM dalam APKIT . Ini mungkin awal yang baik, tetapi keduanya adalah aliansi lokal. Open GCC adalah organisasi Cina dan APKIT adalah organisasi Rusia. Industri menentukan perlunya aliansi global yang dapat melayani berbagai tujuan:



Sinkronisasi dan pengaruh peraturan



Pertama, perlu ada kesepakatan antara vendor ARM itu sendiri untuk memastikan portabilitas perangkat lunak di berbagai platform vendor. Kedua, ini akan memberikan kesempatan untuk bekerja dengan badan standar internasional dan lokal. Ketiga, ini akan mengirimkan sinyal yang kuat kepada pemerintah dan masyarakat bahwa ekosistem ARM yang muncul dapat berfungsi sebagai alternatif yang layak untuk yang sudah ada. Padahal fakta ini belum sepenuhnya disadari.



Bekerja dengan vendor sistem operasi dan aplikasi



Seperti yang telah kita lihat dari pengalaman, sistem operasi memainkan peran sentral dalam membangun ekosistem perangkat lunak. Anda mungkin juga memperhatikan bahwa OS yang dikembangkan oleh vendor perangkat keras secara historis tidak terlalu berhasil (dengan pengecualian Apple). Jadi bekerja dengan vendor OS secara strategis sangat penting. Sebagian dari hal ini terjadi sekarang - tambalan, pembaruan, yang muncul di versi terbaru kernel Linux, kompiler dan glibc, meningkatkan kinerja sistem ARM untuk berbagai beban kerja. Namun upaya ini masih sangat terfragmentasi, dengan masing-masing vendor melakukannya sendiri-sendiri, yang biasanya memakan waktu cukup lama. Aliansi dapat membantu menyinkronkan upaya ini dan mempercepat penerapan pembaruan.



Kami juga melihat bahwa menyelesaikan masalah ayam-dan-telur di awal kemajuan arsitektur bisa jadi sangat sulit. Aliansi dapat memberikan pengaruh tambahan dalam negosiasi dengan vendor perangkat lunak dan membantu berbagi beban promosi awal di antara produsen perangkat keras.



Sistem



distribusi perangkat lunak Poin penting ketiga di sini adalah distribusi perangkat lunak. Saat ini, perangkat lunak server ARM biasanya dibangun dari sumber, yang membutuhkan waktu dan sumber daya perangkat keras. Sedangkan untuk x86 ada skema berbasis RPM berguna yang digunakan untuk distribusi. Melakukan sesuatu seperti ini akan membutuhkan banyak pekerjaan dengan ISV dan vendor sistem operasi. Dan aliansi bisa sangat berguna dalam membantu arah ini.



Menciptakan Alat yang Efektif



Di masa lalu, alat perangkat lunak telah terbukti menjadi alat yang andal untuk pengembangan ekosistem. Oleh karena itu, perhatian terhadap mereka sangat penting saat ini. Salah satu contoh terbaik adalah Intel Corporation, yang menggabungkan pengembang perangkat lunak dan insinyur aplikasi ke dalam satu organisasi, seperti yang ditunjukkan di bawah ini. Merah menunjukkan interaksi kritis, hijau menunjukkan reguler, kuning menunjukkan sporadis.



gambar



Ini memastikan kolaborasi erat antara pengembang alat. Ini memungkinkan insinyur aplikasi (AE) untuk menggunakan alat terbaik di industri. AE yang menjalankan beban kerja yang sama berbagi pengetahuan satu sama lain dan memberikan umpan balik yang terkonsolidasi kepada arsitek perangkat keras. Dll Dll Semua ini menghasilkan fenomena yang menarik: para insinyur yang bekerja di organisasi semacam itu mulai berpikir tidak hanya tentang produk mereka, tetapi juga tentang gambaran ekosistem yang luas. Mereka memperhitungkan saling ketergantungan di antara mereka sendiri, serta dampaknya terhadap ekosistem secara keseluruhan.

Tetapi untuk membuat organisasi seperti itu, Anda memerlukan “bahasa umum” yang dapat digunakan semua pihak untuk berkomunikasi. Di beberapa titik, metode analisis mikroarsitektur TMAM menjadi seperti itu.



gambar



TMAM menyediakan cara untuk mengumpulkan, menafsirkan, dan menggunakan peristiwa mikroarsitektur untuk membuat profil dan mengoptimalkan aplikasi.



gambar



Keuntungan terpenting dari metode ini adalah memberikan gambaran obyektif tentang apa yang terjadi di perangkat keras dan memungkinkan Anda untuk meningkatkannya dan perangkat lunak. Tapi mungkin yang lebih penting, ini adalah kendaraan unik untuk membangun organisasi promosi perangkat keras yang efektif.



Kesimpulan



Membangun ekosistem ARM di pasar server terlihat menjanjikan dari sudut pandang ekonomi, politik, dan teknologi. Namun, ini terjadi dengan latar belakang persaingan yang kuat dari arsitektur x86 yang dominan. Selain itu, permasalahan awal dalam memajukan arsitektur masih jauh dari terselesaikan. Namun, saya yakin bahwa di masa mendatang, ARM dapat menjadi kekuatan yang serius di pasar server. Pembentukan aliansi industri global dan organisasi pembangun ekosistem yang efektif tampaknya sangat diinginkan.



Membangun ekosistem ARM di pasar server terlihat menjanjikan dari sudut pandang ekonomi, politik, dan teknologi. Namun, ini terjadi dengan latar belakang persaingan yang kuat dari arsitektur x86 yang dominan. Selain itu, permasalahan awal dalam memajukan arsitektur masih jauh dari terselesaikan. Namun, saya yakin bahwa di masa mendatang, ARM dapat menjadi kekuatan yang serius di pasar server. Pembentukan aliansi industri global dan organisasi pembangun ekosistem yang efektif tampaknya sangat diinginkan.



Rusia dipandang sebagai salah satu arena paling menjanjikan untuk membangun ekosistem ARM dari banyak sudut pandang. Komitmen pemerintah terhadap kemandirian informasi memberikan dukungan jangka panjang untuk inisiatif ini. Namun, potensi ekosistem ARM belum sepenuhnya terealisasi di tingkat pemerintah. Pekerjaan yang serius dibutuhkan agar suara kita didengar. Alasan lainnya adalah pasar yang relatif besar dan ragam merek khusus, baik pribadi maupun publik. Misalnya, di sini Anda dapat menyebutkan raksasa sumber daya (Gazprom, Lukoil, Rosneft), bank terkemuka (Sberbank, VTB, Alpha), penyedia layanan seluler (MTC, Megafon, Beeline, Tele2). Ada kesadaran yang berkembang akan kebutuhan akan alternatif untuk infrastruktur yang ada (x86, IBM, Oracle), baik dalam hal keamanan dan harga.



Dan yang tak kalah pentingnya, sumber daya manusia. Ada banyak programmer di Rusia yang memiliki pengalaman dalam memecahkan masalah ekosistem dan berpikir dalam istilah-istilah ini.



All Articles