Kebanyakan hal di komputer relatif sederhana untuk dipahami: RAM, penyimpanan, periferal, dan perangkat lunak semuanya bekerja sama untuk membuat komputer berfungsi. Namun jantung sistem Anda, CPU, tampak seperti keajaiban bahkan bagi banyak orang teknologi. Di sini, kami akan melakukan yang terbaik untuk memecahnya.
Sebagian besar penelitian untuk artikel ini berasal “Tapi Bagaimana Ia Tahu?” oleh J. Clark Scott. Ini adalah bacaan yang fantastis, lebih mendalam daripada artikel ini, dan sepadan dengan beberapa dolar di Amazon.
Satu catatan sebelum kita mulai: CPU modern adalah lipat lebih kompleks daripada yang kami uraikan di sini. Hampir tidak mungkin bagi satu orang untuk memahami setiap nuansa chip dengan lebih dari satu miliar transistor. Namun, prinsip dasar tentang bagaimana semuanya cocok tetap sama, dan memahami dasar-dasarnya akan memberi Anda pemahaman yang lebih baik tentang sistem modern.
Memulai dari Kecil
Komputer beroperasi di biner . Mereka hanya memahami dua keadaan: hidup dan mati. Untuk melakukan perhitungan dalam biner, mereka menggunakan apa yang disebut transistor. Transistor hanya memungkinkan arus sumber mengalir melaluinya ke saluran pembuangan jika ada arus melintasi gerbang. Pada dasarnya, ini membentuk sakelar biner, yang memotong kabel tergantung pada sinyal input kedua.
TERKAIT: Apa itu Biner, dan Mengapa Komputer Menggunakannya?
Komputer modern menggunakan miliaran transistor untuk melakukan kalkulasi, 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 akan mendapatkan apa yang disebut gerbang logika. Gerbang logika mengambil dua masukan biner, melakukan operasi padanya, dan mengembalikan satu keluaran. Gerbang OR, misalnya, mengembalikan nilai true jika salah satu masukan benar. Gerbang AND memeriksa apakah kedua masukan benar, XOR memeriksa apakah hanya satu dari masukan yang benar, dan varian N (NOR, NAND, dan XNOR) adalah versi terbalik dari gerbang dasarnya.
Melakukan Matematika Dengan Gates
Dengan hanya dua gerbang Anda dapat melakukan penjumlahan biner dasar. Diagram di atas menunjukkan setengah penjumlah, dibuat menggunakan Secara logis , taman bermain online gratis untuk gerbang logika. Gerbang XOR di sini akan menyala jika hanya salah satu input yang aktif, tetapi tidak keduanya. Gerbang AND akan aktif jika kedua masukan aktif, tetapi tetap nonaktif jika tidak ada masukan. Jadi jika keduanya aktif, XOR tetap mati, dan gerbang AND menyala, datang ke jawaban yang benar dari dua:
Ini memberi kita 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 yang paling sederhana. Tetapi ini hanya setengah penambah, dan jika Anda menghubungkan dua di antaranya dengan masukan lain, Anda mendapatkan penambah penuh:
Penambah penuh memiliki tiga masukan — dua angka untuk ditambahkan, dan "bawa". Carry digunakan ketika jumlah akhir melebihi apa yang dapat disimpan dalam satu bit. Penambah penuh akan ditautkan dalam sebuah rantai, dan muatan diteruskan dari satu penambah ke penambah berikutnya. Carry ditambahkan ke hasil dari gerbang XOR di penambah babak pertama, dan ada gerbang OR ekstra untuk menangani kedua kasus ketika jadi itu perlu diaktifkan.
Saat kedua input aktif, carry menyala, dan mengirimkannya ke penambah lengkap berikutnya dalam rantai:
Dan ini serumit penjumlahan. Pindah ke lebih banyak bit pada dasarnya hanya berarti lebih banyak penambah penuh dalam rantai yang lebih panjang.
Kebanyakan operasi matematika lainnya dapat diselesaikan dengan penjumlahan; perkalian hanyalah penjumlahan berulang, pengurangan dapat dilakukan dengan beberapa inversi bit mewah, dan pembagian hanyalah pengurangan 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 kita tidak lebih dari kalkulator yang buruk. Ini karena ia tidak dapat mengingat apa pun, dan tidak melakukan apa pun dengan keluarannya. Di atas ditunjukkan 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 memberinya beberapa masukan, nyalakan bit 'tulis', dan itu akan menyimpan masukan di dalam sel. Ini bukan hanya sel memori, karena kami juga membutuhkan cara untuk membaca informasi darinya. Hal ini dilakukan dengan enabler, yang merupakan kumpulan gerbang AND untuk setiap bit dalam memori, semuanya terkait dengan input lain, bit "baca". Bit tulis dan baca juga sering disebut "set" dan "aktifkan".
Seluruh paket ini dibungkus menjadi 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 pada konfigurasi ini input dan outputnya sama. Ini sebenarnya bagus. Sebagai contoh. Jika Anda ingin menyalin konten R1 ke R2, Anda harus 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 digunakan untuk membuat RAM juga. RAM sering diletakkan dalam kisi-kisi, dengan kabel mengarah ke dua arah:
Decoder mengambil input biner dan menyalakan 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. Baik input baca dan tulis hanya akan menyala jika kedua kabel yang melintasi register juga aktif, secara efektif memungkinkan Anda memilih register untuk menulis dan membaca. Sekali lagi, RAM modern jauh lebih rumit, tetapi penyiapan ini masih berfungsi.
Jam, Stepper, dan Decoder
Register digunakan di mana-mana dan merupakan alat dasar untuk memindahkan data dan menyimpan informasi di CPU. Jadi apa yang menyuruh mereka untuk memindahkan barang?
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 sering kali merupakan metrik yang sangat baik untuk seberapa cepat CPU.
Jam memiliki tiga status berbeda: jam dasar, jam aktifkan, dan jam yang disetel. Jam dasar akan menyala selama setengah siklus, dan mati untuk setengah siklus lainnya. Jam aktif digunakan untuk menghidupkan register dan perlu dinyalakan lebih lama untuk memastikan bahwa data diaktifkan. Jam yang disetel selalu harus aktif pada waktu yang sama dengan jam aktifkan, atau data yang salah dapat ditulis.
Jam terhubung ke stepper, yang akan menghitung dari satu ke langkah maksimal, dan menyetel ulang sendiri kembali ke step setelah selesai. Jam juga terhubung ke gerbang AND untuk setiap register yang dapat ditulisi oleh CPU:
Gerbang AND ini juga terhubung ke keluaran komponen lain, dekoder instruksi. Dekoder instruksi mengambil instruksi seperti “SET R2 TO R1” dan mendekodekannya menjadi sesuatu yang dapat dimengerti oleh CPU. Ia memiliki register internalnya sendiri, yang disebut "Instruction Register," di mana operasi saat ini disimpan. Bagaimana tepatnya hal ini terjadi pada sistem yang Anda jalankan, tetapi setelah didekodekan, itu akan mengaktifkan set yang benar dan mengaktifkan bit untuk register yang benar, yang akan diaktifkan sesuai dengan jam.
Instruksi program disimpan dalam RAM (atau L1 cache pada sistem modern, lebih dekat ke CPU). Karena data program disimpan dalam register, sama seperti variabel lainnya, ia dapat dimanipulasi dengan cepat untuk melompati program. Ini adalah bagaimana program mendapatkan strukturnya, dengan pernyataan loop dan if. Instruksi lompat menetapkan lokasi saat ini dalam memori yang dibaca dekoder instruksi dari ke lokasi yang berbeda.
Bagaimana Semuanya Bersatu
Sekarang, penyederhanaan berlebihan kami tentang cara kerja CPU telah selesai. Bus utama menjangkau seluruh sistem dan terhubung ke semua register. Penambah penuh, bersama dengan banyak operasi lainnya, 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 dioperasikannya.
Untuk melakukan penghitungan, data program dimuat dari RAM sistem ke bagian kontrol. Bagian kontrol membaca dua nomor dari RAM, memuat yang pertama ke dalam register instruksi ALU, dan kemudian memuat yang kedua ke bus. Sementara itu, ALU mengirimkan kode instruksi yang memberitahukan apa yang harus dilakukan. ALU kemudian melakukan semua kalkulasi dan menyimpan hasilnya dalam register yang berbeda, dimana CPU dapat membaca dan kemudian melanjutkan proses.
Kredit Gambar: Rost9 / Shutterstock