Bagaimana prosesor 'tahu' apa arti perintah yang berbeda?
Saya sedang memikirkan perintah tingkat perakitan seperti MOV, PUSH, CALL, dll ...
cpu
computer-architecture
cpu-architecture
Simon Verbeke
sumber
sumber
Jawaban:
Ketika komputer menafsirkan instruksi tingkat perakitan , instruksi ini diubah menjadi setara binernya agar CPU dapat membaca. Ketika CPU mengeksekusi instruksi, itu menginterpretasikan bagian opcode dari instruksi ke dalam "mikroprogram" individual, berisi mikrokode mereka yang setara. Asal tahu saja, instruksi perakitan lengkap terdiri dari opcode dan semua data yang berlaku yang menyertainya, jika diperlukan (mis. Nama register, alamat memori).
Instruksi mikrokode adalah level yang sangat rendah (lebih dari perakitan), dan mengontrol sinyal digital aktual yang mengontrol aliran logika dalam mikroprosesor. Misalnya, satu instruksi mikrokode dapat memperbarui bendera register kode kondisi dengan nilai baru, atau menghubungkan register CPU dengan salah satu unit ALU . Tugas yang lebih kompleks mungkin dilakukan, tetapi ini menunjukkan kepada Anda gambaran umum tentang apa yang digunakan untuk mikrokode.
Alur umum dari kompilasi ke eksekusi adalah sebagai berikut. Instruksi perakitan dirakit (diubah menjadi biner 0s dan 1s, atau mulai sekarang, sinyal logika). Sinyal-sinyal logika ini pada gilirannya ditafsirkan oleh CPU, dan berubah menjadi sinyal-sinyal logika tingkat lebih rendah yang mengarahkan aliran CPU untuk menjalankan instruksi tertentu. Ini dapat mengambil satu atau beberapa siklus jam, tergantung pada arsitektur dan desain prosesor (kebanyakan manual referensi prosesor memberi tahu Anda berapa banyak siklus clock yang diperlukan untuk menjalankan instruksi tertentu, seperti yang ini misalnya ).
Semua ini dilakukan dengan mikrokode yang diprogram dengan susah payah (secara fisik tertanam di dalam prosesor dalam beberapa jenis ROM , diatur selama pembuatan), yang mengarahkan aliran melalui gerbang logika tingkat rendah yang sebenarnya . Ini memberikan antarmuka antara instruksi perakitan abstrak dan logika listrik fisik dalam prosesor.
Jadi, secara ringkas, instruksi prosesor dirakit dan dimuat oleh prosesor. Prosesor kemudian akan menggunakan instruksi ini untuk mencari mikroprogram (dalam bentuk mikrokode) yang sesuai dengan instruksi tertentu, yang merupakan "sebenarnya" yang menjalankan instruksi. Setelah mikrokode untuk instruksi tertentu telah dieksekusi (yang dapat mengambil satu atau beberapa siklus clock), prosesor mengeksekusi mikrokode untuk mengambil instruksi berikutnya, dan siklus berulang.
sumber
Prosesor tidak benar-benar 'tahu' apa perintahnya. Perintah hanyalah pola biner yang menyebabkan prosesor melakukan apa yang kami artikan perintah artinya.
Misalnya, operasi ADD-R1-into-R2 akan menyebabkan nilai register 1 dan 2 mencapai ALU (unit aritmatika dan logika), menyebabkan ALU menggunakan output dari penambah alih-alih berbagai hal lainnya, dan menyebabkan output ALU untuk menggantikan nilai dalam register 2. Ada sirkuit logika sederhana untuk mencapai semua hal ini ( multiplexer , adder , counter , ...), meskipun prosesor nyata menggunakan optimasi yang sangat rumit.
Sepertinya Anda bertanya bagaimana mobil bisa melambat ketika Anda menginjak rem. Mobil tidak tahu, pedal rem kebetulan secara tidak langsung mengontrol bagaimana bantalan keras ditekan ke roda.
sumber
http://en.wikipedia.org/wiki/Assembler_language
Dengan kata lain, ketika Anda 'mengumpulkan' program perakitan Anda, instruksi Anda seperti
MOV AL, 61h
dikonversi menjadi angka, yang diasosiasikan CPU dengan makna khusus dan kemudian bertindak sesuai.
sumber
Bacaan yang disarankan:
Lihat juga catatan kursus dari CS152: Arsitektur dan Rekayasa Komputer di UC Berkeley, kursus di mana siswa menerapkan CPU.
Jika Anda mencari "cpu buatan sendiri" di Google, Anda akan menemukan banyak barang.
sumber
Pada level paling rendah yang paling ekstrem, yang bisa dilakukan CPU hanyalah menambahkan. Dari penjumlahan, ia dapat mengurangi, melipatgandakan, dan membagi (mengingat ini hanya penambahan dengan cara yang berbeda). CPU menggunakan ini untuk memindahkan data di dalam memori dengan menerapkan penambahan ke alamat memori.
Perlu diingat bahwa ini berada pada level serendah mungkin. CPU sebenarnya "memahami" perintah tertentu, dalam bentuk mikrokode. Lihat jawaban Breakthrough, itu ditulis dengan sangat baik.
sumber
Saya telah memberikan jawaban terkait di programmers.stackexchange.com, lihat Bagaimana cara kerja komputer? di mana saya berjalan dengan singkat atas segala sesuatu dari bawah ke atas tentang bagaimana komputer pergi menafsirkan instruksi untuk memindahkan elektron.
sumber