If-Koubou

HTG Menjelaskan: Bagaimana Sebenarnya CPU Bekerja?

HTG Menjelaskan: Bagaimana Sebenarnya CPU Bekerja? (Bagaimana caranya)

Sebagian besar hal di komputer relatif mudah dimengerti: RAM, penyimpanan, periferal, dan perangkat lunak semuanya bekerja bersama untuk membuat fungsi komputer. Tetapi jantung sistem Anda, CPU, tampak seperti sihir bahkan bagi banyak orang teknologi. Di sini, kami akan melakukan yang terbaik untuk memecahnya.

Sebagian besar penelitian untuk artikel ini berasal dari "Tapi How Do It Know?" Oleh J. Clark Scott. Ini adalah bacaan yang fantastis, masuk ke lebih mendalam daripada artikel ini, dan sangat berharga beberapa dolar di Amazon.

Satu catatan sebelum kita mulai: CPU modern adalah perintah besarnya lebih kompleks daripada apa yang kami uraikan di sini. Hampir tidak mungkin bagi satu orang untuk memahami setiap nuansa chip dengan lebih dari satu miliar transistor. Namun, prinsip-prinsip dasar tentang bagaimana semua itu cocok bersama tetap sama, dan memahami dasar-dasar akan memberi Anda pemahaman yang lebih baik tentang sistem modern.

Mulai Kecil

Komputer beroperasi dalam biner. Mereka hanya memahami dua kondisi: aktif dan nonaktif. Untuk melakukan perhitungan dalam biner, mereka menggunakan apa yang disebut transistor. Transistor hanya memungkinkan arus sumber mengalir melalui itu ke saluran pembuangan jika ada arus di seberang gerbang. Pada dasarnya, ini membentuk saklar biner, yang memotong kabel mati tergantung pada sinyal input kedua.

Komputer modern menggunakan miliaran transistor untuk melakukan perhitungan, tetapi pada level terendah, Anda hanya perlu sedikit untuk membentuk komponen yang paling dasar, yang dikenal sebagai gerbang.

Logika Gates

Tumpuk beberapa transistor dengan benar, dan Anda memiliki apa yang dikenal sebagai gerbang logika. Gerbang logika mengambil dua input biner, melakukan operasi pada mereka, dan mengembalikan output. Gerbang OR, misalnya, mengembalikan nilai true jika salah satu dari input itu benar. Gerbang AND memeriksa apakah kedua input benar, XOR memeriksa apakah hanya satu input yang benar, dan N-varian (NOR, NAND, dan XNOR) adalah versi terbalik dari gerbang basis mereka.

Melakukan Matematika Bersama Gates

Dengan hanya dua gerbang Anda dapat melakukan penambahan biner dasar. Diagram ini di atas menunjukkan setengah penambah, dibuat menggunakan Logicly, tempat 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 menyala, 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 kita konfigurasi 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 mungkin. Tapi ini hanya setengah adder, dan jika Anda menghubungkan dua dari mereka dengan input lain, Anda mendapatkan penambah penuh:

Penambah lengkap memiliki tiga input-dua angka untuk ditambahkan, dan "carry." Carry digunakan ketika jumlah terakhir melebihi apa yang dapat disimpan dalam satu bit. Pengisi penuh akan dihubungkan dalam rantai, dan carry dilewatkan dari satu adder ke yang berikutnya. Carry ini ditambahkan ke hasil gerbang XOR pada adder babak pertama, dan ada gerbang OR ekstra untuk menangani kedua kasus ketika hal itu perlu dilakukan.

Ketika kedua input menyala, carry menyala, dan mengirimkannya ke adder penuh berikutnya dalam rantai:

Dan ini sama rumitnya dengan penambahan. Pindah ke lebih banyak bit pada dasarnya hanya berarti lebih banyak penambah dalam rantai yang lebih panjang.

Sebagian besar operasi matematika lainnya dapat dilakukan dengan tambahan; perkalian hanyalah penambahan berulang, pengurangan dapat dilakukan dengan beberapa inversi bit yang mewah, dan pembagian hanya pengurangan berulang. Dan sementara semua komputer modern memiliki solusi berbasis perangkat keras untuk mempercepat operasi yang lebih rumit, Anda dapat secara teknis melakukan semuanya dengan penambah lengkap.

Bus, dan Memori

Saat ini, komputer kita tidak lebih dari kalkulator yang buruk. Ini karena tidak dapat mengingat apa pun, dan tidak melakukan apa pun dengan outputnya. Yang ditunjukkan di atas adalah sel memori, yang dapat melakukan semua itu. Di bawah kap, itu menggunakan banyak gerbang NAND, dan dalam kehidupan nyata bisa sangat berbeda tergantung pada teknik penyimpanan, tetapi fungsinya sama. Anda memberikan beberapa masukan, nyalakan 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 terkait dengan input lain, bit "baca". Tulis dan baca bit sering disebut "mengatur" dan "mengaktifkan" juga.

Seluruh paket ini terbungkus dalam apa yang dikenal sebagai daftar. Register-register ini terhubung ke bus, yang merupakan bundel kabel yang mengelilingi seluruh sistem, terhubung ke setiap komponen. Bahkan komputer modern memiliki bus, meskipun mereka mungkin memiliki beberapa 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 isi R1 ke R2, Anda akan menyalakan bit baca untuk R1, yang akan mendorong isi R1 ke bus. Saat bit baca menyala, Anda akan menyalakan bit tulis untuk R2, yang akan menyalin isi bus ke R2.

Register digunakan untuk membuat RAM juga. RAM sering ditata dalam kotak, dengan kabel masuk dalam dua arah:

Dekoder 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 daftar. Semua ini terhubung ke bus pusat, dan ke pusat menulis dan membaca masukan.Masukan baca dan tulis hanya akan menyala jika dua kabel yang melintas di atas daftar juga aktif, sehingga Anda dapat secara efektif memilih daftar yang akan ditulis dan dibaca. Sekali lagi, RAM modern jauh lebih rumit, tetapi pengaturan ini masih berfungsi.

Jam, Stepper, dan Decoder

Register digunakan di mana-mana dan merupakan alat dasar untuk memindahkan data di sekitar dan menyimpan informasi dalam CPU. Jadi apa yang memberitahu mereka untuk memindahkan barang-barang?

Jam adalah komponen pertama dalam inti CPU dan akan dimatikan pada interval yang ditetapkan, 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. Clock speed sering merupakan metrik yang sangat bagus untuk seberapa cepat sebuah CPU.

Jam memiliki tiga kondisi berbeda: jam dasar, jam aktif, dan jam yang ditetapkan. Jam dasar akan menyala selama setengah siklus, dan mati untuk setengah lainnya. Jam aktif digunakan untuk mengaktifkan register dan harus aktif lebih lama untuk memastikan bahwa data diaktifkan. Jam set harus selalu pada waktu yang sama dengan jam aktif, atau data yang salah bisa ditulis.

Jam terhubung ke stepper, yang akan dihitung dari satu ke langkah maksimal, dan mengatur ulang sendiri kembali ke satu saat selesai. Jam juga terhubung ke gerbang AND untuk setiap daftar yang dapat ditulis oleh CPU ke:

Gerbang AND ini juga terhubung ke output komponen lain, dekoder instruksi. Dekoder instruksi mengambil instruksi seperti "SET R2 TO R1" dan menerjemahkannya menjadi sesuatu yang dapat dimengerti oleh CPU. Ini memiliki register internal sendiri, yang disebut "Instruction Register," yang mana operasi saat ini disimpan. Bagaimana tepatnya hal ini terjadi pada sistem yang Anda jalankan, tetapi setelah di-decode, ia akan mengaktifkan set yang benar dan mengaktifkan bit untuk register yang benar, yang akan diaktifkan 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 di sekitar program. Ini adalah bagaimana program mendapatkan strukturnya, dengan loop dan jika pernyataan. Instruksi jump menetapkan lokasi saat ini dalam memori yang didekodekan oleh instruksi decoder dari ke lokasi yang berbeda.

Bagaimana Semua Ini Berkumpul

Sekarang, penyederhanaan bruto kami tentang cara kerja CPU selesai. Bus utama menjangkau seluruh sistem dan menghubungkan ke semua register. Pengisi penuh, bersama dengan sekelompok 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 perhitungan, data program dimuat dari RAM sistem ke bagian kontrol. Bagian kontrol membaca dua angka dari RAM, memuat yang pertama ke register instruksi ALU, dan kemudian memuat yang kedua ke dalam bus. Sementara itu, mengirimkan ALU kode instruksi yang memberitahukan apa yang harus dilakukan. ALU kemudian melakukan semua perhitungan dan menyimpan hasilnya dalam register yang berbeda, yang dapat dibaca oleh CPU dan kemudian melanjutkan prosesnya.

Kredit Gambar: Rost9 / Shutterstock