JP2004062319A - データ処理装置 - Google Patents
データ処理装置 Download PDFInfo
- Publication number
- JP2004062319A JP2004062319A JP2002216769A JP2002216769A JP2004062319A JP 2004062319 A JP2004062319 A JP 2004062319A JP 2002216769 A JP2002216769 A JP 2002216769A JP 2002216769 A JP2002216769 A JP 2002216769A JP 2004062319 A JP2004062319 A JP 2004062319A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- interrupt
- burst transfer
- data
- processing device
- 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.)
- Withdrawn
Links
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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0879—Burst mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/32—Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
- G06F13/34—Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer with priority control
Abstract
【課題】キャッシュメモリへのバースト転送が行われている最中に割り込み要求が発生した場合に、割り込み処理を優先的に開始することが可能なデータ処理装置を得る。
【解決手段】命令キャッシュ3へのバースト転送が行われている途中で割り込み要求IRの発生が検出されると、命令キャッシュ3は、バースト転送を中断するとともに、中断情報35を作成する。割り込み処理が終了して元のプログラムに復帰すると、命令キャッシュ3は、中断情報35のアドレス記述部35aに記述されている再開アドレスを参照することにより、中断された箇所の続きからバースト転送を再開する。
【選択図】 図1
【解決手段】命令キャッシュ3へのバースト転送が行われている途中で割り込み要求IRの発生が検出されると、命令キャッシュ3は、バースト転送を中断するとともに、中断情報35を作成する。割り込み処理が終了して元のプログラムに復帰すると、命令キャッシュ3は、中断情報35のアドレス記述部35aに記述されている再開アドレスを参照することにより、中断された箇所の続きからバースト転送を再開する。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
この発明は、データ処理装置に関し、特に、キャッシュメモリを備えるデータ処理装置に関するものである。
【0002】
【従来の技術】
キャッシュメモリを備えるデータ処理装置においては、CPUが必要とするデータがキャッシュメモリ内に存在しない場合、そのデータを含む、キャッシュメモリの1ライン分のデータが、メインメモリからキャッシュメモリのラインに転送される。例えば、キャッシュメモリの1ラインが128ビットで、キャッシュメモリとメインメモリとが32ビットのデータバスで接続されている場合は、4回のバスサイクルによって、メインメモリからキャッシュメモリへの転送が行われる。キャッシュメモリの1ライン分のデータは、バースト転送によって連続して転送される。
【0003】
【発明が解決しようとする課題】
バースト転送が行われている最中に割り込み要求が発生した場合、従来のデータ処理装置では、バースト転送が完了するのを待ってから、割り込み処理が開始される。従って、割り込み要求に対する応答が遅くなるという問題がある。同様に、バースト転送が行われている最中に他のプログラムへの分岐命令が検出された場合にも、従来のデータ処理装置では、バースト転送が完了するのを待ってから、分岐先のプログラムの命令フェッチが開始される。従って、分岐先のプログラムの実行開始が遅れるという問題がある。しかも、割り込み処理が完了した後、又は分岐先のプログラムの実行が完了した後に元のプログラムに復帰しない場合には、キャッシュメモリに不要なデータが存在することになるという問題もある。
【0004】
本発明はかかる問題を解決するために成されたものであり、メインメモリからキャッシュメモリへのバースト転送が行われている最中に割り込み要求が発生した場合等に、割り込み処理等を優先的に開始することが可能なデータ処理装置を得ることを目的とするものである。
【0005】
【課題を解決するための手段】
この発明のうち請求項1に記載のデータ処理装置は、処理装置と、第1の記憶装置と、処理装置と第1の記憶装置との間に接続された第2の記憶装置とを備え、処理装置が必要とする所定データが第2の記憶装置内に存在しない場合、所定データを含む、第2の記憶装置の1ライン分の複数のデータが、第1の記憶装置から読み出されてバースト転送によって第2の記憶装置のラインに転送されるデータ処理装置において、バースト転送が行われている最中に割り込み要求が発生した場合、バースト転送が中断されて、割り込み処理が開始されるものである。
【0006】
また、この発明のうち請求項2に記載のデータ処理装置は、請求項1に記載のデータ処理装置であって、割り込み処理が完了すると、中断されていたバースト転送が再開されることを特徴とするものである。
【0007】
また、この発明のうち請求項3に記載のデータ処理装置は、請求項2に記載のデータ処理装置であって、割り込み処理が完了した後に、バースト転送が中断された元のプログラムに復帰する場合にのみ、中断されていたバースト転送が再開されることを特徴とするものである。
【0008】
また、この発明のうち請求項4に記載のデータ処理装置は、請求項2又は3に記載のデータ処理装置であって、複数の割り込み要求が発生した場合は、複数の割り込み処理が順に実行され、最後の割り込み処理が完了すると、中断されていたバースト転送が再開されることを特徴とするものである。
【0009】
また、この発明のうち請求項5に記載のデータ処理装置は、請求項1に記載のデータ処理装置であって、割り込み処理が完了した後に、バースト転送の中断に係るラインが処理装置によってアクセスされると、中断されていたバースト転送が再開されることを特徴とするものである。
【0010】
また、この発明のうち請求項6に記載のデータ処理装置は、請求項1に記載のデータ処理装置であって、割り込み処理が実行されている途中で、割り込み処理を終了させる命令が検出されると、中断されていたバースト転送が再開されることを特徴とするものである。
【0011】
また、この発明のうち請求項7に記載のデータ処理装置は、請求項6に記載のデータ処理装置であって、複数の割り込み要求が発生した場合は、複数の割り込み処理が順に実行され、最後の割り込み処理を終了させる命令が検出されると、中断されていたバースト転送が再開されることを特徴とするものである。
【0012】
また、この発明のうち請求項8に記載のデータ処理装置は、請求項2〜7のいずれか一つに記載のデータ処理装置であって、バースト転送が中断された箇所に関する情報が保持されており、再開されたバースト転送においては、情報に基づいて、複数のデータのうち、バースト転送の中断に起因して第1の記憶装置から読み出されなかったもののみが、第1の記憶装置から読み出されて転送されることを特徴とするものである。
【0013】
また、この発明のうち請求項9に記載のデータ処理装置は、請求項2〜7のいずれか一つに記載のデータ処理装置であって、第2の記憶装置は複数のラインを有しており、複数のラインは、自身がバースト転送の中断に係るラインである場合に、バースト転送が中断された箇所に関する情報をそれぞれ持ち、再開されたバースト転送においては、情報に基づいて、複数のデータのうち、バースト転送の中断に起因して第1の記憶装置から読み出されなかったもののみが、第1の記憶装置から読み出されて転送されることを特徴とするものである。
【0014】
また、この発明のうち請求項10に記載のデータ処理装置は、請求項1〜9のいずれか一つに記載のデータ処理装置であって、割り込み要因に関連する所定の優先度が設定されたレジスタをさらに備え、割り込み要求の優先度が所定の優先度よりも高い場合にのみ、バースト転送が中断されることを特徴とするものである。
【0015】
また、この発明のうち請求項11に記載のデータ処理装置は、請求項1〜9のいずれか一つに記載のデータ処理装置であって、バースト転送の中断を許可するか否かが割り込み要因ごとに設定されたレジスタをさらに備え、割り込み要求の割り込み要因が、バースト転送の中断を許可すると設定された割り込み要因である場合にのみ、バースト転送が中断されることを特徴とするものである。
【0016】
また、この発明のうち請求項12に記載のデータ処理装置は、請求項1〜9のいずれか一つに記載のデータ処理装置であって、処理装置は、少なくともフェッチステージ及び実行ステージを有するパイプライン処理を実現しており、割り込み要求が発生した場合は、割り込み要求に対応する割り込み命令がフェッチされる前にすでにフェッチされて、かつまだ実行されていない命令を実行するよりも前に、割り込み命令が実行されることを特徴とするものである。
【0017】
また、この発明のうち請求項13に記載のデータ処理装置は、請求項1〜9のいずれか一つに記載のデータ処理装置であって、処理装置は、少なくともフェッチステージ及び実行ステージを有するパイプライン処理を実現しており、割り込み要求の優先度が所定の優先度以下である場合は、割り込み要求に対応する割り込み命令がフェッチされる前にすでにフェッチされていた命令が実行された後に、割り込み命令が実行されることを特徴とするものである。
【0018】
また、この発明のうち請求項14に記載のデータ処理装置は、処理装置と、第1の記憶装置と、処理装置と第1の記憶装置との間に接続された第2の記憶装置とを備え、処理装置が必要とする所定データが第2の記憶装置内に存在しない場合、所定データを含む、第2の記憶装置の1ライン分の複数のデータが、第1の記憶装置から読み出されてバースト転送によって第2の記憶装置のラインに転送されるデータ処理装置において、データ処理装置は、割り込み要因に関連する所定の優先度が設定されたレジスタをさらに備え、処理装置は、少なくともフェッチステージ及び実行ステージを有するパイプライン処理を実現しており、発生した割り込み要求の優先度が所定の優先度以下である場合は、割り込み要求に対応する割り込み命令がフェッチされる前にすでにフェッチされていた命令が実行された後に、割り込み命令が実行され、割り込み要求の優先度が所定の優先度よりも高い場合は、割り込み要求に対応する割り込み命令がフェッチされる前にすでにフェッチされて、かつまだ実行されていない命令を実行するよりも前に、割り込み命令が実行されることを特徴とするものである。
【0019】
また、この発明のうち請求項15に記載のデータ処理装置は、請求項14に記載のデータ処理装置であって、バースト転送が行われている最中に割り込み要求が発生した場合、バースト転送が中断されて、割り込み処理が開始されることを特徴とするものである。
【0020】
また、この発明のうち請求項16に記載のデータ処理装置は、処理装置と、第1の記憶装置と、処理装置と第1の記憶装置との間に接続された第2の記憶装置とを備え、処理装置が必要とする所定データが第2の記憶装置内に存在しない場合、所定データを含む、第2の記憶装置の1ライン分の複数のデータが、第1の記憶装置から読み出されて第2の記憶装置のラインにバースト転送されるデータ処理装置において、第1のプログラムを実行する過程で第1のバースト転送が行われている最中に第1の分岐命令が検出された場合、第1のバースト転送が中断されて、分岐先の第2のプログラムが実行され、第2のプログラムが、第1のプログラムに復帰する可能性の高いプログラムである場合に、第1のバースト転送が中断された箇所に関する第1の情報が保持され、第2のプログラムの実行が完了すると、第1の情報に基づいて、中断されていた第1のバースト転送が再開されるものである。
【0021】
また、この発明のうち請求項17に記載のデータ処理装置は、請求項16に記載のデータ処理装置であって、第2のプログラムを実行する過程で第2のバースト転送が行われている最中に第2の分岐命令が検出された場合、第2のバースト転送が中断されて、分岐先の第3のプログラムが実行され、第3のプログラムが、第2のプログラムに復帰する可能性の高いプログラムである場合に、第2のバースト転送が中断された箇所に関する第2の情報が保持され、第3のプログラムの実行が完了すると、第2の情報に基づいて、中断されていた第2のバースト転送が再開されることを特徴とするものである。
【0022】
【発明の実施の形態】
実施の形態1.
図1は、本発明の実施の形態1に係るデータ処理装置の構成を示すブロック図である。図1に示すように、本実施の形態1に係るデータ処理装置は、CPU1と、オペランドキャッシュ(一般的に「データキャッシュ」と称される)2と、命令キャッシュ3とを備えている。CPU1は、リクエストキャンセル信号生成回路12を有している。また、データ処理装置は、外部メモリ(SDRAM8、DRAM9、及びROM10)とのアクセスを制御するためのコントローラ(外部アクセスコントローラ)4を備えている。外部アクセスコントローラ4は、SDRAMコントローラ5と、DRAMコントローラ6と、ROMコントローラ7とを有している。さらに、データ処理装置は、外付け又は内蔵されたモジュールからの割り込み要求IRを受け付けて、割り込み信号ISをCPU1に入力する割り込みコントローラ(ICU)11を備えている。
【0023】
CPU1と命令キャッシュ3との間で授受される信号について説明する。命令フェッチ要求信号IFRは、CPU1が命令キャッシュ3に対して命令フェッチを要求していることを示す信号である。命令アドレス信号IFAは、CPU1が要求している命令コードのアドレスを示す信号である。受領信号AFICは、命令キャッシュ3がCPU1からの命令フェッチ要求を受け付けたことを示す信号である。命令コードRICは、命令キャッシュ3からCPU1に転送される命令コードである。命令バリッド信号IVは、命令キャッシュ3からCPU1に有効な命令コードが転送されていることを示す信号である。リクエストキャンセル信号RCは、バースト転送の中断要求を示す信号である。
【0024】
CPU1とオペランドキャッシュ2との間で授受される信号について説明する。オペランドフェッチ要求信号OFRは、CPU1がオペランドキャッシュ2に対してオペランドフェッチを要求していることを示す信号である。オペランドアドレス信号OFAは、CPU1が要求しているオペランドのアドレスを示す信号である。受領信号AFOCは、オペランドキャッシュ2がCPU1からのオペランドフェッチ要求を受け付けたことを示す信号である。リードオペランドROは、オペランドキャッシュ2からCPU1に転送されるオペランドである。オペランドバリッド信号OVは、オペランドキャッシュ2からCPU1に有効なオペランドが転送されていることを示す信号である。ライトオペランドWOは、CPU1からオペランドキャッシュ2に転送されるオペランドである。
【0025】
以下、命令キャッシュ3とSDRAMコントローラ5との関係に着目して、本発明に係るデータ処理装置について説明する。命令キャッシュ3とDRAMコントローラ6又はROMコントローラ7との関係、及び、オペランドキャッシュ2とSDRAMコントローラ5、DRAMコントローラ6又はROMコントローラ7との関係も基本的には同様であるため、説明は省略する。
【0026】
図2は、命令キャッシュ3及びSDRAMコントローラ5を示すブロック図である。命令キャッシュ3とSDRAMコントローラ5との間で授受される信号について説明する。アドレス信号IAは、CPU1が要求している命令コードのアドレスを示す信号であり、命令キャッシュ3から図1に示したアドレスバスABを介してSDRAMコントローラ5に入力される。アクセス要求信号ARは、命令キャッシュ3がSDRAM8へのアクセスを要求していることを示す信号である。バースト要求信号BRは、SDRAM8から命令キャッシュ3へのデータ転送をバースト転送によって行うことを要求する信号である。バースト要求信号BRが「H(High)」の場合はバースト転送が指定され、「L(Low)」の場合は単発転送が指定される。
【0027】
最終要求信号LARは、バースト転送が指定されている場合に有効であり、バースト転送における最終のアクセス要求を示す信号である。受領信号ACKは、SDRAMコントローラ5が命令キャッシュ3からのアクセス要求を受け付けたことを示す信号である。data ready信号DRは、SDRAMコントローラ5から命令キャッシュ3に有効なデータが転送されていることを示す信号である。リードデータRDは、SDRAMコントローラ5から図1に示したデータバスRDBを介して命令キャッシュ3に転送されるデータである。
【0028】
SDRAMコントローラ5は、アドレス信号IA及び制御信号CS,RAS,CAS,WEを、図1に示したアドレス・コントロールバスACBを介してSDRAM8に入力する。また、SDRAMコントローラ5及びSDRAM8は、図1に示したデータバスDBを介して、データDQの授受を行う。
【0029】
図3は、命令キャッシュ3の構成を示すブロック図である。命令キャッシュ3は、外部アクセス要求生成回路15と、命令コード選択回路16と、記憶部17とを備えている。記憶部17は複数のラインに分割されており、各ラインは、タグ部17a、バリッドビット17b、及びデータ部17cをそれぞれ有している。データ部17cにはキャッシュ登録されたデータ(登録データ)が記憶されており、タグ部17aには登録データのタグ情報が記憶されている。タグ部17a及びデータ部17cは、バリッドビット17bが「H」のラインのみ有効である。
【0030】
外部アクセス要求生成回路15には、命令フェッチ要求信号IFR、リクエストキャンセル信号RC、命令アドレス信号IFA、受領信号ACK、ヒット信号HIT、及びミスヒット信号MISSが入力される。CPU1が要求している命令コードが命令キャッシュ3内に存在している場合(即ちヒットの場合)、ヒット信号HITは「H」となり、ミスヒット信号MISSは「L」となる。一方、CPU1が要求している命令コードが命令キャッシュ3内に存在していない場合(即ちミスヒットの場合)、ミスヒット信号MISSは「H」となり、ヒット信号HITは「L」となる。外部アクセス要求生成回路15からは、アドレス信号IA、アクセス要求信号AR、バースト要求信号BR、最終要求信号LAR、及び有効データ信号SSが出力される。有効データ信号SSについては後述する。
【0031】
命令コード選択回路16には、命令フェッチ要求信号IFR、有効データ信号SS、ヒット信号HIT、及びミスヒット信号MISSが入力される。また、命令コード選択回路16には、ヒットの場合は、データ部17cから読み出された命令コードICが入力され、ミスヒットの場合は、SDRAM8から読み込まれた命令コードICが入力される。命令コード選択回路16からは、命令コードRICが出力される。
【0032】
記憶部17には、命令アドレス信号IFA及び命令コードICが入力される。記憶部17からは、ヒット信号HIT、ミスヒット信号MISS、及び命令コードICが出力される。
【0033】
図4は、図3に示した外部アクセス要求生成回路15の構成を示すブロック図である。外部アクセス要求生成回路15は、アドレス生成回路20と、リクエストカウント回路21と、リクエスト生成回路22と、インバータ70,71と、AND回路72,73と、OR回路74とを備えている。アドレス生成回路20には、中断情報35及び命令アドレス信号IFAが入力される。中断情報35については後述する。アドレス生成回路20からは、アドレス信号IA及び有効データ信号SSが出力される。バースト転送が行われる場合、アドレス生成回路20は、アドレス信号IAによって示されるアドレスを、図1に示したデータバスRDBのバスサイズに応じて適宜インクリメントする。
【0034】
リクエストカウント回路21には、中断情報35、命令アドレス信号IFA、有効データ信号SS、及び受領信号ACKが入力される。リクエストカウント回路21からは、信号F1,F2が出力される。信号F1,F2については後述する。
【0035】
リクエスト生成回路22には、信号F1、命令フェッチ要求信号IFR、ミスヒット信号MISS、インバータ70によって反転されたヒット信号HIT、及びインバータ71によって反転されたリクエストキャンセル信号RCが入力される。リクエスト生成回路22からは、アクセス要求信号ARが出力される。リクエスト生成回路22は、ミスヒットの場合にアクセス要求信号ARを出力し、ヒットの場合にはアクセス要求信号ARを出力しない。
【0036】
AND回路72には、命令フェッチ要求信号IFR及び信号COが入力される。信号COは、命令キャッシュ3がキャッシュオンの状態(即ち命令キャッシュ3を使用することが可能な状態)の時に「H」となる信号である。AND回路72からは、バースト要求信号BRが出力される。
【0037】
AND回路73には、バースト要求信号BR及び信号F2が入力される。OR回路74には、AND回路73の出力信号と、リクエストキャンセル信号RCとが入力される。OR回路74からは、最終要求信号LARが出力される。
【0038】
図5は、図4に示したリクエストカウント回路21の構成を示すブロック図である。リクエストカウント回路21は、カウンタ25を備えている。有効データ信号SS、中断情報35、及び命令アドレス信号IFAに基づいて、カウンタ25には、バースト転送が継続される残りの回数(残りカウント数)が設定される。この残りカウント数は、受領信号ACKが入力されるごとに1ずつデクリメントされる。信号F1は、残りカウント数が「0」になるまでは「H」であり、残りカウント数が「0」になると「L」になる。図4に示したリクエスト生成回路22は、リクエストカウント回路21から「L」の信号F1が入力されると、アクセス要求信号ARの出力を停止する。
【0039】
信号F2は、残りカウント数が「1」になるまでは「L」であり、残りカウント数が「1」になると「H」になる。図4に示したAND回路73及びOR回路74は、信号F2が「L」から「H」に遷移したことを受けて、最終要求信号LARを出力する。
【0040】
図6は、図4に示したアドレス生成回路20の構成を示すブロック図である。アドレス生成回路20は、一致検出回路30と、選択回路31と、デコーダ32と、AND回路80〜83,85と、OR回路84とを備えている。一致検出回路30の一方の入力端子には、所定ビット数(ここでは32ビットとする)の命令アドレス信号IFAの第0〜第27ビット(以下[0:27]と表記する)が入力され、他方の入力端子には、中断情報35のアドレス記述部35aに記述されている再開アドレスが入力される。中断情報35の詳細については後述する。一致検出回路30からは、一方の入力端子に入力されたデータと他方の入力端子に入力されたデータとが互いに一致すれば「H」で、一致しなければ「L」の検出結果が出力される。
【0041】
選択回路31には、命令アドレス信号IFAと、中断情報35の再開アドレスとが入力される。選択回路31は、一致検出回路30から出力された検出結果が「H」の場合は中断情報の35の再開アドレスを選択し、「L」の場合は命令アドレス信号IFAを選択して、アドレス信号IAとして出力する。
【0042】
デコーダ32には、命令アドレス信号IFAの[28:29]が入力される。デコーダ32は、命令アドレス信号IFAの[28:29]が「00」である場合は、AND回路80の一方の入力端子に「H」を入力する。同様に、AND回路81,82,83の各一方の入力端子には、命令アドレス信号IFAの[28:29]が「01」「10」「11」の場合に、それぞれ「H」が入力される。
【0043】
AND回路80の他方の入力端子には、中断情報35のデータ位置記述部35bの第0ビットの内容に対応して、「H」又は「L」が入力される。具体的に、第0ビットが「1」の場合は「H」が入力され、「0」の場合は「L」が入力される。同様に、AND回路81,82,83の各他方の入力端子には、中断情報35のデータ位置記述部35bの第1,第2,第3ビットの内容に対応して、それぞれ「H」又は「L」が入力される。
【0044】
OR回路84には、AND回路80〜83の各出力信号が入力される。AND回路85の一方の入力端子には、一致検出回路30から出力された検出結果が入力され、他方の入力端子には、OR回路84の出力信号が入力される。AND回路85からは、有効データ信号SSが出力される。有効データ信号SSが「H」である場合は、CPU1が要求している命令コードが中断情報35のデータ格納部35c内に存在していることになる。
【0045】
図7は、図3に示した命令コード選択回路16の構成を示すブロック図である。命令コード選択回路16は、AND回路180と、インバータ181と、選択回路182,183とを備えている。AND回路180の一方の入力端子には、ミスヒット信号MISSが入力され、他方の入力端子には、インバータ181によって反転されたヒット信号HITが入力される。
【0046】
選択回路182の一方の入力端子には、中断情報35のデータ格納部35cから読み出された命令コードICが入力され、他方の入力端子には、SDRAM8から読み込まれた命令コードICが入力される。選択回路182は、有効データ信号SSが「H」である場合は、中断情報35のデータ格納部35cから読み出された命令コードICを選択して出力し、「L」である場合は、SDRAM8から読み込まれた命令コードICを選択して出力する。
【0047】
選択回路183の一方の入力端子には、選択回路182から出力された命令コードICが入力され、他方の入力端子には、命令キャッシュ3から読み出された命令コードICが入力される。選択回路183は、AND回路180の出力信号が「H」である場合(即ちミスヒットである場合)は、選択回路182から出力された命令コードICを選択して出力し、「L」である場合(即ちヒットである場合)は、命令キャッシュ3から読み出された命令コードICを選択して出力する。
【0048】
図8は、図1に示したリクエストキャンセル信号生成回路12の構成を示すブロック図である。リクエストキャンセル信号生成回路12は、AND回路90,91と、インバータ92とを備えている。AND回路90の一方の入力端子には割り込み信号ISが入力され、他方の入力端子には、PSW(Program Status Word又はProcessor Status Word)のIE(Interrupt Enable)ビットの内容が入力される。
【0049】
AND回路91の一方の入力端子には、割り込みハンドラの命令フェッチが開始された場合に「H」となる信号が、インバータ92によって反転されて入力される。AND回路91の他方の入力端子には、AND回路90の出力信号が入力される。AND回路91からは、リクエストキャンセル信号RCが出力される。リクエストキャンセル信号RCは、割り込み信号ISが入力されてから割り込み処理が開始されるまでの間のみ「H」となる。
【0050】
図9は、本実施の形態1に係るデータ処理装置に関して、バースト転送の最中に割り込み要求IRが発生しない場合の信号・データの遷移を示すタイミングチャートである。以下、図9及び適宜図1〜8を参照して、バースト転送の最中に割り込み要求IRが発生しない場合の、本実施の形態1に係るデータ処理装置の動作を説明する。なお、以下の説明では、命令キャッシュ3の1ラインが128ビット、データバスRDBのバスサイズが32ビット(4バイト)であり、1ラインをキャッシュフィルするために4回のバスアクセスが必要な場合を想定する。また、命令コードI1,I3,I4は命令キャッシュ3内に存在しており、命令コードD1〜D4は命令キャッシュ3内に存在していないと仮定する。さらに、CL(CAS Latency)=2と仮定する。
【0051】
期間T1において、CPU1は、命令フェッチ要求信号IFR、及び命令コードI1に関する命令アドレス信号IFA(アドレスa1)を、命令キャッシュ3に入力する。アドレスa1へのアクセス要求(即ち、命令コードI1に関する命令フェッチ要求)が受け付けられると、次のアドレスa2へのアクセスが連続して要求され、以下同様に、アドレスa3,a4へのアクセスがこの順に連続して要求される。そのため、命令フェッチ要求信号IFRは、連続的に「H」を維持する。命令コードI1に関する命令フェッチ要求は、期間T1において命令キャッシュ3によって受け付けられ、命令キャッシュ3は、受領信号AFICをCPU1に入力する。命令コードI1は命令キャッシュ3内に存在しているため、ヒット信号HITが「H」となる。
【0052】
期間T2において、アドレスa1に対応する命令コードI1が命令キャッシュ3から読み出されて、CPU1に転送される。その際、命令バリッド信号IVが「H」とされる。また、CPU1は、命令コードI1の次の命令コードD1に関する命令アドレス信号IFA(アドレスa2)を、命令キャッシュ3に入力する。命令コードD1に関する命令フェッチ要求は、期間T2において命令キャッシュ3によって受け付けられ、命令キャッシュ3は、受領信号AFICをCPU1に入力する。命令コードD1は命令キャッシュ3内に存在していないため、ミスヒット信号MISSが「H」となる。
【0053】
期間T3において、命令キャッシュ3は、アクセス要求信号AR及びアドレス信号IA(アドレスa2)を、SDRAMコントローラ5に入力する。また、キャッシュオンの状態である場合、命令キャッシュ3は、SDRAMコントローラ5にバースト要求信号BRを入力することによって、1ライン分の命令コードD1〜D4のバースト転送を要求する。アクセス要求信号AR及びバースト要求信号BRは、バースト転送を要求する全ての命令コードD1〜D4に関するアクセス要求がSDRAMコントローラ5によって受け付けられるまで、「H」を維持する。命令コードD1に関するアクセス要求は、期間T3においてSDRAMコントローラ5によって受け付けられ、SDRAMコントローラ5は、受領信号ACKを命令キャッシュ3に入力する。
【0054】
CPU1は、命令コードD1の次の命令コードI3に関する命令アドレス信号IFA(アドレスa3)を、命令キャッシュ3に入力する。しかし、命令キャッシュ3は、命令コードD1をCPU1に受け渡すまでは、命令コードI3に関する命令フェッチ要求を受け付けない(AFIC=「L」)。
【0055】
期間T4において、SDRAMコントローラ5は、SDRAM8を活性化するための活性化コマンドACT(RAS=「L」、CAS=「H」、WE=「H」)を、SDRAM8に入力する。また、命令キャッシュ3は、命令コードD1に続く命令コードD2に関するアドレス信号IA(アドレスa2+4)を、SDRAMコントローラ5に入力する。しかし、SDRAMコントローラ5は、CASが「L」となって次のアクセス要求を受け付け可能となるまでは、命令コードD2に関するアクセス要求を受け付けない。
【0056】
期間T6において、SDRAMコントローラ5は、バースト転送を開始するためのリードコマンドREAD(RAS=「H」、CAS=「L」、WE=「H」)を、SDRAM8に入力する。また、命令コードD2に関するアクセス要求がSDRAMコントローラ5によって受け付けられ、SDRAMコントローラ5は、受領信号ACKを命令キャッシュ3に入力する。
【0057】
期間T7において、命令キャッシュ3は、命令コードD2に続く命令コードD3に関するアドレス信号IA(アドレスa2+8)を、SDRAMコントローラ5に入力する。命令コードD3に関するアクセス要求は、期間T7においてSDRAMコントローラ5によって受け付けられ、SDRAMコントローラ5は、受領信号ACKを命令キャッシュ3に入力する。
【0058】
期間T8において、命令キャッシュ3は、命令コードD3に続く命令コードD4に関するアドレス信号IA(アドレスa2+12)を、SDRAMコントローラ5に入力する。命令コードD4に関するアクセス要求は、期間T8においてSDRAMコントローラ5によって受け付けられ、SDRAMコントローラ5は、受領信号ACKを命令キャッシュ3に入力する。また、命令キャッシュ3は、最終要求信号LARをSDRAMコントローラ5に入力する。さらに、バースト転送が開始され、命令コードD1がSDRAM8からSDRAMコントローラ5へ転送される。
【0059】
期間T9において、命令コードD1がSDRAMコントローラ5から命令キャッシュ3へ転送される。その際、data ready信号DRが「H」とされる。また、命令コードD2がSDRAM8からSDRAMコントローラ5へ転送される。さらに、SDRAMコントローラ5は、SDRAM8をプリチャージするためのプリチャージコマンドPRE(RAS=「L」、CAS=「H」、WE=「L」)を、SDRAM8に入力する。
【0060】
期間T10において、命令コードD1が命令キャッシュ3からCPU1に転送される。その際、命令バリッド信号IVが「H」とされる。また、命令キャッシュ3は、命令コードI3に関する命令アドレス信号IFAを受け付け、受領信号AFICをCPU1に入力する。命令コードI3は命令キャッシュ3内に存在しているため、ヒット信号HITが「H」となる。また、命令コードD2がSDRAMコントローラ5から命令キャッシュ3へ転送される。その際、data ready信号DRが「H」とされる。さらに、命令コードD3がSDRAM8からSDRAMコントローラ5へ転送される。
【0061】
期間T11において、命令コードI3が命令キャッシュ3から読み出されて、CPU1に転送される。その際、命令バリッド信号IVが「H」とされる。CPU1は、命令コードI3の次の命令コードI4に関する命令アドレス信号IFA(アドレスa4)を、命令キャッシュ3に入力する。命令キャッシュ3は、命令コードI4に関する命令アドレス信号IFAを受け付け、受領信号AFICをCPU1に入力する。命令コードI4は命令キャッシュ3内に存在しているため、ヒット信号HITが「H」となる。また、命令コードD3がSDRAMコントローラ5から命令キャッシュ3へ転送される。その際、data ready信号DRが「H」とされる。さらに、命令コードD4がSDRAM8からSDRAMコントローラ5へ転送される。
【0062】
期間T12において、命令コードI4が命令キャッシュ3から読み出されて、CPU1に転送される。その際、命令バリッド信号IVが「H」とされる。また、命令コードD4がSDRAMコントローラ5から命令キャッシュ3へ転送される。その際、data ready信号DRが「H」とされる。1ライン分の命令コードD1〜D4が揃ったので、命令キャッシュ3は、命令コードD1〜D4を所定のラインに登録する。
【0063】
なお、命令コードI1の次にCPU1が要求する命令コードが、SDRAM8のメモリブロックの先頭に格納されている命令コードD1ではなく、途中に格納されている命令コード(例えば命令コードD3)である場合は、命令キャッシュ3は、アドレスa2,a2+4,a2+8,a2+12の順にアドレス信号IAを出力しても良く、アドレスa2+8,a2+12,a2,a2+4の順にアドレス信号IAを出力しても良い。
【0064】
図10は、本実施の形態1に係るデータ処理装置に関して、バースト転送の最中に割り込み要求IRが発生した場合の信号・データの遷移を示すタイミングチャートである。以下、図10及び適宜図1〜8を参照して、バースト転送の最中に割り込み要求IRが発生した場合の、本実施の形態1に係るデータ処理装置の動作を説明する。なお、割り込みハンドラの命令コードI5は命令キャッシュ3内に存在していないと仮定する。
【0065】
期間T5までの動作は図9と同様であるため、説明は省略する。
【0066】
期間T6において、SDRAMコントローラ5は、リードコマンドREADをSDRAM8に入力する。また、命令コードD2に関するアクセス要求がSDRAMコントローラ5によって受け付けられ、SDRAMコントローラ5は、受領信号ACKを命令キャッシュ3に入力する。
【0067】
割り込み要求IRが発生し、リクエストキャンセル信号RCが、リクエストキャンセル信号生成回路12から命令キャッシュ3に入力される。CPU1は、命令フェッチ要求信号IFRを「L」に遷移させることにより、この時点で命令キャッシュ3によってまだ受け付けられていない命令フェッチ要求(図9に示したアドレスa3,a4に対する命令フェッチ要求)を取り下げる。命令キャッシュ3は、最終要求信号LARを生成してSDRAMコントローラ5に入力する。また、命令キャッシュ3は、アクセス要求信号AR及びバースト要求信号BRを「L」に遷移させることにより、図9に示した命令コードD3,D4に関してのバースト転送の要求を取り下げる。
【0068】
期間T7において、SDRAMコントローラ5は、プリチャージコマンドPREをSDRAM8に入力する。
【0069】
期間T8において、バースト転送が開始され、命令コードD1がSDRAM8からSDRAMコントローラ5へ転送される。
【0070】
期間T9において、命令コードD1がSDRAMコントローラ5から命令キャッシュ3へ転送される。その際、data ready信号DRが「H」とされる。また、命令コードD2がSDRAM8からSDRAMコントローラ5へ転送される。
【0071】
期間T10において、命令コードD1が命令キャッシュ3からCPU1に転送される。その際、命令バリッド信号IVが「H」とされる。また、命令キャッシュ3は、割り込みハンドラの命令コードI5に関する命令アドレス信号IFA(アドレスa5)を受け付け、受領信号AFICをCPU1に入力する。命令コードI5は命令キャッシュ3内に存在していないため、ミスヒット信号MISSが「H」となる。また、命令コードD2がSDRAMコントローラ5から命令キャッシュ3へ転送される。その際、data ready信号DRが「H」とされる。
【0072】
期間T11以降において、アドレスa5,a5+4,a5+8,a5+12の各アドレス信号IAが、命令キャッシュ3からSDRAMコントローラ5へ順次入力され、バースト転送によるSDRAM8からの命令コードI5の読み込みが行われる。命令コードI5はCPU1に転送され、CPU1は、割り込み要求IRに対する処理を実行する。
【0073】
以下、中断されていたバースト転送の再開について説明する。図11は、中断情報35を示す図である。図10に示した例では、割り込み要求IRの発生に起因して、命令コードD3,D4に関するバースト転送が中断された。バースト転送が中断されると、命令キャッシュ3(厳密には外部アクセス要求生成回路15)は、バースト転送の中断に関する情報(中断情報)35を作成して、自ら保持しておく。
【0074】
図11を参照して、中断情報35は、28ビットのアドレス記述部35aと、4ビットのデータ位置記述部35bと、128ビットのデータ格納部35cとを有している。アドレス記述部35aには、中断されたバースト転送を再開する際の開始アドレス(再開アドレス)が記述されている。データ格納部35cには、バースト転送が中断されるまでにSDRAMコントローラ5から命令キャッシュ3に転送されてきたデータが格納されている。データ位置記述部35bには、データ格納部35cの128ビットを各32ビットの4つの領域に分割して、どの領域に有効なデータが格納されているかが記述されている。
【0075】
図10に示した例によると、アドレス記述部35aには、32ビットのアドレスa2+8のうちの[0:27]が記述されている。データ格納部35cには、[0:31]に命令コードD1が格納されており、[32:63]に命令コードD2が格納されている。データ格納部35cの[64:95]及び[96:127]には有効なデータが格納されておらず、不定ビットとなっている。データ位置記述部35bには、「1100」が記述されている。「1」が有効を表しており、「0」が無効を表している。
【0076】
図12は、メインプログラムの実行中に割り込み要求が発生した場合の、第1の処理フローを示す模式図である。メインプログラムの処理を実行しているCPU1は、命令の切れ目などのタイミングで、ICU11からの割り込み信号ISの入力の有無を監視している。命令キャッシュ3へのバースト転送が行われている途中で割り込み要求IRの発生が検出されると、上記の通り、命令キャッシュ3は、命令コードD3,D4に関するバースト転送を中断するとともに、中断情報35を作成する。そして、PSWや戻り先番地などの情報が退避された後、割り込みハンドラの先頭番地へのジャンプが行われる。割り込み処理が開始されて、その処理が終了すると、RTE(Return from exception/interrupt/trap)命令の実行により、退避されていたPSWの復帰と、戻り先番地へのジャンプとが実行される。これにより、元のメインプログラムに復帰する。すると、命令キャッシュ3は、中断情報35のアドレス記述部35aに記述されている再開アドレスを参照することにより、中断された箇所の続きからバースト転送を再開する。即ち、命令コードD3,D4に関するバースト転送が再開される。中断された箇所の続きからバースト転送が再開されるため、中断される前に命令キャッシュ3に転送されていた命令コードD1,D2に関して、重複した読み出し及び転送動作を回避することができる。
【0077】
命令キャッシュ3への命令コードD3,D4の転送が完了すると、命令キャッシュ3は、中断情報35のデータ格納部35cに格納されている命令コードD1,D2と、SDRAM8から転送されてきた命令コードD3,D4とを繋ぎ合わせて、命令コードD1〜D4を所定のラインに登録する。
【0078】
図13は、メインプログラムの実行中に割り込み要求が発生した場合の、第2の処理フローを示す模式図である。図13では、割り込み処理が終了した後に、元のメインプログラムに復帰しない場合を想定している。割り込み処理が開始されるまでの流れは図12と同様であるため、説明を省略する。割り込み処理が実行されている過程において、割り込みハンドラは、退避されていた戻り先番地を、メインプログラムとは別のプログラムの先頭番地に書き換える。命令キャッシュ3は、戻り先番地の書き換えが行われたことを検出すると、保持していた中断情報35を無効化する。即ち、データ位置記述部35bの記述内容をクリアする。このとき、アドレス記述部35a及びデータ格納部35cの内容を併せてクリアしてもよい。割り込み処理が終了すると、RTE命令の実行によって上記別のプログラムの先頭番地へのジャンプが実行され、中断されていたバースト転送が再開されることなく、上記別のプログラムの処理が開始される。
【0079】
割り込み処理が終了した後に別のプログラムに移行するような場合は、移行直後に元のプログラムに関する命令コードD1〜D4が実行される可能性は低いと考えられる。従って、このような場合には、中断されていたバースト転送を再開させないことにより、バースト転送の再開に伴う無駄な動作を回避でき、上記別のプログラムを早期に開始させることができる。
【0080】
図14は、メインプログラムの実行中に割り込み要求が発生した場合の、第3の処理フローを示す模式図である。図14では、複数の割り込み要求が発生した場合を想定している。複数の割り込み要求が発生した場合は、優先度の高い順に割り込み処理が実行される。命令キャッシュ3へのバースト転送が行われている途中で第1の割り込み要求の発生が検出されると、上記の通り、命令キャッシュ3は、命令コードD3,D4に関するバースト転送を中断するとともに、中断情報35を作成する。そして、PSWや戻り先番地などの情報が退避された後、第1の割り込みハンドラの先頭番地へのジャンプが行われて、第1の割り込み処理が開始される。
【0081】
第1の割り込み処理が終了した時点で第2の割り込み要求の発生が検出されると、第2の割り込みハンドラの先頭番地へのジャンプが行われて、第2の割り込み処理が開始される。第2の割り込み処理が終了すると、RTE命令の実行により、退避されていたPSWの復帰と、戻り先番地へのジャンプとが実行されて、元のメインプログラムに復帰する。すると、命令キャッシュ3は、中断情報35のアドレス記述部35aに記述されている再開アドレスを参照することにより、中断された箇所の続きからバースト転送を再開する。即ち、命令コードD3,D4に関するバースト転送が再開される。
【0082】
命令キャッシュ3への命令コードD3,D4の転送が完了すると、命令キャッシュ3は、中断情報35のデータ格納部35cに格納されている命令コードD1,D2と、SDRAM8から転送されてきた命令コードD3,D4とを繋ぎ合わせて、命令コードD1〜D4を所定のラインに登録する。
【0083】
第1の割り込み処理が終了した後に、バースト転送の再開よりも優先して第2の割り込み処理を実行するため、第2の割り込み処理を早期に開始することができる。
【0084】
なお、図12,14において、割り込み処理が終了して元のプログラムに復帰した際に、中断された箇所の続きからバースト転送を再開するのではなく、その中断に係るラインの全ての領域に関して、最初からバースト転送をやり直すこともできる。この場合、中断情報35のアドレス記述部35aには、再開アドレスa2+8ではなく先頭アドレスa2を記述しておき、また、データ位置記述部35b及びデータ格納部35cは不要である。しかも、図10において、命令キャッシュ3は、命令コードD1,D2のバースト転送が完了するのを待つことなく、リクエストキャンセル信号RCを受けた直後に、命令コードI5の命令フェッチを開始すればよい。
【0085】
また、割り込みに起因してバースト転送を中止することのみを目的とし、割り込み処理が終了した後にバースト転送を再開することを意図しない場合には、中断情報35の作成・保持は不要である。
【0086】
このように本実施の形態1に係るデータ処理装置によれば、キャッシュフィルのためのバースト転送が行われている最中に割り込み要求IRが発生した場合に、バースト転送の完了を待ってから割り込み処理を開始するのではなく、バースト転送を強制的に中断して、割り込み処理を優先的に実行する。従って、緊急度の高い割り込み要求IRに対する応答性を、従来のデータ処理装置よりも高めることができる。
【0087】
実施の形態2.
上記実施の形態1では、図12,14に示したように、命令キャッシュ3は、割り込み処理が終了して元のプログラムに復帰したことを要因として、中断されていたバースト転送を自動的に再開した。本実施の形態2では、実施の形態1とは異なる要因でバースト転送を再開する方法について説明する。なお、上記実施の形態1と同様に、命令コードD1,D2が命令キャッシュ3に転送された段階でバースト転送が中断されて割り込み処理が開始されたものと仮定し、その割り込み処理はすでに完了している。
【0088】
図15は、本実施の形態2に係るデータ処理装置に関して、中断されていたバースト転送を再開する際の信号・データの遷移を示すタイミングチャートである。図15に示すように、CPU1は、命令コードI1(アドレスa1)と、バースト転送が中断されたライン(以下「中断ライン」と称する)に係る命令コードD1,D2,D3,D4(アドレスa2,a2+4,a2+8,a2+12)とを要求している。本実施の形態2に係るデータ処理装置では、中断ラインに係る複数の命令コードのうちの任意の一つがCPU1によって要求されたことを要因として、中断されていたバースト転送が再開される。以下、具体的に説明する。
【0089】
期間T1において、CPU1は、命令フェッチ要求信号IFR、及び命令コードI1に関する命令アドレス信号IFA(アドレスa1)を、命令キャッシュ3に入力する。命令フェッチ要求信号IFRは、CPU1が要求している全ての命令コードI1,D1〜D4に関する命令フェッチ要求が命令キャッシュ3によって受け付けられるまで、「H」を維持する。命令コードI1に関する命令フェッチ要求は、期間T1において命令キャッシュ3によって受け付けられ、命令キャッシュ3は、受領信号AFICをCPU1に入力する。命令コードI1は命令キャッシュ3内に存在しているため、ヒット信号HITが「H」となる。
【0090】
期間T2において、命令コードI1が命令キャッシュ3から読み出されて、CPU1に転送される。その際、命令バリッド信号IVが「H」とされる。また、CPU1は、命令コードI1の次の命令コードD1に関する命令アドレス信号IFA(アドレスa2)を、命令キャッシュ3に入力する。命令コードD1に関する命令フェッチ要求は、期間T2において命令キャッシュ3によって受け付けられ、命令キャッシュ3は、受領信号AFICをCPU1に入力する。
【0091】
命令コードD1は中断情報35のデータ格納部35cに格納されており、命令キャッシュ3の記憶部17内には存在していないため、ミスヒット信号MISSが「H」となる。一方、図6を参照して、一致検出回路30からは「H」が出力され、AND回路80からも「H」が出力される。その結果、AND回路85からは「H」の有効データ信号SSが出力される。
【0092】
期間T3において、命令コードD1が中断情報35のデータ格納部35cから読み出されて、CPU1に転送される。その際、命令バリッド信号IVが「H」とされる。また、CPU1は、命令コードD1の次の命令コードD2に関する命令アドレス信号IFA(アドレスa2+4)を、命令キャッシュ3に入力する。命令コードD2に関する命令フェッチ要求は、期間T3において命令キャッシュ3によって受け付けられ、命令キャッシュ3は、受領信号AFICをCPU1に入力する。
【0093】
命令コードD2は命令キャッシュ3の記憶部17内には存在していないため、ミスヒット信号MISSが「H」となる。一方、図6を参照して、一致検出回路30からは「H」が出力され、AND回路81からも「H」が出力される。その結果、AND回路85からは「H」の有効データ信号SSが出力される。
【0094】
また、命令キャッシュ3は、アクセス要求信号AR及びバースト要求信号BRをSDRAMコントローラ5へ入力する。図6を参照して、一致検出回路30から「H」の検出結果が出力されているため、選択回路31は、中断情報の35の再開アドレス(アドレスa2+8)を選択し、アドレス信号IAとして出力する。このアクセス要求、即ち命令コードD3に関するアクセス要求は、期間T3においてSDRAMコントローラ5によって受け付けられ、SDRAMコントローラ5は、受領信号ACKを命令キャッシュ3に入力する。
【0095】
期間T4において、命令コードD2が中断情報35のデータ格納部35cから読み出されて、CPU1に転送される。その際、命令バリッド信号IVが「H」とされる。また、CPU1は、命令コードD2の次の命令コードD3に関する命令アドレス信号IFA(アドレスa2+8)を、命令キャッシュ3に入力する。命令コードD3に関する命令フェッチ要求は、期間T4において命令キャッシュ3によって受け付けられ、命令キャッシュ3は、受領信号AFICをCPU1に入力する。
【0096】
命令コードD3は命令キャッシュ3の記憶部17内には存在していないため、ミスヒット信号MISSが「H」となる。また、図6を参照して、AND回路82からは「L」が出力されるため、AND回路85からは「L」の有効データ信号SSが出力される。
【0097】
SDRAMコントローラ5は、活性化コマンドACTをSDRAM8に入力する。また、命令キャッシュ3は、命令コードD3に続く命令コードD4に関するアドレス信号IA(アドレスa2+8)を、SDRAMコントローラ5に入力する。しかし、SDRAMコントローラ5は、次のアクセス要求を受け付け可能となるまでは、命令コードD4に関するアクセス要求を受け付けない。また、命令キャッシュ3は、最終要求信号LARをSDRAMコントローラ5に入力する。
【0098】
期間T5において、CPU1は、命令コードD3の次の命令コードD4に関する命令アドレス信号IFA(アドレスa2+12)を、命令キャッシュ3に入力する。しかし、命令キャッシュ3は、命令コードD3をCPU1に受け渡すまでは、命令コードD4に関する命令フェッチ要求を受け付けない。
【0099】
期間T6において、SDRAMコントローラ5は、リードコマンドREADをSDRAM8に入力する。また、命令コードD4に関するアクセス要求がSDRAMコントローラ5によって受け付けられ、SDRAMコントローラ5は、受領信号ACKを命令キャッシュ3に入力する。
【0100】
期間T7において、SDRAMコントローラ5は、プリチャージコマンドPREをSDRAM8に入力する。
【0101】
期間T8において、バースト転送が開始され、命令コードD3がSDRAM8からSDRAMコントローラ5へ転送される。
【0102】
期間T9において、命令コードD3がSDRAMコントローラ5から命令キャッシュ3へ転送される。その際、data ready信号DRが「H」とされる。また、命令コードD4がSDRAM8からSDRAMコントローラ5へ転送される。
【0103】
期間T10において、命令コードD4がSDRAMコントローラ5から命令キャッシュ3へ転送される。その際、data ready信号DRが「H」とされる。1ライン分の命令コードD1〜D4が揃ったので、命令キャッシュ3は、命令コードD1〜D4を所定のラインに登録する。
【0104】
また、命令コードD3が命令キャッシュ3からCPU1に転送される。その際、命令バリッド信号IVが「H」とされる。また、命令キャッシュ3は、命令コードD4に関する命令アドレス信号IFAを受け付け、受領信号AFICをCPU1に入力する。命令コードD4は命令キャッシュ3内に存在しているため、ヒット信号HITが「H」となる。
【0105】
期間T11において、命令コードD4が命令キャッシュ3から読み出されて、CPU1に転送される。その際、命令バリッド信号IVが「H」とされる。
【0106】
このように本実施の形態2に係るデータ処理装置によれば、中断ラインに係る命令コードD1〜D4のうちの一つがCPU1によって要求されたことを要因として、中断されていた命令コードD3,D4に関するバースト転送が再開される。従って、割り込み処理が終了した直後に元のプログラムに復帰しないような場合であっても、その後に中断ラインがアクセスされた際に、バースト転送を再開することができる。
【0107】
実施の形態3.
本実施の形態3では、上記実施の形態1,2とは異なる要因でバースト転送を再開する方法について説明する。本実施の形態3に係るデータ処理装置では、割り込み処理が実行されている途中でRTE命令が検出されたことを要因として、中断されていたバースト転送が再開される。以下、CPU1によってパイプライン処理が行われている場合を例にとり説明する。
【0108】
バースト転送の再開を説明する前に、まずパイプライン処理について説明する。図16は、パイプライン処理の一例を示す模式図である。命令フェッチステージIF、デコードステージD、命令実行ステージE、メモリアクセスステージM、及びライトバックステージWBがこの順に連続的に実行されることにより、パイプライン処理が実現されている。
【0109】
図17は、本実施の形態3に係るアドレス生成回路20の構成を示すブロック図である。本実施の形態3に係るアドレス生成回路20は、選択回路100を備えている。選択回路100には、命令アドレス信号IFAと、中断情報35のアドレス記述部35aに記述されている再開アドレスとが入力される。また、選択回路100にはRTE検出信号SRが入力されている。RTE検出信号SRは、パイプライン処理のデコードステージDでRTE命令がデコードされた場合に「H」となる。選択回路100は、RTE検出信号SRが「H」の場合は再開アドレスを選択し、「L」の場合は命令アドレス信号IFAを選択して、アドレス信号IAとして出力する。なお、図17では省略したが、本実施の形態3に係るアドレス生成回路20は、図6と同様に有効データ信号SSを生成するための構成を備えている。
【0110】
図18は、本実施の形態3に係る外部アクセス要求生成回路15の構成を示すブロック図である。本実施の形態3に係る外部アクセス要求生成回路15は、図4に示した構成に加えて、OR回路101を備えている。OR回路101の一方の入力端子にはRTE検出信号SRが入力され、他方の入力端子には命令フェッチ要求信号IFRが入力される。OR回路101の出力信号は、リクエスト生成回路22及びAND回路72に入力される。リクエスト生成回路22は、RTE検出信号SRが「H」でOR回路101から「H」が入力されたとしても、中断情報35のデータ位置記述部35bに「0000」と記述されている場合は、アクセス要求信号ARを出力しない。
【0111】
図19は、パイプライン処理が実行されている状況を示す図である。図19に示した命令X1〜X3と、図19には示していない命令X4とが、命令キャッシュ3の1ラインに格納されるものと仮定する。期間t1では、命令X1が命令フェッチステージIFで処理される。期間t2では、命令X1がデコードステージDで処理され、命令X2が命令フェッチステージIFで処理される。期間t3では、命令X1が命令実行ステージEで処理され、命令X2がデコードステージDで処理され、命令X3が命令フェッチステージIFで処理される。また、期間t3では、割り込み(割り込み命令Y1)が発生している。
【0112】
期間t4において、命令フェッチステージIFでは、命令X3に続く命令X4に先立って、割り込み命令Y1が優先的に処理される。その際、命令X4の先頭アドレスを中断情報35のアドレス記述部35aに記述しておく。命令X4については、期間t5以降に命令フェッチステージIFで処理される。そして、1ライン分のデータが揃った段階で、命令X1〜X4が命令キャッシュ3に登録される。
【0113】
また、期間t4において、デコードステージD及び命令実行ステージEでは、割り込み命令Y1が発生した時点(期間t3)で命令実行ステージEでの処理がまだ行われていない命令(この例の場合は命令X2,X3)の処理をそれぞれ保留し、割り込み命令Y1の処理に備える。その際、命令実行ステージEに関して、命令X2の先頭アドレスを戻り先番地として設定して、PSWとともに退避しておく。一方、割り込み命令Y1が発生した時点で命令実行ステージEでの処理がすでに完了している命令については、その後の処理が進められる。この例の場合、メモリアクセスステージMで命令X1が処理される。
【0114】
割り込み命令Y1は、期間t5においてデコードステージDで処理され、期間t6において命令実行ステージEで処理される。割り込み処理が終了した後は、戻り先番地としてアドレスが保持されていた命令X2の命令フェッチステージIFから、処理が再開される。このように、割り込み命令Y1が発生した時点で命令実行ステージEでの処理がまだ行われていない命令X2〜X4よりも、割り込み命令Y1を優先的に処理することにより、緊急度の高い割り込み処理を早期に開始することができる。例えば、命令X2,X3の実行処理に長時間を要する場合であっても、命令X2,X3の実行処理が完了するのを待ってから割り込み命令Y1の実行処理が開始されるわけではないため、割り込み命令Y1に対する実行処理を早期に開始することができる。
【0115】
但し、発生した割り込み命令Y1の優先度を、予め設定しておいた所定の優先度と比較し、割り込み命令Y1の優先度が所定の優先度以下である場合には、以下のような処理を行ってもよい。なお、優先度の設定及び比較については、後述する実施の形態5において詳細に説明する。
【0116】
図20は、パイプライン処理が実行されている状況を示す図である。期間t3において、優先度が所定の優先度以下である割り込み命令Y1が発生している。命令実行ステージEでは、割り込み命令Y1がフェッチされる前にすでにフェッチされていた命令X1〜X3が処理された後に、割り込み命令Y1が処理される。この場合、命令X4の先頭アドレスが戻り先番地として設定されて、PSWとともに退避される。デコードステージD、メモリアクセスステージM、及びライトバックステージWBについても同様である。発生した割り込み要求の緊急度がそれほど高くない場合に、割り込み命令Y1よりも先に命令X1〜X3を処理することにより、パイプラインを乱すことなく処理を進めることができ、割り込み処理に伴うペナルティをなくすことができる。即ち、割り込み処理の優先度に応じてパイプラインをキャンセルするか否かを選択することにより、割り込み処理を急ぐ場合にはパイプラインをキャンセルして割り込み処理を早急に処理でき、割り込み処理を急がない場合にはパイプラインをキャンセルしないことで割り込み処理に伴うペナルティを減らすことができ、全体として処理性能を高めることができる。
【0117】
以上のようにしてCPU1はパイプライン処理を実現しているわけであるが、パイプライン処理においては、RTE命令は、命令実行ステージEで処理される前にデコードステージDで処理される。従って、実際にRTE命令が命令実行ステージEで処理されるよりも前に、デコードステージDにおいてRTE命令を検出することができる。そこで、本実施の形態3に係るデータ処理装置は、割り込み処理が実行されている最中であっても、割り込み処理を終了させる命令(RTE命令)が検出されたことを要因として、中断されていたバースト転送を再開する。
【0118】
図21は、本実施の形態3に係るデータ処理装置に関して、中断されていたバースト転送を再開する際の信号・データの遷移を示すタイミングチャートである。ここでは、命令キャッシュ3の1ラインに格納される命令コードI1〜I4(アドレスA1〜A4)のうち、命令コードI1,I2に関する転送が完了した段階でバースト転送が中断されている場合を想定している。なお、図21において、命令コードI0(アドレスA0)は割り込みハンドラの命令コードである。
【0119】
期間T2において、デコードステージDでRTE命令が検出されたことにより、RTE検出信号SRが「H」となる。
【0120】
期間T3において、CPU1は、命令フェッチ要求信号IFR、及び命令コードI1に関する命令アドレス信号IFA(アドレスA1)を、命令キャッシュ3に入力する。命令コードI1に関する命令フェッチ要求は、期間T3において命令キャッシュ3によって受け付けられ、命令キャッシュ3は、受領信号AFICをCPU1に入力する。命令コードI1は中断情報35のデータ格納部35cに格納されているため、ミスヒット信号MISS及び有効データ信号SSが「H」となる。
【0121】
また、命令キャッシュ3は、アクセス要求信号AR及びバースト要求信号BRをSDRAMコントローラ5へ入力する。図6を参照して、選択回路31は、中断情報の35の再開アドレス(アドレスA3)を選択し、アドレス信号IAとして出力する。このアクセス要求、即ち命令コードI3に関するアクセス要求は、期間T3においてSDRAMコントローラ5によって受け付けられ、SDRAMコントローラ5は、受領信号ACKを命令キャッシュ3に入力する。
【0122】
期間T4において、命令コードI1が中断情報35のデータ格納部35cから読み出されて、CPU1に転送される。その際、命令バリッド信号IVが「H」とされる。また、CPU1は、命令コードI1の次の命令コードI2に関する命令アドレス信号IFA(アドレスA2)を、命令キャッシュ3に入力する。命令コードI2に関する命令フェッチ要求は、期間T4において命令キャッシュ3によって受け付けられ、命令キャッシュ3は、受領信号AFICをCPU1に入力する。命令コードI2は中断情報35のデータ格納部35cに格納されているため、ミスヒット信号MISS及び有効データ信号SSが「H」となる。
【0123】
SDRAMコントローラ5は、活性化コマンドACTをSDRAM8に入力する。また、命令キャッシュ3は、命令コードI3に続く命令コードI4に関するアドレス信号IA(アドレスA4)を、SDRAMコントローラ5に入力する。しかし、SDRAMコントローラ5は、次のアクセス要求を受け付け可能となるまでは、命令コードI4に関するアクセス要求を受け付けない。また、命令キャッシュ3は、最終要求信号LARをSDRAMコントローラ5に入力する。
【0124】
期間T5において、命令コードI2が中断情報35のデータ格納部35cから読み出されて、CPU1に転送される。その際、命令バリッド信号IVが「H」とされる。また、CPU1は、命令コードI2の次の命令コードI3に関する命令アドレス信号IFA(アドレスA3)を、命令キャッシュ3に入力する。命令コードI3に関する命令フェッチ要求は、期間T5において命令キャッシュ3によって受け付けられ、命令キャッシュ3は、受領信号AFICをCPU1に入力する。命令コードI3は命令キャッシュ3内に存在していないため、ミスヒット信号MISSが「H」となる。
【0125】
期間T6において、CPU1は、命令コードI3の次の命令コードI4に関する命令アドレス信号IFA(アドレスA4)を、命令キャッシュ3に入力する。しかし、命令キャッシュ3は、命令コードI3をCPU1に受け渡すまでは、命令コードI4に関する命令フェッチ要求を受け付けない。
【0126】
SDRAMコントローラ5は、リードコマンドREADをSDRAM8に入力する。また、命令コードI4に関するアクセス要求がSDRAMコントローラ5によって受け付けられ、SDRAMコントローラ5は、受領信号ACKを命令キャッシュ3に入力する。
【0127】
期間T7において、SDRAMコントローラ5は、プリチャージコマンドPREをSDRAM8に入力する。
【0128】
期間T8において、バースト転送が開始され、命令コードI3がSDRAM8からSDRAMコントローラ5へ転送される。
【0129】
期間T9において、命令コードI3がSDRAMコントローラ5から命令キャッシュ3へ転送される。その際、data ready信号DRが「H」とされる。また、命令コードI4がSDRAM8からSDRAMコントローラ5へ転送される。
【0130】
期間T10において、命令コードI4がSDRAMコントローラ5から命令キャッシュ3へ転送される。その際、data ready信号DRが「H」とされる。1ライン分の命令コードI1〜I4が揃ったので、命令キャッシュ3は、命令コードI1〜I4を所定のラインに登録する。
【0131】
また、命令コードI3が命令キャッシュ3からCPU1に転送される。その際、命令バリッド信号IVが「H」とされる。また、命令キャッシュ3は、命令コードI4に関する命令アドレス信号IFAを受け付け、受領信号AFICをCPU1に入力する。命令コードI4は命令キャッシュ3内に存在しているため、ヒット信号HITが「H」となる。
【0132】
期間T11において、命令コードI4が命令キャッシュ3から読み出されて、CPU1に転送される。その際、命令バリッド信号IVが「H」とされる。
【0133】
このように本実施の形態3に係るデータ処理装置によれば、RTE命令が検出されたことを要因として、中断されていた命令コードI3,I4に関するバースト転送が再開される。従って、割り込み処理がまだ実行されている最中であってもバースト転送を再開することができ、割り込み処理が完了した後に再開する場合と比較すると、バースト転送を早期に再開することができる。
【0134】
なお、図14に示したように複数の割り込み要求が発生した場合には、以下のように対応することができる。図22は、RTE検出信号SRを生成するための回路の構成を示すブロック図である。AND回路110の一方の入力端子には、RTE検出信号SRが入力され、他方の入力端子には、インバータ111によって反転された割り込み信号ISが入力される。かかる構成により、AND回路110は、割り込み信号ISが「L」の時にはRTE検出信号SRを出力し、割り込み信号ISが「H」の時にはRTE検出信号SRを出力しない。図18に示したOR回路101には、AND回路110から出力されたRTE検出信号SRが入力される。
【0135】
図14を参照して、第1の割り込み処理に関するRTE命令が検出されたとしても、それと同時に第2の割り込み要求が発生している。従って、図22に示したAND回路22からはRTE検出信号SRは出力されない。その結果、中断されていたバースト転送が再開されることなく、第2の割り込みハンドラの先頭番地へのジャンプが行われて、第2の割り込み処理が開始される。
【0136】
第2の割り込み処理に関するRTE命令が検出されると、その時点では次の割り込み要求が発生していない。そのため、図22に示したAND回路22からRTE検出信号SRが出力され、中断されていたバースト転送が再開される。その後、第2の割り込み処理に関するRTE命令が実行されることにより、メインプログラムへの復帰が行われる。
【0137】
実施の形態4.
図23は、本実施の形態4に係る命令キャッシュ3の記憶部17の構成を示す模式図である。上記実施の形態1〜3では、命令キャッシュ3は、中断ラインのみに関する中断情報35を、外部アクセス要求生成回路15内に保持していた。これに対して、本実施の形態4に係るデータ処理装置では、外部アクセス要求生成回路15が中断情報35を保持するのではなく、中断情報35と等価な情報が、命令キャッシュ3の記憶部17に記憶されている。
【0138】
記憶部17は複数のラインに分割されており、各ラインは、タグ部17a、バリッドビット17b、データ部17c、及びデータ位置記述部17dをそれぞれ有している。タグ部17aには登録データのタグ情報が記述されており、また、中断ラインに関しては、再開アドレスがタグ部17aに記述されている。
【0139】
データ部17cには、登録データが格納されている。中断ラインに関しても、バースト転送が中断される前に命令キャッシュ3に転送されてきたデータが、データ部17cに格納されている。
【0140】
データ位置記述部17dは、中断情報35のデータ位置記述部35bと同様に、データ部17cの128ビットを各32ビットの4つの領域に分割して、どの領域に有効なデータが格納されているかが記述されている。中断ラインではないラインに係るデータ位置記述部17dには、「1111」が記述されている。
【0141】
上記実施の形態1〜3に係るデータ処理装置において本実施の形態4に係る記憶部17が採用された場合、命令キャッシュ3は、記憶部17のタグ部17aに記述されている再開アドレスを参照することにより、中断された箇所の続きからバースト転送を再開する。
【0142】
このように、外部アクセス要求生成回路15が中断情報35を保持するのではなく、中断情報35と等価な情報を命令キャッシュ3の記憶部17に記憶しておくことによっても、上記実施の形態1〜3と同様の動作を実現でき、同様の効果が得られる。
【0143】
なお、本実施の形態4に係る発明は、後述の実施の形態5,6に係るデータ処理装置にも適用可能である。
【0144】
実施の形態5.
図24は、本発明の実施の形態5に係るデータ処理装置の構成を示すブロック図である。中断許可信号SFが、ICU11から命令キャッシュ3に入力されている。
【0145】
図25は、本実施の形態5に係る命令キャッシュ3の構成を示すブロック図である。中断許可信号SF及びリクエストキャンセル信号RCが、中断許可判定回路300に入力されている。リクエストキャンセル信号RCは、中断許可判定回路300から出力されて、外部アクセス要求生成回路15に入力されている。
【0146】
図26は、中断許可判定回路300の構成を示すブロック図である。AND回路120の一方の入力端子にはリクエストキャンセル信号RCが入力され、他方の入力端子には中断許可信号SFが入力される。かかる構成により、AND回路120は、中断許可信号SFが「H」の時にはリクエストキャンセル信号RCを出力し、中断許可信号SFが「L」の時にはリクエストキャンセル信号RCを出力しない。
【0147】
図27は、本実施の形態5に係るICU11の第1の構成を示すブロック図である。図27に示すICU11は、割り込み検出回路350と、レジスタ36,41a〜41dと、比較回路37と、選択回路40とを備えている。割り込み検出回路350には、少なくとも一つの割り込み要求IRが入力される。割り込み検出回路350は、エッジ指定又はレベル指定によって割り込み要求IRの発生を検出し、割り込み信号IS及び割り込み要求IRを出力する。
【0148】
選択回路40には、割り込み検出回路350から割り込み要求IRが入力される。レジスタ41a〜41dには、様々な割り込み要因に応じて、割り込みの優先度が予め設定されている。選択回路40は、レジスタ41a〜41dの内容を参照することにより、割り込み検出回路350から入力された割り込み要求IRに関する優先度SPを求め、その優先度SPを比較回路37の一方の入力端子に入力する。割り込み検出回路350から複数の割り込み要求IRが入力される場合は、選択回路40は、レジスタ41a〜41dの内容を参照することにより、複数の割り込み要求IRの中から、割り込みの優先度が最も高い割り込み要求IRを選択する。そして、その選択された割り込み要求IRに関する優先度SPを、比較回路37の一方の入力端子に入力する。
【0149】
レジスタ36には、レジスタ41a〜41dに設定されている優先度と同種の、所定の優先度SP0が予め設定されている。優先度SP0は、比較回路37の他方の入力端子に入力されている。比較回路37は、優先度SPと優先度SP0とを比較することにより、優先度SPが優先度SP0よりも高い場合に、「H」の中断許可信号SFを出力する。優先度SPが優先度SP0以下である場合には、中断許可信号SFは出力されない。
【0150】
図28は、本実施の形態5に係るICU11の第2の構成を示すブロック図である。図28に示すICU11は、割り込み検出回路350と、レジスタ46と、選択回路45とを備えている。割り込み検出回路350には割り込み要求IRが入力される。割り込み検出回路350は、割り込み信号IS及び割り込み要求IRを出力する。
【0151】
レジスタ46では、様々な割り込み要求IR0〜IRnごとに、「H」又は「L」の中断許可ビットが予め設定されている。選択回路45には、割り込み検出回路350から割り込み要求IRが入力される。選択回路45は、割り込み検出回路350から入力された割り込み要求IRに関する中断許可ビットをレジスタ46から読み出し、そのビット内容(「H」又は「L」)を中断許可信号SFとして出力する。
【0152】
このように本実施の形態5に係るデータ処理装置によれば、早急な対応が真に必要な割り込み要求IRが発生した場合にのみ、バースト転送を中断させることができる。従って、早急な対応が必要でない割り込み要求IRが発生した場合にもバースト転送が中断されてメインプログラムの処理に必要以上の遅延をきたすことを、回避することができる。
【0153】
実施の形態6.
上記実施の形態1〜5では、割り込み命令が検出された場合にバースト転送を中断することについて説明したが、同様の考えに基づき、分岐命令が検出された場合にバースト転送を中断することもできる。
【0154】
第1のプログラムを実行する過程で、SDRAM8からSDRAMコントローラ5を介して命令キャッシュ3にバースト転送(説明の便宜上、以下「第1のバースト転送」と称す)が行われている状況を考える。第1のバースト転送が行われている最中にCPU1が分岐命令(説明の便宜上、以下「第1の分岐命令」と称す)を検出すると、データ処理装置は、第1のバースト転送を中断して、分岐先の第2のプログラムの実行を開始する。その際、中断情報35の作成が行われる。そして、第2のプログラムの実行が完了すると、データ処理装置は、中断情報35の内容に基づいて、中断されていた箇所から第1のバースト転送を再開する。
【0155】
ここで、第1のプログラムがメインプログラムで第2のプログラムがメインプログラムのサブルーチンである場合など、第2のプログラムの実行が終了した後に第1のプログラムに復帰する可能性が高い場合にのみ、中断情報35の作成・保持を行ってもよい。第2のプログラムの実行が終了した後に第1のプログラムに復帰しない場合には、中断されていた第1のバースト転送の再開、及び中断情報35の作成・保持は無駄になるため、この無駄を予め解消するためである。
【0156】
また、第2のプログラムを実行する過程でバースト転送(以下「第2のバースト転送」と称す)が行われている最中に、ネスティングによって他の分岐命令(以下「第2の分岐命令」と称す)が検出された場合には、以下の処理が行われる。即ち、データ処理装置は、第2のバースト転送を中断して、分岐先の第3のプログラムの実行を開始する。その際、新たな中断情報35の作成が行われる。そして、第3のプログラムの実行が完了すると、データ処理装置は、新たな中断情報35の内容に基づいて、中断されていた箇所から第2のバースト転送を再開する。
【0157】
図29は、逐次作成される複数の中断情報を保持しておくためのスタック領域50を示す模式図である。分岐命令の検出により新たな中断情報35が作成される度に、作成された中断情報35をスタック領域50の最上段503にプッシュダウンする。また、分岐先のプログラムの実行が終了して元のプログラムに復帰する度に、最上段503の中断情報35をスタック領域50からポップアップする。図29に示した例によると、スタック領域50は、最下段500から最上段503までの4段構成となっているため、4つの中断情報35を保持しておくことが可能である。
【0158】
このように本実施の形態6に係るデータ処理装置によれば、バースト転送が行われている最中に分岐命令が検出された場合に、バースト転送の完了を待ってから分岐先のプログラムの実行を開始するのではなく、バースト転送を強制的に中断して、分岐先のプログラムを優先的に実行する。従って、分岐先のプログラムを早期に開始することができる。
【0159】
【発明の効果】
この発明のうち請求項1に係るものによれば、緊急度の高い割り込み要求に対する応答性を高めることができる。
【0160】
また、この発明のうち請求項2に係るものによれば、割り込み要求の発生によって中断されていたバースト転送を、割り込み処理の完了によって自動的に再開することができる。
【0161】
また、この発明のうち請求項3に係るものによれば、元のプログラムに復帰しない場合にはバースト転送が再開されないため、バースト転送の再開に伴う無駄な動作を回避できすることができる。
【0162】
また、この発明のうち請求項4に係るものによれば、一の割り込み処理が終了した後に、バースト転送の再開よりも優先して次の割り込み処理が実行されるため、次の割り込み処理を早期に開始することができる。
【0163】
また、この発明のうち請求項5に係るものによれば、割り込み処理が終了した直後に元のプログラムに復帰しないような場合であっても、中断に係るラインが処理装置によってアクセスされた際に、バースト転送を適切に再開することができる。
【0164】
また、この発明のうち請求項6に係るものによれば、割り込み処理がまだ実行されている最中であってもバースト転送を再開することができ、割り込み処理が完了した後に再開する場合と比較すると、バースト転送を早期に再開することができる。
【0165】
また、この発明のうち請求項7に係るものによれば、一の割り込み処理が終了した後に、バースト転送の再開よりも優先して次の割り込み処理が実行されるため、次の割り込み処理を早期に開始することができる。
【0166】
また、この発明のうち請求項8に係るものによれば、バースト転送が中断される前に第2の記憶装置に転送されていたデータに関して、重複した読み出し及び転送動作を回避することができる。
【0167】
また、この発明のうち請求項9に係るものによれば、バースト転送が中断される前に第2の記憶装置に転送されていたデータに関して、重複した読み出し及び転送動作を回避することができる。
【0168】
また、この発明のうち請求項10に係るものによれば、早急な対応が真に必要な割り込み要求が発生した場合にのみ、バースト転送を中断させることができる。従って、早急な対応が必要でない割り込み要求が発生した場合にもバースト転送が中断されてメインプログラムの処理に必要以上の遅延をきたすことを、回避することができる。
【0169】
また、この発明のうち請求項11に係るものによれば、早急な対応が真に必要な割り込み要求が発生した場合にのみ、バースト転送を中断させることができる。従って、早急な対応が必要でない割り込み要求が発生した場合にもバースト転送が中断されてメインプログラムの処理に必要以上の遅延をきたすことを、回避することができる。
【0170】
また、この発明のうち請求項12に係るものによれば、割り込み命令を優先的に実行することにより、緊急度の高い割り込み処理を早期に開始することができる。
【0171】
また、この発明のうち請求項13に係るものによれば、割り込み要求の緊急度がそれほど高くない場合には、割り込み命令がフェッチされる前にすでにフェッチされていた命令を先に実行する。従って、パイプラインを乱すことなく処理を進めることができ、割り込み処理に伴うペナルティをなくすことができる。
【0172】
また、この発明のうち請求項14に係るものによれば、割り込み要求の優先度が所定の優先度よりも高い場合に、割り込み命令を優先的に実行することにより、緊急度の高い割り込み処理を早期に開始することができる。一方、割り込み要求の緊急度がそれほど高くない場合には、割り込み命令がフェッチされる前にすでにフェッチされていた命令を先に実行する。従って、パイプラインを乱すことなく処理を進めることができ、割り込み処理に伴うペナルティをなくすことができる。
【0173】
また、この発明のうち請求項15に係るものによれば、緊急度の高い割り込み要求に対する応答性を高めることができる。
【0174】
また、この発明のうち請求項16に係るものによれば、第1のバースト転送が行われている最中に第1の分岐命令が検出された場合には、第1のバースト転送の完了を待ってから第2のプログラムの実行を開始するのではなく、第1のバースト転送を強制的に中断して、第2のプログラムを優先的に実行する。従って、第2のプログラムを早期に開始することができる。
【0175】
また、この発明のうち請求項17に係るものによれば、第2のバースト転送が行われている最中に第2の分岐命令が検出された場合には、第2のバースト転送の完了を待ってから第3のプログラムの実行を開始するのではなく、第2のバースト転送を強制的に中断して、第3のプログラムを優先的に実行する。従って、第3のプログラムを早期に開始することができる。
【図面の簡単な説明】
【図1】本発明の実施の形態1に係るデータ処理装置の構成を示すブロック図である。
【図2】命令キャッシュ及びSDRAMコントローラを示すブロック図である。
【図3】命令キャッシュの構成を示すブロック図である。
【図4】外部アクセス要求生成回路の構成を示すブロック図である。
【図5】リクエストカウント回路の構成を示すブロック図である。
【図6】アドレス生成回路の構成を示すブロック図である。
【図7】命令コード選択回路の構成を示すブロック図である。
【図8】リクエストキャンセル信号生成回路の構成を示すブロック図である。
【図9】本発明の実施の形態1に係るデータ処理装置に関して、信号・データの遷移を示すタイミングチャートである。
【図10】本発明の実施の形態1に係るデータ処理装置に関して、信号・データの遷移を示すタイミングチャートである。
【図11】中断情報を示す図である。
【図12】メインプログラムの実行中に割り込み要求が発生した場合の、第1の処理フローを示す模式図である。
【図13】メインプログラムの実行中に割り込み要求が発生した場合の、第2の処理フローを示す模式図である。
【図14】メインプログラムの実行中に割り込み要求が発生した場合の、第3の処理フローを示す模式図である。
【図15】本発明の実施の形態2に係るデータ処理装置に関して、信号・データの遷移を示すタイミングチャートである。
【図16】パイプライン処理の一例を示す模式図である。
【図17】本発明の実施の形態3に係るアドレス生成回路の構成を示すブロック図である。
【図18】本発明の実施の形態3に係る外部アクセス要求生成回路の構成を示すブロック図である。
【図19】パイプライン処理が実行されている状況を示す図である。
【図20】パイプライン処理が実行されている状況を示す図である。
【図21】本発明の実施の形態3に係るデータ処理装置に関して、信号・データの遷移を示すタイミングチャートである。
【図22】RTE検出信号を生成するための回路の構成を示すブロック図である。
【図23】本発明の実施の形態4に係る命令キャッシュの記憶部の構成を示す模式図である。
【図24】本発明の実施の形態5に係るデータ処理装置の構成を示すブロック図である。
【図25】本発明の実施の形態5に係る命令キャッシュの構成を示すブロック図である。
【図26】中断許可判定回路の構成を示すブロック図である。
【図27】本発明の実施の形態5に係るICUの第1の構成を示すブロック図である。
【図28】本発明の実施の形態5に係るICUの第2の構成を示すブロック図である。
【図29】本発明の実施の形態6に係るデータ処理装置に関して、スタック領域を示す模式図である。
【符号の説明】
1 CPU、2 オペランドキャッシュ、3 命令キャッシュ、4 外部アクセスコントローラ、5 SDRAMコントローラ、6 DRAMコントローラ、7 ROMコントローラ、8 SDRAM、9 DRAM、10 ROM、11ICU、12 リクエストキャンセル信号生成回路、15 外部アクセス要求生成回路、16 命令コード選択回路、17 記憶部、20 アドレス生成回路、21 リクエストカウント回路、22 リクエスト生成回路、30 一致検出回路、31,40,45,82,83,100,182,183 選択回路、32 デコーダ、35 中断情報、36,41a〜41d レジスタ、37 比較回路、300 中断許可判定回路、350 割り込み検出回路。
【発明の属する技術分野】
この発明は、データ処理装置に関し、特に、キャッシュメモリを備えるデータ処理装置に関するものである。
【0002】
【従来の技術】
キャッシュメモリを備えるデータ処理装置においては、CPUが必要とするデータがキャッシュメモリ内に存在しない場合、そのデータを含む、キャッシュメモリの1ライン分のデータが、メインメモリからキャッシュメモリのラインに転送される。例えば、キャッシュメモリの1ラインが128ビットで、キャッシュメモリとメインメモリとが32ビットのデータバスで接続されている場合は、4回のバスサイクルによって、メインメモリからキャッシュメモリへの転送が行われる。キャッシュメモリの1ライン分のデータは、バースト転送によって連続して転送される。
【0003】
【発明が解決しようとする課題】
バースト転送が行われている最中に割り込み要求が発生した場合、従来のデータ処理装置では、バースト転送が完了するのを待ってから、割り込み処理が開始される。従って、割り込み要求に対する応答が遅くなるという問題がある。同様に、バースト転送が行われている最中に他のプログラムへの分岐命令が検出された場合にも、従来のデータ処理装置では、バースト転送が完了するのを待ってから、分岐先のプログラムの命令フェッチが開始される。従って、分岐先のプログラムの実行開始が遅れるという問題がある。しかも、割り込み処理が完了した後、又は分岐先のプログラムの実行が完了した後に元のプログラムに復帰しない場合には、キャッシュメモリに不要なデータが存在することになるという問題もある。
【0004】
本発明はかかる問題を解決するために成されたものであり、メインメモリからキャッシュメモリへのバースト転送が行われている最中に割り込み要求が発生した場合等に、割り込み処理等を優先的に開始することが可能なデータ処理装置を得ることを目的とするものである。
【0005】
【課題を解決するための手段】
この発明のうち請求項1に記載のデータ処理装置は、処理装置と、第1の記憶装置と、処理装置と第1の記憶装置との間に接続された第2の記憶装置とを備え、処理装置が必要とする所定データが第2の記憶装置内に存在しない場合、所定データを含む、第2の記憶装置の1ライン分の複数のデータが、第1の記憶装置から読み出されてバースト転送によって第2の記憶装置のラインに転送されるデータ処理装置において、バースト転送が行われている最中に割り込み要求が発生した場合、バースト転送が中断されて、割り込み処理が開始されるものである。
【0006】
また、この発明のうち請求項2に記載のデータ処理装置は、請求項1に記載のデータ処理装置であって、割り込み処理が完了すると、中断されていたバースト転送が再開されることを特徴とするものである。
【0007】
また、この発明のうち請求項3に記載のデータ処理装置は、請求項2に記載のデータ処理装置であって、割り込み処理が完了した後に、バースト転送が中断された元のプログラムに復帰する場合にのみ、中断されていたバースト転送が再開されることを特徴とするものである。
【0008】
また、この発明のうち請求項4に記載のデータ処理装置は、請求項2又は3に記載のデータ処理装置であって、複数の割り込み要求が発生した場合は、複数の割り込み処理が順に実行され、最後の割り込み処理が完了すると、中断されていたバースト転送が再開されることを特徴とするものである。
【0009】
また、この発明のうち請求項5に記載のデータ処理装置は、請求項1に記載のデータ処理装置であって、割り込み処理が完了した後に、バースト転送の中断に係るラインが処理装置によってアクセスされると、中断されていたバースト転送が再開されることを特徴とするものである。
【0010】
また、この発明のうち請求項6に記載のデータ処理装置は、請求項1に記載のデータ処理装置であって、割り込み処理が実行されている途中で、割り込み処理を終了させる命令が検出されると、中断されていたバースト転送が再開されることを特徴とするものである。
【0011】
また、この発明のうち請求項7に記載のデータ処理装置は、請求項6に記載のデータ処理装置であって、複数の割り込み要求が発生した場合は、複数の割り込み処理が順に実行され、最後の割り込み処理を終了させる命令が検出されると、中断されていたバースト転送が再開されることを特徴とするものである。
【0012】
また、この発明のうち請求項8に記載のデータ処理装置は、請求項2〜7のいずれか一つに記載のデータ処理装置であって、バースト転送が中断された箇所に関する情報が保持されており、再開されたバースト転送においては、情報に基づいて、複数のデータのうち、バースト転送の中断に起因して第1の記憶装置から読み出されなかったもののみが、第1の記憶装置から読み出されて転送されることを特徴とするものである。
【0013】
また、この発明のうち請求項9に記載のデータ処理装置は、請求項2〜7のいずれか一つに記載のデータ処理装置であって、第2の記憶装置は複数のラインを有しており、複数のラインは、自身がバースト転送の中断に係るラインである場合に、バースト転送が中断された箇所に関する情報をそれぞれ持ち、再開されたバースト転送においては、情報に基づいて、複数のデータのうち、バースト転送の中断に起因して第1の記憶装置から読み出されなかったもののみが、第1の記憶装置から読み出されて転送されることを特徴とするものである。
【0014】
また、この発明のうち請求項10に記載のデータ処理装置は、請求項1〜9のいずれか一つに記載のデータ処理装置であって、割り込み要因に関連する所定の優先度が設定されたレジスタをさらに備え、割り込み要求の優先度が所定の優先度よりも高い場合にのみ、バースト転送が中断されることを特徴とするものである。
【0015】
また、この発明のうち請求項11に記載のデータ処理装置は、請求項1〜9のいずれか一つに記載のデータ処理装置であって、バースト転送の中断を許可するか否かが割り込み要因ごとに設定されたレジスタをさらに備え、割り込み要求の割り込み要因が、バースト転送の中断を許可すると設定された割り込み要因である場合にのみ、バースト転送が中断されることを特徴とするものである。
【0016】
また、この発明のうち請求項12に記載のデータ処理装置は、請求項1〜9のいずれか一つに記載のデータ処理装置であって、処理装置は、少なくともフェッチステージ及び実行ステージを有するパイプライン処理を実現しており、割り込み要求が発生した場合は、割り込み要求に対応する割り込み命令がフェッチされる前にすでにフェッチされて、かつまだ実行されていない命令を実行するよりも前に、割り込み命令が実行されることを特徴とするものである。
【0017】
また、この発明のうち請求項13に記載のデータ処理装置は、請求項1〜9のいずれか一つに記載のデータ処理装置であって、処理装置は、少なくともフェッチステージ及び実行ステージを有するパイプライン処理を実現しており、割り込み要求の優先度が所定の優先度以下である場合は、割り込み要求に対応する割り込み命令がフェッチされる前にすでにフェッチされていた命令が実行された後に、割り込み命令が実行されることを特徴とするものである。
【0018】
また、この発明のうち請求項14に記載のデータ処理装置は、処理装置と、第1の記憶装置と、処理装置と第1の記憶装置との間に接続された第2の記憶装置とを備え、処理装置が必要とする所定データが第2の記憶装置内に存在しない場合、所定データを含む、第2の記憶装置の1ライン分の複数のデータが、第1の記憶装置から読み出されてバースト転送によって第2の記憶装置のラインに転送されるデータ処理装置において、データ処理装置は、割り込み要因に関連する所定の優先度が設定されたレジスタをさらに備え、処理装置は、少なくともフェッチステージ及び実行ステージを有するパイプライン処理を実現しており、発生した割り込み要求の優先度が所定の優先度以下である場合は、割り込み要求に対応する割り込み命令がフェッチされる前にすでにフェッチされていた命令が実行された後に、割り込み命令が実行され、割り込み要求の優先度が所定の優先度よりも高い場合は、割り込み要求に対応する割り込み命令がフェッチされる前にすでにフェッチされて、かつまだ実行されていない命令を実行するよりも前に、割り込み命令が実行されることを特徴とするものである。
【0019】
また、この発明のうち請求項15に記載のデータ処理装置は、請求項14に記載のデータ処理装置であって、バースト転送が行われている最中に割り込み要求が発生した場合、バースト転送が中断されて、割り込み処理が開始されることを特徴とするものである。
【0020】
また、この発明のうち請求項16に記載のデータ処理装置は、処理装置と、第1の記憶装置と、処理装置と第1の記憶装置との間に接続された第2の記憶装置とを備え、処理装置が必要とする所定データが第2の記憶装置内に存在しない場合、所定データを含む、第2の記憶装置の1ライン分の複数のデータが、第1の記憶装置から読み出されて第2の記憶装置のラインにバースト転送されるデータ処理装置において、第1のプログラムを実行する過程で第1のバースト転送が行われている最中に第1の分岐命令が検出された場合、第1のバースト転送が中断されて、分岐先の第2のプログラムが実行され、第2のプログラムが、第1のプログラムに復帰する可能性の高いプログラムである場合に、第1のバースト転送が中断された箇所に関する第1の情報が保持され、第2のプログラムの実行が完了すると、第1の情報に基づいて、中断されていた第1のバースト転送が再開されるものである。
【0021】
また、この発明のうち請求項17に記載のデータ処理装置は、請求項16に記載のデータ処理装置であって、第2のプログラムを実行する過程で第2のバースト転送が行われている最中に第2の分岐命令が検出された場合、第2のバースト転送が中断されて、分岐先の第3のプログラムが実行され、第3のプログラムが、第2のプログラムに復帰する可能性の高いプログラムである場合に、第2のバースト転送が中断された箇所に関する第2の情報が保持され、第3のプログラムの実行が完了すると、第2の情報に基づいて、中断されていた第2のバースト転送が再開されることを特徴とするものである。
【0022】
【発明の実施の形態】
実施の形態1.
図1は、本発明の実施の形態1に係るデータ処理装置の構成を示すブロック図である。図1に示すように、本実施の形態1に係るデータ処理装置は、CPU1と、オペランドキャッシュ(一般的に「データキャッシュ」と称される)2と、命令キャッシュ3とを備えている。CPU1は、リクエストキャンセル信号生成回路12を有している。また、データ処理装置は、外部メモリ(SDRAM8、DRAM9、及びROM10)とのアクセスを制御するためのコントローラ(外部アクセスコントローラ)4を備えている。外部アクセスコントローラ4は、SDRAMコントローラ5と、DRAMコントローラ6と、ROMコントローラ7とを有している。さらに、データ処理装置は、外付け又は内蔵されたモジュールからの割り込み要求IRを受け付けて、割り込み信号ISをCPU1に入力する割り込みコントローラ(ICU)11を備えている。
【0023】
CPU1と命令キャッシュ3との間で授受される信号について説明する。命令フェッチ要求信号IFRは、CPU1が命令キャッシュ3に対して命令フェッチを要求していることを示す信号である。命令アドレス信号IFAは、CPU1が要求している命令コードのアドレスを示す信号である。受領信号AFICは、命令キャッシュ3がCPU1からの命令フェッチ要求を受け付けたことを示す信号である。命令コードRICは、命令キャッシュ3からCPU1に転送される命令コードである。命令バリッド信号IVは、命令キャッシュ3からCPU1に有効な命令コードが転送されていることを示す信号である。リクエストキャンセル信号RCは、バースト転送の中断要求を示す信号である。
【0024】
CPU1とオペランドキャッシュ2との間で授受される信号について説明する。オペランドフェッチ要求信号OFRは、CPU1がオペランドキャッシュ2に対してオペランドフェッチを要求していることを示す信号である。オペランドアドレス信号OFAは、CPU1が要求しているオペランドのアドレスを示す信号である。受領信号AFOCは、オペランドキャッシュ2がCPU1からのオペランドフェッチ要求を受け付けたことを示す信号である。リードオペランドROは、オペランドキャッシュ2からCPU1に転送されるオペランドである。オペランドバリッド信号OVは、オペランドキャッシュ2からCPU1に有効なオペランドが転送されていることを示す信号である。ライトオペランドWOは、CPU1からオペランドキャッシュ2に転送されるオペランドである。
【0025】
以下、命令キャッシュ3とSDRAMコントローラ5との関係に着目して、本発明に係るデータ処理装置について説明する。命令キャッシュ3とDRAMコントローラ6又はROMコントローラ7との関係、及び、オペランドキャッシュ2とSDRAMコントローラ5、DRAMコントローラ6又はROMコントローラ7との関係も基本的には同様であるため、説明は省略する。
【0026】
図2は、命令キャッシュ3及びSDRAMコントローラ5を示すブロック図である。命令キャッシュ3とSDRAMコントローラ5との間で授受される信号について説明する。アドレス信号IAは、CPU1が要求している命令コードのアドレスを示す信号であり、命令キャッシュ3から図1に示したアドレスバスABを介してSDRAMコントローラ5に入力される。アクセス要求信号ARは、命令キャッシュ3がSDRAM8へのアクセスを要求していることを示す信号である。バースト要求信号BRは、SDRAM8から命令キャッシュ3へのデータ転送をバースト転送によって行うことを要求する信号である。バースト要求信号BRが「H(High)」の場合はバースト転送が指定され、「L(Low)」の場合は単発転送が指定される。
【0027】
最終要求信号LARは、バースト転送が指定されている場合に有効であり、バースト転送における最終のアクセス要求を示す信号である。受領信号ACKは、SDRAMコントローラ5が命令キャッシュ3からのアクセス要求を受け付けたことを示す信号である。data ready信号DRは、SDRAMコントローラ5から命令キャッシュ3に有効なデータが転送されていることを示す信号である。リードデータRDは、SDRAMコントローラ5から図1に示したデータバスRDBを介して命令キャッシュ3に転送されるデータである。
【0028】
SDRAMコントローラ5は、アドレス信号IA及び制御信号CS,RAS,CAS,WEを、図1に示したアドレス・コントロールバスACBを介してSDRAM8に入力する。また、SDRAMコントローラ5及びSDRAM8は、図1に示したデータバスDBを介して、データDQの授受を行う。
【0029】
図3は、命令キャッシュ3の構成を示すブロック図である。命令キャッシュ3は、外部アクセス要求生成回路15と、命令コード選択回路16と、記憶部17とを備えている。記憶部17は複数のラインに分割されており、各ラインは、タグ部17a、バリッドビット17b、及びデータ部17cをそれぞれ有している。データ部17cにはキャッシュ登録されたデータ(登録データ)が記憶されており、タグ部17aには登録データのタグ情報が記憶されている。タグ部17a及びデータ部17cは、バリッドビット17bが「H」のラインのみ有効である。
【0030】
外部アクセス要求生成回路15には、命令フェッチ要求信号IFR、リクエストキャンセル信号RC、命令アドレス信号IFA、受領信号ACK、ヒット信号HIT、及びミスヒット信号MISSが入力される。CPU1が要求している命令コードが命令キャッシュ3内に存在している場合(即ちヒットの場合)、ヒット信号HITは「H」となり、ミスヒット信号MISSは「L」となる。一方、CPU1が要求している命令コードが命令キャッシュ3内に存在していない場合(即ちミスヒットの場合)、ミスヒット信号MISSは「H」となり、ヒット信号HITは「L」となる。外部アクセス要求生成回路15からは、アドレス信号IA、アクセス要求信号AR、バースト要求信号BR、最終要求信号LAR、及び有効データ信号SSが出力される。有効データ信号SSについては後述する。
【0031】
命令コード選択回路16には、命令フェッチ要求信号IFR、有効データ信号SS、ヒット信号HIT、及びミスヒット信号MISSが入力される。また、命令コード選択回路16には、ヒットの場合は、データ部17cから読み出された命令コードICが入力され、ミスヒットの場合は、SDRAM8から読み込まれた命令コードICが入力される。命令コード選択回路16からは、命令コードRICが出力される。
【0032】
記憶部17には、命令アドレス信号IFA及び命令コードICが入力される。記憶部17からは、ヒット信号HIT、ミスヒット信号MISS、及び命令コードICが出力される。
【0033】
図4は、図3に示した外部アクセス要求生成回路15の構成を示すブロック図である。外部アクセス要求生成回路15は、アドレス生成回路20と、リクエストカウント回路21と、リクエスト生成回路22と、インバータ70,71と、AND回路72,73と、OR回路74とを備えている。アドレス生成回路20には、中断情報35及び命令アドレス信号IFAが入力される。中断情報35については後述する。アドレス生成回路20からは、アドレス信号IA及び有効データ信号SSが出力される。バースト転送が行われる場合、アドレス生成回路20は、アドレス信号IAによって示されるアドレスを、図1に示したデータバスRDBのバスサイズに応じて適宜インクリメントする。
【0034】
リクエストカウント回路21には、中断情報35、命令アドレス信号IFA、有効データ信号SS、及び受領信号ACKが入力される。リクエストカウント回路21からは、信号F1,F2が出力される。信号F1,F2については後述する。
【0035】
リクエスト生成回路22には、信号F1、命令フェッチ要求信号IFR、ミスヒット信号MISS、インバータ70によって反転されたヒット信号HIT、及びインバータ71によって反転されたリクエストキャンセル信号RCが入力される。リクエスト生成回路22からは、アクセス要求信号ARが出力される。リクエスト生成回路22は、ミスヒットの場合にアクセス要求信号ARを出力し、ヒットの場合にはアクセス要求信号ARを出力しない。
【0036】
AND回路72には、命令フェッチ要求信号IFR及び信号COが入力される。信号COは、命令キャッシュ3がキャッシュオンの状態(即ち命令キャッシュ3を使用することが可能な状態)の時に「H」となる信号である。AND回路72からは、バースト要求信号BRが出力される。
【0037】
AND回路73には、バースト要求信号BR及び信号F2が入力される。OR回路74には、AND回路73の出力信号と、リクエストキャンセル信号RCとが入力される。OR回路74からは、最終要求信号LARが出力される。
【0038】
図5は、図4に示したリクエストカウント回路21の構成を示すブロック図である。リクエストカウント回路21は、カウンタ25を備えている。有効データ信号SS、中断情報35、及び命令アドレス信号IFAに基づいて、カウンタ25には、バースト転送が継続される残りの回数(残りカウント数)が設定される。この残りカウント数は、受領信号ACKが入力されるごとに1ずつデクリメントされる。信号F1は、残りカウント数が「0」になるまでは「H」であり、残りカウント数が「0」になると「L」になる。図4に示したリクエスト生成回路22は、リクエストカウント回路21から「L」の信号F1が入力されると、アクセス要求信号ARの出力を停止する。
【0039】
信号F2は、残りカウント数が「1」になるまでは「L」であり、残りカウント数が「1」になると「H」になる。図4に示したAND回路73及びOR回路74は、信号F2が「L」から「H」に遷移したことを受けて、最終要求信号LARを出力する。
【0040】
図6は、図4に示したアドレス生成回路20の構成を示すブロック図である。アドレス生成回路20は、一致検出回路30と、選択回路31と、デコーダ32と、AND回路80〜83,85と、OR回路84とを備えている。一致検出回路30の一方の入力端子には、所定ビット数(ここでは32ビットとする)の命令アドレス信号IFAの第0〜第27ビット(以下[0:27]と表記する)が入力され、他方の入力端子には、中断情報35のアドレス記述部35aに記述されている再開アドレスが入力される。中断情報35の詳細については後述する。一致検出回路30からは、一方の入力端子に入力されたデータと他方の入力端子に入力されたデータとが互いに一致すれば「H」で、一致しなければ「L」の検出結果が出力される。
【0041】
選択回路31には、命令アドレス信号IFAと、中断情報35の再開アドレスとが入力される。選択回路31は、一致検出回路30から出力された検出結果が「H」の場合は中断情報の35の再開アドレスを選択し、「L」の場合は命令アドレス信号IFAを選択して、アドレス信号IAとして出力する。
【0042】
デコーダ32には、命令アドレス信号IFAの[28:29]が入力される。デコーダ32は、命令アドレス信号IFAの[28:29]が「00」である場合は、AND回路80の一方の入力端子に「H」を入力する。同様に、AND回路81,82,83の各一方の入力端子には、命令アドレス信号IFAの[28:29]が「01」「10」「11」の場合に、それぞれ「H」が入力される。
【0043】
AND回路80の他方の入力端子には、中断情報35のデータ位置記述部35bの第0ビットの内容に対応して、「H」又は「L」が入力される。具体的に、第0ビットが「1」の場合は「H」が入力され、「0」の場合は「L」が入力される。同様に、AND回路81,82,83の各他方の入力端子には、中断情報35のデータ位置記述部35bの第1,第2,第3ビットの内容に対応して、それぞれ「H」又は「L」が入力される。
【0044】
OR回路84には、AND回路80〜83の各出力信号が入力される。AND回路85の一方の入力端子には、一致検出回路30から出力された検出結果が入力され、他方の入力端子には、OR回路84の出力信号が入力される。AND回路85からは、有効データ信号SSが出力される。有効データ信号SSが「H」である場合は、CPU1が要求している命令コードが中断情報35のデータ格納部35c内に存在していることになる。
【0045】
図7は、図3に示した命令コード選択回路16の構成を示すブロック図である。命令コード選択回路16は、AND回路180と、インバータ181と、選択回路182,183とを備えている。AND回路180の一方の入力端子には、ミスヒット信号MISSが入力され、他方の入力端子には、インバータ181によって反転されたヒット信号HITが入力される。
【0046】
選択回路182の一方の入力端子には、中断情報35のデータ格納部35cから読み出された命令コードICが入力され、他方の入力端子には、SDRAM8から読み込まれた命令コードICが入力される。選択回路182は、有効データ信号SSが「H」である場合は、中断情報35のデータ格納部35cから読み出された命令コードICを選択して出力し、「L」である場合は、SDRAM8から読み込まれた命令コードICを選択して出力する。
【0047】
選択回路183の一方の入力端子には、選択回路182から出力された命令コードICが入力され、他方の入力端子には、命令キャッシュ3から読み出された命令コードICが入力される。選択回路183は、AND回路180の出力信号が「H」である場合(即ちミスヒットである場合)は、選択回路182から出力された命令コードICを選択して出力し、「L」である場合(即ちヒットである場合)は、命令キャッシュ3から読み出された命令コードICを選択して出力する。
【0048】
図8は、図1に示したリクエストキャンセル信号生成回路12の構成を示すブロック図である。リクエストキャンセル信号生成回路12は、AND回路90,91と、インバータ92とを備えている。AND回路90の一方の入力端子には割り込み信号ISが入力され、他方の入力端子には、PSW(Program Status Word又はProcessor Status Word)のIE(Interrupt Enable)ビットの内容が入力される。
【0049】
AND回路91の一方の入力端子には、割り込みハンドラの命令フェッチが開始された場合に「H」となる信号が、インバータ92によって反転されて入力される。AND回路91の他方の入力端子には、AND回路90の出力信号が入力される。AND回路91からは、リクエストキャンセル信号RCが出力される。リクエストキャンセル信号RCは、割り込み信号ISが入力されてから割り込み処理が開始されるまでの間のみ「H」となる。
【0050】
図9は、本実施の形態1に係るデータ処理装置に関して、バースト転送の最中に割り込み要求IRが発生しない場合の信号・データの遷移を示すタイミングチャートである。以下、図9及び適宜図1〜8を参照して、バースト転送の最中に割り込み要求IRが発生しない場合の、本実施の形態1に係るデータ処理装置の動作を説明する。なお、以下の説明では、命令キャッシュ3の1ラインが128ビット、データバスRDBのバスサイズが32ビット(4バイト)であり、1ラインをキャッシュフィルするために4回のバスアクセスが必要な場合を想定する。また、命令コードI1,I3,I4は命令キャッシュ3内に存在しており、命令コードD1〜D4は命令キャッシュ3内に存在していないと仮定する。さらに、CL(CAS Latency)=2と仮定する。
【0051】
期間T1において、CPU1は、命令フェッチ要求信号IFR、及び命令コードI1に関する命令アドレス信号IFA(アドレスa1)を、命令キャッシュ3に入力する。アドレスa1へのアクセス要求(即ち、命令コードI1に関する命令フェッチ要求)が受け付けられると、次のアドレスa2へのアクセスが連続して要求され、以下同様に、アドレスa3,a4へのアクセスがこの順に連続して要求される。そのため、命令フェッチ要求信号IFRは、連続的に「H」を維持する。命令コードI1に関する命令フェッチ要求は、期間T1において命令キャッシュ3によって受け付けられ、命令キャッシュ3は、受領信号AFICをCPU1に入力する。命令コードI1は命令キャッシュ3内に存在しているため、ヒット信号HITが「H」となる。
【0052】
期間T2において、アドレスa1に対応する命令コードI1が命令キャッシュ3から読み出されて、CPU1に転送される。その際、命令バリッド信号IVが「H」とされる。また、CPU1は、命令コードI1の次の命令コードD1に関する命令アドレス信号IFA(アドレスa2)を、命令キャッシュ3に入力する。命令コードD1に関する命令フェッチ要求は、期間T2において命令キャッシュ3によって受け付けられ、命令キャッシュ3は、受領信号AFICをCPU1に入力する。命令コードD1は命令キャッシュ3内に存在していないため、ミスヒット信号MISSが「H」となる。
【0053】
期間T3において、命令キャッシュ3は、アクセス要求信号AR及びアドレス信号IA(アドレスa2)を、SDRAMコントローラ5に入力する。また、キャッシュオンの状態である場合、命令キャッシュ3は、SDRAMコントローラ5にバースト要求信号BRを入力することによって、1ライン分の命令コードD1〜D4のバースト転送を要求する。アクセス要求信号AR及びバースト要求信号BRは、バースト転送を要求する全ての命令コードD1〜D4に関するアクセス要求がSDRAMコントローラ5によって受け付けられるまで、「H」を維持する。命令コードD1に関するアクセス要求は、期間T3においてSDRAMコントローラ5によって受け付けられ、SDRAMコントローラ5は、受領信号ACKを命令キャッシュ3に入力する。
【0054】
CPU1は、命令コードD1の次の命令コードI3に関する命令アドレス信号IFA(アドレスa3)を、命令キャッシュ3に入力する。しかし、命令キャッシュ3は、命令コードD1をCPU1に受け渡すまでは、命令コードI3に関する命令フェッチ要求を受け付けない(AFIC=「L」)。
【0055】
期間T4において、SDRAMコントローラ5は、SDRAM8を活性化するための活性化コマンドACT(RAS=「L」、CAS=「H」、WE=「H」)を、SDRAM8に入力する。また、命令キャッシュ3は、命令コードD1に続く命令コードD2に関するアドレス信号IA(アドレスa2+4)を、SDRAMコントローラ5に入力する。しかし、SDRAMコントローラ5は、CASが「L」となって次のアクセス要求を受け付け可能となるまでは、命令コードD2に関するアクセス要求を受け付けない。
【0056】
期間T6において、SDRAMコントローラ5は、バースト転送を開始するためのリードコマンドREAD(RAS=「H」、CAS=「L」、WE=「H」)を、SDRAM8に入力する。また、命令コードD2に関するアクセス要求がSDRAMコントローラ5によって受け付けられ、SDRAMコントローラ5は、受領信号ACKを命令キャッシュ3に入力する。
【0057】
期間T7において、命令キャッシュ3は、命令コードD2に続く命令コードD3に関するアドレス信号IA(アドレスa2+8)を、SDRAMコントローラ5に入力する。命令コードD3に関するアクセス要求は、期間T7においてSDRAMコントローラ5によって受け付けられ、SDRAMコントローラ5は、受領信号ACKを命令キャッシュ3に入力する。
【0058】
期間T8において、命令キャッシュ3は、命令コードD3に続く命令コードD4に関するアドレス信号IA(アドレスa2+12)を、SDRAMコントローラ5に入力する。命令コードD4に関するアクセス要求は、期間T8においてSDRAMコントローラ5によって受け付けられ、SDRAMコントローラ5は、受領信号ACKを命令キャッシュ3に入力する。また、命令キャッシュ3は、最終要求信号LARをSDRAMコントローラ5に入力する。さらに、バースト転送が開始され、命令コードD1がSDRAM8からSDRAMコントローラ5へ転送される。
【0059】
期間T9において、命令コードD1がSDRAMコントローラ5から命令キャッシュ3へ転送される。その際、data ready信号DRが「H」とされる。また、命令コードD2がSDRAM8からSDRAMコントローラ5へ転送される。さらに、SDRAMコントローラ5は、SDRAM8をプリチャージするためのプリチャージコマンドPRE(RAS=「L」、CAS=「H」、WE=「L」)を、SDRAM8に入力する。
【0060】
期間T10において、命令コードD1が命令キャッシュ3からCPU1に転送される。その際、命令バリッド信号IVが「H」とされる。また、命令キャッシュ3は、命令コードI3に関する命令アドレス信号IFAを受け付け、受領信号AFICをCPU1に入力する。命令コードI3は命令キャッシュ3内に存在しているため、ヒット信号HITが「H」となる。また、命令コードD2がSDRAMコントローラ5から命令キャッシュ3へ転送される。その際、data ready信号DRが「H」とされる。さらに、命令コードD3がSDRAM8からSDRAMコントローラ5へ転送される。
【0061】
期間T11において、命令コードI3が命令キャッシュ3から読み出されて、CPU1に転送される。その際、命令バリッド信号IVが「H」とされる。CPU1は、命令コードI3の次の命令コードI4に関する命令アドレス信号IFA(アドレスa4)を、命令キャッシュ3に入力する。命令キャッシュ3は、命令コードI4に関する命令アドレス信号IFAを受け付け、受領信号AFICをCPU1に入力する。命令コードI4は命令キャッシュ3内に存在しているため、ヒット信号HITが「H」となる。また、命令コードD3がSDRAMコントローラ5から命令キャッシュ3へ転送される。その際、data ready信号DRが「H」とされる。さらに、命令コードD4がSDRAM8からSDRAMコントローラ5へ転送される。
【0062】
期間T12において、命令コードI4が命令キャッシュ3から読み出されて、CPU1に転送される。その際、命令バリッド信号IVが「H」とされる。また、命令コードD4がSDRAMコントローラ5から命令キャッシュ3へ転送される。その際、data ready信号DRが「H」とされる。1ライン分の命令コードD1〜D4が揃ったので、命令キャッシュ3は、命令コードD1〜D4を所定のラインに登録する。
【0063】
なお、命令コードI1の次にCPU1が要求する命令コードが、SDRAM8のメモリブロックの先頭に格納されている命令コードD1ではなく、途中に格納されている命令コード(例えば命令コードD3)である場合は、命令キャッシュ3は、アドレスa2,a2+4,a2+8,a2+12の順にアドレス信号IAを出力しても良く、アドレスa2+8,a2+12,a2,a2+4の順にアドレス信号IAを出力しても良い。
【0064】
図10は、本実施の形態1に係るデータ処理装置に関して、バースト転送の最中に割り込み要求IRが発生した場合の信号・データの遷移を示すタイミングチャートである。以下、図10及び適宜図1〜8を参照して、バースト転送の最中に割り込み要求IRが発生した場合の、本実施の形態1に係るデータ処理装置の動作を説明する。なお、割り込みハンドラの命令コードI5は命令キャッシュ3内に存在していないと仮定する。
【0065】
期間T5までの動作は図9と同様であるため、説明は省略する。
【0066】
期間T6において、SDRAMコントローラ5は、リードコマンドREADをSDRAM8に入力する。また、命令コードD2に関するアクセス要求がSDRAMコントローラ5によって受け付けられ、SDRAMコントローラ5は、受領信号ACKを命令キャッシュ3に入力する。
【0067】
割り込み要求IRが発生し、リクエストキャンセル信号RCが、リクエストキャンセル信号生成回路12から命令キャッシュ3に入力される。CPU1は、命令フェッチ要求信号IFRを「L」に遷移させることにより、この時点で命令キャッシュ3によってまだ受け付けられていない命令フェッチ要求(図9に示したアドレスa3,a4に対する命令フェッチ要求)を取り下げる。命令キャッシュ3は、最終要求信号LARを生成してSDRAMコントローラ5に入力する。また、命令キャッシュ3は、アクセス要求信号AR及びバースト要求信号BRを「L」に遷移させることにより、図9に示した命令コードD3,D4に関してのバースト転送の要求を取り下げる。
【0068】
期間T7において、SDRAMコントローラ5は、プリチャージコマンドPREをSDRAM8に入力する。
【0069】
期間T8において、バースト転送が開始され、命令コードD1がSDRAM8からSDRAMコントローラ5へ転送される。
【0070】
期間T9において、命令コードD1がSDRAMコントローラ5から命令キャッシュ3へ転送される。その際、data ready信号DRが「H」とされる。また、命令コードD2がSDRAM8からSDRAMコントローラ5へ転送される。
【0071】
期間T10において、命令コードD1が命令キャッシュ3からCPU1に転送される。その際、命令バリッド信号IVが「H」とされる。また、命令キャッシュ3は、割り込みハンドラの命令コードI5に関する命令アドレス信号IFA(アドレスa5)を受け付け、受領信号AFICをCPU1に入力する。命令コードI5は命令キャッシュ3内に存在していないため、ミスヒット信号MISSが「H」となる。また、命令コードD2がSDRAMコントローラ5から命令キャッシュ3へ転送される。その際、data ready信号DRが「H」とされる。
【0072】
期間T11以降において、アドレスa5,a5+4,a5+8,a5+12の各アドレス信号IAが、命令キャッシュ3からSDRAMコントローラ5へ順次入力され、バースト転送によるSDRAM8からの命令コードI5の読み込みが行われる。命令コードI5はCPU1に転送され、CPU1は、割り込み要求IRに対する処理を実行する。
【0073】
以下、中断されていたバースト転送の再開について説明する。図11は、中断情報35を示す図である。図10に示した例では、割り込み要求IRの発生に起因して、命令コードD3,D4に関するバースト転送が中断された。バースト転送が中断されると、命令キャッシュ3(厳密には外部アクセス要求生成回路15)は、バースト転送の中断に関する情報(中断情報)35を作成して、自ら保持しておく。
【0074】
図11を参照して、中断情報35は、28ビットのアドレス記述部35aと、4ビットのデータ位置記述部35bと、128ビットのデータ格納部35cとを有している。アドレス記述部35aには、中断されたバースト転送を再開する際の開始アドレス(再開アドレス)が記述されている。データ格納部35cには、バースト転送が中断されるまでにSDRAMコントローラ5から命令キャッシュ3に転送されてきたデータが格納されている。データ位置記述部35bには、データ格納部35cの128ビットを各32ビットの4つの領域に分割して、どの領域に有効なデータが格納されているかが記述されている。
【0075】
図10に示した例によると、アドレス記述部35aには、32ビットのアドレスa2+8のうちの[0:27]が記述されている。データ格納部35cには、[0:31]に命令コードD1が格納されており、[32:63]に命令コードD2が格納されている。データ格納部35cの[64:95]及び[96:127]には有効なデータが格納されておらず、不定ビットとなっている。データ位置記述部35bには、「1100」が記述されている。「1」が有効を表しており、「0」が無効を表している。
【0076】
図12は、メインプログラムの実行中に割り込み要求が発生した場合の、第1の処理フローを示す模式図である。メインプログラムの処理を実行しているCPU1は、命令の切れ目などのタイミングで、ICU11からの割り込み信号ISの入力の有無を監視している。命令キャッシュ3へのバースト転送が行われている途中で割り込み要求IRの発生が検出されると、上記の通り、命令キャッシュ3は、命令コードD3,D4に関するバースト転送を中断するとともに、中断情報35を作成する。そして、PSWや戻り先番地などの情報が退避された後、割り込みハンドラの先頭番地へのジャンプが行われる。割り込み処理が開始されて、その処理が終了すると、RTE(Return from exception/interrupt/trap)命令の実行により、退避されていたPSWの復帰と、戻り先番地へのジャンプとが実行される。これにより、元のメインプログラムに復帰する。すると、命令キャッシュ3は、中断情報35のアドレス記述部35aに記述されている再開アドレスを参照することにより、中断された箇所の続きからバースト転送を再開する。即ち、命令コードD3,D4に関するバースト転送が再開される。中断された箇所の続きからバースト転送が再開されるため、中断される前に命令キャッシュ3に転送されていた命令コードD1,D2に関して、重複した読み出し及び転送動作を回避することができる。
【0077】
命令キャッシュ3への命令コードD3,D4の転送が完了すると、命令キャッシュ3は、中断情報35のデータ格納部35cに格納されている命令コードD1,D2と、SDRAM8から転送されてきた命令コードD3,D4とを繋ぎ合わせて、命令コードD1〜D4を所定のラインに登録する。
【0078】
図13は、メインプログラムの実行中に割り込み要求が発生した場合の、第2の処理フローを示す模式図である。図13では、割り込み処理が終了した後に、元のメインプログラムに復帰しない場合を想定している。割り込み処理が開始されるまでの流れは図12と同様であるため、説明を省略する。割り込み処理が実行されている過程において、割り込みハンドラは、退避されていた戻り先番地を、メインプログラムとは別のプログラムの先頭番地に書き換える。命令キャッシュ3は、戻り先番地の書き換えが行われたことを検出すると、保持していた中断情報35を無効化する。即ち、データ位置記述部35bの記述内容をクリアする。このとき、アドレス記述部35a及びデータ格納部35cの内容を併せてクリアしてもよい。割り込み処理が終了すると、RTE命令の実行によって上記別のプログラムの先頭番地へのジャンプが実行され、中断されていたバースト転送が再開されることなく、上記別のプログラムの処理が開始される。
【0079】
割り込み処理が終了した後に別のプログラムに移行するような場合は、移行直後に元のプログラムに関する命令コードD1〜D4が実行される可能性は低いと考えられる。従って、このような場合には、中断されていたバースト転送を再開させないことにより、バースト転送の再開に伴う無駄な動作を回避でき、上記別のプログラムを早期に開始させることができる。
【0080】
図14は、メインプログラムの実行中に割り込み要求が発生した場合の、第3の処理フローを示す模式図である。図14では、複数の割り込み要求が発生した場合を想定している。複数の割り込み要求が発生した場合は、優先度の高い順に割り込み処理が実行される。命令キャッシュ3へのバースト転送が行われている途中で第1の割り込み要求の発生が検出されると、上記の通り、命令キャッシュ3は、命令コードD3,D4に関するバースト転送を中断するとともに、中断情報35を作成する。そして、PSWや戻り先番地などの情報が退避された後、第1の割り込みハンドラの先頭番地へのジャンプが行われて、第1の割り込み処理が開始される。
【0081】
第1の割り込み処理が終了した時点で第2の割り込み要求の発生が検出されると、第2の割り込みハンドラの先頭番地へのジャンプが行われて、第2の割り込み処理が開始される。第2の割り込み処理が終了すると、RTE命令の実行により、退避されていたPSWの復帰と、戻り先番地へのジャンプとが実行されて、元のメインプログラムに復帰する。すると、命令キャッシュ3は、中断情報35のアドレス記述部35aに記述されている再開アドレスを参照することにより、中断された箇所の続きからバースト転送を再開する。即ち、命令コードD3,D4に関するバースト転送が再開される。
【0082】
命令キャッシュ3への命令コードD3,D4の転送が完了すると、命令キャッシュ3は、中断情報35のデータ格納部35cに格納されている命令コードD1,D2と、SDRAM8から転送されてきた命令コードD3,D4とを繋ぎ合わせて、命令コードD1〜D4を所定のラインに登録する。
【0083】
第1の割り込み処理が終了した後に、バースト転送の再開よりも優先して第2の割り込み処理を実行するため、第2の割り込み処理を早期に開始することができる。
【0084】
なお、図12,14において、割り込み処理が終了して元のプログラムに復帰した際に、中断された箇所の続きからバースト転送を再開するのではなく、その中断に係るラインの全ての領域に関して、最初からバースト転送をやり直すこともできる。この場合、中断情報35のアドレス記述部35aには、再開アドレスa2+8ではなく先頭アドレスa2を記述しておき、また、データ位置記述部35b及びデータ格納部35cは不要である。しかも、図10において、命令キャッシュ3は、命令コードD1,D2のバースト転送が完了するのを待つことなく、リクエストキャンセル信号RCを受けた直後に、命令コードI5の命令フェッチを開始すればよい。
【0085】
また、割り込みに起因してバースト転送を中止することのみを目的とし、割り込み処理が終了した後にバースト転送を再開することを意図しない場合には、中断情報35の作成・保持は不要である。
【0086】
このように本実施の形態1に係るデータ処理装置によれば、キャッシュフィルのためのバースト転送が行われている最中に割り込み要求IRが発生した場合に、バースト転送の完了を待ってから割り込み処理を開始するのではなく、バースト転送を強制的に中断して、割り込み処理を優先的に実行する。従って、緊急度の高い割り込み要求IRに対する応答性を、従来のデータ処理装置よりも高めることができる。
【0087】
実施の形態2.
上記実施の形態1では、図12,14に示したように、命令キャッシュ3は、割り込み処理が終了して元のプログラムに復帰したことを要因として、中断されていたバースト転送を自動的に再開した。本実施の形態2では、実施の形態1とは異なる要因でバースト転送を再開する方法について説明する。なお、上記実施の形態1と同様に、命令コードD1,D2が命令キャッシュ3に転送された段階でバースト転送が中断されて割り込み処理が開始されたものと仮定し、その割り込み処理はすでに完了している。
【0088】
図15は、本実施の形態2に係るデータ処理装置に関して、中断されていたバースト転送を再開する際の信号・データの遷移を示すタイミングチャートである。図15に示すように、CPU1は、命令コードI1(アドレスa1)と、バースト転送が中断されたライン(以下「中断ライン」と称する)に係る命令コードD1,D2,D3,D4(アドレスa2,a2+4,a2+8,a2+12)とを要求している。本実施の形態2に係るデータ処理装置では、中断ラインに係る複数の命令コードのうちの任意の一つがCPU1によって要求されたことを要因として、中断されていたバースト転送が再開される。以下、具体的に説明する。
【0089】
期間T1において、CPU1は、命令フェッチ要求信号IFR、及び命令コードI1に関する命令アドレス信号IFA(アドレスa1)を、命令キャッシュ3に入力する。命令フェッチ要求信号IFRは、CPU1が要求している全ての命令コードI1,D1〜D4に関する命令フェッチ要求が命令キャッシュ3によって受け付けられるまで、「H」を維持する。命令コードI1に関する命令フェッチ要求は、期間T1において命令キャッシュ3によって受け付けられ、命令キャッシュ3は、受領信号AFICをCPU1に入力する。命令コードI1は命令キャッシュ3内に存在しているため、ヒット信号HITが「H」となる。
【0090】
期間T2において、命令コードI1が命令キャッシュ3から読み出されて、CPU1に転送される。その際、命令バリッド信号IVが「H」とされる。また、CPU1は、命令コードI1の次の命令コードD1に関する命令アドレス信号IFA(アドレスa2)を、命令キャッシュ3に入力する。命令コードD1に関する命令フェッチ要求は、期間T2において命令キャッシュ3によって受け付けられ、命令キャッシュ3は、受領信号AFICをCPU1に入力する。
【0091】
命令コードD1は中断情報35のデータ格納部35cに格納されており、命令キャッシュ3の記憶部17内には存在していないため、ミスヒット信号MISSが「H」となる。一方、図6を参照して、一致検出回路30からは「H」が出力され、AND回路80からも「H」が出力される。その結果、AND回路85からは「H」の有効データ信号SSが出力される。
【0092】
期間T3において、命令コードD1が中断情報35のデータ格納部35cから読み出されて、CPU1に転送される。その際、命令バリッド信号IVが「H」とされる。また、CPU1は、命令コードD1の次の命令コードD2に関する命令アドレス信号IFA(アドレスa2+4)を、命令キャッシュ3に入力する。命令コードD2に関する命令フェッチ要求は、期間T3において命令キャッシュ3によって受け付けられ、命令キャッシュ3は、受領信号AFICをCPU1に入力する。
【0093】
命令コードD2は命令キャッシュ3の記憶部17内には存在していないため、ミスヒット信号MISSが「H」となる。一方、図6を参照して、一致検出回路30からは「H」が出力され、AND回路81からも「H」が出力される。その結果、AND回路85からは「H」の有効データ信号SSが出力される。
【0094】
また、命令キャッシュ3は、アクセス要求信号AR及びバースト要求信号BRをSDRAMコントローラ5へ入力する。図6を参照して、一致検出回路30から「H」の検出結果が出力されているため、選択回路31は、中断情報の35の再開アドレス(アドレスa2+8)を選択し、アドレス信号IAとして出力する。このアクセス要求、即ち命令コードD3に関するアクセス要求は、期間T3においてSDRAMコントローラ5によって受け付けられ、SDRAMコントローラ5は、受領信号ACKを命令キャッシュ3に入力する。
【0095】
期間T4において、命令コードD2が中断情報35のデータ格納部35cから読み出されて、CPU1に転送される。その際、命令バリッド信号IVが「H」とされる。また、CPU1は、命令コードD2の次の命令コードD3に関する命令アドレス信号IFA(アドレスa2+8)を、命令キャッシュ3に入力する。命令コードD3に関する命令フェッチ要求は、期間T4において命令キャッシュ3によって受け付けられ、命令キャッシュ3は、受領信号AFICをCPU1に入力する。
【0096】
命令コードD3は命令キャッシュ3の記憶部17内には存在していないため、ミスヒット信号MISSが「H」となる。また、図6を参照して、AND回路82からは「L」が出力されるため、AND回路85からは「L」の有効データ信号SSが出力される。
【0097】
SDRAMコントローラ5は、活性化コマンドACTをSDRAM8に入力する。また、命令キャッシュ3は、命令コードD3に続く命令コードD4に関するアドレス信号IA(アドレスa2+8)を、SDRAMコントローラ5に入力する。しかし、SDRAMコントローラ5は、次のアクセス要求を受け付け可能となるまでは、命令コードD4に関するアクセス要求を受け付けない。また、命令キャッシュ3は、最終要求信号LARをSDRAMコントローラ5に入力する。
【0098】
期間T5において、CPU1は、命令コードD3の次の命令コードD4に関する命令アドレス信号IFA(アドレスa2+12)を、命令キャッシュ3に入力する。しかし、命令キャッシュ3は、命令コードD3をCPU1に受け渡すまでは、命令コードD4に関する命令フェッチ要求を受け付けない。
【0099】
期間T6において、SDRAMコントローラ5は、リードコマンドREADをSDRAM8に入力する。また、命令コードD4に関するアクセス要求がSDRAMコントローラ5によって受け付けられ、SDRAMコントローラ5は、受領信号ACKを命令キャッシュ3に入力する。
【0100】
期間T7において、SDRAMコントローラ5は、プリチャージコマンドPREをSDRAM8に入力する。
【0101】
期間T8において、バースト転送が開始され、命令コードD3がSDRAM8からSDRAMコントローラ5へ転送される。
【0102】
期間T9において、命令コードD3がSDRAMコントローラ5から命令キャッシュ3へ転送される。その際、data ready信号DRが「H」とされる。また、命令コードD4がSDRAM8からSDRAMコントローラ5へ転送される。
【0103】
期間T10において、命令コードD4がSDRAMコントローラ5から命令キャッシュ3へ転送される。その際、data ready信号DRが「H」とされる。1ライン分の命令コードD1〜D4が揃ったので、命令キャッシュ3は、命令コードD1〜D4を所定のラインに登録する。
【0104】
また、命令コードD3が命令キャッシュ3からCPU1に転送される。その際、命令バリッド信号IVが「H」とされる。また、命令キャッシュ3は、命令コードD4に関する命令アドレス信号IFAを受け付け、受領信号AFICをCPU1に入力する。命令コードD4は命令キャッシュ3内に存在しているため、ヒット信号HITが「H」となる。
【0105】
期間T11において、命令コードD4が命令キャッシュ3から読み出されて、CPU1に転送される。その際、命令バリッド信号IVが「H」とされる。
【0106】
このように本実施の形態2に係るデータ処理装置によれば、中断ラインに係る命令コードD1〜D4のうちの一つがCPU1によって要求されたことを要因として、中断されていた命令コードD3,D4に関するバースト転送が再開される。従って、割り込み処理が終了した直後に元のプログラムに復帰しないような場合であっても、その後に中断ラインがアクセスされた際に、バースト転送を再開することができる。
【0107】
実施の形態3.
本実施の形態3では、上記実施の形態1,2とは異なる要因でバースト転送を再開する方法について説明する。本実施の形態3に係るデータ処理装置では、割り込み処理が実行されている途中でRTE命令が検出されたことを要因として、中断されていたバースト転送が再開される。以下、CPU1によってパイプライン処理が行われている場合を例にとり説明する。
【0108】
バースト転送の再開を説明する前に、まずパイプライン処理について説明する。図16は、パイプライン処理の一例を示す模式図である。命令フェッチステージIF、デコードステージD、命令実行ステージE、メモリアクセスステージM、及びライトバックステージWBがこの順に連続的に実行されることにより、パイプライン処理が実現されている。
【0109】
図17は、本実施の形態3に係るアドレス生成回路20の構成を示すブロック図である。本実施の形態3に係るアドレス生成回路20は、選択回路100を備えている。選択回路100には、命令アドレス信号IFAと、中断情報35のアドレス記述部35aに記述されている再開アドレスとが入力される。また、選択回路100にはRTE検出信号SRが入力されている。RTE検出信号SRは、パイプライン処理のデコードステージDでRTE命令がデコードされた場合に「H」となる。選択回路100は、RTE検出信号SRが「H」の場合は再開アドレスを選択し、「L」の場合は命令アドレス信号IFAを選択して、アドレス信号IAとして出力する。なお、図17では省略したが、本実施の形態3に係るアドレス生成回路20は、図6と同様に有効データ信号SSを生成するための構成を備えている。
【0110】
図18は、本実施の形態3に係る外部アクセス要求生成回路15の構成を示すブロック図である。本実施の形態3に係る外部アクセス要求生成回路15は、図4に示した構成に加えて、OR回路101を備えている。OR回路101の一方の入力端子にはRTE検出信号SRが入力され、他方の入力端子には命令フェッチ要求信号IFRが入力される。OR回路101の出力信号は、リクエスト生成回路22及びAND回路72に入力される。リクエスト生成回路22は、RTE検出信号SRが「H」でOR回路101から「H」が入力されたとしても、中断情報35のデータ位置記述部35bに「0000」と記述されている場合は、アクセス要求信号ARを出力しない。
【0111】
図19は、パイプライン処理が実行されている状況を示す図である。図19に示した命令X1〜X3と、図19には示していない命令X4とが、命令キャッシュ3の1ラインに格納されるものと仮定する。期間t1では、命令X1が命令フェッチステージIFで処理される。期間t2では、命令X1がデコードステージDで処理され、命令X2が命令フェッチステージIFで処理される。期間t3では、命令X1が命令実行ステージEで処理され、命令X2がデコードステージDで処理され、命令X3が命令フェッチステージIFで処理される。また、期間t3では、割り込み(割り込み命令Y1)が発生している。
【0112】
期間t4において、命令フェッチステージIFでは、命令X3に続く命令X4に先立って、割り込み命令Y1が優先的に処理される。その際、命令X4の先頭アドレスを中断情報35のアドレス記述部35aに記述しておく。命令X4については、期間t5以降に命令フェッチステージIFで処理される。そして、1ライン分のデータが揃った段階で、命令X1〜X4が命令キャッシュ3に登録される。
【0113】
また、期間t4において、デコードステージD及び命令実行ステージEでは、割り込み命令Y1が発生した時点(期間t3)で命令実行ステージEでの処理がまだ行われていない命令(この例の場合は命令X2,X3)の処理をそれぞれ保留し、割り込み命令Y1の処理に備える。その際、命令実行ステージEに関して、命令X2の先頭アドレスを戻り先番地として設定して、PSWとともに退避しておく。一方、割り込み命令Y1が発生した時点で命令実行ステージEでの処理がすでに完了している命令については、その後の処理が進められる。この例の場合、メモリアクセスステージMで命令X1が処理される。
【0114】
割り込み命令Y1は、期間t5においてデコードステージDで処理され、期間t6において命令実行ステージEで処理される。割り込み処理が終了した後は、戻り先番地としてアドレスが保持されていた命令X2の命令フェッチステージIFから、処理が再開される。このように、割り込み命令Y1が発生した時点で命令実行ステージEでの処理がまだ行われていない命令X2〜X4よりも、割り込み命令Y1を優先的に処理することにより、緊急度の高い割り込み処理を早期に開始することができる。例えば、命令X2,X3の実行処理に長時間を要する場合であっても、命令X2,X3の実行処理が完了するのを待ってから割り込み命令Y1の実行処理が開始されるわけではないため、割り込み命令Y1に対する実行処理を早期に開始することができる。
【0115】
但し、発生した割り込み命令Y1の優先度を、予め設定しておいた所定の優先度と比較し、割り込み命令Y1の優先度が所定の優先度以下である場合には、以下のような処理を行ってもよい。なお、優先度の設定及び比較については、後述する実施の形態5において詳細に説明する。
【0116】
図20は、パイプライン処理が実行されている状況を示す図である。期間t3において、優先度が所定の優先度以下である割り込み命令Y1が発生している。命令実行ステージEでは、割り込み命令Y1がフェッチされる前にすでにフェッチされていた命令X1〜X3が処理された後に、割り込み命令Y1が処理される。この場合、命令X4の先頭アドレスが戻り先番地として設定されて、PSWとともに退避される。デコードステージD、メモリアクセスステージM、及びライトバックステージWBについても同様である。発生した割り込み要求の緊急度がそれほど高くない場合に、割り込み命令Y1よりも先に命令X1〜X3を処理することにより、パイプラインを乱すことなく処理を進めることができ、割り込み処理に伴うペナルティをなくすことができる。即ち、割り込み処理の優先度に応じてパイプラインをキャンセルするか否かを選択することにより、割り込み処理を急ぐ場合にはパイプラインをキャンセルして割り込み処理を早急に処理でき、割り込み処理を急がない場合にはパイプラインをキャンセルしないことで割り込み処理に伴うペナルティを減らすことができ、全体として処理性能を高めることができる。
【0117】
以上のようにしてCPU1はパイプライン処理を実現しているわけであるが、パイプライン処理においては、RTE命令は、命令実行ステージEで処理される前にデコードステージDで処理される。従って、実際にRTE命令が命令実行ステージEで処理されるよりも前に、デコードステージDにおいてRTE命令を検出することができる。そこで、本実施の形態3に係るデータ処理装置は、割り込み処理が実行されている最中であっても、割り込み処理を終了させる命令(RTE命令)が検出されたことを要因として、中断されていたバースト転送を再開する。
【0118】
図21は、本実施の形態3に係るデータ処理装置に関して、中断されていたバースト転送を再開する際の信号・データの遷移を示すタイミングチャートである。ここでは、命令キャッシュ3の1ラインに格納される命令コードI1〜I4(アドレスA1〜A4)のうち、命令コードI1,I2に関する転送が完了した段階でバースト転送が中断されている場合を想定している。なお、図21において、命令コードI0(アドレスA0)は割り込みハンドラの命令コードである。
【0119】
期間T2において、デコードステージDでRTE命令が検出されたことにより、RTE検出信号SRが「H」となる。
【0120】
期間T3において、CPU1は、命令フェッチ要求信号IFR、及び命令コードI1に関する命令アドレス信号IFA(アドレスA1)を、命令キャッシュ3に入力する。命令コードI1に関する命令フェッチ要求は、期間T3において命令キャッシュ3によって受け付けられ、命令キャッシュ3は、受領信号AFICをCPU1に入力する。命令コードI1は中断情報35のデータ格納部35cに格納されているため、ミスヒット信号MISS及び有効データ信号SSが「H」となる。
【0121】
また、命令キャッシュ3は、アクセス要求信号AR及びバースト要求信号BRをSDRAMコントローラ5へ入力する。図6を参照して、選択回路31は、中断情報の35の再開アドレス(アドレスA3)を選択し、アドレス信号IAとして出力する。このアクセス要求、即ち命令コードI3に関するアクセス要求は、期間T3においてSDRAMコントローラ5によって受け付けられ、SDRAMコントローラ5は、受領信号ACKを命令キャッシュ3に入力する。
【0122】
期間T4において、命令コードI1が中断情報35のデータ格納部35cから読み出されて、CPU1に転送される。その際、命令バリッド信号IVが「H」とされる。また、CPU1は、命令コードI1の次の命令コードI2に関する命令アドレス信号IFA(アドレスA2)を、命令キャッシュ3に入力する。命令コードI2に関する命令フェッチ要求は、期間T4において命令キャッシュ3によって受け付けられ、命令キャッシュ3は、受領信号AFICをCPU1に入力する。命令コードI2は中断情報35のデータ格納部35cに格納されているため、ミスヒット信号MISS及び有効データ信号SSが「H」となる。
【0123】
SDRAMコントローラ5は、活性化コマンドACTをSDRAM8に入力する。また、命令キャッシュ3は、命令コードI3に続く命令コードI4に関するアドレス信号IA(アドレスA4)を、SDRAMコントローラ5に入力する。しかし、SDRAMコントローラ5は、次のアクセス要求を受け付け可能となるまでは、命令コードI4に関するアクセス要求を受け付けない。また、命令キャッシュ3は、最終要求信号LARをSDRAMコントローラ5に入力する。
【0124】
期間T5において、命令コードI2が中断情報35のデータ格納部35cから読み出されて、CPU1に転送される。その際、命令バリッド信号IVが「H」とされる。また、CPU1は、命令コードI2の次の命令コードI3に関する命令アドレス信号IFA(アドレスA3)を、命令キャッシュ3に入力する。命令コードI3に関する命令フェッチ要求は、期間T5において命令キャッシュ3によって受け付けられ、命令キャッシュ3は、受領信号AFICをCPU1に入力する。命令コードI3は命令キャッシュ3内に存在していないため、ミスヒット信号MISSが「H」となる。
【0125】
期間T6において、CPU1は、命令コードI3の次の命令コードI4に関する命令アドレス信号IFA(アドレスA4)を、命令キャッシュ3に入力する。しかし、命令キャッシュ3は、命令コードI3をCPU1に受け渡すまでは、命令コードI4に関する命令フェッチ要求を受け付けない。
【0126】
SDRAMコントローラ5は、リードコマンドREADをSDRAM8に入力する。また、命令コードI4に関するアクセス要求がSDRAMコントローラ5によって受け付けられ、SDRAMコントローラ5は、受領信号ACKを命令キャッシュ3に入力する。
【0127】
期間T7において、SDRAMコントローラ5は、プリチャージコマンドPREをSDRAM8に入力する。
【0128】
期間T8において、バースト転送が開始され、命令コードI3がSDRAM8からSDRAMコントローラ5へ転送される。
【0129】
期間T9において、命令コードI3がSDRAMコントローラ5から命令キャッシュ3へ転送される。その際、data ready信号DRが「H」とされる。また、命令コードI4がSDRAM8からSDRAMコントローラ5へ転送される。
【0130】
期間T10において、命令コードI4がSDRAMコントローラ5から命令キャッシュ3へ転送される。その際、data ready信号DRが「H」とされる。1ライン分の命令コードI1〜I4が揃ったので、命令キャッシュ3は、命令コードI1〜I4を所定のラインに登録する。
【0131】
また、命令コードI3が命令キャッシュ3からCPU1に転送される。その際、命令バリッド信号IVが「H」とされる。また、命令キャッシュ3は、命令コードI4に関する命令アドレス信号IFAを受け付け、受領信号AFICをCPU1に入力する。命令コードI4は命令キャッシュ3内に存在しているため、ヒット信号HITが「H」となる。
【0132】
期間T11において、命令コードI4が命令キャッシュ3から読み出されて、CPU1に転送される。その際、命令バリッド信号IVが「H」とされる。
【0133】
このように本実施の形態3に係るデータ処理装置によれば、RTE命令が検出されたことを要因として、中断されていた命令コードI3,I4に関するバースト転送が再開される。従って、割り込み処理がまだ実行されている最中であってもバースト転送を再開することができ、割り込み処理が完了した後に再開する場合と比較すると、バースト転送を早期に再開することができる。
【0134】
なお、図14に示したように複数の割り込み要求が発生した場合には、以下のように対応することができる。図22は、RTE検出信号SRを生成するための回路の構成を示すブロック図である。AND回路110の一方の入力端子には、RTE検出信号SRが入力され、他方の入力端子には、インバータ111によって反転された割り込み信号ISが入力される。かかる構成により、AND回路110は、割り込み信号ISが「L」の時にはRTE検出信号SRを出力し、割り込み信号ISが「H」の時にはRTE検出信号SRを出力しない。図18に示したOR回路101には、AND回路110から出力されたRTE検出信号SRが入力される。
【0135】
図14を参照して、第1の割り込み処理に関するRTE命令が検出されたとしても、それと同時に第2の割り込み要求が発生している。従って、図22に示したAND回路22からはRTE検出信号SRは出力されない。その結果、中断されていたバースト転送が再開されることなく、第2の割り込みハンドラの先頭番地へのジャンプが行われて、第2の割り込み処理が開始される。
【0136】
第2の割り込み処理に関するRTE命令が検出されると、その時点では次の割り込み要求が発生していない。そのため、図22に示したAND回路22からRTE検出信号SRが出力され、中断されていたバースト転送が再開される。その後、第2の割り込み処理に関するRTE命令が実行されることにより、メインプログラムへの復帰が行われる。
【0137】
実施の形態4.
図23は、本実施の形態4に係る命令キャッシュ3の記憶部17の構成を示す模式図である。上記実施の形態1〜3では、命令キャッシュ3は、中断ラインのみに関する中断情報35を、外部アクセス要求生成回路15内に保持していた。これに対して、本実施の形態4に係るデータ処理装置では、外部アクセス要求生成回路15が中断情報35を保持するのではなく、中断情報35と等価な情報が、命令キャッシュ3の記憶部17に記憶されている。
【0138】
記憶部17は複数のラインに分割されており、各ラインは、タグ部17a、バリッドビット17b、データ部17c、及びデータ位置記述部17dをそれぞれ有している。タグ部17aには登録データのタグ情報が記述されており、また、中断ラインに関しては、再開アドレスがタグ部17aに記述されている。
【0139】
データ部17cには、登録データが格納されている。中断ラインに関しても、バースト転送が中断される前に命令キャッシュ3に転送されてきたデータが、データ部17cに格納されている。
【0140】
データ位置記述部17dは、中断情報35のデータ位置記述部35bと同様に、データ部17cの128ビットを各32ビットの4つの領域に分割して、どの領域に有効なデータが格納されているかが記述されている。中断ラインではないラインに係るデータ位置記述部17dには、「1111」が記述されている。
【0141】
上記実施の形態1〜3に係るデータ処理装置において本実施の形態4に係る記憶部17が採用された場合、命令キャッシュ3は、記憶部17のタグ部17aに記述されている再開アドレスを参照することにより、中断された箇所の続きからバースト転送を再開する。
【0142】
このように、外部アクセス要求生成回路15が中断情報35を保持するのではなく、中断情報35と等価な情報を命令キャッシュ3の記憶部17に記憶しておくことによっても、上記実施の形態1〜3と同様の動作を実現でき、同様の効果が得られる。
【0143】
なお、本実施の形態4に係る発明は、後述の実施の形態5,6に係るデータ処理装置にも適用可能である。
【0144】
実施の形態5.
図24は、本発明の実施の形態5に係るデータ処理装置の構成を示すブロック図である。中断許可信号SFが、ICU11から命令キャッシュ3に入力されている。
【0145】
図25は、本実施の形態5に係る命令キャッシュ3の構成を示すブロック図である。中断許可信号SF及びリクエストキャンセル信号RCが、中断許可判定回路300に入力されている。リクエストキャンセル信号RCは、中断許可判定回路300から出力されて、外部アクセス要求生成回路15に入力されている。
【0146】
図26は、中断許可判定回路300の構成を示すブロック図である。AND回路120の一方の入力端子にはリクエストキャンセル信号RCが入力され、他方の入力端子には中断許可信号SFが入力される。かかる構成により、AND回路120は、中断許可信号SFが「H」の時にはリクエストキャンセル信号RCを出力し、中断許可信号SFが「L」の時にはリクエストキャンセル信号RCを出力しない。
【0147】
図27は、本実施の形態5に係るICU11の第1の構成を示すブロック図である。図27に示すICU11は、割り込み検出回路350と、レジスタ36,41a〜41dと、比較回路37と、選択回路40とを備えている。割り込み検出回路350には、少なくとも一つの割り込み要求IRが入力される。割り込み検出回路350は、エッジ指定又はレベル指定によって割り込み要求IRの発生を検出し、割り込み信号IS及び割り込み要求IRを出力する。
【0148】
選択回路40には、割り込み検出回路350から割り込み要求IRが入力される。レジスタ41a〜41dには、様々な割り込み要因に応じて、割り込みの優先度が予め設定されている。選択回路40は、レジスタ41a〜41dの内容を参照することにより、割り込み検出回路350から入力された割り込み要求IRに関する優先度SPを求め、その優先度SPを比較回路37の一方の入力端子に入力する。割り込み検出回路350から複数の割り込み要求IRが入力される場合は、選択回路40は、レジスタ41a〜41dの内容を参照することにより、複数の割り込み要求IRの中から、割り込みの優先度が最も高い割り込み要求IRを選択する。そして、その選択された割り込み要求IRに関する優先度SPを、比較回路37の一方の入力端子に入力する。
【0149】
レジスタ36には、レジスタ41a〜41dに設定されている優先度と同種の、所定の優先度SP0が予め設定されている。優先度SP0は、比較回路37の他方の入力端子に入力されている。比較回路37は、優先度SPと優先度SP0とを比較することにより、優先度SPが優先度SP0よりも高い場合に、「H」の中断許可信号SFを出力する。優先度SPが優先度SP0以下である場合には、中断許可信号SFは出力されない。
【0150】
図28は、本実施の形態5に係るICU11の第2の構成を示すブロック図である。図28に示すICU11は、割り込み検出回路350と、レジスタ46と、選択回路45とを備えている。割り込み検出回路350には割り込み要求IRが入力される。割り込み検出回路350は、割り込み信号IS及び割り込み要求IRを出力する。
【0151】
レジスタ46では、様々な割り込み要求IR0〜IRnごとに、「H」又は「L」の中断許可ビットが予め設定されている。選択回路45には、割り込み検出回路350から割り込み要求IRが入力される。選択回路45は、割り込み検出回路350から入力された割り込み要求IRに関する中断許可ビットをレジスタ46から読み出し、そのビット内容(「H」又は「L」)を中断許可信号SFとして出力する。
【0152】
このように本実施の形態5に係るデータ処理装置によれば、早急な対応が真に必要な割り込み要求IRが発生した場合にのみ、バースト転送を中断させることができる。従って、早急な対応が必要でない割り込み要求IRが発生した場合にもバースト転送が中断されてメインプログラムの処理に必要以上の遅延をきたすことを、回避することができる。
【0153】
実施の形態6.
上記実施の形態1〜5では、割り込み命令が検出された場合にバースト転送を中断することについて説明したが、同様の考えに基づき、分岐命令が検出された場合にバースト転送を中断することもできる。
【0154】
第1のプログラムを実行する過程で、SDRAM8からSDRAMコントローラ5を介して命令キャッシュ3にバースト転送(説明の便宜上、以下「第1のバースト転送」と称す)が行われている状況を考える。第1のバースト転送が行われている最中にCPU1が分岐命令(説明の便宜上、以下「第1の分岐命令」と称す)を検出すると、データ処理装置は、第1のバースト転送を中断して、分岐先の第2のプログラムの実行を開始する。その際、中断情報35の作成が行われる。そして、第2のプログラムの実行が完了すると、データ処理装置は、中断情報35の内容に基づいて、中断されていた箇所から第1のバースト転送を再開する。
【0155】
ここで、第1のプログラムがメインプログラムで第2のプログラムがメインプログラムのサブルーチンである場合など、第2のプログラムの実行が終了した後に第1のプログラムに復帰する可能性が高い場合にのみ、中断情報35の作成・保持を行ってもよい。第2のプログラムの実行が終了した後に第1のプログラムに復帰しない場合には、中断されていた第1のバースト転送の再開、及び中断情報35の作成・保持は無駄になるため、この無駄を予め解消するためである。
【0156】
また、第2のプログラムを実行する過程でバースト転送(以下「第2のバースト転送」と称す)が行われている最中に、ネスティングによって他の分岐命令(以下「第2の分岐命令」と称す)が検出された場合には、以下の処理が行われる。即ち、データ処理装置は、第2のバースト転送を中断して、分岐先の第3のプログラムの実行を開始する。その際、新たな中断情報35の作成が行われる。そして、第3のプログラムの実行が完了すると、データ処理装置は、新たな中断情報35の内容に基づいて、中断されていた箇所から第2のバースト転送を再開する。
【0157】
図29は、逐次作成される複数の中断情報を保持しておくためのスタック領域50を示す模式図である。分岐命令の検出により新たな中断情報35が作成される度に、作成された中断情報35をスタック領域50の最上段503にプッシュダウンする。また、分岐先のプログラムの実行が終了して元のプログラムに復帰する度に、最上段503の中断情報35をスタック領域50からポップアップする。図29に示した例によると、スタック領域50は、最下段500から最上段503までの4段構成となっているため、4つの中断情報35を保持しておくことが可能である。
【0158】
このように本実施の形態6に係るデータ処理装置によれば、バースト転送が行われている最中に分岐命令が検出された場合に、バースト転送の完了を待ってから分岐先のプログラムの実行を開始するのではなく、バースト転送を強制的に中断して、分岐先のプログラムを優先的に実行する。従って、分岐先のプログラムを早期に開始することができる。
【0159】
【発明の効果】
この発明のうち請求項1に係るものによれば、緊急度の高い割り込み要求に対する応答性を高めることができる。
【0160】
また、この発明のうち請求項2に係るものによれば、割り込み要求の発生によって中断されていたバースト転送を、割り込み処理の完了によって自動的に再開することができる。
【0161】
また、この発明のうち請求項3に係るものによれば、元のプログラムに復帰しない場合にはバースト転送が再開されないため、バースト転送の再開に伴う無駄な動作を回避できすることができる。
【0162】
また、この発明のうち請求項4に係るものによれば、一の割り込み処理が終了した後に、バースト転送の再開よりも優先して次の割り込み処理が実行されるため、次の割り込み処理を早期に開始することができる。
【0163】
また、この発明のうち請求項5に係るものによれば、割り込み処理が終了した直後に元のプログラムに復帰しないような場合であっても、中断に係るラインが処理装置によってアクセスされた際に、バースト転送を適切に再開することができる。
【0164】
また、この発明のうち請求項6に係るものによれば、割り込み処理がまだ実行されている最中であってもバースト転送を再開することができ、割り込み処理が完了した後に再開する場合と比較すると、バースト転送を早期に再開することができる。
【0165】
また、この発明のうち請求項7に係るものによれば、一の割り込み処理が終了した後に、バースト転送の再開よりも優先して次の割り込み処理が実行されるため、次の割り込み処理を早期に開始することができる。
【0166】
また、この発明のうち請求項8に係るものによれば、バースト転送が中断される前に第2の記憶装置に転送されていたデータに関して、重複した読み出し及び転送動作を回避することができる。
【0167】
また、この発明のうち請求項9に係るものによれば、バースト転送が中断される前に第2の記憶装置に転送されていたデータに関して、重複した読み出し及び転送動作を回避することができる。
【0168】
また、この発明のうち請求項10に係るものによれば、早急な対応が真に必要な割り込み要求が発生した場合にのみ、バースト転送を中断させることができる。従って、早急な対応が必要でない割り込み要求が発生した場合にもバースト転送が中断されてメインプログラムの処理に必要以上の遅延をきたすことを、回避することができる。
【0169】
また、この発明のうち請求項11に係るものによれば、早急な対応が真に必要な割り込み要求が発生した場合にのみ、バースト転送を中断させることができる。従って、早急な対応が必要でない割り込み要求が発生した場合にもバースト転送が中断されてメインプログラムの処理に必要以上の遅延をきたすことを、回避することができる。
【0170】
また、この発明のうち請求項12に係るものによれば、割り込み命令を優先的に実行することにより、緊急度の高い割り込み処理を早期に開始することができる。
【0171】
また、この発明のうち請求項13に係るものによれば、割り込み要求の緊急度がそれほど高くない場合には、割り込み命令がフェッチされる前にすでにフェッチされていた命令を先に実行する。従って、パイプラインを乱すことなく処理を進めることができ、割り込み処理に伴うペナルティをなくすことができる。
【0172】
また、この発明のうち請求項14に係るものによれば、割り込み要求の優先度が所定の優先度よりも高い場合に、割り込み命令を優先的に実行することにより、緊急度の高い割り込み処理を早期に開始することができる。一方、割り込み要求の緊急度がそれほど高くない場合には、割り込み命令がフェッチされる前にすでにフェッチされていた命令を先に実行する。従って、パイプラインを乱すことなく処理を進めることができ、割り込み処理に伴うペナルティをなくすことができる。
【0173】
また、この発明のうち請求項15に係るものによれば、緊急度の高い割り込み要求に対する応答性を高めることができる。
【0174】
また、この発明のうち請求項16に係るものによれば、第1のバースト転送が行われている最中に第1の分岐命令が検出された場合には、第1のバースト転送の完了を待ってから第2のプログラムの実行を開始するのではなく、第1のバースト転送を強制的に中断して、第2のプログラムを優先的に実行する。従って、第2のプログラムを早期に開始することができる。
【0175】
また、この発明のうち請求項17に係るものによれば、第2のバースト転送が行われている最中に第2の分岐命令が検出された場合には、第2のバースト転送の完了を待ってから第3のプログラムの実行を開始するのではなく、第2のバースト転送を強制的に中断して、第3のプログラムを優先的に実行する。従って、第3のプログラムを早期に開始することができる。
【図面の簡単な説明】
【図1】本発明の実施の形態1に係るデータ処理装置の構成を示すブロック図である。
【図2】命令キャッシュ及びSDRAMコントローラを示すブロック図である。
【図3】命令キャッシュの構成を示すブロック図である。
【図4】外部アクセス要求生成回路の構成を示すブロック図である。
【図5】リクエストカウント回路の構成を示すブロック図である。
【図6】アドレス生成回路の構成を示すブロック図である。
【図7】命令コード選択回路の構成を示すブロック図である。
【図8】リクエストキャンセル信号生成回路の構成を示すブロック図である。
【図9】本発明の実施の形態1に係るデータ処理装置に関して、信号・データの遷移を示すタイミングチャートである。
【図10】本発明の実施の形態1に係るデータ処理装置に関して、信号・データの遷移を示すタイミングチャートである。
【図11】中断情報を示す図である。
【図12】メインプログラムの実行中に割り込み要求が発生した場合の、第1の処理フローを示す模式図である。
【図13】メインプログラムの実行中に割り込み要求が発生した場合の、第2の処理フローを示す模式図である。
【図14】メインプログラムの実行中に割り込み要求が発生した場合の、第3の処理フローを示す模式図である。
【図15】本発明の実施の形態2に係るデータ処理装置に関して、信号・データの遷移を示すタイミングチャートである。
【図16】パイプライン処理の一例を示す模式図である。
【図17】本発明の実施の形態3に係るアドレス生成回路の構成を示すブロック図である。
【図18】本発明の実施の形態3に係る外部アクセス要求生成回路の構成を示すブロック図である。
【図19】パイプライン処理が実行されている状況を示す図である。
【図20】パイプライン処理が実行されている状況を示す図である。
【図21】本発明の実施の形態3に係るデータ処理装置に関して、信号・データの遷移を示すタイミングチャートである。
【図22】RTE検出信号を生成するための回路の構成を示すブロック図である。
【図23】本発明の実施の形態4に係る命令キャッシュの記憶部の構成を示す模式図である。
【図24】本発明の実施の形態5に係るデータ処理装置の構成を示すブロック図である。
【図25】本発明の実施の形態5に係る命令キャッシュの構成を示すブロック図である。
【図26】中断許可判定回路の構成を示すブロック図である。
【図27】本発明の実施の形態5に係るICUの第1の構成を示すブロック図である。
【図28】本発明の実施の形態5に係るICUの第2の構成を示すブロック図である。
【図29】本発明の実施の形態6に係るデータ処理装置に関して、スタック領域を示す模式図である。
【符号の説明】
1 CPU、2 オペランドキャッシュ、3 命令キャッシュ、4 外部アクセスコントローラ、5 SDRAMコントローラ、6 DRAMコントローラ、7 ROMコントローラ、8 SDRAM、9 DRAM、10 ROM、11ICU、12 リクエストキャンセル信号生成回路、15 外部アクセス要求生成回路、16 命令コード選択回路、17 記憶部、20 アドレス生成回路、21 リクエストカウント回路、22 リクエスト生成回路、30 一致検出回路、31,40,45,82,83,100,182,183 選択回路、32 デコーダ、35 中断情報、36,41a〜41d レジスタ、37 比較回路、300 中断許可判定回路、350 割り込み検出回路。
Claims (17)
- 処理装置と、
第1の記憶装置と、
前記処理装置と前記第1の記憶装置との間に接続された第2の記憶装置と
を備え、
前記処理装置が必要とする所定データが前記第2の記憶装置内に存在しない場合、前記所定データを含む、前記第2の記憶装置の1ライン分の複数のデータが、前記第1の記憶装置から読み出されてバースト転送によって前記第2の記憶装置のラインに転送されるデータ処理装置において、
前記バースト転送が行われている最中に割り込み要求が発生した場合、前記バースト転送が中断されて、割り込み処理が開始される、データ処理装置。 - 前記割り込み処理が完了すると、中断されていた前記バースト転送が再開される、請求項1に記載のデータ処理装置。
- 前記割り込み処理が完了した後に、前記バースト転送が中断された元のプログラムに復帰する場合にのみ、中断されていた前記バースト転送が再開される、請求項2に記載のデータ処理装置。
- 複数の割り込み要求が発生した場合は、複数の割り込み処理が順に実行され、最後の割り込み処理が完了すると、中断されていた前記バースト転送が再開される、請求項2又は3に記載のデータ処理装置。
- 前記割り込み処理が完了した後に、前記バースト転送の中断に係るラインが前記処理装置によってアクセスされると、中断されていた前記バースト転送が再開される、請求項1に記載のデータ処理装置。
- 前記割り込み処理が実行されている途中で、前記割り込み処理を終了させる命令が検出されると、中断されていた前記バースト転送が再開される、請求項1に記載のデータ処理装置。
- 複数の割り込み要求が発生した場合は、複数の割り込み処理が順に実行され、最後の割り込み処理を終了させる命令が検出されると、中断されていた前記バースト転送が再開される、請求項6に記載のデータ処理装置。
- 前記バースト転送が中断された箇所に関する情報が保持されており、
再開された前記バースト転送においては、前記情報に基づいて、前記複数のデータのうち、前記バースト転送の中断に起因して前記第1の記憶装置から読み出されなかったもののみが、前記第1の記憶装置から読み出されて転送される、請求項2〜7のいずれか一つに記載のデータ処理装置。 - 前記第2の記憶装置は複数のラインを有しており、
前記複数のラインは、自身が前記バースト転送の中断に係るラインである場合に、前記バースト転送が中断された箇所に関する情報をそれぞれ持ち、
再開された前記バースト転送においては、前記情報に基づいて、前記複数のデータのうち、前記バースト転送の中断に起因して前記第1の記憶装置から読み出されなかったもののみが、前記第1の記憶装置から読み出されて転送される、請求項2〜7のいずれか一つに記載のデータ処理装置。 - 割り込み要因に関連する所定の優先度が設定されたレジスタをさらに備え、
前記割り込み要求の優先度が前記所定の優先度よりも高い場合にのみ、前記バースト転送が中断される、請求項1〜9のいずれか一つに記載のデータ処理装置。 - 前記バースト転送の中断を許可するか否かが割り込み要因ごとに設定されたレジスタをさらに備え、
前記割り込み要求の割り込み要因が、前記バースト転送の中断を許可すると設定された割り込み要因である場合にのみ、前記バースト転送が中断される、請求項1〜9のいずれか一つに記載のデータ処理装置。 - 前記処理装置は、少なくともフェッチステージ及び実行ステージを有するパイプライン処理を実現しており、
前記割り込み要求が発生した場合は、前記割り込み要求に対応する割り込み命令がフェッチされる前にすでにフェッチされて、かつまだ実行されていない命令を実行するよりも前に、前記割り込み命令が実行される、請求項1〜9のいずれか一つに記載のデータ処理装置。 - 前記処理装置は、少なくともフェッチステージ及び実行ステージを有するパイプライン処理を実現しており、
前記割り込み要求の優先度が所定の優先度以下である場合は、前記割り込み要求に対応する割り込み命令がフェッチされる前にすでにフェッチされていた命令が実行された後に、前記割り込み命令が実行される、請求項1〜9のいずれか一つに記載のデータ処理装置。 - 処理装置と、
第1の記憶装置と、
前記処理装置と前記第1の記憶装置との間に接続された第2の記憶装置と
を備え、
前記処理装置が必要とする所定データが前記第2の記憶装置内に存在しない場合、前記所定データを含む、前記第2の記憶装置の1ライン分の複数のデータが、前記第1の記憶装置から読み出されてバースト転送によって前記第2の記憶装置のラインに転送されるデータ処理装置において、
前記データ処理装置は、割り込み要因に関連する所定の優先度が設定されたレジスタをさらに備え、
前記処理装置は、少なくともフェッチステージ及び実行ステージを有するパイプライン処理を実現しており、
発生した割り込み要求の優先度が前記所定の優先度以下である場合は、前記割り込み要求に対応する割り込み命令がフェッチされる前にすでにフェッチされていた命令が実行された後に、前記割り込み命令が実行され、
前記割り込み要求の優先度が前記所定の優先度よりも高い場合は、前記割り込み要求に対応する割り込み命令がフェッチされる前にすでにフェッチされて、かつまだ実行されていない命令を実行するよりも前に、前記割り込み命令が実行される、データ処理装置。 - 前記バースト転送が行われている最中に前記割り込み要求が発生した場合、前記バースト転送が中断されて、割り込み処理が開始される、請求項14に記載のデータ処理装置。
- 処理装置と、
第1の記憶装置と、
前記処理装置と前記第1の記憶装置との間に接続された第2の記憶装置と
を備え、
前記処理装置が必要とする所定データが前記第2の記憶装置内に存在しない場合、前記所定データを含む、前記第2の記憶装置の1ライン分の複数のデータが、前記第1の記憶装置から読み出されて前記第2の記憶装置のラインにバースト転送されるデータ処理装置において、
第1のプログラムを実行する過程で第1のバースト転送が行われている最中に第1の分岐命令が検出された場合、前記第1のバースト転送が中断されて、分岐先の第2のプログラムが実行され、
前記第2のプログラムが、前記第1のプログラムに復帰する可能性の高いプログラムである場合に、前記第1のバースト転送が中断された箇所に関する第1の情報が保持され、
前記第2のプログラムの実行が完了すると、前記第1の情報に基づいて、中断されていた前記第1のバースト転送が再開される、データ処理装置。 - 前記第2のプログラムを実行する過程で第2のバースト転送が行われている最中に第2の分岐命令が検出された場合、前記第2のバースト転送が中断されて、分岐先の第3のプログラムが実行され、
前記第3のプログラムが、前記第2のプログラムに復帰する可能性の高いプログラムである場合に、前記第2のバースト転送が中断された箇所に関する第2の情報が保持され、
前記第3のプログラムの実行が完了すると、前記第2の情報に基づいて、中断されていた前記第2のバースト転送が再開される、請求項16に記載のデータ処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002216769A JP2004062319A (ja) | 2002-07-25 | 2002-07-25 | データ処理装置 |
US10/624,838 US20040103267A1 (en) | 2002-07-25 | 2003-07-23 | Data processor having cache memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002216769A JP2004062319A (ja) | 2002-07-25 | 2002-07-25 | データ処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004062319A true JP2004062319A (ja) | 2004-02-26 |
Family
ID=31938431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002216769A Withdrawn JP2004062319A (ja) | 2002-07-25 | 2002-07-25 | データ処理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20040103267A1 (ja) |
JP (1) | JP2004062319A (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102007048162A1 (de) * | 2007-10-08 | 2009-04-09 | Infineon Technologies Ag | Verfahren und Vorrichtung zum Durchsuchen eines Speichers |
US8397133B2 (en) * | 2008-11-26 | 2013-03-12 | Arizona Board Of Regents For And On Behalf Of Arizona State University | Circuits and methods for dual redundant register files with error detection and correction mechanisms |
CN103116484B (zh) * | 2012-12-31 | 2015-12-23 | 华为技术有限公司 | 指令处理方法及设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2200483B (en) * | 1987-01-22 | 1991-10-16 | Nat Semiconductor Corp | Memory referencing in a high performance microprocessor |
JP3420091B2 (ja) * | 1998-11-30 | 2003-06-23 | Necエレクトロニクス株式会社 | マイクロプロセッサ |
US6748496B1 (en) * | 2000-04-18 | 2004-06-08 | Ati International Srl | Method and apparatus for providing cacheable data to a peripheral device |
US6836816B2 (en) * | 2001-03-28 | 2004-12-28 | Intel Corporation | Flash memory low-latency cache |
US6775727B2 (en) * | 2001-06-23 | 2004-08-10 | Freescale Semiconductor, Inc. | System and method for controlling bus arbitration during cache memory burst cycles |
-
2002
- 2002-07-25 JP JP2002216769A patent/JP2004062319A/ja not_active Withdrawn
-
2003
- 2003-07-23 US US10/624,838 patent/US20040103267A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20040103267A1 (en) | 2004-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4170218B2 (ja) | キャッシュミスに応答してタスクを切り替えることによってキャッシュベース埋め込みプロセッサのスループットを改善する方法および装置 | |
US8055872B2 (en) | Data processor with hardware accelerator, accelerator interface and shared memory management unit | |
JP2631037B2 (ja) | スプリットレベルのデータキャッシュシステムにおける同期性のためのシステムとその方法 | |
JPH1021074A (ja) | 割り込み制御方式、プロセッサ及び計算機システム | |
JP3683248B2 (ja) | 情報処理装置及び情報処理方法 | |
JP2004062319A (ja) | データ処理装置 | |
JP3900499B2 (ja) | 再構成可能な、命令レベルのハードウェアによる高速化のためにマイクロプロセッサとともにfpgaテクノロジを使用する方法および装置 | |
JP2004192021A (ja) | マイクロプロセッサ | |
JP4111645B2 (ja) | キャッシュミスした後のメモリバスアクセス制御方式 | |
US7877533B2 (en) | Bus system, bus slave and bus control method | |
JP2004234420A (ja) | 割り込み制御方式及び割り込み制御方法 | |
JP2004326633A (ja) | 階層型メモリシステム | |
JP2000181711A (ja) | 命令フェッチのキャンセル方式 | |
JP2002268876A (ja) | パイプライン処理方法、及び情報処理装置 | |
JP2538993B2 (ja) | オペランドストアのキャッシュメモリヘのストア制御方式 | |
JPH02242337A (ja) | 命令プリフェッチ装置 | |
KR100300875B1 (ko) | 캐쉬 미스 시 처리 방법 | |
JP2927751B2 (ja) | 情報処理装置及び情報処理方法及びスケジューリング装置 | |
CN116483743A (zh) | 数据高速缓存预取装置、方法及处理器 | |
JP2001142698A (ja) | メモリアクセス方式 | |
JP4151497B2 (ja) | パイプライン処理装置 | |
JP2003029966A (ja) | データ処理装置 | |
JP2001117819A (ja) | 命令メモリ回路及び情報処理システム | |
JP2000347931A (ja) | キャッシュメモリおよびキャッシュメモリ制御方法 | |
JP2001084143A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050715 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20070629 |