Используется ли сейчас микропрограммирование/микропрограммы?
Я немного запутался в организации работы компьютера. Процессор способен исполнять только программы, написанные на машинном языке. Что это значит? При компиляции это означает, что на носителе информации создается определенная последовательность бит, которая при считывании будет понятна процессору, нежели та что представлена на языке высокого уровня. Машинный язык - самый низкий уровень. Но где тут применяется микропрограмма? Как я понял - это какой-то интерпретатор команд программы, которую написал программист. Но разве при компиляции компилятор не переводит программу сразу на машинный язык? Exe-файл - это файл на машинном языке? Или компилятор не переводит программу на машинный язык, а на какой-то язык, который потом интерпретируется микропрограммой? Как-то запутано и непонятно.
exe содержит машинный код x86 (или x86-64), который до недавнего времени "аппаратно" исполнялся на x86-процессоре. тут x86-код будет "самым низким уровнем".
современный проц - сложная хитроумная структура, которая машинный x86 код преобразует в risc-код и исполняет только его. т.е. есть набор аппаратных risc-ядер, которые эмулируют работу x86 ядра.
тут x86-код не будет "самым низким уровнем", хотя за пределами процессора об этом никто не догадывается :)
микрокод собственно и описывает систему преобразования x86 в risc-код.
Вот почему, когда бежишь за ответами на тостер, то люди отвечают так, что становится понятнее, нежели чем, когда ты читаешь того же Таненбаума (не то чтобы его везде трудно понять, но есть места)? :)
Спасибо за ответ. Стало понятнее.
Я еще где-то читал, что сейчас процессоры гибридные, то есть в центре RISC, а снаружи - CISC. Правильно я понимаю?
Александр, так скажем risc от cisc отличается только количеством команд если не влезать в тонкости.
гибрид 2 и 7 выглядит несколько глупо, неправда ли:)
p.s. а .exe файл действительно содержит бинарный код (машинный код), но кроме этого .exe файл, в отличие от .com файла это контейнер со сложной внутренней структурой, которая позволяет хранить и код программ, и данные (текст, диалоги) и графику (иконки и др) и в принципе вообще любой контент.
Если для упрощения опустить разные там конвейеры и прочее, то процессор кроме прямых команд управления сумматором и регистрами, имеет ещё дополнительные команды: операции числами с плавающей точкой (бывший сопроцессор), управление мультимедиа MMX и прочее — по сути подпрограммы.
Микропрограмма, это когда машинный код семейства процессоров компилируется в машинный код конкретной модели процессора. То есть программа переводится в микропрограмму. Таким образом поддерживается совместимость с "старевшими" программами.
Um, то есть имеется программа на C++, она проходит стадию компиляции, получается exe-файл (на машинном языке), а этот файл в свою очередь интерпретируется микропрограммой данного процессора?
Если совсем обобщенно:
процессор может выполнять машинные команды - та самая скомпилированная программа
В то же время некоторые процессоры позволяют программировать машинные команды. Это можно назвать микропрограммами.
То бишь для процессоров с "типа CISC" архитектурой каждая команда (например MOV Reg, Mem) реализуется микропрограммной на уровне RISC уровня процессора.
Применительно к x86 это может фигурировать в терминах "микрокоды".