Quá trình viết microcode cho bộ nhớ điều khiển của bộ xử lý trung tâm của máy tính được gọi là lập trình vi mô. Microcode cho bộ nhớ điều khiển được tạo sau khi cấu hình của máy tính và thiết bị điều khiển được lập trình vi mô của nó được thiết lập. Bộ nhớ điều khiển là một phần của bộ điều khiển lưu trữ tất cả các chương trình vi mô không thể sửa đổi thường xuyên. Mỗi dòng của chương trình vi mô đại diện cho một cấu trúc vi mô chỉ định một hoặc nhiều hoạt động vi mô. Có hai cách khác nhau có thể tổ chức các vi lệnh: ngang và dọc. Các vi lệnh ngang thể hiện một số hoạt động vi mô được thực hiện cùng một lúc. Tuy nhiên, trong các trường hợp cực đoan, mỗi vi cấu trúc ngang kiểm soát tất cả các tài nguyên phần cứng của hệ thống. Ngược lại, cấu trúc vi mô dọc giống như định dạng ngôn ngữ máy thông thường bao gồm một thao tác và một vài toán hạng. Trái ngược với các vi lệnh ngang, cấu trúc vi mô dọc thể hiện các hoạt động vi mô đơn.
Trong lập trình vi mô ngang, mỗi bit được xác định cụ thể với một điểm điều khiển duy nhất, điều này cho biết rằng hoạt động vi mô tương ứng sẽ được thực hiện. Vì mỗi vi cấu trúc có khả năng đủ để kiểm soát đồng thời nhiều tài nguyên, nên nó có lợi thế tiềm năng là sử dụng phần cứng hiệu quả hơn và ngoài ra, nó đòi hỏi số lượng vi lệnh nhỏ hơn trên mỗi chương trình vi mô. Nó cho phép mức độ song song cao hơn với số lượng mã hóa tối thiểu và các trường điều khiển riêng biệt. Tuy nhiên, phát triển các chương trình vi mô sử dụng tài nguyên tối ưu hoặc hiệu quả là một nhiệm vụ phức tạp. Lập trình vi mô ngang cung cấp tính linh hoạt cao vì mỗi bit điều khiển độc lập với nhau. Nó có chiều dài lớn hơn nên thường chứa nhiều thông tin hơn các vi lệnh dọc.
Lập trình vi mô dọc sử dụng một định dạng thay đổi và mức độ mã hóa cao hơn, trái ngược với lập trình vi mô ngang. Nó không chỉ rút ngắn thời gian của vi cấu trúc, mà còn ngăn khả năng tăng bộ nhớ ảnh hưởng trực tiếp đến chiều dài vi cấu trúc. Mỗi vi cấu trúc dọc thường đại diện cho một hoạt động vi mô duy nhất. Một mã được sử dụng cho mỗi hoạt động vi mô được thực hiện và bộ giải mã dịch mã thành các tín hiệu điều khiển riêng lẻ. Bởi vì chỉ hoạt động vi mô được thực hiện được chỉ định, các trường vi cấu trúc được sử dụng đầy đủ. Cộng với các chương trình vi mô dọc dễ viết hơn so với các đối tác ngang của chúng. Cấu trúc vi mô dọc giống như định dạng ngôn ngữ máy thông thường bao gồm một thao tác và một vài toán hạng. Do đó, nó dễ sử dụng để lập trình vi mô. Nó thường bao gồm bốn đến sáu trường yêu cầu khoảng 16 đến 32 bit cho mỗi lệnh.
Lập trình vi mô dọc sử dụng một định dạng biến đổi và mức độ mã hóa cao hơn, trái ngược với lập trình vi mô ngang. Trong lập trình vi mô dọc, các bit điều khiển được mã hóa với mỗi mã được sử dụng cho từng hành động được thực hiện và bộ giải mã lệnh giải mã mã thành nhiều tín hiệu điều khiển. Ngược lại, lập trình vi mô ngang bao gồm các vi lệnh ngang không sử dụng mã hóa nào cả. Chúng đại diện cho mỗi bit điều khiển trong datapath được gán với một bit riêng trong định dạng vi cấu trúc. Mỗi bit trong trường điều khiển được gắn vào một dòng điều khiển.
Lập trình vi mô ngang thường tuân theo cách tiếp cận tuần tự để chỉ định vi cấu trúc tiếp theo trong một chương trình vi mô, tương tự như định dạng ngôn ngữ máy thông thường. Mỗi bit được xác định cụ thể với một điểm kiểm soát duy nhất, cho biết rằng hoạt động vi mô tương ứng sẽ được thực hiện. Các vi lệnh nhánh có điều kiện và vô điều kiện sau đó được yêu cầu để phá vỡ chuỗi. Lập trình vi mô dọc có thể sử dụng sơ đồ địa chỉ tương đối trong đó cần một vài bit để xác định bước nhảy tương đối hoặc bước lùi. Điều này đòi hỏi tính toán địa chỉ ở mỗi bước.
- Các chương trình vi mô dọc có mật độ mã tốt hơn có lợi cho kích thước của cửa hàng điều khiển. Cấu trúc vi mô dọc giống như định dạng ngôn ngữ máy thông thường bao gồm một thao tác và một vài toán hạng. Mỗi vi cấu trúc dọc đại diện cho một hoạt động vi mô duy nhất, trong khi các toán hạng có thể chỉ định nguồn dữ liệu và nguồn. Mặt khác, các chương trình vi mô ngang thường đại diện cho nhiều hoạt động vi mô được thực thi cùng một lúc. Trong trường hợp cực đoan, mỗi vi cấu trúc ngang điều khiển đồng thời một số tài nguyên phần cứng.
- Các chương trình vi mô ngang cung cấp tính linh hoạt được cải thiện vì mỗi bit điều khiển độc lập với nhau. Nó có chiều dài lớn hơn nên thường chứa nhiều thông tin hơn các vi lệnh dọc. Các vi lệnh ngang với 48 bit trở lên là khá phổ biến. Các chương trình vi mô ngang có lợi thế tiềm năng là sử dụng phần cứng hiệu quả hơn và trên hết, nó đòi hỏi số lượng vi lệnh nhỏ hơn trên mỗi chương trình vi mô. Mặt khác, các vi lệnh dọc, nhỏ gọn hơn nhưng kém linh hoạt hơn các vi lệnh ngang. Do đó, cách tiếp cận theo chiều dọc rất dễ sử dụng để lập trình vi mô.
Trái ngược với các vi lệnh ngang, cấu trúc vi mô dọc thể hiện các hoạt động vi mô đơn lẻ. Các chương trình vi mô ngang cho phép mức độ song song cao hơn với số lượng mã hóa tối thiểu và các trường điều khiển riêng biệt trong khi các bit điều khiển được mã hóa trong các chương trình vi mô dọc. Sự lựa chọn giữa hai phương pháp cần phải được thực hiện cẩn thận. Tuy nhiên, trong thực tế, các nhà thiết kế sử dụng kết hợp các định dạng vi cấu trúc ngang và dọc để cấu trúc kết quả nhỏ gọn nhưng hiệu quả.