JP5803972B2 - マルチコアプロセッサ - Google Patents
マルチコアプロセッサ Download PDFInfo
- Publication number
- JP5803972B2 JP5803972B2 JP2013087372A JP2013087372A JP5803972B2 JP 5803972 B2 JP5803972 B2 JP 5803972B2 JP 2013087372 A JP2013087372 A JP 2013087372A JP 2013087372 A JP2013087372 A JP 2013087372A JP 5803972 B2 JP5803972 B2 JP 5803972B2
- Authority
- JP
- Japan
- Prior art keywords
- stage
- task
- queue
- load distribution
- core processor
- 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.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 claims description 60
- 238000000034 method Methods 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
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/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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/507—Low-level
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
すなわち、パイプラインの前段部においてデコードされる命令によっては、後段部の処理を実行する必要が無いものがある。したがって、そのような命令を含む場合は、対応する後段部に、異なる命令を実行させることができるようになり、より効率的に処理を行うことが可能になる。
また、複数の前段部に対応して設けられ、各前段部に順次タスクを実行させるための待ち行列と、複数のタスクに関する処理時間情報を保持すると共に、前記複数のタスクに関する動的実行状況が反映されるタスク情報テーブルとを備え、負荷分散処理部は、タスク情報テーブルを参照することで各待ち行列に対する新規タスクの振り分け処理を行う。
すなわち、処理時間情報は、各タスクの実行を完了させるために必要な時間の情報であり、動的実行状況は、それぞれの時点における各タスクの実行状況を示すものである。したがって、負荷分散処理部は、それらの情報に基づいて新規タスクの振り分けを効率的に行うことができる。
図1に示すように、本実施形態のマルチコアプロセッサ1は、並列処理を実行するためのパイプラインの前段部分を構成する4つの前段コア2(1)〜2(4)を備えている。これらの前段コア2(1)〜2(4)については、対応するタスクキュー(待ち行列)3(1)〜3(4)が設けられている。タスクキュー3(1)〜3(4)には、タスク振り分けブロック4により振り分けられたタスクが順次配置され、各前段コア2(1)〜2(4)により処理されるのを「待ち」の状態となる。各前段コア2(1)〜2(4)は、パイプラインの前段部分として命令フェッチ(IF)ステージと、命令デコード(ID)ステージとを実行する。
LDR R3[R0]
により、レジスタファイル8内のレジスタR3に、レジスタR0の内容が示すアドレスよりデータがロードされると、次の命令
LDRB R4[R3]
で、レジスタR3の内容が示すアドレスからレジスタR4にデータがロードされる。したがって、ロード命令LDRBは第7サイクルでデコードされているが、その実行は、ロード命令LDRについてWBステージ(レジスタ転送)が実行される第9サイクルからになっている。結果として、第8サイクルから実行が開始されるパイプラインには空きが発生している。
LDRB R4[R0,#4]
の実行を開始するには、その前の命令
LDR R3[R0]
の実行完了を待つ必要が無い。
すなわち、処理時間情報は、各タスクの実行を完了させるために必要な時間の情報であり、動的実行状況は、それぞれの時点における各タスクの実行状況を示すものである。したがって、動的負荷分散ブロック5は、それらの情報に基づいて新規タスクの振り分けを効率的に行うことができる。
以下、第1実施形態と同一部分には同一符号を付して説明を省略し、異なる部分について説明する。図6に示すように、第2実施形態のマルチコアプロセッサ21は、前段コア22の数(4)よりも、後段コア7の数(5)を多くした構成例を示している。尚、レジスタファイル8及びメモリ9については、図示を省略している。
前段コア,後段コアの数は、個別の設計に応じて適宜設定すれば良い。
第2実施形態における閾値についても、適宜変更して良い。
第2実施形態において、前段コアにより命令を3並列以上でフェッチ,デコードして、1つのタスクキューの処理を3つ以上の後段コアで並列処理するように構成しても良い。
Claims (5)
- 複数のタスクを、複数のプロセッサコアのパイプラインを用いて並列処理するマルチコアプロセッサ(1,21)において、
前記パイプラインを、命令デコードステージまでの前段部(2,22)と、命令実行ステージ以降の後段部(7)とに分け、
前記命令デコードステージにおけるデコード結果を参照して、前記後段部における処理の実行が必要となる前段部のデコード結果を、前記後段部に割り当てるように制御する負荷分散処理部(5,24)と、
前記複数の前段部に対応して設けられ、各前段部に順次タスクを実行させるための待ち行列(3)と、
複数のタスクに関する処理時間情報を保持すると共に、前記複数のタスクに関する動的実行状況が反映されるタスク情報テーブル(11)とを備え、
前記負荷分散処理部は、前記タスク情報テーブルを参照することで、前記各待ち行列に対する新規タスクの振り分け処理を行うことを特徴とするマルチコアプロセッサ。 - 前記負荷分散処理部は、前記前段部においてデコードされた複数の命令が並列実行可能であれば、それら複数の命令を複数の後段部に割り当てて並列実行させることを特徴とする請求項1記載のマルチコアプロセッサ。
- 前記負荷分散処理部は、前記各待ち行列について、現在待ち状態にある各タスクの占有率を、当該タスクに関する残り実行時間と処理限界時間との比で計算すると、前記各タスクの占有率を加算した合計占有率を求め、前記合計占有率が最低を示す待ち行列に、次の新規タスクを割り当てることを特徴とする請求項1又は2記載のマルチコアプロセッサ。
- 前記負荷分散処理部は、前記合計占有率が高い待ち行列に対応する前段部を優先して、デコード結果を後段部に割り当てることを特徴とする請求項3記載のマルチコアプロセッサ。
- 前記負荷分散処理部(24)は、前記合計占有率が高い待ち行列に対応する前段部(22)のデコード結果を、複数の後段部に割り当てることを特徴とする請求項3又は4記載のマルチコアプロセッサ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013087372A JP5803972B2 (ja) | 2013-04-18 | 2013-04-18 | マルチコアプロセッサ |
US14/244,994 US9747132B2 (en) | 2013-04-18 | 2014-04-04 | Multi-core processor using former-stage pipeline portions and latter-stage pipeline portions assigned based on decode results in former-stage pipeline portions |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013087372A JP5803972B2 (ja) | 2013-04-18 | 2013-04-18 | マルチコアプロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014211743A JP2014211743A (ja) | 2014-11-13 |
JP5803972B2 true JP5803972B2 (ja) | 2015-11-04 |
Family
ID=51729943
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013087372A Expired - Fee Related JP5803972B2 (ja) | 2013-04-18 | 2013-04-18 | マルチコアプロセッサ |
Country Status (2)
Country | Link |
---|---|
US (1) | US9747132B2 (ja) |
JP (1) | JP5803972B2 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10180841B2 (en) | 2014-12-22 | 2019-01-15 | Centipede Semi Ltd. | Early termination of segment monitoring in run-time code parallelization |
US10296346B2 (en) * | 2015-03-31 | 2019-05-21 | Centipede Semi Ltd. | Parallelized execution of instruction sequences based on pre-monitoring |
US10296350B2 (en) * | 2015-03-31 | 2019-05-21 | Centipede Semi Ltd. | Parallelized execution of instruction sequences |
CN106506393A (zh) * | 2016-02-05 | 2017-03-15 | 华为技术有限公司 | 一种数据流处理方法、装置和*** |
CN109144682A (zh) * | 2017-06-27 | 2019-01-04 | 阿里巴巴集团控股有限公司 | 任务的优先级处理方法和处理装置 |
US11119931B1 (en) * | 2019-09-18 | 2021-09-14 | Facebook Technologies, Llc | Data pipeline for microkernel operating system |
CN111142938B (zh) * | 2019-11-20 | 2023-07-07 | 深圳先进技术研究院 | 一种异构芯片的任务处理方法、任务处理装置及电子设备 |
CN111510396B (zh) * | 2020-06-30 | 2020-10-27 | 腾讯科技(深圳)有限公司 | 一种消息发送方法和相关装置 |
US11734017B1 (en) * | 2020-12-07 | 2023-08-22 | Waymo Llc | Methods and systems for processing vehicle sensor data across multiple digital signal processing cores virtually arranged in segments based on a type of sensor |
CN115391021A (zh) * | 2021-05-24 | 2022-11-25 | 北京灵汐科技有限公司 | 核心控制方法及装置、处理核心、***、电子设备、介质 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3760035B2 (ja) * | 1996-08-27 | 2006-03-29 | 松下電器産業株式会社 | 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ |
CN100373331C (zh) | 1996-08-27 | 2008-03-05 | 松下电器产业株式会社 | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 |
JPH1124930A (ja) * | 1997-07-09 | 1999-01-29 | Matsushita Electric Ind Co Ltd | 情報処理装置 |
US20040172631A1 (en) * | 2001-06-20 | 2004-09-02 | Howard James E | Concurrent-multitasking processor |
US7209996B2 (en) | 2001-10-22 | 2007-04-24 | Sun Microsystems, Inc. | Multi-core multi-thread processor |
KR100498482B1 (ko) | 2003-01-27 | 2005-07-01 | 삼성전자주식회사 | 명령어수에 수행 주기 회수를 가중치로 사용하여 쓰레드를페치하는 동시 다중 쓰레딩 프로세서 및 그 방법 |
JP2005284749A (ja) | 2004-03-30 | 2005-10-13 | Kyushu Univ | 並列処理コンピュータ |
GB2457265B (en) | 2008-02-07 | 2010-06-09 | Imagination Tech Ltd | Prioritising of instruction fetching in microprocessor systems |
US8285973B2 (en) * | 2008-08-04 | 2012-10-09 | International Business Machines Corporation | Thread completion rate controlled scheduling |
EP2434392B1 (en) * | 2009-05-18 | 2014-08-13 | Panasonic Corporation | Processor |
US20110055838A1 (en) * | 2009-08-28 | 2011-03-03 | Moyes William A | Optimized thread scheduling via hardware performance monitoring |
JP2014225137A (ja) * | 2013-05-16 | 2014-12-04 | 株式会社デンソー | タスクスケジューラ,マイクロプロセッサ及びタスクスケジューリング方法 |
-
2013
- 2013-04-18 JP JP2013087372A patent/JP5803972B2/ja not_active Expired - Fee Related
-
2014
- 2014-04-04 US US14/244,994 patent/US9747132B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US9747132B2 (en) | 2017-08-29 |
US20140317380A1 (en) | 2014-10-23 |
JP2014211743A (ja) | 2014-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5803972B2 (ja) | マルチコアプロセッサ | |
US9733945B2 (en) | Pipelining out-of-order instructions | |
EP2140347B1 (en) | Processing long-latency instructions in a pipelined processor | |
JP5650952B2 (ja) | マルチコア/スレッドのワークグループ計算スケジューラ | |
JP4292198B2 (ja) | 実行スレッドをグループ化するための方法 | |
US8875146B2 (en) | Systems and methods for bounding processing times on multiple processing units | |
KR101640848B1 (ko) | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 | |
US20120284720A1 (en) | Hardware assisted scheduling in computer system | |
JP5718378B2 (ja) | 一又は複数のタスクを実行するために使用するシステム及び方法 | |
Tang et al. | Combining hard periodic and soft aperiodic real-time task scheduling on heterogeneous compute resources | |
US11366669B2 (en) | Apparatus for preventing rescheduling of a paused thread based on instruction classification | |
CN111752971B (zh) | 基于任务并行处理数据流的方法、装置、设备及存储介质 | |
KR102205899B1 (ko) | 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치 | |
US9286114B2 (en) | System and method for launching data parallel and task parallel application threads and graphics processing unit incorporating the same | |
CN116414541B (zh) | 兼容多种任务工作模式的任务执行方法和装置 | |
JP5195408B2 (ja) | マルチコアシステム | |
EP3591518B1 (en) | Processor and instruction scheduling method | |
WO2019188175A1 (ja) | デッドロック回避方法、デッドロック回避装置 | |
JP2012173755A (ja) | 情報処理装置及び情報処理方法 | |
KR101254911B1 (ko) | 다중 경로를 통해 데이터 입출력을 수행하기 위한 방법, 시스템 및 컴퓨터 판독 가능 기록 매체 | |
JP7102840B2 (ja) | プロセッサコア、命令制御方法、プログラム | |
CN114880101B (zh) | 一种ai处理器、电子部件及电子设备 | |
JP2011128672A (ja) | スーパースカラプロセッサ及びその命令処理方法 | |
JP3931883B2 (ja) | ジョブスケジューリング方法、計算機システムおよびジョブスケジューリングプログラム | |
JP2002318689A (ja) | 資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140821 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150409 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150421 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150617 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20150804 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150817 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5803972 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |