(57)【要約】【課題】  命令群を格納したフラッシュメモリを含むシステムインパッケージ型半導体装置における命令の読み出し速度を改善する。【解決手段】  本発明は、ＣＰＵと、前記ＣＰＵによって実行される第１の命令群を記憶する第１のフラッシュメモリと、前記第１の命令群に含まれる所定の制御命令に従って実行される第２の命令群を記憶する第２のフラッシュメモリとを備え、前記ＣＰＵによる命令の実行前に、前記第１のフラッシュメモリから読み出される命令が分岐命令であるか否かを判断し、該分岐命令であると判断する場合に、該分岐命令が示す分岐先アドレス値で前記第２のフラッシュメモリが読み出し動作するように指示し、該指示に従って前記第２のフラッシュメモリが読み出し動作可能な状態にある間に前記ＣＰＵのプログラムカウンタと前記分岐先アドレス値とが一致した場合に、前記第２のフラッシュメモリから前記第２の命令群の読み出しを開始する、半導体装置である。【選択図】  図３
2015184706.tif 000002
【特許請求の範囲】
【請求項１】
第１の命令群を記憶する第１のフラッシュメモリと、
前記第１の命令群に含まれる所定の制御命令に従って実行される第２の命令群を記憶する第２のフラッシュメモリと、
前記第１のフラッシュメモリ及び前記第２のフラッシュメモリに対するアクセスを制御するアクセス制御部と、
前記第１のフラッシュメモリ及び前記第２のフラッシュメモリのいずれか一方を選択し、該選択されたフラッシュメモリから順次に読み出される命令をＣＰＵに供給するメモリインターフェースであって、該命令が第１の制御命令であるか否かを判断し、該命令が第１の制御命令であると判断する場合に、該第１の制御命令が示す第１のジャンプ先アドレス値を取得する命令検出部を含む、メモリインターフェースと、
ＣＰＵのプログラムカウンタの値と前記命令検出部により取得された第１のジャンプ先アドレス値とを比較して、該比較の結果、前記プログラムカウンタの値と前記第１のジャンプ先アドレスとが一致する場合に、第１のトリガ信号を出力するプログラムカウンタ監視部と、を備え、
前記アクセス制御部は、前記命令検出部により取得された第１のジャンプ先アドレス値に従って前記第２のフラッシュメモリが読み出し可能状態になるように制御し、
前記メモリインターフェースは、前記プログラムカウンタ監視部から出力される前記第１のトリガ信号に基づいて前記第２のフラッシュメモリを選択する、
半導体装置。
【請求項２】
前記プログラムカウンタ監視部は、前記プログラムカウンタの値が所定のインクリメント値以外の値に書き換えられた場合に、前記プログラムカウンタの値と前記第１のジャンプ先アドレスとの比較を行う、請求項１記載の半導体装置。
【請求項３】
前記プログラムカウンタ監視部は、前記取得された第１のジャンプ先アドレス値を格納するレジスタを備える、請求項２記載の半導体装置。
【請求項４】
前記プログラムカウンタ監視部は、前記プログラムカウンタの値が所定のインクリメント値以外の値に書き換えられ、かつ、前記レジスタの内容がＮｕｌｌである場合に、前記ＣＰＵがＨＯＬＤ状態になるように制御する、請求項３記載の半導体装置。
【請求項５】
前記プログラムカウンタ監視部は、前記ＣＰＵによりデコードされた命令に従って前記第２のフラッシュメモリが読み出し可能状態になった場合に、前記ＣＰＵのＨＯＬＤ状態を解除するように制御する、請求項４記載の半導体装置。
【請求項６】
前記アクセス制御部は、前記第２のフラッシュメモリが読み出し可能状態になった場合に、前記第１のトリガ信号を受けるまで、前記第２のフラッシュメモリがアイドル状態になるように制御する、請求項１記載の半導体装置。
【請求項７】
前記命令検出部は、前記第２のフラッシュメモリから命令群が読み出されている場合に、該命令が第２の命令であるか否かを判断し、該命令が第２の命令であると判断する場合に、該第２の命令が示す第２のジャンプ先アドレス値を取得し、
前記アクセス制御部は、前記命令検出部により取得された第２のジャンプ先アドレス値に従って前記第１のフラッシュメモリが読み出し可能状態になるように制御し、
前記プログラムカウンタ監視部は、前記プログラムカウンタの値と前記命令検出部により取得された第２のジャンプ先アドレス値とを比較して、該比較の結果、前記プログラムカウンタの値と前記第２のジャンプ先アドレスとが一致する場合に、第２のトリガ信号を出力し、
前記メモリインターフェースは、前記プログラムカウンタ監視部から出力される前記第２のトリガ信号に基づいて前記第１のフラッシュメモリを選択する、
請求項１記載の半導体装置。
【請求項８】
外部の周辺回路及び周辺機器の少なくともいずれかから割り込み要求信号を受けて、前記ＣＰＵに割り込みをかける割り込みコントローラをさらに備え、
前記割り込みコントローラは、前記割り込み要求信号に基づいて、該割り込みに従う割り込みジャンプ先アドレス値を取得し、
前記アクセス制御部は、前記割り込みコントローラにより取得された割り込みジャンプ先アドレス値に従って前記第２のフラッシュメモリが読み出し可能状態になるように制御し、
前記プログラムカウンタ監視部は、前記プログラムカウンタの値と前記割り込みコントローラにより取得された割り込みジャンプ先アドレス値とを比較して、該比較の結果、前記プログラムカウンタの値と前記割り込みジャンプ先アドレスとが一致する場合に、前記第１のトリガ信号を出力し、
前記メモリインターフェースは、前記プログラムカウンタ監視部から出力される前記第１のトリガ信号に基づいて前記第２のフラッシュメモリを選択する、
請求項１記載の半導体装置。
【請求項９】
前記第１のフラッシュメモリ及び前記第２のフラッシュメモリのそれぞれは、ＮＯＲ型シリアルフラッシュメモリである、請求項１乃至８のいずれか記載の半導体装置。
【請求項１０】
ＣＰＵと、
前記ＣＰＵによって実行される第１の命令群を記憶する第１のフラッシュメモリと、
前記第１の命令群に含まれる所定の制御命令に従って実行される第２の命令群を記憶する第２のフラッシュメモリと、を備え、
前記ＣＰＵによる命令の実行前に、前記第１のフラッシュメモリから読み出される命令が分岐命令であるか否かを判断し、該分岐命令であると判断する場合に、該分岐命令が示す分岐先アドレス値で前記第２のフラッシュメモリが読み出し動作するように指示し、
該指示に従って前記第２のフラッシュメモリが読み出し動作可能な状態にある間に前記ＣＰＵのプログラムカウンタと前記分岐先アドレス値とが一致した場合に、前記第２のフラッシュメモリから前記第２の命令群の読み出しを開始する、
半導体装置。
【請求項１１】
ＣＰＵと、前記ＣＰＵによって実行される第１の命令群を記憶する第１のフラッシュメモリと、前記第１の命令群に含まれる所定の制御命令に従って実行される第２の命令群を記憶する第２のフラッシュメモリとを備える半導体装置における命令読み出し制御方法であって、
前記第１のフラッシュメモリを選択的に制御して、前記第１の命令群を順次に読み出して、前記ＣＰＵに供給することと、
前記第１の命令群を読み出している間に、前記第１の命令群の中から所定の制御命令を検出することと、
前記所定の制御命令が検出される場合に、該所定の制御命令が示すジャンプ先アドレス値を取得することと、
前記取得されたジャンプ先アドレス値に従って、前記第２のフラッシュメモリが読み出し可能状態になるように制御することと、
前記ジャンプ先アドレスを取得した場合に、前記ＣＰＵのプログラムカウンタを監視し、前記プログラムカウンタの値と前記ジャンプ先アドレスとが一致するか否かを判断することと、
前記プログラムカウンタの値と前記ジャンプ先アドレスとが一致すると判断する場合に、所定のトリガ信号を出力することと、
前記出力された所定のトリガ信号に基づいて、前記ＣＰＵに対して供給すべき命令の読み出しを、前記第１のフラッシュメモリから前記読み出し可能状態にある第２のフラッシュメモリに切り替えることと、
を含む、命令読み出し制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置及び命令読み出し制御方法に関し、特に、書き換え可能な不揮発性メモリを用いたシステム・イン・パッケージ型半導体装置及び該半導体装置おける命令読み出し制御方法に関する。
【背景技術】
【０００２】
近年、電子回路システムには、多数の書き換え可能な不揮発性メモリ（フラッシュメモリ）が搭載されている。フラッシュメモリは、主に、ＮＡＮＤ型とＮＯＲ型とがある。一般に、ＮＡＮＤ型フラッシュメモリは、大容量で、したがって、ビット単価が安いため、大容量のデータを扱うのに適しているが、コントローラやシャドウイング用ＲＡＭが必要となり、回路構成が複雑になり易い。一方、ＮＯＲ型フラッシュメモリは、小容量で比較的低速であるが、回路構成がシンプルであるため、プログラムコード（命令コード）やファームウェアを格納するのに適しており、そのため、ＸｉＰ（eXecute-in-Place）と呼ばれる規格も提供されている。
【０００３】
また、ＮＯＲ型フラッシュメモリには、パラレル型とシリアル型とがあり、ＮＯＲ型シリアルフラッシュメモリは、ピン数が少なく、チップ面積を削減でき、したがって、基板実装のコストを節約することができるため、今後も、ＣＰＵとともに混載されるシステム・イン・パッケージ（ＳＩＰ）を中心に利用されることが期待されている。
【０００４】
加えて、電子回路システムの動作速度を向上させることは恒常的な要求であり、動作速度を向上させるためのさまざまな技術が提案されている。
【０００５】
下記特許文献１は、情報処理装置におけるＯＳ等のプログラムを起動する処理に要する時間を削減するため技術を開示する。具体的には、特許文献１は、２個のプロセッサを有する情報処理装置であって、第１のプロセッサが、第２のプロセッサがＤＲＡＭからＯＳに関する命令群を読み出して実行可能となるための準備処理（例えばＤＲＡＭに保持されたカーネルイメージの整合性チェック）を実行する一方、第２のプロセッサが、第１のプロセッサによる準備処理の実行と時間的に並行して、フラッシュメモリからＯＳに関する命令群を読み出して実行し、さらに、第２のプロセッサが、準備処理の完了に応じてＯＳに関する命令群の取得先をフラッシュメモリからＤＲＡＭに切り替えてＯＳを継続的に実行するようにした情報処理装置を開示する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−１４６１４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に開示された従来の情報処理装置では、ＯＳに関する命令群を記憶するためにＤＲＡＭを用いることから、該ＤＲＡＭに設けられた多数のピンに応じた配線を考慮して設計されなければならず、チップの小面積化を図ることが難しかった。つまり、特許文献１のような情報処理装置は、ＯＳの高機能化に伴ってカーネルイメージのサイズの増大に合わせて大容量かつ高速なメモリであるＤＲＡＭを使用可能なシステムポリシーの下で設計されているため、ＤＲＡＭを用いることができないシステム環境や、チップ実装面積の削減の要求が強いシステム環境に対しては、不向きであった。
【０００８】
一方で、ＮＯＲ型フラッシュメモリは、その特性から、高い信頼性が求められるシステム環境において命令コードを格納する目的で用いられる場合が多いが、さらなる読み出し速度を向上させる技術が求められている。この点、ＮＯＲ型シリアルフラッシュメモリは、Ｉ／Ｏピンの数が少なく、チップ面積の削減に大いに寄与するものとして期待されるが、読み出し速度が他のフラッシュメモリに比較して遅いため、システム・イン・パッケージ型の半導体装置に搭載した場合、読み出し速度の観点でボトルネックとなっていた。特に、ＣＰＵがＮＯＲ型シリアルフラッシュメモリから分岐に関わる命令を読み出して、実行しようとする場合、その構造上、ＮＯＲ型シリアルフラッシュメモリの読み出し準備が整うまで、ＣＰＵにウェイトがかかるため、ＣＰＵの性能が低下してしまうという問題があった。すなわち、ＮＯＲ型シリアルフラッシュメモリでは、読み出しアドレスに連続性がある場合には、比較的高速にデータが読み出されるが、読み出しアドレスに連続性がない（例えば分岐命令やジャンプ命令等によるアドレスジャンプ）場合には、アドレスが指定されてからデータが読み出されるまでの処理にオーバーヘッドが生じ、その間、ＣＰＵの実行が待たされてしまうという不都合があった。
【０００９】
そこで、本発明は、命令コードを格納したフラッシュメモリを含むシステム・イン・パッケージ型半導体装置における命令の読み出し速度を改善するアーキテクチャを提供することを目的とする。
【００１０】
より具体的には、本発明は、命令コードを格納したＮＯＲ型シリアルフラッシュメモリを含むシステム・イン・パッケージ型半導体装置においてＣＰＵが分岐に関わる命令を読み出して実行する場合であっても、ＣＰＵを必要以上にホールドさせることのなく、ＣＰＵの効率的な実行を実現するアーキテクチャを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するための本発明は、以下に示す発明特定事項乃至は技術的特徴を含んで構成される。
【００１２】
すなわち、ある観点に従う本発明は、ＣＰＵと、前記ＣＰＵによって実行される第１の命令群を記憶する第１のフラッシュメモリと、前記第１の命令群に含まれる所定の制御命令に従って実行される第２の命令群を記憶する第２のフラッシュメモリとを備える半導体装置である。前記半導体装置は、前記ＣＰＵによる命令の実行前に、前記第１のフラッシュメモリから読み出される命令が分岐命令であるか否かを判断し、該分岐命令であると判断する場合に、該分岐命令が示す分岐先アドレス値で前記第２のフラッシュメモリが読み出し動作するように指示する。また、前記半導体装置は、該指示に従って前記第２のフラッシュメモリが読み出し動作可能な状態にある間に前記ＣＰＵのプログラムカウンタと前記分岐先アドレス値とが一致した場合に、前記第２のフラッシュメモリから前記第２の命令群の読み出しを開始する。
【００１３】
これにより、読み出しアドレスに連続性がない場合であっても、データが読み出されているフラッシュメモリとは別のフラッシュメモリを事前に読み出し可能状態にしておくことで、ＣＰＵの待ち時間を減らし、効率的なＣＰＵの利用を可能にする。
【００１４】
また、別の観点に従う本発明は、第１の命令群を記憶する第１のフラッシュメモリと、前記第１の命令群に含まれる所定の制御命令に従って実行される第２の命令群を記憶する第２のフラッシュメモリと、前記第１のフラッシュメモリ及び前記第２のフラッシュメモリに対するアクセスを制御するアクセス制御部と、前記第１のフラッシュメモリ及び前記第２のフラッシュメモリのいずれか一方を選択し、該選択されたフラッシュメモリから順次に読み出される命令をＣＰＵに供給するメモリインターフェースであって、該命令が第１の制御命令であるか否かを判断し、該命令が第１の制御命令であると判断する場合に、該第１の制御命令が示す第１のジャンプ先アドレス値を取得する命令検出部を含む、メモリインターフェースと、ＣＰＵのプログラムカウンタの値と前記命令検出部により取得された第１のジャンプ先アドレス値とを比較して、該比較の結果、前記プログラムカウンタの値と前記第１のジャンプ先アドレスとが一致する場合に、第１のトリガ信号を出力するプログラムカウンタ監視部とを備える半導体装置である。前記アクセス制御部は、前記命令検出部により取得された第１のジャンプ先アドレス値に従って前記第２のフラッシュメモリが読み出し可能状態になるように制御し、また、前記メモリインターフェースは、前記プログラムカウンタ監視部から出力される前記第１のトリガ信号に基づいて前記第２のフラッシュメモリを選択する。
【００１５】
前記プログラムカウンタ監視部は、前記プログラムカウンタの値が所定のインクリメント値以外の値に書き換えられた場合に、前記プログラムカウンタの値と前記第１のジャンプ先アドレスとの比較を行い得る。
【００１６】
また、前記プログラムカウンタ監視部は、前記取得された第１のジャンプ先アドレス値を格納するレジスタを備え得る。
【００１７】
さらに、前記プログラムカウンタ監視部は、前記プログラムカウンタの値が所定のインクリメント値以外の値に書き換えられ、かつ、前記レジスタの内容がＮｕｌｌである場合に、前記ＣＰＵがＨＯＬＤ状態になるように制御し得る。
【００１８】
さらにまた、前記プログラムカウンタ監視部は、前記ＣＰＵによりデコードされた命令に従って前記第２のフラッシュメモリが読み出し可能状態になった場合に、前記ＣＰＵのＨＯＬＤ状態を解除するように制御し得る。
【００１９】
また、前記アクセス制御部は、前記第２のフラッシュメモリが読み出し可能状態になった場合に、前記第１のトリガ信号を受けるまで、前記第２のフラッシュメモリがアイドル状態になるように制御し得る。
【００２０】
また、前記命令検出部は、前記第２のフラッシュメモリから命令群が読み出されている場合に、該命令が第２の命令であるか否かを判断し、該命令が第２の命令であると判断する場合に、該第２の命令が示す第２のジャンプ先アドレス値を取得し得る。また、前記アクセス制御部は、前記命令検出部により取得された第２のジャンプ先アドレス値に従って前記第１のフラッシュメモリが読み出し可能状態になるように制御し得る。また、前記プログラムカウンタ監視部は、前記プログラムカウンタの値と前記命令検出部により取得された第２のジャンプ先アドレス値とを比較して、該比較の結果、前記プログラムカウンタの値と前記第２のジャンプ先アドレスとが一致する場合に、第２のトリガ信号を出力し得る。そして、前記メモリインターフェースは、前記プログラムカウンタ監視部から出力される前記第２のトリガ信号に基づいて前記第１のフラッシュメモリを選択し得る。
【００２１】
また、前記半導体装置は、外部の周辺回路及び周辺機器の少なくともいずれかから割り込み要求信号を受けて、前記ＣＰＵに割り込みをかける割り込みコントローラをさらに備え得る。前記割り込みコントローラは、前記割り込み要求信号に基づいて、該割り込みに従う割り込みジャンプ先アドレス値を取得し得る。また、前記アクセス制御部は、前記割り込みコントローラにより取得された割り込みジャンプ先アドレス値に従って前記第２のフラッシュメモリが読み出し可能状態になるように制御し得る。また、前記プログラムカウンタ監視部は、前記プログラムカウンタの値と前記割り込みコントローラにより取得された割り込みジャンプ先アドレス値とを比較して、該比較の結果、前記プログラムカウンタの値と前記割り込みジャンプ先アドレスとが一致する場合に、前記第１のトリガ信号を出力し得る。そして、前記メモリインターフェースは、前記プログラムカウンタ監視部から出力される前記第１のトリガ信号に基づいて前記第２のフラッシュメモリを選択し得る。
【００２２】
なお、前記第１のフラッシュメモリ及び前記第２のフラッシュメモリのそれぞれは、ＮＯＲ型シリアルフラッシュメモリであり得る。
【００２３】
また、さらに別の観点に従う本発明は、ＣＰＵと、前記ＣＰＵによって実行される第１の命令群を記憶する第１のフラッシュメモリと、前記第１の命令群に含まれる所定の制御命令に従って実行される第２の命令群を記憶する第２のフラッシュメモリとを備える半導体装置における命令読み出し制御方法である。前記制御方法は、前記第１のフラッシュメモリを選択的に制御して、前記第１の命令群を順次に読み出して、前記ＣＰＵに供給することと、前記第１の命令群を読み出している間に、前記第１の命令群の中から所定の制御命令を検出することと、前記所定の制御命令が検出される場合に、該所定の制御命令が示すジャンプ先アドレス値を取得することと、前記取得されたジャンプ先アドレス値に従って、前記第２のフラッシュメモリが読み出し可能状態になるように制御することと、前記ジャンプ先アドレスを取得した場合に、前記ＣＰＵのプログラムカウンタを監視し、前記プログラムカウンタの値と前記ジャンプ先アドレスとが一致するか否かを判断することと、前記プログラムカウンタの値と前記ジャンプ先アドレスとが一致すると判断する場合に、所定のトリガ信号を出力することと、前記出力された所定のトリガ信号に基づいて、前記ＣＰＵに対して供給すべき命令の読み出しを、前記第１のフラッシュメモリから前記読み出し可能状態にある第２のフラッシュメモリに切り替えること、を含む。
【発明の効果】
【００２４】
本発明によれば、命令コードを格納したフラッシュメモリを含むシステム・イン・パッケージ型半導体装置における命令の読み出し速度を改善することができるようになる。
【００２５】
より具体的には、本発明によれば、命令コードを格納したＮＯＲ型シリアルフラッシュメモリを含むシステム・イン・パッケージ型半導体装置において、ＣＰＵが分岐に関わる命令を読み出して実行する場合であっても、ＣＰＵを必要以上にホールドさせることのなく、ＣＰＵの効率的な実行を実現することができるようになる。
【００２６】
本発明の他の技術的特徴、目的、及び作用効果乃至は利点は、添付した図面を参照して説明される以下の実施形態により明らかにされる。
【図面の簡単な説明】
【００２７】
【図１】本発明の一実施形態に係る半導体装置の概略構成を説明するためのブロックダイアグラムである。
【図２】本発明の一実施形態に係る半導体装置のメモリモジュールに格納される命令群を概念的に説明する図である。
【図３】本発明の一実施形態に係る半導体装置の機能的構成の一例を示すブロックダイアグラムである。
【図４】本発明の一実施形態に係る半導体装置のメモリＩ／Ｆの動作を説明するためのフローチャートである。
【図５】本発明の一実施形態に係る半導体装置のプログラムカウンタ監視部の動作を説明するためのフローチャートである。
【図６】本発明の一実施形態に係る半導体装置の切り替え動作の一例を説明するタイミングチャートの一例を示す図である。
【発明を実施するための形態】
【００２８】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。本発明は、その趣旨を逸脱しない範囲で種々変形（例えば各実施形態を組み合わせる等）して実施することができる。また、以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付して表している。図面は模式的なものであり、必ずしも実際の寸法や比率等とは一致しない。図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることがある。
【００２９】
［第１の実施形態］
図１は、本発明の一実施形態に係る半導体装置の概略を説明するためのブロックダイアグラムである。同図に示すように、半導体装置１００は、例えば、ＣＰＵ１１０と、メモリモジュール１２０と、メモリインターフェース（以下、「メモリＩ／Ｆ」という。）１３０と、アクセス制御部１４０と、プログラムカウンタ監視部（以下、「ＰＣ監視部」という。）１５０と、割り込みコントローラ１６０とを含んで構成される。半導体装置１００は、これら各種のコンポーネントが一体にパッケージ化されたシステム・イン・パッケージ（ＳＩＰ）である。
【００３０】
ＣＰＵ１１０は、プログラムとして記述された命令コード（以下、「命令」という。）を解釈することにより処理を実行するコンポーネントである。ここでは、「ＣＰＵ」という語は、処理装置を意味するプロセッサやＭＰＵ、メインプロセッサ、マイクロコントローラ等と同義のものとして扱われ、また、マルチコアプロセッサを意味するものであっても良い。ＣＰＵ１１０は、例えば、演算回路と、デコーダと、各種のレジスタと、プログラムカウンタとを含んで構成される（図３参照）。ＣＰＵ１１０はまた、キャッシュメモリを含んで良い。ＣＰＵ１１０は、汎用レジスタ方式であっても良いし、アキュムレータ方式であっても良く、また、これら以外の方式であっても良い。ＣＰＵ１１０は、命令バス及びデータバスを介してメモリＩ／Ｆ１３０と接続される。
【００３１】
メモリモジュール１２０は、相互に独立して動作可能な少なくとも２つ以上の書き換え可能な不揮発性メモリを含んで構成される。本実施形態のメモリモジュール１２０の一例は、ＮＯＲ型フラッシュメモリであり、より具体的には、ＮＯＲ型シリアルフラッシュメモリである。本例では、メモリモジュール１２０は、第１のＮＯＲ型シリアルフラッシュメモリ（以下、「第１のフラッシュメモリ」という。）１２０Ａと、第２のＮＯＲ型シリアルフラッシュメモリ（以下、「第２のフラッシュメモリ」という。）１２０Ｂとを含んで構成されている。第１のフラッシュメモリ１２０Ａ及び第２のフラッシュメモリ１２０Ｂは、ＣＰＵ１１０によって実行される命令群を格納する。具体的には、本実施形態では、第１のフラッシュメモリ１２０Ａは、メインルーチンを構成する第１の命令群を格納し、第２のフラッシュメモリ１２０Ｂは、第１の命令群に含まれる分岐に関する制御命令にしたがって実行される分岐ルーチンを構成する第２の命令群を格納する。図２は、第１のフラッシュメモリ１２０Ａ及び第２のフラッシュメモリ１２０Ｂのそれぞれに格納される命令群を概念的に説明する図である。第１のフラッシュメモリ１２０Ａ及び第２のフラッシュメモリ１２０Ｂは、所定のイネーブル信号にしたがって、所定のアドレスからデータを読み出すことが可能な状態になる。
【００３２】
なお、メモリモジュール１２０は、ＮＯＲ型シリアルフラッシュメモリに加え、ＮＡＮＤ型フラッシュメモリを含んでも良いし、また、揮発性メモリ（例えばＤＲＡＭ）を含んでも良い。
【００３３】
メモリＩ／Ｆ１３０は、ＣＰＵ１１０とメモリモジュール１２０とのインターフェース回路である。具体的には、メモリＩ／Ｆ１３０は、所定のクロックに従ってメモリモジュール１２０から読み出された命令をＦＩＦＯバッファ（プリフェッチバッファ）に格納した後、該命令をＣＰＵ１１０の命令バスに適合したデータ形式に変換して、ＣＰＵ１１０に供給する。すなわち、本例では、第１のフラッシュメモリ１２０Ａ及び第２のフラッシュメモリ１２０Ｂはシリアルタイプであることから、メモリＩ／Ｆ１３０は、シリアル形式で出力される命令を構成するデータ列を、パラレル形式のデータ列に変換し、ＣＰＵ１１０に供給する。この場合、命令は、典型的には、パイプライン方式で出力され得る。図示はしていないが、「プログラムデータ」を構成するデータ列は、所定のデータ形式に変換され、データバスを介して、ＣＰＵ１１０に供給される。本実施形態のメモリＩ／Ｆ１３０は、後述するように、命令をプリフェッチバッファに格納した段階で、該命令をプリデコードし、分岐命令があるか否かを検出する。また、本実施形態のメモリＩ／Ｆ１３０は、後述するように、該検出の結果に基づいて、所定のタイミングで、第１のフラッシュメモリ１２０Ａ及び第２のフラッシュメモリ１２０Ｂのいずれか一方が選択されるように、Ｉ／Ｏ信号線を切り替える。
【００３４】
アクセス制御部１４０は、メモリモジュール１２０に対するアクセスを制御する回路である。すなわち、アクセス制御部１４０は、指定された所定のアドレスを示す値で第１のフラッシュメモリ１２０Ａ及び第２のフラッシュメモリ１２０Ｂの少なくとも一方が読み出し可能状態になるように制御する。また、アクセス制御部１４０は、読み出し可能状態になった第１のフラッシュメモリ１２０Ａ及び前記第２のフラッシュメモリ１２０Ｂの少なくとも一方から、データ列（命令）が読み出されるように制御する。
【００３５】
ＰＣ監視部１５０は、ＣＰＵ１１０のプログラムカウンタ１１５（図３参照）を監視し、プログラムカウンタ１１５の値が分岐命令等に従って変化した場合に、メモリＩ／Ｆ１３０で検出された分岐命令が示す分岐先アドレス（ジャンプ先アドレス）を示す値（以下、「分岐先アドレス値」という。）とプログラムカウンタ１１５の値とを比較し、両者が一致した場合に、所定のトリガ信号を出力する。出力された所定のトリガ信号は、例えば、メモリＩ／Ｆ１３０及びアクセス制御部１４０に入力される。
【００３６】
割り込みコントローラ１６０は、図示しない周辺回路乃至は機器から送信される割り込み要求信号を受信して、ＣＰＵ１１０に対して所定の割り込みをかける回路である。すなわち、割り込みコントローラ１６０は、割り込み信号の内容に応じて、ＣＰＵ１１０の動作タイミングに合わせて、指定された割り込みアドレス値でＣＰＵ１１０のプログラムカウンタを書き換え、これにより、ＣＰＵ１１０の制御を該割り込みアドレスにジャンプさせる。本実施形態の割り込みコントローラ１６０はまた、割り込み要求信号を受信すると、該割り込み要求信号に応じたジャンプ先アドレスを示す値（以下、「ジャンプ先アドレス値」という。）をアクセス制御部１４０に出力する。この場合、割り込みコントローラ１６０は、ＣＰＵ１１０への割り込みタイミングよりも前に、アクセス制御部１４０にジャンプ先アドレス値を出力する。アクセス制御部１４０は、該ジャンプ先アドレス値に従って、第１のフラッシュメモリ１２０Ａ及び前記第２のフラッシュメモリの少なくとも一方を読み出し可能状態になるように制御する。
【００３７】
なお、本実施形態では、割り込みコントローラ１６０は、アクセス制御部１４０にジャンプ先アドレス値を出力し、その後、ＣＰＵ１１０に対して割り込みをかけるように構成されているが、ＣＰＵ１１０に対して割り込みをかける従前の割り込みコントローラとは別に、周辺回路等から送信される割り込み要求信号を検出し、アクセス制御部１４０にジャンプ先アドレス値を出力する割り込み検出回路が設けられても良い。すなわち、割り込み検出回路は、割り込み要求信号を受けると、まず、所定の動作クロックが示す第１のタイミングで、アクセス制御部１４０にジャンプ先アドレス値を出力し、その後、割り込みコントローラ１６０は、該所定の動作クロックが示す第２のタイミングで、ＣＰＵ１１０に対して割り込みをかける。このように、割り込み検出回路と割り込みコントローラ１１０とが動作クロックを共通にすることで、割り込みコントローラ１１０がＣＰＵ１１０に対して割り込みをかけるよりも前のタイミングで、割り込み検出回路は、アクセス制御部１４０に割り込み要求によるジャンプ先アドレスを通知することができる。
【００３８】
図３は、本発明の一実施形態に係る半導体装置の機能的構成の一例を示すブロックダイアグラムである。同図では、図１に示した半導体装置のより詳細な機能的構成を説明するために、メモリＩ／Ｆ１３０の構成が詳細化されている。すなわち、同図に示すように、本実施形態のメモリＩ／Ｆ１３０は、例えば、切り替え制御部１３１と、分岐命令検出部１３２とを含んで構成される。また、ＣＰＵ１１０においては、演算回路１１１と、命令レジスタ１１２と、デコーダ１１３と、汎用レジスタ１１４と、プログラムカウンタ１１５とが特に図示されている。
【００３９】
切り替え制御部１３１は、第１のフラッシュメモリ１２０Ａ及び第２のフラッシュメモリ１２０Ｂのいずれか一方が選択されるように、そのＩ／Ｏ信号線を切り替えるための回路である。切り替え制御は、例えば、ＰＣ監視部１５０から出力される所定のトリガ信号に基づいて行われる。選択されたフラッシュメモリからシリアル形式で読み出されたデータ列は、分岐命令検出部１３２に供給される。
【００４０】
分岐命令検出部１３２は、例えば、図示しないプリフェッチバッファを備え、選択されたフラッシュメモリから読み出されたデータ列を該プリフェッチバッファにバッファしながら、パラレル形式のデータ（命令）に変換し、ＣＰＵ１１０の命令バスに出力する。命令検出部１３２から出力された命令は、ＣＰＵ１１０の命令レジスタに取り込まれる。また、バッファリング中、分岐命令検出部１３２は、該バッファされたデータ列をプリデコードして、特定の命令（例えば、分岐命令、サブルーチン命令等）が含まれるか否かを判断し、例えば分岐命令が含まれると判断する場合に、該分岐命令が示す分岐先アドレス値を取得し、これをアクセス制御部１４０及びＰＣ監視部１５０のそれぞれに出力する。
【００４１】
なお、分岐命令検出部１３２は、第１のフラッシュメモリ１２０Ａからデータ列が順次に読み出されている間は、上述のように、メインルーチンから分岐ルーチンへ分岐制御するための分岐命令の検出を行うが、第２のフラッシュメモリ１２０Ｂに切り替えられ、第２のフラッシュメモリ１２０Ｂからデータ列が順次に読み出されている間は、分岐ルーチンからメインルーチンへ復帰制御するための所定の命令の検出を行う。すなわち、分岐命令検出部１３２は、メインルーチンへ復帰制御するための所定の命令をアドレス制御部１４０及びＰＣ監視部１５０に出力する。
【００４２】
図４は、本発明の一実施形態に係る半導体装置のメモリＩ／Ｆの動作を説明するためのフローチャートである。
【００４３】
まず、半導体装置１００が起動されると、初期化処理として、各コンポーネントの動作確認後、切り替え制御部１３１は、第１のフラッシュメモリ１２０ＡのＩ／Ｏ信号線を選択する（Ｓ４０１）。この状態で、ＣＰＵ１１０は、第１のフラッシュメモリ１２０Ａからの読み出しが可能になるため、プログラムカウンタ１１５の値に従って、第１のフラッシュメモリ１２０Ａから順番にデータ列の読み出しが開始されるように制御する。
【００４４】
メモリＩ／Ｆ１３０は、第１のフラッシュメモリ１２０Ａからデータ列が読み出されると、該データ列をプリフェッチバッファにバッファする（Ｓ４０２）。分岐命令検出部１３２は、第１のフラッシュメモリ１２０Ａからの読み出しであるか、第２のフラッシュメモリ１２０Ｂからの読み出しであるかによって、以下に示すような、それぞれ異なる処理を行う。
【００４５】
すなわち、分岐命令検出部１３２は、第１のフラッシュメモリ１２０Ａからの読み出しであると判断する場合（Ｓ４０３のＹｅｓ）、分岐命令検出部１３２は、該データ列（即ち、命令）のプリデコードを行う（Ｓ４０４）。プリデコードの結果、分岐命令検出部１３２は、該命令が分岐命令でないと判断する場合（Ｓ４０５のＮｏ）、該データ列を命令バスに適合する所定のデータ形式に変換し、所定のタイミングで、ＣＰＵ１１０の命令レジスタ１１２に出力する（Ｓ４０８）。
【００４６】
一方、プリデコードの結果、該命令が分岐命令であると判断する場合（Ｓ４０５のＹｅｓ）、分岐命令検出部１３２は、該分岐命令が示す分岐先アドレス値を取得し（Ｓ４０６）、該取得した分岐先アドレス値をアクセス制御部１４０及びＰＣ監視部１５０のそれぞれに出力する（Ｓ４０７）。そして、分岐命令検出部１３２は、該データ列を命令バスに適合する所定のデータ形式に変換し、ＣＰＵ１１０の命令レジスタに出力する（Ｓ４０８）。
【００４７】
これに対して、分岐命令検出部１３２は、第１のフラッシュメモリ１２０Ａからの読み出しでない、すなわち、第２のフラッシュメモリ１２０Ｂからの読み出しであると判断する場合（Ｓ４０３のＮｏ）、分岐命令検出部１３２は、同様に、該データ列（命令）のプリデコードを行って（Ｓ４０９）、該データ列が復帰制御に関する命令であるか否かを判断する（Ｓ４１０）。プリデコードの結果、該命令が復帰制御に関する命令でないと判断する場合（Ｓ４１０のＮｏ）、分岐命令検出部１３２は、該データ列を命令バスに適合する所定のデータ形式に変換し、所定のタイミングで、ＣＰＵ１１０の命令レジスタ１１２に出力する（Ｓ４０８）。
【００４８】
一方、プリデコードの結果、該命令が復帰制御に関する命令であると判断する場合（Ｓ４１０のＹｅｓ）、分岐命令検出部１３２は、該命令が示す復帰先アドレス値（例えば、ジャンプ先アドレス値）を取得し（Ｓ４１１）、該取得した復帰先アドレスをアクセス制御部１４０及びＰＣ監視部１５０のそれぞれに出力する（Ｓ４１２）。そして、分岐命令検出部１３２は、該データ列を命令バスに適合する所定のデータ形式に変換し、ＣＰＵ１１０の命令レジスタに出力する（Ｓ４０８）。
【００４９】
なお、分岐命令検出部１３２は、分岐命令のうち、分岐先アドレス値を取得可能な特定の分岐命令のみを検出するようにしても良い。すなわち、分岐命令検出部１３２は、分岐先アドレス値を取得できない分岐命令については、他の命令と同様に、単に、ＣＰＵ１１０に供給する。分岐先アドレス値を取得できない分岐命令の一例は、ＣＰＵ１１０の実行時に分岐先アドレスが決定されるレジスタ間接分岐命令である。
【００５０】
図５は、本発明の一実施形態に係る半導体装置のプログラムカウンタ監視部の動作を説明するためのフローチャートである。
【００５１】
すなわち、同図に示すように、ＰＣ監視部１５０は、まず、分岐命令検出部１３２から所定のアドレス値（例えば分岐先アドレス値）が送られてきたか否かを監視する（Ｓ５０１）。ＰＣ監視部１５０は、分岐先アドレス値が送られてきたことを検出すると（Ｓ５０１のＹｅｓ）、該分岐先アドレス値をレジスタに格納し（Ｓ５０２）、プログラムカウンタ１１５の監視モードに入る（Ｓ５０３〜Ｓ５０４）。すなわち、ＰＣ監視部１５０は、プログラムカウンタ１１５を参照して（Ｓ５０３）、プログラムカウンタ１１５の値が通常のインクリメント値（例えば“１”）以外の値で書き換えられたか否かを判断する（Ｓ５０４）。通常のインクリメント値以外の値で書き換えられる場合とは、例えば、分岐先アドレス値がセットされる場合である（ＰＣ≠ＰＣ＋１）。ＰＣ監視部１５０は、プログラムカウンタ１１５の値が通常のインクリメント値以外の値で書き換えられたと判断する場合（Ｓ５０４のＹｅｓ）、レジスタに格納されている分岐先アドレス値とプログラムカウンタ１１５の値とが一致するか否かを判断する（Ｓ５０５）。ＰＣ監視部１５０は、レジスタに格納された分岐先アドレスとプログラムカウンタ１１５の値とが一致すると判断する場合（Ｓ５０５のＹｅｓ）、所定のトリガ信号を切り替え制御部１３１及びアクセス制御部１４０のそれぞれに出力する（Ｓ５０６）。これにより、データ列の読み出し元は、第１のフラッシュメモリ１２０Ａから第２のフラッシュメモリ１２０Ｂに切り替えられることになる。続いて、ＰＣ監視部１５０は、レジスタをリセットし（Ｓ５０７）、次の監視動作に備える（Ｓ５０１）。
【００５２】
ＰＣ監視部１５０は、分岐命令検出部１３２から復帰制御に関するアドレス値が送られてきたことを検出した場合も、上記と同様に処理を行う。
【００５３】
図３に戻り、半導体装置１００における第１のフラッシュメモリ１２０Ａから第２のフラッシュメモリ１２０Ｂへの切り替え動作について説明する。
【００５４】
すなわち、まず、半導体装置１００が初期化されると、アクセス制御部１４０は、イネーブル信号ＥＮＡ１を第１のフラッシュメモリ１２０Ａに供給して、クロックＣＬＫ１（図示せず）が第１のフラッシュメモリ１２０Ａに供給されるように制御するとともに、第１のフラッシュメモリ１２０Ａの所定のアドレス（例えばプログラムカウンタ１１５が示すアドレス）からデータ列が読み出し可能になるように制御する。この状態で、切り替え制御部１３１は、第１のフラッシュメモリ１２０ＡのＩ／Ｏ信号線を選択することで、プログラムカウンタ１１５の値に従って、第１のフラッシュメモリ１２０Ａからデータ列の読み出しが開始される。
【００５５】
第１のフラッシュメモリ１２０Ａから読み出されたデータ列がプリフェッチバッファにバッファされると、分岐命令検出部１３２は、プリデコードを行い、分岐命令があるか否かを判断する。分岐命令検出部１３２は、プリデコードした命令が分岐命令以外の命令であると判断する場合には、命令バスを介して、該命令をＣＰＵ１１０に供給し、これにより、該命令はＣＰＵ１１０の命令レジスタ１１２に格納されることになる。一方、分岐命令検出部１３２は、プリデコードした命令が分岐命令であると判断する場合には、該分岐命令をＣＰＵ１１０に供給するとともに、該分岐命令が示す分岐先アドレス値を取得して、これをアクセス制御部１４０及びＰＣ監視部１５０のそれぞれに出力する。
【００５６】
アクセス制御部１４０は、分岐先アドレス値を受けると、イネーブル信号ＥＮＡ２を供給して、クロックＣＬＫ２（図示せず）が第２のフラッシュメモリ１２０Ｂに供給されるように制御し、第２のフラッシュメモリ１２０Ｂが該分岐先アドレスの位置からデータ列を読み出し可能になるように制御する。アクセス制御部１４０は、第２のフラッシュメモリ１２０Ｂから例えばＲＥＡＤＹ信号（図示せず）を受け、第２のフラッシュメモリ１２０Ｂが読み出し可能状態になったことを検出すると、一旦、イネーブル信号ＥＮＡ２の供給を停止し、ＣＰＵ１１０での準備が整うまで、第２のフラッシュメモリ１２０Ｂをアイドル状態にする。かかるアイドル状態を設けることで、不要なクロックの供給を停止し、半導体装置１００の省電力化を図ることができる。
【００５７】
また、かかるアクセス制御部１４０の動作に並行して、ＰＣ監視部１５０は、分岐先アドレスを図示しないレジスタに一時的に格納する。
【００５８】
ＣＰＵ１１０においては、典型的には、分岐命令検出部１３２から命令バスを介して供給された命令が命令レジスタ１１２に格納されると、該命令は、例えばパイプライン方式で、デコーダ１１３によって順次にデコードされ、これにより、演算回路１１１は、該デコーダ１１３の解釈結果及び汎用レジスタ１１４の値に基づいて所定の演算を実行することで、所望の処理を遂行することができる。デコーダ１１３によりデコードされる毎に、プログラムカウンタ１１５の値は、順次にインクリメントされる（すなわち、ＰＣ＝ＰＣ＋１）。デコーダ１１３が、命令を分岐命令であると判断すると、プログラムカウンタ１１５には、該分岐命令が示す分岐先アドレスがセットされる（すなわち、ＰＣ≠ＰＣ＋１）。
【００５９】
プログラムカウンタ１１５の値は、ＰＣ監視部１５０によって監視されている。すなわち、ＰＣ監視部１５０は、プログラムカウンタ１１５に分岐先アドレス値がセットされたか否か、及び分岐命令検出部１３２から受け取った分岐先アドレス値とプログラムカウンタ１１５の値とが一致するか否かを監視している。ＰＣ監視部１５０は、プログラムカウンタ１１５に分岐先アドレス値がセットされ、かつ、分岐命令検出部１３２から受け取った分岐先アドレスとプログラムカウンタ１１５の値とが一致すると判断する場合、所定のトリガ信号を切り替え制御部１３１及びアクセス制御部１４０のそれぞれに出力し、レジスタの内容をリセットする。これを受けて、切り替え制御部１３１は、Ｉ／Ｏ信号線を第１のフラッシュメモリ１２０Ａから第２のフラッシュメモリ１２０Ｂに切り替える。また、アクセス制御部１４０は、第１のフラッシュメモリ１２０Ａに対するイネーブル信号ＥＮＡ１の供給を停止し、読み出し状態可能にある第２のフラッシュメモリ１２０Ｂに対するイネーブル信号ＥＮＡ２の供給を再開する。これにより、第２のフラッシュメモリ１２０Ｂに対するクロックＣＬＫ２の供給が再開され、直ちに、第２のフラッシュメモリ１２０Ｂから分岐先アドレスに従う分岐ルーチンの命令が順次に読み出されることになる。
【００６０】
ところで、分岐命令検出部１３２は、分岐先アドレスを取得できない分岐命令を検出した場合、他の通常の命令と同様に、単に、ＣＰＵ１１０に供給する。ＣＰＵ１１０において、デコーダ１１３によって分岐先アドレス値を取得できない分岐命令がデコードされることで、プログラムカウンタ１１５に該デコードに従った値がセットされる。つまり、プログラムカウンタ１１５の値は、通常のインクリメント値以外の値で書き換えられることになる（即ち、ＰＣ≠ＰＣ＋１）。一方で、ＰＣ監視部１５０は、プログラムカウンタ１１５の値が通常のインクリメント値以外の値にセットされたことを検出するが、レジスタの内容はＮｕｌｌであって、したがって、分岐先アドレス値を格納していない。従って、ＰＣ監視部１５０は、ＣＰＵ１１０に対してＨＯＬＤ信号を出力し、該分岐先アドレス値に従ってフラッシュメモリが読み出し可能状態になるまで、ＣＰＵ１１０の動作を一時的にホールドさせる。一方で、ＰＣ監視部１５０は、プログラムカウンタ１１５の値をアクセス制御部１４０に出力するとともに、切り替え制御部１３１に所定のトリガ信号を出力する。これを受け、アクセス制御部１４０は、直ちに、第２のフラッシュメモリ１２０Ｂが動作するように制御するとともに、第１のフラッシュメモリ１２０Ａが動作を停止するように制御し、また、切り替え制御部１３１は、Ｉ／Ｏ信号線を第１のフラッシュメモリ１２０Ａから第２のフラッシュメモリ１２０Ｂに切り替える。
【００６１】
第２のフラッシュメモリ１２０Ｂからデータ列が読み出され、上述したように、分岐先アドレス値に対応する命令がバッファされると、分岐命令検出部１３２は、例えばＲＥＡＤＹ信号をＰＣ監視部１５０に出力する。ＰＣ監視部１５０は、これを受けて、ＣＰＵ１１０に対するＨＯＬＤ信号を解除し、ＣＰＵ１１０の動作を再開させる。これにより、分岐命令検出部１３２から供給された命令は、ＣＰＵ１１０においてデコードされ、演算実行されることになる。
【００６２】
図６は、本発明の一実施形態に係る半導体装置の切り替え動作の一例を説明するタイミングチャートの一例を示す図である。
【００６３】
同図に示すように、クロックＣＬＫ１に従い、第１のフラッシュメモリ１２０Ａからデータ列（命令）が読み出されているとする。この状態で、例えば、分岐命令検出部１３２が分岐命令を検出すると（時刻ｔ０）、該分岐命令が示す分岐先アドレス値を取得して、これをアドレス制御部１４０及びＰＣ監視部１５０のそれぞれに出力する。一方で、分岐命令検出部１３２は、パイプライン方式で、データ列を所定のデータ形式に変換しながら、命令バスを介してＣＰＵ１１０に供給する。
【００６４】
アクセス制御部１４０は、分岐先アドレス値を受けると、イネーブル信号ＥＮＡ２を“Ｈ”にする（時刻ｔ１）。これにより、第２のフラッシュメモリ１２０Ｂに対してクロックＣＬＫ２の供給が開始され、第２のフラッシュメモリ１２０Ｂは該分岐先アドレスの位置から読み出しが可能になるように動作を開始する。
【００６５】
第２のフラッシュメモリ１２０Ｂは読み出し可能状態になると、例えば、図示しないＲＥＡＤＹ信号を出力する。アクセス制御部１４０は、これを受けて、イネーブル信号ＥＮＡ２を“Ｌ”にし、第２のフラッシュメモリ１２０Ｂを読み出し可能状態にしたまま、一旦、アイドル状態にさせる（時刻ｔ２）。
【００６６】
ＣＰＵ１１０に供給された命令は、順次に、デコードされ、演算実行されることとなるが、これに伴い、プログラムカウンタ１１５の値が１ずつインクリメントされることで、メモリモジュール１２０から読み出されるアドレス値が更新されていく。デコーダ１１３によって分岐命令がデコードされると、その分岐先アドレス値がプログラムカウンタ１１５にセットされる。ＰＣ監視部１５０は、分岐命令検出部１３２から受け取った分岐先アドレス値とプログラムカウンタ１１５の値とが一致すると判断すると、所定のトリガ信号を切り替え制御部１３１及びアクセス制御部１４０のそれぞれ出力する（時刻ｔ３）。
【００６７】
切り替え制御部１３１は、所定のトリガ信号を検出すると、選択信号ＳＥＬを出力し、Ｉ／Ｏ信号線を第１のフラッシュメモリ１２０Ａから第２のフラッシュメモリ１２０Ｂに切り替える（時刻ｔ４）。アクセス制御部１４０は、これと略同時並行的に、第１のフラッシュメモリ１２０Ａに対するイネーブル信号ＥＮＡ１を“Ｌ”にし、第２のフラッシュメモリ１２０Ｂに対するイネーブル信号ＥＮＡ２を“Ｈ”にする。これにより、第１のフラッシュメモリ１２０Ａに対するクロックＣＬＫ１の供給が停止し、第２のフラッシュメモリ１２０Ｂに対してクロックＣＬＫ２の供給が開始され、第２のフラッシュメモリ１２０Ｂから分岐ルーチンの命令が読み出されるようになる（時刻ｔ５）。
【００６８】
以上のように、本実施形態によれば、命令コードを格納した切り替え選択可能な例えば２個のフラッシュメモリを用意し、メモリＩ／Ｆ１３０が、一方のフラッシュメモリから読み出されるデータから、ＣＰＵ１１０による演算実行前に、特定の命令を検出し、これを受けて、アクセス制御部１４０が、他方のフラッシュメモリの読み出しの準備を行うので、ＣＰＵ１１０による該特定の命令が演算実行された時点で、該他方のフラッシュメモリから、直ちに、次の命令が読み出されるようになる。すなわち、読み出しアドレスに連続性がない場合であっても、データが読み出されているフラッシュメモリとは別のフラッシュメモリを事前に読み出し可能状態にしておくことで、ＣＰＵの待ち時間を減らし、効率的なＣＰＵの利用を可能にする。
【００６９】
［第２の実施形態］
本実施形態は、半導体装置１００において、サブルーチン命令に従って、第１のフラッシュメモリ１２０Ａと第２のフラッシュメモリ１２０Ｂとの間で切り替え制御を行う技術を開示する。以下の説明では、分岐命令検出部１３２が、分岐命令に代え、又はこれに加えて、サブルーチン命令を検出することによって、フラッシュメモリの切り替え制御が行われる例について、図３を参照しつつ、説明する。
【００７０】
本実施形態では、例えば、第１のフラッシュメモリ１２０Ａは、メインルーチンを構成する第１の命令群を格納し、第２のフラッシュメモリ１２０Ｂは、分岐ルーチンを構成する第２の命令群に代え、又はこれに加え、第１の命令群に含まれるサブルーチン命令に従って実行されるサブルーチンを構成する第３の命令群を格納する。
【００７１】
上述したように、半導体装置１００が初期化されると、アクセス制御部１４０は、イネーブル信号ＥＮＡ１を第１のフラッシュメモリ１２０Ａに供給して、クロックＣＬＫ１（図示せず）が第１のフラッシュメモリ１２０Ａに供給されるように制御するとともに、第１のフラッシュメモリ１２０Ａの所定のアドレス（例えばプログラムカウンタ１１５が示すアドレス）からデータ列が読み出し可能になるように制御する。この状態で、切り替え制御部１３１は、第１のフラッシュメモリ１２０ＡのＩ／Ｏ信号線を選択することで、第１のフラッシュメモリ１２０Ａからデータ列の読み出しが開始される。
【００７２】
第１のフラッシュメモリ１２０Ａから読み出されたデータ列がプリフェッチバッファにバッファされると、分岐命令検出部１３２は、プリデコードを行い、サブルーチン命令があるか否かを判断する。分岐命令検出部１３２は、プリデコードした命令がサブルーチン命令（及び分岐命令）以外であると判断する場合には、命令バスを介して、該命令をＣＰＵ１１０に供給し、これにより、該命令はＣＰＵ１１０の命令レジスタ１１２に保持されることになる。一方、分岐命令検出部１３２は、プリデコードした命令がサブルーチン命令であると判断する場合には、該サブルーチン命令をＣＰＵ１１０に供給するとともに、該サブルーチン命令が示すジャンプ先アドレス値を取得して、これをアクセス制御部１４０及びＰＣ監視部１５０のそれぞれに出力する。
【００７３】
アクセス制御部１４０は、ジャンプ先アドレス値を受けると、イネーブル信号ＥＮＡ２を供給して、クロックＣＬＫ２（図示せず）が第２のフラッシュメモリ１２０Ｂに供給されるように制御し、第２のフラッシュメモリ１２０Ｂが該ジャンプ先アドレスからデータ列が読み出し可能になるように制御する。アクセス制御部１４０は、第２のフラッシュメモリ１２０Ｂから例えばＲＥＡＤＹ信号（図示せず）を受け、第２のフラッシュメモリ１２０Ｂが読み出し可能状態になったことを検出すると、一旦、第２のフラッシュメモリ１２０Ｂをアイドル状態にする。一方で、ＰＣ監視部１５０は、ジャンプ先アドレス値を図示しないレジスタに一時的に格納する。
【００７４】
一方、ＣＰＵ１１０において、デコーダ１１３によりサブルーチン命令がデコードされた際、スタックポインタに従って、プログラムカウンタ１１５に、サブルーチンの復帰先アドレス値（すなわち、ＰＣ＝ＰＣ＋１）がスタックされ、さらに、該サブルーチン命令が示すジャンプ先アドレス値がスタックされる。
【００７５】
ＰＣ監視部１５０は、プログラムカウンタ１１５にジャンプ先アドレス値がセットされたことを検出すると、分岐命令検出部１３２から受け取ったジャンプ先アドレス値とプログラムカウンタ１１５の値とが一致するか否かを判断する。すなわち、ＰＣ監視部１５０は、プログラムカウンタ１１５にジャンプ先アドレス値がセットされ、かつ、分岐命令検出部１３２から受け取ったジャンプ先アドレス値とプログラムカウンタ１１５の値とが一致すると判断する場合、所定のトリガ信号を切り替え制御部１３１及びアクセス制御部１４０に出力する。また、ＰＣ監視部１５０は、プログラムカウンタ１１５のスタックポインタに従って、サブルーチンの復帰先アドレス値をレジスタに格納する。
【００７６】
切り替え制御部１３１は、所定のトリガ信号を受けると、Ｉ／Ｏ信号線を第１のフラッシュメモリ１２０Ａから第２のフラッシュメモリ１２０Ｂに切り替える。また、アクセス制御部１４０は、第１のフラッシュメモリ１２０Ａに対するイネーブル信号ＥＮＡ１の供給を停止し、アイドル状態可能にある第２のフラッシュメモリ１２０Ｂに対するイネーブル信号ＥＮＡ２の供給を再開する。これにより、第２のフラッシュメモリ１２０Ｂに対するクロックＣＬＫ２の供給が再開され、直ちに、第２のフラッシュメモリ１２０Ｂからジャンプ先アドレス値に従うサブルーチンの命令が順次に読み出されることになる。
【００７７】
分岐命令検出部１３２は、第２のフラッシュメモリ１２０Ｂから読み出されたデータ列からサブルーチンの終了を示すリターン命令を検出すると、リターン信号をＰＣ監視部１５０に出力する。ＰＣ監視部１５０は、リターン信号を受けて、レジスタに格納されている復帰先アドレス値をアドレス制御部１４０に出力する。
【００７８】
アドレス制御部１４０は、復帰先アドレス値を受けると、イネーブル信号ＥＮＡ２を供給して、クロックＣＬＫ１が第１のフラッシュメモリ１２０Ａに供給されるように制御し、第１のフラッシュメモリ１２０Ａが該復帰先アドレスの位置からデータ列を読み出し可能になるように制御する。アクセス制御部１４０は、第１のフラッシュメモリ１２０Ａから例えばＲＥＡＤＹ信号を受け、第１のフラッシュメモリ１２０Ａが読み出し可能状態になったことを検出すると、一旦、第１のフラッシュメモリ１２０Ａをアイドル状態にする。
【００７９】
一方、ＣＰＵ１１０において、デコーダ１１３によりリターン命令がデコードされた際、スタックポインタに従って、プログラムカウンタ１１５の値が、サブルーチンのリターンアドレスにセットされる。これにより、ＰＣ監視部１５０は、レジスタに格納した復帰先アドレス値とプログラムカウンタ１１５の値とが一致したことを検出し、所定のトリガ信号を切り替え制御部１３１及びアドレス制御部１４０のそれぞれに出力するとともに、レジスタの内容をリセットする。
【００８０】
切り替え制御部１３１は、所定のトリガ信号を受けると、Ｉ／Ｏ信号線を第２のフラッシュメモリ１２０Ｂから第１のフラッシュメモリ１２０Ａに切り替える。また、アクセス制御部１４０は、第２のフラッシュメモリ１２０Ｂに対するイネーブル信号ＥＮＡ２の供給を停止し、アイドル状態可能にある第１のフラッシュメモリ１２０Ａに対するイネーブル信号ＥＮＡ１の供給を再開する。これにより、第１のフラッシュメモリ１２０Ａに対するクロックＣＬＫ１の供給が再開され、直ちに、プログラムカウンタ１１５の値に従って、第１のフラッシュメモリ１２０Ａからリターンアドレスに従う命令が順次に読み出されることになる。
【００８１】
なお、本実施形態では、サブルーチンからの復帰先アドレス値として、プログラムカウンタ１１５の現在値の次の値を用いたが、これに限られるものではない。すなわち、サブルーチンによっては、例外的な復帰先アドレスが指定されることもあり、そのようなアドレス値がプログラムカウンタ１１５にスタックされるものであっても良い。
【００８２】
以上のように、本実施形態によれば、上記第１の実施形態と同様の利点乃至は効果を得ることができる。すなわち、本実施形態によれば、命令コードを格納した切り替え選択可能な例えば２個のフラッシュメモリを用意し、メモリＩ／Ｆ１３０が、一方のフラッシュメモリから読み出されるデータから、ＣＰＵ１１０による演算実行前に、特定の命令（サブルーチン命令）を検出し、これを受けて、アクセス制御部１４０が、他方のフラッシュメモリの読み出しの準備を行うので、ＣＰＵ１１０による該特定の命令が演算実行された時点で、該他方のフラッシュメモリから、直ちに、次の命令が読み出されるようになる。また、本実施形態によれば、ＣＰＵ１１０による演算実行前にリターン命令を検出し、これを受けて、元のフラッシュメモリの読み出しの準備を行うので、ＣＰＵ１１０による該リターン命令が演算実行された時点で、該他方のフラッシュメモリの復帰先アドレスの位置から、直ちに、次の命令が読み出されるようになる。
【００８３】
［第３の実施形態］
本実施形態は、半導体装置１００において、ＣＰＵ割り込みの発生に従って、第１のフラッシュメモリ１２０Ａと第２のフラッシュメモリ１２０Ｂとの間で切り替え制御を行う技術を開示する。以下の説明では、割り込みコントローラ１６０が、ＣＰＵ割り込みの発生を検出することによって、フラッシュメモリの切り替え制御が行われる例について、図３を参照しつつ、説明する。
【００８４】
本実施形態では、例えば、第１のフラッシュメモリ１２０Ａは、メインルーチンを構成する第１の命令群を格納し、第２のフラッシュメモリ１２０Ｂは、分岐ルーチンを構成する第２の命令群及び／又はサブルーチンを構成する第３の命令群に代え、又はこれに加え、割り込みルーチンを構成する第４の命令群を格納する。
【００８５】
上述したように、第１のフラッシュメモリ１２０Ａからデータ列が読み出されているものとする。かかる状況で、外部の周辺装置等から割り込み要求信号が出力されると、割り込みコントローラ１６０は、これを検出し、割り込み信号に基づく割り込みジャンプ先アドレスをアドレス制御部１４０に出力する。これを受けて、アクセス制御部１４０は、イネーブル信号ＥＮＡ２を供給して、クロックＣＬＫ２（図示せず）が第２のフラッシュメモリ１２０Ｂに供給されるように制御し、第２のフラッシュメモリ１２０Ｂが該割り込みジャンプ先アドレスからデータ列が読み出し可能になるように制御する。アクセス制御部１４０は、第２のフラッシュメモリ１２０Ｂから例えばＲＥＡＤＹ信号（図示せず）を受け、第２のフラッシュメモリ１２０Ｂが読み出し可能状態になったことを検出すると、一旦、第２のフラッシュメモリ１２０Ｂをアイドル状態にする。一方で、ＰＣ監視部１５０は、ジャンプ先アドレス値を図示しないレジスタに一時的に格納する。
【００８６】
一方、ＣＰＵ１１０においては、割り込みコントローラ１６０による割り込みがかかると、スタックポインタに従って、プログラムカウンタ１１５に、該割り込みに従う割り込みルーチンの復帰先アドレス値（すなわち、ＰＣ＝ＰＣ＋１）がスタックされ、さらに、該割り込みルーチンが示すジャンプ先アドレス値がスタックされる。また、割り込みコントローラ１６０は、該割り込みに従うジャンプ先アドレス値をＰＣ監視部１５０に出力する。
【００８７】
ＰＣ監視部１５０は、プログラムカウンタ１１５にジャンプ先アドレス値がセットされたことを検出すると、レジスタに格納されたジャンプ先アドレス値とプログラムカウンタ１１５の値とが一致するか否かを判断する。ＰＣ監視部１５０は、プログラムカウンタ１１５にジャンプ先アドレス値がセットされ、かつ、分岐命令検出部１３２から受け取ったジャンプ先アドレス値とプログラムカウンタ１１５の値とが一致すると判断する場合、所定のトリガ信号を、切り替え制御部１３１及びアクセス制御部１４０に出力するとともに、割り込みルーチンからの復帰先アドレス値をレジスタに格納する。
【００８８】
切り替え制御部１３１は、所定のトリガ信号を受けると、Ｉ／Ｏ信号線を第１のフラッシュメモリ１２０Ａから第２のフラッシュメモリ１２０Ｂに切り替える。また、アクセス制御部１４０は、第１のフラッシュメモリ１２０Ａに対するイネーブル信号ＥＮＡ１の供給を停止し、アイドル状態可能にある第２のフラッシュメモリ１２０Ｂに対するイネーブル信号ＥＮＡ２の供給を再開する。これにより、第２のフラッシュメモリ１２０Ｂに対するクロックＣＬＫ２の供給が再開され、直ちに、第２のフラッシュメモリ１２０Ｂからジャンプ先アドレスに従う割り込みルーチンの命令が順次に読み出されることになる。
【００８９】
分岐命令検出部１３２は、第２のフラッシュメモリ１２０Ｂから読み出されたデータ列から割り込みルーチンの終了を示すリターン命令を検出すると、リターン信号をＰＣ監視部１５０に出力する。ＰＣ監視部１５０は、リターン信号を受けて、レジスタに保持されている復帰先アドレス値をアドレス制御部１４０に出力する。
【００９０】
アドレス制御部１４０は、復帰先アドレスを受けると、イネーブル信号ＥＮＡ１を供給して、クロックＣＬＫ１が第１のフラッシュメモリ１２０Ａに供給されるように制御し、第１のフラッシュメモリ１２０Ａが該復帰先アドレスの位置からデータ列を読み出し可能になるように制御する。アクセス制御部１４０は、第１のフラッシュメモリ１２０Ａから例えばＲＥＡＤＹ信号を受け、第１のフラッシュメモリ１２０Ａが読み出し可能状態になったことを検出すると、一旦、第１のフラッシュメモリ１２０Ａをアイドル状態にする。
【００９１】
一方、ＣＰＵ１１０において、デコーダ１１３によりリターン命令がデコードされた際、スタックポインタに従って、プログラムカウンタ１１５の値がサブルーチンの復帰先アドレス値となる。これにより、ＰＣ監視部１５０は、レジスタに保持した復帰先アドレス値とプログラムカウンタ１１５の値とが一致したことを検出し、所定のトリガ信号を切り替え制御部１３１及びアドレス制御部１４０のそれぞれに出力するとともに、レジスタの内容をリセットする。
【００９２】
切り替え制御部１３１は、所定のトリガ信号を受けると、Ｉ／Ｏ信号線を第２のフラッシュメモリ１２０Ｂから第１のフラッシュメモリ１２０Ａに切り替える。また、アクセス制御部１４０は、第２のフラッシュメモリ１２０Ｂに対するイネーブル信号ＥＮＡ２の供給を停止し、アイドル状態可能にある第１のフラッシュメモリ１２０Ａに対するイネーブル信号ＥＮＡ１の供給を再開する。これにより、第１のフラッシュメモリ１２０Ａに対するクロックＣＬＫ１の供給が再開され、直ちに、第１のフラッシュメモリ１２０Ａからリターンアドレスに従う命令が順次に読み出されることになる。
【００９３】
以上のように、本実施形態によれば、上記第１及び第２の実施形態と同様の利点乃至は効果を得ることができる。すなわち、本実施形態によれば、命令コードを格納した切り替え選択可能な例えば２個のフラッシュメモリを用意し、割り込みコントローラ１６０がＣＰＵ割り込みを検出すると、これを受けて、アクセス制御部１４０が、他方のフラッシュメモリの読み出しの準備を行うので、ＣＰＵ１１０による該割り込みに関する命令が演算実行された時点で、該他方のフラッシュメモリから、直ちに、次の命令が読み出されるようになる。また、本実施形態によれば、ＣＰＵ１１０による演算実行前にリターン命令を検出し、これを受けて、元のフラッシュメモリの読み出しの準備を行うので、ＣＰＵ１１０による該リターン命令が演算実行された時点で、該他方のフラッシュメモリの復帰先アドレスの位置から、直ちに、次の命令が読み出されるようになる。
【００９４】
上記各実施形態は、本発明を説明するための例示であり、本発明をこれらの実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱しない限り、さまざまな形態で実施することができる。例えば、本実施形態では、２個のフラッシュメモリが選択的に切り替え制御されるものとしたが、これに限られるものではない。例えば、複数の分岐ルーチンが入れ子構造になっている場合に、該複数の分岐ルーチンのそれぞれを構成する命令群を異なるフラッシュメモリに格納し、これらのフラッシュメモリを適宜に切り替え制御されるようにしても良い。
【００９５】
また、本明細書に開示される方法においては、その結果に矛盾が生じない限り、ステップ、動作又は機能を並行して又は異なる順に実施しても良い。説明されたステップ、動作及び機能は、単なる例として提供されており、ステップ、動作及び機能のうちのいくつかは、発明の要旨を逸脱しない範囲で、省略でき、また、互いに結合させることで一つのものとしてもよく、また、他のステップ、動作又は機能を追加してもよい。
【００９６】
また、本明細書では、さまざまな実施形態が開示されているが、一の実施形態における特定のフィーチャ（技術的事項）を、適宜改良しながら、他の実施形態に追加し、又は該他の実施形態における特定のフィーチャと置換することができ、そのような形態も本発明の要旨に含まれる。
【産業上の利用可能性】
【００９７】
本発明は、半導体装置の分野にて広く利用することができる。
【符号の説明】
【００９８】
１００…半導体装置
１１０…ＣＰＵ
１１１…演算回路
１１２…命令レジスタ
１１３…デコーダ
１１４…汎用レジスタ
１１５…プログラムカウンタ
１２０…メモリモジュール
１２０Ａ…第１のフラッシュメモリ
１２０Ｂ…第２のフラッシュメモリ
１３０…メモリインターフェース
１３１…切り替え制御部
１３２…命令検出部
１４０…アクセス制御部
１５０…プログラムカウンタ監視部
１６０…割り込みコントローラ
【図１】
2015184706.tif 000003
【図２】
2015184706.tif 000004
【図３】
2015184706.tif 000005
【図４】
2015184706.tif 000006
【図５】
2015184706.tif 000007
【図６】
2015184706.tif 000008