Lihatlah di dalam chip GPU Apple sendiri yang digunakan di iPhone



Untuk model pertama produk Apple, iPhone dan iPad, perusahaan melisensikan dan menggunakan chip PowerVR GPU dari Imagination Technologies untuk menampilkan grafik. Apple bahkan mengakuisisi sekitar 10% dari Imagination dan merupakan pelanggan terbesarnya, menghasilkan sekitar 30% dari pendapatan. Dan seperti Apple mulai menggunakan CPU ARM di bawah lisensi, dan sekarang menggunakan perkembangannya sendiri, tampaknya telah beralih dari menggunakan PowerVR ke mengembangkan GPU sendiri. Dia pertama kali muncul pada prosesor A8 yang digunakan pada iPhone 6, dan keturunannya ada pada A9 dan A10 Fusion yang digunakan pada iPhone 6S dan 7.

GPU modern, seperti yang ditemukan di dalam iPhone dan iPad, memiliki tiga komponen utama yang membutuhkan kerja yang terkoordinasi dengan baik untuk mendemonstrasikan gambar. Yang pertama adalah perangkat keras, yang menyediakan grafik dengan fungsi tetap, yang bertanggung jawab untuk memproses perintah API, rasterisasi segitiga, dan output raster. Yang kedua adalah inti shader, jantung GPU, yang mengeksekusi perangkat lunak shader (simpul, geometri, piksel, dan perhitungan shader). Yang terakhir adalah perangkat lunak; driver grafis yang berjalan pada CPU dan menggabungkan semua fungsi yang mengontrol operasi GPU. Pengemudi mengonversi aplikasi grafis yang ditulis dalam Logam atau OpenGL ES API menjadi seperangkat perintah untuk perangkat keras dengan fungsi tetap dan ke shader yang dapat diprogram yang bekerja di kernel shader. Salah satu komponen paling penting dari driver adalah kompiler,membuat kode mesin untuk mengerjakan kernel shader.

Pada generasi yang lebih tua, perangkat keras dengan fungsi tetap, inti shader, dan driver Apple digunakan di bawah lisensi dari Imagination Technologies. Tetapi selama 6-7 tahun terakhir, Apple telah secara agresif merekrut arsitek dan programmer grafis untuk menyusun dan mengarahkan perangkat lunak dari perusahaan seperti AMD, Intel, Google dan Nvidia untuk mengembangkan GPU sendiri. Sebagai contoh, Mike Wuerthele dari Apple Insider menulis bahwa sekitar 25 orang telah pindah dari Imagination Technologies ke Apple tahun ini. GPU Apple tampaknya masih menggunakan perangkat keras perangkat keras tetap dari PowerVR. Tetapi berdasarkan berbagai bukti yang tersedia di domain publik, jelas bahwa Apple telah mengganti kernel shader yang dapat diprogram dengan miliknya sendiri, yang lebih efisien dan lebih cepat.Untuk memanfaatkan penggunaannya, Apple juga mengembangkan driver dan kompilernya sendiri yang mengeluarkan kode untuk arsitekturnya. Hasil keseluruhan dari ini adalah desain GPU eksklusif yang unik, meskipun ada beberapa warisan yang ditinggalkan oleh PowerVR. Ini adalah desain kelas dunia dengan kecepatan dan efisiensi energi yang mengesankan. Prosesor A9 memiliki hasil terbaik dalam semua pengukuran kecepatan, dan A10 Fusion 40-50% lebih cepat.

Dokumentasi GPU Apple belum pernah dibagikan. Agar pengembang dapat memanfaatkan GPU, mereka perlu mengetahui cara menulis program shader untuk kompiler Metal dan OpenGL. Di WWDC 2016, insinyur Apple mempresentasikan "Advanced Shader Optimization for Metal", yang berisi instruksi paling detail untuk fine-tuning dan detail arsitektur GPU mereka hari ini. Arsitektur GPU PowerVR Seri 6 juga tidak memiliki dokumentasi, tetapi Imagination Technologies berbagi beberapa petunjuk pengoptimalan yang paling sederhana. Membandingkan informasi yang tersedia pada dua chip ini, kita dapat menyimpulkan bahwa mereka sangat berbeda. Secara khusus, rangkaian register dan fungsi konversi data Apple lebih cocok untuk kecepatan dan efisiensi energi, dan menyusunnya lebih mudah.

Apple Meningkatkan Kinerja dan Efisiensi Energi dengan Register yang Lebih Kecil


API grafik seluler OpenGL ES dan Logam API mendukung format titik-mengambang setengah-presisi 16-bit yang digunakan untuk menghitung dan menyimpan data gambar, yang mengkonsumsi daya lebih kecil dari perhitungan presisi-tunggal 32-bit. Perhitungan setengah presisi dalam beberapa kasus kehilangan akurasi lebih cepat dari perhitungan presisi tunggal. Tetapi untuk banyak aplikasi yang bekerja dengan grafik, pemrosesan gambar dan pembelajaran mesin, setengah akurasi sudah cukup untuk menghasilkan hasil yang benar - terutama karena kenyataan bahwa sebagian besar tampilan memiliki rentang dinamis satu piksel dari 8 hingga 12 bit.

Himpunan register untuk GPU Apple terdiri dari register 16-bit, ideal untuk data harian, dilihat dari presentasi yang tersedia dalam domain publik [1]. Data floating point presisi tunggal dan data 32-bit lainnya membutuhkan dua register. Sebagai hasilnya, satu set register dapat menyimpan dua kali lebih banyak variabel 16-bit dibandingkan 32-bit. Insinyur Apple menekankan bahwa penggunaan perhitungan setengah waktu mengarah pada peningkatan kecepatan dan penghematan energi yang signifikan dibandingkan dengan presisi tunggal, yang menunjukkan bahwa arsitektur mereka difokuskan pada penggunaan setengah presisi sebagai konsep utama dalam desain.

Sebaliknya, GPU PowerVR Seri 6 dan 7 menggunakan register 32-bit dan dirancang untuk perhitungan presisi tunggal, dilihat dari instruksi dari Imagination Technologies [2]. Dalam Seri 6, instruksi yang paling umum digunakan, FMAD, FMUL, dan FADD, dapat bekerja dengan setengah presisi, tetapi hanya menghilangkan beberapa bit dari register sumber dan hasil. Beberapa instruksi dapat bekerja dengan dua elemen SIMD 16-bit dalam satu register (dan Seri 7 memperluas kemampuan ini ke sejumlah besar instruksi), tetapi eksekusi SIMD sangat berbeda dari eksekusi skalar menggunakan register 16-bit. Untuk PowerVR, menyimpan data dalam format 16-bit adalah pemborosan memori register, dan jumlah maksimum variabel yang disimpan tidak berlipat ganda secara otomatis.Oleh karena itu, penggunaan data 16-bit harus mengurangi jumlah data yang melewati memori dan konsumsi energi, tetapi tidak serta merta meningkatkan kecepatan atau efisiensi konsumsi energi, seperti halnya dengan GPU dari Apple.

Konversi sederhana memberi programmer akses ke setengah presisi


Salah satu masalah umum dari data 16-bit adalah bahwa meskipun sebagian besar perhitungan tidak menyebabkan masalah dengan penurunan akurasi, beberapa masih memerlukan akurasi tinggi. Misalnya, shader yang menghitung warna blok besar piksel, dan kemudian menghitung rata-rata, dapat menelan biaya 16 bit untuk setiap piksel individu, tetapi mungkin memerlukan 32 bit saat menjumlahkan data untuk menghitung secara akurat. Jika mengonversi data piksel dari 16 menjadi 32 bit terlalu mahal, shader akan menggunakan 32 bit untuk menghasilkan hasil yang akurat.

GPU Apple menawarkan konversi yang sangat cepat antara tipe data, yang mendorong akurasi pencampuran dan menciptakan lebih banyak peluang untuk perhitungan 16-bit kecepatan tinggi dan konsumsi rendah. Menurut presentasi mereka, konversi tipe data adalah "gratis" - tampaknya, di suatu tempat di jalur data adalah konverter perangkat keras. Dari sudut pandang perangkat keras, pendekatan ini lebih mahal, tetapi itu, antara lain, sangat menyederhanakan kompiler dan membuat pekerjaan programmer lebih mudah.

PowerVR Seri 6 dan 7 dapat melakukan konversi akurasi data, tetapi tentu saja tidak "gratis." Instruksi pengoptimalan dengan jelas menyatakan bahwa setiap konversi data (dengan penurunan atau peningkatan akurasi) mahal, dan merekomendasikan bahwa programmer menulis shader dengan jumlah minimum transformasi [3].

Apple GPU: Perbedaan Teknologi


Perbedaan antara set register dan konversi data ke Apple GPU dan Imagination GPU sangat besar. Organisasi satu set register adalah dasar dari inti shader, itu mempengaruhi desain hampir semuanya, dari arsitektur seperangkat instruksi kernel shader hingga pelaksanaan bagian-bagian kode dan pengiriman logika. Sebagai contoh, ukuran register menentukan jalur data dan skema hampir seluruh operasi inti shader. Konversi data tidak terlalu berpengaruh, tetapi perbedaannya sangat penting bagi penyusun dan pengembang. GPU PowerVR Series 7 sangat mirip dengan generasi ke-6 sebelumnya, dan menggunakan register 32-bit. Berdasarkan perbedaan ini, kita dapat menyimpulkan bahwa GPU Apple menggunakan inti shadernya sendiri yang dikembangkan oleh perusahaan. Ini berarti bahwa Apple telah mengembangkan kompiler shader sendiri untuk OpenGL ES dan Metal API, dan, kemungkinan besar,dan driver grafis Anda.

Bahkan beberapa program pengukuran kinerja melihat perbedaannya. Tabel di mana GPU untuk iPhone 7 digambarkan sebagai G9, entah bagaimana, masuk ke hasil GFXBench.



Tapi hasil tes dari database publik ini segera musnah, dan semua referensi ke G9 menghilang.

Ada banyak perbedaan lain antara GPU Apple dan PowerVR yang dapat dideteksi dengan menjalankan tes khusus dengan Metal shaders dan membandingkan hasilnya dengan shader OpenGL ES yang serupa pada PowerVR GPU. Tidak semua perbedaan akan berlaku untuk perangkat keras. Misalnya, GPU Apple mendukung versi OpenGL ES hingga 3.0, dan PowerVR GPU juga berfungsi dengan yang lebih baru. Tetapi perbedaan tersebut dapat terjadi karena fitur perangkat lunak dan driver.

Manfaat Strategis dari Desain Sendiri


Integrasi vertikal Apple unik untuk elektronik konsumen. Dalam hal iPhone dan iPad, perusahaan mengontrol hampir semua hal - mulai dari desain sirkuit dasar prosesor hingga OS dan layanan untuk pengguna Maps, iMessage dan Camera. Hal ini memungkinkan Anda untuk bermain bersama perangkat keras dan perangkat lunak, yang tidak dapat dicapai oleh pesaing mereka.

Tren umum jelas - di setiap langkah, Apple meningkatkan kontrol atas platform dan ekosistem. Awalnya, Apple menggunakan prosesor ARM standar, dan mengalihdayakan sebagian besar pekerjaan ke Samsung, tetapi pada akhirnya mengembangkan CPU sendiri yang kompatibel dengan ARMv8, di depan para pesaing. Demikian pula, perusahaan membeli Anobit dan menggunakan tim dan teknologi untuk membuat pengontrol penyimpanan flash sendiri. Mengembangkan CPU Anda sendiri hanyalah langkah berikutnya dalam menciptakan keuntungan strategis.

Yang paling jelas dari ini adalah bahwa GPU Apple lebih baik (lebih cepat dan lebih efisien) daripada saingan, termasuk yang dari ARM atau Imagination, serta Qualcomm. Memimpin dalam kinerja berarti kepuasan pengguna yang lebih besar dan menguras baterai lebih sedikit baik dalam hal game, dan dalam hal pembuatan gambar dan pembelajaran mesin.

Perpustakaan Metal Performance Shaders mencakup lusinan shader yang dioptimalkan dengan baik yang berjalan pada GPU dan menyediakan seperangkat alat yang kaya untuk pengembang [4]. Mereka termasuk jaringan saraf untuk klasifikasi, prosedur pemrosesan gambar. Instagram menggunakan GPU untuk memengaruhi tonemapping dan meningkatkan kontras foto. Bahkan dimungkinkan bahwa kamera apel menggunakan GPU untuk berbagai efek. Untuk pencitraan dan jaringan saraf, setengah presisi adalah ideal, dan arsitektur Apple shader berkinerja lebih baik daripada PowerVR.

Keuntungan kedua adalah bahwa Apple dapat membuat fitur baru dan memperbaiki bug di GPU tanpa membawa manfaat ini ke pesaing.

Ketiga, waktu masuk pasar dan perencanaan. Prosesor seri keluar pada siklus tahunan agresif yang ditetapkan oleh iPhone. Karena iPhone adalah produk premium, Apple harus mengesankan pengguna dengan kecepatan dan menunjukkan kemajuan yang baik untuk merangsang permintaan. Akibatnya, Apple sering menjadi pelanggan terkemuka teknologi baru (misalnya, 10nm dari TSMC), yang mengandung risiko besar. Dengan GPU-nya sendiri, sebuah perusahaan dapat memutuskan untuk menghabiskan banyak waktu dan energi untuk mencapainya. Imajinasi hanya memiliki sedikit uang dan lebih sedikit staf.

Apple harus dengan rapi menggabungkan desain, validasi, produksi, dan ekosistem perangkat lunak untuk menjalankan jutaan ponsel dan tablet yang jatuh ke tangan pengguna. Bulan-bulan sebelum rilis terdiri dari siklus panik mencari dan memperbaiki bug, memperbarui perangkat lunak dan perangkat keras grafis. Karena GPU sekarang adalah miliknya sendiri, siklus ini berada di bawah kendali langsung Apple dengan sejumlah kecil ketergantungan eksternal, yang membantu perusahaan mengikuti peluncuran tepat waktu.

Contoh hipotetis - jika insinyur Apple menemukan kesalahan serius pada inti shader, mereka akan dapat memperbaikinya dan memeriksanya pada hari yang sama. Keterlibatan pihak ketiga berarti bahwa sebagai permulaan, pihak ini harus terlebih dahulu menilai prioritas kesalahan, menyetujui perubahan atau penyelesaian, yang mungkin memerlukan waktu karena kebutuhan untuk berkoordinasi dengan klien lain. Samsung Exynos 5410 adalah contoh buku teks tentang bahaya berurusan dengan kekayaan intelektual pihak ketiga. Itu dikembangkan berdasarkan ARM Cortex A15 dan A7 dalam konfigurasi Big.Little untuk menghemat daya, tetapi karena kesalahan dalam konsistensi cache Samsung harus mematikan fitur hemat daya. Perkembangan sendiri sangat mengurangi risiko seperti itu, karena dalam hal ini tidak ada konflik kepentingan, dan transfer informasi di dalam perusahaan jauh lebih mudah,daripada antar perusahaan.

Keuntungan terakhir dari GPU berpemilik adalah pengurangan ketergantungan pada pemasok, yang memberi perusahaan posisi yang menguntungkan dalam negosiasi dan mengurangi risiko bisnis. Menciptakan alternatif untuk pemasok utama, internal atau eksternal, adalah salah satu prinsip lama Apple. Sebagai contoh, Apple bergantung pada Qualcomm dan modem LTE mereka untuk iPhone. Ketika Intel mengembangkan modem yang bersaing, Apple mengadaptasinya untuk sebagian besar penyedia GSM. Di masa depan, ini memungkinkan untuk mengurangi biaya dan menciptakan peluang menarik.

GPU berpemilik menciptakan alternatif tersembunyi untuk menggunakan kekayaan intelektual Imagination di masa depan. Perusahaan telah menciptakan tim pengembangan GPU dan tim driver, bersama-sama mengembangkan sebagian besar prosesor A8, A9, dan A10. Jika Imagination Technologies dibeli atau tertinggal di bagian teknis, Apple cukup mengembangkan perangkat kerasnya sendiri untuk grafis dengan fungsi tetap untuk menggantikan PowerVR.

Langkah Selanjutnya Apple


Setelah bertahun-tahun menyewa arsitektur grafis, Apple telah mengembangkan GPU sendiri, yang sudah terpasang pada prosesor A8, A9 dan A10 yang berjalan pada iPhone 6, 6S dan 7. GPU masih memiliki besi dari PowerVR, tetapi jelas bahwa inti shader sangat berbeda dari mereka yang menggunakan Teknologi Imajinasi. Ini berarti bahwa Apple membuat kompiler sendiri untuk Metal dan OpenGL ES, dan kemungkinan besar, drivernya sendiri.

Dilihat dari sejarah perusahaan, tidak ada yang mengejutkan dalam mengembangkan GPU Anda sendiri. Selain keunggulan jelas dalam kecepatan, ada yang kurang jelas - peningkatan kontrol atas ekosistem, waktu yang lebih singkat ke pasar, dan lebih sedikit kesalahan.

Di depan, Apple memiliki tiga opsi. Status quo - Imagination Technologies melisensikan perangkat keras dengan fungsi tetap untuk melengkapi komponennya. Dalam hal ini, Apple akan meningkatkan ke versi PowerVR berikutnya, tetapi, mungkin secara paralel, menyetujui kondisi dan biaya terbaik. Opsi kedua adalah membeli Imagination Technologies. Tetapi dengan ini, proyek sampingan yang tidak perlu (jalur MIPS) akan datang, dan Apple telah melewatkan kesempatan seperti itu di tahun 2016. Tetapi Apple dapat melanjutkan pengembangan GPU-nya sendiri, yang akibatnya akan mengarah pada dominasi atas Imagination Technologies. Perusahaan harus memutuskan apakah mereka dapat melakukan yang lebih baik sendiri, tetapi sejauh ini mereka sangat baik dalam mencapai kualifikasi kelas dunia di bidang baru.

Referensi


[1] Alex Kan dan Fiona, Advanced Metal Shader Optimization. WWDC 2016. Setelah dan dua
[2] PowerVR Series6 Compiler Instruksi Set Referensi. 17 Maret 2016
[3] Rekomendasi Kinerja PowerVR. 17 Maret 2016
[4] Kerangka Shaders Kinerja Logam

Source: https://habr.com/ru/post/id398851/


All Articles