Pengenalan
Komputer yang Anda gunakan untuk membaca halaman ini menggunakan sebuah mikroprosesor untuk melakukan tugasnya. Mikroprosesor merupakan jantung dari komputer normal, apakah itu sebuah desktop mesin, server atau laptop. Mikroprosesor Anda mungkin menggunakan Pentium, K6, PowerPC, Sparc atau salah satu dari banyak merek dan jenis mikroprosesor, tetapi mereka semua melakukan hal yang sama kira-kira kira-kira cara yang sama.
Sebuah mikroprosesor - juga dikenal sebagai CPU atau central processing unit - merupakan mesin komputasi lengkap yang dipabrikasi pada satu chip. Mikroprosesor yang pertama adalah Intel 4004, yang diperkenalkan pada tahun 1971. 4004 tidak terlalu kuat - semua itu hanya bisa menambah dan mengurangi, dan itu hanya bisa melakukan itu 4 bit pada satu waktu. Tapi itu menakjubkan bahwa segala sesuatu berada di satu chip. Sebelum 4004, insinyur komputer dibangun baik dari kumpulan chip atau dari komponen yang berlainan (transistor dihubungkan satu per satu waktu). 4004 powered salah satu kalkulator elektronik portabel.
Instruksi Mikroprosesor
Bahkan mikroprosesor sangat sederhana ditunjukkan pada contoh sebelumnya akan memiliki cukup besar set instruksi yang dapat melakukan. Kumpulan instruksi diimplementasikan sebagai pola bit, yang masing-masing memiliki arti yang berbeda ketika dimasukkan ke dalam instruksi register. Manusia tidak terlalu baik mengingat pola bit, jadi satu set kata pendek yang ditetapkan untuk mewakili pola bit yang berbeda. Koleksi kata-kata ini disebut bahasa assembly prosesor. Assembler dapat menerjemahkan kata-kata ke dalam pola bit sangat mudah, dan kemudian output assembler yang ditempatkan dalam memori untuk mikroprosesor untuk mengeksekusi.
Here's the set instruksi bahasa assembly bahwa perancang mungkin menciptakan untuk mikroprosesor sederhana pada contoh kita:
* LOADA mem - Muat mendaftar A dari alamat memori
* LOADB mem - Muat mendaftarkan B dari alamat memori
* CONB con - Muat sebuah nilai konstan ke register B
* SAVEB mem - Simpan register B ke alamat memori
* SAVEC mem - Simpan register C ke alamat memori
* ADD - Tambahkan A dan B dan simpan hasilnya di C
* SUB - Kurangi A dan B dan simpan hasilnya di C
* Mul - Kalikan A dan B dan simpan hasilnya di C
* DIV - Bagi A dan B dan simpan hasilnya di C
* COM - Bandingkan A dan B dan simpan hasilnya dalam pengujian
* JUMP addr - Langsung ke alamat
* JEQ addr - Langsung, jika sama, untuk alamat
* JNEQ addr - Langsung, jika tidak sama, untuk alamat
* JG addr - Langsung, jika lebih besar dari, untuk alamat
* JGE addr - Langsung, jika lebih besar dari atau sama, untuk menangani
* JL addr - Langsung, jika kurang dari, untuk alamat
* JLE addr - Langsung, jika kurang dari atau sama, untuk menangani
* STOP - Stop eksekusi
Jika Anda telah membaca Cara C Programming Works, maka Anda tahu bahwa sederhana ini potongan kode C akan menghitung faktorial dari 5 (di mana faktorial 5 = 5! = 5 * 4 * 3 * 2 * 1 = 120):
a = 1;
f = 1;
while (a <= 5)
(
f = f * a;
a = a + 1;
)
Pada akhir pelaksanaan program, variabel f berisi faktorial dari 5.
Assembly Language
AC compiler menerjemahkan kode C ini ke dalam bahasa assembly. Dengan asumsi bahwa alamat RAM 128 dimulai di dalam prosesor ini, dan ROM (yang berisi program bahasa assembly) dimulai pada alamat 0, kemudian untuk kita mikroprosesor sederhana bahasa perakitan akan terlihat seperti ini:
/ / Asumsikan alamat yang ada di 128
/ / Asumsikan F adalah pada alamat 129
0 CONB 1 / / a = 1;
1 SAVEB 128
2 CONB 1 / / f = 1;
3 SAVEB 129
4 LOADA 128 / / if a> 5, melompat ke 17
5 CONB 5
6 COM
7 JG 17
8 LOADA 129 / / f = f * a;
9 LOADB 128
10 mul
11 SAVEC 129
12 LOADA 128 / / a = a +1;
13 CONB 1
14 ADD
15 SAVEC 128
16 JUMP 4 / / loop kembali ke jika
17 STOP
ROM
Jadi sekarang pertanyaannya adalah, "Bagaimana semua petunjuk ini terlihat dalam ROM?" Masing-masing instruksi bahasa assembly harus diwakili oleh bilangan biner. Demi kesederhanaan, mari kita asumsikan masing-masing instruksi bahasa assembly diberikan nomor unik, seperti ini:
* LOADA - 1
* LOADB - 2
* CONB - 3
* SAVEB - 4
* SAVEC mem - 5
* ADD - 6
* SUB - 7
* Mul - 8
* DIV - 9
* COM - 10
* JUMP addr - 11
* JEQ addr - 12
* JNEQ addr - 13
* JG addr - 14
* JGE addr - 15
* JL addr - 16
* JLE addr - 17
* STOP - 18
Angka-angka tersebut dikenal sebagai opcodes. Dalam ROM, program kecil kami akan terlihat seperti ini:
/ / Asumsikan alamat yang ada di 128
/ / Asumsikan F adalah pada alamat 129
Addr opcode / nilai
0 3 / / CONB 1
1 1
2 4 / / SAVEB 128
3 128
4 3 / / CONB 1
5 1
6 4 / / SAVEB 129
7 129
8 1 / / LOADA 128
9 128
10 3 / / CONB 5
11 5
12 10 / / COM
13 14 / / JG 17
14 31
15 1 / / LOADA 129
16 129
17 2 / / LOADB 128
18 128
19 8 / / mul
20 5 / / SAVEC 129
21 129
22 1 / / LOADA 128
23 128
24 3 / / CONB 1
25 1
26 6 / / ADD
27 5 / / SAVEC 128
28 128
29 11 / / JUMP 4
30 8
31 18 / / STOP
Anda dapat melihat bahwa tujuh baris kode C menjadi 18 baris bahasa assembly, dan yang menjadi 32 bytes dalam ROM.
Decoding
Decoder instruksi kebutuhan untuk mengubah masing-masing opcodes menjadi serangkaian sinyal yang mendorong berbagai komponen di dalam mikroprosesor. Mari kita ambil instruksi ADD sebagai contoh dan melihat apa yang perlu dilakukan:
1. Selama siklus jam pertama, kita perlu me-load instruksi. Oleh karena itu perlu dekoder instruksi:
* Mengaktifkan buffer tri-negara untuk program counter
* Mengaktifkan baris RD
* Mengaktifkan data dalam buffer tri-state
* Gerendel instruksi ke register instruksi
2. Selama siklus jam kedua, maka instruksi ADD diterjemahkan. Yang perlu dilakukan sangat sedikit:
* Mengatur pengoperasian ALU penambahan
* Latch output dari ALU ke register C
3. Selama siklus jam ketiga, program counter bertambah (dalam teori ini dapat tumpang tindih ke dalam kedua siklus clock).
0 komentar: on "Cara Kerja Mikroprosesor"
Posting Komentar