Berapa jumlah maksimum opcodes untuk pertanyaan, jawabannya adalah opsi c, tetapi saya pikir itu adalah opsi d, karena, setiap alamat menentukan setiap lokasi memori, ada 16 baris alamat, yang berarti 2 ^ 16 alamat yaitu, 2 ^ 16 lokasi memori.
Jadi, jika setiap lokasi berisi satu opcode, total 2 ^ 16 lokasi berisi 2 ^ 16 opcodes dan ini adalah jumlah opcode maksimum, tetapi jawabannya diberikan sebagai c, yaitu 2 ^ 12. Bagaimana ini mungkin?
microprocessor
Chiduruppula Sharath Kumar
sumber
sumber
Jawaban:
Semua opsi salah . Jumlah maksimum opcode (unik) yang dapat dijalankan prosesor tidak dibatasi oleh lebar bus.
Biasanya CPU 12+ bit dirancang untuk memiliki satu perintah per kata data sehingga dapat membaca sebagian besar instruksi sekaligus. Jadi CPU normal direkayasa hingga batas 2 ^ 12 opcodes.
Arsitektur CPU yang ada yang memiliki lebih dari 2 ^ 12 = 4096 opcodes sangat langka hanya karena seseorang hampir tidak pernah membutuhkan begitu banyak - terlalu banyak untuk dipelajari, terlalu banyak untuk benar-benar berguna, terlalu banyak ruang silikon yang terbuang sia-sia.
Pembaruan : Seperti yang ditunjukkan dalam komentar, semua kemungkinan variasi set instruksi x86 dapat benar-benar bertambah hingga lebih dari 6000 tergantung pada bagaimana Anda menghitung! Ini lebih merupakan pengecualian.
Namun untuk CPU 4-bit 2 ^ 4 = 16 instruksi sangat sering tidak cukup, sehingga banyak dari prosesor tersebut memiliki lebih banyak.
Mungkin ada beberapa cara dan alasan CPU dapat memasukkan lebih banyak opcode daripada yang sesuai dengan bus data, termasuk:
Instruksi rentang kata
Prosesor tidak perlu membaca perintah dalam satu siklus data tunggal - prosesor dapat menggunakan beberapa siklus konsekuensial. Sebenarnya sebagian besar CPU tidak - meskipun lebih umum digunakan untuk argumen instruksi daripada memperluas ruang opcode.
Contoh: intel 4004 hanya memiliki 4 baris yang digandakan sebagai baris data / alamat, kata data 4-bit, tetapi lebih dari 40 opcode dalam instruksi 8-bit.
Awalan dan akhiran
Prosesor (CISC) mungkin memiliki banyak awalan dan akhiran instruksi yang diperlukan.
Itu diawali dengan instruksi aktual untuk mengubah apa yang dilakukannya - baik sedikit atau sepenuhnya.
Itu tergantung pada definisi Anda tentang "opcode unik". Jika seseorang menganggap setiap bagian dari instruksi yang bukan data menjadi bagian dari opcode, jumlah totalnya akan mencakup semua variasi yang mungkin. Namun, beberapa percaya bahwa imbuhan itu adalah bagian yang berbeda dari pengajaran.
Contoh: CPU Intel x86 sebenarnya tidak memiliki 4M opcode. Namun jika Anda menghitung semua awalan sebagai bagian dari opcode, CPU modern memungkinkan untuk instruksi selama 15 bYtes - itu BANYAK kemungkinan opcode. Meskipun banyak yang hanya akan melakukan hal yang sama - jadi ini tergantung pada definisi mereka "unik".
Mode
Sebuah prosesor mungkin memiliki beberapa mode operasi di mana ia mungkin memiliki set opcode yang sama sekali berbeda.
Contoh: intel x86_64 memiliki mode 32-bit (real / v86 / protected) dan 64-bit yang memiliki opcode yang berbeda. CPU ARM dapat memiliki mode ARM 32-bit dan jempol 16-bit.
Multiplexing bit bus
Pertanyaan menyatakan "jalur data" dan "jalur alamat", namun bus data internal dan bus alamat internal mungkin lebih luas daripada jumlah jalur bus aktual.
Data bus multipleks dikirim secara berurutan, yaitu babak pertama, lalu babak kedua. CPU menyimpannya ke dalam register internal berukuran penuh dan beroperasi pada mereka.
Ini sering dilakukan untuk mengurangi biaya dan / atau ukuran chip fisik tapak.
Contohnya termasuk intel 4004, apa pun di LPC data bus, dan NEC VR4300, CPU Nintendo64 yang hanya memiliki bus data 32-line.
Tidak ada bus paralel
Sebagai kelanjutan dari poin sebelumnya, CPU bahkan tidak perlu mengekspos bus paralel sama sekali.
CPU dapat dengan mudah hanya mengekspos sekuensial bus seperti I2C, SPI, dll.
Mungkin tidak terlalu hemat biaya untuk menghasilkan CPU khusus seperti itu, tetapi banyak mikrokontroler dengan jumlah kecil (termasuk CPU dan memori) dibuat sedemikian rupa untuk menghemat pin-pin berharga tersebut untuk sesuatu yang lebih bermanfaat. Misalnya, chip atmel ATTINY4 / 5/6/10 hanya memiliki total 6 pin, dua untuk daya, satu untuk reset, tiga tujuan umum. Instruksi dikirim melalui antarmuka 3-baris eksklusif secara berurutan.
Tergantung pada definisi Anda tentang mikrokontroler, itu dapat dianggap mikroprosesor atau dapat diprogram untuk bertindak satu (yaitu mensimulasikan CPU khusus dengan bus berurutan atau bus).
Pertanyaan ini dengan jelas menyatakan bahwa beberapa jenis bus data terpapar, tetapi bukan bahwa itu adalah bus paralel. Dalam teori 12-jalur data bus bisa terdiri dari data serial tunggal baris dan 11 auxilary / tanah / Status garis , walaupun itu mungkin tidak akan menjadi ide yang sangat waras.
Bus instruksi khusus
Sebenarnya prosesor bahkan tidak perlu menerima instruksi pada jalur bus yang sama seperti halnya data.
Ini dapat dengan mudah menjadi kasus ketika ALU adalah chip diskrit daripada bagian dari mikroprosesor tetapi tidak layak secara ekonomi sekarang sebagian besar waktu.
Tetapi tidak ada yang menghalangi Anda untuk mengimplementasikan CPU dengan jalur khusus hanya untuk instruksi. CPU seperti itu mungkin berguna ketika operasi tunggal harus dilakukan pada array data (SIMD).
Karena lebar bus instruksi sepenuhnya arbitrer, demikian juga jumlah opcode maksimum yang dimungkinkan.
sumber
Jumlah maksimum opcodes memang dapat dipikirkan dalam beberapa cara:
Ini dapat dikumpulkan dari lebar instruksi dan bukan lebar bus data. Biasanya opcode akan masuk ke dalam satu akses memori, dan kemudian jawabannya adalah 2 ^ 12. Tetapi prosesor dapat menerapkan proses decoding opcode multi-siklus untuk memperpanjang jumlah opcode yang mungkin melampaui 2 ^ 12.
Jumlah maksimum instruksi (berisi opcodes) yang dapat langsung ditangani oleh prosesor dibatasi oleh lebar bus alamat (2 ^ 16). Namun secara tidak langsung prosesor dapat mengatasi lebih banyak memori misalnya opcode dapat memfasilitasi pertukaran halaman atau operasi serupa untuk mengambil instruksi dari sumber lain.
sumber
Anda benar-benar bingung oleh pertanyaan ini - ini ditulis dengan sangat buruk.
Namun, saya menduga bahwa maksud dari pertanyaan ini adalah untuk menentukan ukuran kata instruksi untuk mesin. Mengingat data yang diberikan sangat tidak lengkap, ini harus sesuai dengan lebar bus data ; lebar bus alamat menentukan ukuran maksimum memori utama.
Dalam praktiknya, bidang "opcode" dari instruksi mesin yang diberikan seringkali jauh lebih kecil daripada instruksi itu sendiri, namun instruksinya mungkin lebih luas daripada bus data.
Motorola 68008 yang lama adalah contohnya - itu adalah versi yang dikurangi dari 68000 dengan bus data 8-bit, tetapi menggunakan kata-kata instruksi 16-bit yang sama, di mana biasanya 7 bit menentukan opcode (sisanya) mengidentifikasi sumber dan register tujuan, dan mode pengalamatan, yang semuanya harus dianggap operan , bukan opcode ). Jika Anda memasukkan bit mode pengalamatan ke dalam opcode, seperti yang dilakukan beberapa orang, itu membuat bidang opcode 10-bit secara total. Instruksi sebenarnya bisa jauh lebih lama dalam beberapa mode pengalamatan.
sumber
Edson DeCastro mendesain komputer hampir persis seperti itu, PDP-8, dengan 15 alamat dan 12 jalur data.
Jadi jawaban untuk pertanyaan yang diposting adalah 574 op-kode, karena PDP-8 memiliki 284 op-kode, dan Ed hanya setengah gila.
sumber