Katakanlah saya menggunakan komputer, komputer modern tipikal apa pun kurang lebih. Driver perangkat bertanggung jawab untuk semua yang saya lihat di layar saya, termasuk tepat saat saya mengetik ini layar diperbarui (ini, tentu saja, dalam lingkup OS, seperti Windows).
Mari kita turunkan ke tingkat di mana perangkat keras tidak peduli jika ada kernel atau tidak, dan hanya mengambil instruksi.
Pada dasarnya, bagaimana GPU "tahu" persis bagaimana melakukan semuanya? Apakah pengemudi pada dasarnya mengendalikan setiap fungsi tingkat sirkuit sangat kecil, intrinsik, atau perangkat keras mungkin atau diperlukan untuk menghitung data biner untuk tampilan menggunakan instruksi khusus yang disediakan oleh pengemudi?
Jika demikian, apakah GPU menggunakan bahasa "khusus" atau "perakitan" untuk memahami instruksi yang dikirim kepadanya seperti halnya CPU?
Saya memiliki terlalu banyak celah dalam pengetahuan saya, dan ada "misteri" yang tidak menyenangkan ini di belakang GPU dan mengaksesnya secara langsung melalui perangkat keras.
Misalnya, GPU dan CPU harus dapat terhubung entah bagaimana, sehingga dimungkinkan untuk mengakses GPU melalui perakitan CPU dan mengimplementasikan bus data / alamat yang benar. Tidak mungkin vendor perangkat tidak dapat mengakses GPU di luar driver, karena driver juga mengkompilasi kode, dan GPU, sebagai sirkuit yang dapat diprogram, harus bekerja dengan instruksi biner.
Saya telah menanyakan pertanyaan-pertanyaan semacam ini dan mereka dihapus dengan sangat cepat tanpa jawaban mengapa di banyak situs, jadi apa misteri / rahasia besarnya di sini? Ini adalah perangkat keras pada motherboard yang diakses seperti yang lain.
Jadi benar-benar ... dengan asumsi ini adalah pertanyaan "ok" di sini mengenai perangkat lunak dan perangkat keras, siapa pun dapat langsung mengakses GPU tanpa file khusus vendor, karena file tersebut tidak ajaib.
Jadi bagaimana GPU "diprogram" dari perspektif perangkat keras langsung, tanpa logam, pada tingkat spesifik perangkat keras?
Jawaban:
Tidak, perangkat memiliki IC sendiri yang mengontrol semua aspek level perangkat keras dari fungsi perangkat, dan mereka berinteraksi dengan prosesor pusat yang mengoordinasikan aspek-aspek pada perangkat serta menyediakan antarmuka pemrograman tingkat tinggi yang dapat digunakan untuk mengakses, membaca dari, menulis ke, dan mengontrol perangkat.
Iya dan tidak. Seperti kebanyakan perangkat, kartu video menggunakan standar untuk menyederhanakan masalah. Mereka menggunakan standar seperti VESA untuk mengakses fungsi reguler seperti video waktu boot, atau CUDA untuk mengakses fungsi pemrograman GPU. Selain itu, program dapat mengakses fungsi yang tidak standar, atau bergantung pada perangkat secara langsung menggunakan kode mesin (seringkali C dikompilasi ke assembler) bersamaan dengan dokumentasi pemrograman perangkat (yang tersedia dari situs web adaptor).
Driver mengakses perangkat secara langsung, itulah sebabnya mereka memiliki akses khusus (program tingkat pengguna reguler tidak diperbolehkan mengakses perangkat keras secara langsung di Vista + untuk alasan keamanan dan stabilitas). Akses perangkat menggunakan port, DMA ( Akses Memori Langsung ), dan pemetaan memori .
Pengemudi dapat membaca dan menulis perangkat dengan instruksi CPU biasa dengan mengakses port yang dipetakan memori dan semacamnya. Sebagai contoh yang mudah dipahami, Anda dapat menempatkan karakter di layar dalam mode teks dengan menulis ke "memori" di alamat B8000. Alamat ini bukan RAM, melainkan dipetakan agar sesuai dengan memori kartu video, jadi menulis padanya akan menulis ke layar. Demikian juga, Anda dapat menulis layar dengan meletakkan karakter yang ingin Anda tulis di
AL
registri,0x09
dalamAH
register, dan kemudian memanggil BIOS interrupt0x10
. Fungsi yang lebih maju tidak berbeda; Anda dapat membaca dan menulis memori adaptor, memanggil fungsi-fungsi pada chip-nya, dan sebagainya menggunakan inetrface apa pun yang diekspos dan didokumentasikan oleh perangkat.Hanya untuk fitur yang memenuhi standar, tetapi yang lainnya (yaitu, hal-hal yang lebih maju), Anda harus berkonsultasi dengan dokumen pemrograman pabrikan.
Melalui banyak lapisan:
sumber
Saya bukan orang yang jenius dalam arsitektur komputer, tetapi saya akan mencoba menangani pertanyaan Anda dengan poin, yang terbaik dari pengetahuan saya.
Memang benar, terutama karena interaksi langsung dengan GPU tidak mudah diimplementasikan. Oleh karena itu pengembangan kerangka kerja grafis seperti DirectX dan OpenGL.
Definisi praktis dari Wikipedia ini menjelaskan hal ini secara lebih rinci:
GPU adalah mikroprosesor. Dengan demikian, mereka memproses. Mereka memproses data yang dimasukkan dari CPU (yaitu posisi elemen) ke tampilan yang tepat. Mereka "tahu" bagaimana melakukan segalanya karena mereka dibuat dengan cara itu dan sekelompok besar orang sepakat tentang cara yang tepat untuk mengirim data ke dan dari GPU.
Pikirkan driver tampilan sebagai penyangga, atau proxy. Bayangkan Anda adalah jendela program dan pengguna menggerakkan Anda. Anda meminta GPU untuk menyegarkan layar. Tetapi ketika GPU berbicara Klingon dan Anda berbicara Vulcan , pengemudi menerima perintah Anda, menerjemahkannya ke GPU yang pada gilirannya melakukan apa yang Anda perintahkan.
Dari Wikipedia :
Ada contoh ini, dan ingat bahwa masing-masing produsen (NVIDIA, ATI) memiliki set instruksi mereka sendiri.
Juga, ada OpenCL dan banyak cara lain untuk, dengan cara, secara langsung memprogram instruksi ke GPU.
Semua ini harus menjawab pertanyaan Anda, sampai taraf tertentu.
sumber