Tahap pertama POWER9 Firefox JIT lulus tes

Ya, jadi tentang OpenPOWER Minimum Viable Product JavaScript JIT untuk Firefox. Ini terjadi (semua pengaturan waktu dari build debug yang tidak dioptimalkan pada dual-8 Talos II saya dengan -j24

):

% ./mach jstests --args "--no-ion --no-baseline - -blinterp-eager --regexp-warmup-threshold=0" -F -j24
100%======================================>| 529.7s LULUS
% ./mach jstests --args "- -no-ion --no-baseline" -F -j24
100%======================================>| 499.0s LULUS
% js/src/jit-test/jit_test .py --args "--no-ion --no-baseline --blinterp-eager --regexp-warmup-threshold=0" -f -j24 obj/dist/bin/js
[8193| 0| 0| 0] 100%==========================================>| 132.3s LULUS SEMUA
% js/src/jit-test/ jit_test.py --args "--no-ion --no-baseline" -f -j24 obj/dist/bin/js
[8193| 0| 0| 0] 100%==========================================>|| 133.3s LULUS SEMUA
Itu bungkusnya, teman-teman: MVP, didefinisikan sebagai Baseline Interpreter dengan irregexp
dan dukungan Wasm untuk little-endian POWER9, sekarang resmi menjadi V. Ini adalah JIT pertama dan terendah tingkatan, tetapi sudah merupakan peningkatan yang signifikan; suite kesesuaian JavaScript dieksekusi menggunakan penerjemah yang sama dengan --no-ion --no-baseline --no-blinterp --no-native-regexp membutuhkan 762,4 detik (1,53x lebih lama) dan satu tes habis waktu sepenuhnya. Build yang dioptimalkan akan lebih cepat. Saat ini pembuat kode banyak menggunakan instruksi khusus POWER9, serta VSX untuk menggunakan FPU secara efisien. Ada tujuan sekunder dari little-endian POWER8 dan dukungan big-endian (termasuk pra-OpenPOWER sehingga G5 Anda juga dapat bermain), tetapi ini tidak diperlukan untuk MVP, dan kami membutuhkan seseorang yang benar-benar bersedia untuk mempertahankannya sejak saya jangan menjalankan Linux di G5 atau POWER6 saya dan saya tidak menjalankan sistem OpenPOWER saya yang besar. Meskipun kami menyambut patch untuk mereka, mereka tidak akan menahan dukungan utama untuk POWER9 little-endian, yang saat ini merupakan satu-satunya platform "tingkat 1". Saya perhatikan dalam tanda kurung ini juga harus bekerja pada LE Power10 tetapi sebagai masalah kebijakan saya tidak akan mengizinkan dukungan khusus untuk arsitektur sampai IBM turun dari bagian belakang perusahaan mereka dan benar-benar merilis kode sumber firmware. Tidak ada pekerjaan gratis untuk chip yang tidak! Anda seharusnya dapat membuat Firefox 86 berkemampuan JIT dari apa yang ada di pohon Github sekarang, tetapi tujuan saya saat ini adalah menariknya hingga 91ESR sehingga dapat dikeluarkan sebagai tambalan terhadap cabang Firefox yang stabil. Tambalan ini akan menjadi bagian dari pembaruan status masa depan saya yang sedang berlangsung untuk Firefox di OpenPOWER (ya, Anda harus membuatnya sendiri, meskipun saya sedang mempertimbangkan untuk menyiapkan Fedora copr di beberapa titik). Fase selanjutnya adalah mendapatkan Baseline Compiler yang melewati semuanya, yang sebagian besar harus sudah dilakukan karena dukungan Baseline Interpreter dan Wasm yang ada, dan kemudian tahap Ion JIT terakhir, yang masih membutuhkan banyak pekerjaan. Kami kemungkinan besar akan membuat pohon terpisah untuk itu sehingga Anda dapat membantu (ahem). Tidak ada janji sekarang, tetapi saya ingin melihat JIT yang telah selesai mencapai pohon sumber Firefox pada waktunya untuk ESR berikutnya, yaitu Firefox 102. Itu lebih dari yang dapat Anda katakan untuk Chrome/Chromium, yang sejauh ini telah menolak untuk menerima OpenPOWER -pekerjaan tertentu sama sekali. Baca selengkapnya