СПОСОБ ОБРАБОТКИ ДЛЯ МНОГОЯДЕРНОГО ПРОЦЕССОРА И МНОГОЯДЕРНЫЙ ПРОЦЕССОР

1. Способ обработки для многоядерного процессора (1), при этом многоядерный процессор содержит по меньшей мере первое ядро (21) и второе ядро (22), при этом способ содержит этапы, на которых:
принимают (100) машинный код для выполнения заранее определенной операции;
предоставляют (120) принятый машинный код первому ядру (21) и второму ядру (22);
обрабатывают (130) машинный код на первом ядре (21) и втором ядре (22);
определяют (140) значение первого времени выполнения для первого ядра (21) и значение второго времени выполнения для второго ядра (22), при этом значение первого времени выполнения определяет время выполнения машинного кода на первом ядре (21), а значение второго времени выполнения определяет время выполнения машинного кода на втором ядре (22);
вычисляют (150) первый коэффициент эффективности на основе определенного значения первого времени выполнения и второй коэффициент эффективности на основе определенного значения второго времени выполнения; и
обрабатывают (160) машинный код на первом ядре (21) или втором ядре (22) на основе вычисленных коэффициентов эффективности.
2. Способ по п. 1, дополнительно содержащий этап (110) для определения рабочей нагрузки первого ядра (21) и второго ядра (22);
причем упомянутый первый коэффициент эффективности вычисляется на основе определенного значения первого времени выполнения и определенной рабочей нагрузки первого ядра (21), а упомянутый второй коэффициент эффективности вычисляется на основе определенного значения второго времени выполнения и определенной рабочей нагрузки второго ядра (22).
3. Способ по п. 1, в котором этап (100) приема принимает машинный код, содержащий первый поднабор, относящийся к заранее определенному набору инструкций первого ядра (21), и второй поднабор, относящийся к заранее определенному набору инструкций второго ядра (22);
причем этап (120) предоставления предоставляет первый поднабор первому ядру (21) и предоставляет второй поднабор второму ядру (22).
4. Способ по п. 1, дополнительно содержащий этап (170) для сохранения определенного значения первого времени выполнения и определенного значения второго времени выполнения в памяти (170) времени выполнения; причем первый коэффициент эффективности и второй коэффициент эффективности вычисляются на основе сохраненных значений времени выполнения.
5. Способ инструктирования для многоядерного процессора (1), при этом многоядерный процессор (1) содержит по меньшей мере первое ядро (21) и второе ядро (22), при этом способ содержит этапы, на которых:
считывают (200) предварительно сохраненный программный код;
идентифицируют (210) подзадачу в считанном программном коде, при этом идентифицированная подзадача выполняется множество раз, когда выполняется операция в соответствии со считанным программным кодом, и множество выполнений идентифицированной подзадачи могут выполняться одновременно;
генерируют (220) машинный код упомянутой идентифицированной подзадачи, при этом упомянутый машинный код содержит машинно-выполняемые инструкции для выполнения упомянутой идентифицированной подзадачи на первом ядре (21) и втором ядре (22).
6. Способ по п. 5, в дополнительно содержащий этап (230) для определения количества итераций упомянутой подзадачи, когда выполняется операция в соответствии со считанным программным кодом, причем упомянутый этап (220) генерирования только генерирует машинный код для первого ядра (21) и второго ядра (22), если определенное количество итераций больше, чем заранее определенное пороговое значение.
7. Способ по п. 5, в котором идентифицированная подзадача представляет собой цикл.
8. Компьютерный программный продукт, адаптированный для выполнения способа по п. 1.
9. Компьютерный программный продукт, адаптированный для выполнения способа по п. 5.
10. Машинно-читаемый запоминающий носитель, содержащий программный продукт по п. 8.
11. Машинно-читаемый запоминающий носитель, содержащий программный продукт по п. 9.
12. Многоядерный процессор, содержащий
первое ядро (21), адаптированное для обработки машинного кода в соответствии с первым набором инструкций;
второе ядро (22), адаптированное для обработки машинного кода в соответствии со вторым набором инструкций; и
планировщик (10), включающий в себя
средство (11) приема, адаптированное для приема машинного кода для выполнения заранее определенной операции;
средство (12) передачи, адаптированное для предоставления принятого машинного кода первому ядру (21) и второму ядру (22);
средство (13) обработки, адаптированное для начала обработки машинного кода на первом ядре (21) и втором ядре (22);
средство (14) определения, адаптированное для определения значения первого времени выполнения, задающего время выполнения машинного кода на первом ядре (21), и для определения значения второго времени выполнения, задающего время выполнения машинного кода на втором ядре (22); и
средство (15) вычисления, адаптированное для вычисления первого коэффициента эффективности на основе определенного значения первого времени выполнения и для вычисления второго коэффициента эффективности на основе определенного значения второго времени выполнения;
причем упомянутое средство (13) обработки начинает дополнительную обработку машинного кода на первом ядре (21) или на втором ядре (22) на основе вычисленного первого коэффициента эффективности и вычисленного второго коэффициента эффективности.
13. Процессор по п. 12, в котором планировщик (10) дополнительно содержит средство (16) определения рабочей нагрузки, адаптированное для определения первой рабочей нагрузки на первом ядре (21) и второй рабочей нагрузки на втором ядре (22);
причем упомянутое средство (15) вычисления вычисляет первый коэффициент эффективности на основе определенного значения первого времени выполнения и определенной первой рабочей нагрузки, и вычисляет второй коэффициент эффективности на основе определенного значения второго времени выполнения и определенной второй рабочей нагрузки.
14. Процессор по п. 12, в котором принятый машинный код содержит первый поднабор, относящийся к заранее определенному первому набору инструкций, и второй поднабор, относящийся к заранее определенному второму набору инструкций; и
причем средство (12) передачи предоставляет только первый поднабор первому ядру (21), и предоставляет только второй поднабор второму ядру (22).
15. Процессор по п. 12, дополнительно содержащий память (17) времени выполнения для хранения определенного значения первого времени выполнения и определенного значения второго времени выполнения.
16. Процессор по п. 12, причем процессор (1) содержит первый блок (31) обработки и второй блок (32) обработки, и причем первое ядро (21) расположено в первом блоке (31) обработки, а второе ядро (22) расположено во втором блоке (32) обработки.
17. Генератор инструкций для многоядерного процессора (1), при этом многоядерный процессор (1) содержит по меньшей мере первое ядро (21) и второе ядро (22), содержащие
средство (51) приема кода, адаптированное для приема предварительно сохраненного программного кода;
средство (52) анализа, адаптированное для идентификации подзадачи в считанном программном коде, при этом идентифицированная подзадача выполняется множество раз, когда выполняется операция в соответствии со считанным программным кодом, и множество выполнений идентифицированной подзадачи могут выполняться одновременно;
средство (53) компиляции, адаптированное для генерирования машинного кода идентифицированной подзадачи, при этом упомянутый машинный код содержит машинно-выполняемые инструкции для выполнения упомянутой идентифицированной подзадачи на первом ядре (21), имеющем первый набор инструкций, и упомянутый машинный код содержит машинно-выполняемые инструкции для выполнения упомянутой идентифицированной подзадачи на втором ядре (22), имеющем второй набор инструкций.
18. Генератор по п. 17, дополнительно содержащий средство (54) оценки выполнения, адаптированное для определения количества итераций упомянутой подзадачи, когда выполняется операция в соответствии со считанным программным кодом,
причем упомянутое средство (53) компиляции только генерирует машинный код для первого ядра (21) и машинный код для второго ядра (22), если определенное количество итераций больше, чем заранее определенное пороговое значение.