JP2010066892A - データプロセッサ及びデータ処理システム - Google Patents
データプロセッサ及びデータ処理システム Download PDFInfo
- Publication number
- JP2010066892A JP2010066892A JP2008231147A JP2008231147A JP2010066892A JP 2010066892 A JP2010066892 A JP 2010066892A JP 2008231147 A JP2008231147 A JP 2008231147A JP 2008231147 A JP2008231147 A JP 2008231147A JP 2010066892 A JP2010066892 A JP 2010066892A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- loop
- lock
- pointer
- 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.)
- Pending
Links
- 230000015572 biosynthetic process Effects 0.000 claims description 2
- 230000002441 reversible effect Effects 0.000 abstract description 9
- 238000000034 method Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 12
- 230000007246 mechanism Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000003247 decreasing effect Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 229910021421 monocrystalline silicon Inorganic materials 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000000758 substrate Substances 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- 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, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
Abstract
【解決手段】データプロセッサ(1)の命令バッファ(26)はフェッチされた命令を蓄積するメモリ部(40)を制御するバッファ制御部(44)を有し、バッファ制御部は、フェッチした条件分岐命令の実行履歴が条件成立を示唆するとき、フェッチした条件分岐命令の分岐方向が命令実行順とは逆方向であって、前記条件分岐命令による分岐元から分岐先までの命令アドレスの差分が命令バッファの記憶容量に納まる範囲であるとき、前記条件分岐命令による分岐元から分岐先までの命令列を命令バッファに保持する。保持した命令列の命令実行が繰り返される間は当該命令列の命令を命令バッファから命令デコーダに供給し、当該命令列の命令実行から抜けるとき当該命令列の保持を解除する。
【選択図】図1
Description
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
実施の形態について更に詳述する。以下、本発明を実施するための形態を図面に基づいて詳細に説明する。なお、発明を実施するための形態を説明するための全図において、同一の機能を有する要素には同一の符号を付して、その繰り返しの説明を省略する。
PC(H’00400008)+H’F8(最上位符号)
=H’00400008−H’8=H’00400000(ラベルLOOP)となる。すなわち、BF命令はラベルLOOPに分岐し、実行命令アドレスアドレスが減少する逆方向の分岐とされる。このとき、命令1(inst1)からBF命令までがループを形成する。ループを構成する命令が5命令と少ない。BF命令の非分岐の命令列がinst5からinst8の命令列となる。
ロック対象のビットが1にセットされたショートループに対して、ロックスタートポインタ(lcks_ptr)とロックエンドポインタ(lcke_ptr)が設定され、命令保持後に命令キューがロックされる(IQロック)。ループから抜けるときは、ロック対象のビットが0となり、分岐方向が順方向であるか、または、命令アドレス(IADR)に対応されるリードポインタ(read_ptr)がロックスタートポインタとロックエンドポインタ間のアドレス範囲外になることによって、命令キューロック(IQロック)が解除される。図6の例では、分岐予測ミス(BMIS)により命令キューロックが解除されるのに対し、図8の例では、分岐方向が順方向であるか、または、リードポインタ(read_ptr)がロックアドレス範囲(lcks_ptr〜lcke_ptr)と異なることによってIQロックが解除される。
まず、ループLP2が分岐管理テーブルに登録され、ロック後にループから脱する際に分岐ミスが発生するので、分岐管理テーブル54から削除され、ループLP2に関するIQロックが解除(85)されたところ(命令8)から説明する。命令8、命令9、命令10は初めて実行され、通常モードで命令キャッシュ11から命令キュー26に命令がフェッチされ、命令が選択されて命令デコーダ21に供給される。
ループLP3のみ実行しているときは単一分岐である。ループLP4中の分岐命令8がループLP3の先頭に分岐しないときは単一分岐として扱ってよく、ループLP3の先頭に分岐するときは二重分岐となる。ループLP3の先頭に分岐する場合は、ループLP4の分岐先がケース1と異なるが、ケース1と同じフローとすればよい。
ループLP5の実行中、ループLP6の分岐がないときは単一分岐である。ループLP5でショート・ループモードに入って、命令キュー26をロックしているときに、ループLP6の分岐がある場合について説明する。ループLP6の分岐がuntakenのときは、ループLP5は単一分岐のショート・ループとして継続する。ループLP6の分岐がtakenのときは、ロック範囲対象アドレスチェックでアドレス範囲外(114)になるため、分岐管理テーブルをクリアし(115)、命令キューロックが解除され(85)、ループLP6の分岐先に分岐する。ロック範囲アドレスチェックは、ロックポインタ制御でx=分岐元アドレス−read_ptr<0になることで判別できる。
lcke_ptr…ロックエンドポインタ
inst_ptr…命令位置ポインタ
read_ptr…リードポインタ
write_ptr…ライトポインタ
1…データプロセッサ
2…SDRAM
4…CPUコア
15…CPU
11…命令キャッシュ
20…命令フェッチ部
21…命令デコーダ
22…実行部
25…分岐予測部
26…命令キュー(命令バッファ)
40…命令キューアレイ
44…命令キュー制御部
45…命令ポインタ制御部
46,46A,46B…命令キューロック制御
50,50A,50B…PC相対分岐管理部
51,51B…ロックポインタ制御部
85…分岐履歴カウンタ
86…ロック内分岐カウンタ
Claims (11)
- 命令をフェッチする命令フェッチ部と、命令フェッチ部によりフェッチされた命令をデコードする命令デコーダと、命令デコーダによるデコード結果に基づいて命令を実行する実行部とを有するデータプロセッサであって、
前記命令フェッチ部は、命令バッファと分岐予測部を有し、
前記命令バッファ部は外部からフェッチされた命令を蓄積するメモリ部と前記メモリ部を制御するバッファ制御部とを有し、
前記バッファ制御部は、フェッチした条件分岐命令の実行履歴が条件成立を示唆するとき、フェッチした条件分岐命令の分岐方向が命令実行順とは逆方向であって、前記条件分岐命令による分岐元から分岐先までの命令アドレスの差分がメモリ部の記憶容量に納まる範囲であるとき、前記条件分岐命令による分岐元から分岐先までの命令列をメモリ部に保持し、保持した命令列の命令実行が繰り返される間は当該命令列の命令をメモリ部から命令デコーダに供給し、当該命令列の命令実行から抜けるとき当該命令列の保持を解除する、データプロセッサ。 - 前記バッファ制御部は、前記メモリ部に対するFIFO形態のリードポインタ及びライトポインタの制御を行うとともに、メモリ部に保持する前記命令列をロックスタートポインタ及びロックエンドポインタで特定し、保持した命令列の命令実行が繰り返される間はロックスタートポインタ及びロックエンドポインタが指定される範囲でリードポインタを変化させる、請求項1記載のデータプロセッサ。
- 前記バッファ制御部は、前記条件分岐命令の命令アドレスと、当該条件分岐命令及びそれによる分岐先命令を夫々保有するメモリ部のバッファ内アドレスとを登録する分岐管理テーブルを用いてポインタ制御を行う、請求項2記載のデータプロセッサ。
- 前記バッファ制御部は、メモリ部にフェッチした命令に条件分岐命令が含まれるとき、当該条件分岐命令の命令列に関する情報を前記分岐管理テーブルに登録する、請求項3記載のデータプロセッサ。
- 前記条件分岐命令はPC相対条件分岐命令である、請求項1乃至4の何れか1項記載のデータプロセッサ。
- 前記命令フェッチ部は条件分岐命令の実行履歴に基づいて分岐予測を行う分岐予測部を有し、
前記分岐予測部は前記条件分岐命令の命令アドレスに基づいて分岐予測を行なってその予測結果を出力し、
前記バッファ制御部は、前記予測結果に基づいて条件分岐命令の条件成立が示唆されているか否かを判別する、請求項1乃至5の何れか1項記載のデータプロセッサ。 - 前記バッファ制御部は、分岐方向が命令アドレス配置に対して逆方向で前記条件分岐命令による分岐元から分岐先までの命令列の繰り返し実行回数を計数する分岐履歴カウンタを有し、前記分岐履歴カウンタの計数値が所定値を超えることによってショートループの形成が示唆されていると判別する、請求項1乃至5の何れか1項記載のデータプロセッサ。
- 前記バッファ制御部は、前記条件分岐命令による分岐元から分岐先までの命令列によって形成されるループの多重数を示す分岐カウンタを有し、単一ループのときは当該単一ループの分岐先と分岐元アドレスに対応して前記ロックスタートポインタとロックエンドポインタの値を決定し、多重ループのときは最も大きなループの分岐先と分岐元アドレスに対応して前記ロックスタートポインタとロックエンドポインタの値を決定する、請求項2記載のデータプロセッサ。
- 前記バッファ制御部は、メモリ部上における分岐元に対するリードポインタのアドレス差である第1データ、メモリ部上におけるリードポインタに対する分岐先のアドレス差である第2データ、前記第1データと第2データとの和である第3データをループ毎に取得し、第1データ及び第2データが夫々正の整数値であることによってリードポインタが自ループ内であるかを判別し、前記ループ毎における第1データの大小に基づいて多重ループの分岐元の包含関係を判別し、前記ループ毎における第2データの大小に基づいて多重ループの分岐先の包含関係を判別し、ループ毎の第3データの大小に基づいて多重ループにおけるループの大小関係を判別する、請求項8記載のデータプロセッサ。
- 命令キャッシュメモリを更に有し、
前記命令フェッチ部は前記命令キャッシュメモリから必要な命令をフェッチする、請求項1記載のデータプロセッサ。 - 請求項10記載のデータプロセッサと、前記データプロセッサに接続された外部メモリとを有し、
前記命令キャッシュメモリは前記外部メモリが保有する命令の一部を保有して連想メモリ動作を行なう、データ処理システム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008231147A JP2010066892A (ja) | 2008-09-09 | 2008-09-09 | データプロセッサ及びデータ処理システム |
US12/546,672 US20100064106A1 (en) | 2008-09-09 | 2009-08-24 | Data processor and data processing system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008231147A JP2010066892A (ja) | 2008-09-09 | 2008-09-09 | データプロセッサ及びデータ処理システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010066892A true JP2010066892A (ja) | 2010-03-25 |
Family
ID=41800155
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008231147A Pending JP2010066892A (ja) | 2008-09-09 | 2008-09-09 | データプロセッサ及びデータ処理システム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20100064106A1 (ja) |
JP (1) | JP2010066892A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011161884A1 (ja) * | 2010-06-25 | 2011-12-29 | パナソニック株式会社 | 集積回路、コンピュータシステム、制御方法 |
JP2012221086A (ja) * | 2011-04-06 | 2012-11-12 | Fujitsu Semiconductor Ltd | 情報処理装置 |
JP2013097638A (ja) * | 2011-11-02 | 2013-05-20 | Renesas Electronics Corp | キャッシュメモリ装置、キャッシュ制御方法、およびマイクロプロセッサシステム |
JP2014013565A (ja) * | 2012-06-15 | 2014-01-23 | Apple Inc | ループバッファ学習 |
US9471322B2 (en) | 2014-02-12 | 2016-10-18 | Apple Inc. | Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold |
US9753733B2 (en) | 2012-06-15 | 2017-09-05 | Apple Inc. | Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120079303A1 (en) * | 2010-09-24 | 2012-03-29 | Madduri Venkateswara R | Method and apparatus for reducing power consumption in a processor by powering down an instruction fetch unit |
US20140215185A1 (en) * | 2013-01-29 | 2014-07-31 | Atmel Norway | Fetching instructions of a loop routine |
US11461102B2 (en) * | 2021-02-12 | 2022-10-04 | Arm Limited | Circuitry and method |
CN115017192A (zh) * | 2022-05-23 | 2022-09-06 | 广东人工智能与先进计算研究院 | 电压序列数据缓存方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5890244A (ja) * | 1981-11-24 | 1983-05-28 | Hitachi Ltd | デ−タ処理装置 |
JPH01205228A (ja) * | 1988-02-10 | 1989-08-17 | Hitachi Ltd | 命令バツフアシステム |
JPH0228723A (ja) * | 1988-07-18 | 1990-01-30 | Fujitsu Ltd | ループ命令実行方式 |
JPH0256636A (ja) * | 1988-08-23 | 1990-02-26 | Toshiba Corp | 分岐制御装置 |
JPH08286913A (ja) * | 1995-04-05 | 1996-11-01 | Internatl Business Mach Corp <Ibm> | パイプライン・プロセッサにおいて次に完了すべき命令のアドレスを生成する方法および装置 |
JPH10232830A (ja) * | 1996-11-14 | 1998-09-02 | Motorola Inc | 分散型タグ・キャッシュメモリシステムおよびそこにデータを格納する方法 |
JP2000330787A (ja) * | 1999-05-03 | 2000-11-30 | Stmicroelectronics Sa | 命令ループを実行するコンピュータシステムおよび命令ループ実行方法 |
JP2006072926A (ja) * | 2004-09-06 | 2006-03-16 | Fujitsu Ltd | メモリ制御回路およびマイクロプロセッサシステム |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5623615A (en) * | 1994-08-04 | 1997-04-22 | International Business Machines Corporation | Circuit and method for reducing prefetch cycles on microprocessors |
US6505295B1 (en) * | 1997-02-17 | 2003-01-07 | Hitachi, Ltd. | Data processor |
US20090217017A1 (en) * | 2008-02-26 | 2009-08-27 | International Business Machines Corporation | Method, system and computer program product for minimizing branch prediction latency |
-
2008
- 2008-09-09 JP JP2008231147A patent/JP2010066892A/ja active Pending
-
2009
- 2009-08-24 US US12/546,672 patent/US20100064106A1/en not_active Abandoned
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5890244A (ja) * | 1981-11-24 | 1983-05-28 | Hitachi Ltd | デ−タ処理装置 |
JPH01205228A (ja) * | 1988-02-10 | 1989-08-17 | Hitachi Ltd | 命令バツフアシステム |
JPH0228723A (ja) * | 1988-07-18 | 1990-01-30 | Fujitsu Ltd | ループ命令実行方式 |
JPH0256636A (ja) * | 1988-08-23 | 1990-02-26 | Toshiba Corp | 分岐制御装置 |
JPH08286913A (ja) * | 1995-04-05 | 1996-11-01 | Internatl Business Mach Corp <Ibm> | パイプライン・プロセッサにおいて次に完了すべき命令のアドレスを生成する方法および装置 |
JPH10232830A (ja) * | 1996-11-14 | 1998-09-02 | Motorola Inc | 分散型タグ・キャッシュメモリシステムおよびそこにデータを格納する方法 |
JP2000330787A (ja) * | 1999-05-03 | 2000-11-30 | Stmicroelectronics Sa | 命令ループを実行するコンピュータシステムおよび命令ループ実行方法 |
JP2006072926A (ja) * | 2004-09-06 | 2006-03-16 | Fujitsu Ltd | メモリ制御回路およびマイクロプロセッサシステム |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011161884A1 (ja) * | 2010-06-25 | 2011-12-29 | パナソニック株式会社 | 集積回路、コンピュータシステム、制御方法 |
US8918664B2 (en) | 2010-06-25 | 2014-12-23 | Panasonic Corporation | Integrated circuit, computer system, and control method, including power saving control to reduce power consumed by execution of a loop |
JP5853216B2 (ja) * | 2010-06-25 | 2016-02-09 | パナソニックIpマネジメント株式会社 | 集積回路、コンピュータシステム、制御方法 |
JP2012221086A (ja) * | 2011-04-06 | 2012-11-12 | Fujitsu Semiconductor Ltd | 情報処理装置 |
JP2013097638A (ja) * | 2011-11-02 | 2013-05-20 | Renesas Electronics Corp | キャッシュメモリ装置、キャッシュ制御方法、およびマイクロプロセッサシステム |
JP2014013565A (ja) * | 2012-06-15 | 2014-01-23 | Apple Inc | ループバッファ学習 |
US9557999B2 (en) | 2012-06-15 | 2017-01-31 | Apple Inc. | Loop buffer learning |
US9753733B2 (en) | 2012-06-15 | 2017-09-05 | Apple Inc. | Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer |
US9471322B2 (en) | 2014-02-12 | 2016-10-18 | Apple Inc. | Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold |
Also Published As
Publication number | Publication date |
---|---|
US20100064106A1 (en) | 2010-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2010066892A (ja) | データプロセッサ及びデータ処理システム | |
US5404552A (en) | Pipeline risc processing unit with improved efficiency when handling data dependency | |
US6205543B1 (en) | Efficient handling of a large register file for context switching | |
JP3881763B2 (ja) | データ処理装置 | |
JP5543366B2 (ja) | ロックされたオペレーションを実行するためのシステムおよび方法 | |
JP5666473B2 (ja) | マルチスレッド式データ処理システム | |
JP2009053861A (ja) | プログラム実行制御装置 | |
WO2009114289A1 (en) | System and method of selectively committing a result of an executed instruction | |
US20040186960A1 (en) | Computer processor data prefetch unit | |
US6735687B1 (en) | Multithreaded microprocessor with asymmetrical central processing units | |
EP1974254B1 (en) | Early conditional selection of an operand | |
US20210326136A1 (en) | Entering protected pipeline mode with clearing | |
JP2009524167A5 (ja) | ||
US7730288B2 (en) | Method and apparatus for multiple load instruction execution | |
US6983359B2 (en) | Processor and method for pre-fetching out-of-order instructions | |
JP2004145454A (ja) | 情報処理装置及び情報処理方法 | |
JP4393317B2 (ja) | メモリ制御回路 | |
US20080141252A1 (en) | Cascaded Delayed Execution Pipeline | |
US20070294519A1 (en) | Localized Control Caching Resulting In Power Efficient Control Logic | |
US20080065870A1 (en) | Information processing apparatus | |
US5737562A (en) | CPU pipeline having queuing stage to facilitate branch instructions | |
JP2004192021A (ja) | マイクロプロセッサ | |
JP2010061642A (ja) | スレッドのスケジューリングテクニック | |
US7389405B2 (en) | Digital signal processor architecture with optimized memory access for code discontinuity | |
CN112395000B (zh) | 一种数据预加载方法和指令处理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20100527 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110902 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130430 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130516 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130912 |