Apakah prosesor ARM seperti cortex-a9 menggunakan mikrokode?

11

Apakah prosesor ARM (baru dan lama) menggunakan mikrokode? Jika demikian, lalu untuk apa? Bukankah instruksi mereka cukup sederhana untuk dieksekusi secara langsung tanpa diterjemahkan ke dalam operasi mikro?

Kraken
sumber

Jawaban:

11

TL, DR; Sementara prosesor ARM menggunakan konsep yang mirip dengan CPU berkode mikro (mis. Ada blok perangkat keras yang menerjemahkan instruksi menjadi satu atau lebih operasi mikro ), mereka tidak microcoded dalam arti tradisional yang menggunakan ROM untuk menyimpan setiap instruksi mikro, instruksi / operasi mikro ini juga tidak dapat dimodifikasi setelah diproduksi di perangkat keras yang sebenarnya. Memang, Prosesor ARM digunakan kontrol bawaan dalam instruksi decoder untuk menghasilkan operasi mikro.

Dalam prakteknya, bagaimanapun, memodifikasi instruksi decoder dapat mirip dengan memodifikasi prosesor mikrokode, karena ARM melisensikan bahasa deskripsi perangkat keras ( HDL ) kode sumber arsitektur CPU-nya kepada masing-masing produsen, membuat modifikasi tingkat perangkat keras secara signifikan lebih mudah diimplementasikan. Lihat Bagian Decoder instruksi dalam Desain Mikroprosesor Wikibook untuk lebih banyak perbedaan antara decoder instruksi RISC dan CISC yang khas.


Sedangkan arsitektur ARM itu sendiri tidak microcoded dalam pengertian tradisional, instruksi individu adalah diterjemahkan ke dalam operasi mikro yang lebih kecil . Prosesor ARM modern jauh dari "sederhana" - walaupun instruksinya sendiri sangat ortogonal, ada banyak teknologi modern (mis. Pipelining, instruksi superscalar, eksekusi out-of-order, caching, instruksi kompleks yang diperluas seperti unit floating-point) atau instruksi NEON) yang dimiliki oleh inti A9 modern. Memang setiap prosesor dapat cukup sederhana untuk dieksekusi tanpa terjemahan ke operasi mikro, tetapi ini pada dasarnya menempatkan "semua telur Anda dalam satu keranjang" - Anda tidak dapat memperbaiki kesalahan yang mungkin terjadi dalam set instruksi, atau memperluas / memodifikasinya setelah produksi.

Namun, jika kita hanya berbicara tentang instruksi decode panggung, maka memang banyak prosesor ARM tidak mikrokode dengan cara yang memungkinkan modifikasi setelah fakta, meskipun ini mungkin karena sebagian besar produsen lisensi teknologi ARM diberi akses ke kode sumber perangkat keras yang sebenarnya (ditulis dalam HDL). Ini mengurangi konsumsi daya karena tahap mikrokode tidak diperlukan, tetapi instruksi individual "dikompilasi" ke dalam blok perangkat keras yang sebenarnya. Ini juga memungkinkan untuk koreksi errata oleh masing-masing produsen.

Memang, bahkan dalam CPU berbasis CISC (mis. X86), tidak ada kebutuhan untuk penggunaan mikrokode. Namun dalam praktiknya, kompleksitas set instruksi, dikombinasikan dengan berbagai perbedaan dalam perizinan, konsumsi daya, dan aplikasi, membuat pilihan mikrokode ideal untuk kasus x86. Dalam kasus ARM, bagaimanapun, itu kurang berguna karena perubahan pada set instruksi (decoder) jauh lebih mudah untuk diimplementasikan dan dikontrol dalam hal perangkat keras itu sendiri (karena dapat disesuaikan oleh pabrikan).


Meskipun memiliki mikrokode sebenarnya dapat menyederhanakan desain prosesor dalam beberapa kasus (karena setiap instruksi ada sebagai "program mikro" yang bertentangan dengan perangkat keras yang sebenarnya), ini secara efektif hanya sebagai pengurai kode (mis. Ekstensi jempol-2 , memungkinkan instruksi panjang variabel ada dengan menambahkan a decoder instruksi terpisah sejalan dengan dekoder instruksi ARM). Meskipun secara fungsional unit-unit ini dapat diimplementasikan menggunakan mikrokode, ini tidak akan bijaksana dalam hal konsumsi daya, karena Anda perlu menentukan output untuk setiap sinyal kontrol dalam CPU itu sendiri, meskipun tidak diperlukan. Ini tidak tidak ada hubungannya dengan bagaimana "kompleks" CPU itu sendiri, bagaimanapun, karena ARM core memiliki semua konstruksi modern yang diharapkan (perpipaan, cache instruksi / data, buffer micro-TLB, prediksi cabang, memori virtual, dll ... ).

Dalam kasus ARM, mengingat ortogonalitas dari set instruksi, kompleksitas yang terlibat dalam menerapkan pendekatan mikrokodekan akan lebih besar daripada manfaat dengan mengubah perangkat keras yang relevan secara langsung dalam blok dekoder instruksi. Meskipun ini tentu saja mungkin, akhirnya "reinventing the wheel" bisa dibilang, mengingat Anda mampu secara langsung memodifikasi (dan menyusun / menguji / meniru) perubahan pada perangkat keras.


Anda dapat "memikirkan" kode sumber ARM itu sendiri sebagai jenis mikrokoding dalam kasus ini, meskipun alih-alih menyimpan setiap operasi mikro / program mikro dalam ROM yang dapat dimodifikasi setelahnya, mereka diterapkan secara langsung dalam perangkat keras dalam dekoder instruksi. Mengingat instruksi decoder itu sendiri ditulis dalam VHDL / Verilog, membuat perubahan pada instruksi yang ada semudah memodifikasi kode sumber, mengkompilasi ulang, dan menguji perangkat keras baru (mis. Pada FPGA atau simulator). Ini kontras dengan kompleksitas perangkat keras x86 modern, yang jauh lebih sulit untuk diuji / disimulasikan selama pengembangan, dan bahkan lebih sulit untuk memodifikasi setelah produksi (karena ukuran dalam hal transistor jauh melebihi apa yang dapat dijalankan di dalam bahkan modern yang paling mahal sekalipun). FPGA, sehingga menambah manfaat menggunakan toko mikrokode). Tentu saja fakta yang sama berlaku untuk ARM, tetapi perbedaannya dalam pengembangan - seseorang dapat membuat perubahan pada perangkat keras prosesor, dan kemudian secara langsung melihat / menguji perubahan pada fisik perangkat keras menggunakan FPGA.

Breakthrough
sumber
Jadi, mikrokode ARM berada di perangkat keras, bukan?
Kraken
1
@Raken dalam arti tertentu, ya; alih-alih menggunakan a microsequencer , setiap instruksi diterjemahkan oleh instruksi decoder langsung ke operasi mikro individu / petunjuk mikro (satu atau lebih siklus jam) untuk opcode itu. Itu Artikel instruksi Dekoder dari Microprocessor Design Wikibook juga berguna dalam menjelaskan perbedaan antara decoder instruksi RISC dan CISC yang khas.
Breakthrough
Terima kasih. Ini banyak menjelaskan bagi saya. Terima kasih lagi. +1 untuk upaya ini.
Kraken