Proses penulisan mikrokode untuk memori kontrol unit pemrosesan pusat komputer disebut pemrograman mikro. Mikrokode untuk memori kontrol dihasilkan setelah konfigurasi komputer dan unit kontrol mikro yang diprogram dibuat. Memori kontrol adalah bagian dari unit kontrol yang menyimpan semua program mikro yang tidak dapat sering dimodifikasi. Setiap baris program mikro mewakili instruksi mikro yang menentukan satu atau lebih operasi mikro. Ada dua cara berbeda yang bisa diatur dalam konstruksi mikro: horisontal dan vertikal. Microinstructions horisontal mewakili beberapa operasi mikro yang dijalankan pada saat bersamaan. Namun, dalam kasus yang ekstrim, setiap microinstruction horisontal mengontrol semua sumber daya perangkat keras sistem. Sebaliknya, microinstruction vertikal menyerupai format bahasa mesin konvensional yang terdiri dari satu operasi dan beberapa operan. Berbeda dengan microinstructions horisontal, microinstruction vertikal mewakili operasi mikro tunggal.
Dalam pemrograman mikro horisontal, setiap bit diidentifikasi secara khusus dengan titik kontrol tunggal, yang menunjukkan bahwa operasi mikro yang sesuai harus dijalankan. Karena setiap microinstruction cukup mampu untuk mengendalikan beberapa sumber daya secara bersamaan, ia memiliki potensi keuntungan dari pemanfaatan perangkat keras yang lebih efisien dan di samping itu, mikrostruktur memerlukan jumlah yang lebih kecil per mikroprogram. Ini memungkinkan tingkat paralelisme yang lebih tinggi dengan jumlah minimum bidang pengkodean dan kontrol terpisah. Namun, mengembangkan program mikro yang menggunakan sumber daya secara optimal atau efisien adalah tugas yang kompleks. Pemrograman mikro horisontal menawarkan fleksibilitas yang besar karena masing-masing bit kontrol tidak tergantung satu sama lain. Ini memiliki panjang lebih besar sehingga biasanya berisi lebih banyak informasi daripada mikro-konstruksi vertikal.
Pemrograman mikro vertikal menggunakan format variabel dan tingkat pengkodean yang lebih tinggi, sebagai lawan dari pemrograman mikro horizontal. Ini tidak hanya mempersingkat panjang microinstruction, tetapi juga mencegah peningkatan kapasitas memori yang secara langsung mempengaruhi panjang microinstruction. Setiap microinstruction vertikal umumnya mewakili satu operasi mikro. Kode digunakan untuk setiap operasi mikro yang akan dilakukan dan decoder menerjemahkan kode menjadi sinyal kontrol individu. Karena hanya operasi mikro yang akan dilakukan yang ditentukan, bidang microinstruction sepenuhnya digunakan. Plus program vertikal mikroprosesor lebih mudah untuk ditulis daripada program horisontal. Microinstruction vertikal menyerupai format bahasa mesin konvensional yang terdiri dari satu operasi dan beberapa operan. Karena itu mudah digunakan untuk pemrograman mikro. Secara umum terdiri dari empat hingga enam bidang yang membutuhkan sekitar 16 hingga 32 bit per instruksi.
Pemrograman mikro vertikal menggunakan format variabel dan tingkat pengkodean yang lebih tinggi, sebagai lawan dari pemrograman mikro horizontal. Dalam pemrograman mikro vertikal, bit kontrol dikodekan dengan setiap kode yang digunakan untuk setiap tindakan yang akan dilakukan dan decoder instruksi menerjemahkan kode menjadi beberapa sinyal kontrol. Sebaliknya, horisontal pemrograman mikro melibatkan microinstructions horisontal yang tidak menggunakan pengkodean sama sekali. Mereka mewakili setiap bit kontrol dalam datapath yang ditugaskan dengan bit terpisah dalam format microinstruction. Setiap bit di bidang kontrol dilampirkan ke garis kontrol.
Microprogramming horizontal umumnya mengikuti pendekatan sekuensial untuk menentukan microinstruction berikutnya dalam mikroprogram, mirip dengan format bahasa mesin konvensional. Setiap bit diidentifikasi secara khusus dengan titik kontrol tunggal, yang menunjukkan bahwa operasi mikro yang sesuai akan dijalankan. Mikrostruktur cabang bersyarat dan tanpa syarat khusus kemudian diperlukan untuk memecah urutan. Pemrograman mikro vertikal dapat menggunakan skema pengalamatan yang relatif di mana beberapa bit diperlukan untuk menentukan relatif ke depan atau ke belakang. Ini membutuhkan perhitungan alamat di setiap langkah.
- Program mikro vertikal memiliki kepadatan kode yang lebih baik yang bermanfaat untuk ukuran toko kontrol. Microinstruction vertikal menyerupai format bahasa mesin konvensional yang terdiri dari satu operasi dan beberapa operan. Setiap microinstruction vertikal mewakili satu operasi mikro, sementara operan dapat menentukan data sink dan sumber. Sebaliknya, mikroprogram horizontal umumnya mewakili banyak operasi mikro yang dijalankan pada saat yang sama. Dalam kasus ekstrem, setiap microinstruction horisontal mengontrol beberapa sumber daya perangkat keras secara bersamaan.
- Microprogram horisontal menawarkan peningkatan fleksibilitas karena masing-masing bit kontrol tidak tergantung satu sama lain. Ini memiliki panjang lebih besar sehingga biasanya berisi lebih banyak informasi daripada mikro-konstruksi vertikal. Microinstructions horisontal dengan 48 atau lebih bit cukup umum. Microprogram horisontal memiliki potensi keuntungan menggunakan perangkat keras lebih efisien dan di atasnya, membutuhkan jumlah mikroinstruksi yang lebih kecil per mikroprogram. Microinstructions vertikal, di sisi lain, lebih kompak tetapi kurang fleksibel daripada microinstructions horisontal. Akibatnya, pendekatan vertikal mudah digunakan untuk pemrograman mikro.
Berbeda dengan microinstructions horisontal, microinstruction vertikal mewakili operasi mikro tunggal. Program mikro horisontal memungkinkan tingkat paralelisme yang lebih tinggi dengan jumlah minimum bidang pengkodean dan kontrol yang terpisah sedangkan bit kontrol dikodekan dalam program mikro vertikal. Pilihan antara dua pendekatan perlu dilakukan dengan hati-hati. Namun, secara praktis, perancang menggunakan kombinasi format mikro dan horizontal sehingga struktur yang dihasilkan kompak namun efisien.