Ini adalah pertanyaan luas yang tidak memiliki jawaban mudah; masih jauh dari elektron yang bergerak cepat di sepanjang kabel tembaga hingga merender situs web di Firefox. Saya akan mencoba memberi Anda gambaran dari bawah ke atas dan mengarahkan Anda ke hal-hal yang benar untuk dicari.
Encoding Numbers
Motivasi dasar adalah untuk menghitung hal-hal, seperti dalam melakukan aritmatika¹. Hal pertama yang harus dilihat adalah bagaimana merepresentasikan angka. Ada banyak pendekatan, menggunakan desimal atau terner dan saya pikir bahkan sistem oktal, tetapi pada akhirnya, biner menang. Sekarang kita tahu kita harus membangun perangkat yang berhubungan dengan dua nilai - sebut saja dan .101
Perhatikan bahwa ada juga beberapa cara untuk menyandikan angka dalam biner. Setelah Anda membangun prosesor pertama Anda, Anda menyadari keuntungan melakukan sesuatu dengan cara tertentu. Contoh populer adalah pelengkap dua-pelengkap dan IEEE . Sebagai permulaan, batasi diri Anda pada bilangan asli.
Gates
Asumsikan kita menggunakan pengkodean biner. Pikirkan bagaimana Anda belajar menambahkan di sekolah dasar dan menuliskan hal yang sama untuk angka biner. Ternyata, blok bangunan aljabar Boolean sudah ada untuk Anda; mudah untuk membangun penambah dasar (dan fungsi aritmatika lainnya) menggunakan gerbang logika .
Cara membangun gerbang seperti itu berada di luar ruang lingkup ilmu komputer; teknik eletrical telah memberikan beberapa solusi menggunakan tabung misalnya atau transistor . Kepala ke Pertukaran Teknik Stack Listrik untuk pertanyaan tentang ini.
Jam dan Negara
Tidak semua gerbang sama cepatnya dan tidak semua bagian perhitungan memiliki jumlah gerbang yang sama. Oleh karena itu, kita harus berhati-hati agar operasi individu tidak saling menyalip. Telah terbukti bermanfaat untuk menggunakan jam global ; hasil dari jaringan gerbang yang diberikan adalah keadaan kabel keluaran pada akhir siklus (yang dapat berubah secara liar sementara gerbang mengalir menuju keadaan akhir masing-masing).
Itu berarti bahwa hasil dari satu siklus mungkin harus disimpan sampai siklus berikutnya dimulai, misalnya jika Anda memasang loop. Ada sejumlah elemen dasar yang dapat Anda gunakan untuk berbagai efek, semua dibangun dari gerbang; beberapa disebut sandal jepit . Itu juga digunakan untuk membangun register , elemen yang menyimpan angka sebanyak siklus jam yang diperlukan.
Arsitektur dan Perintah
Sekarang Anda memiliki segudang pilihan desain untuk dibuat. Operasi aritmatika apa yang disediakan prosesor Anda? Seperti apa perintah Anda? Mungkin mendidik untuk melihat arsitektur MIPS yang bentuk awalnya mudah dibandingkan dengan desain lainnya. Lihatlah rencananya :
Asli dari http://ube.ege.edu.tr/~erciyes/CENG311
Pada dasarnya, ini mengambil dan dan membongkar perintah, satu set register, ALU dan kontrol. Perintah mengkodekan operasi ALU mana yang harus dilakukan pada operan mana (dengan jumlah register yang dimiliki), bagaimana memanipulasi program counter² atau register mana yang memuat / menyimpan dari / ke memori³.
Pertimbangan Lebih Lanjut
Sekarang Anda memiliki prosesor yang berfungsi dalam pengertian modern, dengan asumsi Anda sudah tahu cara membangun memori dan cara memberi makan perintah. Dalam perjalanan menuju mesin modern, banyak pilihan harus dibuat. Inilah beberapa:
Alternatif
Di atas sangat dipengaruhi oleh bagaimana sejarah berubah. Di dunia yang berbeda dengan pikiran yang berbeda, komputer dapat bekerja secara berbeda. Bahkan, ada banyak model komputasi , beberapa di antaranya memiliki kelebihan yang menjadikannya berguna sebagai abstraksi untuk mesin nyata dalam banyak kasus. Ada juga upaya untuk meniru cara otak kita bekerja, yaitu mengaktifkan komputasi saraf , atau lebih umum untuk mengeksploitasi strategi pemecahan masalah dan penyimpanan informasi yang diamati di alam , yang paling menonjol adalah komputasi DNA dan kuantum .
Jadi mungkin (semoga?) Informasi di atas adalah semua sejarah kuno 50 atau 100 tahun lagi dari sekarang.
- Semua hal mewah yang kita lakukan dengan komputer saat ini dipecah menjadi banyak tugas aritmatika kecil yang dijalankan oleh prosesor satu per satu.
- Jika model Anda memungkinkan program untuk memanipulasi aliran kontrol, ini akan menjadi alamat memori tempat prosesor mendapatkan instruksi selanjutnya. Anda juga dapat membayangkan mesin yang hanya membaca satu set instruksi tetap dari, katakanlah, sebuah kaset. Bahkan, implementasi awal melakukan itu. Tidak ada lompatan berarti tidak ada loop; sebuah program adalah serangkaian instruksi yang sepenuhnya terbuka / tidak terbuka tergantung pada data. Jelas, bisa menggunakan program yang sama untuk beberapa data input lebih kuat.
- Dengan asumsi Anda memiliki memori; Prosesor Anda berfungsi dengan baik tanpa tetapi hanya dapat menangani begitu banyak nilai sekaligus. Komputer awal memang membaca semua data mereka dari kaset dan menyimpannya dalam register. Tidak ada memori, apalagi penyimpanan yang dapat ditulis dan persisten seperti yang kita kenal sekarang.