RU2017110464A - Совместно используемые ресурсы в устройстве обработки данных для выполнения множества потоков - Google Patents

Совместно используемые ресурсы в устройстве обработки данных для выполнения множества потоков Download PDF

Info

Publication number
RU2017110464A
RU2017110464A RU2017110464A RU2017110464A RU2017110464A RU 2017110464 A RU2017110464 A RU 2017110464A RU 2017110464 A RU2017110464 A RU 2017110464A RU 2017110464 A RU2017110464 A RU 2017110464A RU 2017110464 A RU2017110464 A RU 2017110464A
Authority
RU
Russia
Prior art keywords
stream
subset
data processing
processing device
thread
Prior art date
Application number
RU2017110464A
Other languages
English (en)
Other versions
RU2685021C2 (ru
RU2017110464A3 (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 RU2017110464A publication Critical patent/RU2017110464A/ru
Publication of RU2017110464A3 publication Critical patent/RU2017110464A3/ru
Application granted granted Critical
Publication of RU2685021C2 publication Critical patent/RU2685021C2/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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Claims (64)

1. Устройство обработки данных, выполненное с возможностью выполнения множества потоков, причем устройство обработки данных содержит:
общий программный счетчик для идентификации одной команды в ряде команд, подлежащих выполнению для, по меньшей мере, поднабора из множества потоков, причем с каждым потоком в поднаборе связан программный счетчик потока для идентификации одной команды в ряде команд,
блок выбора, выполненный с возможностью выбора выбранного потока из поднабора потоков и установления общего программного счетчика на программный счетчик потока, связанный с выбранным потоком; и
процессор, выполненный с возможностью выполнения команды, идентифицированной общим программным счетчиком для одного или более из поднабора потоков, включающего в себя выбранный поток,
причем поднабор потоков связан с по меньшей мере одним параметром блокировки для отслеживания, какой из поднабора потоков имеет монопольный доступ к совместно используемому ресурсу;
причем процессор выполнен с возможностью изменения по меньшей мере одного параметра блокировки для указания, что поток получил монопольный доступ к совместно используемому ресурсу в ответ на первую команду, выполняемую для этого потока, и изменения по меньшей мере одного параметра блокировки, связанного с потоком, для указания, что поток больше не имеет монопольного доступа к совместно используемому ресурсу в ответ на вторую команду, выполняемую для этого потока; и
причем блок выбора выполнен с возможностью выбора выбранного потока на основании по меньшей мере одного параметра блокировки.
2. Устройство обработки данных по п. 1,
причем процессор выполнен с возможностью предоставления монопольного доступа потока к совместно используемому ресурсу в ответ на последовательность блокирования, содержащую по меньшей мере одну команда блокирования, выполняемую для этого потока.
3. Устройство обработки данных по п. 2,
в котором последовательность блокирования не содержит первой команды.
4. Устройство обработки данных по любому из предыдущих пунктов,
в котором процессор выполнен с возможностью отказа от монопольного доступа к совместно используемому ресурсу для потока в ответ на последовательность разблокирования, содержащую по меньшей мере одну команду разблокирования, выполняемую для этого потока.
5. Устройство обработки данных по п. 4,
в котором последовательность разблокирования не содержит второй команды.
6. Устройство обработки данных по любому из предыдущих пунктов,
в котором блок выбора выполнен с возможностью выбора, в качестве упомянутого выбранного потока, первого потока, указанного по меньшей мере одним параметром блокировки, как имеющего монопольный доступ к совместно используемому ресурсу, в порядке предпочтения второму потоку, указанному по меньшей мере одним параметром блокировки как не имеющего монопольного доступа к совместно используемому ресурсу.
7. Устройство обработки данных по любому из предыдущих пунктов,
в котором блок выбора выполнен с возможностью выбора упомянутого выбранного потока на основании параметра глубины вызова функции, связанного с каждым потоком из поднабора потоков.
8. Устройство обработки данных по любому из предыдущих пунктов,
в котором блок выбора выполнен с возможностью выбора упомянутого выбранного потока на основании программного счетчика потока, связанного с каждым потоком из поднабора потоков.
9. Устройство обработки данных по любому из предыдущих пунктов, в котором каждый поток из поднабора имеет соответствующий параметр блокировки, и процессор выполнен с возможностью изменения параметра блокировки, соответствующего потоку, для указания, что поток получил монопольный доступ к совместно используемому ресурсу в ответ на первую команду, выполняемую для этого потока, и для изменения параметра блокировки, соответствующего потоку, для указания, что поток больше не имеет монопольного доступа к совместно используемому ресурсу в ответ на вторую команду, выполняемую для этого потока.
10. Устройство обработки данных по п. 9, в котором процессор выполнен с возможностью разрешать первому потоку иметь монопольный доступ к первому совместно используемому ресурсу, тогда как второй поток имеет монопольный доступ ко второму совместно используемому ресурсу.
11. Устройство обработки данных по любому из пп. 9 и 10,
в котором блок выбора выполнен с возможностью выбора первого набора потоков на основании соответствующего параметра блокировки каждого потока из поднабора потоков;
причем блок выбора выполнен с возможностью выбора, из первого набора потоков, второго набора потоков на основании параметра глубины вызова функции;
причем блок выбора выполнен с возможностью выбора упомянутого выбранного потока из упомянутого второго набора потоков, на основании программных счетчиков потока, связанных с потоками во втором наборе потоков.
12. Устройство обработки данных по любому из пп. 1-8, в котором по меньшей мере один параметр блокировки содержит совместно используемый параметр блокировки, совместно используемый между поднабором потоков и параметром владельца блокировки, указывающим, какой из поднабора потоков имеет монопольный доступ к совместно используемому ресурсу.
13. Устройство обработки данных по п. 12, в котором совместно используемый параметр блокировки содержит флаг блокировки, указывающий, имеет ли какой-либо из поднабора потоков монопольный доступ к совместно используемому ресурсу.
14. Устройство обработки данных по любому из пп. 12 и 13, в котором совместно используемый параметр блокировки содержит счетчик блокировки, указывающий количество ресурсов, к которым поток, указанный параметром владельца блокировки, имеет монопольный доступ.
15. Устройство обработки данных по любому из пп. 12-14, в котором, если первый поток имеет монопольный доступ к первому совместно используемому ресурсу, процессор выполнен с возможностью препятствовать второму потоку иметь монопольный доступ ко второму совместно используемому ресурсу.
16. Устройство обработки данных по любому из пп. 12-15, в котором, если по меньшей мере один параметр блокировки указывает, что поток имеет монопольный доступ к совместно используемому ресурсу, то блок выбора выполнен с возможностью выбора потока, указанного параметром владельца блокировки в качестве упомянутого выбранного потока; и
если по меньшей мере один параметр блокировки указывает, что ни один поток не имеет монопольного доступа к совместно используемому ресурсу, то блок выбора выполнен с возможностью выбора, из поднабора потоков, дополнительного поднабора потоков на основании параметра глубины вызова функции, и выбора упомянутого выбранного потока из упомянутого дополнительного поднабора потоков на основании программных счетчиков потока, связанных с потоками в упомянутом дополнительном поднаборе потоков.
17. Устройство обработки данных по любому из предыдущих пунктов,
в котором процессор выполнен с возможностью увеличения по меньшей мере одного параметра блокировки в ответ на первую команду; и
причем процессор выполнен с возможностью уменьшения по меньшей мере одного параметра блокировки в ответ на вторую команду.
18. Устройство обработки данных по п. 17, в котором по меньшей мере один параметр блокировки указывает количество совместно используемых ресурсов, к которому поток имеет монопольный доступ.
19. Устройство обработки данных по любому из предыдущих пунктов,
в котором один или более из поднабора потоков содержат потоки, с которыми связаны один или более параметров потока, которые совпадают с соответствующими параметрами потока упомянутого выбранного потока, причем один или более связанных параметров потока включают в себя, по меньшей мере, программный счетчик потока.
20. Устройство обработки данных по любому из предыдущих пунктов,
в котором команды содержат микрооперации.
21. Устройство обработки данных по любому из предыдущих пунктов,
в котором первая команда и вторая команда кодируются как команда NOOP в по меньшей мере одном заранее заданном наборе команд.
22. Устройство обработки данных по любому из предыдущих пунктов,
в котором процессор выполнен с возможностью осуществления дополнительной операции в ответ на по меньшей мере одну из первой и второй команд.
23. Устройство обработки данных по п. 22,
в котором дополнительная операция является одной или более из: операции, которая является частью последовательности блокирования для получения монопольного доступа к совместно используемому ресурсу, операции, которая является частью последовательности разблокирования для отказа от монопольного доступа к совместно используемому ресурсу, операции для осуществления доступа к совместно используемому ресурсу, операции для определения, имеет ли поток монопольный доступ к совместно используемому ресурсу, и операции сравнения и обмена.
24. Устройство обработки данных по любому из предыдущих пунктов,
в котором совместно используемый ресурс содержит данные в памяти.
25. Устройство обработки данных по п. 24,
в котором процессор выполнен с возможностью выдачи операции барьера памяти в память до отказа от монопольного доступа к совместно используемому ресурсу.
26. Способ обработки данных для выполнения ряда команд для поднабора из множества потоков, причем с каждым потоком в поднаборе связан программный счетчик потока для идентификации одной команды в ряде команд, причем способ обработки данных содержит этапы, на которых:
выбирают выбранный поток из поднабора потоков, и устанавливают общий программный счетчик на программный счетчик потока, связанный с выбранным потоком, причем общий программный счетчик идентифицирует одну команду в ряде команд, подлежащих выполнению, для поднабора потоков; и
выполняют команду, идентифицированную общим программным счетчиком для одного или более из поднабора потоков, включающего в себя выбранный поток,
причем поднабор потоков связан с по меньшей мере одним параметром блокировки для отслеживания, какой из поднабора потоков имеет монопольный доступ к совместно используемому ресурсу;
причем по меньшей мере один параметр блокировки изменяется для указания, что поток получил монопольный доступ к совместно используемому ресурсу в ответ на первую команду, выполняемую для этого потока, и изменяется для указания, что поток больше не имеет монопольного доступа к совместно используемому ресурсу в ответ на вторую команду, выполняемую для этого потока; и
причем блок выбора выполнен с возможностью выбора выбранного потока на основании по меньшей мере одного параметра блокировки.
27. Устройство обработки данных, выполненное с возможностью выполнения множества потоков, причем устройство обработки данных содержит:
средство общего программного счетчика для идентификации одной команды в ряде команд, подлежащих выполнению для по меньшей мере поднабора из множества потоков, причем с каждым потоком в поднаборе связано средство программного счетчика потока для идентификации одной команды в ряде команд,
средство выбора для выбора выбранного потока из поднабора потоков и для установления средства общего программного счетчика на средство программного счетчика потока, связанное с выбранным потоком; и
средство процессора для выполнения команды, идентифицированной средством общего программного счетчика для одного или более из поднабора потоков, включающего в себя выбранный поток,
причем поднабор потоков связан с по меньшей мере одним параметром блокировки для отслеживания, какой из поднабора потоков имеет монопольный доступ к совместно используемому ресурсу;
причем средство процессора служит для изменения по меньшей мере одного параметра блокировки для указания, что поток получил монопольный доступ к совместно используемому ресурсу в ответ на первую команду, выполняемую для этого потока, и для изменения по меньшей мере одного параметра блокировки для указания, что поток больше не имеет монопольного доступа к совместно используемому ресурсу в ответ на вторую команду, выполняемую для этого потока; и
причем средство выбора служит для выбора выбранного потока на основании по меньшей мере одного параметра блокировки.
RU2017110464A 2014-09-08 2015-07-28 Совместно используемые ресурсы в устройстве обработки данных для выполнения множества потоков RU2685021C2 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1415834.9A GB2529899B (en) 2014-09-08 2014-09-08 Shared Resources in a Data Processing Apparatus for Executing a Plurality of Threads
GB1415834.9 2014-09-08
PCT/GB2015/052177 WO2016038328A1 (en) 2014-09-08 2015-07-28 Shared resources in a data processing appartus for executing a plurality of threads

Publications (3)

Publication Number Publication Date
RU2017110464A true RU2017110464A (ru) 2018-10-10
RU2017110464A3 RU2017110464A3 (ru) 2019-02-07
RU2685021C2 RU2685021C2 (ru) 2019-04-16

Family

ID=51796341

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2017110464A RU2685021C2 (ru) 2014-09-08 2015-07-28 Совместно используемые ресурсы в устройстве обработки данных для выполнения множества потоков

Country Status (11)

Country Link
US (1) US10528350B2 (ru)
EP (1) EP3191955B1 (ru)
JP (1) JP6563485B2 (ru)
KR (1) KR102449957B1 (ru)
CN (1) CN106716348B (ru)
GB (1) GB2529899B (ru)
IL (1) IL250301B (ru)
RU (1) RU2685021C2 (ru)
SG (1) SG11201701158XA (ru)
TW (1) TWI695319B (ru)
WO (1) WO2016038328A1 (ru)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108021339B (zh) * 2017-11-03 2021-05-04 网宿科技股份有限公司 一种磁盘读写的方法、设备以及计算机可读存储介质
CN108037680B (zh) * 2017-12-14 2020-05-19 北京霍因数字科技有限公司 一种指令处理方法及装置
EP3588280B1 (en) * 2018-06-25 2021-09-08 ARM Limited Handling load-exclusive instructions in apparatus having support for transactional memory
CN109271260A (zh) * 2018-08-28 2019-01-25 百度在线网络技术(北京)有限公司 临界区加锁方法、装置、终端及存储介质
CN109831585B (zh) * 2019-02-22 2021-06-25 维沃移动通信有限公司 一种运行参数调整方法及移动终端
CN111352762A (zh) * 2020-03-04 2020-06-30 恒生电子股份有限公司 一种进程访问确定方法和相关装置
CN113377492B (zh) * 2020-03-10 2022-05-24 阿里巴巴集团控股有限公司 内存管理方法、装置、电子设备及计算机可读存储介质
CN112000019B (zh) * 2020-07-24 2024-04-26 青岛海尔空调器有限总公司 用于共享设备指令控制的方法、装置及设备
CN111913810B (zh) * 2020-07-28 2024-03-19 阿波罗智能技术(北京)有限公司 多线程场景下的任务执行方法、装置、设备和存储介质
CN115408178B (zh) * 2022-10-31 2023-02-21 北京登临科技有限公司 用于保护对片上资源的访问的方法、介质和电子设备

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6598068B1 (en) * 1996-01-04 2003-07-22 Sun Microsystems, Inc. Method and apparatus for automatically managing concurrent access to a shared resource in a multi-threaded programming environment
US6357016B1 (en) * 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
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
US7015913B1 (en) * 2003-06-27 2006-03-21 Nvidia Corporation Method and apparatus for multithreaded processing of data in a programmable graphics processor
US7496918B1 (en) * 2004-06-01 2009-02-24 Sun Microsystems, Inc. System and methods for deadlock detection
US7765547B2 (en) * 2004-11-24 2010-07-27 Maxim Integrated Products, Inc. Hardware multithreading systems with state registers having thread profiling data
US8566827B2 (en) 2005-10-27 2013-10-22 International Business Machines Corporation System and method of arbitrating access of threads to shared resources within a data processing system
US20070124545A1 (en) * 2005-11-29 2007-05-31 Anton Blanchard Automatic yielding on lock contention for multi-threaded processors
US8683143B2 (en) * 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
US8453147B2 (en) 2006-06-05 2013-05-28 Cisco Technology, Inc. Techniques for reducing thread overhead for systems with multiple multi-threaded processors
US20080270732A1 (en) * 2007-04-27 2008-10-30 Weidong Cai Adaptive arena assignment based on arena contentions
US8140823B2 (en) * 2007-12-03 2012-03-20 Qualcomm Incorporated Multithreaded processor with lock indicator
TWI462011B (zh) * 2007-12-28 2014-11-21 Accton Technology Corp 程序之執行緒群組管理方法
US8055856B2 (en) 2008-03-24 2011-11-08 Nvidia Corporation Lock mechanism to enable atomic updates to shared memory
US8166480B2 (en) * 2008-07-29 2012-04-24 International Business Machines Corporation Reducing lock contention by adding a time slice to an active thread holding a lock
US8312470B2 (en) * 2009-12-22 2012-11-13 International Business Machines Corporation Recursive locking of a thread-shared resource
US20120054394A1 (en) * 2010-09-01 2012-03-01 Alcatel-Lucent Usa Inc. Fast Biased Locks
JP5725162B2 (ja) 2011-03-31 2015-05-27 富士通株式会社 排他制御方法、および排他制御プログラム
CN104583942B (zh) * 2012-06-15 2018-02-13 英特尔公司 乱序加载的基于锁的和基于同步的方法
US9229721B2 (en) 2012-09-10 2016-01-05 Qualcomm Incorporated Executing subroutines in a multi-threaded processing system
US9678897B2 (en) 2012-12-27 2017-06-13 Nvidia Corporation Approach for context switching of lock-bit protected memory
US9304940B2 (en) * 2013-03-15 2016-04-05 Intel Corporation Processors, methods, and systems to relax synchronization of accesses to shared memory

Also Published As

Publication number Publication date
IL250301B (en) 2020-08-31
TW201617859A (zh) 2016-05-16
EP3191955A1 (en) 2017-07-19
WO2016038328A1 (en) 2016-03-17
JP2017530455A (ja) 2017-10-12
IL250301A0 (en) 2017-03-30
CN106716348B (zh) 2021-05-18
US10528350B2 (en) 2020-01-07
GB2529899B (en) 2021-06-23
RU2685021C2 (ru) 2019-04-16
TWI695319B (zh) 2020-06-01
GB201415834D0 (en) 2014-10-22
EP3191955B1 (en) 2021-09-22
KR20170051465A (ko) 2017-05-11
RU2017110464A3 (ru) 2019-02-07
GB2529899A (en) 2016-03-09
KR102449957B1 (ko) 2022-10-05
JP6563485B2 (ja) 2019-08-21
US20170286107A1 (en) 2017-10-05
CN106716348A (zh) 2017-05-24
SG11201701158XA (en) 2017-03-30

Similar Documents

Publication Publication Date Title
RU2017110464A (ru) Совместно используемые ресурсы в устройстве обработки данных для выполнения множества потоков
JP2018514028A5 (ru)
RU2012107091A (ru) Программный компонент и устройство для автоматизированной обработки многоцелевых данных с применением функций, требующих разных уровней безопасности или границ ответственности
JP2017505483A5 (ru)
JP2017519308A5 (ru)
JP2017530436A5 (ru)
JP2013045278A5 (ja) アクセス管理方法およびアクセス管理装置
JP2016514299A5 (ru)
WO2013186722A4 (en) Selectively controlling instruction execution in transactional processing
EP2947594A3 (en) Protecting critical data structures in an embedded hypervisor system
JP2013526750A5 (ru)
JP2016524257A5 (ru)
JP2015176235A5 (ru)
RU2017103676A (ru) Управление выполнением потоков в многопоточном процессоре
MY191044A (en) Permission control for contingent memory access program instruction
JP2018057869A5 (ru)
JP2014182754A5 (ru)
JP2016038723A5 (ja) 画像形成装置、画像形成装置の制御方法、及びプログラム
JP2015207117A5 (ru)
RU2017109885A (ru) Представление контекста операционной системы в доверенном платформенном модуле
JP2018072944A5 (ru)
JP2016076116A5 (ru)
JP2014149846A5 (ru)
US8851002B1 (en) Systems and methods for creating quilt blocks
JP2018072943A5 (ja) プログラム、システム及び情報処理方法