(57)【特許請求の範囲】
【請求項１】
データブロックを構成するＭ個のＮビットデータそれぞれを基に圧縮したＭ個のＮビット未満の圧縮データについてのメモリ配置を決定する配置決定装置であって、
Ｍ個の圧縮データのうち、データ長がＸビット（Ｘ＜Ｎ）以下である一般圧縮データそれぞれについては、当該一般圧縮データ全体と、少なくとも当該一般圧縮データのデータ長がＸビット以下であることを示すフラグとからなるＬビット（Ｘ＜Ｌ＜Ｎ）以下の第１データを、当該一般圧縮データの基となったＮビットデータの前記データブロック内アドレス値に第１演算を施した結果値が示すメモリ位置に配置するよう決定し、
Ｍ個の圧縮データのうち、データ長がＸビットより大きい特定圧縮データそれぞれについては、当該特定圧縮データのうちのＸビット分と、少なくとも当該特定圧縮データのデータ長がＸビットより大きいことを示すフラグとからなるＬビットの第１データを、当該特定圧縮データの基となったＮビットデータの前記データブロック内アドレス値に第１演算を施した結果値が示すメモリ位置に配置するよう決定する第１決定手段と、
前記特定圧縮データそれぞれについて、当該特定圧縮データから前記第１データに含まれるＸビットを除いた部分の一部又は全体を含む第２データを、当該特定圧縮データの基となったＮビットデータの前記データブロック内アドレス値に前記第１演算とは異なる第２演算を施した結果値が示すメモリ位置に配置するよう決定する第２決定手段とを備え、
前記第２演算は、Ｍ個のＮビットデータそれぞれの前記データブロック内アドレス値のうち、Ｋ個（Ｋ≦Ｍ）を１組とした各組について、同じ組内のいずれのアドレス値に当該第２演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第２演算を施して生じた結果値とも異なる結果値が生じる演算である
ことを特徴とする配置決定装置。
【請求項２】
前記第１演算は、各結果値それぞれが、メモリ中の第１領域内の異なる位置を示すものであり、
前記第２演算は、各結果値それぞれが、前記メモリ中の前記第１領域と連続する第２領域内の位置を示すものである
ことを特徴とする請求項１記載の配置決定装置。
【請求項３】
前記第１領域は、Ｎ×Ｍ／２ビットの領域であり、
前記第１決定手段は、
前記フラグをＦビットとし、データ長がＮ／２−Ｆビットより大きい圧縮データを前記特定圧縮データとして、Ｍ個の圧縮データそれぞれについて、当該圧縮データの基となるＮビットデータの前記データブロック内アドレス値を２で除算した結果値が示すメモリ位置に、前記第１データを配置するよう決定する
ことを特徴とする請求項２記載の配置決定装置。
【請求項４】
前記第２領域は、Ｎ×Ｍ／４ビットの領域であり、
前記第２演算は、
Ｍ個のＮビットデータそれぞれの前記データブロック内アドレス値のうち、２個を１組とした組毎に、Ｎ／２ビットずつずれたメモリ位置を示す結果値が生じる演算である
ことを特徴とする請求項３記載の配置決定装置。
【請求項５】
前記第２領域は、Ｎ×Ｍ×３／８ビットの領域であり、
前記第２演算は、Ｍ個のＮビットデータそれぞれの前記データブロック内アドレス値のうち、４個を１組とした組毎に、３個のメモリ位置を示す結果値が生じる演算であり、
前記第２決定手段は、
各特定圧縮データそれぞれについて、当該特定圧縮データの前記第２データを、当該特定圧縮データの基となるＮビットデータの前記データブロック内アドレス値に第２演算を施した結果値が示す３個のメモリ位置のうち、他の特定圧縮データの前記第２データが配置されていない１つのメモリ位置に配置するよう決定し、
前記第１データに含まれるフラグは、更に
当該第１データを含む前記特定圧縮データの前記第２データが、前記３個のメモリ位置のうち、いずれのメモリ位置に配置されているかを示す２ビットのデータである
ことを特徴とする請求項３記載の配置決定装置。
【請求項６】
前記第１演算及び前記第２演算は、
Ｍ個のＮビットデータそれぞれの前記データブロック内アドレス値のうち、Ｊ個（Ｋ≦Ｊ≦Ｍ）を１組とした各組について、同じ組内の各アドレス値に当該第１演算及び当該第２演算を施すと、メモリ中の第１領域内の位置を示す結果値が生じ、かつ他の１つの組内の各アドレス値に当該第１演算及び当該第２演算を施すと前記メモリ中の前記第１領域とは異なる第２領域内の位置を示す結果値が生じる演算である
ことを特徴とする請求項１記載の配置決定装置。
【請求項７】
前記第２演算は、
Ｍ個のＮビットデータそれぞれの前記データブロック内アドレス値のうち、連続する４個のアドレス値を１組とした各組について、同じ組内の第１及び第２のアドレス値に当該第２演算を施すと、前記第１領域内の部分領域内の同一位置を示す同一の結果値が生じ、かつ当該同じ組内の第３及び第４のアドレス値に当該第２演算を施すと、前記第１及び第２のアドレス値に当該第２演算を施した結果値が示す同一のメモリ位置からＮ／２ビットずれた前記部分領域内の同一の位置を示す同一の結果値が生じる演算であり、
前記第１演算は、
Ｍ個のＮビットデータそれぞれの前記データブロック内アドレス値のうち、４個を１組とした各組について、各アドレス値に当該第１演算を施すと、前記第１領域内の前記部分領域とは異なる位置を示す結果値が生じる演算である
ことを特徴とする請求項６記載の配置決定装置。
【請求項８】
データブロックを構成するＭ個のＮビットデータそれぞれを基に圧縮したＭ個のＮビット未満の圧縮データについてのメモリ配置を決定する配置決定装置における配置決定方法であって、
Ｍ個の圧縮データのうち、データ長がＸビット（Ｘ＜Ｎ）以下である一般圧縮データそれぞれについては、当該一般圧縮データ全体と、少なくとも当該一般圧縮データのデータ長がＸビット以下であることを示すフラグとからなるＬビット（Ｘ＜Ｌ＜Ｎ）以下の第１データを、当該一般圧縮データの基となったＮビットデータの前記データブロック内アドレス値に第１演算を施した結果値が示すメモリ位置に配置するよう決定し、
Ｍ個の圧縮データのうち、データ長がＸビットより大きい特定圧縮データそれぞれについては、当該特定圧縮データのうちのＸビット分と、少なくとも当該特定圧縮データのデータ長がＸビットより大きいことを示すフラグとからなるＬビットの第１データを、当該特定圧縮データの基となったＮビットデータの前記データブロック内アドレス値に第１演算を施した結果値が示すメモリ位置に配置するよう決定する第１決定ステップと、
前記特定圧縮データそれぞれについて、当該特定圧縮データから前記第１データに含まれるＸビットを除いた部分の一部又は全体を含む第２データを、当該特定圧縮データの基となったＮビットデータの前記データブロック内アドレス値に前記第１演算とは異なる第２演算を施した結果値が示すメモリ位置に配置するよう決定する第２決定ステップとを含み、
前記第２演算は、Ｍ個のＮビットデータそれぞれの前記データブロック内アドレス値のうち、Ｋ個（Ｋ≦Ｍ）を１組とした各組について、同じ組内のいずれのアドレス値に当該第２演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第２演算を施して生じた結果値とも異なる結果値が生じる演算である
ことを特徴とする配置決定方法。
【請求項９】
データブロックを構成するＭ個のＮビットデータそれぞれを基に圧縮したＭ個のＮビット未満の圧縮データそれぞれが配置されたメモリにアクセスするアクセス装置であって、
前記メモリは、第１メモリ領域と第２メモリ領域とを有し、
前記第１メモリ領域は、
Ｍ個の圧縮データのうち、データ長がＸビット（Ｘ＜Ｎ）以下である一般圧縮データそれぞれについては、当該一般圧縮データ全体と、少なくとも当該一般圧縮データのデータ長がＸビット以下であることを示すフラグとからなるＬビット（Ｘ＜Ｌ＜Ｎ）以下の第１データが配置された、当該一般圧縮データの基となるＮビットデータの前記データブロック内アドレス値に第１演算を施した結果値が示す領域であり、
Ｍ個の圧縮データのうち、データ長がＸビットより大きい特定圧縮データそれぞれについては、当該特定圧縮データのうちのＸビット分と、少なくとも当該特定圧縮データのデータ長がＸビットより大きいことを示すフラグとからなるＬビットの第１データが配置された、当該特定圧縮データの基となるＮビットデータの前記データブロック内アドレス値に第１演算を施した結果値が示す領域であり、
前記第２メモリ領域は、
前記特定圧縮データそれぞれについて、当該特定圧縮データから前記第１データに含まれるＸビットを除いた部分の一部又は全体を含む第２データが配置された、当該特定圧縮データの基となるＮビットデータの前記データブロック内アドレス値に前記第１演算とは異なる第２演算を施した結果値が示す領域であり、
前記第２演算は、Ｍ個のＮビットデータそれぞれの前記データブロック内アドレス値のうち、Ｋ個（Ｋ≦Ｍ）を１組とした各組について、同じ組内のいずれのアドレス値に当該第２演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第２演算を施して生じた結果値とも異なる結果値が生じる演算であり、
前記アクセス装置は、
プロセッサの１つのＮビットデータにアクセスするためのアドレス値を受け付ける入力手段と、
前記入力手段が受け付けたアドレス値に第１演算を施し、当該第１演算の結果値が示す、前記１つのＮビットデータを基に圧縮した前記圧縮データの全体又はＸビット分と、少なくとも当該圧縮データがＸビットより大きいか否かを示すフラグとからなるＬビット以下の第１データが配置されている前記メモリ上の位置を特定する第１特定手段と、
前記第１特定手段が特定した前記メモリ上の位置に配置されている前記第１データ内の前記フラグが、前記圧縮データがＸビットより大きいことを示す場合に、前記入力手段が受け付けたアドレス値に前記第１演算とは異なる第２演算を施し、当該第２演算の結果値が示す、前記圧縮データから前記第１データに含まれるＸビットを除いた部分の一部又は全体を含む第２データが配置されている前記メモリ上の位置を特定する第２特定手段と、
前記第１特定手段が特定した前記メモリ上の位置に配置されている前記第１データに含まれる前記圧縮データの全体又はＸビット分を出力すると共に、前記第２特定手段が前記メモリ上の位置を特定した場合には、当該メモリ上の位置に配置されている第２データを出力する出力手段とを備え、
前記第２演算は、Ｍ個のＮビットデータそれぞれの前記データブロック内アドレス値のうち、Ｋ個（Ｋ≦Ｍ）を１組とした各組について、同じ組内のいずれのアドレス値に当該第２演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第２演算を施して生じた結果値とも異なる結果値が生じる演算である
ことを特徴とするアクセス装置。
【請求項１０】
前記アクセス装置は、更に
圧縮データを伸長し、得られたＮビットデータを前記プロセッサに送出する伸長手段を備える
ことを特徴とする請求項９記載のアクセス装置。
【請求項１１】
データブロックを構成するＭ個のＮビットデータそれぞれを基に圧縮したＭ個のＮビット未満の圧縮データそれぞれが配置されたメモリにアクセスするアクセス装置におけるメモリアクセス方法であって、
前記メモリは、第１メモリ領域と第２メモリ領域とを有し、
前記第１メモリ領域は、
Ｍ個の圧縮データのうち、データ長がＸビット（Ｘ＜Ｎ）以下である一般圧縮データそれぞれについては、当該一般圧縮データ全体と、少なくとも当該一般圧縮データのデータ長がＸビット以下であることを示すフラグとからなるＬビット（Ｘ＜Ｌ＜Ｎ）以下の第１データが配置された、当該一般圧縮データの基となるＮビットデータの前記データブロック内アドレス値に第１演算を施した結果値が示す領域であり、
Ｍ個の圧縮データのうち、データ長がＸビットより大きい特定圧縮データそれぞれについては、当該特定圧縮データのうちのＸビット分と、少なくとも当該特定圧縮データのデータ長がＸビットより大きいことを示すフラグとからなるＬビットの第１データが配置された、当該特定圧縮データの基となるＮビットデータの前記データブロック内アドレス値に第１演算を施した結果値が示す領域であり、
前記第２メモリ領域は、
前記特定圧縮データそれぞれについて、当該特定圧縮データから前記第１データに含まれるＸビットを除いた部分の一部又は全体を含む第２データが配置された、当該特定圧縮データの基となるＮビットデータの前記データブロック内アドレス値に前記第１演算とは異なる第２演算を施した結果値が示す領域であり、
前記第２演算は、Ｍ個のＮビットデータそれぞれの前記データブロック内アドレス値のうち、Ｋ個（Ｋ≦Ｍ）を１組とした各組について、同じ組内のいずれのアドレス値に当該第２演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第２演算を施して生じた結果値とも異なる結果値が生じる演算であり、
前記メモリアクセス方法は、
プロセッサの１つのＮビットデータにアクセスするためのアドレス値を受け付ける入力ステップと、
前記入力ステップで受け付けたアドレス値に第１演算を施し、当該第１演算の結果値が示す、前記１つのＮビットデータを基に圧縮した前記圧縮データの全体又はＸビット分と、少なくとも当該圧縮データがＸビットより大きいか否かを示すフラグとからなるＬビット以下の第１データが配置されている前記メモリ上の位置を特定する第１特定ステップと、
前記第１特定ステップで特定した前記メモリ上の位置に配置されている前記第１データ内の前記フラグが、前記圧縮データがＸビットより大きいことを示す場合に、前記入力ステップで受け付けたアドレス値に前記第１演算とは異なる第２演算を施し、当該第２演算の結果値が示す、前記圧縮データから前記第１データに含まれるＸビットを除いた部分の一部又は全体を含む第２データが配置されている前記メモリ上の位置を特定する第２特定ステップと、
前記第１特定ステップで特定した前記メモリ上の位置に配置されている前記第１データのうちの全体又はＸビット分を出力すると共に、前記第２特定ステップで前記メモリ上の位置を特定した場合には、当該メモリ上の位置に配置されている第２データを出力する出力ステップとを含み、
前記第２演算は、Ｍ個のＮビットデータそれぞれの前記データブロック内アドレス値のうち、Ｋ個（Ｋ≦Ｍ）を１組とした各組について、同じ組内のいずれのアドレス値に当該第２演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第２演算を施して生じた結果値とも異なる結果値が生じる演算である
ことを特徴とするメモリアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサによるメモリアクセス技術に関する。
【背景技術】
【０００２】
複数のデータそれぞれを基に圧縮した複数の圧縮データが配置されたＲＯＭ等のメモリから、プロセッサが所望する任意の非圧縮データに対応する圧縮データを読み出す際の技術として、例えば特許文献１の技術が知られている。【０００３】
特許文献１の技術は、プロセッサが所望するプログラムコードを圧縮した可変長の圧縮プログラムコードを、アドレス変換テーブルを用いて読み出すものである。【０００４】
このアドレス変換テーブルには、プロセッサが各プログラムコードを読み出す際に用いる各アドレス値と、各プログラムコードに対応する各圧縮プログラムコードが配置されているメモリ上の位置を示すアドレス値とが対応付けて登録されている。【０００５】
即ち、特許文献１の技術は、プロセッサから取得した所望のプログラムコードを読み出すためのアドレス値を、このアドレス変換テーブルを用いて変換し、変換後のアドレス値が示すメモリ上の位置から、該当の圧縮プログラムコードを読み出すというものである。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−２３４０４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１の技術では、プロセッサが所望するプログラムコードに対応する圧縮プログラムコードをメモリから読み出すために、上記アドレス変換テーブルを参照する必要がある。従って、特許文献１の技術では、このアドレス変換テーブルを記憶するためのメモリ領域を確保しなければならない。【０００８】
そこで、本発明は、アドレス変換テーブルを用いることなく、プロセッサが所望するデータに対応する圧縮データを、メモリから読み出せるようにするための技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明に係る配置決定装置は、データブロックを構成するＭ個のＮビットデータそれぞれを基に圧縮したＭ個のＮビット未満の圧縮データについてのメモリ配置を決定する配置決定装置であって、Ｍ個の圧縮データのうち、データ長がＸビット（Ｘ＜Ｎ）以下である一般圧縮データそれぞれについては、当該一般圧縮データ全体と、少なくとも当該一般圧縮データのデータ長がＸビット以下であることを示すフラグとからなるＬビット（Ｘ＜Ｌ＜Ｎ）以下の第１データを、当該一般圧縮データの基となったＮビットデータの前記データブロック内アドレス値に第１演算を施した結果値が示すメモリ位置に配置するよう決定し、Ｍ個の圧縮データのうち、データ長がＸビットより大きい特定圧縮データそれぞれについては、当該特定圧縮データのうちのＸビット分と、少なくとも当該特定圧縮データのデータ長がＸビットより大きいことを示すフラグとからなるＬビットの第１データを、当該特定圧縮データの基となったＮビットデータの前記データブロック内アドレス値に第１演算を施した結果値が示すメモリ位置に配置するよう決定する第１決定手段と、前記特定圧縮データそれぞれについて、当該特定圧縮データから前記第１データに含まれるＸビットを除いた部分の一部又は全体を含む第２データを、当該特定圧縮データの基となったＮビットデータの前記データブロック内アドレス値に前記第１演算とは異なる第２演算を施した結果値が示すメモリ位置に配置するよう決定する第２決定手段とを備え、前記第２演算は、Ｍ個のＮビットデータそれぞれの前記データブロック内アドレス値のうち、Ｋ個（Ｋ≦Ｍ）を１組とした各組について、同じ組内のいずれのアドレス値に当該第２演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第２演算を施して生じた結果値とも異なる結果値が生じる演算であることを特徴とする。
【発明の効果】
【００１０】
上記構成を備える本発明に係る配置決定装置によれば、この配置決定装置により決定された配置で各圧縮データが配置されているメモリから、プロセッサが所望するＮビットデータに対応する圧縮データを、アドレス変換テーブルを用いることなく読み出し得る。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１に係る配置決定装置１００の主要部の機能構成を示すブロック図
【図２】実施の形態１に係るアクセス装置２００の主要部の機能構成を示すブロック図
【図３】Ｍ個のＮビットの非圧縮コードそれぞれを圧縮した結果例及び各圧縮コードのＲＯＭ１０への配置例を示す図
【図４】配置決定装置１００の配置決定処理を示すフローチャート
【図５】アクセス装置２００のアクセス処理を示すフローチャート
【図６】変形例１に係るアクセス装置の制御回路２１０ａの回路構成を示す図
【図７】実施の形態２に係る配置決定装置１２０の主要部の機能構成を示すブロック図
【図８】実施の形態２に係るアクセス装置２２０の主要部の機能構成を示すブロック図
【図９】Ｍ個のＮビットの非圧縮コードそれぞれを圧縮した結果例及び各圧縮コードのＲＯＭ１０への配置例を示す図
【図１０】配置決定装置１２０の配置決定処理を示すフローチャート
【図１１】アクセス装置２２０のアクセス処理を示すフローチャート
【図１２】変形例２に係るアクセス装置の制御回路２３０ａの回路構成を示す図
【図１３】実施の形態３に係る配置決定装置１４０の主要部の機能構成を示すブロック図
【図１４】実施の形態３に係るアクセス装置２４０の主要部の機能構成を示すブロック図
【図１５】Ｍ個のＮビットの非圧縮コードそれぞれを圧縮した結果例及び各圧縮コードのＲＯＭ１０への配置例を示す図
【図１６】配置決定装置１４０の配置決定処理を示すフローチャート
【図１７】アクセス装置２４０のアクセス処理を示すフローチャート
【図１８】変形例３に係るアクセス装置の制御回路２５０ａの回路構成を示す図
【発明を実施するための形態】
【００１２】
以下、本発明に係る配置決定装置及びメモリアクセス装置の一実施形態を、図面を参照しながら説明する。
【００１３】
≪実施の形態１≫
＜１．概要＞
実施の形態１に係る配置決定装置は、Ｍ個のＮビットの非圧縮プログラムコードそれぞれを基に圧縮したＭ個の圧縮プログラムコードの、本発明に係るメモリの一実施形態であるＲＯＭ（Read Only Memory）への配置を決定する装置である。以下、「プログラムコード」のことを単に「コード」ともいう。
【００１４】
この配置決定装置は、上記Ｍ個の非圧縮コードからなる非圧縮ブロック内の各非圧縮コードのアドレス値に所定の演算を施した結果値に基づいて、各圧縮コードの配置を決定する。
【００１５】
具体的には、この配置決定装置は、非圧縮ブロック内の各非圧縮コードのアドレス値に、第１演算を施した結果値に基づいて、各圧縮コードのうちのＸａビット（Ｘａ＜Ｎ）分の配置を決定する。また、この配置決定装置は、非圧縮ブロック内のデータ長がＸａビットより大きい各圧縮コード（以下、「特定圧縮コード」ともいう）のアドレス値に、第２演算を施した結果値に基づいて各特定圧縮コードから上記Ｘａビット分を除いた部分の配置を決定する。なお、第１演算及び第２演算の内容は後述する。
【００１６】
また、実施の形態１に係るアクセス装置は、プロセッサが所望する非圧縮コードに対応する圧縮コード（以下、「対象圧縮コード」ともいう）が配置されている上記ＲＯＭ上の位置を特定して読み出し、読み出した対象圧縮コードを伸長して、プロセッサに送出する装置である。
【００１７】
このアクセス装置も上記配置決定装置と同様に、第１演算及び第２演算を用いて、対象圧縮コードが配置されているＲＯＭ上の位置を特定する。
【００１８】
このように、実施の形態１に係る配置決定装置及びアクセス装置によれば、アドレス変換テーブルを用いることなく、所定の演算（第１演算及び第２演算）を用いて圧縮コードの配置の決定し、圧縮コードの位置を特定することができる。
【００１９】
＜２．機能構成＞
＜２−１．配置決定装置＞
まず、配置決定装置１００の機能構成について説明する。
【００２０】
図１は、実施の形態１に係る配置決定装置１００の主要部の機能構成を示すブロック図である。
【００２１】
同図に示すように、配置決定装置１００は、記憶装置２０及び書込装置３０と接続しており、アクセス部１０１、圧縮部１０２及び制御部１１０を備える。なお、配置決定装置１００は、プロセッサ及びメモリを含むコンピュータであり、圧縮部１０２及び制御部１１０の各機能は、上記メモリに格納されたプログラムを上記プロセッサが実行することで実現される。
【００２２】
アクセス部１０１は、制御部１１０の指示に従って、Ｍ個の非圧縮コード用のメモリ領域２１及びＭ個の圧縮コード用のメモリ領域２２を有する記憶装置２０にアクセスし、非圧縮コードの読み出し及び圧縮コードの書き込みを行う機能を有する。
【００２３】
圧縮部１０２は、制御部１１０の指示に従って、アクセス部１０１が読み出したＮビット（例えば、１６ビット）の非圧縮コードに対し圧縮処理を行い、Ｎビット未満の圧縮コードを生成する機能を有する。圧縮部１０２は、生成した圧縮コード及びその圧縮コードのデータ長を示す情報（以下、「データ長情報」という）を、制御部１１０に送出する。
【００２４】
制御部１１０は、配置決定装置１００内の各ブロックへの指示を行う機能の他、圧縮部１０２から受領した圧縮コードのＲＯＭ１０への配置を決定し、この決定した配置になるように、アクセス部１０１を介して、各圧縮コードを記憶装置２０の圧縮コード用のメモリ領域２２に格納する機能を有する。
【００２５】
制御部１１０は、第１決定部１１１及び第２決定部１１２を含む。
【００２６】
第１決定部１１１は、圧縮部１０２から受領した圧縮コードのうちのＸａビット（この例では、Ｎ／２−１、つまり７ビットとする）分を、その圧縮コードの基となった非圧縮コードの非圧縮ブロック内アドレス値ＡＤＤＲ＿ａに第１演算を施した結果値ａｄｄｒ＿ａ１が示すＲＯＭ１０上の位置に配置するよう決定する機能を有する。なお、このアドレス値ＡＤＤＲ＿ａは、Ｎビット単位について割り振られたものである。
【００２７】
第１演算の一例を数１に示す。
【００２８】
［数１］
ａｄｄｒ＿ａ１＝ＡＤＤＲ＿ａ／２
第２決定部１１２は、圧縮部１０２から受領したＸａビットより大きい圧縮コード（特定圧縮コード）からＸａビット分のデータを除いた残りのデータを、その圧縮コードの基となった非圧縮コードの非圧縮ブロック中のアドレス値ＡＤＤＲ＿ａに第２演算を施した結果値ａｄｄｒ＿ａ２が示すＲＯＭ１０上の位置に配置するよう決定する機能を有する。第２演算の一例を数２に示す。
【００２９】
［数２］
ａｄｄｒ＿ａ２＝Ｍ／２＋Ｒｏｕｎｄ1/2（ＡＤＤＲ＿ａ／４）
ここで、Ｍは、非圧縮コードの個数であり、圧縮コードの個数でもある。また、Ｒｏｕｎｄ1/2（ＡＤＤＲ＿ａ／４）は、ＡＤＤＲ＿ａを４で除算した結果を、１／２単位で丸めた結果値を返す関数である。
【００３０】
制御部１１０は、Ｍ個の圧縮コードそれぞれについて、第１決定部１１１及び第２決定部１１２で決定された配置になるように、アクセス部１０１を介して、記憶装置２０の圧縮コード用のメモリ領域２２に格納する。
【００３１】
なお、制御部１１０は、各圧縮コードについて、その圧縮コードのうちのＸａビット（上述の例では、Ｎ／２−１）分に、その圧縮コードがＸａビットより大きいか否かを示す１ビットのフラグを付与して、第１決定部１１１が決定した配置になるように記憶装置２０に格納する。
【００３２】
以下では、この圧縮コードのうちのＸａビット分と１ビットのフラグとからなるデータを、「第１データ」ともいい、Ｘａビットより大きい特定圧縮コードから、第１データに含まれるこのＸａビット分を除いた部分のデータを「第２データ」ともいう。
【００３３】
制御部１１０は、アクセス部１０１を介して、Ｍ個の圧縮コード全てについての圧縮コード用のメモリ領域２２への格納が完了した際に、いわゆるＲＯＭライターである書込装置３０にＲＯＭ１０への書込指示を行う。
【００３４】
この指示を受けた書込装置３０は、記憶装置２０の圧縮コード用のメモリ領域２２における配置を維持して、ＲＯＭ１０に各圧縮コードを書き込む。
【００３５】
＜２−２．アクセス装置＞
図２は、実施の形態１に係るアクセス装置２００の主要部の機能構成を示すブロック図である。
【００３６】
ここで、ＲＯＭ１０には、配置決定装置１００が決定した配置で各圧縮コードが格納されているものとする。
【００３７】
同図に示すように、アクセス装置２００は、入力部２０１、読出部２０２、伸長部２０３及び制御部２１０を備える。なお、アクセス装置２００は、プロセッサ（プロセッサ４０とは別のプロセッサである）及びメモリを含むコンピュータであり、伸長部２０３及び制御部２１０の各機能は、上記メモリに格納されたプログラムを上記プロセッサが実行することで実現される。
【００３８】
入力部２０１は、プロセッサ４０から、所望する非圧縮コードにアクセスするためのアドレス値ＡＤＤＲ＿ｂを受け付けて、制御部２１０に送出する機能を有する。
【００３９】
なお、このアドレス値ＡＤＤＲ＿ｂは、Ｎビット単位について割り振られたものである。
【００４０】
読出部２０２は、制御部２１０の指示に従って、ＲＯＭ１０から第１データ及び第２データを読み出し、制御部２１０に送出する機能を有する。
【００４１】
伸長部２０３は、制御部２１０から送出された圧縮コードを伸長し、得られた非圧縮コードをプロセッサ４０に送出する機能を有する。
【００４２】
制御部２１０は、アクセス装置２００内の各ブロックへの指示を行う機能の他、入力部２０１から受領したアドレス値ＡＤＤＲ＿ｂに基づいて、プロセッサ４０が所望する非圧縮コードに対応する圧縮コード（対象圧縮コード）を、読出部２０２を介して、ＲＯＭ１０から読み出し、伸長部２０３に送出する機能を有する。
【００４３】
制御部２１０は、第１特定部２１１、第２特定部２１２及び出力部２１３を含む。
【００４４】
第１特定部２１１は、入力部２０１から受領したアドレス値ＡＤＤＲ＿ｂに第１演算を施した結果値ａｄｄｒ＿ｂ１が示すＲＯＭ１０上の位置を、対象圧縮コードのうちのＸａビット分のデータを含む第１データが配置されている位置として特定する機能を有する。
【００４５】
第１演算の一例を数３に示すが、この第１演算は、配置決定装置１００の第１決定部１１１による第１演算（数１参照）と同様のものである。
【００４６】
［数３］
ａｄｄｒ＿ｂ１＝ＡＤＤＲ＿ｂ／２
なお、第１特定部２１１は、特定したＲＯＭ１０上の位置に配置されている第１データを、読出部２０２を介して読み出す機能も有する。
【００４７】
第２特定部２１２は、入力部２０１から受領したアドレス値ＡＤＤＲ＿ｂに第２演算を施した結果値ａｄｄｒ＿ｂ２が示すＲＯＭ１０上の位置を、Ｘａビットよりも大きい特定圧縮コードからＸａビット分を除いた第２データが配置されている位置として特定する機能を有する。
【００４８】
第２演算の一例を数４に示すが、この第２演算は、配置決定装置１００の第２決定部１１２による第２演算（数２参照）と同様のものである。
【００４９】
［数４］
ａｄｄｒ＿ｂ２＝Ｍ／２＋Ｒｏｕｎｄ1/2（ＡＤＤＲ＿ｂ／４）
ここで、Ｍは、非圧縮コードであり、圧縮コードの個数でもある。また、Ｒｏｕｎｄ1/2（ＡＤＤＲ＿ｂ／４）は、ＡＤＤＲ＿ｂを４で除算した結果を、１／２単位で丸めた結果値を返す関数である。
【００５０】
なお、第２特定部２１２は、特定したＲＯＭ１０上の位置に配置されている第２データを、読出部２０２を介して読み出す機能も有する。
【００５１】
出力部２１３は、第１特定部２１１が読み出した第１データに含まれているＸａビット分の圧縮コードと、第２特定部２１２が読み出した第２データとからなる対象圧縮コードとを、伸長部２０３に送出する機能を有する。
【００５２】
なお、対象圧縮コードのデータ長がＸａビット以下である場合には、第２データの読み出しは行われない。従って、この場合、出力部２１３は、第１特定部２１１が読み出した第１データに含まれている圧縮コードのみからなる対象圧縮コードを、伸長部２０３に送出することになる。
【００５３】
＜３．データ＞
以下では、ＲＯＭ１０のデータ構成について説明する。
【００５４】
図３（ａ）は、Ｍ個のＮビットの非圧縮コードそれぞれを圧縮した結果例を示す図である。
【００５５】
同図に示すＡＤＤＲは、各非圧縮コードについての非圧縮ブロック内アドレス値ＡＤＤＲ＿ａ又はプロセッサ４０が所望する非圧縮コードのアドレス値ＡＤＤＲ＿ｂを示している（後述する図９（ａ）、図１５（ａ）についても同様）。
【００５６】
例えば、同図では、ＡＤＤＲが「０」である非圧縮コードＡ１を圧縮した結果、圧縮コードＡ１０が得られたことを示している。
【００５７】
また、同図では、ＡＤＤＲがそれぞれ「０」、「１」、「２」である非圧縮コードＡ１、Ｂ１、Ｄ１を圧縮した圧縮コードＡ１０、Ｂ１０、Ｄ１０のデータ長は、Ｘａビット（この例では、Ｎ／２−１ビット）以下であることを示している。また、同図では、ＡＤＤＲが「２」である非圧縮コードＣ１を圧縮した圧縮コードＣ１０のデータ長が、Ｘａビット（この例では、Ｎ／２−１ビット）より大きいことを示している。
【００５８】
また、図３（ｂ）は、各圧縮コード（Ａ１０〜Ｄ１０）のＲＯＭ１０への配置例を示す図である。
【００５９】
各圧縮コードが配置されるＲＯＭ１０内の領域ａｒｅａ０は、第１領域ａｒｅａ１と第２領域ａｒｅａ２とからなる。なお、同図に示すａｄｄｒは、ＲＯＭ１０上のアドレス値を示している（後述する図９（ｂ）、図１５（ｂ）についても同様）。
【００６０】
第１領域ａｒｅａ１は、各圧縮コードについての、その圧縮コードのうちのＸａビット以下分と１ビットのフラグとからなる第１データが配置される物理的に連続した領域である。
【００６１】
この例では、圧縮コードのデータ長がＸａビット以下である場合のフラグの値を「０」とし、Ｘａビットより大きい場合のフラグの値を「１」としている。
【００６２】
第２領域ａｒｅａ２は、データ長がＸａビットより大きい各特定圧縮コードの第２データが配置される物理的に連続した領域である。
【００６３】
即ち、データ長がＸａビット以下である各圧縮コードは、数１の結果値ａｄｄｒ＿ａ１が示す第１領域ａｒｅａ１内の位置に格納されることになる。また、データ長がビットより大きい各特定圧縮コードは、数１の結果値ａｄｄｒ＿ａ１が示す第１領域ａｒｅａ１内の位置と、数２の結果値ａｄｄｒ＿ａ２が示す第２領域ａｒｅａ２内の位置とに分割して格納されることになる。なお、数１及び数２を用いた各圧縮コードの配置決定方法については、以下の＜４．動作＞の＜４−１．配置決定処理＞及び＜４−２．配置決定処理の具体例＞において詳しく説明する。
【００６４】
図３（ａ）の例では、圧縮コードＡ１０、Ｂ１０、Ｄ１０のデータ長はＮ／２−１以下であり、圧縮コードＣ１０のデータ長はＮ／２−１より大きい。従って、この例では、圧縮コードＣ１０についてのみ第２データが格納されることになる。
【００６５】
即ち、図３（ｂ）の例では、圧縮コードＡ１０とＢ１０とがそれぞれ、ＲＯＭ１０の第１領域ａｒｅａ１内のａｄｄｒが「０」である領域の下位Ｎ／２ビット分の領域と上位Ｎ／２ビット分の領域とに配置される。また、圧縮コードＣ１０のＸａビット分のデータＣ１１と圧縮コードＤ１０とがそれぞれ、ＲＯＭ１０の第１領域ａｒｅａ１内のａｄｄｒが「１」である領域の下位Ｎ／２ビット分の領域と上位Ｎ／２ビット分の領域とに配置される。また、圧縮コードＣ１０からＸａビット分のデータＣ１１を除いた第２データＣ１２が、ＲＯＭ１０の第２領域ａｒｅａ２内のａｄｄｒが「Ｍ／２」である領域の上位Ｎ／２ビット分の領域に配置される。
【００６６】
なお、図中では、各圧縮コードの有効データ長のイメージをハッチで示している（後述する図９（ｂ）、図１５（ｂ）についても同様）。実装においては、伸長部２０３で伸長したときに、元の固定長（Ｎビット）の非圧縮コードが得られれば足りるので、有効データ長の境界が明示される必要はない。
【００６７】
＜４．動作＞
次に、上記構成を備える配置決定装置１００及びアクセス装置２００の動作について説明する。
【００６８】
＜４−１．配置決定処理＞
まずは、配置決定装置１００の配置決定処理について説明する。
【００６９】
図４は、配置決定装置１００の配置決定処理を示すフローチャートである。
【００７０】
まず、配置決定装置１００における制御部１１０は、処理対象の非圧縮コードの非圧縮ブロック内アドレス値ＡＤＤＲ＿ａ（変数）を「０」に初期化する（ステップＳ１）。
【００７１】
制御部１１０は、Ｍ個の非圧縮コード全てについて、以下説明するステップＳ３以降の処理を完了した否かを判定する（ステップＳ２）。
【００７２】
ステップＳ３以降の処理を完了していない場合に（ステップＳ２：ＮＯ）、制御部１１０は、アドレス値ＡＤＤＲ＿ａが示す記憶装置２０の非圧縮コード用の領域２１内の位置に格納されている非圧縮コードを、アクセス部１０１を介して読み出す（ステップＳ３）。
【００７３】
制御部１１０は、読み出した非圧縮コードを圧縮部１０２に送出し、圧縮部１０２は、受領した非圧縮コードを圧縮し、圧縮コード及びその圧縮コードのデータ長を示すデータ長情報を、制御部１１０に送出する（ステップＳ４）。
【００７４】
制御部１１０の第１決定部１１１は、アドレス値ＡＤＤＲ＿ａに第１演算（数１参照）を施し（ステップＳ５）、制御部１１０は、圧縮部１０２から受領したデータ長情報が示すデータ長がＸａビットより大きいか否かを判定する（ステップＳ６）。
【００７５】
圧縮部１０２から受領したデータ長情報が示すデータ長がＸａビット以下である場合に（ステップＳ６：ＮＯ）、制御部１１０は、フラグとステップＳ４で受領した圧縮コードとを、ステップＳ５の第１演算の結果値ａｄｄｒ＿ａ１が示す記憶装置２０の圧縮コード用の領域２２内の位置にアクセス部１０１を介して書き込む（ステップＳ８）。このときのフラグは、圧縮コードのデータ長がＸａビット以下であることを示すように「０」に設定される。
【００７６】
一方、圧縮部１０２から受領したデータ長情報が示すデータ長がＸａビットより大きい場合に（ステップＳ６：ＹＥＳ）、制御部１１０の第２決定部１１２は、アドレス値ＡＤＤＲ＿ａに第２演算を施す（ステップＳ７）。
【００７７】
続いて、制御部１１０は、フラグとステップＳ４で受領した圧縮コードのＸａビット分とを、ステップＳ５の第１演算の結果値ａｄｄｒ＿ａ１が示す記憶装置２０の圧縮コード用の領域２２内の位置にアクセス部１０１を介して書き込む。このときのフラグは、圧縮コードのデータ長がＸａビットより大きいことを示すように「１」に設定される。また、制御部１１０は、ステップＳ４で受領した圧縮コードからＸａビット分を除いた残りを、ステップＳ７の第２演算の結果値ａｄｄｒ＿ａ２が示す圧縮コード用の領域２２内の位置にアクセス部１０１を介して書き込む（ステップＳ８）。
【００７８】
ステップＳ８の処理を完了すると、制御部１１０は、アドレス値ＡＤＤＲ＿ａを、１加算した値に更新し（ステップＳ９）、再びステップＳ２から処理を行う。
【００７９】
Ｍ個の非圧縮コード全てについて、ステップＳ３以降の処理を完了した場合に（ステップＳ２：ＹＥＳ）、制御部１１０は、記憶装置２０の圧縮コード用の領域２２に配置されている各圧縮コードを、ＲＯＭ１０に書き込むよう書込装置３０に指示し（ステップＳ１０）、配置決定処理を終了する。
【００８０】
なお、書込装置３０は、制御部１１０からのこの指示に従って、圧縮コード用の領域２２に配置されている各圧縮コードを、この配置のままＲＯＭ１０に書き込むことになる。
【００８１】
＜４−２．配置決定処理の具体例＞
上述した配置決定装置１００の配置決定処理について、図３に示す例を用いて、図４に示すフローチャートに即して具体的に説明する。
【００８２】
（１）非圧縮コードＡ１についての処理
まず、配置決定装置１００における制御部１１０は、処理対象の非圧縮コードの非圧縮ブロック内アドレス値ＡＤＤＲ＿ａを「０」に初期化する（ステップＳ１）。
【００８３】
この例では、Ｍ個の非圧縮コード全てについて、ステップＳ３以降の処理を完了していないので（ステップＳ２：ＮＯ）、制御部１１０は、アドレス値ＡＤＤＲ＿ａ（０）が示す記憶装置２０の非圧縮コード用の領域２１内の位置に格納されている非圧縮コード（Ａ１）を、アクセス部１０１を介して読み出す（ステップＳ３）。
【００８４】
制御部１１０は、読み出した非圧縮コード（Ａ１）を圧縮部１０２に送出し、圧縮部１０２は、受領した非圧縮コード（Ａ１）を圧縮し、圧縮コード（Ａ１０）及びその圧縮コードのデータ長を示すデータ長情報を、制御部１１０に送出する（ステップＳ４）。
【００８５】
制御部１１０の第１決定部１１１は、アドレス値ＡＤＤＲ＿ａ（０）に第１演算（数１参照）を施す（ステップＳ５）。この第１演算の結果値ａｄｄｒ＿ａ１は、アドレス値ＡＤＤＲ＿ａ（０）／２で「０」になる。
【００８６】
この例では、圧縮部１０２から受領したデータ長情報が示すデータ長は、Ｘａビット以下である（ステップＳ６：ＮＯ）。従って、制御部１１０は、図３（ｂ）に示すように、フラグ（０）とステップＳ４で受領した圧縮コード（Ａ１０）とを、ステップＳ５の第１演算の結果値ａｄｄｒ＿ａ１（０）が示す記憶装置２０の圧縮コード用の領域２２内の位置にアクセス部１０１を介して書き込む（ステップＳ８）。
【００８７】
制御部１１０は、アドレス値ＡＤＤＲ＿ａを、１加算した値（１）に更新し（ステップＳ９）、再びステップＳ２から処理を行う。
【００８８】
（２）非圧縮コードＢ１について
非圧縮コードＢ１を圧縮した圧縮コードＢ１０についても、上記圧縮コードＡ１０と同様に処理されるため（ステップＳ２〜Ｓ６、Ｓ８、Ｓ９）、詳細な説明は省略するが、ステップＳ５の第１演算の結果値ａｄｄｒ＿ａ１は、アドレス値ＡＤＤＲ＿ａ（１）／２で「１／２」になる。また、図３（ａ）の例では、圧縮コードＢ１０のデータ長は、Ｘａビット以下である。
【００８９】
従って、図３（ｂ）に示すように、フラグ（０）とステップＳ４で受領した圧縮コード（Ｂ１０）とが、第１演算の結果値ａｄｄｒ＿ａ１（１／２）が示す記憶装置２０の圧縮コード用の領域２２内の位置に配置されることになる。
【００９０】
（３）非圧縮コードＣ１について
この例では、Ｍ個の非圧縮コード全てについて、ステップＳ３以降の処理を完了していないので（ステップＳ２：ＮＯ）、制御部１１０は、アドレス値ＡＤＤＲ＿ａ（２）が示す記憶装置２０の非圧縮コード用の領域２１内の位置に格納されている非圧縮コード（Ｃ１）を、アクセス部１０１を介して読み出す（ステップＳ３）。
【００９１】
制御部１１０は、読み出した非圧縮コード（Ｃ１）を圧縮部１０２に送出し、圧縮部１０２は、受領した非圧縮コード（Ｃ１）を圧縮し、圧縮コード（Ｃ１０）及びその圧縮コードのデータ長を示すデータ長情報を、制御部１１０に送出する（ステップＳ４）。
【００９２】
制御部１１０の第１決定部１１１は、アドレス値ＡＤＤＲ＿ａ（２）に第１演算（数１参照）を施す（ステップＳ５）。この第１演算の結果値ａｄｄｒ＿ａ１は、アドレス値ＡＤＤＲ＿ａ（２）／２で「１」になる。
【００９３】
この例では、圧縮部１０２から受領したデータ長情報が示すデータ長は、Ｘａビットより大きい（ステップＳ６：ＹＥＳ）。従って、制御部１１０の第２決定部１１２は、アドレス値ＡＤＤＲ＿ａに第２演算を施す（ステップＳ７）。この第２演算の結果値ａｄｄｒ＿ａ２は、Ｍ／２＋Ｒｏｕｎｄ1/2（ＡＤＤＲ＿ａ（２）／４）で、「Ｍ／２＋１／２」になる。
【００９４】
続いて、制御部１１０は、図３（ｂ）に示すように、フラグ（１）とステップＳ４で受領した圧縮コード（Ｃ１０）のＸａビット分（Ｃ１１）とを、ステップＳ５の第１演算の結果値ａｄｄｒ＿ａ１（１）が示す記憶装置２０の圧縮コード用の領域２２内の位置にアクセス部１０１を介して書き込む。また、制御部１１０は、図３（ｂ）に示すように、ステップＳ４で受領した圧縮コード（Ｃ１０）からＸａビット分を除いた残り（Ｃ１２）を、ステップＳ７の第２演算の結果値ａｄｄｒ＿ａ２（Ｍ／２＋１／２）が示す圧縮コード用の領域２２内の位置にアクセス部１０１を介して書き込む（ステップＳ８）。
【００９５】
ステップＳ８の処理を完了すると、制御部１１０は、アドレス値ＡＤＤＲを、１加算した値（３）に更新し（ステップＳ９）、再びステップＳ２から処理を行う。
【００９６】
（４）非圧縮コードＤ１について
非圧縮コードＤ１を圧縮した圧縮コードＤ１０についても、上記圧縮コードＢ１０と同様に処理され、図３（ｂ）に示すように、フラグ（０）とステップＳ４で受領した圧縮コード（Ｄ１０）とが、第１演算の結果値ａｄｄｒ＿ａ１（３／２）が示す記憶装置２０の圧縮コード用の領域２２内の位置に配置されることになる。
【００９７】
＜４−３．アクセス処理＞
次に、アクセス装置２００のアクセス処理について説明する。
【００９８】
図５は、アクセス装置２００のアクセス処理を示すフローチャートである。
【００９９】
まず、アクセス装置２００における制御部２１０は、入力部２０１を介して、プロセッサ４０から、所望する非圧縮コードのアドレス値ＡＤＤＲ＿ｂを受け付ける（ステップＳ１１：ＹＥＳ）。
【０１００】
制御部２１０の第１特定部２１１は、アドレス値ＡＤＤＲ＿ｂに第１演算（数３参照）を施し（ステップＳ１２）、制御部２１０は、読出部２０２を介して、第１演算の結果値ａｄｄｒ＿ｂ１が示すＲＯＭ１０の第１領域ａｒｅａ１内の位置から第１データを読み出す（ステップＳ１３）。
【０１０１】
制御部２１０は、読み出した第１データのフラグの値に基づいて、圧縮コードのデータ長がＸａビットより大きいか否かを判定する（ステップＳ１４）。
【０１０２】
フラグの値が「０」の場合に、制御部２１０は、圧縮コードのデータ長がＸａビット以下であると判定し（ステップＳ１４：ＮＯ）、制御部２１０の出力部２１３は、読み出した第１データに含まれている圧縮コードを伸長部２０３に出力する（ステップＳ１７）。
【０１０３】
一方、フラグの値が「１」の場合に、制御部２１０は、圧縮コードのデータ長がＸａビットより大きいと判定し（ステップＳ１４：ＹＥＳ）、制御部２１０の第２特定部２１２は、アドレス値ＡＤＤＲ＿ｂに第２演算を施す（ステップＳ１５）。制御部２１０は、読出部２０２を介して、第２演算の結果値ａｄｄｒ＿ｂ２が示すＲＯＭ１０の第２領域ａｒｅａ２内の位置から第２データを読み出す（ステップＳ１６）。制御部２１０の出力部２１３は、読み出した第１データに含まれている圧縮コードのうちのＸａビット分と第２データとからなる圧縮コードを伸長部２０３に出力する（ステップＳ１７）。
【０１０４】
ステップＳ１７の処理を完了すると、伸長部２０３は、出力された圧縮コードを伸長し（ステップＳ１８）、非圧縮コードをプロセッサ４０に送出し（ステップＳ１９）、アクセス処理を終了する。
【０１０５】
＜４−４．アクセス処理の具体例＞
上述したアクセス装置２００のアクセス処理について、図３に示す例を用いて、図５に示すフローチャートに即して具体的に説明する。
【０１０６】
以下では、プロセッサ４０から、所望する非圧縮コードＣ１のアドレス値ＡＤＤＲ＿ｂ「２」を受領した場合を例にアクセス装置２００のアクセス処理を説明する。
【０１０７】
アクセス装置２００における制御部２１０は、入力部２０１を介して、プロセッサ４０から、所望する非圧縮コード（Ｃ１）のアドレス値ＡＤＤＲ＿ｂ（２）を受け付ける（ステップＳ１１）。
【０１０８】
制御部２１０の第１特定部２１１は、アドレス値ＡＤＤＲ＿ｂ（２）に第１演算（数３参照）を施す（ステップＳ１２）。この第１演算の結果値ａｄｄｒ＿ｂ１は、アドレス値ＡＤＤＲ＿ｂ（２）／２で「１」になる。
【０１０９】
制御部２１０は、読出部２０２を介して、第１演算の結果値ａｄｄｒ＿ｂ１（１）が示すＲＯＭ１０の第１領域ａｒｅａ１内の位置から第１データ（フラグ「１」とデータＣ１１）を読み出す（ステップＳ１３）。
【０１１０】
この例では、フラグの値が「１」なので、制御部２１０は、圧縮コードのデータ長がＸａビットより大きいと判定し（ステップＳ１４：ＹＥＳ）、制御部２１０の第２特定部２１２は、アドレス値ＡＤＤＲ＿ｂに第２演算を施す（ステップＳ１５）。この第２演算の結果値ａｄｄｒ＿ｂ２は、Ｍ／２＋Ｒｏｕｎｄ1/2（ＡＤＤＲ＿ｂ（２）／４）で、「Ｍ／２＋１／２」になる。
【０１１１】
制御部２１０は、読出部２０２を介して、第２演算の結果値ａｄｄｒ＿ｂ２（Ｍ／２＋１／２）が示すＲＯＭ１０の第２領域ａｒｅａ２内の位置から第２データ（Ｃ１２）を読み出す（ステップＳ１６）。制御部２１０の出力部２１３は、読み出した第１データに含まれる圧縮コードのＸａビット分（Ｃ１１）及び第２データ（Ｃ１２）からなる圧縮コードを伸長部２０３に出力する（ステップＳ１７）。
【０１１２】
ステップＳ１７の処理を完了すると、伸長部２０３は、出力された圧縮コードを伸長し（ステップＳ１８）、非圧縮コード（Ｃ１）をプロセッサ４０に送出し（ステップＳ１９）、アクセス処理を終了する。
【０１１３】
＜５．考察＞
実施の形態１に係る配置決定装置１００によれば、アドレス変換テーブルを用いることなく、各圧縮コードのＲＯＭ１０上の配置の決定できると共に、一定条件下で、各圧縮コードを配置するＲＯＭ１０上の領域ａｒｅａ０の容量削減に利用できる。
【０１１４】
アドレス値ＡＤＤＲ＿ａが「２×ｊ」及び「２×ｊ＋１」（但し、ｊ＝０，１，・・・Ｍ／２）である２つの非圧縮コードを圧縮した各圧縮コードが共に特定圧縮コードでないことを条件に、各圧縮コードのＲＯＭ１０上の格納領域ａｒｅａ０（図３（ｂ）参照）の容量は、以下のようになる。
【０１１５】
即ち、格納領域ａｒｅａ０の容量は、第１領域ａｒｅａ１の容量（Ｍ×Ｎ／２ビット）＋第２領域ａｒｅａ２の容量（Ｍ×Ｎ／４ビット）＝Ｍ×Ｎ×３／４ビットとなる。
【０１１６】
つまり、アドレス変換テーブルを使わない方法として最も簡単な方法は、Ｍ個の圧縮コードそれぞれをＲＯＭ１０上のＮビットの領域にそのままに配置することが考えられるが、この場合の格納領域の容量Ｍ×Ｎと比較し、実施の形態１に係る配置決定装置１００によれば、２５％の容量削減が可能になる。
【０１１７】
また、実施の形態１に係るアクセス装置２００についても同様に、アドレス変換テーブルを用いることなく、所定の演算（第１演算及び第２演算）を用いて対象圧縮コードの位置の特定を行うことができる。
【０１１８】
≪変形例１≫
実施の形態１では、アクセス装置２００の制御部２１０の機能は、アクセス装置２００のメモリに格納されたプログラムを、アクセス装置２００が備えるプロセッサが実行することで実現するものとして説明したが、以下では、比較的簡単な構成の回路で実現するように変形した例を説明する。
【０１１９】
図６は、変形例１に係るアクセス装置の制御回路２１０ａの回路構成を示す図である。
【０１２０】
なお、同図では、入力部２０１を介してプロセッサ４０から入力されるアドレス値を、「ＡＤＤＲ」と表記し、読出部２０２を介してＲＯＭ１０に送出されるアドレス値を「ａｄｄｒ」と表記し、ＡＤＤＲ及びａｄｄｒは１６ビットである例を示している。また、同図では、Ｎが１６ビットであり、ＲＯＭ１０が１６ビットのａｄｄｒに対して１６ビットのｄａｔａを出力する例を示している。これらについては、後述する変形例２についても同様である。
【０１２１】
同図に示すように、変形例１に係るアクセス装置の制御回路２１０ａは、セレクタ２１４ａ〜２１４ｅと、ＡＮＤ回路２１５と、Ｄフリップフロップ２１６ａ〜２１６ｃとを含んで構成される回路である。プロセッサ４０からアドレス値ＡＤＤＲが入力されてから１あるいは２ｃｙｃｌｅ後において、後述するＮＤＡＴＡ＿ＥＮＡＢＬＥが「０」である場合に、この制御回路２１０ａから出力されているＤＡＴＡを、伸長部２０３は、有効な圧縮コードとして取得し伸長することになる。
【０１２２】
ここで、セレクタ２１４ａ〜２１４ｄは、「０」側と「１」側の２つの入力のうち、ＮＤＡＴＡ＿ＥＮＡＢＬＥと同値となる側の入力を選択するものである。また、セレクタ２１４ｅは、後述するｂｙｔｅ＿ｓｅｌｅｃｔと同値となる側の入力を選択するものである。
【０１２３】
入力部２０１を介してプロセッサ４０からアドレス値ＡＤＤＲが入力される時点において、各セレクタ（２１４ａ〜２１４ｅ）は、「０」側の入力を選択しているものとする。
【０１２４】
以下では、プロセッサ４０から、アドレス値ＡＤＤＲとして、図３（ａ）に示す非圧縮コードＣ１のアドレス値（２）が入力された場合を例に、制御回路２１０ａの動作を具体的に説明する。
【０１２５】
（１）第１データの読み出し
入力部２０１を介してプロセッサ４０から、０〜１５ビット目までの１６ビットからなるアドレス値ＡＤＤＲ［１５：０］＝‘０・・・０１０’ｂ＝２が入力された時に、セレクタ２１４ａでは、「０」側の入力が選択されている。
【０１２６】
従って、このアドレス値ＡＤＤＲの１ビット目から１５ビット目まで（ＡＤＤＲ［１５：１］）と、最上位ビット「０」とからなる１６ビットのアドレス値｛０，ＡＤＤＲ［１５：１］｝＝‘０・・・００１’ｂ＝１がセレクタ２１４ａからａｄｄｒ［１５：０］として出力される。
【０１２７】
このａｄｄｒ［１５：０］に対して、ＲＯＭ１０は、図３（ｂ）のａｄｄｒ「１」に配置されている１６ビットデータの上位８ビットのｄａｔａ［１５：８］と下位８ビットのｄａｔａ［７：０］とを出力する。
【０１２８】
この図３（ｂ）の例では、ｄａｔａ［１５：８］はフラグ「０」及びＤ１０を含む８ビットデータであり、ｄａｔａ［７：０］は、フラグ「１」及びＣ１１からなる８ビットデータである。
【０１２９】
また、セレクタ２１４ｂでは、「０」側の入力が選択されている。従って、プロセッサからのアドレス値ＡＤＤＲの０ビット目（ＡＤＤＲ［０］）＝‘０’ｂが、セレクタ２１４ｂからｂｙｔｅ＿ｓｅｌｅｃｔとして出力される。
【０１３０】
従って、セレクタ２１４ｅからは、ｄａｔａ［７：０］（Ｃ１１を含む）がｄａｔａ＿ｓｅｌ［７：０］として出力される。
【０１３１】
この例では、ｄａｔａ＿ｓｅｌ［７：０］の０ビット目（ｄａｔａ＿ｓｅｌ［０］）は、フラグ「１」であり、ＮＤＡＴＡ＿ＥＮＡＢＬＥは「０」である。従って、ＡＮＤ回路２１５からは「１」が出力され、Ｄフリップフロップ２１６ａに入力される。
【０１３２】
また、セレクタ２１４ｃでは、「０」側の入力が選択されている。従って、ｄａｔａ＿ｓｅｌ［７：０］の１ビット目から７ビット目（ｄａｔａ＿ｓｅｌ［７：１］）がセレクタ２１４ｃから出力され、Ｄフリップフロップ２１６ｂに入力される。
【０１３３】
また、セレクタ２１４ｄでは、「０」側の入力が選択されている。従って、ａｌｌ  ０（９ビットが全て０）がセレクタ２１４ｄから出力され、Ｄフリップフロップ２１６ｃに入力される。
【０１３４】
Ｄフリップフロップ２１６ａ〜２１６ｃにクロックの入力があると、Ｄフリップフロップ２１６ａからは「１」がＮＤＡＴＡ＿ＥＮＡＢＬＥとして出力され、Ｄフリップフロップ２１６ｂからはｄａｔａ＿ｓｅｌ［７：１］（Ｃ１１）がＤＡＴＡ［６：０］として出力される。また、Ｄフリップフロップ２１６ｃからはａｌｌ  ０（９ビットが全て０）がＤＡＴＡ［１５：７］として出力される。
【０１３５】
なお、この例においては、このタイミング（プロセッサ４０からアドレス値ＡＤＤＲが入力されてから１ｃｙｃｌｅ後）では、ＮＤＡＴＡ＿ＥＮＡＢＬＥが「１」であるため、伸長部２０３によるＤＡＴＡの伸長はまだ行われない。
【０１３６】
（２）第２データの読み出し
上述の通り、ＮＤＡＴＡ＿ＥＮＡＢＬＥが「１」となったため、セレクタ２１４ａ〜２１４ｄでは、「１」側の入力が選択されることになる。
【０１３７】
従って、プロセッサ４０からのアドレス値ＡＤＤＲの２ビット目から１５ビット目まで（ＡＤＤＲ［１５：２］）と、上位２ビット「１０」とからなる１６ビットのアドレス値｛１０，ＡＤＤＲ［１５：２］｝＝‘１０・・・０’ｂ＝２15がセレクタ２１４ａからａｄｄｒ［１５：０］として出力される。
【０１３８】
このａｄｄｒ［１５：０］に対して、ＲＯＭ１０は、図３（ｂ）のａｄｄｒ「Ｍ／２」に配置されている１６ビットデータの上位８ビットのｄａｔａ［１５：８］と下位８ビットのｄａｔａ［７：０］とを出力する。
【０１３９】
また、セレクタ２１４ｂからは、プロセッサからのアドレス値ＡＤＤＲの１ビット目（ＡＤＤＲ［１］）＝‘１’ｂがｂｙｔｅ＿ｓｅｌｅｃｔとして出力される。
【０１４０】
従って、セレクタ２１４ｅからは、ｄａｔａ［１５：８］（Ｃ１２を含む）がｄａｔａ＿ｓｅｌ［７：０］として出力される。
【０１４１】
ＮＤＡＴＡ＿ＥＮＡＢＬＥは「１」であるため、ＡＮＤ回路２１５からは「０」が出力され、Ｄフリップフロップ２１６ａに入力される。また、セレクタ２１４ｃからは、ＤＡＴＡ［６：０］（圧縮コードＣ１０の７ビット分であるＣ１１）が出力され、Ｄフリップフロップ２１６ｂに入力される。また、セレクタ２１４ｄからは、ｄａｔａ＿ｓｅｌ［７：０］（Ｃ１２を含む）と、最上位ビット「０」とからなる９ビットのデータが出力され、Ｄフリップフロップ２１６ｃに入力される。
【０１４２】
Ｄフリップフロップ２１６ａ〜２１６ｃにクロックの入力があると、Ｄフリップフロップ２１６ａからは「０」がＮＤＡＴＡ＿ＥＮＡＢＬＥとして出力され、Ｄフリップフロップ２１６ｂからは圧縮コードＣ１０の７ビット分であるＣ１１がＤＡＴＡ［６：０］として出力される。また、Ｄフリップフロップ２１６ｃからは圧縮コードＣ１０からＣ１１を除いた残りのデータであるＣ１２を含むデータがＤＡＴＡ［１５：７］として出力される。
【０１４３】
なお、この例においては、このタイミング（プロセッサ４０からアドレス値ＡＤＤＲが入力されてから２ｃｙｃｌｅ後）で、ＮＤＡＴＡ＿ＥＮＡＢＬＥが「０」である。従って、この制御回路２１０ａから出力されたＤＡＴＡ（ＤＡＴＡ［６：０］及びＤＡＴＡ［１５：７］）が伸長部２０３により取得されて、伸長が行われることになる。
【０１４４】
≪実施の形態２≫
以下では、実施の形態１で説明した第２演算の内容を変更した例を、実施の形態１との相違点を中心に説明する。
【０１４５】
＜１．機能構成＞
図７は、実施の形態２に係る配置決定装置１２０の主要部の機能構成を示すブロック図であり、図８は、実施の形態２に係るアクセス装置２２０の主要部の機能構成を示すブロック図である。
【０１４６】
図７に示すように、配置決定装置１２０は、実施の形態１に係る配置決定装置１００の制御部１１０に代えて、制御部１３０を備え、この制御部１３０は、実施の形態１に係る制御部１１０の第２決定部１１２に代えて、第２決定部１３１を含む点で、配置決定装置１００とは異なる。
【０１４７】
また、図８に示すように、アクセス装置２２０は、実施の形態１に係るアクセス装置２００の制御部２１０に代えて、制御部２３０を備え、この制御部２３０は、実施の形態１に係る制御部２１０の第２特定部２１２に代えて、第２特定部２３１を含む点で、アクセス装置２００とは異なる。
【０１４８】
具体的には、配置決定装置１２０の第２決定部１３１及びアクセス装置２２０の第２特定部２３１は、アドレス値ＡＤＤＲ＿ａ及びアドレス値ＡＤＤＲ＿ｂを数５に示すように表した場合において、数６〜８で示すいずれかの演算を第２演算として行う点で、第２決定部１１２及び第２特定部２１２とは異なる。
【０１４９】
［数５］
ＡＤＤＲ＿ａ＝ＡＤＤＲ＿ｂ＝４×ｊ＋ｋ
但し、ｊ＝０，１，・・・，Ｍ／４−１、ｋ＝０，１，２，３
［数６］
ａｄｄｒ＿ａ２＝ａｄｄｒ＿ｂ２＝Ｍ／２＋ｊ
［数７］
ａｄｄｒ＿ａ２＝ａｄｄｒ＿ｂ２＝Ｍ／２＋ｊ＋１／２
［数８］
ａｄｄｒ＿ａ２＝ａｄｄｒ＿ｂ２＝３×Ｍ／４＋ｊ／２
＜２．データ＞
図９（ａ）は、Ｍ個のＮビットの非圧縮コードそれぞれを圧縮した結果例を示す図である。
【０１５０】
図９（ａ）では、ＡＤＤＲが「０」〜「３」である非圧縮コードＡ２〜Ｄ２を圧縮した結果、圧縮コードＡ２０〜Ｄ２０が得られ、圧縮コードＡ２０、Ｃ２０、Ｄ２０のデータ長が、Ｎ／２−２ビットより大きいことを示している。
【０１５１】
また、図９（ｂ）は、各圧縮コード（Ａ２０〜Ｄ２０）のＲＯＭ１０への配置例を示す図である。
【０１５２】
各圧縮コードが配置されるＲＯＭ１０内の領域ａｒｅａ１０は、第１領域ａｒｅａ１１と第２領域ａｒｅａ１２とからなる。
【０１５３】
ここで、第１領域ａｒｅａ１１は、実施の形態１に係る第１領域ａｒｅａ１と同様、各圧縮コードについての第１データが配置される領域であるが、第１データが圧縮コードのうちのＸｂビット（Ｘｂ＜Ｎであり、この例では、Ｎ／２−２、つまり６ビットとする）分と２ビットのフラグとからなる点で、第１領域ａｒｅａ１とは異なる。
【０１５４】
ここで、２ビットのフラグは、圧縮コードのデータ長がＸｂビットより大きいか否かを示すと共に、Ｘｂビットより大きい場合に、圧縮コードからＸｂビット分を除いた残りが、数６〜数８の結果値が示す３つの位置のうちのいずれの位置に配置されているかをも示すものである。
【０１５５】
この例では、圧縮コードのデータ長がＸｂビット以下である場合のフラグの値を「００」に設定し、圧縮コードのデータ長がＸｂビットより大きい場合には、以下のようにフラグの値を設定するものとする。即ち、数６の演算が用いられた場合には「１０」に、数７の演算が用いられた場合には「１１」に、数８が用いられた場合には「０１」にそれぞれ設定するものとする。
【０１５６】
第２領域ａｒｅａ１２は、実施の形態１に係る第１領域ａｒｅａ２と同様、各圧縮コードのうちデータ長がＸｂビットより大きい特定圧縮コードの第２データが配置される領域である。なお、実施の形態１では、各圧縮コードのうちデータ長がＸａビットより大きい圧縮コードを特定圧縮コードと呼んでいたが、実施の形態２では、データ長がＸｂビットより大きい圧縮コードを特定圧縮コードと呼ぶ。
【０１５７】
図９（ａ）の例では、圧縮コードＡ２０、Ｃ２０、Ｄ２０のデータ長はＮ／２−２より大きく、圧縮コードＢ２０のデータ長はＮ／２−２以下である。
【０１５８】
従って、図９（ｂ）の例では、圧縮コードＡ２０、Ｃ２０及びＤ２０がそれぞれ、ＲＯＭ１０の第１領域ａｒｅａ１１内と、第２領域ａｒｅａ１２内とに分割して配置されている。なお、数６〜８を用いた第２データの配置決定方法については、以下の＜３．動作＞の＜３−１．配置決定処理＞及び＜３−２．配置決定処理の具体例＞において詳しく説明する。
【０１５９】
＜３．動作＞
次に、配置決定装置１２０及びアクセス装置２２０の動作について説明する。
【０１６０】
＜３−１．配置決定処理＞
まずは、配置決定装置１２０の配置決定処理について説明する。
【０１６１】
図１０は、配置決定装置１２０の配置決定処理を示すフローチャートである。
【０１６２】
同図に示すように、配置決定装置１２０の配置決定処理は、図４に示す実施の形態１に係る配置決定装置１００の配置決定処理のうちのステップＳ６〜Ｓ８の処理に代えて、ステップＳ３１〜Ｓ３３の処理を含む点で、配置決定装置１００の配置決定処理とは異なる。従って、以下では、ステップＳ３１〜Ｓ３３の処理を中心に説明する。
【０１６３】
ステップＳ１〜Ｓ５の処理を完了すると、制御部１３０は、ステップＳ４で圧縮部１０２から受領したデータ長情報が示すデータ長がＸｂビット（この例では、Ｎ／２−２ビット）より大きいか否かを判定する（ステップＳ３１）。
【０１６４】
図４に示すステップＳ６では、Ｘａビット（Ｎ／２−１ビット）との比較を行っていたが、実施の形態２に係る第１データに含まれるフラグは２ビットであるため、ステップＳ３１では、Ｘｂビット（Ｎ／２−２ビット）より大きいかを判定している。
【０１６５】
圧縮部１０２から受領したデータ長情報が示すデータ長がＸｂビット以下である場合に（ステップＳ３１：ＮＯ）、制御部１３０は、２ビットのフラグとステップＳ４で受領した圧縮コードとを、ステップＳ５の第１演算の結果値ａｄｄｒ＿ａ１が示す記憶装置２０の圧縮コード用の領域２２内の位置にアクセス部１０１を介して書き込む（ステップＳ３３）。このときのフラグは、圧縮コードのデータ長がＸｂビット以下であることを示すように「００」に設定される。
【０１６６】
一方、圧縮部１０２から受領したデータ長情報が示すデータ長がＸｂビットより大きい場合に（ステップＳ３１：ＹＥＳ）、制御部１３０の第２決定部１３１は、アドレス値ＡＤＤＲ＿ａに第２演算を施す（ステップＳ３２）。
【０１６７】
即ち、ｊの値が共通する「４×ｊ」、「４×ｊ＋１」、「４×ｊ＋２」及び「４×ｊ＋３」となる連続する４つのアドレス値ＡＤＤＲ＿ａ（但し、ｊ＝０，１，・・・，Ｍ／４−１）を１組として、数６〜８に示す各演算のうち、同じ組に含まれる他のアドレス値について選択されてない演算を行う。ここでは、一例として、数６、数７、数８の順で選択するものとする。詳細は、＜３−２．配置決定処理の具体例＞にて説明する。
【０１６８】
続いて、制御部１３０は、２ビットのフラグとステップＳ４で受領した圧縮コードのＸｂビット分を、ステップＳ５の第１演算の結果値ａｄｄｒ＿ａ１が示す記憶装置２０の圧縮コード用の領域２２内の位置にアクセス部１０１を介して書き込む。このときのフラグは、ステップＳ３２で用いられた演算が、数６〜数８のいずれであるかに応じて設定される。つまり、数６の演算が用いられた場合には「１０」に、数７の演算が用いられた場合には「１１」に、数８が用いられた場合には「０１」に設定される。
【０１６９】
また、制御部１３０は、ステップＳ４で受領した圧縮コードからＸｂビット分を除いた残りを、ステップＳ３２の第２演算の結果値ａｄｄｒ＿ａ２が示す圧縮コード用の領域２２内の位置にアクセス部１０１を介して書き込み（ステップＳ３３）、ステップＳ９の処理に進む。
【０１７０】
＜３−２．配置決定処理の具体例＞
上述した配置決定装置１２０の配置決定処理について、図９に示す例を用いて、図１０に示すステップＳ３１〜Ｓ３３の処理内容を具体的に説明する。
【０１７１】
（１）非圧縮コードＡ２についての処理
この例では、非圧縮コードＡ２を圧縮した圧縮コードＡ２０のデータ長はＸｂビットより大きく（ステップＳ３１：ＹＥＳ）、非圧縮コードＡ２のアドレス値ＡＤＤＲ＿ａは「４×ｊ」（但しｊ＝０）である。従って、制御部１３０の第２決定部１３１は、数６に示す演算を第２演算として実行する（ステップＳ３２）。この第２演算の結果値ａｄｄｒ＿ａ２は、「Ｍ／２」になる。
【０１７２】
続いて、制御部１３０は、図９（ｂ）に示すように、２ビットフラグ（１０）とステップＳ４で受領した圧縮コード（Ａ２０）のＸｂビット分（Ａ２１）を、ステップＳ５の第１演算の結果値ａｄｄｒ＿ａ１（０）が示す記憶装置２０の圧縮コード用の領域２２内の位置にアクセス部１０１を介して書き込む。また、制御部１３０は、図９（ｂ）に示すように、ステップＳ４で受領した圧縮コード（Ａ２０）からＸｂビット分を除いた残り（Ａ２２）を、ステップＳ３２の第２演算の結果値ａｄｄｒ＿ａ２（Ｍ／２）が示す圧縮コード用の領域２２内の位置にアクセス部１０１を介して書き込む（ステップＳ３３）。
【０１７３】
（２）非圧縮コードＢ２についての処理
この例では、非圧縮コードＢ２を圧縮した圧縮コードＢ２０のデータ長はＸｂビット以下である（ステップＳ３１：ＮＯ）。従って、制御部１３０は、図９（ｂ）に示すように、２ビットのフラグ（００）とステップＳ４で受領した圧縮コードとを、ステップＳ５の第１演算の結果値ａｄｄｒ＿ａ１（１／２）が示す記憶装置２０の圧縮コード用の領域２２内の位置にアクセス部１０１を介して書き込む（ステップＳ３３）。
【０１７４】
（３）非圧縮コードＣ２についての処理
非圧縮コードＣ２を圧縮した圧縮コードＣ２０についても、上記圧縮コードＡ２０と同様に処理されるため（ステップＳ２〜Ｓ５、Ｓ３１〜Ｓ３３、Ｓ９）、詳細な説明は省略するが、ステップＳ５の第１演算の結果値ａｄｄｒ＿ａ１は、「１」になる。
【０１７５】
また、ステップＳ３２では、数７に示す演算が実行され、第２演算の結果値ａｄｄｒ＿ａ２は、「Ｍ／２＋１／２」になる。ここで、数７に示す演算が実行されるのは、既に同じ組に属する圧縮コードＡ２０で数６に示す演算が用いられているためである。
【０１７６】
続いて、制御部１３０は、図９（ｂ）に示すように、２ビットフラグ（１１）とステップＳ４で受領した圧縮コード（Ｃ２０）のＸｂビット分（Ｃ２１）を、ステップＳ５の第１演算の結果値ａｄｄｒ＿ａ１（１）が示す記憶装置２０の圧縮コード用の領域２２内の位置にアクセス部１０１を介して書き込む。また、制御部１３０は、図９（ｂ）に示すように、ステップＳ４で受領した圧縮コード（Ｃ２０）からＸｂビット分を除いた残り（Ｃ２２）を、ステップＳ３２の第２演算の結果値ａｄｄｒ＿ａ２（Ｍ／２＋１／２）が示す圧縮コード用の領域２２内の位置にアクセス部１０１を介して書き込む（ステップＳ３３）。
【０１７７】
（４）非圧縮コードＤ２についての処理
非圧縮コードＤ２を圧縮した圧縮コードＤ２０についても、上記圧縮コードＡ２０と同様に処理され、特に、ステップＳ５の第１演算の結果値ａｄｄｒ＿ａ１は、「３／２」になる。
【０１７８】
また、ステップＳ３２では、数８に示す演算が実行され、第２演算の結果値ａｄｄｒ＿ａ２は、「３×Ｍ／４」になる。
【０１７９】
続いて、制御部１３０は、図９（ｂ）に示すように、２ビットフラグ（０１）とステップＳ４で受領した圧縮コード（Ｄ２０）のＸｂビット分（Ｄ２１）を、ステップＳ５の第１演算の結果値ａｄｄｒ＿ａ１（３／２）が示す記憶装置２０の圧縮コード用の領域２２内の位置にアクセス部１０１を介して書き込む。また、制御部１３０は、図９（ｂ）に示すように、ステップＳ４で受領した圧縮コード（Ｄ２０）からＸｂビット分を除いた残り（Ｄ２２）を、ステップＳ３２の第２演算の結果値ａｄｄｒ＿ａ２（３×Ｍ／４）が示す圧縮コード用の領域２２内の位置にアクセス部１０１を介して書き込む（ステップＳ３３）。
【０１８０】
＜３−３．アクセス処理＞
次に、アクセス装置２２０のアクセス処理について説明する。
【０１８１】
図１１は、アクセス装置２２０のアクセス処理を示すフローチャートである。
【０１８２】
同図に示すように、アクセス装置２２０のアクセス処理は、図５に示す実施の形態１に係るアクセス装置２００のアクセス処理のうち、ステップＳ１４、Ｓ１５及びＳ１７に代えて、ステップＳ４１〜Ｓ４３の処理を含む点で、このアクセス装置２００のアクセス処理と異なる。従って、以下では、ステップＳ４１〜Ｓ４３の処理について説明する。
【０１８３】
ステップＳ１１〜Ｓ１３の処理を完了すると、制御部２３０は、ステップＳ１３で読み出した第１データの２ビットのフラグの値に基づいて、圧縮コードのデータ長がＸｂビットより大きいか否かを判定する（ステップＳ４１）。
【０１８４】
フラグの値が「００」である場合に、制御部２３０は、圧縮コードのデータ長がＸｂビット以下であると判定し（ステップＳ４１：ＮＯ）、制御部２３０の出力部２１３は、読み出した第１データに含まれている圧縮コードを伸長部２０３に出力する（ステップＳ４３）。ステップＳ４３の処理を完了すると、アクセス装置２２０は、ステップＳ１８の処理に進む。
【０１８５】
一方、フラグの値が「００」以外である場合に、制御部２３０は、圧縮コードのデータ長がＸｂビットより大きいと判定し（ステップＳ４１：ＹＥＳ）、制御部２３０の第２特定部２３１は、アドレス値ＡＤＤＲ＿ｂに第２演算を施す（ステップＳ４２）。即ち、第２特定部２３１は、第２演算として、アドレス値ＡＤＤＲ＿ｂを数５に示すように表した場合において、数６〜数８に示す演算のうち、フラグの値に応じた演算を行う。
【０１８６】
つまり、フラグの値が「１０」である場合には数６の演算を、「１１」である場合には数７の演算を、「０１」である場合には数８の演算を行う。
【０１８７】
制御部２３０は、読出部２０２を介して、ＲＯＭ１０の第２領域ａｒｅａ１２内の第２演算の結果値ａｄｄｒ＿ｂ２が示す位置から第２データを読み出す（ステップＳ１６）。制御部２３０の出力部２１３は、読み出した第１データに含まれている圧縮コードのうちのＸｂビット分と第２データとからなる圧縮コードを伸長部２０３に出力する（ステップＳ４３）。ステップＳ４３の処理を完了すると、アクセス装置２２０は、ステップＳ１８の処理に進む。
【０１８８】
＜３−４．アクセス処理の具体例＞
上述したアクセス装置２２０のアクセス処理について、図９に示す例を用いて、図１１に示すＳ４１〜Ｓ４３の処理内容を具体的に説明する。
【０１８９】
以下では、プロセッサ４０から、所望する非圧縮コードＤ２のアドレス値ＡＤＤＲ＿ｂ「３」を受領した場合を例にアクセス装置２２０のアクセス処理を説明する。
【０１９０】
この例では、ステップＳ１３で読み出した第１データのフラグは「０１」であるため、制御部２３０は、圧縮コードのデータ長がＸｂビットより大きいと判定する（ステップＳ４１：ＹＥＳ）。
【０１９１】
制御部２３０の第２特定部２３１は、第２演算として、アドレス値ＡＤＤＲ＿ｂを数５に示すように表した場合において、数６〜数８に示す演算のうち、フラグの値に応じた演算を行う（ステップＳ４２）。この例では、非圧縮コードＤ２のアドレス値ＡＤＤＲ＿ｂは「４×ｊ＋３」（但しｊ＝０）であり、フラグは「０１」であるため、数８に示す演算を行い、この第２演算の結果値ａｄｄｒ＿ｂ２は、「３×Ｍ／４」になる。
【０１９２】
制御部２３０は、読出部２０２を介して、ＲＯＭ１０の第２領域ａｒｅａ１２内の第２演算の結果値ａｄｄｒ＿ｂ２（３×Ｍ／４）が示す位置から第２データ（Ｄ２１）を読み出す（ステップＳ１６）。制御部２３０の出力部２１３は、読み出した第１データからフラグを除いたデータ（Ｄ２１）及び第２データ（Ｄ２２）からなる圧縮コードを伸長部２０３に出力する（ステップＳ４３）。
【０１９３】
＜４．考察＞
実施の形態２に係る配置決定装置１２０によれば、実施の形態１に係る配置決定装置１００の場合よりも特定圧縮コードについての条件を緩和しつつも、各圧縮コードを配置するＲＯＭ１０上の領域ａｒｅａ１０の容量を削減できる。
【０１９４】
アドレス値ＡＤＤＲ＿ａが「４×ｊ」、「４×ｊ＋１」、「４×ｊ＋２」及び「４×ｊ＋３」（但し、ｊ＝０，１，・・・，Ｍ／４−１）である４つの非圧縮コードを圧縮した各圧縮コードが共に特定圧縮コードでないことを条件に、各圧縮コードのＲＯＭ１０上の格納領域ａｒｅａ１０（図９（ｂ）参照）の容量は、以下のようになる。
【０１９５】
即ち、格納領域ａｒｅａ１０の容量は、第１領域ａｒｅａ１１の容量（Ｍ×Ｎ／２ビット）＋第２領域ａｒｅａ１２の容量（Ｍ×Ｎ／４ビット＋Ｍ×Ｎ／８ビット）＝７×Ｍ×Ｎ／８ビットとなる。
【０１９６】
上述のように、実施の形態１に係る配置決定装置１００では、アドレス値ＡＤＤＲ＿ａが連続する２つの非圧縮コードに係る圧縮コードが共に特定圧縮コードでないことを条件に２５％の容量削減が可能であった。
【０１９７】
一方、実施の形態２に係る配置決定装置１２０によれば、アドレス値ＡＤＤＲ＿ａが連続する４つの非圧縮コードに係る圧縮コードが共に特定圧縮コードでないことを条件に、１２．５％の容量削減が可能である。
【０１９８】
≪変形例２≫
以下では、実施の形態２に係るアクセス装置２２０の制御部２３０を比較的簡単な構成の回路で実現するように変形した例を説明する。
【０１９９】
図１２は、変形例２に係るアクセス装置の制御回路２３０ａの回路構成を示す図である。
【０２００】
同図に示すように、変形例２に係るアクセス装置の制御回路２３０ａは、セレクタ２３２ａ〜２３２ｆと、Ｄフリップフロップ２３４ａ〜２３４ｃとを含んで構成される回路である。
【０２０１】
プロセッサ４０からアドレス値ＡＤＤＲが入力されてから１あるいは２ｃｙｃｌｅ後において、ＮＤＡＴＡ＿ＥＮＡＢＬＥ［１：０］が「００」である場合に、この制御回路２３０ａから出力されているＤＡＴＡを、伸長部２０３は、有効な圧縮コードとして取得し伸長することになる。
【０２０２】
なお、セレクタ２３２ａ及び２３２ｂは、「００」側と、「１１」側と、「０１」又は「１０」側との３つの入力のうち、ＮＤＡＴＡ＿ＥＮＡＢＬＥ［１：０］と同値となる側の入力を選択するものである。
【０２０３】
入力部２０１を介してプロセッサ４０からアドレス値ＡＤＤＲが入力される時点において、セレクタ２３２ａ〜２３２ｆは、「００」側の入力を選択しているものとする。
【０２０４】
以下では、プロセッサ４０から、図９（ａ）に示す非圧縮コードＤ２のアドレス値（３）が入力された場合を例に、制御回路２３０ａの動作を具体的に説明する。
【０２０５】
（１）第１データの読み出し
入力部２０１を介してプロセッサ４０から、アドレス値ＡＤＤＲ［１５：０］＝‘０・・・０１１’ｂ＝３が入力された時、セレクタ２３２ａでは、「００」側の入力が選択されているので、１６ビットのアドレス値｛０，ＡＤＤＲ［１５：１］｝＝‘０・・・００１’ｂ＝１がセレクタ２３２ａからａｄｄｒ［１５：０］として出力される。
【０２０６】
このａｄｄｒ［１５：０］に対して、ＲＯＭ１０では、図９（ｂ）のａｄｄｒ「１」に配置されている１６ビットデータが、ｄａｔａ［１５：８］及びｄａｔａ［７：０］として出力される。
【０２０７】
また、セレクタ２３２ｂでは、「００」側の入力が選択されているので、ＡＤＤＲ［０］＝１が、セレクタ２３２ｂからｂｙｔｅ＿ｓｅｌｅｃｔとして出力される。
【０２０８】
従って、セレクタ２３２ｅからは、ｄａｔａ［１５：８］（フラグ「０１」及びＤ２１）がｄａｔａ＿ｓｅｌ［７：０］として出力され、セレクタ２３２ｆでは、「００」側の入力が選択されているので、ｄａｔａ＿ｓｅｌ［１：０］（０１）がセレクタ２３２ｆから出力され、Ｄフリップフロップ２３４ａに入力される。
【０２０９】
また、セレクタ２３２ｃでは、「００」側の入力が選択されているので、ｄａｔａ＿ｓｅｌ［７：２］（Ｄ２１）がセレクタ２３２ｃから出力され、Ｄフリップフロップ２３４ｂに入力される。また、セレクタ２３２ｄでは、「００」側の入力が選択されているので、ａｌｌ  ０（１０ビットが全て０）がセレクタ２３２ｄから出力され、Ｄフリップフロップ２３４ｃに入力される。
【０２１０】
Ｄフリップフロップ２３４ａ〜２３４ｃにクロックの入力があると、Ｄフリップフロップ２３４ａからは「０１」がＮＤＡＴＡ＿ＥＮＡＢＬＥ［１：０］として出力され、Ｄフリップフロップ２３４ｂからはｄａｔａ［７：２］（Ｄ２１）がＤＡＴＡ［５：０］として出力される。また、Ｄフリップフロップ２３４ｃからはａｌｌ  ０（１０ビットが全て０）がＤＡＴＡ［１５：６］として出力される。
【０２１１】
なお、この例においては、このタイミング（プロセッサ４０からアドレス値ＡＤＤＲが入力されてから１ｃｙｃｌｅ後）では、ＮＤＡＴＡ＿ＥＮＡＢＬＥ［１：０］が「０１」であるため、伸長部２０３によるＤＡＴＡの伸長はまだ行われない。
【０２１２】
（２）第２データの読み出し
上述の通り、ＮＤＡＴＡ＿ＥＮＡＢＬＥ［１：０］が「０１」となったため、セレクタ２３２ａ及び２３２ｂは、「０１」側の入力が選択され、セレクタ２３２ｃ、２３２ｄ及び２３２ｆでは、「（ｎｏｔ）００」側の入力が選択されることになる。
【０２１３】
１６ビットのアドレス値｛１１０，ＡＤＤＲ［１５：３］｝＝‘１１０・・・０’ｂ＝２15＋２14がセレクタ２３２ａからａｄｄｒ［１５：０］として出力され、ＲＯＭ１０は、図９（ｂ）のａｄｄｒ「３×Ｍ／４」に配置されている１６ビットデータがｄａｔａ［１５：８］及びｄａｔａ［７：０］として出力される。
【０２１４】
また、セレクタ２３２ｂからは、ＡＤＤＲ［２］＝「０」がｂｙｔｅ＿ｓｅｌｅｃｔとして出力されるので、セレクタ２３２ｅからは、ｄａｔａ［７：０］（Ｄ２２を含む）がｄａｔａ＿ｓｅｌ［７：０］として出力される。
【０２１５】
ＮＤＡＴＡ＿ＥＮＡＢＬＥ［１：０］は「０１」であるため、セレクタ２３２ｆからはａｌｌ  ０（「００」）が出力され、Ｄフリップフロップ２３４ａに入力される。また、セレクタ２３２ｃからは、ＤＡＴＡ［５：０］（Ｄ２１）が出力され、Ｄフリップフロップ２３４ｂに入力される。また、セレクタ２３２ｄからは、｛００，ｄａｔａ＿ｓｅｌ［７：０］｝が出力され、Ｄフリップフロップ２３４ｃに入力される。
【０２１６】
Ｄフリップフロップ２３４ａ〜２３４ｃにクロックの入力があると、Ｄフリップフロップ２３４ａからは「００」がＮＤＡＴＡ＿ＥＮＡＢＬＥ［１：０］として出力され、Ｄフリップフロップ２３４ｂからはＤ２１がＤＡＴＡ［５：０］として出力される。また、Ｄフリップフロップ２３４ｃからは圧縮コードＤ２０からＤ２１を除いた残りのデータであるＤ２２を含むデータがＤＡＴＡ［１５：６］として出力される。
【０２１７】
なお、この例においては、このタイミング（プロセッサ４０からアドレス値ＡＤＤＲが入力されてから２ｃｙｃｌｅ後）で、ＮＤＡＴＡ＿ＥＮＡＢＬＥ［１：０］が「００」である。従って、この制御回路２１０ａから出力されたＤＡＴＡ（ＤＡＴＡ［５：０］及びＤＡＴＡ［１５：６］）が伸長部２０３により取得されて、伸長が行われることになる。
【０２１８】
≪実施の形態３≫
以下では、実施の形態１で説明した第１演算及び第２演算の内容を変更した例を、実施の形態１との相違点を中心に説明する。
【０２１９】
＜１．機能構成＞
図１３は、実施の形態３に係る配置決定装置１４０の主要部の機能構成を示すブロック図であり、図１４は、実施の形態３に係るアクセス装置２４０の主要部の機能構成を示すブロック図である。
【０２２０】
図１３に示すように、配置決定装置１４０は、実施の形態１に係る配置決定装置１００の制御部１１０に代えて、制御部１５０を備える。この制御部１５０は、実施の形態１に係る制御部１１０の第１決定部１１１及び第２決定部１１２に代えて、第１決定部１５１及び第２決定部１５２を含む点で、配置決定装置１００とは異なる。
【０２２１】
また、図１４に示すように、アクセス装置２４０は、実施の形態１に係るアクセス装置２００の制御部２１０に代えて、制御部２５０を備える。この制御部２５０は、実施の形態１に係る制御部２１０の第１特定部２１１及び第２特定部２１２に代えて、第１特定部２５１及び第２特定部２５２を含む点で、アクセス装置２００とは異なる。
【０２２２】
具体的には、配置決定装置１４０の第１決定部１５１及びアクセス装置２４０の第１特定部２５１は、アドレス値ＡＤＤＲ＿ａ及びアドレス値ＡＤＤＲ＿ｂを数５に示すように表した場合において、数９で示すｋの値に応じた演算を第１演算として行う点で、第１決定部１１１及び第１特定部２１１とは異なる。
【０２２３】
［数９］
ｋ＝０：ａｄｄｒ＿ａ１＝ａｄｄｒ＿ｂ１＝３×ｊ
ｋ＝１：ａｄｄｒ＿ａ１＝ａｄｄｒ＿ｂ１＝３×ｊ＋１／２
ｋ＝２：ａｄｄｒ＿ａ１＝ａｄｄｒ＿ｂ１＝３×ｊ＋２
ｋ＝３：ａｄｄｒ＿ａ１＝ａｄｄｒ＿ｂ１＝３×ｊ＋２＋１／２
但し、ｊ＝０，１，・・・，Ｍ／４−１
また、配置決定装置１４０の第２決定部１５２及びアクセス装置２４０の第２特定部２５２は、アドレス値ＡＤＤＲ＿ａ及びアドレス値ＡＤＤＲ＿ｂを数５に示すように表した場合において、数１０で示すｋの値に応じた演算を第２演算として行う点で、第２決定部１１２及び第２特定部２１２と異なる。
【０２２４】
［数１０］
ｋ＝０，１：ａｄｄｒ＿ａ２＝ａｄｄｒ＿ｂ２＝３×ｊ＋１
ｋ＝２，３：ａｄｄｒ＿ａ２＝ａｄｄｒ＿ｂ２＝３×ｊ＋１＋１／２
但し、ｊ＝０，１，・・・，Ｍ／４−１
＜２．データ＞
図１５（ａ）は、Ｍ個のＮビットの非圧縮コードそれぞれを圧縮した結果例を示す図である。
【０２２５】
同図では、ＡＤＤＲが「０」〜「７」である非圧縮コードＡ３〜Ｈ３を圧縮した結果、圧縮コードＡ３０〜Ｈ３０が得られ、圧縮コードＣ３０及びＥ３０のデータ長が、Ｎ／２−１ビットより大きいことを示している。
【０２２６】
また、図１５（ｂ）は、各圧縮コード（Ａ３０〜Ｈ３０）のＲＯＭ１０への配置例を示す図である。
【０２２７】
各圧縮コードが配置されるＲＯＭ１０内の領域ａｒｅａ２０は、ｊの値が共通する「４×ｊ」、「４×ｊ＋１」、「４×ｊ＋２」及び「４×ｊ＋３」となる連続する４つのアドレス値ＡＤＤＲ（但し、ｊ＝０，１，・・・，Ｍ／４−１）を１組として、組毎に第１領域と第２領域とを有する。
【０２２８】
例えば、「０」〜「３」となる連続する４つのアドレス値ＡＤＤＲからなる組の第１領域はａｒｅａ２１ａであり、第２領域はａｒｅａ２２ａである。また、例えば、「４」〜「７」となる連続する４つのアドレス値ＡＤＤＲからなる組の第１領域はａｒｅａ２１ｂであり、第２領域はａｒｅａ２２ｂである。
【０２２９】
なお、各第１領域（ａｒｅａ２１ａ、２１ｂ）は、実施の形態１に係る第１領域ａｒｅａ１と同様に、その組に対応する各圧縮コードの第１データを格納する領域である。また、各第２領域（ａｒｅａ２２ａ、２２ｂ）は、実施の形態１に係る第２領域ａｒｅａ２と同様に、その組に対応する各圧縮コードのうちデータ長がＸａビットより大きい特定圧縮コードの第２データが配置される領域である。
【０２３０】
図１５（ａ）の例では、圧縮コードＣ３０及びＥ３０のデータ長はＮ／２−１より大きい。従って、図１５（ｂ）の例では、圧縮コードＣ３０が、ＲＯＭ１０の第１領域ａｒｅａ２１ａ内と、第２領域ａｒｅａ２２ａ内とに、圧縮コードＥ３０が、ＲＯＭ１０の第１領域ａｒｅａ２１ｂ内と、第２領域ａｒｅａ２２ｂ内とに分割して配置されている。
【０２３１】
なお、数９を用いた第２データの配置決定方法については、以下の＜３．動作＞の＜３−１．配置決定処理＞及び＜３−２．配置決定処理の具体例＞において詳しく説明する。
【０２３２】
＜３．動作＞
次に、配置決定装置１４０及びアクセス装置２４０の動作について説明する。
【０２３３】
＜３−１．配置決定処理＞
まずは、配置決定装置１４０の配置決定処理について説明する。
【０２３４】
図１６は、配置決定装置１４０の配置決定処理を示すフローチャートである。
【０２３５】
同図に示すように、配置決定装置１４０の配置決定処理は、図４に示す実施の形態１に係る配置決定装置１００の配置決定処理のうちのステップＳ５及びＳ７の処理に代えて、ステップＳ５１及びＳ５２の処理を含む点で、配置決定装置１００の配置決定処理とは異なる。従って、以下では、ステップＳ５１及びＳ５２の処理を中心に説明する。
【０２３６】
ステップＳ１〜Ｓ４の処理を完了すると、制御部１５０の第１決定部１５１は、アドレス値ＡＤＤＲ＿ａに第１演算を施す（ステップＳ５１）。即ち、第１決定部１５１は、アドレス値ＡＤＤＲ＿ａを数５に示すように表した場合において、数９で示すｋの値に応じた演算を行う。
【０２３７】
また、制御部１５０は、ステップＳ６の判定処理を行い、ステップＳ４で圧縮部１０２から受領したデータ長情報が示すデータ長がＸａビットより大きい場合に（ステップＳ６：ＹＥＳ）、制御部１５０の第２決定部１５２は、アドレス値ＡＤＤＲ＿ａに第２演算を施す（ステップＳ５２）。即ち、第２決定部１５２は、アドレス値ＡＤＤＲ＿ａを数５に示すように表した場合において、数１０で示すｋの値に応じた演算を行う。
【０２３８】
ステップＳ５２の処理を完了すると、制御部１５０はステップＳ８の処理に進む。
【０２３９】
＜３−２．配置決定処理の具体例＞
上述した配置決定装置１４０の配置決定処理について、図１５に示す例を用いて、図１６に示すステップＳ５１及びＳ５２の処理内容を具体的に説明する。
【０２４０】
（１）非圧縮コードＡ３についての処理
この例では、非圧縮コードＡ３のアドレス値ＡＤＤＲ＿ａは「４×ｊ＋０」（但しｊ＝０）である。従って、第１決定部１５１は、数９に示すｋ＝０の場合の演算を第１演算として実行する（ステップＳ５１）。この第１演算の結果値ａｄｄｒ＿ａ１は、「０」になる。
【０２４１】
また、この例では、圧縮部１０２から受領したデータ長情報が示すデータ長は、Ｘａビット以下である（ステップＳ６：ＮＯ）。従って、制御部１５０は、図１５（ｂ）に示すように、フラグ（０）とステップＳ４で受領した圧縮コード（Ａ３０）とを、ステップＳ５１の第１演算の結果値ａｄｄｒ＿ａ１（０）が示す記憶装置２０の圧縮コード用の領域２２内の位置にアクセス部１０１を介して書き込む（ステップＳ８）。
【０２４２】
（２）非圧縮コードＢ３についての処理
非圧縮コードＢ３を圧縮した圧縮コードＢ３０についても、上記圧縮コードＡ３０と同様に処理されるため、詳細な説明は省略するが、ステップＳ５１の第１演算の結果値ａｄｄｒ＿ａ１は、「１／２」になる。従って、図１５（ｂ）に示すように、フラグ（０）とステップＳ４で受領した圧縮コード（Ｂ３０）とが、第１演算の結果値ａｄｄｒ＿ａ１（１／２）が示す記憶装置２０の圧縮コード用の領域２２内の位置に配置されることになる。
【０２４３】
（３）非圧縮コードＣ３についての処理
この例では、非圧縮コードＣ３のアドレス値ＡＤＤＲ＿ａは「４×ｊ＋２」（但しｊ＝０）である。従って、第１決定部１５１は、数９に示すｋ＝２の場合の演算を第１演算として実行する（ステップＳ５１）。この第１演算の結果値ａｄｄｒ＿ａ１は、「２」になる。
【０２４４】
また、この例では、圧縮部１０２から受領したデータ長情報が示すデータ長は、Ｘａビットより大きい（ステップＳ６：ＹＥＳ）。従って、第２決定部１５１は、数１０に示すｋ＝２の場合の演算を第２演算として実行する（ステップＳ５２）。この第２演算の結果値ａｄｄｒ＿ａ２は、「１＋１／２」になる。
【０２４５】
従って、制御部１５０は、図１５（ｂ）に示すように、フラグ（１）とステップＳ４で受領した圧縮コード（Ｃ３０）のうちのＸａビット分（Ｃ３１）とを、ステップＳ５１の第１演算の結果値ａｄｄｒ＿ａ１（２）が示す記憶装置２０の圧縮コード用の領域２２内の位置にアクセス部１０１を介して書き込む。また、制御部１５０は、図１５（ｂ）に示すように、ステップＳ４で受領した圧縮コード（Ｃ３０）からＸａビット分（Ｃ３１）を除いたデータ（Ｃ３２）を、ステップＳ５２の第２演算の結果値ａｄｄｒ＿ａ２（１＋１／２）が示す記憶装置２０の圧縮コード用の領域２２内の位置にアクセス部１０１を介して書き込む（ステップＳ８）。
【０２４６】
（４）非圧縮コードＤ３についての処理
非圧縮コードＤ３を圧縮した圧縮コードＤ３０についても、上記圧縮コードＡ３０と同様に処理されるため、詳細な説明は省略するが、ステップＳ５１の第１演算の結果値ａｄｄｒ＿ａ１は、「２＋１／２」になる。従って、図１５（ｂ）に示すように、フラグ（０）とステップＳ４で受領した圧縮コード（Ｄ３０）とが、第１演算の結果値ａｄｄｒ＿ａ１（２＋１／２）が示す記憶装置２０の圧縮コード用の領域２２内の位置に配置されることになる。
【０２４７】
＜３−３．アクセス処理＞
次に、アクセス装置２４０のアクセス処理について説明する。
【０２４８】
図１７は、アクセス装置２４０のアクセス処理を示すフローチャートである。
【０２４９】
同図に示すように、アクセス装置２４０のアクセス処理は、図５に示す実施の形態１に係るアクセス装置２００のアクセス処理のうちのステップＳ１２及びＳ１５の処理に代えて、ステップＳ６１及びＳ６２の処理を含む点で、アクセス装置２００のアクセス処理とは異なる。従って、以下では、ステップＳ６１及びＳ６２の処理を中心に説明する。
【０２５０】
入力部２０１を介して、プロセッサ４０から、所望する非圧縮コードのアドレス値ＡＤＤＲ＿ｂを受け付けると（ステップＳ１１：ＹＥＳ）、アクセス装置２４０の制御部２５０の第１特定部２５１は、アドレス値ＡＤＤＲ＿ｂに第１演算を施す（ステップＳ６１）。即ち、第１特定部２５１は、アドレス値ＡＤＤＲ＿ａを数５に示すように表した場合において、数９で示すｋの値に応じた演算を行う。
【０２５１】
また、制御部２５０は、ステップＳ１３の第１データの読出処理及びステップＳ１４の判定処理を行い、圧縮コードのデータ長がＸａビットより大きい場合に（ステップＳ１４：ＹＥＳ）、制御部２５０の第２特定部２５２は、アドレス値ＡＤＤＲ＿ｂに第２演算を施す（ステップＳ６２）。即ち、第２特定部２５２は、アドレス値ＡＤＤＲ＿ｂを数５に示すように表した場合において、数１０で示すｋの値に応じた演算を行う。
【０２５２】
ステップＳ６２の処理を完了すると、制御部１５０はステップＳ１６の処理に進む。
【０２５３】
＜３−４．アクセス処理の具体例＞
上述したアクセス装置２４０のアクセス処理について、図１５に示す例を用いて、図１７に示すＳ６１及びＳ６２の処理内容を具体的に説明する。
【０２５４】
以下では、プロセッサ４０から、所望する非圧縮コードＣ３のアドレス値ＡＤＤＲ＿ｂ「２」を受領した場合を例にアクセス装置２４０のアクセス処理を説明する。
【０２５５】
入力部２０１を介して、プロセッサ４０から、所望する非圧縮コードのアドレス値ＡＤＤＲ＿ｂ「２」を受け付けると（ステップＳ１１：ＹＥＳ）、アクセス装置２４０の制御部２５０の第１特定部２５１は、アドレス値ＡＤＤＲ＿ｂに第１演算を施す（ステップＳ６１）。この例では、非圧縮コードＣ２のアドレス値ＡＤＤＲ＿ｂは「４×ｊ＋２」（但しｊ＝０）であるため、数９に示すｋ＝２の場合の演算を第１演算として実行する。この第１演算の結果値ａｄｄｒ＿ｂ１は、「２」になる。
【０２５６】
従って、制御部２５０は、読出部２０２を介して、第１演算の結果値ａｄｄｒ＿ｂ１（２）が示すＲＯＭ１０の第１領域ａｒｅａ２１ａ内の位置から第１データ（フラグ「１」とＣ３１）を読み出す（ステップＳ１３）。
【０２５７】
また、この例では、ステップＳ１３で読み出した第１データのフラグの値が「１」なので、圧縮コードのデータ長がＸａビットより大きいと判定する（ステップＳ１４：ＹＥＳ）。
【０２５８】
従って、制御部２５０の第２特定部２５２は、アドレス値ＡＤＤＲ＿ｂに第２演算を施す（ステップＳ６２）。この例では、数１０に示すｋ＝２の場合の演算を第２演算として実行し、この第２演算の結果値ａｄｄｒ＿ｂ２は、「１＋１／２」になる。
【０２５９】
従って、制御部２５０は、読出部２０２を介して、第２演算の結果値ａｄｄｒ＿ｂ２（１＋１／２）が示すＲＯＭ１０の第２領域ａｒｅａ２２ａ内の位置から第２データ（Ｃ３２を含む）を読み出す（ステップＳ１６）。
【０２６０】
以降、アクセス装置２４０は、実施の形態１に係るアクセス装置２００と同様にステップＳ１７〜Ｓ１９の処理を行い、アクセス処理を終了する。
【０２６１】
＜４．考察＞
実施の形態３に係る配置決定装置１４０によれば、実施の形態１に係る配置決定装置１００の場合と同様に、アドレス値ＡＤＤＲ＿ａが「２×ｊ」及び「２×ｊ＋１」（但し、ｊ＝０，１，・・・Ｍ／２）である２つの非圧縮コードを圧縮した各圧縮コードが共に特定圧縮コードでないことを条件に、各圧縮コードのＲＯＭ１０上の格納領域ａｒｅａ２０（図１５（ｂ）参照）の容量は、３×Ｍ×Ｎ／４ビットとなる。
【０２６２】
なお、実施の形態３では、図１５（ｂ）に示すように、組毎に第１領域と第２領域とを連続して配置している。従って、以下説明する変形例３のように、アクセス装置２４０にＲＯＭキャッシュを備えるようにし、制御部２５０がこのＲＯＭキャッシュから各圧縮コードを読み出すようにした場合には、一度のアクセスで特定圧縮コードを読み出すことも可能になる。
【０２６３】
≪変形例３≫
以下では、実施の形態３に係るアクセス装置２４０の制御部２５０を比較的簡単な構成の回路で実現するように変形した例を説明する。
【０２６４】
なお、この変形例３に係るアクセス制御装置は、アクセス装置２４０の制御部２５０に代えて、制御回路２５０ａを備える他、更にＲＯＭキャッシュ１１を備える。
【０２６５】
このＲＯＭキャッシュ１１は、ＲＯＭ１０上の各圧縮コードのうちの少なくとも一部のコピーを格納しており、制御回路２５０ａから読出部２０２を介して送出されるアドレス値「ａｄｄｒ［１５：０］」に対し、「ａｄｄｒ＋０」と、「ａｄｄｒ＋１」と、「ａｄｄｒ＋２」に格納されているデータを出力するものである。
【０２６６】
即ち、この例では、制御回路２５０ａは、プロセッサ４０が所望の非圧縮コードを圧縮した圧縮コードをＲＯＭキャッシュ１１から読み出す。
【０２６７】
なお、以下では、説明を簡単にするため、キャッシュミスは発生しないものとする。
【０２６８】
図１８は、変形例３に係るアクセス装置の制御回路２５０ａの回路構成を示す図である。
【０２６９】
なお、同図では、入力部２０１を介してプロセッサ４０から入力されるアドレス値を、「ＡＤＤＲ」と表記し、読出部２０２を介してＲＯＭキャッシュ１１に送出されるアドレス値を「ａｄｄｒ」と表記し、ＡＤＤＲ及びａｄｄｒは１６ビットである例を示している。また、同図では、Ｎが１６ビットであり、ＲＯＭキャッシュ１１が１６ビットのａｄｄｒに対してそれぞれが１６ビットのｄａｔａ０、ｄａｔａ１、ｄａｔａ２を出力する例を示している。
【０２７０】
同図に示すように、変形例３に係るアクセス装置の制御回路２５０ａは、加算器２５３と、セレクタ２５４ａ〜２５４ｃと、Ｄフリップフロップ２５５ａ及び２５５ｂとを含んで構成される回路である。
【０２７１】
プロセッサ４０からアドレス値ＡＤＤＲが入力されてから１ｃｙｃｌｅ後において、この制御回路２５０ａから出力されているＤＡＴＡを、伸長部２０３は、有効な圧縮コードとして取得し伸長することになる。
【０２７２】
以下では、プロセッサ４０から、図１５（ａ）に示す非圧縮コードＣ３のアドレス値（２）が入力された場合を例に、制御回路２５０ａの動作を具体的に説明する。
【０２７３】
入力部２０１を介してプロセッサ４０から、アドレス値ＡＤＤＲ［１５：０］＝‘０・・・０１０’ｂ＝２が入力されると、｛００，ＡＤＤＲ［１５：２］｝＝‘０・・・０’ｂ＝０と、｛０，ＡＤＤＲ［１５：２］，０｝＝‘０・・・０’ｂ＝０とが加算器２５３に入力される。そして、加算器２５３から‘０・・・０’ｂ＝０がａｄｄｒ［１５：０］として出力される。
【０２７４】
このａｄｄｒ［１５：０］に対して、ＲＯＭキャッシュ１１からは、図１５（ｂ）のａｄｄｒ「０」、「１」及び「２」に配置されている各１６ビットデータが、ｄａｔａ０［１５：０］、ｄａｔａ１［１５：０］及びｄａｔａ２［１５：０］として出力される。
【０２７５】
ＡＤＤＲ［１：０］が「１０」なので、セレクタ２５４ａでは、「１０」側の入力が選択されており、ｄａｔａ２［０］＝１がＩＮＦＯとして、セレクタ２５４ａから出力される。また、ｄａｔａ２［７：１］（Ｃ３１）がＤＡＴＡ［６：０］としてセレクタ２５４ａから出力され、Ｄフリップフロップ２５５ａに入力される。
【０２７６】
また、ＡＤＤＲ［１］が「１」なので、セレクタ２５４ｂでは、「１」側の入力が選択されており、ＩＮＦＯが「１」なので、セレクタ２５４ｃでは、「１」側の入力が選択されている。従って、セレクタ２５４ｃからは、データＣ３２を含む｛０，ｄａｔａ１［１５：８］｝が出力され、Ｄフリップフロップ２５５ｂに入力される。
【０２７７】
Ｄフリップフロップ２５５ａ及び２５５ｂにクロックの入力があると、Ｄフリップフロップ２５５ａからはＤＡＴＡ［６：０］（Ｃ３１）が出力され、Ｄフリップフロップ２５５ｂからはＤＡＴＡ［１５：７］（Ｃ３２を含む）が出力される。
【０２７８】
この制御回路２５０ａから出力されたＤＡＴＡ（ＤＡＴＡ［６：０］及びＤＡＴＡ［１５：７］）が伸長部２０３により取得されて、伸長が行われることになる。
【０２７９】
以上説明したように、図１５（ｂ）に示すように、組毎に第１領域と第２領域とを連続して配置するようにすることで、変形例３に係る制御回路２５０ａによれば、第１領域と第２領域とに分割して配置されている１つの特定圧縮コードを１ｃｙｃｌｅで読み出すことが可能になる。
【０２８０】
≪補足≫
以上、本発明に係る配置決定装置、配置決定方法、データ構造、メモリ、アクセス装置及びメモリアクセス方法を、各実施の形態及び各変形例（以下、単に「実施の形態」ともいう）に基づいて説明したが、以下のように変形することも可能であり、本発明は上述した実施の形態で示した通りの配置決定装置、配置決定方法、データ構造、メモリ、アクセス装置及びメモリアクセス方法に限られないことは勿論である。
【０２８１】
（１）実施の形態では、本発明に係るＭ個のＮビットデータの一例として、図３（ａ）、図９（ａ）及び図１５（ａ）に示すＮビットの非圧縮コードを、本発明に係るＭ個のＮビット未満の圧縮データの一例として、図３（ａ）、図９（ａ）及び図１５（ａ）に示すＮビット未満の圧縮コードを、それぞれ用いて説明した。しかしながら、本発明に係るＭ個のＮビットデータ及びＭ個のＮビット未満の圧縮データは、これ以外のデータであってもよい。
【０２８２】
また、実施の形態では、Ｎが１６である場合を例に説明したが、これに限らず、Ｎがこれより大きくても小さくてもよい。
【０２８３】
また、フラグは、実施の形態１及び３では１ビットであり、実施の形態２では２ビットである例を用いて説明したが、これに限らず、フラグのビット長はこれらの例より大きくてもよい。
【０２８４】
（２）実施の形態に係る配置決定装置は、各圧縮コードについてのＲＯＭ１０上の配置を決定するものとして説明し、また、実施の形態に係るアクセス装置は、このＲＯＭ１０にアクセスするものとして説明した。しかしながら、ＲＯＭに限らず、本発明に係る配置決定装置は、ＲＯＭ以外の他のメモリへの各圧縮コードの配置を決定してもよいし、本発明に係るアクセス装置は、ＲＯＭ以外の他のメモリへアクセスするものであってもよい。
【０２８５】
（３）実施の形態１及び３では、第１データの最大データ長がＮ／２−１であり、実施の形態２では、第１データの最大データ長がＮ／２−２であるものとして説明した。しかしながら、実施の形態で説明した第１データの最大データ長は一例であり、これ以外であってもよい。
【０２８６】
即ち、第１データの最大データ長は、実施の形態に係るＲＯＭ１０上のアドレスａｄｄｒの１アドレス分の領域（実施の形態ではＮビット）をいくつの圧縮コードで共有するかを決定することによって決まることになる。
【０２８７】
例えば、ｉ個の圧縮コードで共有すると決定した場合には、実施の形態１及び３の第１データの最大データ長は、Ｎ／ｉ−１とすることができ、実施の形態２の第１データの最大データ長は、Ｎ／ｉ―２とすることができる。
【０２８８】
実施の形態では、ＲＯＭ１０上のアドレスａｄｄｒの１アドレス分の領域（実施の形態ではＮビット）を、２個の特定圧縮データで共有するものとして、第２データの最大データ長がＮ／２である例を説明した。
【０２８９】
しかしながら、実施の形態で説明した第２データの最大データ長は一例であり、これ以外であってもよい。例えば、ＲＯＭ１０上のアドレスａｄｄｒの１アドレス分の領域を４個の特定圧縮データで共有する場合には、第２データの最大データ長をＮ／４とすることができ、１個の特定圧縮データで共有する場合には、第２データの最大データ長をＮとすることができる。即ち、第１データが配置される第１領域におけるＲＯＭ１０上のアドレスａｄｄｒの１アドレス分の領域を共有する圧縮データの数と、第２データが配置される第２領域におけるＲＯＭ１０上のアドレスａｄｄｒの１アドレス分の領域を共有する特定圧縮データの数とは、同一の場合に限らず、異なってもよい。
【０２９０】
また、第２データの先頭アドレスが、実施の形態１ではＭ／２（数２及び数４参照）、実施の形態２では、Ｍ／２及び３×Ｍ／４（数６〜数８参照）であるものとして説明した。しかしながら、これらは一例であり、この先頭アドレスは適宜変更することができる。
【０２９１】
また、実施の形態３では、同じ組内の４つのアドレス値に係る各圧縮コードの第１データが配置される領域（例えば図１５（ｂ）のａｒｅａ２１ａ）の間に、第２データが配置される領域（例えば図１５（ｂ）のａｒｅａ２２ａ）が設定されるものとして説明した。しかしながら、この配置は一例であり、組毎に、第１データが配置される領域の近傍に第２データが配置される領域が設けられれば足りる。
【０２９２】
例えば、第１データが配置される領域を連続して設定し、その領域に続けて第２データが配置される領域を設定してもよいし、第２データが配置される領域に続けて、第１データが配置される領域を設定してもよい。
【０２９３】
また、実施の形態３では、１組に連続する４つのアドレス値が属するものとして説明したが、１組に属するアドレス値の数はこれに限らない。また、１組に属するアドレス値は、必ずしも連続しなくてもよい。
【０２９４】
（４）実施の形態に係る配置決定装置は圧縮部１０２を含み、また、実施の形態に係るアクセス装置は伸長部２０３を含むものとして説明した。
【０２９５】
しかしながら、圧縮部１０２は配置決定装置の必須の構成ではなく、他の装置で実現してもよい。その場合、例えば記憶装置２０に他の装置で生成された各圧縮コードとそのデータ長を示す各データ長情報とを対応付けて格納するように変形する必要がある。そして、この変形に係る配置決定装置は、記憶装置２０から読み出した各圧縮コードを圧縮コード用のメモリ領域２２に決定した配置で格納することになる。
【０２９６】
また、伸長部２０３はアクセス装置の必須の構成ではなく、他の装置で実現してもよい。
【０２９７】
（５）変形例３に係るＲＯＭキャッシュ１１は、ＲＯＭ１０上の各圧縮コードのうちの少なくとも一部のコピーを格納しており、制御回路２５０ａから読出部２０２を介して送出されるアドレス値「ａｄｄｒ」に対し、「ａｄｄｒ＋０」と、「ａｄｄｒ＋１」と、「ａｄｄｒ＋２」に格納されているデータを出力するものとして説明した。
【０２９８】
しかしながら、ＲＯＭキャッシュ１１を用いないようにしてもよい。即ち、変形例１及び２と同様にＲＯＭ１０から直接圧縮コードを読み出すようにしてもよい。但し、この場合、１つの特定圧縮コード全体の読出に、プロセッサ４０からアドレス値ＡＤＤＲが入力されてから２ｃｙｃｌｅ必要になる。
【０２９９】
また、各変形例では、説明の簡略化のために、厳密な入出力仕様については言及しなかったが、圧縮コードの読み書きのためのタイミングを調整するようにしたり、要求信号や応答信号等を追加したりしても勿論よい。
【０３００】
（６）実施の形態では、各特定圧縮データを、その特定圧縮データのうちのＸビット（実施の形態１及び３では、Ｘａビット、実施の形態２では、Ｘｂビット）分を第１データに含め、その特定圧縮データからＸビットを除いた部分の全体を第２データとして、２つに分割して配置するものとして説明した。
【０３０１】
しかしながら、実施の形態で説明した各特定圧縮データの分割数は一例であり、３つ以上に分割するようにしてもよい。
【０３０２】
例えば、３つに分割する場合、特定圧縮データのうち、第１データに含まれるＸｃビット（Ｘｃ＜Ｎ）分と、第２データに含まれるＹビット（Ｙ＜Ｎ）分とを除いた部分の全体である第３データを、その特定圧縮データの基となった非圧縮コードの非圧縮ブロック中のアドレス値ＡＤＤＲ＿ａに第３演算を施した結果値が示すＲＯＭ１０等のメモリ位置に配置すればよい。
【０３０３】
なお、第３演算は、第１演算及び第２演算とは異なる演算である。また、特定圧縮データのデータ長によっては、第３データは存在しない場合もあるため、第３データの有無を識別するために、第２データには、その特定圧縮データのデータ長がＸｃ＋Ｙビットより大きいことを示すフラグ（例えば１ビット）を含める必要がある。
【０３０４】
（７）実施の形態において説明した各構成要素のうち、全部又は一部を１チップ又は複数チップの集積回路で実現してもよいし、コンピュータのプログラムで実現してもよいし、その他どのような形態で実現してもよい。
【０３０５】
また、実施の形態１〜３において説明した各構成要素は、配置決定装置及びアクセス装置それぞれが有するプロセッサと協働することにより、その機能を実現する。
【０３０６】
（８）実施の形態１〜３において説明した配置決定装置の配置決定処理（図４、１０、１６参照）及びアクセス装置のアクセス処理（図５、１１、１７参照）をプロセッサに実行させるためのプログラムを、記録媒体に記録し又は各種通信路等を介して、流通させ頒布することもできる。このような記録媒体には、ＩＣカード、ハードディスク、光ディスク、フレキシブルディスク、ＲＯＭ、フラッシュメモリ等がある。流通、頒布されたプログラムは、機器におけるプロセッサで読み取り可能なメモリ等に格納されることにより利用に供され、そのプロセッサがそのプログラムを実行することにより実施の形態１〜３で示した配置決定装置及びアクセス装置の各機能が実現される。
【０３０７】
（９）実施の形態に係る配置決定装置及びアクセス装置に、上記（１）〜（８）の一部又は全部の変形を組み合わせて適用してもよい。
【０３０８】
（１０）以下、更に本発明の一実施形態及びその変形例と各効果について説明する。
【０３０９】
（ａ）本発明の一実施形態に係る配置決定装置は、データブロックを構成するＭ個のＮビットデータそれぞれを基に圧縮したＭ個のＮビット未満の圧縮データについてのメモリ配置を決定する配置決定装置であって、Ｍ個の圧縮データのうち、データ長がＸビット（Ｘ＜Ｎ）以下である一般圧縮データそれぞれについては、当該一般圧縮データ全体と、少なくとも当該一般圧縮データのデータ長がＸビット以下であることを示すフラグとからなるＬビット（Ｘ＜Ｌ＜Ｎ）以下の第１データを、当該一般圧縮データの基となったＮビットデータの前記データブロック内アドレス値に第１演算を施した結果値が示すメモリ位置に配置するよう決定し、Ｍ個の圧縮データのうち、データ長がＸビットより大きい特定圧縮データそれぞれについては、当該特定圧縮データのうちのＸビット分と、少なくとも当該特定圧縮データのデータ長がＸビットより大きいことを示すフラグとからなるＬビットの第１データを、当該特定圧縮データの基となったＮビットデータの前記データブロック内アドレス値に第１演算を施した結果値が示すメモリ位置に配置するよう決定する第１決定手段と、前記特定圧縮データそれぞれについて、当該特定圧縮データから前記第１データに含まれるＸビットを除いた部分の一部又は全体を含む第２データを、当該特定圧縮データの基となったＮビットデータの前記データブロック内アドレス値に前記第１演算とは異なる第２演算を施した結果値が示すメモリ位置に配置するよう決定する第２決定手段とを備え、前記第２演算は、Ｍ個のＮビットデータそれぞれの前記データブロック内アドレス値のうち、Ｋ個（Ｋ≦Ｍ）を１組とした各組について、同じ組内のいずれのアドレス値に当該第２演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第２演算を施して生じた結果値とも異なる結果値が生じる演算であることを特徴とする。
【０３１０】
また、前記第１演算は、各結果値それぞれが、メモリ中の第１領域内の異なる位置を示すものであり、前記第２演算は、各結果値それぞれが、前記メモリ中の前記第１領域と連続する第２領域内の位置を示すものであることとしてもよい。
【０３１１】
また、本発明の一実施形態に係る配置決定方法は、データブロックを構成するＭ個のＮビットデータそれぞれを基に圧縮したＭ個のＮビット未満の圧縮データについてのメモリ配置を決定する配置決定装置における配置決定方法であって、Ｍ個の圧縮データのうち、データ長がＸビット（Ｘ＜Ｎ）以下である一般圧縮データそれぞれについては、当該一般圧縮データ全体と、少なくとも当該一般圧縮データのデータ長がＸビット以下であることを示すフラグとからなるＬビット（Ｘ＜Ｌ＜Ｎ）以下の第１データを、当該一般圧縮データの基となったＮビットデータの前記データブロック内アドレス値に第１演算を施した結果値が示すメモリ位置に配置するよう決定し、Ｍ個の圧縮データのうち、データ長がＸビットより大きい特定圧縮データそれぞれについては、当該特定圧縮データのうちのＸビット分と、少なくとも当該特定圧縮データのデータ長がＸビットより大きいことを示すフラグとからなるＬビットの第１データを、当該特定圧縮データの基となったＮビットデータの前記データブロック内アドレス値に第１演算を施した結果値が示すメモリ位置に配置するよう決定する第１決定ステップと、前記特定圧縮データそれぞれについて、当該特定圧縮データから前記第１データに含まれるＸビットを除いた部分の一部又は全体を含む第２データを、当該特定圧縮データの基となったＮビットデータの前記データブロック内アドレス値に前記第１演算とは異なる第２演算を施した結果値が示すメモリ位置に配置するよう決定する第２決定ステップとを含み、前記第２演算は、Ｍ個のＮビットデータそれぞれの前記データブロック内アドレス値のうち、Ｋ個（Ｋ≦Ｍ）を１組とした各組について、同じ組内のいずれのアドレス値に当該第２演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第２演算を施して生じた結果値とも異なる結果値が生じる演算であることを特徴とする。
【０３１２】
この配置決定装置及び配置決定方法によれば、第２データが、第１データに含まれるＸビットを除いた部分の全体であるとした場合において、各圧縮データを、その圧縮データの基となったＮビットデータのデータブロック内アドレス値に所定の演算（第１演算又は第１演算及び第２演算）を施した結果値が示すメモリ位置に配置するよう決定する。
【０３１３】
従って、この配置決定装置及び配置決定方法により決定された位置に各圧縮データが配置されているメモリから、プロセッサが所望するＮビットデータに対応する圧縮データを、そのＮビットデータのアドレス値に所定の演算を施した結果値が示すメモリ位置から読み出すことができる。つまり、プロセッサが所望するＮビットデータに対応する圧縮データを、アドレス変換テーブルを用いることなく読み出すことが可能になる。
【０３１４】
なお、第２データが、第１データに含まれるＸビットを除いた部分の一部を含むものであるときには、その特定圧縮データから、第１データに含まれるＸビットと第２データに含まれるその特定圧縮データを構成するデータとを除いた部分である第３データを、当該特定圧縮データの基となったＮビットデータの前記データブロック内アドレス値に前記第１演算及び前記第２演算とは異なる第３演算を施した結果値が示すメモリ位置に配置するよう決定すればよい。
【０３１５】
即ち、第２データが、第１データに含まれるＸビットを除いた部分の一部を含むものである場合においても、その圧縮データの基となったＮビットデータのデータブロック内アドレス値に所定の演算（この例では、第１演算、第２演算及び第３演算）を施した結果値が示すメモリ位置に配置することで、プロセッサが所望するＮビットデータに対応する圧縮データを、アドレス変換テーブルを用いることなく読み出すことが可能になる。
【０３１６】
（ｂ）また、前記第１領域は、Ｎ×Ｍ／２ビットの領域であり、前記第１決定手段は、前記フラグをＦビットとし、データ長がＮ／２−Ｆビットより大きい圧縮データを前記特定圧縮データとして、Ｍ個の圧縮データそれぞれについて、当該圧縮データの基となるＮビットデータの前記データブロック内アドレス値を２で除算した結果値が示すメモリ位置に、前記第１データを配置するよう決定することとしてもよい。
【０３１７】
この配置決定装置は、各圧縮データの第１データを配置するメモリ上の位置を、当該圧縮データの基となるＮビットデータのデータブロック内アドレス値を２で除算するという簡単な演算の結果値により決定する。
【０３１８】
即ち、この配置決定装置により決定された位置に各圧縮データが配置されているメモリから、プロセッサが所望するＮビットデータに対応する圧縮データのうちの第１データをそのＮビットデータのアドレス値に上述の簡単な演算を施した結果値が示すメモリ位置から読み出すことができる。
【０３１９】
（ｃ）また、前記第２領域は、Ｎ×Ｍ／４ビットの領域であり、前記第２演算は、Ｍ個のＮビットデータそれぞれの前記データブロック内アドレス値のうち、２個を１組とした組毎に、Ｎ／２ビットずつずれたメモリ位置を示す結果値が生じる演算であることとしてもよい。
【０３２０】
これにより、第２領域内をＮ／２ビット毎に分けた各領域は、同じ組に属する２個のブロック内アドレス値に係る２個の圧縮データの第２データを配置する領域として共有されることになる。
【０３２１】
従って、同じ組に属する２個のブロック内アドレス値に係る２個の圧縮データが共に特定圧縮データでないことを条件に、この配置決定装置によれば、プロセッサが所望するＮビットデータに対応する圧縮データを読み出す際にはアドレス変換テーブルを用いることなく、Ｍ個の圧縮データの配置に要するメモリ容量を抑えることができる。
【０３２２】
（ｄ）また、前記第２領域は、Ｎ×Ｍ×３／８ビットの領域であり、前記第２演算は、Ｍ個のＮビットデータそれぞれの前記データブロック内アドレス値のうち、４個を１組とした組毎に、３個のメモリ位置を示す結果値が生じる演算であり、前記第２決定手段は、各特定圧縮データそれぞれについて、当該特定圧縮データの前記第２データを、当該特定圧縮データの基となるＮビットデータの前記データブロック内アドレス値に第２演算を施した結果値が示す３個のメモリ位置のうち、他の特定圧縮データの前記第２データが配置されていない１つのメモリ位置に配置するよう決定し、前記第１データに含まれるフラグは、更に当該第１データを含む前記特定圧縮データの前記第２データが、前記３個のメモリ位置のうち、いずれのメモリ位置に配置されているかを示す２ビットのデータであることとしてもよい。
【０３２３】
これにより、同じ組に属する４個のブロック内アドレス値に係る４個の圧縮データの第２データを配置する領域として３つの領域が共有されることになる。
【０３２４】
従って、同じ組に属する４個のブロック内アドレス値に係る４個の圧縮データの全てが特定圧縮データでないことを条件に、この配置決定装置によれば、プロセッサが所望するＮビットデータに対応する圧縮データを読み出す際にはアドレス変換テーブルを用いることなく、Ｍ個の圧縮データの配置に要するメモリ容量を抑えることができる。
【０３２５】
また、プロセッサが所望するＮビットデータに対応する圧縮データが特定圧縮データである場合に、その特定圧縮データの第１データを読み出し、フラグを参照することで、上記３つの領域のうちのいずれの領域にその特定圧縮データの第２データが配置されているかを簡単に判断することができる。
【０３２６】
（ｅ）また、前記第１演算及び前記第２演算は、Ｍ個のＮビットデータそれぞれの前記データブロック内アドレス値のうち、Ｊ個（Ｋ≦Ｊ≦Ｍ）を１組とした各組について、同じ組内の各アドレス値に当該第１演算及び当該第２演算を施すと、メモリ中の第１領域内の位置を示す結果値が生じ、かつ他の１つの組内の各アドレス値に当該第１演算及び当該第２演算を施すと前記メモリ中の前記第１領域とは異なる第２領域内の位置を示す結果値が生じる演算であることとしてもよい。
【０３２７】
この配置決定装置によれば、特定圧縮データを構成する第１データ及び第２データを近傍に配置することができる。
【０３２８】
従って、この配置決定装置により決定された位置に各圧縮データが配置されているメモリが、例えば、メモリ位置を指定する１つのアドレス値に対して、複数アドレス分のデータを出力することが可能な、所謂バースト転送機能を有するメモリ等である場合には、一度のアクセスで、１つの特定圧縮データ全体を読み出せる可能性を高めることができる。
【０３２９】
（ｆ）また、前記第２演算は、Ｍ個のＮビットデータそれぞれの前記データブロック内アドレス値のうち、連続する４個のアドレス値を１組とした各組について、同じ組内の第１及び第２のアドレス値に当該第２演算を施すと、前記第１領域内の部分領域内の同一位置を示す同一の結果値が生じ、かつ当該同じ組内の第３及び第４のアドレス値に当該第２演算を施すと、前記第１及び第２のアドレス値に当該第２演算を施した結果値が示す同一のメモリ位置からＮ／２ビットずれた前記部分領域内の同一の位置を示す同一の結果値が生じる演算であり、前記第１演算は、Ｍ個のＮビットデータそれぞれの前記データブロック内アドレス値のうち、４個を１組とした各組について、各アドレス値に当該第１演算を施すと、前記第１領域内の前記部分領域とは異なる位置を示す結果値が生じる演算であることとしてもよい。
【０３３０】
この配置決定装置は、ブロック内アドレス値が連続する４つのアドレス値に係る各圧縮データを同一のメモリ範囲に配置する。
【０３３１】
従って、この配置決定装置により決定された位置に各圧縮データが配置されているメモリが、例えば、上述の所謂バースト転送機能を有するメモリ等である場合には、一度のアクセスで、連続する４つのデータブロック内アドレス値に係る各圧縮データをまとめて読み出せる可能性を高めることができる。
【０３３２】
よって、この配置決定装置により決定された各圧縮データの配置は、近傍のアドレス値に係る圧縮データを読み出すようなケースに特に有用である。例えば、プログラムの実行には、空間的局所性といった性質があるため、当該圧縮データが圧縮プログラムコードであるような場合に利用できる。
【０３３３】
（ｇ）また、本発明の一実施形態に係るデータ構造は、連続メモリ領域に配置されて動作するプログラムコードブロックの構成要素としてのＭ個のＮビットデータそれぞれを基に圧縮したＭ個のＮビット未満の圧縮データについてのメモリ配置用のデータ構造であって、Ｍ個の圧縮データのうち、データ長がＸビット（Ｘ＜Ｎ）以下である一般圧縮データそれぞれについては、当該一般圧縮データ全体と、少なくとも当該一般圧縮データのデータ長がＸビット以下であることを示すフラグとからなるＬビット（Ｘ＜Ｌ＜Ｎ）以下の第１データを、当該一般圧縮データの基となったＮビットデータの前記連続メモリ領域におけるアドレス値に第１演算を施した結果値が示すメモリ位置に配置し、Ｍ個の圧縮データのうち、データ長がＸビットより大きい特定圧縮データそれぞれについては、当該特定圧縮データのうちのＸビット分と、少なくとも当該特定圧縮データのデータ長がＸビットより大きいことを示すフラグとからなるＬビットの第１データを、当該特定圧縮データの基となったＮビットデータの前記連続メモリ領域におけるアドレス値に第１演算を施した結果値が示すメモリ位置に配置し、前記特定圧縮データそれぞれについて、当該特定圧縮データから前記第１データに含まれるＸビットを除いた部分の一部又は全体を含む第２データを、当該特定圧縮データの基となったＮビットデータの前記連続メモリ領域におけるアドレス値に、前記第１演算とは異なる第２演算を施した結果値が示すメモリ位置に配置し、前記第２演算は、Ｍ個のＮビットデータそれぞれのアドレス値のうち、Ｋ個（Ｋ≦Ｍ）を１組とした各組について、同じ組内のいずれのアドレス値に当該第２演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第２演算を施して生じた結果値とも異なる結果値が生じる演算であることを特徴とする。
【０３３４】
このデータ構造によれば、第２データが、第１データに含まれるＸビットを除いた部分の全体であるとした場合において、このデータ構造で各圧縮データが配置されているメモリから、プロセッサが所望するＮビットデータに対応する圧縮データを、アドレス変換テーブルを用いることなく読み出すことが可能になる。
【０３３５】
（ｈ）また、本発明の一実施形態に係るメモリは、データブロックを構成するＭ個のＮビットデータそれぞれを基に圧縮したＭ個のＮビット未満の圧縮データそれぞれが配置されたメモリであって、第１メモリ領域と第２メモリ領域とを有し、前記第１メモリ領域は、Ｍ個の圧縮データのうち、データ長がＸビット（Ｘ＜Ｎ）以下である一般圧縮データそれぞれについては、当該一般圧縮データ全体と、少なくとも当該一般圧縮データのデータ長がＸビット以下であることを示すフラグとからなるＬビット（Ｘ＜Ｌ＜Ｎ）以下の第１データが配置された、当該一般圧縮データの基となるＮビットデータの前記データブロック内アドレス値に第１演算を施した結果値が示す領域であり、Ｍ個の圧縮データのうち、データ長がＸビットより大きい特定圧縮データそれぞれについては、当該特定圧縮データのうちのＸビット分と、少なくとも当該特定圧縮データのデータ長がＸビットより大きいことを示すフラグとからなるＬビットの第１データが配置された、当該特定圧縮データの基となるＮビットデータの前記データブロック内アドレス値に第１演算を施した結果値が示す領域であり、前記第２メモリ領域は、前記特定圧縮データそれぞれについて、当該特定圧縮データから前記第１データに含まれるＸビットを除いた部分の一部又は全体を含む第２データが配置された、当該特定圧縮データの基となるＮビットデータの前記データブロック内アドレス値に前記第１演算とは異なる第２演算を施した結果値が示す領域であり、前記第２演算は、Ｍ個のＮビットデータそれぞれの前記データブロック内アドレス値のうち、Ｋ個（Ｋ≦Ｍ）を１組とした各組について、同じ組内のいずれのアドレス値に当該第２演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第２演算を施して生じた結果値とも異なる結果値が生じる演算であることを特徴とする。
【０３３６】
また、前記メモリはＲＯＭ（Read Only Memory）であることとしてもよい。
【０３３７】
このメモリによれば、第２データが、第１データに含まれるＸビットを除いた部分の全体であるとした場合において、プロセッサが所望するＮビットデータに対応する圧縮データを、アドレス変換テーブルを用いることなく読み出すことが可能になる。
【０３３８】
（ｉ）また、本発明の一実施形態に係るアクセス装置は、上記（ｈ）記載のメモリにアクセスするアクセス装置であって、プロセッサの１つのＮビットデータにアクセスするためのアドレス値を受け付ける入力手段と、前記入力手段が受け付けたアドレス値に第１演算を施し、当該第１演算の結果値が示す、前記１つのＮビットデータを基に圧縮した前記圧縮データの全体又はＸビット分と、少なくとも当該圧縮データがＸビットより大きいか否かを示すフラグとからなるＬビット以下の第１データが配置されている前記メモリ上の位置を特定する第１特定手段と、前記第１特定手段が特定した前記メモリ上の位置に配置されている前記第１データ内の前記フラグが、前記圧縮データがＸビットより大きいことを示す場合に、前記入力手段が受け付けたアドレス値に前記第１演算とは異なる第２演算を施し、当該第２演算の結果値が示す、前記圧縮データから前記第１データに含まれるＸビットを除いた部分の一部又は全体を含む第２データが配置されている前記メモリ上の位置を特定する第２特定手段と、前記第１特定手段が特定した前記メモリ上の位置に配置されている前記第１データに含まれる前記圧縮データの全体又はＸビット分を出力すると共に、前記第２特定手段が前記メモリ上の位置を特定した場合には、当該メモリ上の位置に配置されている第２データを出力する出力手段とを備え、前記第２演算は、Ｍ個のＮビットデータそれぞれの前記データブロック内アドレス値のうち、Ｋ個（Ｋ≦Ｍ）を１組とした各組について、同じ組内のいずれのアドレス値に当該第２演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第２演算を施して生じた結果値とも異なる結果値が生じる演算であることを特徴とする。
【０３３９】
また、本発明の一実施形態に係るメモリアクセス方法は、上記（ｈ）記載のメモリにアクセスするアクセス装置におけるメモリアクセス方法であって、プロセッサの１つのＮビットデータにアクセスするためのアドレス値を受け付ける入力ステップと、前記入力ステップで受け付けたアドレス値に第１演算を施し、当該第１演算の結果値が示す、前記１つのＮビットデータを基に圧縮した前記圧縮データの全体又はＸビット分と、少なくとも当該圧縮データがＸビットより大きいか否かを示すフラグとからなるＬビット以下の第１データが配置されている前記メモリ上の位置を特定する第１特定ステップと、前記第１特定ステップで特定した前記メモリ上の位置に配置されている前記第１データ内の前記フラグが、前記圧縮データがＸビットより大きいことを示す場合に、前記入力ステップで受け付けたアドレス値に前記第１演算とは異なる第２演算を施し、当該第２演算の結果値が示す、前記圧縮データから前記第１データに含まれるＸビットを除いた部分の一部又は全体を含む第２データが配置されている前記メモリ上の位置を特定する第２特定ステップと、前記第１特定ステップで特定した前記メモリ上の位置に配置されている前記第１データのうちの全体又はＸビット分を出力すると共に、前記第２特定ステップで前記メモリ上の位置を特定した場合には、当該メモリ上の位置に配置されている第２データを出力する出力ステップとを含み、前記第２演算は、Ｍ個のＮビットデータそれぞれの前記データブロック内アドレス値のうち、Ｋ個（Ｋ≦Ｍ）を１組とした各組について、同じ組内のいずれのアドレス値に当該第２演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第２演算を施して生じた結果値とも異なる結果値が生じる演算であることを特徴とする。
【０３４０】
このアクセス装置及びメモリアクセス方法によれば、第２データが、第１データに含まれるＸビットを除いた部分の全体であるとした場合において、プロセッサが所望するＮビットデータに対応する圧縮データを、アドレス変換テーブルを用いることなく読み出すことが可能になる。
【０３４１】
（ｊ）また、前記アクセス装置は、更に圧縮データを伸長し、得られたＮビットデータを前記プロセッサに送出する伸長手段を備えることとしてもよい。
【０３４２】
このアクセス装置によれば、プロセッサは、圧縮データを伸長して得られた所望のＮビットデータを取得することができる。
【産業上の利用可能性】
【０３４３】
本発明に係る配置決定装置は、圧縮データについてのメモリ配置を決定する際に利用される。
【符号の説明】
【０３４４】
１０    ＲＯＭ
２０    記憶装置
３０    書込装置
１００、１２０、１４０    配置決定装置
１０１    アクセス部
１０２    圧縮部
１１０、１３０、１５０、２１０、２３０、２５０    制御部
１１１、１５１  第１決定部
１１２、１３１、１５２    第２決定部
２００、２２０、２４０    アクセス装置
２０１    入力部
２０２    読出部
２０３    伸長部
２１１、２５１    第１特定部
２１２、２３１、２５２    第２特定部
２１３    出力部
【図１】
0005895229.tif 000002
【図２】
0005895229.tif 000003
【図３】
0005895229.tif 000004
【図４】
0005895229.tif 000005
【図５】
0005895229.tif 000006
【図６】
0005895229.tif 000007
【図７】
0005895229.tif 000008
【図８】
0005895229.tif 000009
【図９】
0005895229.tif 000010
【図１０】
0005895229.tif 000011
【図１１】
0005895229.tif 000012
【図１２】
0005895229.tif 000013
【図１３】
0005895229.tif 000014
【図１４】
0005895229.tif 000015
【図１５】
0005895229.tif 000016
【図１６】
0005895229.tif 000017
【図１７】
0005895229.tif 000018
【図１８】
0005895229.tif 000019