[NB: câu trả lời này được dành riêng để giải quyết các chỉnh sửa gần đây và không thêm vào một số câu trả lời âm thanh đã được đăng.]
Vì vậy, để nhắc lại: microcode (ít nhất là xấp xỉ đầu tiên) là một loại phần sụn cụ thể.
"Microcode" trong bối cảnh này chỉ là tiếp thị trên "phần mềm xử lý".
Vâng, nó không phải là tiếp thị. Tiếp thị sẽ gọi nó là XBoost Pro (TM) hoặc một cái gì đó. Thay vào đó, đó là một thuật ngữ kỹ thuật; nếu bạn thiết kế CPU, sự khác biệt giữa microcode và phần sụn khác của CPU (và loại phần sụn điển hình cho các thiết bị khác) rất quan trọng đối với bạn. Nếu không, có lẽ là không.
Nếu bạn thiết kế bo mạch chủ hoặc viết hệ điều hành, bạn có thể sử dụng "cập nhật vi mã" làm tốc ký cho "cập nhật phần sụn CPU" khó sử dụng và ít quen thuộc hơn. Hầu hết các bản cập nhật firmware CPU chủ yếu ảnh hưởng đến microcode, vì vậy nó đủ gần với cùng một thứ. Bạn có thể biết sự khác biệt, nhưng bạn không cần quan tâm đến nó.
Người dùng cuối không cần biết hoặc quan tâm đến sự khác biệt và trong một thế giới lý tưởng sẽ không bao giờ nghe thấy từ "microcode" nào cả.
Tôi đoán nó đã thu hút sự chú ý của bạn trên báo chí về các lỗ hổng thực thi đầu cơ gần đây, mặc dù bạn cũng có thể đã nghe thấy nó sớm hơn trong một bối cảnh làm cho rõ ràng hơn rằng bạn không cần phải quan tâm. Những lỗ hổng này đã được phát hành sớm hơn so với kế hoạch, điều này có thể dẫn đến việc báo chí được kiểm duyệt ít hơn so với trước đây. Từ quan điểm của người dùng cuối, bạn cần cài đặt các bản cập nhật BIOS, cập nhật hệ điều hành và trong một số trường hợp cập nhật ứng dụng; bạn không cần biết cũng không quan tâm nếu bất kỳ thứ nào trong số này bao gồm microcode mới.
Vì vậy, ngay cả khi nhận ra rằng có lẽ bạn không cần phải biết hoặc quan tâm, bạn vẫn có thể quan tâm đến sự tò mò thuần túy: làm thế nào bạn có thể phân biệt microcode với phần sụn khác?
Chà, điều đầu tiên nhận ra là không nhất thiết phải có một định nghĩa khó và nhanh, đó là tình huống Bleggs và Rubes . Tuy nhiên, có một số điều chúng ta có thể nói về microcode:
Microcode thường chạy bên trong CPU chứ không phải trên CPU. Đó là quan điểm cấp cao.
Kiến trúc của microcode thường trông khá khác biệt với kiến trúc của mã thông thường, bao gồm cả phần mềm thông thường. Nó có khả năng song song cao và được triển khai gần hơn với phần cứng. Một số câu trả lời hiện có (bao gồm cả câu trả lời của riêng bạn) thảo luận về điều này, mặc dù cần lưu ý rằng các chi tiết có thể thay đổi tùy thuộc vào thiết kế CPU.
Mặc dù phần cứng thường được thiết kế để chỉ chạy phần sụn do nhà sản xuất cung cấp, nhưng nó không đặc biệt hiếm khi sử dụng phần sụn của bên thứ ba - mặc dù có thể nó sẽ làm mất hiệu lực bảo hành! Vi mã của bên thứ ba hiếm hơn nhiều, mặc dù tôi tin rằng vào thời cổ đại (tôi đang nói về việc CPU có kích thước bằng hộp bánh mì), một số người dùng cuối sẽ sửa đổi mã vi mô trong CPU của họ. Theo như tôi biết, điều này là không thể đối với loại CPU được sử dụng trong PC.
Microcode thường dịch hoặc giúp thực hiện kiến trúc tập lệnh công khai, nghĩa là, nó chạy mã máy mà người thiết kế hệ điều hành và lập trình viên ứng dụng sử dụng. Thêm về điều này trong phần tiếp theo.
"Thực thi so với dữ liệu" rất nhiều câu trả lời sử dụng mô hình này
Theo những cách khác nhau, tôi sợ, nhưng tôi sẽ giải quyết bình luận của riêng tôi. Phần này cũng phục vụ để mở rộng trên điểm đạn cuối cùng ở trên. Mục tiêu ở đây là cố gắng phân biệt giữa công việc mà CPU đang làm (đạt được bằng sự kết hợp giữa phần cứng và vi mã) và công việc mà một thiết bị thông thường đang làm (đạt được bằng sự kết hợp giữa phần cứng và phần sụn). Tôi sẽ chọn một ổ đĩa cứng SATA.
Ổ đĩa SATA tuân theo các hướng dẫn từ máy tính, nằm dọc theo dòng "đọc dữ liệu từ sector 5.123" và "ghi dữ liệu này vào sector 1.321". Phần sụn của ổ đĩa chịu trách nhiệm làm cho phần cứng biến điều này thành hiện thực và nó thường là mã thông thường khá phổ biến chạy trên một loại CPU nhúng nào đó. Các hướng dẫn của ổ đĩa đến theo tuần tự, mặc dù chúng có thể không được xử lý theo thứ tự mà chúng đến. Các hướng dẫn này không phải là chương trình, chúng được gửi bởi một chương trình chạy trên CPU chính. Đặc biệt, không có luồng điều khiển, tức là không có lệnh nào để báo cho ổ đĩa SATA biết hướng dẫn nào sẽ chạy tiếp theo.
CPU phụ trách máy tính. Sau khi khởi tạo xong, nó chạy các hướng dẫn ("mã máy") do bo mạch chủ cung cấp (BIOS, một loại phần sụn khác) để nó chạy mã máy do hệ điều hành cung cấp để chạy mã máy được cung cấp bởi các nhà cung cấp ứng dụng. Bản thân CPU lấy mã máy từ EEPROM (trong trường hợp BIOS) hoặc RAM (trong trường hợp hệ điều hành và ứng dụng). Cụ thể, mã máy có một luồng điều khiển: mã máy cho CPU biết mã máy nào sẽ thực hiện tiếp theo. Bạn có thể lặp đi lặp lại cùng một mã máy, bạn có thể chạy các bit mã khác nhau tùy thuộc vào dữ liệu mà mã đang làm việc - các hướng dẫn trong ngôn ngữ giao diện thiết bị như mã SATA có thể thực hiện một số tác vụ đơn giản giới hạn, nhưng mã máy có thể làmbất cứ điều gì . (Xem thêm Turing Hoàn thiện .)
Chúng ta có thể viết lại điểm đầu dòng cuối cùng ở trên như: microcode thường thực hiện ngôn ngữ Turing Complete; phần mềm thông thường thường không.
Có nghĩa là gì khi nói "hướng dẫn phần cứng được diễn giải" với microcode.
Đúng nhưng có lẽ khó hiểu; điểm quan trọng là sự khác biệt giữa mã máy, có luồng điều khiển và là Turing Complete, và các hướng dẫn được xác định bởi giao diện thiết bị như SATA, không và không.
"Microcode" có áp dụng cho mã chạy trên card âm thanh không
Không, card âm thanh nhận hướng dẫn, không phải mã, giống như ổ đĩa SATA. Các hướng dẫn có thể giống như "phát A sharp" hoặc "diễn giải dữ liệu này dưới dạng sóng và phát dữ liệu". Vẫn rất đơn giản.
và thẻ video (GPU)?
Thẻ video kiểu cũ (những thẻ không có GPU) giống như ổ đĩa SATA. Các hướng dẫn giống như "đặt pixel này thành màu này" hoặc "ghi A vào vị trí này".
... GPU rất phức tạp và nằm ở đâu đó giữa hai thế giới mà tôi đã cố gắng mô tả ở trên. Có lẽ đơn giản nhất khi nghĩ về chúng như một máy tính chuyên dụng ngồi bên trong máy tính chính, một máy tính có CPU riêng. Đúng là các thiết bị như ổ đĩa SATA cũng có CPU nhúng, nhưng điểm khác biệt là CPU nhúng trong ổ đĩa SATA chỉ chạy mã do nhà sản xuất ổ đĩa cung cấp, trong khi GPU cũng chạy mã do hệ điều hành và / hoặc nhà cung cấp ứng dụng cung cấp. Thực sự đây là một câu hỏi hoàn toàn riêng biệt.
TL; DR: microcode là một loại phần sụn cụ thể, giúp phần cứng thực hiện một bộ hướng dẫn Turing Complete.