Есть ли способ один поток направить на 4 ядра? - страница 4

 
JavaDev >>:

Как будет время - прочти спецификации MPS1.1/1.4, APIC и ACPI - и вопросы отпадут сами собой.

Если нет - то интел & амд теряют в Вашем лице гениального сотрудника.

Коллега, можэ хватит понтоваться и пытаться унизить товарищей по борьбе? Указанные спецификации *никакого* отношения к паралельному софтварному или хардварному дерибану op-coded потока инструкций проца не имеют.

 
Svinozavr >>:

Ну да - я о том же. Внимание, в третий раз вопрос.

ок. Есть код. mov(A,B) и т.д. на ассемблере. Его чего, нельзя программно проанализировать, сгенерировать при наличии ветвлений избыточные участки кода?

Интел делает это. Хардварно. Это называется спекулятивное исполнение кода, а также и другие трюки. Например целочисленное умножение 8х8 бит и 16Х16 бит тупо делается выборкой из готовой таблицы результатов, поэтому может быть сколь угодно "параллельным".

 
Svinozavr >>:

Ну да - я о том же. Внимание, в третий раз вопрос.

ок. Есть код. mov(A,B) и т.д. на ассемблере. Его чего, нельзя программно проанализировать, сгенерировать при наличии ветвлений избыточные участки кода?

Можно, зачем? Компиляторы и процессор это делают каждый на своем уровне достаточно эффективно, зачем ещё огород городить?

Нужно использовать те технологии, которые собственно для этого и предназначены - многопоточное программирование. И не искать дополнительных проблем себе на голову.

 

В тему:

[quote]

Задача: протестировать оптимизирующий компилятор С++ (gcc, естественно) для встраиваемого PowerPC-процессора.

Тестовый стенд: отладочная плата, на ней проц, основной способ взаимодействия с которым - интерфейс RS-232. Чтобы не заморачиваться с передачей данных по COM-порту, я решил смухлевать — сделал все тестовые данные константными.

Скомпилировал программу с несколькими уровнями оптимизации, открыл ассемблерный исходник в отладчике и стал сравнивать результаты оптимизации. Вот что получилось.

Уровень оптимизации 0. Код толстый и красивый, все вычисления выполняются самым прямолинейным, тупым и очевидным способом. Предсказуемо...

Уровень оптимизации 1. Код стал компактнее, откровенно тупые действия вырезаны, но некоторая рыхлость всё ещё есть. Не впечатляет.

Уровень оптимизации 2. Объекты пропали. Память больше не задействована, вместо нее работают 32 регистра процессора. Так держать!

Уровень оптимизации 3. Загрузка вычисленного значения в регистр как константы. Всё. Объём кода - 8 байт, или две инструкции (две, потому что загрузка константы на этой архитектуре идёт по полуслову).

Домухлевался. Один-ноль в пользу компилятора!

[/quote]

(IThappens; #709)

 
poiskspider >>:


А у меня вопрос к вам.А она действительно работает и позваляет сразу использовать 2 или даже 4 ядра

Судя по индикации загрузки процев - да