Bagaimana cara kerja komputer?


40

Saya telah menjadi kutu buku komputer selama bertahun-tahun. Saya dapat memprogram dalam beberapa bahasa, dan saya bahkan dapat membuatnya. Saya duduk dengan seorang teman di suatu hari dan bertanya bagaimana sebuah komputer benar-benar mengambil listrik dan melakukan sesuatu dengan itu, dan kami tidak bisa memahaminya, dan Google juga tidak banyak membantu.

Maksud saya, bagaimana komputer mengambil aliran listrik konstan dan mengubahnya menjadi 1 dan 0 dan kemudian benar-benar melakukan sesuatu dengan 1 dan 0 itu seperti menyalakan lampu selama 15 detik?

Saya mengerti gerbang (DAN, ATAU, NOR, NAND, BUKAN) dan sedikit tentang dioda , resistor dan transistor , tapi saya pikir ini akan menjadi tempat yang sempurna untuk menjelaskannya dalam istilah orang awam yang sebenarnya!

Adakah yang bisa mengarahkan saya ke arah yang benar atau memberi saya penjelasan singkat?


8
Anda mungkin juga bertanya "bagaimana cara kerja bakteri?". Ini adalah pertanyaan yang sangat luas. Saya sarankan Anda melihat arsitektur prosesor sederhana (misalnya MIPS ; kami diajarkan yang ini di kelas) dan bekerja naik turun dari sana. Pertanyaan yang Anda hadapi mungkin lebih cocok untuk Stack Exchange daripada yang ini.
Raphael

3
Saya tahu bagaimana bakteri bekerja, komputernya saya tidak mengerti lol
Christian

14
Peri. Peri sihir kecil.
JeffE


1
Cara terbaik untuk mempelajari bagaimana komputer benar-benar bekerja pada level terendah, adalah merancang mikrokontroler sederhana pada FPGA atau secara manual dari gerbang Nand. Saya sudah melakukannya di kelas "Arsitektur Komputer" dan itu benar-benar membuka mata. Bahkan tidak sulit untuk dilakukan jika Anda menjaga semuanya seminimal mungkin, dan merancang pengontrol 4-bit dengan tambahan, manipulasi bit dan lompatan bersyarat. Atau bahkan lebih sederhana, perangkat keras yang mengimplementasikan mesin Turing yang disederhanakan. Hm, perut ini memberi saya ide: belajar bagaimana mesin Turing bekerja. Ini akan memberi Anda wawasan yang baik.
vsz

Jawaban:


47

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 :

MIPS satu tahap
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.


  1. Semua hal mewah yang kita lakukan dengan komputer saat ini dipecah menjadi banyak tugas aritmatika kecil yang dijalankan oleh prosesor satu per satu.
  2. 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.
  3. 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.

Wow! Itu layak bertepuk tangan. Itu bacaan yang bagus. Terima kasih sudah berbagi. Saya tentu belajar sesuatu. Meskipun, setelah membaca itu, saya pikir apa yang ingin saya ketahui lebih mendasar dari teknik elektro dalam hal bagaimana secara fisik mengontrol listrik. Saya akan memposting pertanyaan yang sama ke grup itu nanti hari. Terima kasih!
Christian

1
Terpikir oleh saya bahwa saya mungkin harus memasukkan "berbicara ke bagian mesin". Itu berarti merancang bahasa yang dapat digunakan manusia dengan efisien dan menerjemahkannya (dengan kompiler) ke set instruksi yang Anda tentukan. Ini adalah topik inti dari ilmu komputer sementara materi dalam jawaban saya sebagian besar adalah teknik komputer .
Raphael

Saya membayangkan itu bukan jawaban cepat. Suatu hari saya akan membayar beberapa insinyur komputer yang membuat motherboard atau ponsel, seperti cara kerjanya. Artinya, bagaimana komputer sebenarnya menghitung atau menyalakan lampu selama 5 detik dan kemudian mati. Saya membayangkan banyak hubungannya dengan sakelar dan kapasitor.
Christian

@Christian Jika Anda ingin menghemat uang, pertimbangkan untuk membeli kotak eksperimen EE (seperti yang untuk anak-anak) yang mencakup transistor. Beralih lampu atau membangun penambah kecil biasanya disertakan, afaik. (Lagi-lagi, orang- orang Teknik Elektro mungkin tahu lebih banyak.)
Raphael

25

Gambaran lengkapnya cukup rumit. Ada banyak lapisan yang dibangun di atas satu sama lain yang secara kolektif menerapkan abstraksi tingkat tinggi di atas tegangan listrik. Tidak ada penjelasan sederhana tentang bagaimana semuanya disatukan, terutama mengingat bahwa perangkat keras dan perangkat lunak komputer telah berkembang secara dramatis dalam lima puluh tahun terakhir.

Jika Anda tertarik untuk melihat bagaimana semuanya disatukan, Anda mungkin ingin memeriksa The Elements of Computing Systems , sebuah buku yang dimulai dengan gerbang NAND dan secara bertahap membangun implementasi kerja Tetris di atas kompiler dan sistem operasi yang Anda juga membangun. Setiap bagian dari komputer dibangun pada yang sebelumnya, yang dapat membantu Anda melihat bagaimana semuanya bekerja.


Itu terdengar seperti tempat awal yang sempurna. Akan mulai dari sana. Terima kasih banyak :)
Christian

2
Saya juga merekomendasikan membaca KODE oleh Charles Petzold.
ybakos

7

Keamanan podcast Sekarang! melakukan serangkaian cara kerja komputer, dimulai dengan prinsip dasar.

  • 233 - Ayo Merancang Komputer (bagian 1)
  • 235 - Bahasa Mesin
  • 237 - Tidak Langsung: Kekuatan Pointer (tidak secara teknis bagian dari seri)
  • 239 - Tumpukan, Registrasi & Rekursi
  • 241 - Gangguan Perangkat Keras
  • 247 - "Multi" -verse
  • 250 - Sistem Operasi
  • 252 - Bisnis RESIKO
  • 254 - Yang Akan Kami Lakukan untuk Kecepatan

Kesenjangan dalam angka adalah karena setiap episode lainnya adalah episode Umpan Balik Pendengar sehingga Anda mungkin ingin menontonnya juga. Juga antara 241 dan 247 mereka melakukan beberapa episode tentang SSL karena berita terkini pada saat itu tentang negara-negara yang memaksa CA untuk memberikan sertifikat root kepada mereka.

Juga EP. 248 adalah "Portable Dog Killer" yang tidak membunuh anjing, tetapi senjata sinar sonik yang dibuat Steve sendiri sebagai anak untuk membantu mengajar anjing tetangga agar tidak berlari ke garis pagar dan mencoba menyerang orang di trotoar. .


menarik! Terima kasih sudah berbagi. Akan saya lihat.
Christian

4

Komputer bekerja dengan memanipulasi gradien energi (yang kemudian kita tafsirkan sebagai 1 dan 0) dengan cara yang konsisten dan didefinisikan . Ini adalah konsistensi yang mendefinisikan komputer, sementara itu definisi yang memisahkan prosesor yang berbeda.

Juga, pelajari tentang bagaimana hanya dua gerbang logika (ATAU, dan DAN) adalah blok bangunan yang cukup untuk membangun komputer serba guna. Lihat juga, Danny Hillis dan komputer Tinkertoy.


Itu adalah bacaan menarik tentang TinkerToy, terutama fakta bahwa itu selalu menang! ( Science20.com/brain_candyfeed_your_mind/… )
Christian

Namun, meskipun itu memberi saya wawasan yang baik tentang bagaimana komputer 'berpikir' yaitu, dengan memberikan setiap kombinasi dan mekanisme untuk menemukan jawaban berikutnya yang diberikan sebelumnya, itu tidak menjawab pertanyaan awal saya tentang bagaimana sebenarnya membangun komputer. Asumsikan saya menuju ke toko perangkat keras lokal saya (yang memiliki segalanya) untuk membeli bit fundemental (transistor, resistor, kapasitor, gerbang, dll.) Dan mengkonfigurasinya sehingga saya memiliki komputer yang sangat dasar, apa yang saya perlukan? Lagi pula, komputer pertama adalah ukuran gudang dengan bit dan kabel, jadi itu pasti mungkin!
Christian

@Christian: haha, oke, buat beberapa gerbang logika dasar (DAN / ATAU / BUKAN) beberapa sandal jepit untuk penyimpanan memori dasar dan Anda mungkin bisa menambahkan dua angka 4-bit.

Saya punya beberapa sandal jepit! Dua pasang sebenarnya.
Christian

3

Komputer adalah sistem logis sinkron besar , yang artinya

  • 0/1
  • ini beroperasi dengan jam (sangat cepat) sehingga semua sinyal disampel pada saat-saat terpisah untuk memastikan koherensi.

0/1

Ini memiliki sirkuit khusus untuk menyimpan informasi selama komputer ini ditenagai (RAM, dalam jumlah besar). Ini memiliki sirkuit khusus untuk melakukan aritmatika biner (sebenarnya bit ditangani dalam kelompok - biasanya dalam kelipatan 8 - yang secara kolektif mewakili angka integer). Dan ia memiliki kemampuan perutean khusus berdasarkan alamat memori, yang tidak lain adalah integer.

Terakhir, komputer modern memiliki program yang juga disimpan dalam RAM, yang merupakan daftar instruksi yang dikodekan sebagai bilangan bulat, yang dieksekusi secara berurutan, biasanya mengambil data dari memori, melakukan aritmatika dan mengirimkan hasilnya kembali ke memori.

Dalam skenario Anda, orang bisa memikirkan implementasi di mana waktu yang telah berlalu disimpan di suatu tempat di RAM dan program menginstruksikannya

  • ambil nilai waktu yang telah berlalu,
  • tambahkan dengan penambah,
  • bandingkan dengan penundaan standar dengan pembanding,
  • kembali ke alamat program awal jika terjadi ketimpangan (mis. "loop"),
  • jika tidak, tetapkan sinyal khusus yang beralih ke sakelar eksternal daripada RAM.

Perhatikan bahwa semua elemen ini saat ini mencapai tingkat kecanggihan yang tinggi, dan setiap kalimat dalam ikhtisar yang sangat singkat ini layak mendapatkan beberapa buku penjelasan.


-1

Ada beberapa cara untuk melakukan fungsi penundaan atau mengubah data biner menjadi data desimal atau kekuatan sinyal. Saat Anda memasukkan nilai "15", komputer menampilkan gambar bitmap dari angka 15 di layar. Ini sebenarnya nilai biner, saat ini kode biner keyboard Anda juga dikirim ke cpu. Ini akan mem-parsing data kemudian mengubah kode ke unit pemrosesan ALU (unit aritmatika logika) untuk mengubahnya menjadi pulsa ke chip DAC. Sinyal analog sekarang sedang mengendalikan frekuensi (frekuensi dari khz ke hz) dari rangkaian flip-flop. Sekarang output frekuensi akan diarahkan ke RAM, dan CPU membaca RAM untuk mencocokkan jika data "1111". Jadi itu 4 detik.


Saya tidak yakin bagaimana ini menjawab pertanyaan.
Yuval Filmus

Anda dapat melihat bahwa dia bertanya bagaimana flashing komputer memimpin selama 15 detik, dan saya menjelaskan bagaimana komputer membuat nilai kedua untuk digunakan dalam loop.
Lan ...
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.