RU2015130911A - Способ обработки для многоядерного процессора и многоядерный процессор - Google Patents
Способ обработки для многоядерного процессора и многоядерный процессор Download PDFInfo
- Publication number
- RU2015130911A RU2015130911A RU2015130911A RU2015130911A RU2015130911A RU 2015130911 A RU2015130911 A RU 2015130911A RU 2015130911 A RU2015130911 A RU 2015130911A RU 2015130911 A RU2015130911 A RU 2015130911A RU 2015130911 A RU2015130911 A RU 2015130911A
- Authority
- RU
- Russia
- Prior art keywords
- core
- machine code
- execution time
- value
- subtask
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
Claims (44)
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), если определенное количество итераций больше, чем заранее определенное пороговое значение.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/RU2012/001117 WO2014104912A1 (en) | 2012-12-26 | 2012-12-26 | Processing method for a multicore processor and milticore processor |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2015130911A true RU2015130911A (ru) | 2017-01-31 |
RU2630753C2 RU2630753C2 (ru) | 2017-09-12 |
Family
ID=48877504
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2015130911A RU2630753C2 (ru) | 2012-12-26 | 2012-12-26 | Способ обработки для многоядерного процессора и многоядерный процессор |
Country Status (4)
Country | Link |
---|---|
US (2) | US10565019B2 (ru) |
EP (1) | EP2939114A1 (ru) |
RU (1) | RU2630753C2 (ru) |
WO (1) | WO2014104912A1 (ru) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110874212B (zh) * | 2015-06-30 | 2021-08-20 | 华为技术有限公司 | 一种硬件加速方法、编译器以及设备 |
EP3374862A1 (en) * | 2015-11-13 | 2018-09-19 | Telefonaktiebolaget LM Ericsson (PUBL) | Trainer of many core systems for adaptive resource control |
US10949260B2 (en) | 2015-12-04 | 2021-03-16 | Cornell University | Execution time prediction for energy-efficient computer systems |
EP3394747A1 (en) | 2015-12-21 | 2018-10-31 | Telefonaktiebolaget LM Ericsson (publ) | Priority trainer for many core processing system |
US10884761B2 (en) * | 2016-03-22 | 2021-01-05 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd | Best performance delivery in heterogeneous computing unit environment |
US10860499B2 (en) | 2016-03-22 | 2020-12-08 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd | Dynamic memory management in workload acceleration |
US10203747B2 (en) | 2016-03-22 | 2019-02-12 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Workload placement based on heterogeneous compute performance per watt |
US10503524B2 (en) | 2016-03-22 | 2019-12-10 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Interception of a function call, selecting a function from available functions and rerouting the function call |
US10185593B2 (en) | 2016-06-03 | 2019-01-22 | International Business Machines Corporation | Balancing categorized task queues in a plurality of processing entities of a computational device |
US10691502B2 (en) | 2016-06-03 | 2020-06-23 | International Business Machines Corporation | Task queuing and dispatching mechanisms in a computational device |
US11029998B2 (en) | 2016-06-03 | 2021-06-08 | International Business Machines Corporation | Grouping of tasks for distribution among processing entities |
US10929177B2 (en) * | 2016-10-28 | 2021-02-23 | Synopsys, Inc. | Managing resources for multiple trial distributed processing tasks |
US10871988B1 (en) * | 2016-12-07 | 2020-12-22 | Jpmorgan Chase Bank, N.A. | Methods for feedback-based optimal workload scheduling and devices thereof |
US11150944B2 (en) | 2017-08-18 | 2021-10-19 | International Business Machines Corporation | Balancing mechanisms in ordered lists of dispatch queues in a computational device |
JP7323478B2 (ja) | 2020-02-26 | 2023-08-08 | 日立Astemo株式会社 | プログラム並列化方法、プログラム並列化装置、電子制御装置 |
US11669491B2 (en) | 2020-04-09 | 2023-06-06 | Samsung Electronics Co., Ltd. | Processor, system on chip including heterogeneous core, and operating methods thereof for optimizing hot functions for execution on each core of a heterogeneous processor |
RU2751441C1 (ru) * | 2020-09-11 | 2021-07-13 | Федеральное государственное бюджетное образовательное учреждение высшего образования «Московский государственный университет имени М.В.Ломоносова» (МГУ) | Способ формирования вычислительного комплекса |
US11640395B2 (en) * | 2020-10-21 | 2023-05-02 | Western Digital Technologies, Inc. | Query compiler for record filtering |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004171234A (ja) * | 2002-11-19 | 2004-06-17 | Toshiba Corp | マルチプロセッサシステムにおけるタスク割り付け方法、タスク割り付けプログラム及びマルチプロセッサシステム |
US7996839B2 (en) * | 2003-07-16 | 2011-08-09 | Hewlett-Packard Development Company, L.P. | Heterogeneous processor core systems for improved throughput |
US20060123401A1 (en) | 2004-12-02 | 2006-06-08 | International Business Machines Corporation | Method and system for exploiting parallelism on a heterogeneous multiprocessor computer system |
US20060206902A1 (en) | 2005-03-14 | 2006-09-14 | Sujat Jamil | Variable interleaved multithreaded processor method and system |
US7647476B2 (en) * | 2006-03-14 | 2010-01-12 | Intel Corporation | Common analog interface for multiple processor cores |
JP4784827B2 (ja) | 2006-06-06 | 2011-10-05 | 学校法人早稲田大学 | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ |
JP4936517B2 (ja) * | 2006-06-06 | 2012-05-23 | 学校法人早稲田大学 | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ |
JP2008084009A (ja) * | 2006-09-27 | 2008-04-10 | Toshiba Corp | マルチプロセッサシステム |
CA2631255A1 (en) | 2008-05-09 | 2009-11-09 | Ibm Canada Limited - Ibm Canada Limitee | Scalable scheduling of tasks in heterogeneous systems |
US8434085B2 (en) | 2008-05-09 | 2013-04-30 | International Business Machines Corporation | Scalable scheduling of tasks in heterogeneous systems |
US20100156888A1 (en) * | 2008-12-23 | 2010-06-24 | Intel Corporation | Adaptive mapping for heterogeneous processing systems |
US8881157B2 (en) * | 2009-09-11 | 2014-11-04 | Empire Technology Development Llc | Allocating threads to cores based on threads falling behind thread completion target deadline |
WO2013010159A1 (en) * | 2011-07-14 | 2013-01-17 | Siemens Corporation | Reducing the scan cycle time of control applications through multi-core execution of user programs |
US8918770B2 (en) * | 2011-08-25 | 2014-12-23 | Nec Laboratories America, Inc. | Compiler for X86-based many-core coprocessors |
-
2012
- 2012-12-26 RU RU2015130911A patent/RU2630753C2/ru active
- 2012-12-26 WO PCT/RU2012/001117 patent/WO2014104912A1/en active Application Filing
- 2012-12-26 EP EP12866995.9A patent/EP2939114A1/en not_active Withdrawn
-
2015
- 2015-06-26 US US14/752,504 patent/US10565019B2/en active Active
-
2020
- 2020-01-23 US US16/750,955 patent/US11449364B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
RU2630753C2 (ru) | 2017-09-12 |
US20150293794A1 (en) | 2015-10-15 |
US11449364B2 (en) | 2022-09-20 |
WO2014104912A1 (en) | 2014-07-03 |
US10565019B2 (en) | 2020-02-18 |
US20200159590A1 (en) | 2020-05-21 |
EP2939114A1 (en) | 2015-11-04 |
WO2014104912A8 (en) | 2014-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2015130911A (ru) | Способ обработки для многоядерного процессора и многоядерный процессор | |
JP2014513373A5 (ru) | ||
Wägemann et al. | Worst-case energy consumption analysis for energy-constrained embedded systems | |
EP2629197B1 (en) | Simulation device, method, and program | |
Cui et al. | An accurate GPU performance model for effective control flow divergence optimization | |
JP5961971B2 (ja) | シミュレーション装置,方法,およびプログラム | |
Lim et al. | Autotuning GPU kernels via static and predictive analysis | |
Southern et al. | Analysis of PARSEC workload scalability | |
RU2012127578A (ru) | Анализатор применимости программного модуля для разработки и тестирования программного обеспечения для многопроцессорных сред | |
JP2014513853A5 (ru) | ||
JP2010529559A5 (ru) | ||
Koukos et al. | Multiversioned decoupled access-execute: The key to energy-efficient compilation of general-purpose programs | |
US10564992B2 (en) | Simulation apparatus and storage medium | |
Schoeberl | Is time predictability quantifiable? | |
Nguyen et al. | Cache-conscious offline real-time task scheduling for multi-core processors | |
Hasan et al. | Performance prediction model and analysis for compute-intensive tasks on GPUs | |
Southern et al. | Deconstructing PARSEC scalability | |
Fang et al. | An auto-tuning solution to data streams clustering in opencl | |
EP2418582A3 (en) | Apparatus and method for thread progress tracking using deterministic progress index | |
Sandran et al. | An optimized tuning of genetic algorithm parameters in compiler flag selection based on compilation and execution duration | |
Helmstetter et al. | Fast instruction set simulation using LLVM-based dynamic translation | |
Maggio et al. | {ARPE}: A Tool To Build Equation Models of Computing Systems | |
Yang et al. | Performance evaluation of openmp and cuda on multicore systems | |
Eder et al. | Whole Systems Energy Transparency | |
Han et al. | Work-in-Progress: Response Time Bounds for Typed DAG Parallel Tasks on Heterogeneous Multi-cores |