HTG Menjelaskan Bagaimana Sebenarnya CPU Bekerja?
Sebagian besar hal dalam komputer relatif mudah dipahami: RAM, penyimpanan, periferal, dan perangkat lunak semuanya bekerja bersama untuk membuat fungsi komputer. Tetapi jantung dari sistem Anda, CPU, sepertinya ajaib bahkan bagi banyak orang teknologi. Di sini, kami akan melakukan yang terbaik untuk memecahnya.
Sebagian besar penelitian untuk artikel ini berasal dari "But How Do It Know?" Oleh J. Clark Scott. Ini adalah bacaan yang fantastis, masuk jauh lebih dalam dari artikel ini, dan layak bernilai beberapa dolar di Amazon.
Satu catatan sebelum kita mulai: CPU modern adalah urutan besarnya lebih kompleks daripada apa yang kita uraikan di sini. Hampir mustahil bagi satu orang untuk memahami setiap nuansa chip dengan lebih dari satu miliar transistor. Namun, prinsip-prinsip dasar tentang bagaimana semuanya cocok tetap sama, dan memahami dasar-dasarnya akan memberi Anda pemahaman yang lebih baik tentang sistem modern.
Mulai dari Kecil
Komputer beroperasi dalam biner. Mereka hanya memahami dua kondisi: hidup dan mati. Untuk melakukan perhitungan dalam biner, mereka menggunakan apa yang disebut transistor. Transistor hanya memungkinkan sumber arus mengalir melaluinya jika ada arus melintasi gerbang. Pada dasarnya, ini membentuk saklar biner, yang memotong kawat tergantung pada sinyal input kedua.
Komputer modern menggunakan milyaran transistor untuk melakukan perhitungan, tetapi pada level terendah, Anda hanya perlu sedikit untuk membentuk komponen paling dasar, yang dikenal sebagai gerbang.
Gerbang Logika
Tumpuk beberapa transistor dengan benar, dan Anda memiliki apa yang dikenal sebagai gerbang logika. Gerbang logika mengambil dua input biner, melakukan operasi padanya, dan mengembalikan output. Gerbang OR, misalnya, mengembalikan true jika salah satu input benar. Gerbang AND memeriksa apakah kedua input benar, XOR memeriksa apakah hanya satu input yang benar, dan varian-N (NOR, NAND, dan XNOR) adalah versi terbalik dari gerbang dasar mereka.
Melakukan Matematika dengan Gates
Dengan hanya dua gerbang Anda dapat melakukan penambahan biner dasar. Diagram di atas menunjukkan setengah penambah, dibuat menggunakan Logicly, taman bermain online gratis untuk gerbang logika. Gerbang XOR di sini akan menyala jika hanya satu input yang aktif, tetapi tidak keduanya. Gerbang AND akan menyala jika kedua input aktif, tetapi tetap mati jika tidak ada input. Jadi jika keduanya aktif, XOR tetap mati, dan gerbang AND menyala, sampai pada jawaban yang benar dari dua:
Ini memberi kami pengaturan sederhana dengan tiga keluaran berbeda: nol, satu, dan dua. Tetapi satu bit tidak dapat menyimpan sesuatu yang lebih tinggi dari 1, dan mesin ini tidak terlalu berguna karena hanya memecahkan salah satu masalah matematika paling sederhana yang mungkin. Tetapi ini hanya setengah penambah, dan jika Anda menghubungkan keduanya dengan masukan lain, Anda mendapatkan penambah lengkap:
Penambah lengkap memiliki tiga input - dua angka untuk ditambahkan, dan "carry." Carry digunakan ketika angka terakhir melebihi apa yang dapat disimpan dalam satu bit. Penambah penuh akan ditautkan dalam rantai, dan barang bawaan diteruskan dari satu penambah ke yang berikutnya. Carry ditambahkan ke hasil gerbang XOR pada paruh pertama penambah, dan ada gerbang OR tambahan untuk menangani kedua kasus ketika sehingga perlu berada di.
Ketika kedua input aktif, carry menyala, dan mengirimkannya ke penambah penuh berikutnya dalam rantai:
Dan ini tentang serumit penambahan yang didapat. Pindah ke lebih banyak bit pada dasarnya hanya berarti lebih banyak penambah penuh dalam rantai yang lebih panjang.
Sebagian besar operasi matematika lainnya dapat dilakukan dengan tambahan; multiplikasi hanya penambahan berulang, pengurangan dapat dilakukan dengan beberapa inversi bit mewah, dan pembagian pengurangan hanya berulang. Dan sementara semua komputer modern memiliki solusi berbasis perangkat keras untuk mempercepat operasi yang lebih rumit, Anda secara teknis dapat melakukan semuanya dengan penambah penuh.
Bus, dan Memori
Saat ini, komputer kami tidak lebih dari kalkulator yang buruk. Ini karena ia tidak dapat mengingat apa pun, dan tidak melakukan apa pun dengan hasilnya. Yang ditunjukkan di atas adalah sel memori, yang dapat melakukan semua itu. Di bawah tenda, ia menggunakan banyak gerbang NAND, dan dalam kehidupan nyata bisa sangat berbeda tergantung pada teknik penyimpanan, tetapi fungsinya sama. Anda memberikan beberapa input, aktifkan bit 'tulis', dan itu akan menyimpan input di dalam sel. Ini bukan hanya sel memori, karena kami juga membutuhkan cara untuk membaca informasi darinya. Ini dilakukan dengan enabler, yang merupakan kumpulan gerbang AND untuk setiap bit dalam memori, semua terikat pada input lain, bit "baca". Bit menulis dan membaca sering disebut "set" dan "memungkinkan" juga.
Seluruh paket ini terbungkus dalam apa yang dikenal sebagai register. Register ini terhubung ke bus, yang merupakan kumpulan kabel yang mengelilingi seluruh sistem, terhubung ke setiap komponen. Bahkan komputer modern memiliki bus, meskipun mereka mungkin memiliki banyak bus untuk meningkatkan kinerja multitasking.
Setiap register masih memiliki bit tulis dan baca, tetapi dalam pengaturan ini, input dan output adalah hal yang sama. Ini sebenarnya bagus. Sebagai contoh. Jika Anda ingin menyalin konten R1 ke R2, Anda akan mengaktifkan bit baca untuk R1, yang akan mendorong konten R1 ke bus. Saat bit baca aktif, Anda akan mengaktifkan bit tulis untuk R2, yang akan menyalin konten bus ke R2.
Register juga digunakan untuk membuat RAM. RAM sering diletakkan dalam kisi-kisi, dengan kabel ada dua arah:
Decoder mengambil input biner dan menghidupkan kabel bernomor yang sesuai. Misalnya, "11" adalah 3 dalam biner, angka 2-bit tertinggi, sehingga decoder akan mengaktifkan kabel tertinggi. Di setiap persimpangan, ada register. Semua ini terhubung ke bus pusat, dan ke input tulis dan baca pusat. Input baca dan tulis hanya akan menyala jika kedua kabel yang melewati register juga aktif, secara efektif memungkinkan Anda memilih register yang akan digunakan untuk menulis dan membaca. Sekali lagi, RAM modern jauh lebih rumit, tetapi pengaturan ini masih berfungsi.
Jam, Stepper, dan Dekoder
Register digunakan di mana-mana dan merupakan alat dasar untuk memindahkan data dan menyimpan informasi dalam CPU. Jadi, apa yang menyuruh mereka untuk bergerak?
Jam adalah komponen pertama dalam inti CPU dan akan mati dan hidup pada interval yang ditentukan, diukur dalam hertz, atau siklus per detik. Ini adalah kecepatan yang Anda lihat diiklankan bersama CPU; chip 5 GHz dapat melakukan 5 miliar siklus per detik. Kecepatan clock seringkali merupakan metrik yang sangat baik untuk seberapa cepat CPU.
Jam memiliki tiga kondisi berbeda: jam dasar, jam aktif, dan jam yang diset. Jam dasar akan hidup selama setengah siklus, dan mati untuk setengah lainnya. Jam aktifkan digunakan untuk mengaktifkan register dan perlu dihidupkan lebih lama untuk memastikan bahwa data diaktifkan. Jam yang disetel harus selalu menyala bersamaan dengan jam yang diaktifkan, atau data yang salah bisa ditulis.
Jam terhubung ke stepper, yang akan dihitung dari satu ke langkah maksimal, dan mengatur ulang sendiri ke satu saat selesai. Jam ini juga terhubung ke gerbang AND untuk setiap register yang dapat ditulis oleh CPU:
DAN gerbang ini juga terhubung ke output dari komponen lain, dekoder instruksi. Decoder instruksi mengambil instruksi seperti "SET R2 TO R1" dan menerjemahkannya menjadi sesuatu yang dapat dimengerti oleh CPU. Ia memiliki register internal sendiri, yang disebut "Instruction Register," yang merupakan tempat operasi saat ini disimpan. Bagaimana tepatnya hal ini terjadi pada sistem yang Anda jalankan, tetapi setelah diterjemahkan, ia akan mengaktifkan set yang benar dan mengaktifkan bit untuk register yang benar, yang akan menyala sesuai dengan jam.
Instruksi program disimpan dalam RAM (atau cache L1 pada sistem modern, lebih dekat ke CPU). Karena data program disimpan dalam register, sama seperti setiap variabel lainnya, ia dapat dimanipulasi dengan cepat untuk melompat-lompat di sekitar program. Beginilah cara program mendapatkan strukturnya, dengan loop dan pernyataan if. Instruksi lompat menetapkan lokasi saat ini dalam memori yang dibaca oleh decoder instruksi dari ke lokasi yang berbeda.
Bagaimana Semuanya Datang Bersama
Sekarang, penyederhanaan berlebihan kami tentang cara kerja CPU selesai. Bus utama menjangkau seluruh sistem dan terhubung ke semua register. Penambah lengkap, bersama dengan sekelompok operasi lain, dikemas ke dalam Unit Logika Aritmatika, atau ALU. ALU ini akan memiliki koneksi ke bus, dan juga akan memiliki register sendiri untuk menyimpan nomor kedua yang beroperasi.
Untuk melakukan perhitungan, data program dimuat dari RAM sistem ke bagian kontrol. Bagian kontrol membaca dua angka dari RAM, memuat yang pertama ke dalam register instruksi ALU, dan kemudian memuat yang kedua ke dalam bus. Sementara itu, ALU mengirimkan kode instruksi yang memberi tahu apa yang harus dilakukan. ALU kemudian melakukan semua perhitungan dan menyimpan hasilnya dalam register yang berbeda, dimana CPU dapat membaca dan kemudian melanjutkan proses.
Kredit Gambar: Rost9 / Shutterstock