RU2017103676A - Управление выполнением потоков в многопоточном процессоре - Google Patents

Управление выполнением потоков в многопоточном процессоре Download PDF

Info

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
Application number
RU2017103676A
Other languages
English (en)
Other versions
RU2680737C2 (ru
RU2017103676A3 (ru
Inventor
Тимоти СЛЕДЖЕЛ
Хари Джейсон АЛЕКСАНДЕР
Фади Юсуф БУСАБА
Марк ФАРРЕЛЛ
ДЖР. Джон Гилберт РЕЛЛ
Original Assignee
Интернэшнл Бизнес Машинз Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Интернэшнл Бизнес Машинз Корпорейшн filed Critical Интернэшнл Бизнес Машинз Корпорейшн
Publication of RU2017103676A publication Critical patent/RU2017103676A/ru
Publication of RU2017103676A3 publication Critical patent/RU2017103676A3/ru
Application granted granted Critical
Publication of RU2680737C2 publication Critical patent/RU2680737C2/ru

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/314Parallel programming languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism 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. Компьютерная программа, содержащая команды для выполнения всех этапов способа согласно любому предшествующему относящемуся к способу пункту при выполнении компьютерной программы на компьютерной системе.
RU2017103676A 2014-10-28 2015-10-21 Управление выполнением потоков в многопоточном процессоре RU2680737C2 (ru)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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) Управление доступом, основанное на местонахождении инициатора запроса