(57)【要約】【課題】アクセスタイミングを調整している間も、本来の演算処理に必要なデータの読み出しを行うこと。【解決手段】一実施の形態に係る半導体装置は、キャッシュヒットである場合、ヒットデータを演算回路へ出力するキャッシュメモリと、キャッシュメモリから出力されたヒットデータを保持する第１の保持回路と、第１の保持回路に保持されたヒットデータと、ヒットデータと同一であって外部メモリから読み出されたリードデータとを比較する比較回路と、を備えている。【選択図】図１
2014002649.tif 000002
【特許請求の範囲】
【請求項１】
演算回路と、
前記演算回路からの要求がキャッシュヒットとなる場合、ヒットデータを前記演算回路へ出力するキャッシュメモリと、
前記キャッシュメモリから出力された前記ヒットデータを保持する第１の保持回路と、
前記第１の保持回路に保持された前記ヒットデータと、前記ヒットデータと同一であって外部メモリから読み出されたリードデータとを比較する比較回路と、を備えた半導体装置。
【請求項２】
前記比較回路の比較結果に基づいて、前記外部メモリに対するアクセスタイミングをカウントするカウンタをさらに備える請求項１に記載の半導体装置。
【請求項３】
前記カウンタによるカウント値を新たなアクセスタイミングとして格納するレジスタをさらに備える請求項２に記載の半導体装置。
【請求項４】
メモリインタフェースをさらに備え、
前記第１の保持回路と前記比較回路とが、前記メモリインタフェースに含まれる請求項１に記載の半導体装置。
【請求項５】
前記外部メモリから前記リードデータを取り込むリードバッファをさらに備え、
前記比較回路は、前記第１の保持回路に保持された前記ヒットデータと、前記リードバッファに取り込まれた前記リードデータとを比較する請求項１に記載の半導体装置。
【請求項６】
前記外部メモリから前記リードデータを読み出すためのリードコマンドを発行するリードコマンド発行部をさらに備える請求項１に記載の半導体装置。
【請求項７】
前記外部メモリとの間でデータの授受を行わない機能ブロックと、
前記リードコマンドを保持する第２の保持回路と、
前記演算回路が前記機能ブロックにアクセスする場合、前記第２の保持回路に保持された前記リードコマンドを選択する選択回路と、をさらに備える請求項６に記載の半導体装置。
【請求項８】
演算回路からキャッシュメモリへの要求がキャッシュヒットとなる場合、前記キャッシュメモリから前記演算回路へヒットデータを出力するとともに、第１の保持回路へも前記ヒットデータを出力し、
外部メモリから前記ヒットデータと同一のリードデータを読み出し、
前記第１の保持回路に保持された前記ヒットデータと、前記外部メモリから読み出された前記リードデータとを比較し、
前記ヒットデータと前記リードデータとの比較結果に基づいて、前記外部メモリに対するアクセスタイミングを調整するアクセスタイミング調整方法。
【請求項９】
アクセスタイミングを調整する際、
前記ヒットデータと前記リードデータとが一致するタイミングに基づいて、前記外部メモリに対するアクセスタイミングをカウントし、
カウント値を新たなアクセスタイミングとしてレジスタに格納する請求項８に記載のアクセスタイミング調整方法。
【請求項１０】
アクセスタイミングを調整する際、
所定の時間内に前記ヒットデータと前記リードデータとが一致しなければ、前記カウント値を前記レジスタに格納しない請求項９に記載のアクセスタイミング調整方法。
【請求項１１】
前記所定の時間内に前記ヒットデータと前記リードデータとが一致しなければ、前記外部メモリに異常があると判定する請求項１０に記載のアクセスタイミング調整方法。
【請求項１２】
前記ヒットデータを出力する際、
前記キャッシュヒットとなったタイミングにおいて、既にアクセスタイミングを調整している場合、前記キャッシュメモリから前記演算回路へは前記ヒットデータを出力するが、前記第１の保持回路へは前記ヒットデータを出力しない請求項８に記載のアクセスタイミング調整方法。
【請求項１３】
前記キャッシュヒットにおいてアクセスタイミングを調整した後に、前記外部メモリとの間でデータの授受を行わない機能ブロックに対して前記演算回路がアクセスする場合、
前記キャッシュヒットの際の前記リードデータを外部メモリから再度読み出し、
前記第１の保持回路に保持された前記ヒットデータと、前記外部メモリから再度読み出された前記リードデータとを比較し、
前記ヒットデータと前記リードデータとの比較結果に基づいて、前記外部メモリに対するアクセスタイミングを再度調整する請求項８に記載のアクセスタイミング調整方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置及びアクセスタイミング調整方法に関し、例えば外部メモリにアクセスする半導体装置及びアクセスタイミング調整方法に関する。
【背景技術】
【０００２】
近年、多くの半導体装置は、外部メモリへアクセスするためのメモリインタフェースシステムを備えている。メモリインタフェースシステムは、外部メモリへのアクセスタイミングのマージンを確保するため、アクセスタイミングを調整する機能を有している。
【０００３】
具体的には、アクセスタイミングを調整するためのデータを外部メモリから正しく取り込むための時間を計測し、これをアクセスタイミングとして記憶する。これにより、アクセスタイミングが調整される。そして、実際に外部メモリへアクセスする際には、上述の記憶されたアクセスタイミングで、外部メモリからのデータを取り込む。
【０００４】
これまでのメモリインタフェースシステムでは、起動時にのみ、アクセスタイミングを調整する場合が多く、特に問題も生じていなかった。
【０００５】
ところが、外部メモリへのアクセスが高速化するのに伴い、システム動作中における電圧や温度などの環境変動によっても、外部メモリへのアクセスタイミングのマージンが不足し、アクセス不良が発生する場合が出てきた。そのため、システム動作中にもアクセスタイミングを調整する回路構成及び方法が求められている。特許文献１〜３にはそのような技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−３１６６７４号公報
【特許文献２】特開２００２−０７４９４２号公報
【特許文献３】特開２００６−３３８１３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
発明者は以下の課題を見出した。
これまでの手法では、外部メモリに書き込まれたタイミング調整用の専用データを定期的に外部メモリから読み出し、アクセスタイミングを調整している。ここで、アクセスタイミングを調整している間、本来の演算処理に必要なデータの読み出しを行うことができず、その分性能が低下するという問題があった。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
一実施の形態に係る半導体装置は、キャッシュヒットである場合、ヒットデータを演算回路へ出力するキャッシュメモリと、キャッシュメモリから出力されたヒットデータを保持する第１の保持回路と、第１の保持回路に保持されたヒットデータと、ヒットデータと同一であって外部メモリから読み出されたリードデータとを比較する比較回路と、を備えている。
【発明の効果】
【０００９】
前記一実施の形態によれば、アクセスタイミングを調整している間も、本来の演算処理に必要なデータの読み出しを行うことができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１に係る半導体装置のブロック図である。
【図２】実施の形態２に係る半導体装置のブロック図である。
【図３】実施の形態２に係る半導体装置１の外部メモリ２に対するリード動作を説明するためのフローチャートである。
【図４】タイミング調整動作（図３のステップＳ１０８）の詳細を説明するためのフローチャートである。
【図５】実施の形態３に係る半導体装置のブロック図である。
【図６】実施の形態４に係る半導体装置のブロック図である。
【図７】実施の形態４に係る半導体装置１の外部メモリ２に対するリード動作を説明するためのフローチャートである。
【図８】タイミング調整動作（図７のステップＳ２０８）の詳細を説明するためのフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。ただし、本発明が以下の実施の形態に限定される訳ではない。また、説明を明確にするため、以下の記載及び図面は、適宜、簡略化されている。
【００１２】
（実施の形態１）
図１は、実施の形態１に係る半導体装置のブロック図である。実施の形態１に係る半導体装置１は、ＣＰＵ（Central Processing Unit）１１、キャッシュ１２、期待値保持回路１３３、比較回路１３４を備えている。また、半導体装置１は、外部メモリ２へアクセスする。図１において、各種データ（リードデータｒｄ１、ヒットデータｈｄ）の流れは太い矢印により示されている。制御信号（読出要求ｒｒ、リードコマンドｃｍｄ、一致信号ｓ３）は、細い矢印により示されている。
【００１３】
ＣＰＵ１１は、外部メモリ２あるいはキャッシュ１２に格納されたデータに基づいて、各種演算処理を行う演算回路である。ＣＰＵ１１は、読出要求ｒｒをキャッシュ１２へ出力する。読出要求ｒｒの対象データがキャッシュ１２に格納されている場合（キャッシュヒットの場合）、ＣＰＵ１１はキャッシュ１２から直接ヒットデータｈｄを取得し、演算処理を実行する。一方、対象データがキャッシュ１２に格納されていない場合（キャッシュミスの場合）、ＣＰＵ１１は、キャッシュ１２を介して、外部メモリ２から対象データ（不図示）を取得し、演算処理を実行する。
【００１４】
キャッシュ１２には、ＣＰＵ１１から読出要求ｒｒが入力される。ここで、読出要求ｒｒの対象データが、キャッシュ１２に格納されている場合（キャッシュヒットの場合）、キャッシュ１２は、ヒットデータｈｄをＣＰＵ１１及び期待値保持回路１３３に出力する。上述の通り、ＣＰＵ１１は、ヒットデータｈｄを用いて演算処理を実行する。他方、期待値保持回路１３３に格納されたヒットデータｈｄは、アクセスタイミングの調整（以下、タイミング調整という）における期待値として使用される。
【００１５】
キャッシュヒット時には、ヒットデータｈｄと同一のデータを外部メモリ２からリードするため、リードコマンドｃｍｄが半導体装置１から外部メモリ２へ出力される。リードコマンドｃｍｄに応じて、外部メモリ２から出力されたヒットデータｈｄと同一のリードデータｒｄ１は、タイミング調整用のデータである。
【００１６】
期待値保持回路１３３は、キャッシュ１２が出力したヒットデータｈｄをタイミング調整用の期待値データとして取り込む。期待値保持回路１３３は、比較回路１３４へヒットデータｈｄを出力する。
【００１７】
比較回路１３４は、期待値保持回路１３３から出力されたヒットデータｈｄと外部メモリ２から出力されたタイミング調整用のリードデータｒｄ１とを比較する。比較回路１３４は、例えばデジタル信号の一致回路であって、ヒットデータｈｄとリードデータｒｄ１とが一致したタイミングで、一致信号ｓ３を出力する。
【００１８】
ここで、例えば、リードコマンドｃｍｄが発行されたタイミングと一致信号ｓ３が出力されたタイミングとから、タイミング調整を行うことができる。
【００１９】
本実施の形態に係る半導体装置１では、キャッシュヒット時に、期待値保持回路１３３に保持されたヒットデータｈｄと外部メモリ２から再度リードされたリードデータｒｄ１（ヒットデータｈｄと同一のデータ）とを比較することにより、タイミング調整を実行することができる。このタイミング調整を実行している間も、ＣＰＵ１１はヒットデータｈｄを用いて演算処理を実行することができる。そのため、半導体装置１の動作中にタイミング調整を実行することによる半導体装置１の性能低下を抑制することができる。
【００２０】
また、タイミング調整に使用するリードデータｒｄ１は、タイミング調整用の専用データではなく、通常の演算処理を実行するためにＣＰＵ１１がリードする任意のデータである。そのため、タイミング調整用のデータを格納するために外部メモリ２における特定アドレスが占有されることもない。さらに、そのような特定アドレスを記憶するためのレジスタも不要となり、回路を削減することができる。
【００２１】
本実施の形態におけるタイミング調整は、キャッシュヒット時に自動的に開始される。そのため、タイミング調整を定期的に実施するためのタイマあるいはソフトウェアの待ち合わせ動作シーケンスが不要となる。そのため、回路の削減あるいはシステム制御方法の簡略化が可能となる。
【００２２】
（実施の形態２）
次に、図２を参照して、実施の形態２に係る半導体装置について説明する。図２は、実施の形態２に係る半導体装置のブロック図である。実施の形態２に係る半導体装置１は、ＣＰＵ（Central Processing Unit）１１、キャッシュ１２、メモリコントローラ１３、メモリインタフェース１４を備えている。ここで、メモリコントローラ１３は、コマンド発行部１３１、リードバッファ１３２、期待値保持回路１３３、比較回路１３４、シーケンサ１３５、レジスタ１３６を備えている。また、半導体装置１は、外部メモリ２へアクセスする。
【００２３】
図２において、各種データ（リードデータｒｄ１、ｒｄ２、ヒットデータｈｄ、アクセスタイミング値ａｔ）の流れは太い矢印により示されている。制御信号（読出要求ｒｒ、リードコマンドｃｍｄ、調整実行信号ｓ１、調整許可信号ｓ２、一致信号ｓ３）は、細い矢印により示されている。
【００２４】
ＣＰＵ１１は、外部メモリ２あるいはキャッシュ１２に格納されたデータに基づいて、各種演算処理を行う演算回路である。ＣＰＵ１１は、読出要求ｒｒをキャッシュ１２へ出力する。読出要求ｒｒの対象データがキャッシュ１２に格納されている場合（キャッシュヒットの場合）、ＣＰＵ１１はキャッシュ１２から直接ヒットデータｈｄを取得し、演算処理を実行する。一方、対象データがキャッシュ１２に格納されていない場合（キャッシュミスの場合）、ＣＰＵ１１は、キャッシュ１２、メモリコントローラ１３、メモリインタフェース１４を介して外部メモリ２から対象データ（リードデータｒｄ２）を取得し、演算処理を実行する。
【００２５】
キャッシュ１２には、外部メモリ２に格納されたデータのうち、ＣＰＵ１１の使用頻度が高いデータが一時的に格納される。また、キャッシュ１２には、ＣＰＵ１１から読出要求ｒｒが入力される。ここで、読出要求ｒｒの対象データが、キャッシュ１２に格納されている場合（キャッシュヒットの場合）、キャッシュ１２は、ヒットデータｈｄをＣＰＵ１１及び期待値保持回路１３３に出力する。上述の通り、ＣＰＵ１１は、ヒットデータｈｄを用いて演算処理を実行する。他方、期待値保持回路１３３に格納されたヒットデータｈｄは、アクセスタイミングの調整（以下、タイミング調整という）における期待値として使用される。また、キャッシュ１２は、タイミング調整を許可する調整許可信号ｓ２を期待値保持回路１３３及びシーケンサ１３５へ出力する。さらに、タイミング調整用に外部メモリ２から対象データ（ヒットデータｈｄと同一のリードデータｒｄ１）を取得するため、キャッシュ１２は、読出要求ｒｒをメモリコントローラ１３へ出力する。
【００２６】
一方、対象データが、キャッシュ１２に格納されていない場合（キャッシュミスの場合）、外部メモリ２から対象データ（リードデータｒｄ２）を取得するため、キャッシュ１２は、メモリコントローラ１３に対して読出要求ｒｒを出力する。
【００２７】
コマンド発行部１３１は、メモリコントローラ１３に入力された読出要求ｒｒに応じて、リードコマンドｃｍｄを発行し、メモリインタフェース１４へ出力する。
【００２８】
メモリインタフェース１４は、メモリコントローラ１３から受信したリードコマンドｃｍｄを外部メモリ２へ出力する。また、外部メモリ２から受信したリードデータｒｄ１、ｒｄ２をリードバッファ１３２へ出力する。なお、図２において、リードデータｒｄ１は、キャッシュヒット時におけるタイミング調整用のリードデータである。他方、リードデータｒｄ２は、キャッシュミス時におけるＣＰＵ１１の演算処理用のリードデータである。
【００２９】
リードバッファ１３２は、メモリインタフェース１４を介して外部メモリ２からリードデータｒｄ１、ｒｄ２を取り込み、一時的に保持する。そして、リードバッファ１３２は、比較回路１３４へタイミング調整用のリードデータｒｄ１を出力する。また、シーケンサ１３５へ演算処理用のリードデータｒｄ２を出力する。なお、リードバッファ１３２は、複数段設けられていてもよい。
【００３０】
期待値保持回路１３３は、調整許可信号ｓ２を受信したタイミングで、キャッシュ１２から出力されたヒットデータｈｄをタイミング調整用の期待値データとして取り込む。期待値保持回路１３３は、ヒットデータｈｄを比較回路１３４へ出力する。
【００３１】
比較回路１３４は、期待値保持回路１３３に保持されたヒットデータｈｄとリードバッファ１３２に取り込まれたタイミング調整用のリードデータｒｄ１とを比較する。比較回路１３４は、デジタル信号の一致回路であって、ヒットデータｈｄとリードデータｒｄ１とが一致したタイミングで、シーケンサ１３５へ一致信号ｓ３を出力する。
【００３２】
シーケンサ１３５については、キャッシュヒットの場合とキャッシュミスの場合とに場合分けして説明する。キャッシュヒットの場合、シーケンサ１３５は、キャッシュ１２から調整許可信号ｓ２を受信する。シーケンサ１３５が調整許可信号ｓ２を受信した状態で、コマンド発行部１３１からリードコマンドｃｍｄが発行されると、シーケンサ１３５は、タイミング調整用のサイクルカウントを開始する。同時に、キャッシュ１２に対し、タイミング調整を実行中であることを示す調整実行信号ｓ１を出力する。他方、比較回路１３４から一致信号ｓ３を受信すると、タイミング調整用のサイクルカウントを停止する。そして、このサイクルカウント値をアクセスタイミング値ａｔとしてレジスタ１３６へ格納する。
【００３３】
キャッシュミスの場合、コマンド発行部１３１からリードコマンドｃｍｄが発行されると、レジスタ１３６に格納されたアクセスタイミング値ａｔを用いて、リードデータ取込用のサイクルカウントを開始する。サイクルカウント値がアクセスタイミング値ａｔに一致したタイミングで、外部メモリ２からリードバッファ１３２へ取り込まれたリードデータｒｄ２をキャッシュ１２へ出力する。このように、シーケンサ１３５はカウンタとしての機能を備えている。
【００３４】
次に、図３を参照して、実施の形態２に係る半導体装置１の外部メモリ２に対するリード動作について説明する。図３は、実施の形態２に係る半導体装置１の外部メモリ２に対するリード動作を説明するためのフローチャートである。本実施の形態に係る半導体装置１では、初期のタイミング調整（Ｓ１０２）とは別に、キャッシュヒットの度に、通常のリード動作と並行して、タイミング調整（Ｓ１０８）が実行される。
【００３５】
まず、半導体装置１の電源投入後、システムリセットなどの初期動作が実行される（Ｓ１０１）。
次に、初期のタイミング調整が実行され、初期のアクセスタイミング値ａｔがレジスタ１３６に格納される（Ｓ１０２）。
次に、ＣＰＵ１１は、演算処理に必要なデータを取得するため、キャッシュ１２へ読出要求ｒｒを出力する（Ｓ１０３）。
【００３６】
キャッシュ１２は、ＣＰＵ１１からの読出要求ｒｒの対象データが、キャッシュ１２に格納されているか否か判定する（Ｓ１０４）。すなわち、キャッシュヒットか否か判定する。キャッシュヒットの場合（Ｓ１０４ＹＥＳ）、ヒットデータｈｄを用いてタイミング調整が実行されるとともに、キャッシュ１２からＣＰＵ１１へヒットデータｈｄが出力される（Ｓ１０８）。このタイミング調整により、レジスタ１３６に格納されたアクセスタイミング値ａｔが更新される。ここで、タイミング調整が実行されている間、ＣＰＵ１１はヒットデータｈｄを用いて演算処理を実行することができる。その後、ステップＳ１０３へ戻り、再度ＣＰＵ１１からキャッシュ１２へ読出要求ｒｒが発行される。なお、ステップＳ１０８の詳細については、図４を参照して後述する。
【００３７】
一方、キャッシュミスの場合（Ｓ１０４ＮＯ）、演算処理用のリードデータｒｄ２を取得するため、外部メモリ２をリードする（Ｓ１０５）。より詳細には、キャッシュ１２からメモリコントローラ１３へ読出要求ｒｒが出力される。メモリコントローラ１３へ読出要求ｒｒが入力されると、メモリコントローラ１３内のコマンド発行部１３１が、リードコマンドｃｍｄを発行する。当該リードコマンドｃｍｄは、メモリインタフェース１４を介して、外部メモリ２へ入力される。
【００３８】
リードコマンドｃｍｄが発行されると、シーケンサ１３５が、レジスタ１３６に格納された最新のアクセスタイミング値ａｔを用いて、外部メモリ２からリードデータｒｄ２を取り込むためのサイクルカウントを開始する（Ｓ１０６）。
次に、シーケンサ１３５は、サイクルカウント値がアクセスタイミング値ａｔに一致したタイミングで、リードバッファ１３２へ取り込まれたリードデータｒｄ２をキャッシュ１２へ出力する（Ｓ１０７）。そして、ＣＰＵ１１は、リードデータｒｄ２を用いて演算処理を実行する。その後、ステップＳ１０３へ戻り、再度ＣＰＵ１１からキャッシュ１２へ読出要求ｒｒが発行される。
【００３９】
次に、図４を参照して、タイミング調整動作（図３のステップＳ１０８）の詳細について説明する。図４は、タイミング調整動作（図３のステップＳ１０８）の詳細を説明するためのフローチャートである。
【００４０】
まず、タイミング調整を実行中であるか否かについてキャッシュ１２が判定する（Ｓ１１０）。具体的には、シーケンサ１３５から調整実行信号ｓ１が入力されているか否かをキャッシュ１２が判定する。
【００４１】
タイミング調整を実行中の場合（Ｓ１１０ＹＥＳ）、キャッシュ１２はヒットデータｈｄをＣＰＵ１１へ出力し（Ｓ１１１）、タイミング調整動作を終了する。つまり、既にタイミング調整を実行中であれば、新たなタイミング調整動作を開始しない。なお、ＣＰＵ１１は、受信したヒットデータｈｄを用いて演算処理を実行する。
【００４２】
タイミング調整を実行中でない場合（Ｓ１１０ＮＯ）、キャッシュ１２は、シーケンサ１３５及び期待値保持回路１３３へ調整許可信号ｓ２を出力する。また、キャッシュ１２は、ヒットデータｈｄをＣＰＵ１１及び期待値保持回路１３３へ出力する。さらに、キャッシュ１２は、ヒットデータｈｄと同一のデータであるリードデータｒｄ１を外部メモリ２からリードするために、メモリコントローラ１３へ読出要求ｒｒを出力する（Ｓ１１２）。ここで、タイミング調整と並行して、ヒットデータｈｄを受信したＣＰＵ１１は、演算処理を実行することができる。
【００４３】
期待値保持回路１３３は、調整許可信号ｓ２を受信したタイミングで、キャッシュ１２から出力されたヒットデータｈｄをタイミング調整用の期待値として取り込む（Ｓ１１３）。
【００４４】
次に、メモリコントローラ１３のコマンド発行部１３１は、キャッシュ１２からの読出要求ｒｒに応じて、リードコマンドｃｍｄを発行する。リードコマンドｃｍｄは、メモリインタフェース１４を介して、外部メモリ２へ入力される。リードコマンドｃｍｄが発行されたタイミングで、シーケンサ１３５は、調整実行信号ｓ１を出力するとともに、タイミング調整のためのサイクルカウントを開始する（Ｓ１１４）。
【００４５】
キャッシュ１２は、調整許可信号ｓ２を出力した後、シーケンサ１３５から調整実行信号を受信すると、調整許可信号ｓ２の出力を停止する（Ｓ１１５）。
【００４６】
外部メモリ２は、リードコマンドｃｍｄを受信すると、タイミング調整用のリードデータｒｄ１を出力する。リードデータｒｄ１は、メモリインタフェース１４を介して、リードバッファ１３２へ取り込まれる（Ｓ１１６）。
【００４７】
次に、比較回路１３４は、リードバッファ１３２が保持するリードデータｒｄ１と期待値保持回路１３３が保持するヒットデータｈｄとを比較し、一致するか否か判定する（Ｓ１１７）。
【００４８】
所定の時間内に両者が一致しない場合（Ｓ１１７ＮＯ）、シーケンサ１３５は、オーバーフロー信号（不図示）を出力し、タイミング調整用のサイクルカウント結果をレジスタ１３６に格納しない（Ｓ１１８）。この場合、外部メモリ２に異常があると判断してもよい。その後、シーケンサ１３５は、調整実行信号ｓ１の出力を停止し（Ｓ１２０）、タイミング調整動作を終了する。
【００４９】
一致した場合（Ｓ１１７ＹＥＳ）、比較回路１３４が一致信号ｓ３を出力する。シーケンサ１３５は、一致信号ｓ３を受信すると、タイミング調整用のサイクルカウントを停止し、そのサイクルカウント値を新たなアクセスタイミング値ａｔとしてレジスタ１３６に格納する。すなわち、レジスタ１３６に格納されたアクセスタイミング値ａｔを更新する（Ｓ１１９）。その後、シーケンサ１３５は、調整実行信号ｓ１の出力を停止し（Ｓ１２０）、タイミング調整動作を終了する。
【００５０】
本実施の形態に係る半導体装置１では、キャッシュヒット時に、期待値保持回路１３３に保持されたヒットデータｈｄと外部メモリ２から再度リードされたリードデータｒｄ１（ヒットデータｈｄと同一のデータ）とを比較することにより、タイミング調整を実行することができる。このタイミング調整を実行している間も、ＣＰＵ１１はヒットデータｈｄを用いて演算処理を実行することができる。そのため、半導体装置１の動作中にタイミング調整を実行することによる半導体装置１の性能低下を抑制することができる。
【００５１】
また、タイミング調整に使用するリードデータｒｄ１は、タイミング調整用の専用データではなく、通常の演算処理を実行するためにＣＰＵ１１がリードする任意のデータである。そのため、タイミング調整用のデータを格納するために外部メモリ２における特定アドレスが占有されることもない。さらに、そのような特定アドレスを記憶するためのレジスタも不要となり、回路を削減することができる。
【００５２】
本実施の形態におけるタイミング調整は、キャッシュヒット時に自動的に開始される。そのため、タイミング調整を定期的に実施するためのタイマあるいはソフトウェアの待ち合わせ動作シーケンスが不要となる。そのため、回路の削減あるいはシステム制御方法の簡略化が可能となる。
【００５３】
さらに、例えば外部メモリ２が故障した場合、キャッシュヒットによりキャッシュ１２から調整許可信号ｓ２は出力されるが、外部メモリ２からヒットデータｈｄと同一のリードデータｒｄ１を取得することができない。そのため、一致信号ｓ３が出力されない。従って、調整許可信号ｓ２及び一致信号ｓ３を監視することにより、外部メモリ２の故障等を把握することができる。なお、ステップＳ１１９において、シーケンサ１３５がレジスタ１３６にアクセスタイミング値ａｔを格納したことを示す格納信号を出力するようにしてもよい。また、外部メモリ２の故障等を把握するために、一致信号ｓ３に代えて、この格納信号を監視するようにしてもよい。
【００５４】
（実施の形態３）
次に、図５を参照して、実施の形態３に係る半導体装置について説明する。図５は、実施の形態３に係る半導体装置のブロック図である。実施の形態３に係る半導体装置１は、ＣＰＵ（Central Processing Unit）１１、キャッシュ１２、メモリコントローラ１３、メモリインタフェース１４を備えている。実施の形態２に係る半導体装置１では、メモリコントローラ１３が、リードバッファ１３２、期待値保持回路１３３、比較回路１３４、シーケンサ１３５、レジスタ１３６を備えていた。これに対し、実施の形態３に係る半導体装置１は、メモリインタフェース１４が、リードバッファ１４２、期待値保持回路１４３、比較回路１４４、シーケンサ１４５、レジスタ１４６を備えている。その他の構成は同様であるので、詳細な構成は省略する。
【００５５】
リードバッファ１４２は、外部メモリ２からリードデータｒｄ１、ｒｄ２を取り込み、一時的に保持する。そして、リードバッファ１４２は、比較回路１４４へタイミング調整用のリードデータｒｄ１を出力する。また、シーケンサ１４５へ演算処理用のリードデータｒｄ２を出力する。なお、リードバッファ１４２は、複数段設けられていてもよい。
【００５６】
期待値保持回路１４３は、調整許可信号ｓ２を受信したタイミングで、キャッシュ１２から出力されたヒットデータｈｄをタイミング調整用の期待値データとして取り込む。期待値保持回路１４３は、ヒットデータｈｄを比較回路１４４へ出力する。
【００５７】
比較回路１４４は、期待値保持回路１４３に保持されたヒットデータｈｄとリードバッファ１４２に取り込まれたタイミング調整用のリードデータｒｄ１とを比較する。比較回路１４４は、デジタル信号の一致回路であって、ヒットデータｈｄとリードデータｒｄ１とが一致したタイミングで、シーケンサ１４５へ一致信号ｓ３を出力する。
【００５８】
シーケンサ１４５については、キャッシュヒットの場合とキャッシュミスの場合とに場合分けして説明する。キャッシュヒットの場合、シーケンサ１４５は、キャッシュ１２から調整許可信号ｓ２を受信する。シーケンサ１４５が調整許可信号ｓ２を受信した状態で、メモリインタフェース１４にリードコマンドｃｍｄが入力されると、シーケンサ１４５は、タイミング調整用のサイクルカウントを開始する。同時に、キャッシュ１２に対し、タイミング調整を実行していることを示す調整実行信号ｓ１を出力する。他方、比較回路１４４から一致信号ｓ３を受信すると、タイミング調整用のサイクルカウントを停止する。そして、このサイクルカウント値をアクセスタイミング値ａｔとしてレジスタ１４６へ格納する。
【００５９】
キャッシュミスの場合、メモリインタフェース１４にリードコマンドｃｍｄが入力されると、レジスタ１４６に格納されたアクセスタイミング値ａｔを用いて、リードデータ取込用のサイクルカウントを開始する。サイクルカウント値がアクセスタイミング値ａｔに一致したタイミングで、外部メモリ２からリードバッファ１４２へ取り込まれたリードデータｒｄ２をキャッシュ１２へ出力する。
【００６０】
このように、メモリインタフェース１４がタイミング調整を実行する実施の形態３のような構成であっても、メモリコントローラ１５がタイミング調整を実行する実施の形態２のような構成と同様の効果を奏する。また、実施の形態２に比べ、メモリコントローラ１３の構成をシンプルにすることができるため、半導体装置１の設計が容易になる。
【００６１】
（実施の形態４）
次に、図６を参照して、実施の形態４に係る半導体装置について説明する。図６は、実施の形態４に係る半導体装置のブロック図である。実施の形態４に係る半導体装置１は、ＣＰＵ（Central Processing Unit）１１、キャッシュ１２、メモリコントローラ１３、メモリインタフェース１４に加え、他ブロック１５を備えている。また、メモリインタフェース１４が、コマンド保持回路１４７、選択回路（セレクタ）１４８をさらに備えている。その他の構成は実施の形態３に係る半導体装置１と同様であるため、適宜説明を省略する。他ブロック１５は、外部メモリ２との間で直接データの授受を行わない機能ブロックである。他ブロック１５の具体例としては、ＵＳＢ機器を接続するためのＵＳＢインタフェースブロックなどを挙げることができる。
【００６２】
ＣＰＵ１１は、メモリインタフェース１４内のシーケンサ１４５及びセレクタ１４８へ他ブロック選択信号ｓ４を出力する。図６の例では、他ブロック１５へアクセスする場合、他ブロック選択信号ｓ４の値が１（Ｈ：Ｈｉｇｈ）となり、他ブロック１５へアクセスしない場合、他ブロック選択信号ｓ４の値が０（Ｌ：Ｌｏｗ）となる。
【００６３】
コマンド保持回路１４７は、コマンド発行部１３１から発行されたリードコマンドｃｍｄを保持する。また、コマンド保持回路１４７に保持されたリードコマンドｃｍｄは、コマンド発行部１３１が新たなコマンドを発行する度に、更新される。
【００６４】
セレクタ１４８は、他ブロック選択信号ｓ４の値に応じて、コマンド発行部１３１から発行されたリードコマンドｃｍｄ及びコマンド保持回路１４７に保持されたリードコマンドｃｍｄのいずれか一方を選択する。図６の例では、ＣＰＵ１１が他ブロック１５へアクセスする場合（他ブロック選択信号ｓ４の値が１の場合）、コマンド保持回路１４７に保持されたリードコマンドｃｍｄを選択する。一方、ＣＰＵ１１が他ブロック１５へアクセスしない場合（他ブロック選択信号ｓ４の値が０の場合）、コマンド発行部１３１から発行されたリードコマンドｃｍｄを選択する。
【００６５】
実施の形態３に係る半導体装置１では、キャッシュヒット毎にタイミング調整を実行するのに対し、実施の形態４に係る半導体装置１では、それに加えて、ＣＰＵ１１が他ブロック１５へアクセスしている間もタイミング調整を実行する。
【００６６】
具体的には、ＣＰＵ１１が他ブロック１５へアクセスする場合（他ブロック選択信号ｓ４の値が１の場合）、直前のキャッシュヒット時にコマンド保持回路１４７に格納されたリードコマンドｃｍｄが、セレクタ１４８を介して、外部メモリ２へ出力される。ここで、期待値保持回路１４３にも直前のキャッシュヒット時に格納されたヒットデータｈｄが保持されている。コマンド保持回路１４７に保持されたリードコマンドｃｍｄの対象となるリードデータｒｄ１と期待値保持回路１４３に保持されたヒットデータｈｄとは同一データである。両データを比較回路１４４において比較することにより、キャッシュヒット時と同様にタイミング調整を実行することができる。
【００６７】
次に、図７を参照して、実施の形態４に係る半導体装置１の外部メモリ２に対するリード動作について説明する。図７は、実施の形態４に係る半導体装置１の外部メモリ２に対するリード動作を説明するためのフローチャートである。本実施の形態に係る半導体装置１では、初期のタイミング調整（Ｓ１０２）とは別に、キャッシュヒット時及び他ブロック１５へのアクセス時に、通常のリード動作と並行して、タイミング調整（Ｓ２０８）が実行される。
【００６８】
初期動作（Ｓ１０１）及び初期タイミング調整（Ｓ１０２）が実行された後、ＣＰＵ１１が他ブロック１５へアクセスするのか否か判定する（Ｓ２０１）。
ＣＰＵ１１が他ブロック１５へアクセスする場合（Ｓ２０１ＹＥＳ）、ＣＰＵ１１が他ブロック選択信号ｓ４を出力する（Ｓ２０２）。
次に、タイミング調整が実行される（Ｓ２０８）。但し、キャッシュヒット時とは異なり、キャッシュ１２からＣＰＵ１１に対し、ヒットデータｈｄは出力されない。ステップＳ２０８の詳細については、図８を用いて後述する。
【００６９】
一方、ＣＰＵ１１が他ブロック１５へアクセスしない場合（Ｓ２０１ＮＯ）、ＣＰＵ１１は、演算処理に必要なデータを取得するため、キャッシュ１２へ読出要求ｒｒを出力する（Ｓ１０３）。
キャッシュ１２は、ＣＰＵ１１から受信した読出要求ｒｒの対象データが、キャッシュ１２に格納されているか否か判定する（Ｓ１０４）。すなわち、キャッシュヒットか否か判定する。キャッシュヒットの場合（Ｓ１０４ＹＥＳ）、ヒットデータｈｄを用いてタイミング調整が実行されるとともに、ＣＰＵ１１へヒットデータｈｄが出力される（Ｓ２０８）。このタイミング調整により、レジスタ１４６に格納されたアクセスタイミング値ａｔが更新される。ここで、タイミング調整が実行されている間、ＣＰＵ１１はヒットデータｈｄを用いて演算処理を実行することができる。その後、ステップＳ２０１へ戻り、再度ＣＰＵ１１が他ブロック１５へアクセスするのか否か判定する。
【００７０】
一方、キャッシュミスの場合（Ｓ１０４ＮＯ）、演算処理用のリードデータｒｄ２を取得するため、外部メモリ２をリードする（Ｓ１０５）。より詳細には、キャッシュ１２からメモリコントローラ１３へ読出要求ｒｒが出力される。メモリコントローラ１３へ読出要求ｒｒが入力されると、メモリコントローラ１３内のコマンド発行部１３１が、リードコマンドｃｍｄを発行する。当該リードコマンドｃｍｄは、メモリインタフェース１４を介して、外部メモリ２へ入力される。
【００７１】
リードコマンドｃｍｄが発行されると、シーケンサ１４５が、レジスタ１４６に格納された最新のアクセスタイミング値ａｔを用いて、リードデータｒｄ２を取り込むためのサイクルカウントを開始する（Ｓ１０６）。
次に、シーケンサ１４５は、サイクルカウント値がアクセスタイミング値ａｔに一致したタイミングで、外部メモリ２からリードバッファ１４２へ取り込まれたリードデータｒｄ２をキャッシュ１２へ出力する（Ｓ１０７）。そして、ＣＰＵ１１は、リードデータｒｄ２を用いて演算処理を実行する。その後、ステップＳ２０１へ戻り、再度ＣＰＵ１１が他ブロック１５へアクセスするのか否か判定する。
【００７２】
次に、図８を参照して、タイミング調整動作（図７のステップＳ２０８）の詳細について説明する。図８は、タイミング調整動作（図７のステップＳ２０８）の詳細を説明するためのフローチャートである。
【００７３】
まず、ＣＰＵ１１から他ブロック選択信号ｓ４が出力されているか否か判定される（Ｓ２１０）。ＣＰＵ１１から他ブロック選択信号ｓ４が出力されていない場合（Ｓ２１０ＮＯ）、図４と同様に、ステップＳ１１０〜Ｓ１２０を実行するので、詳細な説明は省略する。
【００７４】
一方、ＣＰＵ１１から他ブロック選択信号ｓ４が出力されている場合（Ｓ２１０ＹＥＳ）、タイミング調整を実行中であるか否かが判定される（Ｓ２１１）。具体的には、シーケンサ１４５から調整実行信号ｓ１が出力されているか否かが判定される。タイミング調整を実行中の場合（Ｓ２１１ＹＥＳ）、そのままタイミング調整動作を終了する。つまり、既にタイミング調整を実行中であれば、新たなタイミング調整動作は開始されない。
【００７５】
タイミング調整を実行中でない場合（Ｓ２１１ＮＯ）、コマンド保持回路１４７に保持されているリードコマンドｃｍｄが、セレクタ１４８を介して、外部メモリ２へ入力される（Ｓ２１２）。リードコマンドｃｍｄがコマンド保持回路１４７から出力されたタイミングで、シーケンサ１４５は、調整実行信号ｓ１を出力するとともに、タイミング調整のためのサイクルカウントを開始する。
【００７６】
外部メモリ２は、コマンド保持回路１４７から出力されたリードコマンドｃｍｄを受信すると、タイミング調整用のリードデータｒｄ１を出力する。リードデータｒｄ１は、メモリインタフェース１４を介して、リードバッファ１４２へと入力される（Ｓ１１６）。
【００７７】
比較回路１４４は、リードバッファ１４２が保持するリードデータｒｄ１と期待値保持回路１４３が保持するヒットデータｈｄとを比較し、一致するか否か判定する（Ｓ１１７）。
【００７８】
所定の時間内に両者が一致しない場合（Ｓ１１７ＮＯ）、シーケンサ１４５は、オーバーフロー信号（不図示）を出力し、タイミング調整用のサイクルカウント結果をレジスタ１４６に格納しない（Ｓ１１８）。その後、シーケンサ１４５は、調整実行信号ｓ１の出力を停止し（Ｓ１２０）、タイミング調整動作を終了する。
【００７９】
一致した場合（Ｓ１１７ＹＥＳ）、比較回路１４４が一致信号ｓ３を出力する。シーケンサ１４５は、一致信号ｓ３を受信すると、タイミング調整用のサイクルカウントを停止し、そのサイクルカウント値を新たなアクセスタイミング値ａｔとしてレジスタ１４６に格納する。すなわち、レジスタ１４６に格納されたアクセスタイミング値ａｔを更新する（Ｓ１１９）。その後、シーケンサ１４５は、調整実行信号ｓ１の出力を停止し（Ｓ１２０）、タイミング調整動作を終了する。
【００８０】
上述のように、実施の形態１〜３に係る半導体装置１では、キャッシュヒット毎にタイミング調整を実行するのに対し、実施の形態４に係る半導体装置１では、それに加えて、ＣＰＵ１１が他ブロック１５へアクセスしている間もタイミング調整を実行する。そのため、半導体装置１の性能を低下させることなく、タイミング調整の頻度を高くすることができるため、アクセス不良の発生をさらに抑制することができる。
【００８１】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００８２】
１  半導体装置
２  外部メモリ
１１  ＣＰＵ
１２  キャッシュ
１３  メモリコントローラ
１４  メモリインタフェース
１５  他ブロック
１３１  コマンド発行部
１３２、１４２  リードバッファ
１３３、１４３  期待値保持回路
１３４、１４４  比較回路
１３５、１４５  シーケンサ
１３６、１４６  レジスタ
１４７  コマンド保持回路
１４８  セレクタ
ａｔ  アクセスタイミング値
ｃｍｄ  リードコマンド
ｈｄ  ヒットデータ
ｒｄ１、ｒｄ２  リードデータ
ｒｒ  読出要求
ｓ１  調整実行信号
ｓ２  調整許可信号
ｓ３  一致信号
ｓ４  他ブロック選択信号
【図１】
2014002649.tif 000003
【図２】
2014002649.tif 000004
【図３】
2014002649.tif 000005
【図４】
2014002649.tif 000006
【図５】
2014002649.tif 000007
【図６】
2014002649.tif 000008
【図７】
2014002649.tif 000009
【図８】
2014002649.tif 000010