Ketika kode mesin benar-benar dijalankan oleh perangkat keras dan CPU, seperti apa bentuknya?
Apakah akan terlihat seperti biner, seperti dalam instruksi yang diwakili oleh satu dan nol, atau apakah itu sesuatu yang terdiri dari digit heksadesimal di mana opcodes adalah byte yang disajikan sebagai angka hex yang dapat dipecah kembali menjadi angka biner, seperti bytecode?
computer-architecture
cpu
Tim Hardly
sumber
sumber
Jawaban:
Jawaban terbaik yang bisa saya berikan adalah, itu tidak benar-benar "terlihat" seperti apa pun. Instruksi yang saat ini dijalankan oleh CPU diwakili oleh serangkaian kabel, beberapa di antaranya memiliki tegangan tinggi, beberapa di antaranya memiliki tegangan rendah.
Anda dapat mengartikan tegangan tinggi dan rendah sebagai nol dan satu, tetapi Anda juga dapat menginterpretasikan kelompok tegangan tinggi dan rendah dengan baik sebagai digit heksadesimal, atau sebagai instruksi perakitan seperti
ADD $0 $1
(yang paling dekat dengan bagaimana CPU mengartikannya). Angka-angka dan mnemonik ini sendiri adalah kemudahan bagi manusia untuk membaca; Secara internal, itu tidak lain adalah tegangan pada kabel.Dari opsi-opsi ini, biner adalah "paling dekat dengan logam", di mana nol dan yang memetakan langsung ke tegangan tinggi dan rendah pada kabel. Tapi tidak ada yang lain yang salah, dan mereka sering lebih berguna: ada alasan orang melihat hex-dumps executable, tetapi hampir tidak pernah binary-dumps.
sumber
"Terlihat seperti" menyiratkan metafora. Jika kita mengambil "apa yang akan terlihat seperti" secara harfiah, itu akan terlihat seperti sepotong silikon terukir mewah yang duduk di motherboard-nya. Jelas metafora adalah tujuannya. Untuk membangun metafora, kita perlu melihat apa itu sebenarnya. Lalu kita bisa membangun metafora yang bisa diterima. Ini agak panjang, tapi untungnya, itu berakhir dengan metafora video untuk Anda.
Kode mesin sebenarnya disimpan dalam memori sebagai bit. Chip memori biasanya DRAM , yang menyimpan bit-bit itu sebagai voltase melintasi kapasitor dan elektron. Keduanya terhubung - sulit untuk berbicara tentang tegangan tanpa elektron. Kadang-kadang nyaman untuk berbicara tentang satu atau yang lain, tetapi memahami bahwa di mana seseorang pergi, yang lain mengikuti.
Perjalanan kode mesin dimulai dengan "ambil." Pola voltase tertentu diterapkan pada kabel chip RAM yang menunjukkan bahwa rangkaian bit khusus ini harus dikirim ke CPU. Mengapa? Tidak tahu, tidak peduli. Biasanya sinyal itu dikirim karena CPU menyelesaikan instruksi terakhir dan meminta yang baru sebagai respons naluriah, seperti anjing yang meminta perlakuan kedua setelah Anda memberinya yang pertama. Proses ini dimulai dengan beberapa tendangan primordial di celana yang disebabkan oleh ketidakstabilan alami dalam CPU. Ketika catu daya menerapkan tegangan konstan ke chip, kenaikan tegangan pada akhirnya menyebabkan CPU meletakkan voltase yang benar pada chip RAM untuk mendapatkan instruksi pertama (saya sedikit menggerakkan lapisan BIOS, karena itu tidak penting untuk ceritanya.
Memori modern mengalirkan data secara paralel. Ini berarti bit yang membentuk kode mesin dibagi menjadi "jalur" (32 atau 64 adalah umum) yang merupakan cara logis untuk mengatakan kabel 32/64 dari RAM ke CPU. Tegangan pada saluran tersebut dinaikkan dan diturunkan sesuai kebutuhan untuk mengirimkannya ke CPU.
Setelah di CPU itu bisa melakukan pekerjaannya. Ini adalah bidang mikroarsitektur , dan ini bisa rumit karena ini benar-benar industri yang bernilai miliaran dolar. Tegangan itu memengaruhi transistor, yang memengaruhi voltase lain, dengan cara yang dapat kami gambarkan sebagai "menambahkan bit" atau "perkalian." Mereka benar-benar semua hanya tegangan yang mewakili bit-bit itu, dengan cara yang sama kita dapat menuliskan string 5 karakter "2 + 2 = 4" pada selembar kertas dan mengatakan kita melakukan matematika. Pensil grafit bukan nomor dua. Itu hanya representasi fisik yang kami gunakan untuk nomor itu.
Jadi itulah yang dilakukan sistem sesungguhnya, pada tingkat yang sangat tinggi. Saya telah melewatkan dengan baik ... hampir semuanya ... tetapi cukup layak untuk dapat kembali ke pertanyaan Anda yang sebenarnya. Akan seperti apa [metaforis] itu?
Ketika itu terjadi, saya pikir Martin Molin mungkin telah membangun metafora terbaik, dengan Mesin Marmernya . Kode mesin dikodekan (dengan tangan) ke beberapa strip Lego Technics di tengah sebagai pasak, daripada tegangan pada kapasitor. Ini lebih seperti EPROM daripada DRAM, tetapi keduanya menyimpan data. Kelereng seperti elektron, digerakkan oleh voltase (atau gravitasi, dalam kasus kelereng). Dan ketika elektron bergerak, mereka menerapkan kekuatan ke gerbang yang melakukan sesuatu.
Mesinnya sederhana, dibandingkan dengan CPU modern, tetapi tidak terlalu buruk, sejauh metafora pergi. Dan itu menarik!
sumber
Lihat video ini , khususnya 1:00 hingga 1:17. Seperti itulah tepatnya ketika sebuah program berjalan di komputer. Dua baris lampu menunjukkan isi saat ini dari register alamat dan register data. PDP-11 tidak memiliki register instruksi, tetapi jika ada satu dan ada lampu di bagian depan untuk menunjukkan isinya, itu akan terlihat hampir sama. 16 lampu - beberapa dari mereka menyala, beberapa dari mereka mati.
Jika Anda benar-benar menyukai lampu berkedip, Anda bisa memiliki lebih banyak lampu untuk menunjukkan isi saat ini dari enam register, penunjuk tumpukan, penghitung program ... untuk 32768 lampu selanjutnya Anda bisa memiliki lampu untuk setiap bit cache. Anda bahkan dapat memiliki cahaya untuk setiap bit memori ... tapi itu benar-benar akan banyak lampu.
Ini adalah PDP11-70 yang beroperasi pada 15,2 MHz, dan setiap instruksi membutuhkan sekitar 1,5 mikrodetik untuk dijalankan. Mata manusia dapat mendeteksi perubahan hingga 1/10 detik, dan pada saat itu, PDP-11 dapat menjalankan 60.000 instruksi. Pada dasarnya, semuanya kabur.
sumber
Perancang perangkat keras menerapkan dan menguji (dan menguji dan menguji) prosesor sebenarnya menggunakan model visual untuk melihat apa yang sedang dilakukan desain mereka. Sebagian besar (jika tidak semua) alat simulasi HDL menampilkan tampilan gelombang dari semua register dan kabel untuk memudahkan proses debug. Tangkapan layar di bawah (diambil dari sini ) menunjukkan gelombang ini dari simulator VCS untuk prosesor RISC-V yang menjalankan beberapa instruksi.
Ini adalah contoh yang cukup sederhana yang menunjukkan sebagian kecil dari logika yang terlibat dalam desain prosesor penuh. Anda bisa membuka tampilan ini untuk seluruh prosesor dan menonton data menyebar melalui logika. Jika Anda ingin melihat kode mesin berjalan, seperti yang Anda sebutkan, Anda bisa melihat gelombang untuk register instruksi atau bus yang digunakan prosesor untuk membaca instruksi dari memori. Sebagian besar pemirsa gelombang memiliki opsi tampilan fleksibel untuk bus dan register yang memungkinkan Anda menampilkan nilainya sebagai biner, hex, oktal, dan bahkan sebagai label enum. Dalam beberapa, Anda bahkan dapat menentukan fungsi Anda sendiri untuk memetakan pola bit melakukan nilai yang ditampilkan.
Perlu dicatat bahwa ini hanyalah representasi dari simulasi prosesor. Tidak ada cara untuk mendapatkan tampilan seperti ini untuk chip prosesor yang sudah dibuat.
sumber
Bayangkan seorang buta yang tersandung di gang di bawah konstruksi. Di mana-mana ada lubang dan celah, jadi secara alami ia harus jatuh. Bukan orang buta ini, karena ia memiliki gulungan kertas dengan instruksi, kapan harus menunggu, kapan harus pindah, ke mana harus pindah dan bagaimana memanipulasi lingkungannya untuk mencapai ujung jalan. Itulah yang dimaksud dengan kumpulan, daftar instruksi yang diikuti secara membabi buta - mereka hanya masuk akal untuk gang ini dan untuk orang buta ini. Secara teori Anda bahkan dapat merekonstruksi model 3d dari instruksi saja (Mengurai).
Setiap perubahan pada platform, buatlah itu perlu untuk mengkompilasi ulang instruksi untuk orang buta. Anda perlu mengetahui perangkat keras (tata letak situs konstruksi), instruksi niat yang diketik manusia (Kode Tingkat Tinggi) seperti "Saya ingin Anda melompati semua pagar yang Anda temui berturut-turut sampai Anda memiliki 12 pagar di belakang Anda" dan kemampuan pria buta (CPU). Apakah dia memiliki ingatan jangka pendek, kemampuan untuk melakukan beberapa hal sekaligus?
Mengambil semua informasi ini dan membentuk scroll instruksi yang koheren adalah tugas kompiler.
Jadi bisakah saya menggambarkan bagaimana suatu program terlihat? Tidak. Tetapi bisakah kita menggambarkan bagaimana rasanya menjalankannya? Ya, itu akan terasa seperti melompat dan berlari, seperti mirror-edge tanpa melihat sesuatu, mengikuti daftar instruksi yang tepat, di mana pun itu membawa Anda.
sumber