FR3072798B1 - Ordonnancement de taches dans un processeur a fils d'execution multiples - Google Patents
Ordonnancement de taches dans un processeur a fils d'execution multiples Download PDFInfo
- Publication number
- FR3072798B1 FR3072798B1 FR1859640A FR1859640A FR3072798B1 FR 3072798 B1 FR3072798 B1 FR 3072798B1 FR 1859640 A FR1859640 A FR 1859640A FR 1859640 A FR1859640 A FR 1859640A FR 3072798 B1 FR3072798 B1 FR 3072798B1
- Authority
- FR
- France
- Prior art keywords
- thread
- context registers
- time slots
- registers
- sets
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
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/461—Saving or restoring of program or task context
-
- 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/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
-
- 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/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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
-
- 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
-
- 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
- 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
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
Abstract
Processeur comprenant : une unité d'exécution agencée pour exécuter un fil respectif dans chaque créneau temporel d'une séquence répétitive de créneaux temporels différents ; et une pluralité d'ensembles de registres de contexte, chacun comprenant un ensemble respectif de registres pour représenter un état respectif d'un fil respectif. Les ensembles de registres de contexte comprennent un ensemble de registres de contexte de fil de travail respectif pour chacun des créneaux temporels que l'unité d'exécution est capable d'entrelacer, et au moins un ensemble de registres de contexte supplémentaire. Les ensembles de registres de contexte de travail représentent les états respectifs de fils de travail respectifs, et l'ensemble de registres de contexte supplémentaire représente l'état d'un fil superviseur. Le processeur est agencé pour commencer à exécuter le fil superviseur dans chacun des créneaux temporels, et pour permettre au fil superviseur d'abandonner ensuite individuellement chacun des créneaux temporels dans lesquels il s'exécute à l'un respectif des fils de travail.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1717303.0 | 2017-10-20 | ||
GBGB1717303.0A GB201717303D0 (en) | 2017-10-20 | 2017-10-20 | Scheduling tasks in a multi-threaded processor |
US15/885,925 US10956165B2 (en) | 2017-10-20 | 2018-02-01 | Scheduling tasks in a multi-threaded processor |
GB1816891.4A GB2569843B (en) | 2017-10-20 | 2018-10-17 | Scheduling tasks in a multi-threaded processor |
Publications (2)
Publication Number | Publication Date |
---|---|
FR3072798A1 FR3072798A1 (fr) | 2019-04-26 |
FR3072798B1 true FR3072798B1 (fr) | 2021-04-30 |
Family
ID=60481909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR1859640A Active FR3072798B1 (fr) | 2017-10-20 | 2018-10-18 | Ordonnancement de taches dans un processeur a fils d'execution multiples |
Country Status (8)
Country | Link |
---|---|
US (2) | US10956165B2 (fr) |
JP (1) | JP6660991B2 (fr) |
KR (1) | KR102159730B1 (fr) |
CN (1) | CN109697111B (fr) |
CA (1) | CA3021447C (fr) |
FR (1) | FR3072798B1 (fr) |
GB (2) | GB201717303D0 (fr) |
TW (1) | TWI687866B (fr) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201819616D0 (en) * | 2018-11-30 | 2019-01-16 | Graphcore Ltd | Virtualised gateways |
GB2580316B (en) | 2018-12-27 | 2021-02-24 | Graphcore Ltd | Instruction cache in a multi-threaded processor |
US10943323B2 (en) * | 2018-12-28 | 2021-03-09 | Arm Limited | Data processing systems |
GB201904266D0 (en) | 2019-03-27 | 2019-05-08 | Graphcore Ltd | A networked computer with embedded rings |
GB201904263D0 (en) | 2019-03-27 | 2019-05-08 | Graphcore Ltd | A networked computer |
GB201904265D0 (en) | 2019-03-27 | 2019-05-08 | Graphcore Ltd | A partitionable networked computer |
GB201904267D0 (en) | 2019-03-27 | 2019-05-08 | Graphcore Ltd | A networked computer with multiple embedded rings |
CN112084122B (zh) * | 2019-09-30 | 2021-09-28 | 成都海光微电子技术有限公司 | 计算机存储器中对区域预取器的置信度和侵略性控制 |
US11327690B2 (en) | 2019-11-13 | 2022-05-10 | Google Llc | Enhanced input of machine-learning accelerator activations |
CN114026551A (zh) | 2020-03-26 | 2022-02-08 | 图核有限公司 | 具有两个嵌入式环的网络计算机 |
GB2596872B (en) * | 2020-07-10 | 2022-12-14 | Graphcore Ltd | Handling injected instructions in a processor |
GB2597078B (en) * | 2020-07-14 | 2022-07-13 | Graphcore Ltd | Communication between host and accelerator over network |
CN112463327B (zh) * | 2020-11-25 | 2023-01-31 | 海光信息技术股份有限公司 | 逻辑线程快速切换的方法、装置、cpu芯片及服务器 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69429204T2 (de) * | 1993-03-26 | 2002-07-25 | Cabletron Systems Inc | Ablaufssteuerungsverfahren und -gerät für ein Kommunikationsnetzwerk |
US6233599B1 (en) | 1997-07-10 | 2001-05-15 | International Business Machines Corporation | Apparatus and method for retrofitting multi-threaded operations on a computer by partitioning and overlapping registers |
US6986141B1 (en) * | 1998-03-10 | 2006-01-10 | Agere Systems Inc. | Context controller having instruction-based time slice task switching capability and processor employing the same |
US6401155B1 (en) * | 1998-12-22 | 2002-06-04 | Philips Electronics North America Corporation | Interrupt/software-controlled thread processing |
US6957432B2 (en) | 2000-03-21 | 2005-10-18 | Microsoft Corporation | Real-time scheduler |
AU2001286410A1 (en) * | 2000-07-31 | 2002-02-13 | Morphics Technology, Inc. | Method and apparatus for time-sliced and multi-threaded data processing in a communication system |
US20030126416A1 (en) * | 2001-12-31 | 2003-07-03 | Marr Deborah T. | Suspending execution of a thread in a multi-threaded processor |
CN1842770A (zh) * | 2003-08-28 | 2006-10-04 | 美普思科技有限公司 | 一种在处理器中挂起和释放执行过程中计算线程的整体机制 |
US8099110B2 (en) | 2004-07-29 | 2012-01-17 | Samsung Electronics Co., Ltd. | Apparatus and method for efficient determination of mobile station location in a wireless network |
US7203822B2 (en) | 2004-07-31 | 2007-04-10 | Hewlett-Packard Development Company, L.P. | Unprivileged context management |
US20060146864A1 (en) * | 2004-12-30 | 2006-07-06 | Rosenbluth Mark B | Flexible use of compute allocation in a multi-threaded compute engines |
US7810083B2 (en) | 2004-12-30 | 2010-10-05 | Intel Corporation | Mechanism to emulate user-level multithreading on an OS-sequestered sequencer |
CN102184123B (zh) * | 2005-03-02 | 2013-10-16 | 英特尔公司 | 一种附加地支持虚拟多线程的多线程处理器及系统 |
US8195922B2 (en) * | 2005-03-18 | 2012-06-05 | Marvell World Trade, Ltd. | System for dynamically allocating processing time to multiple threads |
US7743233B2 (en) | 2005-04-05 | 2010-06-22 | Intel Corporation | Sequencer address management |
US7849466B2 (en) | 2005-07-12 | 2010-12-07 | Qualcomm Incorporated | Controlling execution mode of program threads by applying a mask to a control register in a multi-threaded processor |
US7685409B2 (en) | 2007-02-21 | 2010-03-23 | Qualcomm Incorporated | On-demand multi-thread multimedia processor |
US7958333B2 (en) * | 2007-05-30 | 2011-06-07 | XMOS Ltd. | Processor with memory access stage adapted to fetch an instruction of a thread when no memory access operation is detected |
US20090260013A1 (en) * | 2008-04-14 | 2009-10-15 | International Business Machines Corporation | Computer Processors With Plural, Pipelined Hardware Threads Of Execution |
JP2010176403A (ja) * | 2009-01-29 | 2010-08-12 | Toyota Motor Corp | マルチスレッドプロセッサ装置 |
US8214831B2 (en) * | 2009-05-05 | 2012-07-03 | International Business Machines Corporation | Runtime dependence-aware scheduling using assist thread |
GB2489708B (en) | 2011-04-05 | 2020-04-15 | Advanced Risc Mach Ltd | Thread selection for multithreaded processing |
WO2013140018A1 (fr) | 2012-03-21 | 2013-09-26 | Nokia Corporation | Procédé dans un processeur, appareil et produit programme d'ordinateur |
JP5894496B2 (ja) | 2012-05-01 | 2016-03-30 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
JP2014153860A (ja) | 2013-02-07 | 2014-08-25 | Renesas Electronics Corp | マルチスレッドプロセッサ |
US20150074353A1 (en) * | 2013-09-06 | 2015-03-12 | Futurewei Technologies, Inc. | System and Method for an Asynchronous Processor with Multiple Threading |
US9558000B2 (en) * | 2014-02-06 | 2017-01-31 | Optimum Semiconductor Technologies, Inc. | Multithreading using an ordered list of hardware contexts |
-
2017
- 2017-10-20 GB GBGB1717303.0A patent/GB201717303D0/en not_active Ceased
-
2018
- 2018-02-01 US US15/885,925 patent/US10956165B2/en active Active
- 2018-10-17 GB GB1816891.4A patent/GB2569843B/en active Active
- 2018-10-18 FR FR1859640A patent/FR3072798B1/fr active Active
- 2018-10-19 TW TW107137040A patent/TWI687866B/zh active
- 2018-10-19 CA CA3021447A patent/CA3021447C/fr active Active
- 2018-10-19 KR KR1020180125340A patent/KR102159730B1/ko active IP Right Grant
- 2018-10-19 JP JP2018197310A patent/JP6660991B2/ja active Active
- 2018-10-22 CN CN201811228749.6A patent/CN109697111B/zh active Active
-
2021
- 2021-02-10 US US17/172,864 patent/US11550591B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2019079530A (ja) | 2019-05-23 |
CN109697111B (zh) | 2023-05-02 |
CN109697111A (zh) | 2019-04-30 |
TW201923561A (zh) | 2019-06-16 |
GB2569843B (en) | 2020-06-10 |
GB201717303D0 (en) | 2017-12-06 |
US20190121668A1 (en) | 2019-04-25 |
TWI687866B (zh) | 2020-03-11 |
CA3021447C (fr) | 2021-12-14 |
GB201816891D0 (en) | 2018-11-28 |
JP6660991B2 (ja) | 2020-03-11 |
US10956165B2 (en) | 2021-03-23 |
KR102159730B1 (ko) | 2020-09-24 |
FR3072798A1 (fr) | 2019-04-26 |
GB2569843A (en) | 2019-07-03 |
CA3021447A1 (fr) | 2019-04-20 |
KR20190044551A (ko) | 2019-04-30 |
US11550591B2 (en) | 2023-01-10 |
US20210165660A1 (en) | 2021-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
FR3072798B1 (fr) | Ordonnancement de taches dans un processeur a fils d'execution multiples | |
BR112018004933A2 (pt) | agendamento eficaz de tarefas multiversionadas | |
EP4233777A3 (fr) | Outil comparatif de planification de traitements orthodontiques | |
JP2016524756A5 (fr) | ||
RU2017116991A (ru) | Сбор и группирование вкладок | |
EP2660714A3 (fr) | Dispositif semi-conducteur | |
EP3805921A3 (fr) | Format d'instruction compatible avec les vecteurs et son exécution | |
EP2728462A3 (fr) | Unité de logique arithmétique | |
JP2016514299A5 (fr) | ||
EP2650786A3 (fr) | Système de traitement distribué, noeud d'ordonnanceur et procédé de planification d'un système de traitement distribué et appareil de génération de programme associé | |
JP2015531934A5 (fr) | ||
WO2016036820A4 (fr) | Gestion d'appel de tâches | |
Pluye | Mixed kinds of evidence: synthesis designs and critical appraisal for systematic mixed studies reviews including qualitative, quantitative and mixed methods studies | |
JP2016528650A5 (fr) | ||
WO2014167197A9 (fr) | Procédé d'exécution de taches dans un system temps-réel critique | |
WO2017052811A3 (fr) | Processeurs, procédés, systèmes et instructions pour exponentiation modulaire sécurisée | |
EP2919112A3 (fr) | Processeurs procédés, systèmes et instructions de fusion à décalage inter-élément à deux sources intégrés | |
WO2006083046A3 (fr) | Procedes et appareils permettant d'obtenir une interface de programmation a changement de taches | |
JP2018502425A5 (fr) | ||
WO2015134330A8 (fr) | Analyse de blocage numérique des performances de cpu | |
JP2021104433A5 (fr) | ||
EP2868251A3 (fr) | Lave-vaisselle à démarrage différé | |
MX2016011886A (es) | Infraestructura de flujo de tareas en aplicaciones. | |
EP3343361A3 (fr) | Appareil et procédés pour supporter des sorties de boucle comptées dans un processeur de boucle multibrins | |
FR3047585B1 (fr) | Procede et dispositif de surveillance de l'execution d'un code programme |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 2 |
|
PLFP | Fee payment |
Year of fee payment: 3 |
|
PLSC | Publication of the preliminary search report |
Effective date: 20201106 |
|
PLFP | Fee payment |
Year of fee payment: 4 |
|
PLFP | Fee payment |
Year of fee payment: 5 |
|
PLFP | Fee payment |
Year of fee payment: 6 |