Arsitektur Sistem Heterogen atau tentang pertemuan CPU dan GPU
Untuk waktu yang lama, pengembangan mikroelektronika terjadi di bawah moto "kurang dan lebih cepat." Proses teknis berkurang, elemen-elemen baru dari arsitektur x86 diperkenalkan (set ekstensi instruksi), frekuensi clock dari inti komputasi ditingkatkan. Ketika pertumbuhan produktivitas "kasar" bertumpu pada faktor-faktor ekonomi dan fisik, berbagai metode paralelisasi perhitungan menjadi populer. Pada saat yang sama, tidak hanya CPU yang berkembang yang menunjukkan kinerja yang baik dalam kalkulasi single-threaded dan kompleks, tetapi juga GPU yang mampu dengan cepat melakukan sejumlah besar tugas serupa dan sederhana yang sulit diberikan kepada prosesor konvensional.
Hari ini kita memasuki era baru dalam pengembangan chip yang bertanggung jawab untuk komputasi di hati desktop, server, perangkat seluler dan elektronik yang dapat dipakai. Dengan menggabungkan pendekatan pemrosesan informasi pada CPU dan GPU, kami mengembangkan arsitektur baru yang terbuka, yang tanpanya implementasi lebih lanjut dari hukum Moore yang sama tampaknya sulit. Memenuhi HSA - Arsitektur Sistem Heterogen.Saat sejarah
Untuk memahami sepenuhnya bagaimana HSA, di satu sisi dekat, dan di sisi lain, itu melampaui arsitektur solusi modern, mari kita lihat sejarahnya. Bahkan jika kita membuang teknologi lampu selama puluhan tahun, dan mulai dari tahun 1950-an, sejak saat transistor muncul dalam mikroelektronika, ceritanya sedemikian rupa sehingga Anda dapat menulis artikel terpisah. Mari kita lihat secara singkat "tonggak" utama industri prosesor, dan sangat sedikit tentang sejarah kartu video.Pada awal teknik komputer, CPU cukup sederhana. Faktanya, semua operasi dilakukan untuk menambah angka dalam sistem biner. Ketika diminta untuk mengurangi, yang disebut " Kode terbalik": Mereka sederhana dan mudah dipasang" besi ", tanpa memerlukan kelezatan arsitektur paling rumit yang menerapkan pengurangan angka" jujur ". Untuk setiap model komputer, program ditulis secara terpisah hingga 1964 datang.
Sistem ibm / 360Pada tahun 1964, IBM merilis System / 360, sebuah komputer yang mengubah cara kami membuat prosesor. Kemungkinan besar, dialah yang mendapat kehormatan memperkenalkan konsep seperti arsitektur sistem. Hanya karena sebelum dia tidak ada "sistem". Faktanya adalah bahwa sebelum System / 360 semua komputer dari 50-an dan 60-an hanya bekerja dengan kode program yang ditulis khusus untuk mereka. IBM, di sisi lain, mengembangkan set instruksi pertama, yang didukung dalam berbagai konfigurasi (dan kinerja), tetapi sistem / arsitektur 360 yang sama. By the way, di komputer yang sama, byte untuk pertama kalinya menjadi 8-bit. Sebelum itu, di hampir semua komputer populer, itu terdiri dari enam bit.Inovasi besar kedua di tahun 60-an adalah pengembangan DEC. Di komputer PDP-8 mereka, mereka menggunakan arsitektur yang sangat sederhana untuk saat itu, yang hanya berisi empat register masing-masing 12 bit dan sedikit lebih dari 500 blok CPU. Mereka "transistor" yang sudah diukur pada tahun 1970-an oleh ribuan, dan oleh miliaran pada tahun 2000-an. Kesederhanaan ini dan penciptaan oleh IBM konsep semacam itu sebagai "set instruksi" dan menentukan arah pengembangan teknologi komputer selanjutnya.Ledakan mikroelektronika dimulai pada 70-an. Semuanya dimulai dengan produksi prosesor single-chip pertama: banyak perusahaan kemudian memproduksi chip di bawah lisensi, dan kemudian memperbaikinya, menambahkan instruksi baru dan memperluas kemampuan.Sejak pertengahan 70-an, pasar prosesor 8-bit telah penuh dan, menjelang akhir dekade ini, solusi 16-bit yang terjangkau muncul di komputer, membawa serta arsitektur x86, yang (walaupun dengan perbaikan signifikan) masih hidup dan sehat. Momok utama yang menghentikan pengembangan prosesor 16-bit pada waktu itu adalah "kurungan" dari produsen dalam produksi yang disebut mendukung chip untuk arsitektur 8-bit. Bersama-sama mereka membuat apa yang kemudian disebut jembatan "utara" dan "selatan".Pada awal 80-an, lelah berjuang dengan inersia pasar, banyak produsen memindahkan bagian dari "chip pendukung" kontrol di dalam prosesor itu sendiri. Selanjutnya, sesuatu dari prosesor akan pergi ke chipset dari motherboard dan kemudian kembali lagi, tetapi bahkan kemudian, arsitektur seperti itu agak mirip dengan SoCs modern.Bagian tengah dan akhir tahun 80-an berlalu di bawah bendera transisi ke memori 32-bit dan core prosesor 32-bit. Hukum Moore bekerja seperti sebelumnya: jumlah transistor tumbuh, frekuensi clock dan kinerja prosesor "kasar" meningkat.Pada tahun 1991, prosesor AMD Am386DX dan Am386SX melihat cahaya, kinerjanya sebanding dengan sistem generasi berikutnya (486). Am386SX dianggap oleh banyak orang sebagai pengembangan independen pertama perusahaan dan titik awal selama hampir 15 tahun dominasi di pasar PC rumahan dan workstation berkinerja tinggi. Ya, itu secara arsitektur merupakan tiruan dari chip i368SX, tetapi ia memiliki proses teknis yang lebih rendah, efisiensi energi 35% lebih baik, dan pada saat yang sama ia bekerja pada frekuensi clock yang lebih tinggi daripada nenek moyangnya, tetapi lebih murah.
Tahun sembilan puluhan sendiri cukup kaya baik dalam peristiwa di bidang mikroelektronika maupun dalam pertumbuhan pasar yang cepat. Di tahun 90-an AMD mulai dianggap sebagai salah satu pemain serius di pasar, karena prosesor kami dalam hal harga dan rasio kinerja sering membuat pesaing mereka keluar dari Intel Pentium, terutama di segmen rumah. Serangkaian instruksi yang diperluas (MMX / 3DNow!), Munculnya cache level kedua, penurunan agresif dalam teknologi proses, peningkatan kecepatan clock ... dan sekarang milenium baru sudah ada di halaman.Pada tahun 2000, prosesor AMD untuk pertama kalinya di dunia melewati batas pada 1 GHz, dan sedikit kemudian, arsitektur K7 yang sama juga mengambil ketinggian baru - 1,4 GHz.Pada akhir 2003, kami merilis prosesor baru berdasarkan arsitektur K8, yang berisi tiga inovasi penting: pengalamatan memori 64-bit, pengontrol memori terintegrasi, dan bus HyperTransport, yang menyediakan bandwidth luar biasa pada waktu itu (hingga 3,2 GB / dtk).Pada tahun 2005, prosesor dual-core pertama kali muncul (Intel memiliki dua core kristal terpisah pada satu substrat, AMD memiliki dua core di dalam satu kristal, tetapi dengan memori cache terpisah).Setelah beberapa tahun pembangunan alam, arsitektur K8 digantikan oleh yang baru (K10). Jumlah core pada satu chip dalam konfigurasi maksimum meningkat menjadi enam, cache umum dari level ketiga muncul. Dan pengembangan lebih lanjut lebih kuantitatif dan kualitatif daripada revolusioner. Lebih megahertz, lebih banyak core, optimisasi yang lebih baik, konsumsi daya yang lebih rendah, proses produksi yang lebih baik, peningkatan unit internal seperti prediktor cabang, pengontrol memori dan dekoder instruksi.Apa yang menarik minat kami dalam evolusi GPU (sebagai bagian dari artikel HSA) dapat dijelaskan dengan sangat singkat. Dengan semakin banyaknya komputer sebagai solusi pekerjaan dan hiburan berbasis rumah yang universal, permainan komputer semakin populer. Bersamaan dengan itu, kemungkinan grafik 3D tumbuh, membutuhkan lebih banyak “infus” otot dalam menghadapi akselerator video. Penggunaan mikroprogram khusus dan shader memungkinkan untuk menerapkan pencahayaan realistis dengan darah yang relatif sedikit dalam grafik 3D. Awalnya, prosesor shader dibagi menjadi yang vertex dan pixel (yang pertama bertanggung jawab untuk bekerja dengan geometri, yang terakhir untuk tekstur), kemudian arsitektur shader terpadu dan, dengan demikian, prosesor shader universal muncul yang dapat mengeksekusi kode untuk vertex dan pixel shader.GPGPU, komputasi untuk keperluan umum pada akselerator grafis dapat diimplementasikan menggunakan standar terbuka dan OpenCL, atau dialek agak disederhanakan dari C.Sejak itu, dari inovasi utama dalam GPU, kami hanya dapat menyebutkan tampilan Mantle API tingkat rendah, yang memungkinkan Anda mengakses kartu grafis AMD tentang hal itu pada tingkat yang sama dengan akses ke akselerator grafis di dalam konsol PS4 dan Xbox One) dan peningkatan eksplosif dalam kapasitas memori GPU dalam dua tahun terakhir.
Ini adalah akhir dari cerita, sekarang saatnya untuk beralih ke yang paling menarik: HSA.Apa itu HSA?
Saya ingin memulai dengan fakta bahwa HSA, pertama-tama, adalah platform terbuka atas dasar di mana produsen mikroelektronika dapat membangun produk mereka (terlepas dari serangkaian instruksi yang digunakan) yang mematuhi prinsip-prinsip tertentu dan aturan umum.Pada saat yang sama, HSA adalah arsitektur prosesor yang menggabungkan perhitungan skalar pada core CPU klasik, komputasi paralel paralel pada GPU dan bekerja dengan pemrosesan sinyal pada modul DSP, dan menghubungkannya menggunakan akses yang koheren ke RAM. Artinya, seluruh sejarah produksi prosesor dan video di HSA bertemu pada satu titik: hampir 50 tahun kemajuan di bidang mikroelektronika telah mengarah pada penciptaan kombinasi logis dari aspek terbaik dari berbagai sistem.Pengembangan arsitektur dan prosesor x86 memungkinkan untuk membuat modul prosesor yang sangat efisien yang menyediakan tugas umum dan konsumsi daya yang rendah.Penyatuan prosesor shader di dalam inti GPU dan penyederhanaan umum pemrograman untuk sistem dengan sejumlah besar modul pelaksana paralel telah memberi jalan kepada GPGPU dan menggunakan kekuatan pemrosesan kartu video di area-area di mana akselerator perangkat keras terpisah sebelumnya digunakan, yang belum memenangkan pangsa pasar nyata sehingga tetap bertahan.
Pengontrol memori terintegrasi, bus PCIe dan sistem I / O memberikan akses memori transparan untuk berbagai modul HSA.Akhirnya, DSP bawaan memungkinkan Anda untuk menghapus beban dari CPU dan GPU saat bekerja dengan konten video dan audio, karena ini berbasis perangkat keras pada pekerjaan pengodean dan pengodean ulang sinyal yang sesuai.Semua modul ini bersama-sama mencakup seluruh spektrum tugas modern, dan HSA memungkinkan Anda untuk mengajarkan program secara transparan dan mudah untuk bekerja dengan berbagai kemampuan perangkat keras yang tersedia menggunakan alat klasik seperti bahasa seperti Java dan C ++.Alasan untuk membuat HSA
Realitas modern (penyebaran elektronik yang dapat dipakai dan mobile, masalah ekonomi dan lingkungan) telah menciptakan tren tertentu dalam pengembangan mikroelektronika: mengurangi konsumsi energi semua perangkat, baik smartphone atau server, meningkatkan produktivitas, meningkatkan pekerjaan dengan pengenalan pola.Yang pertama, pada prinsipnya, bisa dimengerti. Semua orang ingin gadget bekerja lebih lama, kasingnya tidak tebal dengan Big Mac, dan tidak dipanaskan seperti wajan di atas kompor. Pemilik pusat data memiliki banyak masalah untuk menghilangkan panas dan memastikan daya tidak terputus, untuk memuatnya dengan watt ekstra dari paket panas berarti untuk meningkatkan biaya layanan mereka. Hosting yang lebih mahal - lebih banyak iklan pada sumber daya favorit Anda, lebih banyak beban CPU pada perangkat, konsumsi daya yang lebih tinggi, masa pakai baterai yang lebih sedikit.Peningkatan produktivitas hari ini hanya diterima begitu saja. Orang-orang terbiasa dengan kenyataan bahwa sejak tahun 70-an, prosesor telah memecahkan rekor kinerja setiap tahun, permainan menjadi lebih indah, sistem dan perangkat lunak menjadi lebih kompleks (dan pada saat yang sama tidak kehilangan kecepatan visualnya), dan alat programmer modern mengandung lebih banyak lapisan abstraksi besi , yang masing-masing membutuhkan kinerja nyata.Nah, perkembangan modern di bidang asisten cerdas, asisten virtual, dan prospek pengembangan kecerdasan buatan hanya membutuhkan pengenalan normal ucapan manusia, ekspresi wajah, gerakan, yang, pada gilirannya, membutuhkan peningkatan kinerja langsung dan optimalisasi operasi pengodean audio dan audio aliran video.Semua masalah ini akan diselesaikan dengan arsitektur perangkat keras universal yang diimplementasikan dalam bentuk SoC, dan menggabungkan pesona CPU dan GPU klasik, yang secara kompeten mendistribusikan operasi serial dan paralel antara modul-modul yang mampu melakukan tugas-tugas terkait dengan paling efisien.Tetapi bagaimana cara mengajarkan perangkat lunak agar bekerja dengan semua kemampuan komputasi yang luar biasa ini?Fitur utama dari sistem heterogen
Programmer seharusnya tidak memiliki masalah dalam mengakses kemampuan komputasi dari sistem seperti itu. Untuk melakukan ini, HSA memiliki sejumlah fitur utama yang menyederhanakan pekerjaan pengembang perangkat lunak dengannya dan membawa HSA lebih dekat ke sistem klasik dalam hal pengembangan:- Pengalamatan terpadu untuk semua prosesor;
- Koherensi memori penuh;
- Operasi di sistem memori halaman;
- Mode kirim kustom;
- Manajemen antrian di tingkat arsitektur;
- Dukungan bahasa tingkat tinggi untuk prosesor komputasi - GPU;
- Perubahan konteks dan multitasking preemptive.
Pengembang aplikasi tidak perlu memahami bahasa pemrograman tingkat rendah: komponen standar, bahasa perantara sederhana, antarmuka interaksi dan perangkat keras tersedia untuk pengembang, dan memori yang koheren dan bagaimana tugas akan didistribusikan antara modul komputasi yang mudah disembunyikan "di bawah tenda".Peran pengalamatan memori terpadu hampir tidak bisa ditaksir terlalu tinggi. Secara formal, tanpa itu, tidak akan ada HSA. Tidak masalah di mana data berada di memori, berapa inti, modul, unit komputasi yang Anda miliki. Anda memindahkan pointer dan melakukan perhitungan, dan jangan "mentransfer" byte dari satu aktuator ke yang lain. Beban cache berkurang, dan kontrol prosesor itu sendiri disederhanakan. Abstraksi memori pada level platform akan memungkinkan penggunaan kode yang sama untuk platform yang berbeda, menyederhanakan kehidupan pengembang perangkat lunak.Kesulitan OpenCL dan C ++ AMP
Pemrograman untuk sistem paralel bukanlah tugas yang mudah. Untuk membuat hidup lebih mudah bagi pengembang, kami telah mengembangkan perpustakaan Bolt, yang menyediakan pola efektif untuk templat yang paling umum digunakan untuk menyortir, menyusut, memindai, dan mengubah data menggunakan komputasi paralel.Untuk mempercepat kode Java tanpa menulis ulang pada OpenCL, pustaka AparApi khusus (open source) digunakan, yang memungkinkan Anda untuk mengkonversi bytecode Java ke OpenCL dengan dukungan untuk komputasi paralel pada inti CPU dan GPU.Di masa depan, direncanakan untuk menyelesaikan Aparapi, pertama mengasosiasikannya dengan HSAIL, kemudian menambahkan pengoptimal khusus. Pada akhirnya, HSA harus bekerja dengan akselerasi heterogen langsung melalui mesin Java, transparan bagi pengguna dan programmer.Kami telah mengatakan bahwa HSA adalah platform terbuka. API dan spesifikasi disediakan gratis oleh pengembang, dan HSA itu sendiri tidak tergantung pada set instruksi dari CPU atau GPU.Untuk memastikan kompatibilitas solusi perangkat keras dari berbagai vendor, kami menciptakan kit ISA kami sendiri: HSAIL (HSA Intermediate Layer), yang memastikan pengoperasian perangkat lunak terlepas dari apa yang ada di dalam solusi HSA. Intermediate Layer sendiri mendukung bekerja dengan pengecualian, fungsi virtual, model memori dari bahasa modern, sehingga tidak ada masalah yang diharapkan dengan dukungan untuk C ++, Java dan .Net, sementara pengembang dapat mengakses perangkat keras secara langsung dan menggunakan perpustakaan optimasi yang sudah jadi. HSA, yang secara mandiri akan mendistribusikan tugas dan merampingkan komunikasi dengan perangkat keras, menyederhanakan pekerjaan programmer.
Komponen perangkat keras
Bukan AMD saja yang hidup HSA. Penting bagi pengembang bahwa kode yang pernah ditulis bekerja dengan baik pada perangkat yang berbeda. Seseorang menggunakan bahasa pemrograman tingkat tinggi seperti C ++ atau Java untuk ini, tetapi kami sarankan bekerja di level yang lebih rendah. Di satu sisi, aplikasi klasik dapat berjalan di perangkat HSA seolah-olah tidak ada yang berubah. Sistem operasi akan memberikan aplikasi lama dengan akses yang jelas dan mudah ke prosesor, memori, dan inti video. Di sisi lain, HSAIL memungkinkan Anda untuk mengekstrak semua daya dari SoC baru, dan pengembang dapat membuat aplikasi berkinerja tinggi dan hemat sumber daya semudah untuk OS klasik dan bundel perangkat keras.Sekarang HSA FoundationAda tujuh perusahaan yang merupakan pendiri organisasi ini: AMD, ARM, Teknologi Imajinasi, MediaTek, Texas Instruments, Samsung Electronics, dan Qualcomm®.Standarisasi di bidang mendistribusikan tugas di seluruh core komputasi, mentransfer data dan pointer memori, dan bekerja dengan elemen utama platform menggunakan HSAIL memungkinkan vendor untuk menggunakan pengalaman mereka di bidang besi, dan pengembang tidak perlu khawatir tentang apa yang ada di bawah tenda. Aplikasi yang berada di bawah HSAIL akan berfungsi pada platform apa pun.Pro dan kontra dari solusi perangkat keras berbasis HSA
Arsitektur heterogen memungkinkan Anda untuk menggabungkan kemampuan CPU dan GPU, dan ini adalah keunggulan utamanya. Pada saat yang sama, HSA menangani energi yang dikonsumsi, tanpa memuat prosesor dengan perhitungan yang jauh lebih efisien untuk dijalankan pada GPU.
Simulasi fisika solid digunakan di mana-mana saat ini: mulai dari permainan komputer dan paket 3D hingga CAD, simulator untuk dokter, militer, dan atlet. Bekerja pada CPU dari sistem seperti itu seringkali tidak optimal, karena membutuhkan banyak perhitungan tetapi sederhana. Dan ketika jumlah objek yang berinteraksi melebihi ratusan atau bahkan ribuan, CPU klasik tidak mampu memberikan jumlah perhitungan yang sesuai. Tetapi arsitektur GPU cocok untuk perhitungan seperti itu sebaik mungkin. Dan pengalamatan terpadu, memori halaman, dan koherensi lengkap memungkinkan Anda mentransfer perhitungan ke perangkat keras yang sesuai dengan sumber daya minimal dan sumber daya pengembang.Kinerja HSA pada tugas-tugas umum seringkali lebih tinggi daripada CPU klasik dan lebih tinggi dari pada CPU + GPU bundel karena fakta bahwa tidak peduli seberapa ideal driver, menyalin data dari memori bersama ke memori GPU dan mengirim kembali hasil perhitungan dapat mengambil lebih banyak waktu daripada perhitungan sendiri.HSA sudah lebih cepat dari sistem klasik, tetapi bisa bekerja lebih baik. Sebenarnya, satu-satunya kekurangan saat ini dari sistem adalah baru. Popularitas baru saja mulai tumbuh, model-model baru besi dalam kondisi ekonomi yang paling tidak menguntungkan memasuki pasar lebih lambat, dan popularitas HSA tidak tumbuh pada kecepatan yang sama seperti yang kita semua inginkan. Segera setelah pengembang merasakan, memahami manfaat HSA dan kemudahan pengembangan untuk sistem baru dan mulai secara native mendukung arsitektur heterogen dalam aplikasi mereka, kita akan melihat masa kejayaan aplikasi baru berkinerja tinggi untuk server, komputer klasik, dan perangkat seluler. Source: https://habr.com/ru/post/id387439/
All Articles