Ini baru saja saya sadari bahwa jika Anda menulis sistem operasi maka apa yang Anda tulis itu? Saya menanyakan ini ketika saya membaca buku dasar-dasar mikroprosesor dari tahun 1980 dan pertanyaan ini muncul di kepala saya:
Bagaimana chip mikroprosesor pertama diprogram?
Jawabannya mungkin jelas tetapi itu menggangguku.
microprocessor
Dekan
sumber
sumber
Jawaban:
Saya akan menjawab pertanyaan Anda secara harfiah dan membahas sebagian besar mikroprosesor, bukan komputer pada umumnya.
Semua komputer memiliki semacam kode mesin. Instruksi terdiri dari opcode dan satu atau lebih operan. Sebagai contoh, instruksi ADD untuk Intel 4004 (mikroprosesor pertama) dikodekan sebagai 1000RRRR di mana 1000 adalah opcode untuk ADD dan RRRR mewakili nomor register.
Program komputer pertama ditulis dengan tangan, meng-enkode 1 dan 0 untuk membuat program dalam bahasa mesin. Ini kemudian diprogram ke dalam chip. Mikroprosesor pertama menggunakan ROM (Read-Only Memory); ini kemudian digantikan oleh EPROM (Erasmable Programmable ROM, yang terhapus dengan sinar UV); sekarang program biasanya diprogram ke dalam EEPROM ( "Elektrik ...- EPROM" , yang dapat dihapus pada chip), atau khususnya memori Flash.
Kebanyakan mikroprosesor sekarang dapat menjalankan program dari RAM (ini cukup standar untuk semuanya kecuali mikrokontroler), tetapi harus ada cara memuat program ke dalam RAM di tempat pertama. Seperti yang ditunjukkan Joby Taffey dalam jawabannya, ini dilakukan dengan toggle switches untuk Altair 8080, yang ditenagai oleh Intel 8080 (yang mengikuti 4004 dan 8008). Di PC Anda, ada sedikit ROM yang disebut BIOS yang digunakan untuk menghidupkan komputer, dan memuat OS ke dalam RAM.
Bahasa mesin menjadi sangat cepat membosankan, sehingga program assembler dikembangkan yang mengambil bahasa assembler mnemonik dan menerjemahkannya, biasanya satu baris kode perakitan per instruksi, ke dalam kode mesin. Jadi alih-alih 10000001, orang akan menulis ADD R1.
Tetapi assembler pertama harus ditulis dalam kode mesin. Kemudian bisa ditulis ulang dalam kode assemblernya sendiri, dan versi bahasa mesin yang digunakan untuk merakitnya pertama kali. Setelah itu, program bisa berkumpul sendiri. Ini disebut bootstrap dan dilakukan dengan kompiler juga - mereka biasanya pertama kali ditulis dalam assembler (atau bahasa tingkat tinggi lainnya), dan kemudian ditulis ulang dalam bahasa mereka sendiri dan dikompilasi dengan kompiler asli hingga kompiler dapat mengkompilasi dirinya sendiri.
Karena mikroprosesor pertama dikembangkan lama setelah mainframe dan minicomputer ada, dan 4004 sebenarnya tidak cocok untuk menjalankan assembler, Intel mungkin menulis cross-assembler yang berjalan pada salah satu komputer besarnya, dan menerjemahkan kode assembly untuk 4004 menjadi gambar biner yang dapat diprogram ke dalam ROM. Sekali lagi, ini adalah teknik umum yang digunakan untuk port compiler ke platform baru (disebut cross-compiling ).
sumber
Awalnya, program ditulis di atas kertas, dan kemudian dialihkan ke metode input apa pun yang tersedia di komputer. Mulai dari kenop, sakelar, dan kabel jumper di komputer pertama, ke kartu punch, ke papan tombol / papan.
Ilustrasi di bawah ini menunjukkan apa yang digunakan oleh programmer nyata saat ini :
sumber
Yah saya ada di sekitar ketika micros pertama kali keluar, kami menulis perakit silang dan kompiler pada mainframe dan mini, kemudian kami bootstrap ke perangkat keras 8-bit, orang tidak benar-benar repot membangun kompiler / perakit pada micros sampai mereka memiliki cukup penyimpanan lokal untuk buat itu berguna
sumber
Salah satu bentuk awal dari memori hanya baca adalah kisi di mana alamat akan memilih baris (menariknya rendah), dan kolom mewakili data. Setiap kolom akan memiliki pull-up, dan setiap persimpangan akan memiliki dioda yang disolder untuk mewakili "nol", atau tidak ada dioda untuk mewakili "satu" [level bit dapat dibalik jika diinginkan, dalam kasus di mana itu akan mengurangi diperlukan jumlah dioda]. Setiap pola bit yang diinginkan dapat "diprogram" dengan menyolder dioda yang tepat.
Desain ini dibawa ke dunia sirkuit terpadu dalam bentuk sekering-PROM. Pada dasarnya PROM sekering adalah sebuah sirkuit seperti di atas, dibangun di atas sebuah chip, kecuali bahwa semua dioda diisi, dan setiap dioda memiliki sekering lemah secara seri dengannya. Saat dikirim, PROM akan membaca "0" di semua lokasi. Satu bisa, bagaimanapun, secara selektif menghapus dioda dengan memilih alamat yang sesuai dan mengendarai jalur data yang sesuai "keras" tinggi [catatan: Saya pikir setiap bit mungkin memiliki transistor sendiri, daripada dioda, tetapi prinsipnya sama].
PROM yang diprogram sekering digantikan oleh memori semikonduktor, yang menyimpan bit dengan menanamkan muatan pada kapasitor internal. Tidak hanya kenangan semacam itu yang lebih kompak daripada fuse-PROM, tetapi jika disimpan dalam paket transparan-UV, memori tersebut dapat dihapus dan digunakan kembali. Perhatikan bahwa bahkan apa yang disebut "one-time programmable" memory hampir selalu menggunakan desain yang sama ini, tetapi hanya disimpan dalam paket UV-opak.
toko kontrol diode-matrix dari 1950 Whirlwind Computer MIT
transistor-matrix control store tahun 2005 CPU MT15
sumber
Saya tidak yakin ada orang yang menjawab pertanyaan sebenarnya OP, yang sepertinya adalah "Bagaimana komputer tahu cara memulai?" , jadi saya akan coba-coba.
Mulailah dengan analogi. "Bagaimana transistor tahu bagaimana memulainya?" Tentu saja tidak, itu hanya bekerja sesuai dengan fisika, dan insinyur membangun sirkuit sehingga dimulai pada kondisi yang diketahui.
Komputer tahu bagaimana memulai karena mereka sirkuit (sangat rumit, tentu saja) dan mereka dibangun untuk memulai dalam keadaan tertentu. Dalam mesin modern yang menyatakan mungkin salah satu di mana bus utama memetakan kembali bagian ruang alamat untuk menggunakan ROM pada motherboard sebagai memori rendah (ROM telah dibakar dengan BIOS). Pada mesin generasi pertama, keadaan awal mungkin adalah CPU terhenti, penghitung program nol, dan sub-sistem sakelar memori aktif.
sumber
Sistem operasi adalah program komputer yang berjalan langsung pada prosesor. Itu dapat ditulis dalam bahasa apa pun yang dapat dikompilasi atau dikumpulkan ke instruksi mesin. Assembly dan C adalah pilihan umum.
Kode dimuat ke prosesor instruksi tunggal pada suatu waktu dari toko - ROM atau RAM.
The Z3 , prosesor diprogram pertama dibangun dari relay elektromekanik dan membaca instruksi dari film menekan.
Altair 8800, komputer pribadi pertama, diprogram dengan mengaktifkan sakelar.
Untuk mempelajari bagaimana prosesor dibangun dari logika digital, lihat https://electronics.stackexchange.com/questions/5516/a-fun-book-to-learn-computer-architecture-for-not-exactly-beginners
Untuk sejarah, lihat http://en.wikipedia.org/wiki/History_of_computing_hardware
sumber
Inilah sedikit tentang komputer yang benar-benar tua:
Sejauh yang saya tahu, di masa lalu, Anda memiliki panel depan komputer besar yang digunakan untuk memprogram mereka. Pada dasarnya, setiap sel memori di komputer itu terhubung ke sakelar. Anda menghidupkan daya memori dan kemudian menggunakan sakelar untuk mengatur data di setiap sel. Dengan cara ini, Anda akan memasukkan program sedikit demi sedikit ke dalam memori komputer. Kemudian Anda akan menetapkan titik awal program dan memulai eksekusi.
Seiring kemajuan teknologi, program bootloader disebut dikembangkan. Mereka adalah program singkat yang intinya adalah memulai program lain dari memori komputer. Masalah dengan memasukkan program sedikit demi sedikit (dan kemudian lebih dari satu bit menggunakan angka oktal dan kemudian heksadesimal) adalah bahwa itu sangat lambat dan ada kemungkinan besar bahwa operator akan membuat kesalahan saat memuat program. Jadi program pendek akan digunakan untuk memuat program yang lebih besar yang tersimpan dalam memori komputer. Seiring berjalannya waktu, porsi kode yang harus dimasukkan dengan tangan berkurang dan di komputer modern kita sering memiliki bootloader yang ditulis dalam semacam ROM atau bahkan memori flash.
sumber
Saya beberapa tahun yang lalu menemukan seorang programmer mikrokontroler yang memiliki tampilan empat segmen tujuh digit, dan tombol hex. Saya yakin ini tidak memiliki mikrokontroler di papan dan memungkinkan Anda untuk memasukkan kode mesin secara langsung satu byte pada suatu waktu.
Jadi ini akan memungkinkan Anda untuk (dengan susah payah) menyusun daftar kode Op secara manual satu per satu dan memasukkannya ke dalam chip.
Saya tidak tahu apakah Anda masih bisa mendapatkannya, tapi saya menduga sesuatu yang serupa digunakan kembali ketika mikrokontroler relatif baru.
sumber
Mikroprosesor pertama akan diprogram dengan bantuan komputer yang ada yang tidak didasarkan pada mikroprosesor. Sebelum CPU pertama diproduksi pada satu chip, sudah ada arsitektur komputer canggih yang dibangun dari komponen diskrit daripada mikroprosesor. Lihatlah, oh, katakanlah, IBM 360.
sumber