(57)【要約】【課題】Ｎ（但し、Ｎは２以上の整数）×８ビットのバスを持つＣＰＵが１回のアクセスでＮバイトのデータの取得又は書き込みを行うことができるメモリ装置を提供する。【解決手段】１ワードを１バイトとし、共通のアドレスを有する同一規模のアドレス空間（０ｘ０００〜０ｘ３ＦＦ）を有する４個のメモリ５０〜５３と、これら４個のメモリ５０〜５３に対して、任意のバイトアラインでの同時アクセスを可能とするアドレスデコーダ３０と、ビッグエンディアンのＣＰＵに合わせたデータの並べ替えを行うデータ並べ替え回路７０を設ける。【選択図】          図１
2006302161.tif 000002
【特許請求の範囲】
【請求項１】
１ワードをＮ（但し、Ｎは２以上の整数）バイト構成とするメモリ装置であって、
１ワードを１バイトとし、共通のアドレスを有する同一規模のアドレス空間を有するＮ個のメモリと、
該Ｎ個のメモリに対して任意のバイトアラインでの同時アクセスを可能とするアドレスデコーダを有する
ことを特徴とするメモリ装置。
【請求項２】
前記アドレスデコーダは、
ＣＰＵから与えられるアドレス信号の所定ビットに１を加算する加算回路と、
前記Ｎ個のメモリのうち、第１、…、第Ｎ−１のメモリに対応して設けられ、それぞれ、前記ＣＰＵから与えられるアドレス信号の所定ビット又は前記加算回路が出力するアドレス信号を選択して前記第１、…、第Ｎ−１のメモリに与える第１、…、第Ｎ−１のセレクタと、
前記ＣＰＵから与えられるアドレス信号の所定ビット以外のビットをデコードして前記第１、…、第Ｎ−１のセレクタの選択動作を制御する第１、…、第Ｎ−１のセレクタ制御信号を出力するセレクタ制御回路を有する
ことを特徴とする請求項１記載のメモリ装置。
【請求項３】
前記アドレスデコーダは、
前記ＣＰＵから与えられるアドレス信号の所定ビットに１を加算する加算回路と、
前記Ｎ個のメモリのうち、第１、…、第Ｎ−１のメモリに対応して設けられ、前記ＣＰＵから与えられるアドレス信号の所定ビット以外のビットのアドレス信号に選択動作を制御され、それぞれ、前記ＣＰＵから与えられるアドレス信号の所定ビット又は前記加算回路が出力するアドレス信号を選択して前記第１、…、第Ｎ−１のメモリに与える第１、…、第Ｎ−１のセレクタを有する
ことを特徴とする請求項１記載のメモリ装置。
【請求項４】
前記ＣＰＵのエンディアンを考慮したデータの並べ替えを行うデータ並べ替え回路を有する
ことを特徴とする請求項１、２又は３記載のメモリ装置。
【請求項５】
前記データ並べ替え回路は、
前記ＣＰＵから与えられるアドレス信号の所定ビット以外のビットのアドレス信号に選択動作を制御され、前記Ｎ個のメモリに接続されているデータバスと前記ＣＰＵに接続されているデータバスとの接続を行うＮ個のセレクタを有する
ことを特徴とする請求項４記載のメモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１ワード（word）を複数バイト（byte）構成とするメモリ装置に関する。
【背景技術】
【０００２】
図１１は従来のメモリ装置の一例のアドレス空間を示す図である。図１１中、１−０、１−１、…、１−ｍはＣＰＵ（central processing unit）によるアクセスの単位となる４バイト構成のグリッドである。即ち、このメモリ装置は、１ワードを４バイト構成とし、３２ビット（bit）のバスを持つＣＰＵがグリッド単位でアクセスを行うことができるように構成されたものである。
【０００３】
したがって、ＣＰＵは、例えば、アドレス０ｘ０４〜０ｘ０７のデータを取得する場合には、グリッド１−１にアクセスを行うことになる。これに対して、アドレス０ｘ０７〜０ｘ０Ａのデータを取得する場合には、グリッド１−１に対するアクセスとグリッド１−２に対するアクセスの２回のアクセスを行う必要がある。
【０００４】
ここで、グリッド１−１にアクセスを行うと、図１２に示すように、データバス［３１：０］のうち、データバス［３１：２４］にはアドレス０ｘ０４のデータ［７：０］が乗り、データバス［２３：１６］にはアドレス０ｘ０５のデータ［７：０］が乗り、データバス［１５：８］にはアドレス０ｘ０６のデータ［７：０］が乗り、データバス［７：０］にはアドレス０ｘ０７のデータ［７：０］が乗ることになる。
【０００５】
また、グリッド１−２にアクセスを行うと、データバス［３１：０］のうち、データバス［３１：２４］にはアドレス０ｘ０８のデータ［７：０］が乗り、データバス［２３：１６］にはアドレス０ｘ０９のデータ［７：０］が乗り、データバス［１５：８］にはアドレス０ｘ０Ａのデータ［７：０］が乗り、データバス［７：０］にはアドレス０ｘ０Ｂのデータ［７：０］が乗ることになる。
【０００６】
したがって、アドレス０ｘ０７〜０ｘ０Ａのデータを取得するには、読み出したアドレス０ｘ０４〜０ｘ０Ｂのデータから、アドレス０ｘ０７〜０ｘ０Ａのデータを選択し、かつ、ＣＰＵが、例えば、ビッグエンディアン（big endian）の場合には、データの並びが「アドレス０ｘ０７のデータ［７：０］、アドレス０ｘ０８のデータ［７：０］、アドレス０ｘ０９のデータ［７：０］、アドレス０ｘ０Ａのデータ［７：０］」となるようにデータの並べ替え（整形）を行う必要がある。
【特許文献１】特開昭５７−７１０４４号公報
【特許文献２】特開２０００−１３２４９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
前述したように、図１１に示す従来のメモリ装置では、例えば、アドレス０ｘ０７〜０ｘ０Ａのデータのように、２つのグリッドにまたがる１ワードのデータを取得する場合、ＣＰＵは、２回のアクセスを行い、更に、読み出したデータの選択・並べ替えを行う必要があり、これがＣＰＵのコードサイズの増加と処理時間の増加を招いているという問題点があった。
【０００８】
ここで、例えば、ＭＰＥＧ２規格のストリームの復号装置が、３２ビットのバスを持つＣＰＵと、図１１に示す従来のメモリ装置を備えており、ＭＰＥＧ２規格のストリームが図１１に示す従来のメモリ装置に格納され、ＣＰＵが図１１に示す従来のメモリ装置からＭＰＥＧ２規格のストリームを読み出して復号処理を行う場合に前述の問題点が発生する場合がある。
【０００９】
即ち、ＭＰＥＧ２規格のストリームでは、ＰＥＳ階層以上のシステム層・ビデオＥＳにおけるピクチャヘッダ等の各ヘッダは４バイトで構成され、ストリームはバイトアラインされているが、ＣＰＵのワード単位ではアラインされていないため、ピクチャヘッダ等のヘッダのデータが２つのグリッドにまたがって格納されてしまう場合があり、この場合、ＣＰＵは、図１１に示す従来のメモリ装置に対して２回のアクセスを行い、更に、読み出したヘッダのデータの選択・並べ替えを行う必要があり、前述の問題点が発生する。
【００１０】
本発明は、かかる点に鑑み、Ｎ（但し、Ｎは２以上の整数）×８ビットのバスを持つＣＰＵが１回のアクセスでＮバイトのデータの取得又は書き込みを行うことができるようにしたメモリ装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、１ワードをＮバイト構成とするメモリ装置であって、１ワードを１バイトとし、共通のアドレスを有する同一規模のアドレス空間を有するＮ個のメモリと、該Ｎ個のメモリに対して任意のバイトアラインでの同時アクセスを可能とするアドレスデコーダを有するものである。
【発明の効果】
【００１２】
本発明によれば、１ワードを１バイトとし、共通のアドレスを有する同一規模のアドレス空間を有するＮ個のメモリに対して任意のバイトアラインでの同時アクセスを可能とするアドレスデコーダを有するので、Ｎ×８ビットのバスを持つＣＰＵは、任意のバイトアラインでＣＰＵのワード単位でのデータアクセスを行うことができる。
【００１３】
したがって、Ｎ×８ビットのバスを持つＣＰＵは、Ｎバイトのデータの取得や書き込みのために２回のアクセスを行うことが必要である場合が無くなり、１回のアクセスでＮバイトのデータの取得や書き込みを行うことができる。なお、ＣＰＵのエンディアンを考慮したデータの並べ替えを行うデータ並べ替え回路を本発明のメモリ装置に設ける場合には、読み出したデータや書き込むデータの並べ替えをＣＰＵで行う必要がなくなる。
【発明を実施するための最良の形態】
【００１４】
（第１実施形態）
図１は本発明の第１実施形態の要部を示すブロック回路図である。本発明の第１実施形態は、１ワードを４バイト構成としており、３２ビットのバスを持つビッグエンディアンのＣＰＵによりアクセスされるものである。
【００１５】
図１中、１０は１２ビット幅のアドレスバス、２０は２ビット幅のアドレスバス、３０はアドレスデコーダ、４０〜４３は１０ビット幅のアドレスバス、５０〜５３はメモリ、６０〜６３は８ビット幅のデータバス、７０はデータ並べ替え回路、８０は３２ビット幅のデータバスである。
【００１６】
アドレスバス１０は、ＣＰＵが出力する１２ビットのアドレス信号ＡＤＲ［１３：２］をアドレスデコーダ３０に伝送するものである。アドレスバス２０は、アドレスバス１０中のアドレス信号ＡＤＲ［１３：１２］用のアドレスバスから分岐したものであり、アドレス信号ＡＤＲ［１３：１２］をデータ並べ替え回路７０に伝送するものである。
【００１７】
アドレスデコーダ３０は、ＣＰＵからアドレスバス１０を介して与えられるアドレス信号ＡＤＲ［１３：２］をデコードし、メモリ５０〜５３にアクセスするためのアドレス信号を出力するものであり、メモリ５０〜５２に対しては、それぞれに、１０ビットのアドレス信号ＡＤＲ［１１：２］又はＡＤＲ［１１：２］＋１を出力し、メモリ５３に対しては１０ビットのアドレス信号ＡＤＲ［１１：２］を出力するものである。
【００１８】
アドレスバス４０は、メモリ５０をアクセスするためにアドレスデコーダ３０が出力するアドレス信号ＡＤＲ［１１：２］又はＡＤＲ［１１：２］＋１をメモリ５０に伝送するものである。アドレスバス４１は、メモリ５１をアクセスするためにアドレスデコーダ３０が出力するアドレス信号ＡＤＲ［１１：２］又はＡＤＲ［１１：２］＋１をメモリ５１に伝送するものである。
【００１９】
アドレスバス４２は、メモリ５２をアクセスするためにアドレスデコーダ３０が出力するアドレス信号ＡＤＲ［１１：２］又はＡＤＲ［１１：２］＋１をメモリ５２に伝送するものである。アドレスバス４３は、メモリ５３をアクセスするためにアドレスデコーダ３０が出力するアドレス信号ＡＤＲ［１１：２］をメモリ５３に伝送するものである。
【００２０】
メモリ５０〜５３において、９０〜９３はメモリセル領域であり、アドレスデコーダ等は図示を省略している。メモリ５０〜５３は、１ワードを１バイトとし、アドレス０ｘ０００〜０ｘ３ＦＦを有している。即ち、メモリ５０〜５３は共通のアドレスを有する同一規模のアドレス空間（０ｘ０００〜０ｘ３ＦＦ）を有するものである。なお、メモリ５０〜５３を小規模な構成とする場合には、メモリセルとして、フリップフロップを使用することが好適である。
【００２１】
データバス６０は、データ読み出し時には、メモリ５０が出力する１バイトのデータＤＡＴ０［７：０］をデータ並べ替え回路７０に伝送し、データ書き込み時には、データ並べ替え回路７０が出力するメモリ５０に書き込むための１バイトのデータＤＡＴ０［７：０］をメモリ５０に伝送するものである。
【００２２】
データバス６１は、データ読み出し時には、メモリ５１が出力する１バイトのデータＤＡＴ１［７：０］をデータ並べ替え回路７０に伝送し、データ書き込み時には、データ並べ替え回路７０が出力するメモリ５１に書き込むための１バイトのデータＤＡＴ１［７：０］をメモリ５１に伝送するものである。
【００２３】
データバス６２は、データ読み出し時には、メモリ５２が出力する１バイトのデータＤＡＴ２［７：０］をデータ並べ替え回路７０に伝送し、データ書き込み時には、データ並べ替え回路７０が出力するメモリ５２に書き込むための１バイトのデータＤＡＴ２［７：０］をメモリ５２に伝送するものである。
【００２４】
データバス６３は、データ読み出し時には、メモリ５３が出力する１バイトのデータＤＡＴ３［７：０］をデータ並べ替え回路７０に伝送し、データ書き込み時には、データ並べ替え回路７０が出力するメモリ５３に書き込むための１バイトのデータＤＡＴ３［７：０］をメモリ５３に伝送するものである。
【００２５】
データ並べ替え回路７０は、データ読み出し時には、メモリ５０、５１、５２、５３から与えられるデータＤＡＴ０［７：０］、ＤＡＴ１［７：０］、ＤＡＴ２［７：０］、ＤＡＴ３［７：０］を必要に応じて並べ替えて４バイトのデータＤＡＴ［３１：０］を出力し、データ書き込み時には、ＣＰＵから与えられる４バイトのデータＤＡＴ［３１：０］を必要に応じて１バイト単位で並べ替えて、データＤＡＴ０［７：０］、ＤＡＴ１［７：０］、ＤＡＴ２［７：０］、ＤＡＴ３［７：０］をデータバス６０、６１、６２、６３に出力するものである。
【００２６】
データバス８０は、データ読み出し時には、データ並べ替え回路７０が出力する４バイトのデータＤＡＴ［３１：０］をＣＰＵに伝送し、データ書き込み時には、ＣＰＵが出力する４バイトのデータＤＡＴ［３１：０］をデータ並べ替え回路７０に伝送するものである。
【００２７】
図２はアドレスデコーダ３０とデータ並べ替え回路７０の構成を示すブロック回路図である。アドレスデコーダ３０は、加算回路１００と、セレクタ１１０〜１１２と、セレクタ制御回路１２０を有している。加算回路１００は、ＣＰＵから与えられるアドレス信号ＡＤＲ［１３：２］中のアドレス信号ＡＤＲ［１１：２］に１を加算し、ビット［１２］の桁上がり（キャリー）を含まない１０ビットのアドレス信号ＡＤＲ［１１：２］＋１を出力するものである。
【００２８】
セレクタ１１０は、セレクタ制御回路１２０が出力するセレクタ制御信号ＳＡ０に選択動作を制御され、セレクタ制御信号ＳＡ０＝０の場合には、ＣＰＵから与えられるアドレス信号ＡＤＲ［１３：２］中のアドレス信号ＡＤＲ［１１：２］を選択してアドレスバス４０に出力し、セレクタ制御信号ＳＡ０＝１の場合には、加算回路１００が出力するアドレス信号ＡＤＲ［１１：２］＋１を選択してアドレスバス４０に出力するものである。
【００２９】
セレクタ１１１は、セレクタ制御回路１２０が出力するセレクタ制御信号ＳＡ１に選択動作を制御され、セレクタ制御信号ＳＡ１＝０の場合には、ＣＰＵから与えられるアドレス信号ＡＤＲ［１３：２］中のアドレス信号ＡＤＲ［１１：２］を選択してアドレスバス４１に出力し、セレクタ制御信号ＳＡ１＝１の場合には、加算回路１００が出力するアドレス信号ＡＤＲ［１１：２］＋１を選択してアドレスバス４１に出力するものである。
【００３０】
セレクタ１１２は、セレクタ制御回路１２０が出力するセレクタ制御信号ＳＡ２に選択動作を制御され、セレクタ制御信号ＳＡ２＝０の場合には、ＣＰＵから与えられるアドレス信号ＡＤＲ［１３：２］中のアドレス信号ＡＤＲ［１１：２］を選択してアドレスバス４２に出力し、セレクタ制御信号ＳＡ２＝１の場合には、加算回路１００が出力するアドレス信号ＡＤＲ［１１：２］＋１を選択してアドレスバス４２に出力するものである。
【００３１】
セレクタ制御回路１２０は、ＣＰＵから与えられるアドレス信号ＡＤＲ［１３：２］中のアドレス信号ＡＤＲ［１３：１２］をデコードし、セレクタ１１０、１１１、１１２の選択動作を制御するセレクタ制御信号ＳＡ０、ＳＡ１、ＳＡ２を出力するものであり、表１は、アドレス信号ＡＤＲ［１３：１２］とセレクタ制御信号ＳＡ０、ＳＡ１、ＳＡ２の論理値との関係を示している。
【００３２】
【表１】
2006302161.tif 000003
【００３３】
データ並べ替え回路７０は、アドレス信号ＡＤＲ［１３：１２］に選択動作を制御されるセレクタ１３０、１３１、１３２、１３３を有している。セレクタ１３０は、データバス８０のビット［３１：２４］の部分を、アドレス信号ＡＤＲ［１３：１２］＝００の場合には、データバス６０［７：０］に接続し、アドレス信号ＡＤＲ［１３：１２］＝０１の場合には、データバス６１［７：０］に接続し、アドレス信号ＡＤＲ［１３：１２］＝１０の場合には、データバス６２［７：０］に接続し、アドレス信号ＡＤＲ［１３：１２］＝１１の場合には、データバス６３［７：０］に接続するものである。
【００３４】
セレクタ１３１は、データバス８０のビット［２３：１６］の部分を、アドレス信号ＡＤＲ［１３：１２］＝００の場合には、データバス６１［７：０］に接続し、アドレス信号ＡＤＲ［１３：１２］＝０１の場合には、データバス６２［７：０］に接続し、アドレス信号ＡＤＲ［１３：１２］＝１０の場合には、データバス６３［７：０］に接続し、アドレス信号ＡＤＲ［１３：１２］＝１１の場合には、データバス６０［７：０］に接続するものである。
【００３５】
セレクタ１３２は、データバス８０のビット［１５：８］の部分を、アドレス信号ＡＤＲ［１３：１２］＝００の場合には、データバス６２［７：０］に接続し、アドレス信号ＡＤＲ［１３：１２］＝０１の場合には、データバス６３［７：０］に接続し、アドレス信号ＡＤＲ［１３：１２］＝１０の場合には、データバス６０［７：０］に接続し、アドレス信号ＡＤＲ［１３：１２］＝１１の場合には、データバス６１［７：０］に接続するものである。
【００３６】
セレクタ１３３は、データバス８０のビット［７：０］の部分を、アドレス信号ＡＤＲ［１３：１２］＝００の場合には、データバス６３［７：０］に接続し、アドレス信号ＡＤＲ［１３：１２］＝０１の場合には、データバス６０［７：０］に接続し、アドレス信号ＡＤＲ［１３：１２］＝１０の場合には、データバス６１［７：０］に接続し、アドレス信号ＡＤＲ［１３：１２］＝１１の場合には、データバス６２［７：０］に接続するものである。
【００３７】
即ち、データ並べ替え回路７０は、メモリ５０、５１、５２、５３に対するアクセス時におけるアドレス信号ＡＤＲ［１３：１２］と、データバス８０上のデータＤＡＴ［３１：２４］、ＤＡＴ［２３：１６］、ＤＡＴ［１５：８］、ＤＡＴ［７：０］と、データバス６０、６１、６２、６３上のデータＤＡＴ０［７：０］、ＤＡＴ１［７：０］、ＤＡＴ２［７：０］、ＤＡＴ３［７：０］とが表２に示す関係になるように動作するものである。
【００３８】
【表２】
2006302161.tif 000004
【００３９】
図３〜図６は本発明の第１実施形態の動作例を示すブロック回路図である。図３はアドレス信号ＡＤＲ［１３：１２］＝００、アドレス信号ＡＤＲ［１１：２］＝０ｘ００１の場合を示している。この場合には、セレクタ制御信号ＳＡ０＝０、ＳＡ１＝０、ＳＡ２＝０となり、セレクタ１１０、１１１、１１２は、アドレス信号ＡＤＲ［１１：２］＝０ｘ００１をアドレスバス４０、４１、４２に出力する。また、アドレスバス４３にはアドレス信号ＡＤＲ［１１：２］＝０ｘ００１が出力される。この結果、メモリ５０、５１、５２、５３のアドレス０ｘ００１にアクセスすることになる。
【００４０】
したがって、例えば、データ読み出し時であれば、メモリ５０が出力するアドレス０ｘ００１のデータＤＡＴ０［７：０］は、データＤＡＴ［３１：２４］としてデータバス８０のビット［３１：２４］に乗り、メモリ５１が出力するアドレス０ｘ００１のデータＤＡＴ１［７：０］は、データＤＡＴ［２３：１６］としてデータバス８０のビット［２３：１６］に乗り、メモリ５２が出力するアドレス０ｘ００１のデータＤＡＴ２［７：０］は、データＤＡＴ［１５：８］としてデータバス８０のビット［１５：８］に乗り、メモリ５３が出力するアドレス０ｘ００１のデータＤＡＴ３［７：０］は、データＤＡＴ［７：０］としてデータバス８０のビット［７：０］に乗ることになる。
【００４１】
これに対して、データ書き込み時であれば、データバス８０のビット［３１：２４］上のデータＤＡＴ［３１：２４］は、データバス６０を介してデータＤＡＴ０［７：０］としてメモリ５０のアドレス０ｘ００１に書き込まれ、データバス８０のビット［２３：１６］上のデータＤＡＴ［２３：１６］は、データバス６１を介してデータＤＡＴ１［７：０］としてメモリ５１のアドレス０ｘ００１に書き込まれ、データバス８０のビット［１５：８］上のデータＤＡＴ［１５：８］は、データバス６２を介してデータＤＡＴ２［７：０］としてメモリ５２のアドレス０ｘ００１に書き込まれ、データバス８０のビット［７：０］上のデータＤＡＴ［７：０］は、データバス６３を介してデータＤＡＴ３［７：０］としてメモリ５３のアドレス０ｘ００１に書き込まれることになる。
【００４２】
図４はアドレス信号ＡＤＲ［１３：１２］＝０１、アドレス信号ＡＤＲ［１１：２］＝０ｘ００１の場合を示している。この場合には、セレクタ制御信号ＳＡ０＝１、ＳＡ１＝０、ＳＡ２＝０となり、セレクタ１１０はアドレス信号ＡＤＲ［１１：２］＋１＝０ｘ００２をアドレスバス４０に出力し、セレクタ１１１、１１２は、アドレス信号ＡＤＲ［１１：２］＝０ｘ００１をアドレスバス４１、４２に出力する。また、アドレスバス４３にはアドレス信号ＡＤＲ［１１：２］＝０ｘ００１が出力される。この結果、メモリ５０のアドレス０ｘ００２とメモリ５１、５２、５３のアドレス０ｘ００１にアクセスすることになる。
【００４３】
したがって、例えば、データ読み出し時であれば、メモリ５１が出力するアドレス０ｘ００１のデータＤＡＴ１［７：０］は、データＤＡＴ［３１：２４］としてデータバス８０のビット［３１：２４］に乗り、メモリ５２が出力するアドレス０ｘ００１のデータＤＡＴ２［７：０］は、データＤＡＴ［２３：１６］としてデータバス８０のビット［２３：１６］に乗り、メモリ５３が出力するアドレス０ｘ００１のデータＤＡＴ３［７：０］は、データＤＡＴ［１５：８］としてデータバス８０のビット［１５：８］に乗り、メモリ５０が出力するアドレス０ｘ００２のデータＤＡＴ０［７：０］は、データＤＡＴ［７：０］としてデータバス８０のビット［７：０］に乗ることになる。
【００４４】
これに対して、データ書き込み時であれば、データバス８０のビット［３１：２４］上のデータＤＡＴ［３１：２４］は、データバス６１を介してデータＤＡＴ１［７：０］としてメモリ５１のアドレス０ｘ００１に書き込まれ、データバス８０のビット［２３：１６］上のデータＤＡＴ［２３：１６］は、データバス６２を介してデータＤＡＴ２［７：０］としてメモリ５２のアドレス０ｘ００１に書き込まれ、データバス８０のビット［１５：８］上のデータＤＡＴ［１５：８］は、データバス６３を介してデータＤＡＴ３［７：０］としてメモリ５３のアドレス０ｘ００１に書き込まれ、データバス８０のビット［７：０］上のデータＤＡＴ［７：０］は、データバス６０を介してデータＤＡＴ０［７：０］としてメモリ５０のアドレス０ｘ００２に書き込まれることになる。
【００４５】
図５はアドレス信号ＡＤＲ［１３：１２］＝１０、アドレス信号ＡＤＲ［１１：２］＝０ｘ００１の場合を示している。この場合には、セレクタ制御信号ＳＡ０＝１、ＳＡ１＝１、ＳＡ２＝０となり、セレクタ１１０、１１１はアドレス信号ＡＤＲ［１１：２］＋１＝０ｘ００２をアドレスバス４０、４１に出力し、セレクタ１１２は、アドレス信号ＡＤＲ［１１：２］＝０ｘ００１をアドレスバス４２に出力する。また、アドレスバス４３にはアドレス信号ＡＤＲ［１１：２］＝０ｘ００１が出力される。この結果、メモリ５０、５１のアドレス０ｘ００２とメモリ５２、５３のアドレス０ｘ００１にアクセスすることになる。
【００４６】
したがって、例えば、データ読み出し時であれば、メモリ５２が出力するアドレス０ｘ００１のデータＤＡＴ２［７：０］は、データＤＡＴ［３１：２４］としてデータバス８０のビット［３１：２４］に乗り、メモリ５３が出力するアドレス０ｘ００１のデータＤＡＴ３［７：０］は、データＤＡＴ［２３：１６］としてデータバス８０のビット［２３：１６］に乗り、メモリ５０が出力するアドレス０ｘ００２のデータＤＡＴ０［７：０］は、データＤＡＴ［１５：８］としてデータバス８０のビット［１５：８］に乗り、メモリ５１が出力するアドレス０ｘ００２のデータＤＡＴ１［７：０］は、データＤＡＴ［７：０］としてデータバス８０のビット［７：０］に乗ることになる。
【００４７】
これに対して、データ書き込み時であれば、データバス８０のビット［３１：２４］上のデータＤＡＴ［３１：２４］は、データバス６２を介してデータＤＡＴ２［７：０］としてメモリ５２のアドレス０ｘ００１に書き込まれ、データバス８０のビット［２３：１６］上のデータＤＡＴ［２３：１６］は、データバス６３を介してデータＤＡＴ３［７：０］としてメモリ５３のアドレス０ｘ００１に書き込まれ、データバス８０のビット［１５：８］上のデータＤＡＴ［１５：８］は、データバス６０を介してデータＤＡＴ０［７：０］としてメモリ５０のアドレス０ｘ００２に書き込まれ、データバス８０のビット［７：０］上のデータＤＡＴ［７：０］は、データバス６１を介してデータＤＡＴ１［７：０］としてメモリ５１のアドレス０ｘ００２に書き込まれることになる。
【００４８】
図６はアドレス信号ＡＤＲ［１３：１２］＝１１、アドレス信号ＡＤＲ［１１：２］＝０ｘ００１の場合を示している。この場合には、セレクタ制御信号ＳＡ０＝１、ＳＡ１＝１、ＳＡ２＝１となり、セレクタ１１０、１１１、１１２はアドレス信号ＡＤＲ［１１：２］＋１＝０ｘ００２をアドレスバス４０、４１、４２に出力する。また、アドレスバス４３にはアドレス信号ＡＤＲ［１１：２］＝０ｘ００１が出力される。この結果、メモリ５０、５１、５２のアドレス０ｘ００２とメモリ５３のアドレス０ｘ００１にアクセスすることになる。
【００４９】
したがって、例えば、データ読み出し時であれば、メモリ５３が出力するアドレス０ｘ００１のデータＤＡＴ３［７：０］は、データＤＡＴ［３１：２４］としてデータバス８０のビット［３１：２４］に乗り、メモリ５０が出力するアドレス０ｘ００２のデータＤＡＴ０［７：０］は、データＤＡＴ［２３：１６］としてデータバス８０のビット［２３：１６］に乗り、メモリ５１が出力するアドレス０ｘ００２のデータＤＡＴ１［７：０］は、データＤＡＴ［１５：８］としてデータバス８０のビット［１５：８］に乗り、メモリ５２が出力するアドレス０ｘ００２のデータＤＡＴ２［７：０］は、データＤＡＴ［７：０］としてデータバス８０のビット［７：０］に乗ることになる。
【００５０】
これに対して、データ書き込み時であれば、データバス８０のビット［３１：２４］上のデータＤＡＴ［３１：２４］は、データバス６３を介してデータＤＡＴ３［７：０］としてメモリ５３のアドレス０ｘ００１に書き込まれ、データバス８０のビット［２３：１６］上のデータＤＡＴ［２３：１６］は、データバス６０を介してデータＤＡＴ０［７：０］としてメモリ５０のアドレス０ｘ００２に書き込まれ、データバス８０のビット［１５：８］上のデータＤＡＴ［１５：８］は、データバス６１を介してデータＤＡＴ１［７：０］としてメモリ５１のアドレス０ｘ００２に書き込まれ、データバス８０のビット［７：０］上のデータＤＡＴ［７：０］は、データバス６２を介してデータＤＡＴ２［７：０］としてメモリ５２のアドレス０ｘ００２に書き込まれることになる。
【００５１】
以上のように、本発明の第１実施形態においては、１ワードを１バイトとし、共通のアドレスを有する同一規模のアドレス空間（０ｘ０００〜０ｘ３ＦＦ）を有する４個のメモリ５０、５１、５２、５３に対して、任意のバイトアラインでの同時アクセスを可能とするアドレスデコーダ３０と、ビッグエンディアンのＣＰＵに合わせたデータの並べ替えを行うデータ並べ替え回路７０が設けられている。
【００５２】
したがって、本発明の第１実施形態によれば、３２ビットのバスを持つＣＰＵは、任意のバイトアラインでＣＰＵのワード単位でのデータアクセスを行うことができ、４バイトのデータの取得や書き込みのために２回のアクセスを行い、データの選択・並べ替えを行うことが必要である場合が無くなり、１回のアクセスで４バイトのデータの取得や書き込みを行うことができる。
【００５３】
（第２実施形態）
図７は本発明の第２実施形態の要部を示すブロック回路図である。本発明の第２実施形態は、１ワードを２バイト構成としており、１６ビットのバスを持つビッグエンディアンのＣＰＵによりアクセスされるものである。
【００５４】
図７中、１４０は９ビット幅のアドレスバス、１５０は１ビット幅のアドレスバス、１６０はアドレスデコーダ、１７０、１７１は８ビット幅のアドレスバス、１８０、１８１はメモリ、１９０、１９１は８ビット幅のデータバス、２００はデータ並べ替え回路、２１０は１６ビット幅のデータバスである。
【００５５】
アドレスバス１４０は、ＣＰＵが出力する９ビットのアドレス信号ＡＤＲ［１０：２］をアドレスデコーダ１６０に伝送するものである。アドレスバス１５０は、アドレスバス１４０中のアドレス信号ＡＤＲ［１０］用のアドレスバスから分岐したものであり、アドレス信号ＡＤＲ［１０］をデータ並べ替え回路２００に伝送するものである。
【００５６】
アドレスデコーダ１６０は、ＣＰＵからアドレスバス１４０を介して与えられるアドレス信号ＡＤＲ［１０：２］をデコードし、メモリ１８０、１８１にアクセスするためのアドレス信号を出力するものであり、メモリ１８０に対しては、８ビットのアドレス信号ＡＤＲ［９：２］又はＡＤＲ［９：２］＋１を出力し、メモリ１８１に対しては、８ビットのアドレス信号ＡＤＲ［９：２］を出力するものである。
【００５７】
アドレスバス１７０は、メモリ１８０をアクセスするためにアドレスデコーダ１６０が出力するアドレス信号ＡＤＲ［９：２］又はＡＤＲ［９：２］＋１をメモリ１８０に伝送するものである。アドレスバス１７１は、メモリ１８１をアクセスするためにアドレスデコーダ１６０が出力するアドレス信号ＡＤＲ［９：２］をメモリ１８１に伝送するものである。
【００５８】
メモリ１８０、１８１において、２２０、２２１はメモリセル領域であり、アドレスデコーダ等は図示を省略している。メモリ１８０、１８１は、１ワードを１バイトとし、アドレス０ｘ００〜０ｘＦＦを有している。即ち、メモリ１８０、１８１は共通のアドレスを有する同一規模のアドレス空間（０ｘ００〜０ｘＦＦ）を有するものである。なお、メモリ１８０、１８１を小規模な構成とする場合には、メモリセルとして、フリップフロップを使用することが好適である。
【００５９】
データバス１９０は、データ読み出し時には、メモリ１８０が出力する１バイトのデータＤＡＴ０［７：０］をデータ並べ替え回路２００に伝送し、データ書き込み時には、データ並べ替え回路２００が出力するメモリ１８０に書き込むための１バイトのデータＤＡＴ０［７：０］をメモリ１８０に伝送するものである。
【００６０】
データバス１９１は、データ読み出し時には、メモリ１８１が出力する１バイトのデータＤＡＴ１［７：０］をデータ並べ替え回路２００に伝送し、データ書き込み時には、データ並べ替え回路２００が出力するメモリ１８１に書き込むための１バイトのデータＤＡＴ１［７：０］をメモリ１８１に伝送するものである。
【００６１】
データ並べ替え回路２００は、データ読み出し時には、メモリ１８０、１８１から与えられるデータＤＡＴ０［７：０］、ＤＡＴ１［７：０］を必要に応じて並べ替えて２バイトのデータＤＡＴ［１５：０］を出力し、データ書き込み時には、ＣＰＵから与えられる２バイトのデータＤＡＴ［１５：０］を必要に応じて１バイト単位で並べ替えて、データＤＡＴ０［７：０］、ＤＡＴ１［７：０］をデータバス１９０、１９１に出力するものである。
【００６２】
データバス２１０は、データ読み出し時には、データ並べ替え回路２００が出力する２バイトのデータＤＡＴ［１５：０］をＣＰＵに伝送し、データ書き込み時には、ＣＰＵが出力する２バイトのデータＤＡＴ［１５：０］をデータ並べ替え回路２００に伝送するものである。
【００６３】
図８はアドレスデコーダ１６０とデータ並べ替え回路２００の構成を示すブロック回路図である。アドレスデコーダ１６０は、加算回路２３０と、セレクタ２４０を有している。加算回路２３０は、ＣＰＵから与えられるアドレス信号ＡＤＲ［１０：２］中のアドレス信号ＡＤＲ［９：２］に１を加算し、ビット［１０］の桁上がり（キャリー）を含まない８ビットのアドレス信号ＡＤＲ［９：２］＋１を出力するものである。
【００６４】
セレクタ２４０は、アドレス信号ＡＤＲ［１０］に選択動作を制御され、アドレス信号ＡＤＲ［１０］＝０の場合には、ＣＰＵから与えられるアドレス信号ＡＤＲ［１０：２］中のアドレス信号ＡＤＲ［９：２］を選択してアドレスバス１７０に出力し、アドレス信号ＡＤＲ［１０］＝１の場合には、加算回路２３０が出力するアドレス信号ＡＤＲ［９：２］＋１を選択してアドレスバス１７０に出力するものである。
【００６５】
データ並べ替え回路２００は、アドレス信号ＡＤＲ［１０］に選択動作を制御されるセレクタ２５０、２５１を有している。セレクタ２５０は、データバス２１０のビット［１５：８］の部分を、アドレス信号ＡＤＲ［１０］＝０の場合には、データバス１９０［７：０］に接続し、アドレス信号ＡＤＲ［１０］＝１の場合には、データバス１９１［７：０］に接続するものである。
【００６６】
セレクタ２５１は、データバス２１０のビット［７：０］の部分を、アドレス信号ＡＤＲ［１０］＝０の場合には、データバス１９１［７：０］に接続し、アドレス信号ＡＤＲ［１０］＝１の場合には、データバス１９０［７：０］に接続するものである。
【００６７】
即ち、データ並べ替え回路２００は、メモリ１８０、１８１に対するアクセス時におけるアドレス信号ＡＤＲ［１０］と、データバス２１０上のデータＤＡＴ［１５：８］、ＤＡＴ［７：０］と、データバス１９０、１９１上のデータＤＡＴ０［７：０］、ＤＡＴ１［７：０］とが表３に示す関係になるように動作するものである。
【００６８】
【表３】
2006302161.tif 000005
【００６９】
図９、図１０は本発明の第２実施形態の動作例を示すブロック回路図である。図９はアドレス信号ＡＤＲ［１０］＝０、アドレス信号ＡＤＲ［９：２］＝０ｘ０１の場合を示している。この場合には、セレクタ２４０は、アドレス信号ＡＤＲ［９：２］＝０ｘ０１をアドレスバス１７０に出力する。また、アドレスバス１７１にはアドレス信号ＡＤＲ［９：２］＝０ｘ０１が出力される。この結果、メモリ１８０、１８１のアドレス０ｘ０１にアクセスすることになる。
【００７０】
したがって、例えば、データ読み出し時であれば、メモリ１８０が出力するアドレス０ｘ０１のデータＤＡＴ０［７：０］は、データＤＡＴ［１５：８］としてデータバス２１０のビット［１５：８］に乗り、メモリ１８１が出力するアドレス０ｘ０１のデータＤＡＴ１［７：０］は、データＤＡＴ［７：０］としてデータバス２１０のビット［７：０］に乗ることになる。
【００７１】
これに対して、データ書き込み時であれば、データバス２１０のビット［１５：８］上のデータＤＡＴ［１５：８］は、データバス１９０を介してデータＤＡＴ０［７：０］としてメモリ１８０のアドレス０ｘ０１に書き込まれ、データバス２１０のビット［７：０］上のデータＤＡＴ［７：０］は、データバス１９１を介してデータＤＡＴ１［７：０］としてメモリ１８１のアドレス０ｘ０１に書き込まることになる。
【００７２】
図１０はアドレス信号ＡＤＲ［１０］＝１、アドレス信号ＡＤＲ［９：２］＝０ｘ０１の場合を示している。この場合には、セレクタ２４０は、アドレス信号ＡＤＲ［９：２］＋１＝０ｘ０２をアドレスバス１７０に出力する。また、アドレスバス１７１にはアドレス信号ＡＤＲ［９：２］＝０ｘ０１が出力される。この結果、メモリ１８０のアドレス０ｘ０２とメモリ１８１のアドレス０ｘ０１にアクセスすることになる。
【００７３】
したがって、例えば、データ読み出し時であれば、メモリ１８１が出力するアドレス０ｘ０１のデータＤＡＴ１［７：０］は、データＤＡＴ［１５：８］としてデータバス２１０のビット［１５：８］に乗り、メモリ１８０が出力するアドレス０ｘ０２のデータＤＡＴ０［７：０］は、データＤＡＴ［７：０］としてデータバス２１０のビット［７：０］に乗ることになる。
【００７４】
これに対して、データ書き込み時であれば、データバス２１０のビット［１５：８］上のデータＤＡＴ［１５：８］は、データバス１９１を介してデータＤＡＴ１［７：０］としてメモリ１８１のアドレス０ｘ０１に書き込まれ、データバス２１０のビット［７：０］上のデータＤＡＴ［７：０］は、データバス１９０を介してデータＤＡＴ０［７：０］としてメモリ１８０のアドレス０ｘ０２に書き込まれることになる。
【００７５】
以上のように、本発明の第２実施形態においては、１ワードを１バイトとし、共通のアドレスを有する同一規模のアドレス空間（０ｘ００〜０ｘＦＦ）を有する２個のメモリ１８０、１８１に対して、任意のバイトアラインでの同時アクセスを可能とするアドレスデコーダ１６０と、ビッグエンディアンのＣＰＵに合わせたデータの並べ替えを行うデータ並べ替え回路２００が設けられている。
【００７６】
したがって、本発明の第２実施形態によれば、１６ビットのバスを持つＣＰＵは、任意のバイトアラインでＣＰＵのワード単位でのデータアクセスを行うことができ、２バイトのデータの取得や書き込みのために２回のアクセスを行い、データの選択・並べ替えを行うことが必要である場合が無くなり、１回のアクセスで２バイトのデータの取得や書き込みを行うことができる。
【００７７】
なお、本発明の第１実施形態及び第２実施形態では、ＣＰＵがビッグエンディアンの場合について説明したが、本発明は、ＣＰＵがリトルエンディアン（little endian）の場合にも適用することができる。
【図面の簡単な説明】
【００７８】
【図１】本発明の第１実施形態の要部を示すブロック回路図である。
【図２】本発明の第１実施形態が備えるアドレスデコーダとデータ並べ替え回路の構成を示すブロック回路図である。
【図３】本発明の第１実施形態の動作例を示すブロック回路図である。
【図４】本発明の第１実施形態の動作例を示すブロック回路図である。
【図５】本発明の第１実施形態の動作例を示すブロック回路図である。
【図６】本発明の第１実施形態の動作例を示すブロック回路図である。
【図７】本発明の第２実施形態の要部を示すブロック回路図である。
【図８】本発明の第２実施形態が備えるアドレスデコーダとデータ並べ替え回路の構成を示すブロック回路図である。
【図９】本発明の第２実施形態の動作例を示すブロック回路図である。
【図１０】本発明の第２実施形態の動作例を示すブロック回路図である。
【図１１】従来のメモリ装置の一例のアドレス空間を示す図である。
【図１２】図１１に示す従来のメモリ装置からのデータ読み出し例を説明するための図である。
【符号の説明】
【００７９】
１０、２０…アドレスバス
３０…アドレスデコーダ
４０〜４３…アドレスバス
５０〜５３…メモリ
６０〜６３…データバス
７０…データ並べ替え回路
８０…データバス
９０〜９３…メモリセル領域
１００…加算回路
１１０〜１１２…セレクタ
１２０…セレクタ制御回路
１３０〜１３３…セレクタ
１４０、１５０…アドレスバス
１６０…アドレスデコーダ
１７０、１７１…アドレスバス
１８０、１８１…メモリ
１９０、１９１…データバス
２００…データ並べ替え回路
２１０…データバス
２２０、２２１…メモリセル領域
２３０…加算回路
２４０、２５０、２５１…セレクタ
【図１】
2006302161.tif 000006
【図２】
2006302161.tif 000007
【図３】
2006302161.tif 000008
【図４】
2006302161.tif 000009
【図５】
2006302161.tif 000010
【図６】
2006302161.tif 000011
【図７】
2006302161.tif 000012
【図８】
2006302161.tif 000013
【図９】
2006302161.tif 000014
【図１０】
2006302161.tif 000015
【図１１】
2006302161.tif 000016
【図１２】
2006302161.tif 000017