(57)【要約】      （修正有）【課題】消費電力を低減することができる半導体装置を提供する。【解決手段】半導体装置１０１は、メモリアレイ＃０（８＿０）と、メモリアレイ＃１（８＿１）と、メモリアレイ＃２（８＿２）と、メモリアレイ＃３（８＿３）と、制御部５０と、電源制御回路９とを備える。メモリアレイ＃０〜メモリアレイ＃３は、データを記憶する。メモリアレイ＃０〜メモリアレイ＃３内のデータは、書き込まれ、かつまだ読み出されていない場合には、有効なデータとなり、書き込まれ、かつ読み出された場合には、無効なデータとなる。電源制御回路９は、メモリアレイ＃０〜メモリアレイ＃３のそれぞれに別個に電源電圧を供給する。電源制御回路９は、メモリアレイ＃０〜メモリアレイ＃３のうち、有効なデータを記憶しているメモリアレイに電源電圧を供給し、有効なデータを記憶していないメモリアレイに電源電圧を供給しない。【選択図】図１
2014074993.tif 000002
【特許請求の範囲】
【請求項１】
各々が、独立して電源電圧の供給が可能な複数のメモリアレイと、
前記複数のメモリアレイのうち、有効なデータを記憶し、かつ空き領域を有するメモリアレイに、外部から入力されたデータを書き込む制御部とを備えた半導体装置。
【請求項２】
前記制御部は、
各々が、対応のメモリアレイの空き領域のアドレスを先入れ先出しで保持するＦＩＦＯメモリと、
前記メモリアレイから有効なデータが読み出されたときに、前記読み出されたデータが格納されていた領域のアドレスを空き領域のアドレスとして、対応の前記ＦＩＦＯメモリに書き込むＦＩＦＯ入力制御部とを含む、請求項１記載の半導体装置。
【請求項３】
前記制御部は、
有効なデータを記憶し、かつ空き領域を有するメモリアレイに対応するＦＩＦＯメモリから空きアドレスを出力させるＦＩＦＯ出力制御部を含む、請求項２記載の半導体装置。
【請求項４】
前記複数のメモリアレイは、優先順位が設定され、
前記ＦＩＦＯ出力制御部は、有効なデータを記憶し、かつ空き領域を有するメモリアレイが複数存在する場合には、優先順位が最も高いメモリアレイに対応するＦＩＦＯメモリから空きアドレスを出力させる、請求項３記載の半導体装置。
【請求項５】
前記ＦＩＦＯ出力制御部は、有効なデータを記憶し、かつ空き領域を有するメモリアレイが存在しない場合には、空き領域を有するメモリアレイに対応するＦＩＦＯメモリから空きアドレスを出力させる、請求項４記載の半導体装置。
【請求項６】
前記ＦＩＦＯ出力制御部は、有効なデータを記憶し、かつ空き領域を有するメモリアレイが存在しない場合であって、空き領域を有するメモリアレイが複数存在する場合には、優先順位が最も高い空き領域を有するメモリアレイに対応するＦＩＦＯメモリから空きアドレスを出力させる、請求項５記載の半導体装置。
【請求項７】
各々が、独立して電源電圧の供給が可能な複数のメモリアレイと、
外部からキュー番号を識別子として含むデータが入力されたときに、前記入力されたデータのキュー番号と同じキュー番号の最後のデータが格納されたメモリアレイに、前記外部から入力されたデータを書き込む制御部とを備えた半導体装置。
【請求項８】
前記制御部は、
各々が、対応のメモリアレイの空き領域のアドレスを先入れ先出しで保持するＦＩＦＯメモリと、
前記メモリアレイから有効なデータが読み出されたときに、前記読み出されたデータが格納されていた領域のアドレスを空き領域のアドレスとして、対応の前記ＦＩＦＯメモリに書き込むＦＩＦＯ入力制御部とを含む、請求項７記載の半導体装置。
【請求項９】
前記制御部は、
前記入力されたデータのキュー番号と同じキュー番号の最後のデータが格納されたメモリアレイに対応するＦＩＦＯメモリから空きアドレスを出力させるＦＩＦＯ出力制御部を含む、請求項７記載の半導体装置。
【請求項１０】
前記複数のメモリアレイは、優先順位が設定され、
前記ＦＩＦＯ出力制御部は、前記入力されたデータのキュー番号と同じキュー番号の最後のデータが格納されたメモリアレイに空き領域が存在しない場合には、前記メモリアレイの次の優先順位のメモリアレイに対応するＦＩＦＯメモリから空きアドレスを出力させる、請求項９記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関し、たとえば、複数のメモリアレイを有する半導体装置に関する。
【背景技術】
【０００２】
従来から複数のメモリアレイ（単位メモリ）を効率的に使用するための管理方式が知られている。
【０００３】
たとえば、特許文献１（特開２０００−１８１７８５号公報）に記載のメモリ管理方式では、各メモリ単位の空き／塞がりの状態を表すビットと各単位メモリの位置を表す情報とが各単位メモリに対応して設定されたメモリ管理テーブルを設ける。メモリ割当ての要求に対し要求された容量の空きのブロックが連続して存在するかメモリ管理テーブルをハントし、獲得した後使用が終了すると、解放された空きブロックを解放順にメモリの再ハント優先順位が最下位となるように配置する。最下位に順次配置された単位メモリの順番が本来の番号順と異なると、並べ換え手段により並び換えを行って連続した単位メモリの領域を確保する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−１８１７８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１のメモリ管理方式などの従来の管理方式では、消費電力を低減することができない。
【０００６】
たとえば、メモリアレイＡ、Ｂの前領域にデータが書き込まれ、メモリアレイＣの半分の領域にデータが書き込まれている状態とする。この状態で、メモリアレイＡのデータがすべて読み出されて、全領域が解放された後、新たにデータを書込む場合、メモリアレイＣではなく、メモリアレイＡにデータが書き込まれることがある。特に、メモリアレイ間に優先順位が設定され、メモリアレイＡの優先順位がメモリアレイＣの優先順位よりも高い場合には、メモリアレイＡにデータが書き込まれることになる。その結果、メモリアレイＡ、Ｂ、Ｃのすべてに電源電圧を供給しなければならなくなる。
【０００７】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかであろう。
【課題を解決するための手段】
【０００８】
本発明の一実施形態によれば、制御部は、複数のメモリアレイのうち、有効なデータを記憶し、かつ空き領域を有するメモリアレイに、外部から入力されたデータを書き込む。
【発明の効果】
【０００９】
本発明の一実施形態によれば、消費電力を低減することができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態の半導体装置の構成を表わす図である。
【図２】第２の実施形態の半導体装置の構成を表わす図である。
【図３】第２の実施形態のＦＩＦＯ出力制御部の構成を表わす図である。
【図４】第２の実施形態における書込みアドレスの決定の第１の例を表わす図である。
【図５】第２の実施形態における書込みアドレスの決定の第２の例を表わす図である。
【図６】第２の実施形態における書込みアドレスの決定の第３の例を表わす図である。
【図７】第３の実施形態の半導体装置の構成を表わす図である。
【図８】第３の実施形態のＦＩＦＯ出力制御部の構成を表わす図である。
【図９】第３の実施形態における書込みアドレスの決定の第１の例を表わす図である。
【図１０】第３の実施形態における書込みアドレスの決定の第２の例を表わす図である。
【図１１】第３の実施形態における書込みアドレスの決定の第３の例を表わす図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について、図面を用いて説明する。
［第１の実施形態］
図１は、第１の実施形態の半導体装置の構成を表わす図である。
【００１２】
図１を参照して、この半導体装置１０１は、メモリアレイ＃０（８＿０）と、メモリアレイ＃１（８＿１）と、メモリアレイ＃２（８＿２）と、メモリアレイ＃３（８＿３）と、制御部５０と、電源制御回路９とを備える。
【００１３】
メモリアレイ＃０（８＿０）〜メモリアレイ＃３（８＿３）は、データを記憶する。メモリアレイ＃０（８＿０）〜メモリアレイ＃３（８＿３）内のデータは、書き込まれ、かつまだ読み出されていない場合には、有効なデータとなり、書き込まれ、かつ読み出された場合には、無効なデータとなる。
【００１４】
電源制御回路９は、メモリアレイ＃０（８＿０）〜メモリアレイ＃３（８＿３）のそれぞれに別個に電源電圧を供給する。電源制御回路９は、メモリアレイ＃０（８＿０）〜メモリアレイ＃３（８＿３）のうち、有効なデータを記憶しているメモリアレイに電源電圧を供給し、有効なデータを記憶していないメモリアレイに電源電圧を供給しない。
【００１５】
制御部５０は、メモリアレイ＃０（８＿０）〜メモリアレイ＃３（８＿３）のうち、有効なデータを記憶し、かつ空き領域を有するメモリアレイに、外部から入力されたデータを書き込む。
【００１６】
以上のように、本実施の形態によれば、有効なデータを記憶し、かつ空き領域を有するメモリアレイにデータが書き込まれるので、未使用のメモリアレイに電源電圧を供給してデータが書込まれるような事態を回避できる。これにより、消費電力を低減できる。
【００１７】
［第２の実施形態］
図２は、第２の実施形態の半導体装置の構成を表わす図である。
【００１８】
この半導体装置１は、データ入出力端子２と、アドレス端子３と、電源制御回路９と、メモリアレイ＃０（８＿０）と、メモリアレイ＃１（８＿１）と、メモリアレイ＃２（８＿２）と、メモリアレイ＃３（８＿３）と、制御部５１とを備える。
【００１９】
メモリアレイ＃０〜メモリアレイ＃３は、データを記憶する。メモリアレイ＃０〜メモリアレイ＃３内のデータは、書き込まれ、かつまだ読み出されていない場合には、有効なデータとなり、書き込まれ、かつ読み出された場合には、無効なデータとなる。メモリアレイ＃０〜メモリアレイ＃３は、優先順位が設定される。本実施の形態では、優先順位が最も高いメモリアレイがメモリアレイ＃０で、メモリアレイ＃１、メモリアレイ＃２、メモリアレイ＃３の順に優先順位が低くなるものとする。
【００２０】
電源制御回路９は、メモリアレイ＃０〜メモリアレイ＃３のそれぞれに別個に電源電圧を供給する。電源制御回路９は、メモリアレイ＃０〜メモリアレイ＃３のうち、有効なデータを記憶しているメモリアレイに電源電圧を供給し、有効なデータを記憶していないメモリアレイに電源電圧を供給しない。
【００２１】
制御部５１は、読み書き制御回路７＿０，７＿１，７＿２，７＿３と、アドレス管理部４とを備える。
【００２２】
読み書き制御回路７＿ｉ（ｉ＝０〜３）は、アドレス管理部４から出力される物理アドレスに従って、データ入出力端子２からのデータを対応のメモリアレイ＃ｉ（ｉ＝０〜３）に書込む。
【００２３】
読み書き制御回路７＿ｉ（ｉ＝０〜３）は、アドレス管理部４から出力される物理アドレスに従って、対応のメモリアレイ＃ｉ（ｉ＝０〜３）からデータを読み出して、データ入出力端子２へ送る。
【００２４】
アドレス管理部４は、アドレス端子３から入力される論理アドレスを物理アドレスに変換する。アドレス管理部４は、ＦＩＦＯ（First-In and First-Out）メモリ＃０（１４＿０）と、ＦＩＦＯメモリ＃１（１４＿１）と、ＦＩＦＯメモリ＃２（１４＿２）と、ＦＩＦＯメモリ＃３（１４＿３）と、ＦＩＦＯ入力制御部１０と、ＦＩＦＯ出力制御部５と、変換テーブル記憶部６とを含む。
【００２５】
ＦＩＦＯメモリ＃ｉ（ｉ＝０〜３）は、先入れ先出し方式のメモリであって、対応のメモリアレイ＃ｉの未使用領域（有効なデータが格納されていなメモリセル）のアドレスを空きアドレスとして保持する。ＦＩＦＯメモリ＃ｉ（ｉ＝０〜３）内にアドレスが格納されていないときには、メモリアレイ＃ｉ（ｉ＝０〜３）が全使用状態（未使用領域がない状態）である。ＦＩＦＯメモリ＃ｉ（ｉ＝０〜３）の全領域にアドレスが格納されているときには、メモリアレイ＃ｉ（ｉ＝０〜３）の全領域が未使用状態であるものとする。すなわち、ＦＩＦＯメモリ＃ｉ（ｉ＝０〜３）に格納できるアドレスの総数は、メモリアレイ＃ｉのすべてのアドレス（全領域のアドレス）とする。
【００２６】
ＦＩＦＯ入力制御部１０は、メモリアレイ＃ｉ（ｉ＝０〜３）から有効なデータが読み出されたときに、読み出されたデータが格納されていた領域のアドレスを空き領域のアドレスとして、対応のＦＩＦＯメモリ＃ｉ（ｉ＝０〜３）に書き込む。
【００２７】
ＦＩＦＯ出力制御部５は、有効なデータを記憶し、かつ空き領域を有するメモリアレイ＃ｉ（ｉ＝０〜３）に対応するＦＩＦＯメモリ＃ｉ（ｉ＝０〜３）から空きアドレスを出力させる。
【００２８】
ＦＩＦＯ出力制御部５は、有効なデータを記憶し、かつ空き領域を有するメモリアレイが複数存在する場合には、優先順位が最も高いメモリアレイ＃ｉ（ｉ＝０〜３）に対応するＦＩＦＯメモリ＃ｉ（ｉ＝０〜３）から空きアドレスを出力させる。
【００２９】
ＦＩＦＯ出力制御部５は、有効なデータを記憶し、かつ空き領域を有するメモリアレイが存在しない場合には、空き領域を有するメモリアレイ＃ｉ（ｉ＝０〜３）に対応するＦＩＦＯメモリ＃ｉ（ｉ＝０〜３）から空きアドレスを出力させる。
【００３０】
ＦＩＦＯ出力制御部５は、有効なデータを記憶し、かつ空き領域を有するメモリアレイが存在しない場合であって、空き領域を有するメモリアレイが複数存在する場合には、優先順位が最も高い空き領域を有するメモリアレイ＃ｉ（ｉ＝０〜３）に対応するＦＩＦＯメモリ＃ｉ（ｉ＝０〜３）から空きアドレスを出力させる。
【００３１】
変換テーブル記憶部６は、論理アドレスを物理アドレスに変換するテーブルを記憶する。データの読み出し時には、アドレス端子３から入力された論理アドレスが変換テーブルに従って、物理アドレスに変換されて、読み書き制御回路７＿０〜７＿３へ送られる。データの書込み時には、ＦＩＦＯメモリ＃０〜ＦＩＦＯメモリ＃３のいずれかから出力されたアドレスを物理アドレスとして、アドレス端子３から入力された論理アドレスと対応させて変換テーブルに記憶される。
【００３２】
図３は、第２の実施形態のＦＩＦＯ出力制御部の構成を表わす図である。
ＦＩＦＯ出力制御部５は、入力論理部１１と、プライオリティエンコーダ１２と、アドレスデコーダ１３と、セレクタ１５と、遅延調整用フリップフロップ１６と、ＡＮＤ回路１７＿０〜１７＿３とを備える。
【００３３】
入力論理部１１は、ＮＯＲ回路１８＿０＿１８＿３と、ＮＯＲ回路１９＿０〜１９＿３と、インバータ６１＿０〜６１＿３と、ＡＮＤ回路２０＿０〜２０＿３と、ＯＲ回路２１＿０〜２１＿３とを含む。
【００３４】
ＮＯＲ回路１８＿０は、信号ｅｍｐｔｙ０と信号ｆｕｌｌ０の否定論理和を表わす信号ａ０を出力する。ＮＯＲ回路１８＿１は、信号ｅｍｐｔｙ１と信号ｆｕｌｌ１の否定論理和を表わす信号ａ１を出力する。ＮＯＲ回路１８＿２は、信号ｅｍｐｔｙ２と信号ｆｕｌｌ２の否定論理和を表わす信号ａ２を出力する。ＮＯＲ回路１８＿３は、信号ｅｍｐｔｙ３と信号ｆｕｌｌ３の否定論理和を表わす信号ａ３を出力する。
【００３５】
ＮＯＲ回路１９＿０は、信号ａ１，ａ２，ａ３の否定論理和を表す信号を出力する。ＮＯＲ回路１９＿１は、信号ａ０，ａ２，ａ３の否定論理和を表す信号を出力する。ＮＯＲ回路１９＿２は、信号ａ０，ａ１，ａ３の否定論理和を表す信号を出力する。ＮＯＲ回路１９＿３は、信号ａ０，ａ１，ａ２の否定論理和を表す信号を出力する。
【００３６】
インバータ６１＿０は、信号ｅｍｐｔｙ０の否定を表す信号を出力する。インバータ６１＿１は、信号ｅｍｐｔｙ１の否定を表す信号を出力する。インバータ６１＿２は、信号ｅｍｐｔｙ２の否定を表す信号を出力する。インバータ６１＿３は、信号ｅｍｐｔｙ３の否定を表す信号を出力する。
【００３７】
ＡＮＤ回路２０＿０は、ＮＯＲ回路１９＿０の出力と、インバータ６１＿０の出力の論理積を表わす信号を出力する。ＡＮＤ回路２０＿１は、ＮＯＲ回路１９＿１の出力と、インバータ６１＿１の出力の論理積を表わす信号を出力する。ＡＮＤ回路２０＿２は、ＮＯＲ回路１９＿２の出力と、インバータ６１＿２の出力の論理積を表わす信号を出力する。ＡＮＤ回路２０＿３は、ＮＯＲ回路１９＿３の出力と、インバータ６１＿３の出力の論理積を表わす信号を出力する。
【００３８】
ＯＲ回路２１＿０は、信号ａ０と、ＡＮＤ回路２０＿０の論理和を表わす信号ＯＵＴ１を出力する。ＯＲ回路２１＿１は、信号ａ１と、ＡＮＤ回路２０＿１の論理和を表わす信号ＯＵＴ０を出力する。ＯＲ回路２１＿２は、信号ａ２と、ＡＮＤ回路２０＿２の論理和を表わす信号ＯＵＴ２を出力する。ＯＲ回路２１＿３は、信号ａ３と、ＡＮＤ回路２０＿３の論理和を表わす信号ＯＵＴ３を出力する。
【００３９】
プライオリティエンコーダ１２は、信号ＯＵＴ０，ＯＵＴ１，ＯＵＴ２，ＯＵＴ３のうち、「Ｈ」レベルである信号がＯＵＴＸだけの場合に、「Ｘ」を出力する。プライオリティエンコーダ１２は、信号ＯＵＴ０，ＯＵＴ１，ＯＵＴ２，ＯＵＴ３のうち、「Ｈ」レベルである信号がＯＵＴＸ１、ＯＵＴＸ２、・・・、ＯＵＴＸＮの場合に、「Ｘ１」を出力する。ただし、Ｘ１＜Ｘ２、・・・、Ｘ１＜ＸＮである。
【００４０】
アドレスデコーダ１３は、プライオリティエンコーダ１２から出力される信号「Ｘ」が「０」の場合に、信号Ｄ０を「Ｈ」レベルに設定し、信号Ｄ１，Ｄ２，Ｄ３を「Ｌ」レベルに設定する。アドレスデコーダ１３は、プライオリティエンコーダ１２から出力される信号「Ｘ」が「１」の場合に、信号Ｄ１を「Ｈ」レベルに設定し、信号Ｄ０，Ｄ２，Ｄ３を「Ｌ」レベルに設定する。アドレスデコーダ１３は、プライオリティエンコーダ１２から出力される信号「Ｘ」が「２」の場合に、信号Ｄ２を「Ｈ」レベルに設定し、信号Ｄ０，Ｄ１，Ｄ３を「Ｌ」レベルに設定する。アドレスデコーダ１３は、プライオリティエンコーダ１２から出力される信号「Ｘ」が「３」の場合に、信号Ｄ３を「Ｈ」レベルに設定し、信号Ｄ０，Ｄ１，Ｄ２を「Ｌ」レベルに設定する。
【００４１】
ＡＮＤ回路１７＿０は、リード命令信号ｒｅａｄ０と信号Ｄ０の論理積を表わす信号を出力する。ＡＮＤ回路１７＿１は、リード命令信号ｒｅａｄ１と信号Ｄ１の論理積を表わす信号を出力する。ＡＮＤ回路１７＿２は、リード命令信号ｒｅａｄ２と信号Ｄ２の論理積を表わす信号を出力する。ＡＮＤ回路１７＿３は、リード命令信号ｒｅａｄ３と信号Ｄ３の論理積を表わす信号を出力する。
【００４２】
ＦＩＦＯメモリ＃０は、ＡＮＤ回路１７＿０の出力が「Ｈ」レベルの場合に、先頭に格納されているアドレスを信号ｑ０として出力する。ＦＩＦＯメモリ＃０は、ＡＮＤ回路１７＿０の出力が「Ｌ」レベルの場合に、不定値を信号ｑ０として出力する。ＦＩＦＯメモリ＃０は、格納されているアドレスがない場合には、信号ｅｍｐｔｙ０を「Ｈ」レベルに設定する。ＦＩＦＯメモリ＃０は、格納されているアドレスがある場合には、信号ｅｍｐｔｙ０を「Ｌ」レベルに設定する。ＦＩＦＯメモリ＃０は、未使用の領域（アドレスが格納されていない領域）がない場合には、信号ｆｕｌｌ０を「Ｈ」レベルに設定する。ＦＩＦＯメモリ＃０は、未使用の領域がある場合には、信号ｆｕｌｌ０を「Ｌ」レベルに設定する。
【００４３】
ＦＩＦＯメモリ＃１は、ＡＮＤ回路１７＿１の出力が「Ｈ」レベルの場合に、先頭に格納されているアドレスを信号ｑ１として出力する。ＦＩＦＯメモリ＃１は、ＡＮＤ回路１７＿１の出力が「Ｌ」レベルの場合に、不定値を信号ｑ１として出力する。ＦＩＦＯメモリ＃１は、格納されているアドレスがない場合には、信号ｅｍｐｔｙ１を「Ｈ」レベルに設定する。ＦＩＦＯメモリ＃１は、格納されているアドレスがある場合には、信号ｅｍｐｔｙ１を「Ｌ」レベルに設定する。ＦＩＦＯメモリ＃１は、未使用の領域がない場合には、信号ｆｕｌｌ１を「Ｈ」レベルに設定する。ＦＩＦＯメモリ＃１は、未使用の領域がある場合には、信号ｆｕｌｌ１を「Ｌ」レベルに設定する。
【００４４】
ＦＩＦＯメモリ＃２は、ＡＮＤ回路１７＿２の出力が「Ｈ」レベルの場合に、先頭に格納されているアドレスを信号ｑ２として出力する。ＦＩＦＯメモリ＃２は、ＡＮＤ回路１７＿２の出力が「Ｌ」レベルの場合に、不定値を信号ｑ２として出力する。ＦＩＦＯメモリ＃２は、格納されているアドレスがない場合には、信号ｅｍｐｔｙ２を「Ｈ」レベルに設定する。ＦＩＦＯメモリ＃２は、格納されているアドレスがある場合には、信号ｅｍｐｔｙ２を「Ｌ」レベルに設定する。ＦＩＦＯメモリ＃２は、未使用の領域がない場合には、信号ｆｕｌｌ２を「Ｈ」レベルに設定する。ＦＩＦＯメモリ＃２は、未使用の領域がある場合には、信号ｆｕｌｌ２を「Ｌ」レベルに設定する。
【００４５】
ＦＩＦＯメモリ＃３は、ＡＮＤ回路１７＿３の出力が「Ｈ」レベルの場合に、先頭に格納されているアドレスを信号ｑ３として出力する。ＦＩＦＯメモリ＃３は、ＡＮＤ回路１７＿３の出力が「Ｌ」レベルの場合に、不定値を信号ｑ３として出力する。ＦＩＦＯメモリ＃３は、格納されているアドレスがない場合には、信号ｅｍｐｔｙ３を「Ｈ」レベルに設定する。ＦＩＦＯメモリ＃３は、格納されているアドレスがある場合には、信号ｅｍｐｔｙ３を「Ｌ」レベルに設定する。ＦＩＦＯメモリ＃３は、未使用の領域がない場合には、信号ｆｕｌｌ３を「Ｈ」レベルに設定する。ＦＩＦＯメモリ＃３は、未使用の領域がある場合には、信号ｆｕｌｌ３を「Ｌ」レベルに設定する。
【００４６】
遅延調整用フリップフロップ１６は、信号Ｄ０，Ｄ１，Ｄ２，Ｄ３を受けて、所定時間だけ遅延したタイミングでセレクト信号ｓｅｌｅｃｔを出力する。セレクト信号ｓｅｌｅｃｔは、信号Ｄ０が「Ｈ」レベルで、信号Ｄ１，Ｄ２，Ｄ３が「Ｌ」レベルのときには、「０」を表わす信号となる。セレクト信号ｓｅｌｅｃｔは、信号Ｄ１が「Ｈ」レベルで、信号Ｄ０，Ｄ２，Ｄ３が「Ｌ」レベルのときには、「１」を表わす信号となる。セレクト信号ｓｅｌｅｃｔは、信号Ｄ２が「Ｈ」レベルで、信号Ｄ０，Ｄ１，Ｄ３が「Ｌ」レベルのときには、「２」を表わす信号となる。セレクト信号ｓｅｌｅｃｔは、信号Ｄ３が「Ｈ」レベルで、信号Ｄ０，Ｄ１，Ｄ２が「Ｌ」レベルのときには、「３」を表わす信号となる。
【００４７】
セレクタ１５は、信号ｑ０，ｑ１，ｑ２，ｑ３を受けて、セレクト信号ｓｅｌｅｃｔの値に応じて選択した信号を出力する。セレクタ１５は、セレクト信号ｓｅｌｅｃｔが「０」の場合には、信号ｑ０を出力する。セレクタ１５は、セレクト信号ｓｅｌｅｃｔが「１」の場合には、信号ｑ１を出力する。セレクタ１５は、セレクト信号ｓｅｌｅｃｔが「２」の場合には、信号ｑ２を出力する。セレクタ１５は、セレクト信号ｓｅｌｅｃｔが「３」の場合には、信号ｑ３を出力する。
【００４８】
（例１）
図４は、第２の実施形態における書込みアドレスの決定の第１の例を表わす図である。
【００４９】
ＦＩＦＯメモリ＃０は、１つのアドレスも格納していない状態である（つまり、メモリアレイ＃０は、全使用状態である）。ＦＩＦＯメモリ＃１は、全領域にアドレスを格納している（つまり、メモリアレイ＃１は、全て未使用状態である）。ＦＩＦＯメモリ＃２は、一部の領域にアドレスを格納している（つまり、メモリアレイ＃２は、残量有状態である）。ＦＩＦＯメモリ＃３は、１つのアドレスも格納してない状態である（つまり、メモリアレイ＃３は、全使用状態である）。
【００５０】
このような状態では、信号ｅｍｐｔｙ０が「Ｈ」レベル、信号ｆｕｌｌ０が「Ｌ」レベルとなり、信号ｅｍｐｔｙ１が「Ｌ」レベル、信号ｆｕｌｌ１が「Ｈ」レベルとなり、信号ｅｍｐｔｙ２が「Ｌ」レベル、信号ｆｕｌｌ２が「Ｌ」レベルとなり、信号ｅｍｐｔｙ３が「Ｈ」レベル、信号ｆｕｌｌ３が「Ｌ」レベルとなる。
【００５１】
ＮＯＲ回路１８＿０〜１８＿３によって、信号ａ０，ａ１，ａ３が「Ｌ」レベルとなり、信号ａ２が「Ｈ」レベルとなる。信号ａ２が「Ｈ」レベルのため、ＮＯＲ回路１９＿０の出力が「Ｌ」レベルとなり、その結果、ＡＮＤ回路２０＿０の出力が「Ｌ」レベルとなる。信号ａ０が「Ｌ」レベルで、ＡＮＤ回路２０＿０の出力が「Ｌ」レベルのため、ＯＲ回路２１＿０は、「Ｌ」レベルの出力信号ＯＵＴ０を出力する。
【００５２】
信号ａ２が「Ｈ」レベルのため、ＮＯＲ回路１９＿１の出力が「Ｌ」レベルとなり、その結果、ＡＮＤ回路２０＿１の出力が「Ｌ」レベルとなる。信号ａ１が「Ｌ」レベルで、ＡＮＤ回路２０＿１の出力が「Ｌ」レベルのため、ＯＲ回路２１＿１は、「Ｌ」レベルの出力信号ＯＵＴ１を出力する。
【００５３】
信号ａ０，ａ１，ａ３が「Ｌ」レベルのため、ＮＯＲ回路１９＿２の出力が「Ｈ」レベルとなる。ｅｍｐｔｙ２が「Ｌ」レベルで、ＮＯＲ回路１９＿２の出力が「Ｈ」レベルのため、ＡＮＤ回路２０＿２の出力が「Ｈ」レベルとなる。信号ａ２が「Ｌ」レベルで、ＡＮＤ回路２０＿２の出力が「Ｈ」レベルのため、ＯＲ回路２１＿２は、「Ｈ」レベルの出力信号ＯＵＴ２を出力する。
【００５４】
信号ａ２が「Ｈ」レベルのため、ＮＯＲ回路１９＿３の出力が「Ｌ」レベルとなり、その結果、ＡＮＤ回路２０＿３の出力が「Ｌ」レベルとなる。信号ａ３が「Ｌ」レベルで、ＡＮＤ回路２０＿３の出力が「Ｌ」レベルのため、ＯＲ回路２１＿３は、「Ｌ」レベルの出力信号ＯＵＴ３を出力する。
【００５５】
プライオリティエンコーダ１２は、ＯＵＴ０が「Ｌ」レベル、ＯＵＴ１が「Ｌ」レベル、ＯＵＴ２が「Ｈ」レベル、ＯＵＴ３が「Ｌ」レベルによって、「２」を出力する。
【００５６】
アドレスデコーダ１３は、「２」をデコードして、「Ｌ」レベルの信号Ｄ０をＡＮＤ回路１７＿０へ、「Ｌ」レベルの信号Ｄ１をＡＮＤ回路１７＿１へ、「Ｈ」レベルの信号Ｄ２をＡＮＤ回路１７＿２へ、「Ｌ」レベルの信号Ｄ３をＡＮＤ回路１７＿３へ出力する。信号Ｄ０〜Ｄ３は、遅延調整用フリップフロップ１６へも送られる。
【００５７】
リード命令信号ｒｅａｄ０〜ｒｅａｄ３が「Ｈ」レベルに活性化されると、ＡＮＤ回路１７＿２によって、ＦＩＦＯメモリ＃２は、先頭に格納されているアドレスｑ２を出力する。
【００５８】
遅延調整用フリップフロップ１６は、ＦＩＦＯメモリ＃２の出力タイミングと同じタイミングで、セレクタ１５にＦＩＦＯメモリ＃２の出力を選択させるセレクト信号ｓｅｌｅｃｔを出力する。
【００５９】
セレクタ１５は、ＦＩＦＯメモリ＃２から出力されたアドレスｑ２を出力する。
（例２）
図５は、第２の実施形態における書込みアドレスの決定の第２の例を表わす図である。
【００６０】
ＦＩＦＯメモリ＃０は、１つのアドレスも格納していない状態である（つまり、メモリアレイ＃０は、全使用状態である）。ＦＩＦＯメモリ＃１は、一部の領域にアドレスを格納している（つまり、メモリアレイ＃１は、残量有状態である）。ＦＩＦＯメモリ＃２は、一部の領域にアドレスを格納している（つまり、メモリアレイ＃２は、残量有状態である）。ＦＩＦＯメモリ＃３は、１つのアドレスも格納してない状態である（つまり、メモリアレイ＃３は、全使用状態である）。
【００６１】
このような状態では、信号ｅｍｐｔｙ０が「Ｈ」レベル、信号ｆｕｌｌ０が「Ｌ」レベルとなり、信号ｅｍｐｔｙ１が「Ｌ」レベル、信号ｆｕｌｌ１が「Ｌ」レベルとなり、信号ｅｍｐｔｙ２が「Ｌ」レベル、信号ｆｕｌｌ２が「Ｌ」レベルとなり、信号ｅｍｐｔｙ３が「Ｈ」レベル、信号ｆｕｌｌ３が「Ｌ」レベルとなる。
【００６２】
ＮＯＲ回路１８＿０〜１８＿３によって、信号ａ０，ａ３が「Ｌ」レベルとなり、信号ａ１，ａ２が「Ｈ」レベルとなる。
【００６３】
信号ａ１，ａ２が「Ｈ」レベルのため、ＮＯＲ回路１９＿０の出力が「Ｌ」レベルとなり、その結果、ＡＮＤ回路２０＿０の出力が「Ｌ」レベルとなる。信号ａ０が「Ｌ」レベルで、ＡＮＤ回路２０＿０の出力が「Ｌ」レベルのため、ＯＲ回路２１＿０は、「Ｌ」レベルの出力信号ＯＵＴ０を出力する。
【００６４】
信号ａ２が「Ｈ」レベルのため、ＮＯＲ回路１９＿１の出力が「Ｌ」レベルとなり、その結果、ＡＮＤ回路２０＿１の出力が「Ｌ」レベルとなる。信号ａ１が「Ｈ」レベルで、ＡＮＤ回路２０＿１の出力が「Ｌ」レベルのため、ＯＲ回路２１＿１は、「Ｈ」レベルの出力信号ＯＵＴ１を出力する。
【００６５】
信号ａ１が「Ｈ」レベルのため、ＮＯＲ回路１９＿２の出力が「Ｌ」レベルとなり、その結果、ＡＮＤ回路２０＿２の出力が「Ｌ」レベルとなる。信号ａ２が「Ｈ」レベルで、ＡＮＤ回路２０＿２の出力が「Ｌ」レベルのため、ＯＲ回路２１＿２は、「Ｈ」レベルの出力信号ＯＵＴ２を出力する。
【００６６】
信号ａ１，ａ２が「Ｈ」レベルのため、ＮＯＲ回路１９＿３の出力が「Ｌ」レベルとなり、その結果、ＡＮＤ回路２０＿３の出力が「Ｌ」レベルとなる。信号ａ３が「Ｌ」レベルで、ＡＮＤ回路２０＿３の出力が「Ｌ」レベルのため、ＯＲ回路２１＿３は、「Ｌ」レベルの出力信号ＯＵＴ３を出力する。
【００６７】
プライオリティエンコーダ１２は、ＯＵＴ０が「Ｌ」レベル、ＯＵＴ１が「Ｈ」レベル、ＯＵＴ２が「Ｈ」レベル、ＯＵＴ３が「Ｌ」レベルによって、「１」を出力する。
【００６８】
アドレスデコーダ１３は、「１」をデコードして、「Ｌ」レベルの信号Ｄ０をＡＮＤ回路１７＿０へ、「Ｈ」レベルの信号Ｄ１をＡＮＤ回路１７＿１へ、「Ｌ」レベルの信号Ｄ２をＡＮＤ回路１７＿２へ、「Ｌ」レベルの信号Ｄ３をＡＮＤ回路１７＿３へ出力する。信号Ｄ０〜Ｄ３は、遅延調整用フリップフロップ１６へも送られる。
【００６９】
リード命令信号ｒｅａｄ０〜ｒｅａｄ３が「Ｈ」レベルに活性化されると、ＡＮＤ回路１７＿１によって、ＦＩＦＯメモリ＃１は、先頭に格納されているアドレスｑ１を出力する。
【００７０】
遅延調整用フリップフロップ１６は、ＦＩＦＯメモリ＃１の出力タイミングと同じタイミングで、セレクタ１５にＦＩＦＯメモリ＃１の出力を選択させるセレクト信号ｓｅｌｅｃｔを出力する。
【００７１】
セレクタ１５は、ＦＩＦＯメモリ＃１から出力されたアドレスｑ１を出力する。
（例３）
図６は、第２の実施形態における書込みアドレスの決定の第３の例を表わす図である。
【００７２】
ＦＩＦＯメモリ＃０は、全領域にアドレスを格納している（つまり、メモリアレイ＃０は、全て未使用状態である）。ＦＩＦＯメモリ＃１は、１つのアドレスも格納していない状態である（つまり、メモリアレイ＃１は、全使用状態である）。ＦＩＦＯメモリ＃２は、１つのアドレスも格納していない状態である（つまり、メモリアレイ＃２は、全使用状態である）。ＦＩＦＯメモリ＃３は、全領域にアドレスを格納している（つまり、メモリアレイ＃３は、全て未使用状態である）。
【００７３】
このような状態では、信号ｅｍｐｔｙ０が「Ｌ」レベル、信号ｆｕｌｌ０が「Ｈ」レベルとなり、信号ｅｍｐｔｙ１が「Ｈ」レベル、信号ｆｕｌｌ１が「Ｌ」レベルとなり、信号ｅｍｐｔｙ２が「Ｈ」レベル、信号ｆｕｌｌ２が「Ｌ」レベルとなり、信号ｅｍｐｔｙ３が「Ｌ」レベル、信号ｆｕｌｌ３が「Ｈ」レベルとなる。
【００７４】
ＮＯＲ回路１８＿０〜１８＿３によって、信号ａ０，ａ１，ａ２，ａ３が「Ｌ」レベルとなる。
【００７５】
信号ａ１，ａ２，ａ３が「Ｌ」レベルのため、ＮＯＲ回路１９＿０の出力が「Ｈ」レベルとなる。また、信号ｅｍｐｔｙ０が「Ｌ」レベルであるので、ＡＮＤ回路２０＿０の出力が「Ｈ」レベルとなる。信号ａ０が「Ｌ」レベルで、ＡＮＤ回路２０＿０の出力が「Ｈ」レベルのため、ＯＲ回路２１＿０は、「Ｈ」レベルの出力信号ＯＵＴ０を出力する。
【００７６】
信号ａ０，ａ２，ａ３が「Ｌ」レベルのため、ＮＯＲ回路１９＿１の出力が「Ｈ」レベルとなる。また、信号ｅｍｐｔｙ１が「Ｈ」レベルであるので、ＡＮＤ回路２０＿１の出力が「Ｌ」レベルとなる。信号ａ１が「Ｌ」レベルで、ＡＮＤ回路２０＿１の出力が「Ｌ」レベルのため、ＯＲ回路２１＿１は、「Ｌ」レベルの出力信号ＯＵＴ１を出力する。
【００７７】
信号ａ０，ａ１，ａ３が「Ｌ」レベルのため、ＮＯＲ回路１９＿２の出力が「Ｈ」レベルとなる。また、信号ｅｍｐｔｙ２が「Ｈ」レベルであるので、ＡＮＤ回路２０＿２の出力が「Ｌ」レベルとなる。信号ａ２が「Ｌ」レベルで、ＡＮＤ回路２０＿２の出力が「Ｌ」レベルのため、ＯＲ回路２１＿２は、「Ｌ」レベルの出力信号ＯＵＴ２を出力する。
【００７８】
信号ａ０，ａ１，ａ２が「Ｌ」レベルのため、ＮＯＲ回路１９＿３の出力が「Ｈ」レベルとなる。また、信号ｅｍｐｔｙ３が「Ｌ」レベルであるので、ＡＮＤ回路２０＿３の出力が「Ｈ」レベルとなる。信号ａ３が「Ｌ」レベルで、ＡＮＤ回路２０＿３の出力が「Ｈ」レベルのため、ＯＲ回路２１＿３は、「Ｈ」レベルの出力信号ＯＵＴ３を出力する。
【００７９】
プライオリティエンコーダ１２は、ＯＵＴ０が「Ｈ」レベル、ＯＵＴ１が「Ｌ」レベル、ＯＵＴ２が「Ｌ」レベル、ＯＵＴ３が「Ｈ」レベルによって、「０」を出力する。
【００８０】
アドレスデコーダ１３は、「０」をデコードして、「Ｈ」レベルの信号Ｄ０をＡＮＤ回路１７＿０へ、「Ｌ」レベルの信号Ｄ１をＡＮＤ回路１７＿１へ、「Ｌ」レベルの信号Ｄ２をＡＮＤ回路１７＿２へ、「Ｌ」レベルの信号Ｄ３をＡＮＤ回路１７＿３へ出力する。信号Ｄ０〜Ｄ３は、遅延調整用フリップフロップ１６へも送られる。
【００８１】
リード命令信号ｒｅａｄ０〜ｒｅａｄ３が「Ｈ」レベルに活性化されると、ＡＮＤ回路１７＿０によって、ＦＩＦＯメモリ＃０は、先頭に格納されているアドレスｑ０を出力する。
【００８２】
遅延調整用フリップフロップ１６は、ＦＩＦＯメモリ＃０の出力タイミングと同じタイミングで、セレクタ１５にＦＩＦＯメモリ＃０の出力を選択させるセレクト信号ｓｅｌｅｃｔを出力する。
【００８３】
セレクタ１５は、ＦＩＦＯメモリ＃０から出力されたアドレスｑ０を出力する。
以上のように、本実施の形態によれば、第１の実施形態と同様に、有効なデータを記憶し、かつ空き領域を有するメモリアレイにデータが書き込まれる。これにより、消費電力を低減できる。
【００８４】
［第３の実施形態］
図７は、第３の実施形態の半導体装置の構成を表わす図である。
【００８５】
この半導体装置６１は、データ通信部５６と、電源制御回路９と、メモリアレイ＃０（８＿０）と、メモリアレイ＃１（８＿１）と、メモリアレイ＃２（８＿２）と、メモリアレイ＃３（８＿３）と、制御部６２とを備える。
【００８６】
データ通信部５６は、外部からキュー番号を識別子として含むデータを受信し、メモリアレイ＃０〜＃３から出力されたデータを外部へ送信する。
【００８７】
キュー番号とは、仮想的なアドレスである。キュー番号は、たとえば、アプリケーションまたはＩＰ（Internet Protocol）アドレスごとにデータをメモリ内でまとめて管理するために用いられる。この場合、同一のアプリケーションまたはＩＰアドレスのデータは、同一のキュー番号を識別子として含む。互いに異なるアプリケーションまたはＩＰアドレスのデータは、異なるキュー番号を識別子として含む。
【００８８】
メモリアレイ＃０〜メモリアレイ＃３、および電源制御回路９は、第２の実施形態と同様であるので説明を繰り返さない。
【００８９】
制御部６２は、データ通信部５６がキュー番号を識別子として含むデータを受信したときに、入力されたデータのキュー番号と同じキュー番号の最後のデータが格納されたメモリアレイ＃ｉに、データ通信部５６で受信したデータを書き込む。
【００９０】
制御部６２は、読み書き制御回路７＿０，７＿１，７＿２，７＿３と、アドレス管理部５４とを備える。
【００９１】
読み書き制御回路７＿ｉ（ｉ＝０〜３）は、アドレス管理部５４から出力されるアドレスに従って、データ通信部５６で受信したデータを対応のメモリアレイ＃ｉ（ｉ＝０〜３）に書込む。読み書き制御回路７＿ｉは、アドレス管理部４から出力されるアドレスに従って、対応のメモリアレイ＃ｉ（ｉ＝０〜３）からデータを読み出して、データ通信部５６へ送る。
【００９２】
アドレス管理部４は、ＦＩＦＯメモリ＃０（１４＿０）と、ＦＩＦＯメモリ＃１（１４＿１）と、ＦＩＦＯメモリ＃２（１４＿２）と、ＦＩＦＯメモリ＃３（１４＿３）と、ＦＩＦＯ入力制御部１０と、ＦＩＦＯ出力制御部５５とを含む。
【００９３】
ＦＩＦＯメモリ＃０〜ＦＩＦＯメモリ＃３、ＦＩＦＯ入力制御部１０は、第２の実施形態と同様であるので説明を繰り返さない。
【００９４】
ＦＩＦＯ出力制御部５５は、入力されたデータのキュー番号と同じキュー番号の最後のデータが格納されたメモリアレイ＃ｉに対応するＦＩＦＯメモリ＃ｉから空きアドレスを出力させる。
【００９５】
ＦＩＦＯ出力制御部５５は、入力されたデータのキュー番号と同じキュー番号の最後のデータが格納されたメモリアレイに空き領域が存在しない場合には、メモリアレイの次の優先順位のメモリアレイ＃ｉに対応するＦＩＦＯメモリ＃ｉから空きアドレスを出力させる。
【００９６】
図８は、第３の実施形態のＦＩＦＯ出力制御部の構成を表わす図である。
図８を参照して、ＦＩＦＯ出力制御部５５は、テールアドレスメモリ３１と、アドレスデコーダ３２と、ＯＲ回路３３＿０〜３３＿３と、セレクタ３４＿０〜３４＿３と、アドレスエンコーダ８１と、ＦＩＦＯメモリ＃０（１４＿０）〜ＦＩＦＯメモリ＃３（１４＿３）と、セレクタ１５と、ＡＮＤ回路７１〜７３と、ＯＲ回路７４とを備える。
【００９７】
テールアドレスメモリ３１は、キュー番号ごとに最後のデータが格納されたメモリアレイを表わすデータを記憶する。キュー番号ｉ（Ｑ＃ｉ）の最後のデータがメモリアレイ＃０に格納されている場合には、キュー番号ｉ（Ｑ＃ｉ）の格納領域に「０」が格納される。キュー番号ｉ（Ｑ＃ｉ）の最後のデータがメモリアレイ＃１に格納されている場合には、キュー番号ｉ（Ｑ＃ｉ）の格納領域に「１」が格納される。キュー番号ｉ（Ｑ＃ｉ）の最後のデータがメモリアレイ＃２に格納されている場合には、キュー番号ｉ（Ｑ＃ｉ）の格納領域に「２」が格納される。キュー番号ｉ（Ｑ＃ｉ）の最後のデータがメモリアレイ＃３に格納されている場合には、キュー番号ｉ（Ｑ＃ｉ）の格納領域に「３」が格納される。
【００９８】
テールアドレスメモリ３１は、入力されたデータがキュー番号ｉ（Ｑ＃ｉ）のデータの場合には、キュー番号ｉ（Ｑ＃ｉ）の格納領域に格納されているデータを信号Ｘとして出力する。テールアドレスメモリ３１は、データがメモリアレイ＃ｉに書き込まれるごとに、キューごとに最後のデータが格納されたメモリアレイ＃ｉを表わすように格納データを更新する。
【００９９】
アドレスデコーダ３２は、入力された信号ＸがＦＩＦＯメモリ＃０を表わす「０」の場合には、信号Ｓ０を「Ｈ」レベルに設定し、信号Ｓ１，Ｓ２，Ｓ３を「Ｌ」レベルに設定する。アドレスデコーダ３２は、入力された信号ＸがＦＩＦＯメモリ＃１を表わす「１」の場合には、信号Ｓ１を「Ｈ」レベルに設定し、信号Ｓ０，Ｓ２，Ｓ３を「Ｌ」レベルに設定する。アドレスデコーダ３２は、入力された信号ＸがＦＩＦＯメモリ＃２を表わす「２」の場合には、信号Ｓ２を「Ｈ」レベルに設定し、信号Ｓ０，Ｓ１，Ｓ３を「Ｌ」レベルに設定する。アドレスデコーダ３２は、入力された信号ＸがＦＩＦＯメモリ＃３を表わす「３」の場合には、信号Ｓ３を「Ｈ」レベルに設定し、信号Ｓ０，Ｓ１，Ｓ２を「Ｌ」レベルに設定する。
【０１００】
ＯＲ回路３３＿０は、信号Ｓ０と、セレクタ３４＿３の出力信号Ｄ３との論理和Ｄ０を出力する。ＯＲ回路３３＿１は、信号Ｓ１と、セレクタ３４＿０の出力信号Ｄ０との論理和Ｄ１を出力する。ＯＲ回路３３＿２は、信号Ｓ２と、セレクタ３４＿１の出力信号Ｄ１の論理和Ｄ２を出力する。ＯＲ回路３３＿３は、信号Ｓ３と、セレクタ３４＿２の出力信号Ｄ２との論理和Ｄ３を出力する。
【０１０１】
セレクタ３４＿０は、信号ｅｍｐｔｙ０が「Ｈ」レベルのときには、ＯＲ回路３３＿０の出力信号Ｄ０をＯＲ回路３３＿１へ出力する。セレクタ３４＿０は、信号ｅｍｐｔｙ０が「Ｌ」レベルのときには、ＯＲ回路３３＿０の出力信号Ｄ０をＯＲ回路７４を介してＦＩＦＯメモリ＃０へ出力する。
【０１０２】
セレクタ３４＿１は、信号ｅｍｐｔｙ１が「Ｈ」レベルのときには、ＯＲ回路３３＿１の出力信号Ｄ１をＯＲ回路３３＿２へ出力する。セレクタ３４＿１は、信号ｅｍｐｔｙ１が「Ｌ」レベルのときには、ＯＲ回路３３＿１の出力信号Ｄ１をＦＩＦＯメモリ＃１へ出力する。
【０１０３】
セレクタ３４＿２は、信号ｅｍｐｔｙ２が「Ｈ」レベルのときには、ＯＲ回路３３＿２の出力信号Ｄ２をＯＲ回路３３＿３へ出力する。セレクタ３４＿２は、信号ｅｍｐｔｙ２が「Ｌ」レベルのときには、ＯＲ回路３３＿２の出力信号Ｄ２をＦＩＦＯメモリ＃２へ出力する。
【０１０４】
セレクタ３４＿３は、信号ｅｍｐｔｙ３が「Ｈ」レベルのときには、ＯＲ回路３３＿３の出力信号Ｄ３をＯＲ回路３３＿０へ出力する。セレクタ３４＿３は、信号ｅｍｐｔｙ３が「Ｌ」レベルのときには、ＯＲ回路３３＿３の出力信号Ｄ３をＦＩＦＯメモリ＃３へ出力する。
【０１０５】
ＡＮＤ回路７１は、信号ｅｍｐｔｙ０と信号ｅｍｐｔｙ１の論理積を出力する。ＡＮＤ回路７２は、信号ｅｍｐｔｙ２と信号ｅｍｐｔｙ３の論理積を出力する。ＡＮＤ回路７３は、ＡＮＤ回路７１の出力とＡＮＤ回路７２の論理積Ｙを出力する。ＯＲ回路７４は、ＡＮＤ回路７２の出力信号Ｙと、セレクタ３４＿０の出力の論理和をＦＩＦＯメモリ＃０へ出力する。
【０１０６】
ＦＩＦＯメモリ＃０は、信号Ｄ０が「Ｈ」レベルの場合に、先頭に格納されているアドレスを信号ｑ０として出力する。ＦＩＦＯメモリ＃０は、信号Ｄ０が「Ｌ」レベルの場合に、不定値を信号ｑ０として出力する。ＦＩＦＯメモリ＃０は、格納されているアドレスがない場合には、信号ｅｍｐｔｙ０を「Ｈ」レベルに設定する。ＦＩＦＯメモリ＃０は、格納されているアドレスがある場合には、信号ｅｍｐｔｙ０を「Ｌ」レベルに設定する。ＦＩＦＯメモリ＃０は、未使用の領域（アドレスが格納されていない領域）がない場合には、信号ｆｕｌｌ０を「Ｈ」レベルに設定する。ＦＩＦＯメモリ＃０は、未使用の領域がある場合には、信号ｆｕｌｌ０を「Ｌ」レベルに設定する。
【０１０７】
ＦＩＦＯメモリ＃１は、信号Ｄ１が「Ｈ」レベルの場合に、先頭に格納されているアドレスを信号ｑ１として出力する。ＦＩＦＯメモリ＃１は、信号Ｄ１が「Ｌ」レベルの場合に、不定値を信号ｑ１として出力する。ＦＩＦＯメモリ＃１は、格納されているアドレスがない場合には、信号ｅｍｐｔｙ１を「Ｈ」レベルに設定する。ＦＩＦＯメモリ＃１は、格納されているアドレスがある場合には、信号ｅｍｐｔｙ１を「Ｌ」レベルに設定する。ＦＩＦＯメモリ＃１は、未使用の領域がない場合には、信号ｆｕｌｌ１を「Ｈ」レベルに設定する。ＦＩＦＯメモリ＃１は、未使用の領域がある場合には、信号ｆｕｌｌ１を「Ｌ」レベルに設定する。
【０１０８】
ＦＩＦＯメモリ＃２は、信号Ｄ２が「Ｈ」レベルの場合に、先頭に格納されているアドレスを信号ｑ２として出力する。ＦＩＦＯメモリ＃２は、信号Ｄ２が「Ｌ」レベルの場合に、不定値を信号ｑ２として出力する。ＦＩＦＯメモリ＃２は、格納されているアドレスがない場合には、信号ｅｍｐｔｙ２を「Ｈ」レベルに設定する。ＦＩＦＯメモリ＃２は、格納されているアドレスがある場合には、信号ｅｍｐｔｙ２を「Ｌ」レベルに設定する。ＦＩＦＯメモリ＃２は、未使用の領域がない場合には、信号ｆｕｌｌ２を「Ｈ」レベルに設定する。ＦＩＦＯメモリ＃２は、未使用の領域がある場合には、信号ｆｕｌｌ２を「Ｌ」レベルに設定する。
【０１０９】
ＦＩＦＯメモリ＃３は、信号Ｄ３が「Ｈ」レベルの場合に、先頭に格納されているアドレスを信号ｑ３として出力する。ＦＩＦＯメモリ＃３は、信号Ｄ３が「Ｌ」レベルの場合に、不定値を信号ｑ３として出力する。ＦＩＦＯメモリ＃３は、格納されているアドレスがない場合には、信号ｅｍｐｔｙ３を「Ｈ」レベルに設定する。ＦＩＦＯメモリ＃３は、格納されているアドレスがある場合には、信号ｅｍｐｔｙ３を「Ｌ」レベルに設定する。ＦＩＦＯメモリ＃３は、未使用の領域がない場合には、信号ｆｕｌｌ３を「Ｈ」レベルに設定する。ＦＩＦＯメモリ＃３は、未使用の領域がある場合には、信号ｆｕｌｌ３を「Ｌ」レベルに設定する。
【０１１０】
アドレスエンコーダ８１は、信号Ｄ０〜Ｄ３を受けて、セレクト信号ｓｅｌｅｃｔを出力する。セレクト信号ｓｅｌｅｃｔは、信号Ｄ０が「Ｈ」レベルで、信号Ｄ１，Ｄ２，Ｄ３が「Ｌ」レベルのときには、「０」を表わす信号となる。セレクト信号ｓｅｌｅｃｔは、信号Ｄ１が「Ｈ」レベルで、信号Ｄ０，Ｄ２，Ｄ３が「Ｌ」レベルのときには、「１」を表わす信号となる。セレクト信号ｓｅｌｅｃｔは、信号Ｄ２が「Ｈ」レベルで、信号Ｄ０，Ｄ１，Ｄ３が「Ｌ」レベルのときには、「２」を表わす信号となる。セレクト信号ｓｅｌｅｃｔは、信号Ｄ３が「Ｈ」レベルで、信号Ｄ０，Ｄ１，Ｄ２が「Ｌ」レベルのときには、「３」を表わす信号となる。
【０１１１】
セレクタ１５は、信号ｑ０，ｑ１，ｑ２，ｑ３を受けて、セレクト信号ｓｅｌｅｃｔの値に応じて選択した信号を出力する。セレクタ１５は、セレクト信号ｓｅｌｅｃｔが「０」の場合には、信号ｑ０を出力する。セレクタ１５は、セレクト信号ｓｅｌｅｃｔが「１」の場合には、信号ｑ１を出力する。セレクタ１５は、セレクト信号ｓｅｌｅｃｔが「２」の場合には、信号ｑ２を出力する。セレクタ１５は、セレクト信号ｓｅｌｅｃｔが「３」の場合には、信号ｑ３を出力する。
【０１１２】
（例１）
図９は、第３の実施形態における書込みアドレスの決定の第１の例を表わす図である。
【０１１３】
メモリアレイ＃０は、有効なデータを記憶していない状態である。メモリアレイ＃１は、キュー番号０（Ｑ＃０）のデータを格納している状態である。メモリアレイ＃２は、キュー番号１（Ｑ＃１）のデータを格納している状態である。メモリアレイ＃３は、有効なデータを記憶していない状態である。このとき、ＦＩＦＯメモリ＃０は、全領域にアドレスを格納している。ＦＩＦＯメモリ＃１は、一部の領域にアドレスを格納している（つまり、メモリアレイ＃１は、残量有状態である）。ＦＩＦＯメモリ＃２は、一部の領域にアドレスを格納している（つまり、メモリアレイ＃２は、残量有状態である）。ＦＩＦＯメモリ＃３は、全領域にアドレスを格納している。
【０１１４】
このような状態では、信号ｅｍｐｔｙ０が「Ｌ」レベル、信号ｆｕｌｌ０が「Ｈ」レベルとなり、信号ｅｍｐｔｙ１が「Ｌ」レベル、信号ｆｕｌｌ１が「Ｌ」レベルとなり、信号ｅｍｐｔｙ２が「Ｌ」レベル、信号ｆｕｌｌ２が「Ｌ」レベルとなり、信号ｅｍｐｔｙ３が「Ｌ」レベル、信号ｆｕｌｌ３が「Ｈ」レベルとなる。
【０１１５】
テールアドレスメモリ３１は、キュー番号０（Ｑ＃０）の格納領域に、キュー番号０の最後のデータがメモリアレイ＃１に記憶されていることを表わすように「１」を格納する。また、テールアドレスメモリ３１は、キュー番号１（Ｑ＃１）の格納領域に、キュー番号１の最後のデータがメモリアレイ＃２に記憶されていることを表わすように「２」を格納する。
【０１１６】
データ通信部５６が、識別子としてキュー番号０を含むデータを受信したときに、テールアドレスメモリ３１は、値が「１」の信号Ｘを出力する。
【０１１７】
アドレスデコーダ３２は、入力された信号ＸがＦＩＦＯメモリ＃１を表わす「１」のため、信号Ｓ１を「Ｈ」レベルに設定し、信号Ｓ０，Ｓ２，Ｓ３を「Ｌ」レベルに設定する。
【０１１８】
ＯＲ回路３３＿０は、「Ｌ」レベルの信号Ｓ０と、セレクタ３４＿３の出力信号Ｄ３との論理和Ｄ０を出力する。ＯＲ回路３３＿１は、「Ｈ」レベルの信号Ｓ１と、セレクタ３４＿０の出力信号Ｄ０との論理和Ｄ１（「Ｈ」レベル）を出力する。ＯＲ回路３３＿２は、「Ｌ」レベルの信号Ｓ２と、セレクタ３４＿１の出力信号Ｄ１の論理和Ｄ２を出力する。ＯＲ回路３３＿３は、「Ｌ」レベルの信号Ｓ３と、セレクタ３４＿２の出力信号Ｄ２との論理和Ｄ３を出力する。
セレクタ３４＿０は、信号ｅｍｐｔｙ０が「Ｌ」レベルのため、ＯＲ回路３３＿０の出力信号Ｄ０をＦＩＦＯメモリ＃０へ出力する。セレクタ３４＿１は、信号ｅｍｐｔｙ１が「Ｌ」レベルのため、ＯＲ回路３３＿１の出力信号Ｄ１（「Ｈ」レベル））をＦＩＦＯメモリ＃１へ出力する。セレクタ３４＿２は、信号ｅｍｐｔｙ２が「Ｌ」レベルのため、ＯＲ回路３３＿２の出力信号Ｄ２をＦＩＦＯメモリ＃２へ出力する。セレクタ３４＿３は、信号ｅｍｐｔｙ３が「Ｌ」レベルのため、ＯＲ回路３３＿３の出力信号Ｄ３をＦＩＦＯメモリ＃３へ出力する。
【０１１９】
ＯＲ回路３３＿０は、セレクタ３４＿３から「Ｈ」レベルの信号を受けないため、結局「Ｌ」レベルの信号Ｄ０を出力する。ＯＲ回路３３＿２は、セレクタ３４＿１から「Ｈ」レベルの信号を受けないため、結局「Ｌ」レベルの信号Ｄ２を出力する。ＯＲ回路３３＿３は、セレクタ３４＿２から「Ｈ」レベルの信号を受けないため、結局「Ｌ」レベルの信号Ｄ３を出力する。
【０１２０】
そのため、ＦＩＦＯメモリ＃１のみが「Ｈ」レベルの信号Ｄ１を受けて、先頭に格納されているアドレスを信号ｑ１として出力する。
【０１２１】
アドレスエンコーダ８１は、信号Ｄ０〜Ｄ３を受けて、「１」を表わすセレクト信号ｓｅｌｅｃｔをセレクタ１５へ出力する。
【０１２２】
セレクタ１５は、セレクト信号ｓｅｌｅｃｔに従って、ＦＩＦＯメモリ＃１から出力されたアドレス（ｑ１）を出力する。
【０１２３】
（例２）
図１０は、第３の実施形態における書込みアドレスの決定の第２の例を表わす図である。
【０１２４】
メモリアレイ＃０は、有効なデータを記憶していない状態である。メモリアレイ＃１は、キュー番号０（Ｑ＃０）のデータを格納している状態である。メモリアレイ＃２は、キュー番号１（Ｑ＃１）のデータを格納している状態である。メモリアレイ＃３は、有効なデータを記憶していない状態である。
また、ＦＩＦＯメモリ＃０は、全領域にアドレスを格納している。ＦＩＦＯメモリ＃１は、一部の領域にアドレスを格納している（つまり、メモリアレイ＃１は、残量有状態である）。ＦＩＦＯメモリ＃２は、一部の領域にアドレスを格納している（つまり、メモリアレイ＃２は、残量有状態である）。ＦＩＦＯメモリ＃３は、全領域にアドレスを格納している。
【０１２５】
このような状態では、信号ｅｍｐｔｙ０が「Ｌ」レベル、信号ｆｕｌｌ０が「Ｈ」レベルとなり、信号ｅｍｐｔｙ１が「Ｌ」レベル、信号ｆｕｌｌ１が「Ｌ」レベルとなり、信号ｅｍｐｔｙ２が「Ｌ」レベル、信号ｆｕｌｌ２が「Ｌ」レベルとなり、信号ｅｍｐｔｙ３が「Ｌ」レベル、信号ｆｕｌｌ３が「Ｈ」レベルとなる。
【０１２６】
テールアドレスメモリ３１は、キュー番号０（Ｑ＃０）の格納領域に、キュー番号０の最後のデータがメモリアレイ＃１に記憶されていることを表わすように「１」を格納する。また、テールアドレスメモリ３１は、キュー番号１（Ｑ＃１）の格納領域に、キュー番号１の最後のデータがメモリアレイ＃２に記憶されていることを表わすように「２」を格納する。
【０１２７】
データ通信部５６が、識別子としてキュー番号１を含むデータを受信したときに、テールアドレスメモリ３１は、値が「２」の信号Ｘを出力する。
【０１２８】
アドレスデコーダ３２は、入力された信号ＸがＦＩＦＯメモリ＃２を表わす「２」のため、信号Ｓ２を「Ｈ」レベルに設定し、信号Ｓ０，Ｓ１，Ｓ３を「Ｌ」レベルに設定する。
【０１２９】
ＯＲ回路３３＿０は、「Ｌ」レベルの信号Ｓ０と、セレクタ３４＿３の出力信号Ｄ３との論理和Ｄ０を出力する。ＯＲ回路３３＿１は、「Ｌ」レベルの信号Ｓ１と、セレクタ３４＿０の出力信号Ｄ０との論理和Ｄ１を出力する。ＯＲ回路３３＿２は、「Ｈ」レベルの信号Ｓ２と、セレクタ３４＿１の出力信号Ｄ１の論理和Ｄ２（「Ｈ」レベル）を出力する。ＯＲ回路３３＿３は、「Ｌ」レベルの信号Ｓ３と、セレクタ３４＿２の出力信号Ｄ２との論理和Ｄ３を出力する。
セレクタ３４＿０は、信号ｅｍｐｔｙ０が「Ｌ」レベルのため、ＯＲ回路３３＿０の出力信号Ｄ０をＦＩＦＯメモリ＃０へ出力する。セレクタ３４＿１は、信号ｅｍｐｔｙ１が「Ｌ」レベルのため、ＯＲ回路３３＿１の出力信号Ｄ１をＦＩＦＯメモリ＃１へ出力する。セレクタ３４＿２は、信号ｅｍｐｔｙ２が「Ｌ」レベルのため、ＯＲ回路３３＿２の出力信号Ｄ２（「Ｈ」レベル）をＦＩＦＯメモリ＃２へ出力する。セレクタ３４＿３は、信号ｅｍｐｔｙ３が「Ｌ」レベルのため、ＯＲ回路３３＿３の出力信号Ｄ３をＦＩＦＯメモリ＃３へ出力する。
【０１３０】
ＯＲ回路３３＿０は、セレクタ３４＿３から「Ｈ」レベルの信号を受けないため、結局「Ｌ」レベルの信号Ｄ０を出力する。ＯＲ回路３３＿１は、セレクタ３４＿０から「Ｈ」レベルの信号を受けないため、結局「Ｌ」レベルの信号Ｄ１を出力する。ＯＲ回路３３＿３は、セレクタ３４＿２から「Ｈ」レベルの信号を受けないため、結局「Ｌ」レベルの信号Ｄ３を出力する。そのため、ＦＩＦＯメモリ＃２のみが「Ｈ」レベルの信号Ｄ２を受けて、先頭に格納されているアドレスを信号ｑ２として出力する。
【０１３１】
アドレスエンコーダ８１は、信号Ｄ０〜Ｄ３を受けて、「２」を表わすセレクト信号ｓｅｌｅｃｔをセレクタ１５へ出力する。
【０１３２】
セレクタ１５は、セレクト信号ｓｅｌｅｃｔに従って、ＦＩＦＯメモリ＃２から出力されたアドレス（ｑ２）を出力する。
【０１３３】
（例３）
図１１は、第３の実施形態における書込みアドレスの決定の第３の例を表わす図である。
【０１３４】
メモリアレイ＃０は、キュー番号０（Ｑ＃０）のデータを格納している状態である。メモリアレイ＃１は、キュー番号０（Ｑ＃０）のデータを格納している状態である。メモリアレイ＃２は、キュー番号１（Ｑ＃１）のデータを格納している状態である。メモリアレイ＃３は、有効なデータを記憶していない状態である。このとき、ＦＩＦＯメモリ＃０は、１つのアドレスも格納していない。ＦＩＦＯメモリ＃１は、一部の領域にアドレスを格納している（つまり、メモリアレイ＃１は、残量有状態である）。ＦＩＦＯメモリ＃２は、一部の領域にアドレスを格納している（つまり、メモリアレイ＃２は、残量有状態である）。ＦＩＦＯメモリ＃３は、全領域にアドレスを格納している。
【０１３５】
このような状態では、信号ｅｍｐｔｙ０が「Ｈ」レベル、信号ｆｕｌｌ０が「Ｌ」レベルとなり、信号ｅｍｐｔｙ１が「Ｌ」レベル、信号ｆｕｌｌ１が「Ｌ」レベルとなり、信号ｅｍｐｔｙ２が「Ｌ」レベル、信号ｆｕｌｌ２が「Ｌ」レベルとなり、信号ｅｍｐｔｙ３が「Ｌ」レベル、信号ｆｕｌｌ３が「Ｈ」レベルとなる。
【０１３６】
テールアドレスメモリ３１は、キュー番号０（Ｑ＃０）の格納領域に、キュー番号０の最後のデータがメモリアレイ＃１に記憶されていることを表わすように「１」を格納する。また、テールアドレスメモリ３１は、キュー番号１（Ｑ＃１）の格納領域に、キュー番号１の最後のデータがメモリアレイ＃２に記憶されていることを表わすように「２」を格納する。
【０１３７】
データ通信部５６が、識別子としてキュー番号０を含むデータを受信したときに、テールアドレスメモリ３１は、値が「１」の信号Ｘを出力する。
【０１３８】
アドレスデコーダ３２は、入力された信号ＸがＦＩＦＯメモリ＃１を表わす「１」のため、信号Ｓ１を「Ｈ」レベルに設定し、信号Ｓ０，Ｓ２，Ｓ３を「Ｌ」レベルに設定する。
【０１３９】
ＯＲ回路３３＿０は、「Ｌ」レベルの信号Ｓ０と、セレクタ３４＿３の出力信号Ｄ３との論理和Ｄ０を出力する。ＯＲ回路３３＿１は、「Ｈ」レベルの信号Ｓ１と、セレクタ３４＿０の出力信号Ｄ０との論理和Ｄ１（「Ｈ」レベル）を出力する。ＯＲ回路３３＿２は、「Ｌ」レベルの信号Ｓ２と、セレクタ３４＿１の出力信号Ｄ１の論理和Ｄ２を出力する。ＯＲ回路３３＿３は、「Ｌ」レベルの信号Ｓ３と、セレクタ３４＿２の出力信号Ｄ２との論理和Ｄ３を出力する。
セレクタ３４＿０は、信号ｅｍｐｔｙ０が「Ｈ」レベルのため、ＯＲ回路３３＿０の出力信号Ｄ０をＯＲ回路３３＿１へ出力する。セレクタ３４＿１は、信号ｅｍｐｔｙ１が「Ｌ」レベルのため、ＯＲ回路３３＿１の出力信号Ｄ１（「Ｈ」レベル））をＦＩＦＯメモリ＃１へ出力する。セレクタ３４＿２は、信号ｅｍｐｔｙ２が「Ｌ」レベルのため、ＯＲ回路３３＿２の出力信号Ｄ２をＦＩＦＯメモリ＃２へ出力する。セレクタ３４＿３は、信号ｅｍｐｔｙ３が「Ｌ」レベルのため、ＯＲ回路３３＿３の出力信号Ｄ３をＦＩＦＯメモリ＃３へ出力する。
【０１４０】
ＯＲ回路３３＿２は、セレクタ３４＿１から「Ｈ」レベルの信号を受けないため、結局「Ｌ」レベルの信号Ｄ２を出力する。ＯＲ回路３３＿３は、セレクタ３４＿２から「Ｈ」レベルの信号を受けないため、結局「Ｌ」レベルの信号Ｄ３を出力する。そのため、ＦＩＦＯメモリ＃１のみが「Ｈ」レベルの信号Ｄ１を受けて、先頭に格納されているアドレスを信号ｑ１として出力する。
【０１４１】
アドレスエンコーダ８１は、信号Ｄ０〜Ｄ３を受けて、「１」を表わすセレクト信号ｓｅｌｅｃｔをセレクタ１５へ出力する。
【０１４２】
セレクタ１５は、セレクト信号ｓｅｌｅｃｔに従って、ＦＩＦＯメモリ＃１から出力されたアドレス（ｑ１）を出力する。
【０１４３】
以上のように、本実施の形態によれば、有効なデータを記憶し、かつ空き領域を有するメモリアレイにデータが書き込まれるとともに、同一のキュー番号のデータをできるだけ同一のメモリアレイに記憶するようにすることができる。これにより、たとえば、あるキュー番号のデータが１つのメモリアレイに記憶され、その後読み出されたときには、そのメモリアレイの電源電圧をオフにすることができ、消費電力を低減できる。
【０１４４】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【０１４５】
１，６１，１０１  半導体装置、２  データ入出力端子、３  アドレス端子、４，５４  アドレス管理部、５，５５  ＦＩＦＯ出力制御回路、６  変換テーブル記憶部、１０  ＦＩＦＯ入力制御回路、７＿０〜７＿３  読み書き制御回路、８＿０〜８＿３  メモリアレイ、９  電源制御回路、１１  入出力論理部、１２  プライオリティエンコーダ、１３，３２  アドレスデコーダ、１４＿０〜１４＿３  ＦＩＦＯメモリ、１５，３４＿０〜３４＿３  セレクタ、１６  遅延調整用フリップフロップ、１７＿１〜１７＿３，２０＿０〜２０＿３，７１〜７３  ＡＮＤ回路、１８＿０〜１８＿３，１９＿０〜１９＿３  ＮＯＲ回路、２１＿０〜２１＿３，３３＿０〜３３＿３，７４  ＯＲ回路、３１  テールアドレスメモリ、５０，５１  制御部、５６  データ通信部、８１  アドレスエンコーダ、６１＿０〜６１＿３  インバータ。
【図１】
2014074993.tif 000003
【図２】
2014074993.tif 000004
【図３】
2014074993.tif 000005
【図４】
2014074993.tif 000006
【図５】
2014074993.tif 000007
【図６】
2014074993.tif 000008
【図７】
2014074993.tif 000009
【図８】
2014074993.tif 000010
【図９】
2014074993.tif 000011
【図１０】
2014074993.tif 000012
【図１１】
2014074993.tif 000013