RU2017103676A - Управление выполнением потоков в многопоточном процессоре - Google Patents
Управление выполнением потоков в многопоточном процессоре Download PDFInfo
- Publication number
- RU2017103676A RU2017103676A RU2017103676A RU2017103676A RU2017103676A RU 2017103676 A RU2017103676 A RU 2017103676A RU 2017103676 A RU2017103676 A RU 2017103676A RU 2017103676 A RU2017103676 A RU 2017103676A RU 2017103676 A RU2017103676 A RU 2017103676A
- Authority
- RU
- Russia
- Prior art keywords
- thread
- execution
- another thread
- stop
- indicating
- Prior art date
Links
- 238000000034 method Methods 0.000 claims 10
- 238000001514 detection method Methods 0.000 claims 3
- 238000004590 computer program Methods 0.000 claims 2
- 230000000903 blocking effect Effects 0.000 claims 1
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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/314—Parallel programming languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Claims (17)
1. Способ управления выполнением потоков в вычислительном окружении, причем способ содержит
остановку посредством работающего в процессоре вычислительного окружения потока выполнения другого потока, выполняющегося в процессоре, причем остановка использует один или несколько управляющих элементов в одном или нескольких совместно используемых регистрах процессора, причем один или несколько совместно используемых регистров совместно используются потоком и другим потоком, и
выполнение потоком, на основании остановки выполнения другого потока, одной или нескольких операций.
2. Способ по п. 1, причем остановка выполнения другого потока содержит
получение информации о состоянии для другого потока, и
выявление на основании информации о состоянии того, остановлено ли выполнение другого потока, причем одну или несколько операций выполняют на основании выявления, указывающего на остановку выполнения другого потока.
3. Способ по п. 1, причем остановка выполнения другого потока содержит
выявление того, запрещает ли другой поток свою остановку,
остановку выборки команд и выполнения на другом потоке на основании выявления, указывающего на отсутствие запрещения другим потоком на остановку, и
проверку состояния другого потока для выявления того, остановилось ли выполнение другого потока, причем выполнение одной или нескольких операций основывается проверке, указывающей на остановку выполнения другого потока.
4. Способ по п. 3, причем проверка состояния другого потока содержит использование команды опорожнения, причем команда опорожнения сконфигурирована для удержания диспетчеризации команды на потоке и для запрашивания состояния другого потока, причем команда опорожнения задает одно или несколько подлежащих удовлетворению до выполнения одной или нескольких операций условий, и причем выполнение одной или нескольких операций осуществляют на основании результата команды опорожнения, указывающего на удовлетворение одного или нескольких условий.
5. Способ по п. 3, кроме того, содержащий
повторное выявление на основании проверки, указывающей на остановку выполнения другого потока, того, запрещает ли другой поток свою остановку,
разрешение выполнения на другом потоке на основании повторного выявления, указывающего на запрещение другим потоком своей остановки, и
выполнение одной или нескольких операций на основании повторного выявления, указывающего на отсутствие запрещения другим потоком своей остановки.
6. Система, содержащая средства, приспособленные к выполнению всех этапов способа согласно любому предшествующему относящемуся к способу пункту.
7. Компьютерная программа, содержащая команды для выполнения всех этапов способа согласно любому предшествующему относящемуся к способу пункту при выполнении компьютерной программы на компьютерной системе.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/525,800 US9575802B2 (en) | 2014-10-28 | 2014-10-28 | Controlling execution of threads in a multi-threaded processor |
US14/525,800 | 2014-10-28 | ||
PCT/EP2015/074332 WO2016066486A1 (en) | 2014-10-28 | 2015-10-21 | Controlling execution of threads in a multi-threaded processor |
Publications (3)
Publication Number | Publication Date |
---|---|
RU2017103676A true RU2017103676A (ru) | 2018-11-29 |
RU2017103676A3 RU2017103676A3 (ru) | 2018-11-29 |
RU2680737C2 RU2680737C2 (ru) | 2019-02-26 |
Family
ID=54361063
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2017103676A RU2680737C2 (ru) | 2014-10-28 | 2015-10-21 | Управление выполнением потоков в многопоточном процессоре |
Country Status (14)
Country | Link |
---|---|
US (2) | US9575802B2 (ru) |
EP (1) | EP3213187B1 (ru) |
JP (1) | JP6580134B2 (ru) |
KR (1) | KR101976295B1 (ru) |
CN (1) | CN107111482B (ru) |
AU (1) | AU2015340844B2 (ru) |
CA (1) | CA2961705C (ru) |
ES (1) | ES2805010T3 (ru) |
PT (1) | PT3213187T (ru) |
RU (1) | RU2680737C2 (ru) |
SG (1) | SG11201701612VA (ru) |
TW (1) | TWI608411B (ru) |
WO (1) | WO2016066486A1 (ru) |
ZA (1) | ZA201701306B (ru) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9898348B2 (en) * | 2014-10-22 | 2018-02-20 | International Business Machines Corporation | Resource mapping in multi-threaded central processor units |
CN107111523B (zh) * | 2014-11-11 | 2020-10-20 | 瑞萨电子株式会社 | 命令执行控制系统和命令执行控制方法 |
US9513956B2 (en) | 2015-02-10 | 2016-12-06 | International Business Machines Corporation | Compare point detection in multi-threaded computing environments |
US10740102B2 (en) | 2017-02-24 | 2020-08-11 | Oracle International Corporation | Hardware mechanism to mitigate stalling of a processor core |
GB2569098B (en) | 2017-10-20 | 2020-01-08 | Graphcore Ltd | Combining states of multiple threads in a multi-threaded processor |
CN109144701A (zh) * | 2018-09-05 | 2019-01-04 | 郑州云海信息技术有限公司 | 一种任务流管理方法、装置、设备及系统 |
US11734085B2 (en) | 2020-02-26 | 2023-08-22 | International Business Machines Corporation | Managing concurrent accesses by a set of tasks to a shared resource of a computer system |
Family Cites Families (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5341482A (en) | 1987-03-20 | 1994-08-23 | Digital Equipment Corporation | Method for synchronization of arithmetic exceptions in central processing units having pipelined execution units simultaneously executing instructions |
US6668317B1 (en) * | 1999-08-31 | 2003-12-23 | Intel Corporation | Microengine for parallel processor architecture |
US7363474B2 (en) | 2001-12-31 | 2008-04-22 | Intel Corporation | Method and apparatus for suspending execution of a thread until a specified memory access occurs |
US7069442B2 (en) * | 2002-03-29 | 2006-06-27 | Intel Corporation | System and method for execution of a secured environment initialization instruction |
RU2229745C2 (ru) * | 2002-07-24 | 2004-05-27 | Игнатущенко Владислав Валентинович | Параллельная вычислительная система активного видео |
US7496915B2 (en) * | 2003-04-24 | 2009-02-24 | International Business Machines Corporation | Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes |
US7873785B2 (en) | 2003-08-19 | 2011-01-18 | Oracle America, Inc. | Multi-core multi-thread processor |
US7802255B2 (en) * | 2003-12-19 | 2010-09-21 | Stmicroelectronics, Inc. | Thread execution scheduler for multi-processing system and method |
US7676655B2 (en) * | 2004-06-30 | 2010-03-09 | Sun Microsystems, Inc. | Single bit control of threads in a multithreaded multicore processor |
US8719819B2 (en) | 2005-06-30 | 2014-05-06 | Intel Corporation | Mechanism for instruction set based thread execution on a plurality of instruction sequencers |
US7664936B2 (en) | 2005-02-04 | 2010-02-16 | Mips Technologies, Inc. | Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages |
US7350034B2 (en) | 2005-06-20 | 2008-03-25 | International Business Machines Corporation | Architecture support of best-effort atomic transactions for multiprocessor systems |
US7624257B2 (en) * | 2005-11-30 | 2009-11-24 | International Business Machines Corporation | Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads |
EP1818812B1 (en) * | 2006-01-25 | 2016-01-06 | Brandt Technologies Limited | System and method for effecting simultaneous control of remote computers |
US8838940B2 (en) | 2006-06-07 | 2014-09-16 | Azul Systems, Inc. | CPU utilization metering on systems that include multiple hardware threads per core |
WO2008120367A1 (ja) * | 2007-03-29 | 2008-10-09 | Fujitsu Limited | 並列化プログラム生成方法、並列化プログラム生成装置、及び並列化プログラム生成プログラム |
US7917900B2 (en) * | 2007-03-30 | 2011-03-29 | Microsoft Corporation | Enabling analysis of software source code |
US7853950B2 (en) | 2007-04-05 | 2010-12-14 | International Business Machines Corporarion | Executing multiple threads in a processor |
JP5104863B2 (ja) | 2007-06-20 | 2012-12-19 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US8347312B2 (en) * | 2007-07-06 | 2013-01-01 | Xmos Limited | Thread communications |
US20090100249A1 (en) * | 2007-10-10 | 2009-04-16 | Eichenberger Alexandre E | Method and apparatus for allocating architectural register resources among threads in a multi-threaded microprocessor core |
US8078843B2 (en) * | 2008-01-31 | 2011-12-13 | International Business Machines Corporation | Facilitating processing in a computing environment using an extended drain instruction |
JP2010039536A (ja) * | 2008-07-31 | 2010-02-18 | Panasonic Corp | プログラム変換装置、プログラム変換方法およびプログラム変換プログラム |
GB2466984B (en) * | 2009-01-16 | 2011-07-27 | Imagination Tech Ltd | Multi-threaded data processing system |
JP5463076B2 (ja) * | 2009-05-28 | 2014-04-09 | パナソニック株式会社 | マルチスレッドプロセッサ |
US8695002B2 (en) | 2009-10-20 | 2014-04-08 | Lantiq Deutschland Gmbh | Multi-threaded processors and multi-processor systems comprising shared resources |
US8612978B2 (en) | 2009-12-10 | 2013-12-17 | Oracle America, Inc. | Code execution utilizing single or multiple threads |
JP2011170619A (ja) * | 2010-02-18 | 2011-09-01 | Toyota Motor Corp | マルチスレッド処理装置 |
US8615644B2 (en) * | 2010-02-19 | 2013-12-24 | International Business Machines Corporation | Processor with hardware thread control logic indicating disable status when instructions accessing shared resources are completed for safe shared resource condition |
US9047079B2 (en) * | 2010-02-19 | 2015-06-02 | International Business Machines Corporation | Indicating disabled thread to other threads when contending instructions complete execution to ensure safe shared resource condition |
US8560814B2 (en) | 2010-05-04 | 2013-10-15 | Oracle International Corporation | Thread fairness on a multi-threaded processor with multi-cycle cryptographic operations |
US8468531B2 (en) * | 2010-05-26 | 2013-06-18 | International Business Machines Corporation | Method and apparatus for efficient inter-thread synchronization for helper threads |
US8713290B2 (en) | 2010-09-20 | 2014-04-29 | International Business Machines Corporation | Scaleable status tracking of multiple assist hardware threads |
US20130080738A1 (en) | 2011-09-23 | 2013-03-28 | Qualcomm Incorporated | Processor configured to perform transactional memory operations |
US9286072B2 (en) * | 2011-10-03 | 2016-03-15 | International Business Machines Corporation | Using register last use infomation to perform decode-time computer instruction optimization |
US20130246761A1 (en) * | 2012-03-13 | 2013-09-19 | International Business Machines Corporation | Register sharing in an extended processor architecture |
US10430190B2 (en) * | 2012-06-07 | 2019-10-01 | Micron Technology, Inc. | Systems and methods for selectively controlling multithreaded execution of executable code segments |
US10534614B2 (en) * | 2012-06-08 | 2020-01-14 | MIPS Tech, LLC | Rescheduling threads using different cores in a multithreaded microprocessor having a shared register pool |
US9652300B2 (en) | 2012-06-28 | 2017-05-16 | Intel Corporation | Systems, methods, and computer program products for preemption of threads at a synchronization barrier |
US9110718B2 (en) * | 2012-09-24 | 2015-08-18 | Oracle International Corporation | Supporting targeted stores in a shared-memory multiprocessor system |
US9116738B2 (en) * | 2012-11-13 | 2015-08-25 | International Business Machines Corporation | Method and apparatus for efficient execution of concurrent processes on a multithreaded message passing system |
US9678897B2 (en) | 2012-12-27 | 2017-06-13 | Nvidia Corporation | Approach for context switching of lock-bit protected memory |
US20140244997A1 (en) * | 2013-02-25 | 2014-08-28 | Qualcomm Incorporated | Emergency mode for iot devices |
US9612811B2 (en) * | 2014-01-21 | 2017-04-04 | Nvidia Corporation | Confluence analysis and loop fast-forwarding for improving SIMD execution efficiency |
JP6330569B2 (ja) * | 2014-08-14 | 2018-05-30 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
US9424103B2 (en) * | 2014-09-30 | 2016-08-23 | Hong Kong Applied Science and Technology Research Institute Company Limited | Adaptive lock for a computing system having multiple runtime environments and multiple processing units |
-
2014
- 2014-10-28 US US14/525,800 patent/US9575802B2/en active Active
-
2015
- 2015-03-30 TW TW104110337A patent/TWI608411B/zh active
- 2015-09-07 US US14/846,900 patent/US9582324B2/en active Active
- 2015-10-21 ES ES15787163T patent/ES2805010T3/es active Active
- 2015-10-21 RU RU2017103676A patent/RU2680737C2/ru active
- 2015-10-21 JP JP2017518814A patent/JP6580134B2/ja active Active
- 2015-10-21 AU AU2015340844A patent/AU2015340844B2/en active Active
- 2015-10-21 CN CN201580058127.1A patent/CN107111482B/zh active Active
- 2015-10-21 WO PCT/EP2015/074332 patent/WO2016066486A1/en active Application Filing
- 2015-10-21 PT PT157871633T patent/PT3213187T/pt unknown
- 2015-10-21 CA CA2961705A patent/CA2961705C/en active Active
- 2015-10-21 KR KR1020177009987A patent/KR101976295B1/ko active IP Right Grant
- 2015-10-21 SG SG11201701612VA patent/SG11201701612VA/en unknown
- 2015-10-21 EP EP15787163.3A patent/EP3213187B1/en active Active
-
2017
- 2017-02-21 ZA ZA2017/01306A patent/ZA201701306B/en unknown
Also Published As
Publication number | Publication date |
---|---|
EP3213187A1 (en) | 2017-09-06 |
JP2018501535A (ja) | 2018-01-18 |
CN107111482A (zh) | 2017-08-29 |
CN107111482B (zh) | 2021-02-05 |
US20160117191A1 (en) | 2016-04-28 |
US9575802B2 (en) | 2017-02-21 |
US9582324B2 (en) | 2017-02-28 |
TW201616342A (zh) | 2016-05-01 |
AU2015340844A1 (en) | 2017-03-09 |
KR20170054488A (ko) | 2017-05-17 |
PT3213187T (pt) | 2020-07-16 |
RU2680737C2 (ru) | 2019-02-26 |
CA2961705A1 (en) | 2016-05-06 |
EP3213187B1 (en) | 2020-06-24 |
CA2961705C (en) | 2023-04-04 |
ZA201701306B (en) | 2021-08-25 |
TWI608411B (zh) | 2017-12-11 |
JP6580134B2 (ja) | 2019-09-25 |
WO2016066486A1 (en) | 2016-05-06 |
US20160117192A1 (en) | 2016-04-28 |
KR101976295B1 (ko) | 2019-05-07 |
RU2017103676A3 (ru) | 2018-11-29 |
ES2805010T3 (es) | 2021-02-10 |
SG11201701612VA (en) | 2017-03-30 |
AU2015340844B2 (en) | 2018-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2017103676A (ru) | Управление выполнением потоков в многопоточном процессоре | |
HRP20190661T1 (hr) | Filtriranje prekidanja programa kod provođenja transakcije | |
JP2016149131A5 (ru) | ||
EP2819009A3 (en) | Task scheduling for highly concurrent analytical and transaction workloads | |
JP6434791B2 (ja) | マルチスレッディングを支援するための演算ユニット、それを含むプロセッサ及びプロセッサの動作方法 | |
JP2016507849A5 (ru) | ||
JP2014501419A5 (ru) | ||
Weston et al. | Getting Started with doParallel and foreach | |
WO2015200510A8 (en) | Automated code lockdown to reduce attack surface for software | |
JP2016507836A5 (ru) | ||
MX2016012532A (es) | Instruccion de inicio de ejecucion virtual para distribuir multiples subprocesos en una computadora. | |
RU2012148403A (ru) | Средство предупреждающего прерывания предпосылки создания изобретения | |
RU2012148401A (ru) | Средство процессорной поддержки | |
HRP20131009T1 (hr) | Objekt s funkcijom virtualizacije za blokiranje funkcije naredbe za višestruke naredbe virtualnog procesora | |
JP2014527644A5 (ru) | ||
RU2016127444A (ru) | Восстановление контекста потока в многопоточной компьютерной системе | |
EP2947594A3 (en) | Protecting critical data structures in an embedded hypervisor system | |
GB2562014A (en) | Prioritization of transactions | |
WO2012139067A3 (en) | Messaging interruptible blocking wait with serialization | |
JP2014501412A5 (ru) | ||
JP2012155487A5 (ru) | ||
Park et al. | Automated memory leakage detection in android based systems | |
JP2018072944A5 (ru) | ||
JP2016189201A5 (ru) | ||
RU2017114020A (ru) | Управление доступом, основанное на местонахождении инициатора запроса |