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 PDF

Info

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
Application number
FR1859640A
Other languages
English (en)
Other versions
FR3072798A1 (fr
Inventor
Simon Christian Knowles
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Graphcore Ltd
Original Assignee
Graphcore Ltd
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 Graphcore Ltd filed Critical Graphcore Ltd
Publication of FR3072798A1 publication Critical patent/FR3072798A1/fr
Application granted granted Critical
Publication of FR3072798B1 publication Critical patent/FR3072798B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • 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/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • 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/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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/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
    • 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/3888Concurrent 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
    • 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
    • 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
    • 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
    • G06F9/4887Scheduling 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.
FR1859640A 2017-10-20 2018-10-18 Ordonnancement de taches dans un processeur a fils d'execution multiples Active FR3072798B1 (fr)

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)

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

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

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