2015-08-29 5 views
0

Может быть, это глупый вопрос, но я стараюсь, чтобы получить лучшее понимание аппаратных внутренней работы ...как основные инструкции выполняются параллельно

если процессор имеет несколько потоков и у нас есть группа набора команд на назначьте его. как я читал, как он работает с http://www.lighterra.com/papers/basicinstructionscheduling/. он говорит, что компилятор создаст дерево зависимостей инструкций, а инструкции будут выполняться параллельно. Как cpu будет знать, что зависимая инструкция закончена или нет. это увеличит сложность.

я писать код на переменном токе, чтобы увидеть эту

int main() 
{ 
getchar(); 
putchar('a'); 
return 0;  
} 

я думаю, что инструкции GetChar() и putchar() являются независимыми и, когда я не даю ввод с клавиатуры, чем на другие инструкции резьбы putchar (» a '), и он должен показывать вывод перед запросом ввода. но он ждет кулак для ввода все время.

благодарит заранее.

+0

Относится к инструкциям процессора, а не к HLL. Посмотрите вокруг поиска конвейерной обработки инструкций. –

+0

Процессор не запускает C-код и не делает его многопоточным. Как сказал Frankie_C, конвейерная обработка инструкций - совершенно другая вещь. –

+0

Как процессор знает, где поставить пузырь в конвейере, если две инструкции зависят. Инструкции одной и той же программы могут выполняться в разных ядрах процессора. –

ответ

0

В этой статье упоминается CDC 6600, один из первых компьютеров для реализации scoreboarding.

+0

может два потока выполнять разные инструкции процесса одновременно. –

+0

Каждое ядро ​​на многоядерном процессоре может работать параллельно и имеет собственный набор регистров. В случае ситуации с одним потоком/одним ядром некоторые команды могут выполняться параллельно и не в порядке, используя табло для предотвращения конфликтов между чтением и записью регистров. Я не знаю, относится ли это также к переменным на основе памяти. Комментарий к компилятору CDC 6600 по-прежнему применяется к текущим оптимизированным компиляторам X86, некоторые изменения выполняются для уменьшения задержки регистрации табло. – rcgldr

+0

а как насчет 1 сердечник 2 нить. два процесса могут выполняться одновременно. –