JP5237671B2 - データプロセッサ - Google Patents

データプロセッサ Download PDF

Info

Publication number
JP5237671B2
JP5237671B2 JP2008100122A JP2008100122A JP5237671B2 JP 5237671 B2 JP5237671 B2 JP 5237671B2 JP 2008100122 A JP2008100122 A JP 2008100122A JP 2008100122 A JP2008100122 A JP 2008100122A JP 5237671 B2 JP5237671 B2 JP 5237671B2
Authority
JP
Japan
Prior art keywords
data
address
instruction
cache
line
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
Application number
JP2008100122A
Other languages
English (en)
Other versions
JP2009251998A (ja
Inventor
哲也 山田
直樹 加藤
今朝巳 萩原
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2008100122A priority Critical patent/JP5237671B2/ja
Priority to US12/414,656 priority patent/US8082398B2/en
Publication of JP2009251998A publication Critical patent/JP2009251998A/ja
Application granted granted Critical
Publication of JP5237671B2 publication Critical patent/JP5237671B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • 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/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、データプロセッサにおけるデータのプリフェッチに関し、例えば、フラッシュメモリ等のROMが実装される半導体集積回路におけるROMアクセスの高速化に適用して有効な技術に関する。
自動車の内燃機関制御などに使われる制御用マイクロコンピュータに、例えばフラッシュメモリをROM(Read Only Memory)として混載しているものがある。プログラムをROMに内蔵するが、制御の高精度化に伴うプログラム規模の増大に伴い、ROMの容量は数MB(Mega byte)と大容量になっている。大容量ROMでは、メモリアクセス速度がCPUの処理速度より遅いため、CPUクロックでアクセスする場合、数サイクルを要することになる。そこで、ROMアクセスの高速化のため、バッファ(ROMキャッシュと呼ぶこともある)を設ける。ROMキャッシュにヒットすると、CPUクロックで1サイクル、ミスする場合は、ROMアクセスを行うため、数サイクルを要する。
ROMキャッシュは、一度ROMにアクセスすることで、メモリの1ライン分(例えば256ビット)のデータがROMキャッシュにコピーされる。ROMキャッシュにデータがないときは、CPUはROMアクセス分待たされることになる。このため、CPUがROMデータを使用する際は、できるだけROMキャッシュ上にデータがあることが望ましい。このため、特許文献1に示すように、ROMキャッシュに先読みする機構を持たせることが一般的である。
自動車の内燃機関制御向けプログラムでは、複数のセンサ情報を元にデータマップを参照し、制御数値を得る。特許文献2に示すようにデータマップは、N×Mの2元配置から構成される。自動車の内燃機関制御向けマイコンでは、データマップはROM上にあるため、データマップの構造を考慮したROMアクセスの高速化を行う必要がある。
日本国特開2004−334773号公報 日本国特開2005−201181号公報
上述のように、自動車の内燃機関制御向けマイコンでは、データマップの構造を考慮したROMアクセスの高速化が必要となっている。ROMキャッシュ上のデータのみを用いて先読みを行うとき、命令から類推可能なものとして、(1)連続命令実行時の次の命令ライン、(2)PC相対分岐命令を含む命令ライン、(3)PC相対ロード命令を含むデータラインが考えられる。プログラムカウンタ(PC)の値はROMキャッシュに保持する命令のアドレスから入手することができる。従来のROMキャッシュでは、ROMデータの先読み対象として、PC相対ロード命令がある。これは、プログラムに埋め込まれたC言語の定数の取得などに用いられる。
例えば記述“const int NUM = 100”は、ロード命令とデータがプログラム上で、近傍のアドレスで指定されることを示している。ところが、データマップは、N×Mの2元の大規模配列で、ロード命令とデータがプログラム上で、遠方のアドレスで指定される。このため、PC相対ロード命令でのROMデータの先読みでは対応できない。
本発明の目的は、PC相対ロード命令を用いる場合に比べて広い範囲から容易にデータのプリフェッチを行うことができるデータプロセッサを提供することにある。
本発明の別の目的は、メモリ上に形成されたデータマップのデータに対して高速アクセスすることができるデータプロセッサを提供することにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
すなわち、中央処理装置は、命令実行によって所望の値が設定可能にされるレジスタの値にオフセットを加えてデータの実効アドレスとする所定の命令を実行可能であり、メモリに格納された一部の命令列及びデータ列を保持するバッファは、前記命令列及びデータ列を格納するキャッシュメモリを有し、前記キャッシュメモリに前記所定の命令を格納したとき、当該命令で指定される実効アドレスのデータを含むデータ列を前記メモリから前記キャッシュメモリにプリフェッチする。
データ列のプリフェッチにレジスタ間接アドレシングモードで指定される実効アドレスを用いるからPC相対ロード命令に比べて広い範囲からデータプリフェッチを行うことができる。フェッチした命令列の中から前記所定の命令を見つけ出してデータ列のプリフェッチを行うから、データプリフェッチの操作が容易である。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、PC相対ロード命令を用いる場合に比べて広い範囲から容易にデータのプリフェッチを行うことができる。
また、メモリ上に形成されたデータマップのデータに対して高速アクセスを行うことができる。
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
〔1〕本発明に係るデータプロセッサは、命令を実行する中央処理装置と、命令及びデータが格納されるメモリと、前記メモリに格納された命令及びデータの一部を保持するバッファとを有する。前記中央処理装置は命令の実行によって所望の値が設定可能にされるレジスタを有し、前記レジスタに設定された値にオフセットを加えてデータの実効アドレスとする所定の命令を実行可能である。前記バッファは、前記中央処理装置が実行する命令の命令列を格納する命令キャッシュと、中央処理装置の命令実行に用いるデータのデータ列を格納するデータキャッシュと、前記命令キャッシュに格納された新たな命令列に前記所定の命令が含まれるとき当該命令で指定される実効アドレスに在るデータを含むデータ列を前記データキャッシュに格納するためのデータプリフェッチアドレスを生成するアドレス生成回路とを有する。
データ列のプリフェッチにレジスタ間接アドレシングモードで指定される実効アドレスを用いるからPC相対ロード命令に比べて広い範囲からデータプリフェッチを行うことができる。フェッチした命令列の中から前記所定の命令を見つけ出してデータ列のプリフェッチを行うから、データプリフェッチの操作が容易である。
〔2〕項1のデータプロセッサにおいて、例えば前記命令キャッシュは、CPUで生成される前記メモリのアクセスアドレスに対応して1キャッシュライン分のラインアドレスをラッチするラインアドレスラッチと、当該アクセスアドレスによって選択されるキャッシュラインの命令を保持するライン命令ラッチとを有する。前記アドレス生成回路は、前記ラインアドレスラッチにラッチされたラインアドレスの次ラインのアドレスを命令プリフェッチアドレスとして生成する。命令プリフェッチアドレスについても容易に生成することができる。
〔3〕項2のデータプロセッサにおいて、例えば前記アドレス生成回路は、前記ライン命令ラッチにラッチされた命令列に含まれる前記所定の命令が指定するオフセットに対応するデータキャッシュのキャッシュラインアドレスを取得し、取得したキャッシュラインアドレスを順次保持し、保持したキャッシュラインアドレスに前記レジスタの値を加算してデータプリフェッチアドレスを出力する。これにより、1命令列から複数のデータプリフェッチアドレスが生成される場合でも、対応する複数のキャッシュラインアドレスを保持するだけでよいから、それぞれのデータプリフェッチアドレスを予め演算して保持する構成に比べて、アドレス生成回路の回路規模を縮小することができる。
〔4〕項3のデータプロセッサにおいて、前記命令キャッシュはキャッシュミスに応答してミスに係るアドレスの命令列を指定するための命令フェッチアドレスを出力する。前記データキャッシュはキャッシュミスに応答してミスに係るアドレスのデータ列を指定するためのデータフェッチアドレスを出力する。
〔5〕項4のデータプロセッサは更に、前記アドレス生成回路が生成する命令プリフェッチアドレス、前記アドレス生成回路が生成するデータプリフェッチアドレス、命令キャッシュがキャッシュミスのとき出力する命令フェッチアドレス、又はデータキャッシュがキャッシュミスのとき出力するデータフェッチアドレスを選択して前記メモリへ供給するアドレス選択回路を有る。前記アドレス選択回路によるアドレス選択の優先順位は、前記データプリフェッチアドレス、前記命令プリフェッチアドレス、前記データアドレス、前記命令アドレスの順に昇順で高くされる。
〔6〕項1のデータプロセッサは例えば1個の半導体基板に形成されて1チップ化される。
〔7〕項6のデータプロセッサにおいて、前記メモリは電気的に書換え可能な不揮発性メモリである。
〔8〕本発明の別の実施の形態に係るデータプロセッサは命令を実行する中央処理装置と、命令及びデータが格納されるメモリと、前記メモリに格納された一部の命令列及びデータ列を保持するバッファとを有する。前記中央処理装置は、命令の実行によって所望の値が設定可能にされるレジスタを有し、前記レジスタに設定された値にオフセットを加えてデータの実効アドレスとする所定の命令を実行可能である。前記バッファは、前記命令列及びデータ列を格納するキャッシュメモリを有し、前記キャッシュメモリに前記所定の命令を格納したとき、当該命令で指定される実効アドレスのデータを含むデータ列を前記メモリから前記キャッシュメモリにプリフェッチする。
データ列のプリフェッチにレジスタ間接アドレシングモードで指定される実効アドレスを用いるからPC相対ロード命令に比べて広い範囲からデータプリフェッチを行うことができる。フェッチした命令列の中から前記所定の命令を見つけ出してデータ列のプリフェッチを行うから、データプリフェッチの操作が容易である。
〔9〕項8のデータプロセッサにおいて、前記メモリはN×Mのサイズのデータマップを複数有し、前記中央処理装置は前記所定の命令でアクセスすべきデータマップの基準点のアドレスを前記レジスタに設定する。
〔10〕項9のデータプロセッサにおいて、前記データマップは機器制御用のパラメータデータである。
2.実施の形態の詳細
実施の形態について更に詳述する。以下、本発明を実施するための形態を図面に基づいて詳細に説明する。なお、発明を実施するための形態を説明するための全図において、同一の機能を有する要素には同一の符号を付して、その繰り返しの説明を省略する。
図2には本発明に係るデータプロセッサ(DPU)1の一例が示される。同図に示されるデータプロセッサ1は特に制限されないが単結晶シリコンのような1個の半導体基板に相補型MOS集積回路製造技術等によって形成される。データプロセッサ1は、バッファメモリとしてのROMキャッシュ(ROMC)5と不揮発性メモリとして電気的に書換え可能なフラッシュメモリから成るフラッシュROM(FROM)と6を有する。フラッシュROM6はROMキャッシュ5に接続される。
ベースレジスタBRを持つ中央処理装置(CPU)2と浮動小数点演算ユニット(FPU)3は密結合され、それらは命令フェッチバスF−BUSとオペランドバスO−BUSを介して、ランダムアクセスメモリ(RAM)4及びROMキャッシュ5に接続される。
システムバスSYS−BUSには、前記RAM4及びROMキャッシュ5の他に、DMAコントローラ(DMAC)8とバスブリッジ(BRG)7が接続される。DMAコントローラ(DMAC)8とバスブリッジ(BRG)7は周辺バスP−BUSにインタフェースされ、この周辺バスP−BUSには、クロック信号を生成するクロックパルスジェネレータ(CPG)9、割込みコントローラ(INTC)10、コンペアマッチタイマ(CMT)11、シリアルコミュニケーションインターフェース(SCI)12、及び、各種センサからの信号が入力されるA/Dコンバータ(ADC)13が接続される。
図1には前記ROMキャッシュ5の要部が示される。ROMキャッシュ5は、バスインターフェースとして、命令フェッチバスF−BUSとのインタフェース回路FBIF、オペランドバスO−BUSとのインタフェース回路OBIF、システムバスS−BUSとのインタフェース回路SBIF、及びフラッシュROM6とのインタフェース回路RIFを持つ。FCMD,FDAT,FRDY,FADRは命令フェッチバスF−BUSのインタフェース信号であり、FCMDはバスコマンド、FDATは命令のデータ(単に命令とも記す)、FRDYはレディー信号、FADRはアドレス信号である。OCMD,ODAT,ORDY,OADRはオペランドバスO−BUSのインタフェース信号であり、OCMDはバスコマンド、ODATはオペランドのデータ(単にデータとも記す)、ORDYはレディー信号、OADRはアドレス信号である。SCMD,SDAT,SADRはシステムバスS−BUSのインタフェース信号であり、SCMDはバスコマンド、SDATはシステムデータ、OADRはアドレス信号である。
インタフェース回路RIFに対して、フラッシュROM6へのアドレスを選択するアドレスセレクタADRSを備える。アドレスセレクタADRSは、プリフェッチアドレス生成器PADGで生成されたアドレス又はCPU2で生成されたアドレス等の中から一つを選択してインタフェース回路RIFに出力する。ROMキャッシュ5の設定を行うためのアドレスが割当てられた構成レジスタCFGRはインタフェース回路SBIFと接続される。
ROMキャッシュ5はフラッシュROM6の先読みバッファとして、命令キャッシュICとデータキャッシュDCを備える。命令キャッシュIC及びデータキャッシュDCにおける命令及びデータの保持単位である1キャッシュラインは、例えば256ビットである。命令キャッシュICはアドレス信号FADRを受取って、連想動作を行い、キャッシュヒットであればインタフェース回路FBIFに命令を返し、キャッシュミスであればミスに係るアドレスをアドレスセレクタADRSに与え、フラッシュROM6から1命令キャッシュラインの命令列を受取って必要な命令をインタフェース回路FBIFに返す。データキャッシュICはアドレス信号OADRを受取って、連想動作を行い、キャッシュヒットであればインタフェース回路OBIFにデータをリードデータを返し、キャッシュミスであればミスに係るアドレスをアドレスセレクタADRSに与え、フラッシュROM6から1データキャッシュラインのデータ列を受取って必要なデータをインタフェース回路OBIFに返す。
命令キャッシュIC及びデータキャッシュDCはいずれも4ウェイで4ライン分のセットアソシアティブ構成を備える。キャッシュライン数とキャッシュの方式は特に制限されず、例えば、ダイレクトマップ、フルアソシアティブでも構わない。
フラッシュROM6に対するプリフェッチアドレスはプリフェッチアドレス生成器PADGで演算される。プリフェッチアドレス生成器PADGは、実行中命令を含む命令列の次キャッシュラインのアドレスを命令プリフェッチアドレスとして生成し、また、ベースレジスタBR相対のアドレシングモードを持つロード命令(単にBR相対ロード命令とも記す)の当該アドレシングモードによる実効アドレスに基づいてデータプリフェッチアドレスを生成する。このプリフェッチアドレスの生成機能の詳細は後述する。尚、プリフェッチとしては、BR相対ロード命令と同様の手法で、PC相対分岐、PC相対ロード、汎用レジスタ相対分岐、汎用レジスタ相対ロードを実装することも可能であるが、本明細書では説明の簡略にするためにその詳細な説明は省略する。CONTはROMキャッシュ5の制御を行う制御部を総称する。
図3には命令キャッシュICの一例が例示される。4ウェイで4ライン分のセットアソシアティブ構成である。CPU2からフラッシュROM6に対する命令アクセスがある場合、まず命令キャッシュICを検索し、命令キャッシュICのアドレスにヒットしたときは命令キャッシュICから命令が読出され、命令キャッシュICにミスしたときはフラッシュROM6から命令が読出され、CPU2に命令が出力される。フラッシュROM6への命令アクセスを行った場合は、命令キャッシュICにもデータが蓄えられる。命令フェッチでは、命令フェッチバスF−BUSを介して命令フェッチアドレスFADRが供給される。アドレスが供給されると、4ウェイのアドレスアレイIC_AARY0〜3からタグアドレスTADRを同時に読み出す。入力アドレスのビット31〜5と4ウェイのタグアドレスを比較し、比較結果が一致し、比較されたエントリが有効(V=1)のときヒットとなり、対応するエントリのデータをデータアレイIC_DARY0〜3から1ライン分(256ビット)読み出す。入力アドレス4〜2ビットを用いて1ラインから1ロングワード(32ビット)を選択する。命令キャッシュICのリードミス時は、フラッシュROM6からのデータでウェイを更新する。例えばLRU(least recently used)のロジックを用いて、最も古く書き換えられたエントリを置換え、先読みバッファに登録する際、Vビットを1にセットし、置き換えられたエントリが最新となるようにLRUのフラグを更新する。命令フェッチアドレスFADRを含む命令ラインに関しては、ラインアドレスINST_ADRとラインデータINST_BUFがそれぞれラッチ回路IC_AFF、IC_DFFに保持され、保持されたラインアドレスINST_ADRは次命令ラインのアドレス計算に、保持されたラインデータINST_BUFは、BR相対ロード命令の探索に使用される。尚、本明細書のアドレスはバイト(8ビット)を最小単位とするバイトアドレスとされる。
図4にはデータキャッシュDCの一例が示される。4ウェイで4ライン分のセットアソシアティブ構成である。CPU2からフラッシュROM6に対するデータアクセスがある場合、まずデータキャッシュDCを検索し、データキャッシュDCのアドレスにヒットしたときはデータキャッシュDCからデータが読出され、データキャッシュDCにミスしたときはフラッシュROM6からデータが読出され、CPU2にデータが出力される。フラッシュROM6へのデータアクセスを行った場合は、データキャッシュDCにもデータが蓄えられる。データロードでは、オペランドバスO−BUSを介してオペランドアドレスOADRが供給される。アドレスが供給されると、4ウェイのアドレスアレイDC_AARY0〜3からタグアドレスTADRを同時に読み出す。入力アドレスのビット31〜5と4ウェイのタグアドレスを比較し、比較結果が一致し、比較されたエントリが有効(V=1)のときヒットとなり、対応するエントリのデータをデータアレイDC_DARY0〜3から1ライン分(256ビット)読み出す。入力アドレス4〜2ビットを用いて1ラインから1ロングワード(32ビット)を選択する。データキャッシュDCのリードミス時は、フラッシュROM6からのデータでウェイを更新する。LRU論理を用いて、最も古く書き換えられたエントリを置換え、先読みバッファに登録する際、Vビットを1にセットし、置き換えられたエントリが最新となるようにLRUのフラグを更新する。
図5にはプリフェッチアドレス生成器PADGの一例が示される。先読みをおこなうため、命令キャッシュICのラインアドレスINST_ADRとラインデータINST_BUFを入力する。次命令ラインアドレス生成器IPFADRGでは、現行ラインアドレスINST_ADRにライン長を加算して次命令ラインのアドレスIPF_ADRの生成と、次ラインのフラッシュROMアクセスを行うためのフラグIPF_SRCHを設ける。次命令ラインのアドレスIPF_ADRが命令プリフェッチアドレスとなる。BR相対ロードサーチ回路BRSRCHでは、現行ラインデータINST_BUFをデコードしてそのラインに含まれるBR相対ロード命令のライン数BR_SRCHを探索する。すなわち、現行ラインデータINST_BUFに含まれる全てのBR相対ロード命令に対応するデータキャッシュのキャッシュラインのキャッシュライン数BR_SRCHを探索する。BR相対ロード命令数ではないことに注意する。BR相対ロードサーチ回路にはラインの境界も考慮するために、BRレジスタの値も入力する。BRレジスタ値によってはライン数が変わる場合があるからである。BR相対ロードアドレスFIFOバッファBRFIFOでは、現行ラインデータINST_BUFがデコードされ、BRに対するオフセットのラインアドレスがFIFOメモリに保持される。すなわち、現行ラインデータINST_BUFに含まれる全てのBR相対ロード命令が指定するオフセットに対応するデータキャッシュのラインアドレスが順番にFIFOメモリに格納される。BR相対ロード命令のオフセットそのものではないことに注意する。FIFOメモリはBR相対ロード命令のライン数BR_SRCHと連動して、ラインアドレスの小さい順にポインタで管理される。BR相対ラインアドレスBR_ADRは、ベースレジスタBRの値とBR相対ロードアドレスFIFOバッファBRFIFOの出力値とを加算することにより得られる。BR相対ラインアドレスBR_ADRがデータプリフェッチアドレスになる。デクリメント制御部DEC_CTLはフラッシュROM6に対して1命令キャッシュライン分の命令プリフェッチアクセスが行われる度に次命令ラインのフラグIPF_SRCHをデクリメントする制御を行い、同様に、フラッシュROM6に対する1データキャッシュライン分のデータプリフェッチのアクセスが行われる度にBR相対ロード命令のライン数BR_SRCHをデクリメントする制御を行う。
図6にはROMキャッシュ5のアドレスセレクタADRSの一例が示される。アドレスセレクタADRSは、次命令ラインプリフェッチ、BR相対ロード命令のラインプリフェッチ、命令キャッシュミスに起因する命令ラインフェッチ、データキャッシュミスに起因するデータラインフェッチのいずれのフラッシュROMアクセスを行うかを選択し、選択されたアドレスを出力する。次命令ラインプリフェッチ、BR相対ロード命令のラインプリフェッチ、命令ラインフェッチ、データラインフェッチのアドレスは、それぞれ、IPF_ADR、BR_ADR、FBIF_ADR、OBIF_ADRである。フラッシュROMアクセスのアドレス選択の優先度は、命令キャッシュミス(IC_HITの反転) > データキャッシュミス(DC_HITの反転)> 次命令ラインプリフェッチ有効 > BR相対ロード命令のラインプリフェッチ有効、となる。
以上の構成を持つROMキャッシュ5において、具体的な動作を命令列並びにタイミングチャートを用いて説明する。
図7は自動車の内燃機関制御向けプログラムのデータマップが零時される。N×Mの2元配置から構成される複数のデータマップ(データ配列)を有する。データは特に制限されないが、16ビットで固定小数点とする。各データマップはオフセットで指定可能な大きさを有する。ベースレジスタBRの値がデータマップの原点を指すものとすれば、ベースレジスタの設定値を変更することにより、オフセットで指定可能な範囲を超える範囲からデータロードが可能になる。
図8は自動車の内燃機関制御向けプログラムとして、テーブルアクセスをベースレジスタ相対のロード命令を用いて記述した例である。アドレス0の時点でデータマップのテーブル先頭アドレス1000番地がBRベースレジスタに保持されていると仮定する。アドレス4、アドレス10の命令では、オフセット4、24を加算し、アドレス1004番地、1024番地のデータをロードする。アドレス14の命令でBRを2000番地に更新され、アドレス22の命令では、オフセット12を加算し、アドレス2012番地のデータをロードする。尚、ソースプログラム記述においては、データマップの基準となるアドレスをベースレジスタBRに格納するように、プラグマを用いてコンパイラに指示するようにされる。
図9は、図8の自動車の内燃機関制御向けプログラムを用いて図2のROMキャッシュROMCを用いて実行したフローチャートを示す。フローチャートは、命令フェッチフローとプリフェッチフローに分けられる。説明の簡略化のため、図8のプログラムには、分岐命令とBR相対以外のデータロードが含まれない。このため、フローチャートも分岐とBR相対以外のデータロードのフローは含めていない。命令フェッチフローでは、命令フェッチを行ない(S1)、CPU2からの命令フェッチアドレスが、新規ライン境界かを判定し(S2)、新規ライン境界ならプリフェッチフローを起動する。新規ライン境界でないと判別されたときは、命令フェッチアドレスがROMキャッシュROMC内の命令キャッシュICまたはデータキャッシュDCにヒットするかを判定し(S3)、キャッシュヒットの場合は、いずれかのキャッシュの該当するラインから命令フェッチを行い、キャッシュミスの場合はフラッシュROMアクセスを行う(S4)。
プリフェッチフローでは、新規ライン向けに命令ラインデータ(INST_BUF)と命令ラインアドレス(INST_ADR)を更新する(S5)。まず、命令ラインアドレスの次のラインの命令プリフェッチを行う。次命令ラインがキャッシュヒットする場合は、フラッシュROMアクセスは不要で(S6)、キャッシュミスするときはフラッシュROMアクセスを行い(S6,S7)、命令キャッシュに命令プリフェッチする。フローチャートでは省略したが、新規ラインのプリフェッチを行ったかどうかはIPF_SRCHフラグで管理する。次に、BR相対ロードのラインプリフェッチを行う。命令ラインデータを探索し、BR相対ロードのライン数(BR_SRCH)をiとする(S8)。iが0になるまで繰り返し、BR相対ロードのプリフェッチを行う(S9〜S12)。フラッシュROMアクセスはデータキャッシュDCがキャッシュミスした時だけ行われる(S11)。以上のフローで、命令フェッチと次命令ラインとBR相対ロード命令のラインプリフェッチを行う。
図10には図8の自動車の内燃機関制御向けプログラムを図2のROMキャッシュを用いて実行したときのタイミングチャートが例示される。フラッシュROMアクセスはレイテンシ2、スループット2と仮定する。
サイクル0で図9の命令フェッチフローを行う。アドレス0の命令をフェッチするために、フラッシュROMアクセスが行われ、サイクル2でフラッシュROM6からデータを得る。命令フェッチフローは、CPU2からの命令アドレス(FADR)が更新されるたびに開始される。
アドレス0は、新規ライン境界のため、フラッシュROM6からデータを得られた時点で、プリフェッチフローが開始される。サイクル3で命令ラインデータ(INST_BUF)と図では省略したが命令ラインアドレス(INST_ADR)が更新される。プリフェッチフローでは、次命令ラインとBR相対ロードラインが順番にプリフェッチされる。サイクル3では、プリフェッチアドレス生成器PADGでは、次命令ラインフラグIPF_SRCHが「1」のため、次命令ラインアドレス「16」にてプリフェッチが行われる。サイクル4では、BR相対ロードラインが探索され、BRレジスタ相対ロード命令のラインのデータ1、データ2としてBR_SRCHに「2」が格納される。サイクル5、7で順番にBRレジスタ相対ロード命令のラインのプリフェッチが行われ、該当ラインのプリフェッチフローは終了する。CPU2からはサイクル7(OADR=1004)、10(OADR=1024)でBRレジスタ相対ロード命令のロードが行われるが、プリフェッチしておいたデータキャッシュにヒットするため、フラッシュROMアクセスを行う必要がない。サイクル9でCPU2からの命令アドレスが次ライン(アドレス16番地)となるが、プリフェッチしておいた命令キャッシュにヒットするため、フラッシュROMアクセスを行わない。
サイクル9は、命令アドレスが次ライン(FADR=16)になるため、再度プリフェッチフローが開始される。サイクル11で命令ラインのキャッシュプリフェッチ、サイクル13でBR相対ロードラインのキャッシュプリフェッチが行われる。サイクル16でBRレジスタ相対ロード命令(OADR=2012)のロードが行われるが、プリフェッチしておいたデータキャッシュにヒットするため、フラッシュROMアクセスを行わない。
このように、次命令ライン、並びにBR相対ロードにおいてROMキャッシュ5にプリフェッチがなされており、CPU2から命令アクセス、データロードが行われる際、ROMキャッシュ5にヒットし、フラッシュROM6に対するアクセスを行わないことからデータ処理の高速化が実現できる。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、命令キャッシュとデータキャッシュは別々のキャッシュメモリであってもよいし、一つのユニファイドキャッシュメモリであってもよい。また、キャッシュラインのサイズ、データバス幅、アドレスのビット数等は適宜変更可能である。メモリはフラッシュメモリに限定されず、その他の不揮発性メモリ等であってよい。データプロセッサの内部バスの構成、オンチップされた回路モジュールの種類等についても適宜変更可能である。
図1は本発明に係るデータプロセッサが備えるROMキャッシュの要部を例示するブロックダイヤグラムである。 図2は本発明に係るデータプロセッサを全体的に例示するブロックダイヤグラムである。 図3はROMキャッシュの命令キャッシュを例示するブロックダイヤグラムである。 図4はROMキャッシュのデータキャッシュを例示するブロックダイヤグラムである。 図5はROMキャッシュのプリフェッチアドレス生成器を例示するブロックダイヤグラムである。 図6はROMキャッシュのアドレスセレクタを例示するブロックダイヤグラムである。 図7は自動車の内燃機関制御向けプログラムのデータマップを例示する説明図である。 図8は自動車の内燃機関制御向けプログラムとしてテーブルアクセスをベースレジスタ相対のロード命令を用いて記述した例を示す説明図である。 図9は図8の自動車の内燃機関制御向けプログラムを実行したときのROMキャッシュの命令フェッチ及びプリフェッチの動作を示すフローチャートである。 図10は図8の自動車の内燃機関制御向けプログラムを図2のROMキャッシュを用いて実行したときのタイミングチャートである。
符号の説明
ROMC…ROMキャッシュ
BR…ベースレジスタ
F−BUS…命令フェッチバス
O−BUS…オペランドバス
ROM…フラッシュROM
RAM…内蔵RAM
SYS−BUS…システムバス
DMAC…DMAコントローラ
BRG…バスブリッジ
P−BUS…周辺バス
CPG…クロックパルスジェネレータ
INTC…割込みコントローラ
CMT…コンペアマッチタイマ
SCI…シリアルコミュニケーションインターフェース
ADC…A/Dコンバータ
FBIF…命令フェッチバスとのインタフェース
OBIF…オペランドバスとのインタフェース
SBIF…システムバスとのインタフェース
RIF…ROMとのインタフェース
CFGR…構成レジスタ
PADG…プリフェッチアドレス生成器
IC…命令キャッシュ
DC…データキャッシュ
ADRS…アドレスセレクタ
IC_AARY0〜3…命令キャッシュアドレスアレイ
IC_DARY0〜3…命令キャッシュデータアレイ
IC_LRU…命令キャッシュウェイ選択LRU
IC_AFF…命令キャッシュアドレス保持フリップフロップ
IC_DFF…命令キャッシュデータ保持フリップフロップ
DC_AARY0〜3…データキャッシュアドレスアレイ
DC_DARY0〜3…データキャッシュデータアレイ
DC_LRU…データキャッシュウェイ選択LRU
BUFDEC…バッファデコーダ
DEC_CTL…デクリメント制御
IPFADRG…次命令ラインアドレス生成器
BRSRCH…BR相対ロードサーチ回路
BRFIFO…BR相対ロードアドレスFIFO
PRI…優先度判定回路
IBUF_SRCH…次命令ラインのフラグ
BR_SRCH…BR相対ロード命令のライン数

Claims (8)

  1. 命令を実行する中央処理装置と、命令及びデータが格納されるメモリと、前記メモリに格納された命令及びデータの一部を保持するバッファとを有し、
    前記中央処理装置は命令の実行によって所望の値が設定可能にされるレジスタを有し、前記レジスタに設定された値にオフセットを加えてデータの実効アドレスとする所定の命令を実行可能であり、
    前記バッファは、前記中央処理装置が実行する命令の命令列を格納する命令キャッシュと、中央処理装置の命令実行に用いるデータのデータ列を格納するデータキャッシュと、前記命令キャッシュに格納された新たな命令列に前記所定の命令が含まれるとき当該命令で指定される実効アドレスに在るデータを含むデータ列を前記データキャッシュに格納するためのデータプリフェッチアドレスを生成するアドレス生成回路とを備え、
    前記命令キャッシュはCPUで生成される前記メモリのアクセスアドレスに対応して1キャッシュライン分のラインアドレスをラッチするラインアドレスラッチと、当該アクセスアドレスによって選択されるキャッシュラインの命令を保持するライン命令ラッチとを有し、
    前記アドレス生成回路は、前記ラインアドレスラッチにラッチされたラインアドレスの次ラインのアドレスを命令プリフェッチアドレスとして生成し、更に前記アドレス生成回路は前記ライン命令ラッチにラッチされた命令列に含まれる、全ての前記所定の命令が指定するオフセットに対応するデータキャッシュのキャッシュラインアドレスを取得し、取得した全てのキャッシュラインアドレスを保持し、保持したキャッシュラインアドレスに順次前記レジスタの値を加算してデータプリフェッチアドレスを出力する、ことを特徴とするデータプロセッサ。
  2. 前記命令キャッシュはキャッシュミスに応答してミスに係るアドレスの命令列を指定するための命令フェッチアドレスを出力し、
    前記データキャッシュはキャッシュミスに応答してミスに係るアドレスのデータ列を指定するためのデータフェッチアドレスを出力する、請求項1記載のデータプロセッサ。
  3. 前記アドレス生成回路が生成する命令プリフェッチアドレス、前記アドレス生成回路が生成するデータプリフェッチアドレス、命令キャッシュがキャッシュミスのとき出力する命令フェッチアドレス、又はデータキャッシュがキャッシュミスのとき出力するデータフェッチアドレスを選択して前記メモリへ供給するアドレス選択回路を有し、
    前記アドレス選択回路によるアドレス選択の優先順位は、前記データプリフェッチアドレス、前記命令プリフェッチアドレス、前記データアドレス、前記命令アドレスの順に昇順で高くされる、請求項2記載のデータプロセッサ。
  4. 1個の半導体基板に形成された請求項1記載のデータプロセッサ。
  5. 前記メモリは電気的に書換え可能な不揮発性メモリである、請求項4記載のデータプロセッサ。
  6. 命令を実行する中央処理装置と、命令及びデータが格納されるメモリと、前記メモリに格納された一部の命令列及びデータ列を保持するバッファとを有し、
    前記中央処理装置は、命令の実行によって所望の値が設定可能にされるレジスタを有し、前記レジスタに設定された値にオフセットを加えてデータの実効アドレスとする所定の命令を実行可能であり、
    前記バッファは、前記命令列及びデータ列を格納するキャッシュメモリを有し、前記キャッシュメモリに前記所定の命令を格納したとき、格納された全ての前記所定の命令のそれぞれによって指定される全ての実効アドレスのデータを含むデータ列を順次前記メモリから前記キャッシュメモリにプリフェッチする、データプロセッサ。
  7. 前記メモリはN×Mのサイズのデータマップを複数有し、前記中央処理装置は前記所定の命令でアクセスすべきデータマップの基準点のアドレスを前記レジスタに設定する、請求項6記載のデータプロセッサ。
  8. 前記データマップは機器制御用のパラメータデータである、請求項7記載のデータプロセッサ。
JP2008100122A 2008-04-08 2008-04-08 データプロセッサ Expired - Fee Related JP5237671B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008100122A JP5237671B2 (ja) 2008-04-08 2008-04-08 データプロセッサ
US12/414,656 US8082398B2 (en) 2008-04-08 2009-03-30 Data prefetching using indirect addressing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008100122A JP5237671B2 (ja) 2008-04-08 2008-04-08 データプロセッサ

Publications (2)

Publication Number Publication Date
JP2009251998A JP2009251998A (ja) 2009-10-29
JP5237671B2 true JP5237671B2 (ja) 2013-07-17

Family

ID=41216121

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008100122A Expired - Fee Related JP5237671B2 (ja) 2008-04-08 2008-04-08 データプロセッサ

Country Status (2)

Country Link
US (1) US8082398B2 (ja)
JP (1) JP5237671B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102070136B1 (ko) 2013-05-03 2020-01-28 삼성전자주식회사 프리페치를 위한 캐시 제어 장치 및 그 캐시 제어 장치를 이용한 프리페치 방법
US9411735B2 (en) * 2014-04-15 2016-08-09 International Business Machines Corporation Counter-based wide fetch management

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09212421A (ja) * 1996-02-01 1997-08-15 Hitachi Ltd データ処理装置及びデータ処理システム
US6128703A (en) * 1997-09-05 2000-10-03 Integrated Device Technology, Inc. Method and apparatus for memory prefetch operation of volatile non-coherent data
JP2000148477A (ja) * 1998-11-17 2000-05-30 Nec Corp アドレス計算方法およびその機構
JP2003030046A (ja) * 2001-07-11 2003-01-31 Hitachi Ltd 命令キャッシュのプリフェッチ機構を備えたキャッシュ制御装置
JP3811140B2 (ja) * 2003-05-12 2006-08-16 株式会社日立製作所 情報処理装置
JP2005201181A (ja) * 2004-01-16 2005-07-28 Denso Corp 内燃機関の制御装置
US20050198439A1 (en) * 2004-03-04 2005-09-08 Fredy Lange Cache memory prefetcher
US8161264B2 (en) * 2008-02-01 2012-04-17 International Business Machines Corporation Techniques for data prefetching using indirect addressing with offset
US8161265B2 (en) * 2008-02-01 2012-04-17 International Business Machines Corporation Techniques for multi-level indirect data prefetching
US8161263B2 (en) * 2008-02-01 2012-04-17 International Business Machines Corporation Techniques for indirect data prefetching

Also Published As

Publication number Publication date
US20090271576A1 (en) 2009-10-29
JP2009251998A (ja) 2009-10-29
US8082398B2 (en) 2011-12-20

Similar Documents

Publication Publication Date Title
US6401192B1 (en) Apparatus for software initiated prefetch and method therefor
JP3412575B2 (ja) 命令履歴キャッシングを使用して推測的に命令を実行する回路、データ処理システム、およびそのための方法
JP3830651B2 (ja) ループとストライドの一方または両方の予測を行うロードターゲットバッファを具現するマイクロプロセッサ回路、システム、および方法
US6029228A (en) Data prefetching of a load target buffer for post-branch instructions based on past prediction accuracy's of branch predictions
US7966457B2 (en) Configurable cache for a microprocessor
US6308261B1 (en) Computer system having an instruction for probing memory latency
KR100955433B1 (ko) 파이프라인 구조를 갖는 캐시 메모리 및 이를 제어하는방법
US20080147990A1 (en) Configurable Cache for a Microprocessor
KR20000076310A (ko) 리스크 구조를 갖는 8 비트 마이크로콘트롤러
EP2495662B1 (en) Configurable cache for a microprocessor
EP2936323A1 (en) Speculative addressing using a virtual address-to-physical address page crossing buffer
EP0855645A2 (en) System and method for speculative execution of instructions with data prefetch
JPH0527971A (ja) 情報処理装置
JP5237671B2 (ja) データプロセッサ
US10120808B2 (en) Apparatus having cache memory disposed in a memory transaction path between interconnect circuitry and a non-volatile memory, and corresponding method
US20030196072A1 (en) Digital signal processor architecture for high computation speed
US11126435B2 (en) Branch destination prediction based on accord or discord of previous load data from a data cache line corresponding to a load instruction and present load data
JP4160228B2 (ja) マイクロプロセッサ
JPH0362243A (ja) 情報処理システムにおいてメモリアクセスを速くする装置
JP5902208B2 (ja) データ処理装置
JP4024247B2 (ja) 半導体データプロセッサ
JP2008257508A (ja) キャッシュ制御方法およびキャッシュ装置並びにマイクロコンピュータ
JPH07200406A (ja) キャッシュシステム
JP4553622B2 (ja) データ処理装置
JPH07248919A (ja) データ処理装置

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: 20110404

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130215

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: 20130314

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130329

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5237671

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160405

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees