(57)【要約】【課題】メモリの出力バッファの平均電流値を低減し、消費電流を抑制すること。【解決手段】本発明に係る半導体装置は、メモリリードアドレスＤの連続性を判定し、判定結果Ｈを出力するアドレス連続性判定回路２３と、判定結果Ｈに基づいて、メモリリードアドレスＤに対応するリードデータを出力するメモリの出力バッファ２２の駆動能力を制御する駆動能力切り替え制御回路２４と、ＣＰＵの要求リードアドレスＡに対応するリードデータが当該ＣＰＵへ到達するまでの期間に、ＣＰＵ要求リードアドレスＡに連続する予想アドレスを生成するアドレス生成部１２と、予想アドレスに対応するリードデータを格納するプリロードバッファ１４を備える。【選択図】図１
2011210336.tif 000002
【特許請求の範囲】
【請求項１】
メモリリードアドレスの連続性を判定し、判定結果を出力するアドレス連続性判定回路と、
前記判定結果に基づいて、前記メモリリードアドレスに対応するリードデータを出力するメモリの出力バッファの駆動能力を制御する駆動能力切り替え制御回路と、
を備える半導体装置。
【請求項２】
ＣＰＵの要求リードアドレスに対応するリードデータが当該ＣＰＵへ到達するまでの期間に、前記ＣＰＵ要求リードアドレスに連続する予想アドレスを生成するアドレス生成部と、
前記予想アドレスに対応するリードデータを格納するプリロードバッファと、
をさらに備え、
前記アドレス連続性判定回路は、前記メモリリードアドレスとして入力される前記ＣＰＵ要求リードアドレス又は予想アドレスの連続性を判定することを特徴とする請求項１に記載の半導体装置。
【請求項３】
前記アドレス連続性判定回路は、前記メモリリードアドレスと、該アドレス連続性判定回路に格納された前回のメモリリードアドレスとを比較することにより、連続性を判定することを特徴とする請求項１又は２に記載の半導体装置。
【請求項４】
前記駆動能力切り替え制御回路は、前記メモリリードアドレスが連続である場合、前記出力バッファの駆動能力を、前記メモリリードアドレスが連続でない場合よりも下げることを特徴とする請求項１、２又は３に記載の半導体装置。
【請求項５】
メモリリードアドレスの連続性を判定して、判定結果を出力し、
前記判定結果に基づいて、前記メモリリードアドレスに対応するリードデータを出力するメモリの出力バッファの駆動能力を制御する、
半導体装置の制御方法。
【請求項６】
ＣＰＵの要求リードアドレスに対応するリードデータが当該ＣＰＵへ到達するまでの期間に、前記ＣＰＵ要求リードアドレスに連続する予想アドレスを生成し、
前記予想アドレスに対応するリードデータをプリロードバッファに格納し、
前記メモリリードアドレスとして入力される前記ＣＰＵ要求リードアドレス又は予想アドレスの連続性を判定することを特徴とする請求項５に記載の半導体装置の制御方法。
【請求項７】
前記メモリリードアドレスと、前回のメモリリードアドレスとを比較することにより、連続性を判定することを特徴とする請求項５又は６に記載の半導体装置の制御方法。
【請求項８】
前記メモリリードアドレスが連続である場合、前記出力バッファの駆動能力を、前記メモリリードアドレスが連続でない場合よりも下げることを特徴とする請求項５、６又は７に記載の半導体装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置及びその制御方法に関し、特に、マイクロコンピュータにおいてメモリからＣＰＵへデータを転送する出力バッファの制御技術に関する。
【背景技術】
【０００２】
マイクロコンピュータにおいて、ＣＰＵ搭載のＣＰＵチップとメモリマクロ搭載のメモリチップの動作周波数が異なる場合、ＣＰＵのリードアドレスが出力された後に、メモリのリードデータが読み出される。ＣＰＵにリードデータが到達するまでの遅延（アクセスレイテンシー）の悪化を防ぐためには、メモリの出力バッファの駆動能力を上げる必要がある。
【０００３】
しかし、メモリチップからＣＰＵチップへのデータ転送を少ない遅延で実現するために、出力バッファの駆動能力を上げ、立ち上がりと立ち下がりを急峻に変化させた場合でも、平均電流値を低減する要求が高まっている。
【０００４】
特許文献１には、フラッシュメモリからの読み出しをより高速にするために、フラッシュメモリの出力バッファ駆動能力を外部制御コマンドで切り替える構成が開示されている。
【０００５】
図８は、特許文献１に記載のフラッシュメモリの構成を示す図である。このフラッシュメモリは、通常の読み出しモードと、より高速なバーストモードとを備える。このフラッシュメモリでは、ＣＵＩ（コマンド・ユーザー・インターフェイス）４１を介し、いずれのモードを使用して入出力データを行うかをあらかじめユーザーが設定する。
【０００６】
ユーザーがバーストモードに設定した場合、１番目のアドレスをラッチした後は、ＣＵＩ４１からＹデコーダ２７とＸデコーダ３１にＤｉｓａｂｌｅ信号が出力される。これにより、アドレス入力バッファをＤｉｓａｂｌｅ状態に設定し、入力が遮断される。そして、メモリデータの入出力バッファ３３に、駆動能力を最大限に引き出すための切り替え制御信号が出力される。
【０００７】
特許文献１では、上記のような構成を備えることにより、読み出しモードに応じて、出力バッファの駆動能力を切り替えることができる。このため、入力の誤動作を考慮することなく、特定の読み出しモードでの出力バッファの駆動能力を最大限に引き出すことができ、さらなる高速化の要求にも対応することができる。
【０００８】
特許文献２には、バーストリードの最初のサイクルを含む１サイクル以上の期間、データ出力回路のドライブ能力を増強する技術が記載されている。データ出力回路は、バーストリード動作の開始を制御するＲＤＢ信号の変化に基づいて生成される制御信号Ｃｔｒｌにより制御されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００５−２８５２５６号公報
【特許文献２】特開２００２−１５５８２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上述のように、特許文献１では、通常の読み出しモードとより高速なバーストモードの切り替えをＣＵＩ４１で切り替えている。従って、バーストモードから通常の読み出しモードに切り替えるためには、コマンドの設定時間が必要となる。このため、出力バッファの駆動能力を最大限にしている時間が長くなり、ピーク電流値が増大し、平均電流値が増加するという問題がある。また、特許文献２では、データ出力回路は、バーストリードの最初の所定の期間高駆動能力状態を維持しているため、消費電流が増大するという問題がある。
【課題を解決するための手段】
【００１１】
本発明の一態様に係る半導体装置は、メモリリードアドレスの連続性を判定し、判定結果を出力するアドレス連続性判定回路と、前記判定結果に基づいて、前記メモリリードアドレスに対応するリードデータを出力するメモリの出力バッファの駆動能力を制御する駆動能力切り替え制御回路とを備えるものである。
【００１２】
本発明の一態様に係る半導体装置の制御方法は、メモリリードアドレスの連続性を判定して、判定結果を出力し、前記判定結果に基づいて、前記メモリリードアドレスに対応するリードデータを出力するメモリの出力バッファの駆動能力を制御する。
【００１３】
これにより、メモリリードアドレスの連続性を判定し、連続でないアドレスの場合は、出力バッファの駆動能力を上げて、メモリチップからＣＰＵへのデータ転送を少ない遅延でプリロードバッファに格納した後、連続したアドレスを読み出す場合は、出力バッファの駆動能力を下げて、メモリからＣＰＵへリードデータを転送することができる。このように、出力バッファの駆動能力を動的に制御することで、平均電流値を低減させることが可能となる。
【発明の効果】
【００１４】
本発明によれば、出力バッファの平均電流値を低減し、消費電流を低減することができる。
【図面の簡単な説明】
【００１５】
【図１】実施の形態に係る半導体装置の構成を示す図である。
【図２】実施の形態に係る半導体装置における出力バッファの構成例を示す図である。
【図３】実施の形態に係る制御方法を説明するためのフローチャートである。
【図４】実施の形態に係る制御方法を説明するためのタイミングチャートである。
【図５】実施の形態に係る制御方法を説明するためのタイミングチャートである。
【図６】実施の形態に係る制御方法を説明するためのタイミングチャートである。
【図７】実施の形態に係る制御方法を説明するためのタイミングチャートである。
【図８】特許文献１に記載のフラッシュメモリの構成を示す図である。
【発明を実施するための形態】
【００１６】
本発明の実施の形態に係る半導体装置の構成について、図１を参照して説明する。図１は、本実施の形態に係る半導体装置の構成を示す図である。図１に示す例では、半導体装置は、ＣＰＵ搭載のＣＰＵチップ１０とメモリマクロ搭載のメモリチップ２０の２つのチップを１つのパッケージに収めたＳＩＰ（System In Package）で構成される。
【００１７】
ＣＰＵチップ１０は、ＣＰＵ１１、アドレス生成回路１２、複数の入力バッファ１３、プリロードバッファ１４を備えている。メモリチップ２０は、メモリマクロ２１、複数の出力バッファ２２、アドレス連続性判定回路２３、駆動能力切り替え制御回路２４を備えている。出力バッファ２２は、メモリマクロ２１のリードデータ幅分（例えば、１３７個）設けられている。
【００１８】
ここでは、ＣＰＵ搭載のＣＰＵチップ１０の動作周波数は、メモリマクロ搭載のメモリチップ２０より、高速で動作するものとする。なお、図１においては、各部の同期をとるための、クロック回路や分周回路の図示を省略している。ＣＰＵ１１は、システム・クロックに同期して動作し、アドレス生成回路１２、アドレス連続性判定回路２３、駆動能力切り替え制御回路２４は、システム・クロックを４分周した４分周クロックに同期して動作するものとする。
【００１９】
ＣＰＵ１１は、ＣＰＵ要求リードアドレスＡに応じてプリロードバッファ１４からのリードデータＢを読みだす。ＣＰＵ１１は、読みだしたリードデータＢを内部処理し、図示しないプログラムカウンタを制御し、次の命令コードであるＣＰＵ要求リードアドレスＡ及びリード・イネーブル信号Ｃをアドレス生成回路１２に出力する。
【００２０】
アドレス生成回路１２には、ＣＰＵ要求リードアドレスＡとリード・イネーブル信号Ｃが入力される。アドレス生成回路１２は、入力バッファ１３がイネーブルであれば、ＣＰＵ要求リードアドレスＡを最初のリードアドレスと判断する。このときのアドレスをｎとする。メモリチップ２０の動作周波数はＣＰＵチップ１０の動作周波数より遅いので、ＣＰＵ要求リードアドレスＡに対応するリードデータがＣＰＵ１１に到達するまでに遅延時間が生じる。
【００２１】
アドレス生成回路１２は、その遅延時間の期間に、次のリードアドレスを先読みして、予想アドレスを生成する。つまり、アドレス生成回路１２は、ＣＰＵ１１からの最初のアドレスをもとに、次にＣＰＵ１１から要求があると予想される予想アドレスをメモリリードアドレスＤとしてメモリチップ２０へ出力する。
【００２２】
予想アドレスとは、アクセスレイテンシーを改善するために生成される、最初のアドレスから連続したアドレスである。アドレス生成回路１２は、最初のアドレスｎに＋１したアドレスｎ＋１を予想アドレスとしてメモリマクロ２１とアドレス連続性判定回路２３に出力する。
【００２３】
ＣＰＵ要求リードアドレスＡは、アドレス生成回路１２を介して、プリロードバッファ１４に入力される。プリロードバッファ１４は、ＣＰＵ要求リードアドレスＡに対応するリードデータが格納されているか否かを判定する。
【００２４】
プリロードバッファ１４にＣＰＵ要求リードアドレスＡに対応するリードデータが格納されていなければ、プリロードバッファ１４はアドレス生成回路１２に判定結果であるリード要求信号Ｅを出力する。アドレス生成回路１２は、リード要求信号Ｅに応じてメモリチップ２０にＣＰＵ要求リードアドレスＡをメモリリードアドレスＤとして出力する。従って、メモリリードアドレスＤは、ＣＰＵ要求リードアドレスＡ又は予想アドレスのいずれかとなる。
【００２５】
プリロードバッファ１４にＣＰＵ要求リードアドレスＡに対応するリードデータが格納されている場合、プリロードバッファ１４は、アドレス生成回路１２にリード要求信号Ｅを出力しない。この場合、プリロードバッファ１４は、ＣＰＵ１１に対し、ＣＰＵ要求リードアドレスＡに対応するリードデータＢを出力する。
【００２６】
メモリマクロ２１は、メモリリードアドレスＤを入力とし、メモリリードアドレスＤに対応するリードデータＦ０及び読み出しデータ・レディ信号Ｇ０を出力バッファ２２に出力する。
【００２７】
アドレス生成回路１２から出力されたメモリリードアドレスＤは、メモリマクロ２１に出力されると同時に、アドレス連続性判定回路２３にも出力される。アドレス連続性判定回路２３は、メモリリードアドレスＤの連続性を判定する。アドレス連続性判定回路２３は、次にリードするアドレスと比較するために、前回リードしたアドレスを格納する。
【００２８】
アドレス連続性判定回路２３は、前回リードしたアドレスと次にリードするアドレスの比較を行い、次のアドレスが前回リードしたアドレスに＋１増加したアドレスであれば、連続性があると判断する。アドレス連続性判定回路２３は、メモリリードアドレスＤを入力とし、判定結果Ｈを駆動能力切り替え制御回路２４に出力する。
【００２９】
逆に、次にリードするアドレスが前回リードしたアドレスに＋１増加したアドレスでなければ、アドレス連続性判定回路２３はアドレスの連続性がないと判断する。アドレス連続性判定回路２３は、例えば、リードアドレスに連続性があれば、判定結果Ｈとしてロウ・レベル出力し、連続性がなければ判定結果Ｈとしてハイ・レベルを出力する。
【００３０】
駆動能力切り替え制御回路２４には、アドレス連続性を示す判定結果Ｈが入力される。駆動能力切り替え制御回路２４は、判定結果Ｈに基づいて、各出力バッファ２２へ駆動能力切り替え信号Ｉを出力する。具体的には、アドレス連続性判定回路２３において、メモリリードアドレスＤの連続性が検出された場合に、駆動能力切り替え制御回路２４は、出力バッファ２２の駆動能力を低減させる。バッファの駆動能力の低減については、後に詳述する。
【００３１】
駆動能力切り替え制御回路２４は、前回リードしたデータを出力している期間であって、次のデータを出力する前のタイミングで駆動能力切り替え信号Ｉを変化させる。例えば、判定結果Ｈがハイ・レベルであれば、駆動能力切り替え信号Ｉがハイ・レベルの信号を複数の出力バッファ２２へ出力する。駆動能力切り替え信号Ｉがハイ・レベルで駆動能力が上がる出力バッファ２２は、前回のリードデータの出力中に、駆動能力を上げるように切り替えられる。
【００３２】
最上部に図示されている出力バッファ２２には、読み出しデータ・レディ信号Ｇ０と駆動能力切り替え信号Ｉが入力される。この出力バッファ２２は、対応する入力バッファ１３に対し読み出しデータ・レディ信号Ｇ１を出力する。また、他の出力バッファ２２には、それぞれメモリマクロ２１からのリードデータＦ０と駆動能力切り替え信号Ｉが入力される。これらの出力バッファ２２は、リードデータＦ１をそれぞれ対応する入力バッファ１３に出力する。
【００３３】
プリロードバッファ１４は、入力バッファ１３からのリードデータを入力とし、リードアドレスと対応させてデータを格納する。プリロードバッファ１４は、アドレス生成回路１２により先読みされた予想アドレスに対応するリードデータを順次内部アドレスレジスタ（不図示）に格納する。
【００３４】
例えば、最初のＣＰＵ要求リードアドレスＡのアドレスをｎとした場合、プリロードバッファ１４は、予想アドレスｎ＋１、ｎ＋２、・・・に対応するリードデータを順次格納する。また、プリロードバッファ１４は、入力バッファ１３からの読み出しデータ・レディ信号Ｇ２を入力として、データ・レディ信号ＪをＣＰＵ１１に出力する。
【００３５】
ここで、図２を参照して出力バッファ２２の構成例について説明する。図２に示すように、出力バッファ２２は、１段目バッファ３０、２段目バッファ３１を備える。１段目バッファ３０は、ＰＭＯＳトランジスタＭＰ１、ＭＰ２、ＮＭＯＳトランジスタＭＮ１、ＭＮ２を有する。２段目バッファ３１は、ＰＭＯＳトランジスタＭＰ３、ＭＰ４、ＮＭＯＳトランジスタＭＮ３、ＭＮ４を有する。
【００３６】
ＰＭＯＳトランジスタＭＰ１、ＭＰ２、ＭＰ３、ＭＰ４のゲートには、スイッチングデバイス３２が接続されている。ＮＭＯＳトランジスタＭＮ１、ＭＮ２、ＭＮ３、ＭＮ４のゲートには、スイッチングデバイス３３が接続されている。
【００３７】
ＰＭＯＳトランジスタＭＰ１、ＭＰ２のゲートには、メモリマクロ２１からのリードデータＦ０がインバータにより反転された信号が入力される。ＮＭＯＳトランジスタＭＮ１、ＭＮ２のゲートには、メモリマクロ２１からのリードデータＦ０が入力される。
【００３８】
スイッチングデバイス３２、３３は、駆動能力切り替え信号Ｉに応じて、１段目バッファ３０と２段目バッファ３１の接続を切り替える。具体的には、スイッチングデバイス３２は、２段目バッファ３１のＰＭＯＳトランジスタＭＰ３とＭＰ４のゲートへの入力を、電源電圧とＰＭＯＳトランジスタＭＰ１及びＭＰ２のゲート信号とに切り替える。スイッチングデバイス３３は、駆動能力切り替え信号Ｉに応じて、２段目バッファ３１のＮＭＯＳトランジスタＭＮ３とＭＮ４のゲートへの入力を、電源電圧とＮＭＯＳトランジスタＭＮ１及びＭＮ２のゲート信号とに切り替える。
【００３９】
ここで、出力バッファ２２の駆動能力の切り替えについて説明する。出力バッファ２２では、駆動能力切り替え信号Ｉの極性によって、１段目バッファ３０と２段目バッファ３１の接続が切り替えられる。１段目バッファ３０と２段目バッファ３１とを接続した場合、トランジスタの並列接続の段数が増え、トランジスタのＯＮ抵抗が低下する。これにより、トランジスタがＯＮの時の電流が１段目バッファ３０だけの場合よりも増加し、駆動能力が上がる。ただし、ＯＮ抵抗が低下することにより、消費電流が上がる。逆に、１段目バッファ３０のみが動作する場合は、１段目バッファ３０と２段目バッファ３１とを接続した場合よりも駆動能力が下がるため、消費電流は低減する。
【００４０】
ここで、図３を参照して、半導体装置の動作について説明する。図３は、本実施の形態に係るバッファの制御方法を説明するためのフローチャートである。図３に示すフローチャートは、ＣＰＵ１１からのＣＰＵ要求リードアドレスＡとアドレス生成回路１２で生成された予想アドレスの連続性を判定し、出力バッファ２２の駆動能力を切り替えるフローチャートである。
【００４１】
まず、プリロードバッファ１４、駆動能力切り替え制御回路２４には、初期値が設定される（Ｓ１）。具体的には、プリロードバッファ１４にＦＦが設定され、アドレス連続性判定回路２３内のレジスタにＦＦが設定される。なお、ここでは、初期値としてＦＦとしたが、通常選ばれないアドレスを指定すればよくＦＦでなくてもよい。
【００４２】
そして、ＣＰＵ１１からＣＰＵ要求リードアドレスＡが発行されたか否かが判断される（Ｓ２）。ＣＰＵ要求リードアドレスＡが発行された場合（Ｓ２Ｙｅｓ）、ＣＰＵ１１は、ＣＰＵ要求リードアドレスＡをアドレス生成回路１２に出力する。このＣＰＵ要求リードアドレスＡをアドレスｎとする。
【００４３】
ＣＰＵ要求リードアドレスＡは、アドレス生成回路１２を経由し、プリロードバッファ１４に出力される。そして、当該ＣＰＵ要求リードアドレスＡがプリロードバッファ１４に格納されているかが判断される（Ｓ３）。
【００４４】
ＣＰＵ要求リードアドレスＡに対応するリードデータが格納されていれば（Ｓ３Ｙｅｓ）、ＣＰＵ１１は、プリロードバッファ１４からアドレスｎに対応するリードデータＢをリードする（Ｓ１１）。一方、ＣＰＵ要求リードアドレスＡに対応するリードデータが格納されていなければ、アドレス生成回路１２にリード要求信号Ｅを出力する（Ｓ４）。
【００４５】
そして、アドレス生成回路１２からアドレスｎ（ＣＰＵ要求リードアドレスＡ）に対応するメモリリードアドレスＤが出力される（Ｓ５）。一方、ＣＰＵ１１からＣＰＵ要求リードアドレスＡが発行されていない場合（Ｓ１Ｎｏ）、アドレス生成回路１２からアドレスｎ＝ｎ＋１のメモリリードアドレスＤが出力される（Ｓ６）。Ｓ６においては、次のＣＰＵ要求リードアドレスＡが発行される間、順次＋１された予想アドレスであるメモリリードアドレスＤが自動的に繰り返し発行される。
【００４６】
そして、アドレス連続性判定回路２３で、前回のリードアドレスと今回のリードアドレスとの比較が実行され、アドレスに連続性があるかが判定される（Ｓ７）。アドレス連続性判定回路２３における比較は、今回のメモリリードアドレスＤから前回メモリリードアドレスＤを減算することにより行われる。ここで、前回のリードアドレスがアドレスｎであったものとする。Ｓ６において発生された予想アドレスはｎ＋１であるため、（ｎ＋１）−ｎ＝１となる。すなわち、今回のリードアドレスｎは前回のリードアドレス＋１である。
【００４７】
この場合、アドレス連続性判定回路２３はアドレスに連続性があると判断し（Ｓ７Ｙｅｓ）、出力バッファ２２の駆動能力が下げられる（Ｓ８）。具体的には、判定結果Ｈとしてロウ・レベルが出力される。これにより、駆動能力切り替え制御回路２４からの駆動能力切り替え信号Ｉがロウ・レベルとなる。この駆動能力切り替え信号Ｉに応じて、出力バッファ２２の１段目バッファ３０のみが動作するように、スイッチングデバイス３２、３３が制御されることで、出力バッファ２２駆動能力を下げ、消費電流を低減することができる。そして、この予想アドレスｎ＋１に対応するリードデータＦ０がメモリマクロ２１から読みだされ、プリロードバッファ１４に格納される（Ｓ１０）。
【００４８】
ここで、Ｓ２において次に発行されたＣＰＵ要求リードアドレスＡのアドレスをｋとする。ｋ＝ｎ＋１である場合、このＣＰＵ要求リードアドレスＡに対応するリードデータＢはすでにプリロードバッファ１４に格納されているため、Ｓ３においてＹｅｓとなる。そして、ＣＰＵ１１は、プリロードバッファ１４からアドレスｋに対応するリードデータＢをリードする（Ｓ１１）。
【００４９】
一方、ｋがｎ＋１とは全く異なる値であった場合には、Ｓ３においてＮｏとなる。この場合、アドレス生成回路１２にリード要求信号Ｅを出力し（Ｓ４）、アドレス生成回路１２からアドレスｋ（ＣＰＵ要求リードアドレスＡ）に対応するメモリリードアドレスＤが出力される（Ｓ５）。この発行されたアドレスｋと、前回のアドレスｎとは全く異なるため、その差分は１とはならない。この場合、アドレス連続性判定回路２３はアドレスに連続性がないと判断し（Ｓ７Ｎｏ）、出力バッファ２２の駆動能力が上げられる（Ｓ９）。
【００５０】
具体的には、判定結果Ｈとしてハイ・レベルが出力される。これにより、駆動能力切り替え制御回路２４からの駆動能力切り替え信号Ｉがハイ・レベルとなる。この駆動能力切り替え信号Ｉに応じて、出力バッファ２２の１段目バッファ３０及び２段目バッファ３１のいずれも動作するように、スイッチングデバイス３２、３３が制御されることで、出力バッファ２２駆動能力を上げ、読み出しの遅延を少なくすることができる。
【００５１】
そして、出力バッファ２２が適切な駆動能力に制御された状態で、当該メモリリードアドレスＤに対応するリードデータＦ０がメモリマクロ２１から読みだされ、プリロードバッファ１４に格納される（Ｓ１０）。そして、当該メモリリードアドレスＤに対応するリードデータＢがＣＰＵ１１によりプリロードバッファ１４からリードされる（Ｓ１１）。
【００５２】
特許文献２では、駆動能力を高める所定の期間が決定されているため、ＣＰＵの実行命令のように不定期に条件分岐が発生し、アドレスの連続性が失われた場合には対応できなかった。
【００５３】
しかしながら、本発明では、前回メモリリードアドレスＤと今回のメモリリードアドレスＤと比較することによりアドレスの連続性を判定した結果を用いて、出力バッファ２２の駆動能力を動的に制御することができる。また、ＣＰＵチップ１０には、ＣＰＵ要求リードアドレスＡに基づいて、連続する次の予想アドレスを生成するアドレス生成部１０４と、予想アドレスに対応するリードデータを連続して格納するプリロードバッファ１４とが設けられている。
【００５４】
これにより、メモリリードアドレスＤが連続でない場合は、メモリマクロ２１から最初の読み出し時、出力バッファの段数を増やして駆動能力を上げることにより、可能な限り速くデータを読み出して、先読みしたメモリリードアドレスＤに対応するリードデータをプリロードバッファに格納することができる。
【００５５】
つまり、メモリリードアドレスＤの連続性を常時検出することで、ＣＰＵ１１からの命令の条件分岐が発生した場合に、バッファ能力を上げ、アクセスレイテンシィの悪化を防止することができる。すなわち、出力バッファ２２の駆動能力を高くする高駆動状態は、アドレス生成回路１２により自動的に予想アドレスが生成され、アドレスの連続性が比較されるまでの期間である。
【００５６】
メモリリードアドレスＤが連続である場合は、出力バッファ段数を減らして駆動能力を下げることにより、ピーク電流値を抑えることができる。すなわち、プリロードバッファ１４からリードデータＢが出力される際には、出力バッファ２２の駆動能力が低い低駆動状態となっており、消費電流を抑制することができる。つまり、出力バッファ２２の駆動能力の切り替え動作時間を予想アドレスにより速くできるため、出力バッファの消費電流を削減できる。
【００５７】
ここで、図４を参照して、本実施の形態に係る半導体装置の動作について具体的に説明する。図４は、実施の形態に係る制御方法を説明するためのタイミングチャートである。ＣＰＵ１１のリード動作について、ＣＰＵ要求リードアドレスＡの出力から当該ＣＰＵ要求リードアドレスＡに対応するリードデータＢがＣＰＵ１１に到達するまでの動作を説明する。図４において、このリード動作の流れを矢印で示している。
【００５８】
なお、図４においては、出力バッファ２２から出力されるリードデータＦ１、読み出しデータ・レディ信号Ｇ１は急峻に立ち上がるように図示したが、実際の立ち上がり及び立下りがなまった波形となる。図５に示すように、読み出しデータ・レディ信号Ｇ１は、読み出しデータ・レディ信号Ｇ０から所定の遅延をもって立ちあがる。また、駆動能力が小さいほど波形がなまる。図５においては、読み出しデータ・レディ信号Ｇ１のみを図示したが、リードデータＦ１についても同様である。また、入力バッファ１３においても同様に、波形のなまり及び遅延が発生する。
【００５９】
まず、アドレスｎのＣＰＵ要求リードアドレスＡがＣＰＵ１１から出力される。ＣＰＵ要求リードアドレスＡは、アドレス生成回路１２に入力され、システム・クロックの４分周クロックに同期して、メモリチップ２０へのメモリリードアドレスＤとしてメモリチップ２０へ出力される。
【００６０】
メモリチップ２０に入力されたメモリリードアドレスＤは、メモリマクロ２１に入力されると同時にアドレス連続性判定回路２３に入力される。アドレス連続性判定回路２３では、前回リードしたメモリリードアドレスＤと今回入力されたメモリリードアドレスＤとが比較される。
【００６１】
図４に示す例では、前回リードしたメモリリードアドレスＤはｎ＋１０であり、今回リードされるメモリリードアドレスＤはｎである。これらの差分は＋１０であり、アドレス連続性判定回路２３で連続性のないリードアドレスと判断される。アドレス連続性判定回路２３にメモリリードアドレスＤが入力された後の最初の４分周クロックの立ち上がりタイミングで、４分周クロックの１クロック分ハイ・レベルとなる判定結果Ｈが駆動能力切り替え制御回路２４へ出力される。
【００６２】
駆動能力切り替え制御回路２４では、出力バッファ２２からアドレスｎに対応するリードデータＦ１（ｎ）が出力されるタイミングの前の４分周クロックの立ち下がりエッジで、出力バッファ２２の駆動能力が最大になるように、複数の出力バッファ２２に４分周クロックの１クロック分ハイ・レベルとなる能力切り替え信号Ｉを出力する。
【００６３】
アドレスｎのリードデータ（ｎ）は、最大限の駆動能力で出力バッファ２２から出力され、メモリチップ２０からの読み出しデータ・レディ信号Ｇ１の立下りのタイミングで、入力バッファ１３から出力されプリロードバッファ１４へ格納される。このとき、能力切り替え信号Ｉは、ロウ・レベルとなっており、出力バッファ２２はその駆動能力が最少となるとなっている。このため、読み出しデータ・レディ信号Ｇ２、リードデータＦ２は、システム・クロックの２クロック分遅れる。
【００６４】
プリロードバッファ１４は、リードデータを格納した後、ＣＰＵ１１にアドレスｎに対応するリードデータ（ｎ）とデータ・レディ信号Ｊを出力する。ＣＰＵ１１は、データ・レディ信号Ｊの立ち上がりエッジのタイミングでリードデータ（ｎ）をリードする。
【００６５】
なお、図６に出力バッファ２２の駆動能力を切り替えた場合の、各信号波形を示す。図６において、Ｘが出力バッファ２２の駆動能力を最大に設定した場合、Ｙが出力バッファの駆動能力を最少に設定した場合を示している。図６に示すように、出力バッファ２２の駆動能力を切り替えた場合でも、リードデータＦ２に同期した読み出しデータ・レディ信号Ｇ２の立下りエッジでプリロードバッファ１４からＣＰＵ１１へデータ・レディ信号Ｊが出力される。
【００６６】
このため、ＣＰＵ１１は、出力バッファ２２の駆動能力の遅延が発生したとしても、データ・レディ信号Ｊのタイミングで、リードデータＢのリードを行うことにより、正しくリードデータＢを読みだすことが可能である。ＣＰＵ１１は、ＣＰＵ要求リードアドレスＡに対応するリードデータＢをリードした後に、次のＣＰＵ要求リードアドレスＡを発行する。
【００６７】
なお、プリロードバッファ１４のデータ・レディ信号Ｊの出力は、ＣＰＵ１１から出力されたＣＰＵ要求リードアドレスＡのリードデータが、プリロードバッファ１４に格納されていない場合、ＣＰＵ要求リードアドレスＡのデータがプリロードバッファ１４に格納されるまで中止される。データ・レディ信号１２０の出力を中止する理由は、アドレス生成回路１２でアドレスを生成し、先読みしてプリロードバッファ１４に格納した無効データをＣＰＵ１１が誤って読み出さないようにするためである。
【００６８】
この例では、ＣＰＵ１１のＣＰＵ要求リードアドレスＡが発行されてから、ＣＰＵ１１にリードデータが到達する期間は、システム・クロックで２３クロックが最速の期間となる（期間Ａ）。アドレス生成回路１２は、アドレスｎ（ＣＰＵ要求リードアドレスＡ）に対応するメモリリードアドレスＤを出力した後、先読みのために、システム・クロックの４分周クロックの１周期毎に連続した予想アドレスｎ＋１、ｎ＋２、ｎ＋３、・・・を出力する。この先読みされた予想アドレスに対応するリードデータは、ＣＰＵチップ１０のプリロードバッファ１４に格納される。
【００６９】
ＣＰＵ１１からのＣＰＵ要求リードアドレスＡが先読みされたメモリリードアドレスＤに一致すれば、４クロック毎にＣＰＵ１１にデータが出力される。つまり、最初の読み出しは２３クロックでＣＰＵ１１が読み出し、その後、出力バッファ２２の駆動能力を下げた後の最初のメモリリードアドレスＤに対するリード動作には６クロック必要となる。それ以降のメモリリードアドレスＤに対するリードデータＢは、４クロック毎にＣＰＵ１１に読み出される。つまり、連続読み出し中である期間Ｂは、先読みしてＣＰＵ要求リードアドレスＡに対応するリードデータＢが到達するまでの遅延を少なくしている。
【００７０】
次に、動的に出力バッファ２２の駆動能力を切り替えることで、メモリチップ２０とＣＰＵチップ１０間の遅延を減らし、アクセスレイテンシーの悪化を最小限に抑える効果について説明する。
【００７１】
メモリマクロ動作がＣＰＵ動作より動作スピードが遅いことによるアクセスレイテンシーの悪化は、次のＣＰＵ要求リードアドレスＡを発生する前に、最初のＣＰＵ要求リードアドレスＡをもとに、アドレス生成回路１２にてアドレスｎ＋１、ｎ＋２、ｎ＋３のアドレス生成し、先にプリロードバッファ１１０に対応するリードデータを格納することで抑制される。
【００７２】
ＣＰＵ１１は、最初のＣＰＵ要求リードアドレスＡとしてアドレスｎを出力すると同時にリード・イネーブル信号Ｃをアドレス生成回路１２へ出力する。これは、システム・クロックに換算すると最大２クロックを必要とする。アドレス生成回路１２では、アドレスｎとアドレス入力ラッチ・イネーブル信号とデータ出力ラッチ・イネーブル信号をメモリチップ２０へ出力する。これは、システム・クロックで１クロック必要とする。
【００７３】
アドレスｎは、リード・イネーブル信号Ｃのハイ・レベルのタイミングで、４分周クロックの１周期の期間、メモリチップ２０へ出力される。アドレス入力ラッチ・イネーブル信号は、アドレスｎが出力される期間イネーブルになる。なお、ここでは図示していないが、データ出力ラッチ・イネーブル信号は、アドレス入力ラッチ・イネーブル信号から４分周クロックの１周期遅れのタイミングでイネーブルとなる。
【００７４】
ＣＰＵチップ１０から出力された各信号は、メモリチップ２０に到達するまで、図示しないバッファの立ち上がり・立下がりの遅延によりシステム・クロックで２．５クロックの遅延が生じる。つまり、メモリリードアドレスＤと４分周クロックとアドレス入力ラッチ・イネーブル信号とデータ出力ラッチ・イネーブル信号は、それぞれチップ間において遅延が発生し、システム・クロックで約２．５クロック遅れた信号となる。メモリマクロ２１に各信号が到達してから、システム・クロックで１１クロック後にアドレスｎに対するデータ（ｎ）が出力される。
【００７５】
メモリチップ２０からＣＰＵチップ１０への出力バッファ２２の立ち上がり・立下り遅延によりシステム・クロックに換算すると最大２クロックの遅延が生じるものとする。読み出しデータ・レディ信号Ｇ１は、リードデータＦ１と同じタイミングでＣＰＵチップ１０に到達する。データ・レディ信号Ｇ１の立下りエッジを検出して、データ・レディ信号Ｊがプリロードバッファ１４で生成される。前記の遅延時間を合計し、その他、同期化による遅延を加算すると、アクセスレイテンシーは２３クロックとなる。
【００７６】
出力バッファ２２の駆動能力を下げた場合は、出力バッファ２２の立ち上がりと立下りの時間が長くなり、入力バッファ１３との間にシステム・クロックに換算すると最大２クロックの遅延が発生する。その結果、アクセスレイテンシーは、２５クロックとなる。
【００７７】
このように、出力バッファ２２の駆動能力は、リードデータＢが到達するまでの遅延に大きく影響する。出力バッファ２２の駆動能力を上げた場合、期間Ａは、システム・クロックの２３クロック分である。出力バッファ２２の駆動能力を下げた場合は、期間Ａは、システム・クロックの２５クロック分となる。図４において、期間Ａはバッファ能力を上げた場合を示している。
【００７８】
つまり、出力バッファ２２の駆動能力を上げた状態から下げた状態へ変更したときの遅延の増加分は、システム・クロックに換算すると最大２クロック分である。期間Ｂにおいて、出力バッファの駆動能力を下げた状態へ変更すると、リードデータＦ１はリードデータＦ０に対してシステム・クロックに換算すると最大２クロック分遅延する。同様に、読み出しデータ・レディ信号Ｇ１も、読み出しデータ・レディ信号Ｇ０に対し、システム・クロックに換算すると最大２クロック分遅延する。
【００７９】
出力バッファ２２の駆動能力を下げた状態へ変更した場合、システム・クロックに換算すると最大２クロック分遅延が伝播し、最終的にプリロードバッファ１４の出力タイミングに影響し、データ・レディ信号Ｊ、リードデータＢも遅延する。
【００８０】
図４にて、期間Ｂは、出力バッファの駆動能力を下げた期間であり、最初のアドレスをもとに、インクリメントさせた連続読み出し期間である。期間Ｂにリードするアドレスは、ＣＰＵ１１が最初のアドレス以降に要求する予想アドレスである。
【００８１】
期間Ｂにおいては、定期的に予想アドレスが発行されるために、４クロックで対応するリードデータがプリロードバッファ１４に格納され、ＣＰＵ１１のリード要求に備えることができる。このときのアクセスレイテンシーは、４クロックである。
【００８２】
消費電流を低減させるだけの目的であれば、期間Ａと期間Ｂともに出力バッファ２２の駆動能力を最小に設定すればよいことになるが、この場合、期間Ａのアクセスレイテンシーが悪化する。すなわち、期間Ａのアクセスレイテンシーの悪化を防ぐために、当該期間は、出力バッファ２２の駆動能力は最大とする。
【００８３】
一方、期間Ｂの連続アドレス読み出し期間では、出力バッファ２２の駆動能力を下げても、期間Ａから期間Ｂへの遷移時にシステム・クロックに換算すると最大２クロック分の遅延が発生するのみで、以降のアクセスレイテンシーは４クロックである。すなわち、期間Ｂで出力バッファ２２の駆動能力を下げた影響は少ない。
【００８４】
図７に、メモリリードアドレスＤのアドレスが連続性を有している場合から、不連続に変更される場合のタイミングチャートを示す。図７に示す例では、ＣＰＵの実行命令により不定期に条件分岐が発生し、アドレスｎ＋３からｎ＋１０に不連続に変更されている。
【００８５】
このようにアドレスが不連続である場合、図４の期間Ａと同様に、メモリマクロ２１からリードデータＦ０の読み出しが行われる。アドレス連続性判定回路２３では、前回リードされたアドレスｎ＋３と今回リードされるアドレスｎ＋１０とが比較され、不連続であると判定される。このとき、出力バッファ２２の駆動能力が最大値に設定され、高速に読み出しが実行される。なお、プリロードバッファ１４にすでに格納された、アドレス生成回路１２によりあらかじめ生成された予想アドレスｎ＋４〜ｎ＋７に対応するリードデータは不要（捨てデータ）となる。
【００８６】
以上説明したように、メモリリードアドレスＤの連続性を常時検出することで、ＣＰＵ１１からの命令の条件分岐が発生した場合に、バッファ能力を上げ、アクセスレイテンシィの悪化を防止することができる。また、メモリリードアドレスＤが連続である場合は、出力バッファ段数を減らして駆動能力を下げることにより、ピーク電流値を抑えることができる。
【００８７】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、さまざまな変更、増減を加えてもよい。これらの変更、増減が加えられた変形例も本発明の範囲にあることは当業者に理解されるところである。
【符号の説明】
【００８８】
１０  ＣＰＵチップ
１１  ＣＰＵ
１２  アドレス生成回路
１３  入力バッファ
１４  プリロードバッファ
２０  メモリチップ
２１  メモリマクロ
２２  出力バッファ
２３  アドレス連続性判定回路
２４  駆動能力切り替え制御回路
３０  １段目バッファ
３１  ２段目バッファ
３２、３３  スイッチングデバイス 
Ａ  ＣＰＵ要求リードアドレス
Ｂ  リードデータ
Ｃ  リード・イネーブル信号
Ｄ  メモリリードアドレス
Ｅ  リード要求信号
Ｆ  リードデータ
Ｇ  読み出しデータ・レディ信号
Ｈ  判定結果
Ｉ  駆動能力切り替え信号
Ｊ  データ・レディ信号
ＭＰ１、ＭＰ２、ＭＰ３、ＭＰ４ ＰＭＯＳトランジスタ
ＭＮ１、ＭＮ２、ＭＮ３、ＭＮ４  ＮＭＯＳトランジスタ
【図１】
2011210336.tif 000003
【図２】
2011210336.tif 000004
【図３】
2011210336.tif 000005
【図４】
2011210336.tif 000006
【図５】
2011210336.tif 000007
【図６】
2011210336.tif 000008
【図７】
2011210336.tif 000009
【図８】
2011210336.tif 000010