(57)【要約】      （修正有）【課題】圧縮データを外部のメモリに格納する半導体装置、及びメモリアクセス方法を提供する。【解決手段】メモリ空間上に圧縮データ格納領域を包含する管理単位メモリ領域１０８Ａと、補助情報を包含する補助情報格納領域１０８Ｃとを定義し、管理単位メモリ空間が設定されるメモリ上の場所を示すアドレスと、補助情報格納領域のアドレスと、圧縮データのアドレスとから補助情報アドレスを算出することによって、圧縮データと補助情報の対応づけを行い、補助情報を読み出す。【選択図】図４
2019061631.tif 000002
【特許請求の範囲】
【請求項１】
圧縮データと、前記圧縮データにアクセスするために必要な補助情報とにアクセスを行う演算回路と、
管理単位メモリ空間判定回路と、
前記補助情報のアドレスを算出する補助情報アドレス生成回路とを有し、
前記圧縮データ及び前記補助情報が格納されるメモリ空間上には、前記圧縮データを複数含む管理単位メモリ空間と、複数の前記圧縮データにアクセスするために必要な補助情報を複数含む補助情報格納領域とが少なくとも一つずつ設定され、
前記管理単位メモリ空間判定回路は、前記演算回路から複数の前記圧縮データの一つである第１の圧縮データへのアクセスアドレスを受け取り、前記アクセスアドレスがいずれの前記管理単位メモリ空間に格納されるかを判定し、
前記補助情報アドレス生成回路は、前記管理単位メモリ空間判定回路の判定結果と、前記第１の圧縮データへのアクセスアドレスとから、前記第１の圧縮データに対応する第１の補助情報が格納されるアドレスである第１の補助情報アドレスを生成し、
前記演算回路は前記生成した前記第１の補助情報アドレスを用いて前記第１の圧縮データへのアクセスを行う
半導体装置。
【請求項２】
前記補助情報アドレス生成回路には、前記管理単位メモリ空間と、前記補助情報格納領域の対応関係を示す対応情報の組が少なくとも一つ設定され、
前記補助情報アドレス生成回路は、前記管理単位メモリ空間判定回路の判定結果から前記第１の補助情報が格納される補助情報格納領域を判定し、前記補助情報格納領域の判定と前記アクセスアドレスとを用いて前記第１の補助情報アドレスを生成する
請求項１記載の半導体装置。
【請求項３】
前記対応情報の組は、前記管理単位メモリ空間のアドレスを示す情報と、前記補助情報格納領域のアドレスを示す情報との組である
請求項２記載の半導体装置。
【請求項４】
前記管理単位メモリ空間のアドレスは、アドレスの上位数ビットを用いて表される
請求項３記載の半導体装置。
【請求項５】
前記補助情報格納領域のアドレスは、前記補助情報格納領域の始点アドレスである
請求項３記載の半導体装置。
【請求項６】
前記管理単位メモリ空間には、複数の前記圧縮データが格納される領域である圧縮データ格納領域が設定され、前記アクセスアドレスが前記圧縮データ格納領域へのアクセスであるときに、補助情報アドレスが生成される
請求項１から５のいずれか１項に記載の半導体装置。
【請求項７】
前記管理単位メモリ空間内における複数の前記圧縮データの格納位置と、前記補助情報格納領域内における複数の前記圧縮データの各々に対応する複数の前記補助情報の格納位置とが、相対的に一致する
請求項１から５のいずれか１項に記載の半導体装置。
【請求項８】
前記補助情報は、圧縮データのデータサイズの情報である
請求項１から５のいずれか１項に記載の半導体装置。
【請求項９】
コマンド変換／データ圧縮回路を更に有し、
前記コマンド変換／データ圧縮回路は前記演算回路から発行されたリクエストが前記第１の圧縮データへのリードリクエストである場合、前記第１の補助情報を読み出し、前記第１の補助情報を用いて前記リードリクエストの内容を変換する
請求項１から５のいずれか１項に記載の半導体装置。
【請求項１０】
前記演算回路から発行されたリクエストが圧縮データのライトリクエストである場合、前記コマンド変換／データ圧縮回路は、前記演算回路より出力されたデータを圧縮し、圧縮後のデータサイズを補助情報として生成し、前記生成した補助情報を用いて前記ライトリクエストの内容を変換する
請求項９記載の半導体装置。
【請求項１１】
補助情報キャッシュを更に有し、
前記補助情報キャッシュは、前記コマンド変換／データ圧縮回路が生成した補助情報を前記補助情報アドレス生成回路で生成される補助情報アドレスと関連付けて格納する
請求項９記載の半導体装置。
【請求項１２】
前記演算回路が複数設けられ、
複数の前記演算回路が出力するデータの圧縮または前記圧縮されたデータの補助情報を生成するコマンド変換／データ圧縮回路が、複数の前記演算回路に対してそれぞれ設けられ、
複数の前記コマンド変換／データ圧縮回路と、メモリとの間に補助情報アクセス判定回路とバス優先度制御回路とを含むバスが設けられ、
前記補助情報アクセス判定回路は、複数の前記コマンド変換／データ圧縮回路から発行されたアクセスが前記メモリに格納された補助情報へのアクセスか否かを判定し、
前記バス優先度制御回路は、前記補助情報アクセス判定回路が前記補助情報へのアクセスであると判定したとき、前記補助情報へのアクセスの優先度を上げて前記バスを制御する
請求項１から５のいずれか１項に記載の半導体装置。
【請求項１３】
前記演算回路が複数設けられ、
複数の前記演算回路が出力するデータの圧縮または前記圧縮されたデータの補助情報を生成するコマンド変換／データ圧縮回路が、複数の前記演算回路に対してそれぞれ設けられ、
複数の前記コマンド変換／データ圧縮回路によって生成されメモリに格納されている前記補助情報を前記メモリから読み出して格納する補助情報キャッシュが設けられ、
前記複数のコマンド変換／データ圧縮回路及び前記補助情報キャッシュと、前記メモリとの間にバス優先度制御回路を含むバスが設けられ、
前記バス優先度制御回路は、前記補助情報キャッシュからのアクセスの優先度を上げて前記バスを制御する
請求項１から５のいずれか１項に記載の半導体装置。
【請求項１４】
複数の前記コマンド変換／データ圧縮回路は、前記補助情報キャッシュより補助情報を受け取り、前記メモリに対してリードリクエストを発行する
請求項１３記載の半導体装置。
【請求項１５】
前記管理単位メモリ空間は当該半導体装置の外部のメモリに割り当てられる
請求項１記載の半導体装置。
【請求項１６】
メモリ上に、圧縮データを複数含む管理単位メモリ空間と、前記圧縮データを読み出しするために必要な補助情報を複数含む補助情報格納領域とをそれぞれ複数設定し、
複数の前記圧縮データの一つであり、アクセスされる第１の圧縮データが、いずれの管理単位メモリ空間に含まれるかを判定し、
前記管理単位メモリ空間の判定結果から、前記管理単位メモリ空間に格納される圧縮データの補助情報が格納される補助情報格納領域を判定し、
前記補助情報格納領域の判定の結果と、前記第１の圧縮データの格納アドレスとから、前記第１の圧縮データに対応する第１の補助情報が格納されるアドレスである補助情報アドレスを算出する
メモリアクセス方法。
【請求項１７】
前記補助情報アドレスは、前記補助情報格納領域の始点アドレスと、前記第１の圧縮データの格納アドレスとから算出される
請求項１６記載のメモリアクセス方法。
【請求項１８】
前記第１の圧縮データを格納する管理単位メモリ空間のアドレスと、前記第１の補助情報を格納する補助情報格納領域の始点アドレスとは、対応づけられて管理される
請求項１７記載のメモリアクセス方法。
【請求項１９】
前記管理単位メモリ空間内における複数の前記圧縮データの格納位置と、前記補助情報格納領域内における複数の前記圧縮データの各々に対応する複数の前記補助情報の格納位置とが、相対的に一致する
請求項１６から１８のいずれか１項に記載のメモリアクセス方法。
【請求項２０】
前記補助情報は圧縮後のデータサイズ情報である
請求項１６から１８のいずれか１項に記載のメモリアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置、及びメモリアクセス方法に関し、例えば、圧縮データを外部のメモリに格納する半導体装置、及びメモリアクセス方法に関する。
【背景技術】
【０００２】
近年、画像処理等の様々な演算処理を行う半導体装置が広く利用されている。このような半導体装置は、画像等のデータのメモリへの書き込み及びメモリからの読み出しを行う際に、データの圧縮及び伸張等を行っている。圧縮データの読み出しに関連する技術として、例えば、特開平１０−２７１２７号公報（特許文献１）が知られている。
【０００３】
特許文献１では、圧縮データをメモリに格納する際には、その圧縮データの読み出しに用いる補助情報として、その圧縮データが格納されているメモリのアドレス情報を、バス経由でメモリに格納する。メモリから圧縮データを読み出す際には、アドレス情報を用いて、圧縮データを読み出す。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−２７１２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１では、圧縮データと当該圧縮データに対応するアドレス情報とをページング制御で対応付けしているため、オペレーション単位ごとに圧縮データが格納されている領域とページテーブルとの両方を対応づけて管理する必要があった。このため、圧縮データの読み出し／書き出しの際にソフトウェアでの処理が煩雑になるという問題があった。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、メモリ空間上に圧縮データ格納領域を包含して格納する管理単位メモリ領域と、当該圧縮データをメモリから読み出し／書き込みする際に必要な補助情報を包含して格納する補助情報格納領域とをメモリ上に設定し、補助情報を読み出す。
【発明の効果】
【０００８】
一実施の形態によれば、補助情報を読み出す際に必要なソフトウェアの処理量や計算に必要な処理時間を削減することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係る半導体システムの構成を示す概略図である。
【図２】実施の形態１に係る半導体システムの構成を示す概略図である。
【図３】実施の形態１に係るアドレス空間を示す図である。
【図４】実施の形態１に係るアドレス空間において、管理単位メモリ空間と補助情報格納領域の対応関係を示す図である。
【図５Ａ】実施の形態１に係るリード動作フローを示す図である。
【図５Ｂ】実施の形態１に係るリード動作フローを示す図である。
【図６Ａ】実施の形態１に係るライト動作フローを示す図である。
【図６Ｂ】実施の形態１に係るライト動作フローを示す図である。
【図７】比較例に係るアドレス空間を示す図である。
【図８】実施の形態２に係る半導体システムの構成を示す図である。
【図９】実施の形態３に係る半導体システムの構成を示す図である。
【発明を実施するための形態】
【００１０】
以下、実施の形態を図面に基づいて詳細に説明する。また、以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。
【００１１】
また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でも良い。さらに、以下の実施の形態において、その構成要素（要素ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【００１２】
（実施の形態１）
《半導体装置の概略構成》
図１は、実施の形態１に係る半導体システムの構成を示す概略図である。図１に示す半導体システム１０は、例えば第一演算回路１０１＿１、第二演算回路１０１＿２、・・・、第Ｎ演算回路１０１＿Ｎ、第一補助情報管理／データ圧縮回路１１１＿１、第二補助情報管理／データ圧縮回路１１１＿２、・・・、バス１０９、メモリコントローラ１０６等を含む半導体装置１００と、外部メモリ１０８によって構成される。外部メモリ１０８はＳＤＲＡＭ(Synchronous Dynamic Random Access Memory)等の半導体記憶装置で構成される。第一補助情報管理／データ圧縮回路１１１＿１は、第一演算回路１０１＿１から発行された圧縮データへのアクセスに対して圧縮データへの読み出し／書き込みを行うために必要な補助情報を生成したり、第一演算回路１０１＿１が生成したデータに対して圧縮処理を行ったりする。第二補助情報管理／データ圧縮回路１１１＿２も同様に、第二演算回路１０１＿２から発行されたアクセスや生成されたデータに対して補助情報の生成やデータ圧縮などの処理を行う。なお、これら第一補助情報管理／データ圧縮回路１１１＿１、第二補助情報管理／データ圧縮回路１１１＿２のような補助情報管理／データ圧縮回路は全ての演算回路に対して設ける必要はなく、第Ｎ演算回路１０１＿Ｎのように補助情報管理／データ圧縮回路を設けずに直接バス１０９に接続するようにしてもよい。また、図１では２つの補助情報管理／データ圧縮回路を図示しているが、２以上または２以下の数を設けるようにしても良い。
【００１３】
図２は、図１における第一演算回路１０１＿１及び第一補助情報管理／データ圧縮回路１１１＿１に着目した場合の半導体システムの構成例を示した詳細図である。半導体システム１０は、演算回路１０１と、補助情報管理／データ圧縮回路１１１と、伸長回路１０７を有するメモリコントローラ１０６と、を備えた半導体装置１００と外部メモリ（以下、単に「メモリ」と表記する。）１０８とか実装された構成となっている。
【００１４】
補助情報管理／データ圧縮回路１１１は図１の第一補助情報管理／データ圧縮回路１１１＿１、第二補助情報管理／データ圧縮回路１１１＿２に対応し、内部に管理単位メモリ空間判定回路１０２と、補助情報アドレス生成回路１０３と、補助情報キャッシュ１０４と、コマンド変換／データ圧縮回路１０５と、を備える。
【００１５】
演算回路１０１は図１の第一演算回路１０１＿１、第二演算回路１０１＿２、・・・、第Ｎ演算回路１０１＿Ｎに対応し、ユーザに応じた所定の処理を行う。演算回路１０１は例えばＣＰＵ（Central Processing Unit）で実現されるが、ＣＰＵから特定の処理の命令を受けて処理を行う特定処理演算回路であっても良い。
【００１６】
管理単位メモリ空間判定回路１０２は、演算回路１０１から発行されるメモリ１０８へのアクセスが、どの管理単位メモリ空間内へのアクセスかを判定する。なお、単位管理メモリ空間とは、圧縮データを内部に包含するように設定されるメモリ空間のことであり、演算回路等によって領域が設定される。管理単位メモリ空間の詳細については後述する。
【００１７】
補助情報アドレス生成回路１０３は、アクセスが圧縮データへのアクセスである時に、当該圧縮データに対応する補助情報が格納されているアドレス（以下、補助情報アドレスと表記する。）を生成する。なお、補助情報とは、圧縮データをメモリ１０８に読み出し／書き込みする際に必要な情報のことを指し、例えば圧縮後のデータサイズを指す。データは圧縮されるとデータサイズが減縮するため、圧縮後のデータを読み出し／書き込みするためには圧縮後のデータサイズの情報が必要となる。そのため、補助情報アドレス生成回路１０３は、圧縮データをメモリ１０８から読み出す際には、圧縮データへのアクセスアドレスなどから補助情報アドレスを生成し、コマンド変換／データ圧縮回路１０５へと出力する。
【００１８】
補助情報と圧縮データはいずれもメモリ１０８上に保存される。圧縮データを読み出すときは、最初に補助情報をメモリ１０８から読み出し、読み出した補助情報に基づいて圧縮データのリードリクエストを変換し、変換したリードリクエストに基づいて圧縮データを読み出す動作が必要となる。一方で圧縮データを書き込むときには、最初にデータを圧縮し、圧縮後のデータサイズを基に補助情報を生成し、圧縮データをメモリ１０８に格納する。補助情報は補助情報キャッシュ１０４に格納され、一定量の補助情報が補助情報キャッシュ１０４に格納された後、メモリ１０８に格納される。
【００１９】
補助情報キャッシュ１０４は補助情報を格納するキャッシュである。補助情報は、コマンド変換／データ圧縮回路１０５によって圧縮データのリード／ライトリクエスト変換に用いられた後、補助情報キャッシュ１０４へと格納される。次に同じ圧縮データへのリクエストが発行されても、当該圧縮データに対応する補助情報が既に補助情報キャッシュ１０４に格納されている場合には、メモリ１０８に読み出しに行くことなく圧縮データへのリード／ライトリクエストを変換することができる。なお、補助情報キャッシュ１０４がない場合でも補助情報の読み出し／書き込みを行うことは可能だが、補助情報キャッシュ１０４を設けることでより効率的なアクセスを実現することができる。
【００２０】
コマンド変換／データ圧縮回路１０５は、演算回路１０１から生成されたデータの圧縮を行い、圧縮後のデータのデータサイズ情報を生成する。生成されたデータサイズ情報は補助情報として補助情報キャッシュ１０４またはメモリ１０８に格納される。また、コマンド変換／データ圧縮回路１０５は、圧縮データへのリード／ライトリクエストを発行する。演算回路１０１からコマンド変換／データ圧縮回路１０５へ出力されるリード／ライトリクエストは、圧縮前のデータサイズ分だけリード／ライトするリクエスト内容となっているため、そのままメモリコントローラ１０６へ出力することはできない。そのため、圧縮後のデータサイズ情報である補助情報を使って、圧縮後のデータサイズをリード／ライトするようリクエストの内容を書き換える必要がある。
【００２１】
メモリコントローラ１０６はコマンド変換／データ圧縮回路１０５により生成された圧縮データへのリード／ライトリクエストを受け取り、半導体装置１００とメモリ１０８との間でデータのやりとりを行う。
【００２２】
メモリ１０８は半導体装置１００の外部に設けられるメモリであって、圧縮データや補助情報を格納する。
【００２３】
伸長回路１０７はメモリ１０８から読み出された圧縮データを伸長し、演算回路１０１へ供給する。なお、図２ではメモリコントローラ１０６の内部に配置されているが、各補助情報管理／データ圧縮回路１１１の内部に設けても良い。メモリコントローラ１０６の内部に設けた場合は、複数の演算回路１０１が１つの伸長回路１０７を共通して使用することができるため伸長回路１０７の個数を減らすことが可能となり、回路面積の削減をすることができる。複数の補助情報管理／データ圧縮回路１１１の各々に設ける場合は回路面積が増えるが、圧縮された状態のデータで内部バスを通過することができるため、内部バスのトランザクションを緩和することができる。
【００２４】
＜比較例＞
ここで、実施の形態１の半導体装置の動作の説明に先立ち、その前提として検討した技術（以下、比較例という。）に係る半導体装置について説明する。
【００２５】
図７は、比較例に係るメモリ空間を示した図である。縦軸はメモリ空間を意味し、メモリ空間上には圧縮データと、その圧縮データに対応する補助情報が格納される。図７においては、例示として、圧縮データ＃１と圧縮データ＃１に対応する補助情報＃１とが関連づけられて格納され、圧縮データ＃２と圧縮データ＃２に対応する補助情報＃２とが関連づけられて格納される。
【００２６】
各圧縮データは、演算回路の演算単位（オペレーション）ごとにまとめられて格納される。演算単位とは、データを格納するアドレスのスタートアドレスが変更される単位の処理を意味し、例えば動画像符号化処理であれば、輝度と色差の処理が該当する。動画像符号化処理または動画像復号処理における輝度と色差の処理はそれぞれ独立に処理され、それぞれ別のベースアドレスをもとに算出されたアドレスに対してアクセスが発生する。例えば輝度の処理を行うオペレーション＃１で使用するデータは圧縮データ＃１の領域に圧縮して格納され、色差の処理を行うオペレーション＃２で使用するデータは圧縮データ＃２の領域に圧縮して格納される。そして圧縮データ＃１の領域に格納される圧縮データを読み出すための補助情報は補助情報＃１の領域に格納され、圧縮データ＃２の領域に格納される圧縮データを読み出すための補助情報は補助情報＃２の領域に格納される。
【００２７】
比較例では、圧縮データと、それに対応する補助情報との関連付けは、ソフトウェアがオペレーションごとのベースアドレスと補助情報のベースアドレスを関連付けて管理する必要がある。すなわち、オペレーション＃１のベースアドレス（ＢＡＡ）と、オペレーション＃１で使用される圧縮データ＃１に対応する補助情報＃１のベースアドレス（ＢＡａ）とをソフトウェアで関連付けて管理する必要がある。
【００２８】
＜実施の形態の説明＞
以下に、本実施の形態に係る半導体装置の説明を行う。
【００２９】
図３は、実施の形態１に係るアドレス空間を示す図である。縦軸はメモリ空間を意味し、メモリ空間上には圧縮データと、その圧縮データに対応する補助情報が格納される。例示として、第１の圧縮データである圧縮データ＃１と圧縮データ＃１に対応する第１の補助情報である補助情報＃１が関連づけられて格納され、圧縮データ＃２と圧縮データ＃２に対応する補助情報＃２が関連づけられて格納される。また各圧縮データは、演算回路の演算単位（オペレーション）ごとにまとめられて格納される。本実施の形態では更に、複数の圧縮データを含むように設定された管理単位メモリ空間１０８Ａと、当該管理単位メモリ空間１０８Ａ内に含まれ圧縮データを格納する領域である圧縮データ格納領域１０８Ｂと、当該圧縮データに対応する補助情報が格納される補助情報格納領域１０８Ｃとが設定される。管理単位メモリ空間１０８Ａはメモリ１０８に割り当てられる。
【００３０】
圧縮データ格納領域１０８Ｂは圧縮データを格納することが可能な領域であり、複数の圧縮データが格納される。圧縮データ格納領域１０８ＢはＣＰＵなどの演算回路によって設定され、圧縮データ格納領域１０８Ｂのスタート（始点）アドレス（ＳＴＢ）とエンド（終点）アドレス（ＥＮＢ）は補助情報アドレス生成回路１０３の内部にあるレジスタ（不図示）に設定値が保存される。
【００３１】
補助情報格納領域１０８Ｃは補助情報を格納することが可能な領域であり、複数の補助情報が格納される。図３においては、圧縮データ＃１に対応する補助情報＃１と、圧縮データ＃２に対応する補助情報＃２とが格納される。補助情報アドレス生成回路１０３内部にあるレジスタ（不図示）には、管理単位メモリ空間が設定されるメモリ上の場所を示すアドレスと当該管理単位メモリ空間に格納されている圧縮データに対応する補助情報を格納する補助情報格納領域１０８Ｃのスタートアドレス（ＳＴＣ）との対応関係が設定されている。つまり、いずれの管理単位メモリ空間に圧縮データが格納されているかを判定すれば、レジスタの値から当該圧縮データの対応する補助情報が格納されている補助情報格納領域１０８Ｃのアドレスを算出することができる。なお、補助情報格納領域１０８Ｃは必ずしも対応する圧縮データ格納領域１０８Ｂが存在する管理単位メモリ空間内部に存在する必要はなく、当該管理単位メモリ空間外に存在してもよい。
【００３２】
管理単位メモリ空間１０８Ａは、圧縮データと補助情報の関連付けを行うために設定される領域であり、圧縮データ格納領域１０８Ｂを包含するよう設定される。管理単位メモリ空間１０８Ａはメモリ上に複数設定されてもよいし、１つのみ設定することも可能である。管理単位メモリ空間１０８Ａは、一例として、メモリアドレスの上位数ビットの値によって設定される。例えばメモリアドレスが４０ビットで設定され、管理単位メモリ空間１０８Ａがメモリアドレスの上位８ビットで設定される場合、各管理単位メモリ空間は３２ビット４ギガバイトの空間であり、最大２５６個存在することとなる。管理単位メモリ空間判定回路１０２は、演算回路１０１から発行される圧縮データへのアクセスのアドレスを受け取り、アドレスの上位数ビットをデコードして、当該圧縮データがいずれの管理単位メモリ空間上に格納されているかを判定する。また、上位ビットの値で設定する方法のみならず、別途スタートアドレスとエンドアドレスを設定して管理単位メモリ空間を設定するようにしても良い。その他、内部に複数の圧縮データを含むよう設定されていれば、管理単位メモリ空間を設定する方法はこれらに限定されない。
【００３３】
＜動作の説明＞
図５Ａ、５Ｂ、及び図６Ａ、６Ｂは演算回路がそれぞれリードリクエスト、ライトリクエストを発行した時の動作フローを説明した図である。本フローと合わせて実施の形態１に係る半導体装置の動作を説明する。
【００３４】
図５Ａ、５Ｂは、演算回路から圧縮データに対してリードリクエストが発行された時の動作を示す図である。演算回路１０１がメモリ１０８に対してリードリクエスト（リードトランザクション）を発行すると（ステップＳ１）、リードリクエストを受けた管理単位メモリ空間判定回路１０２は、リード先のアドレスがいずれの管理単位メモリ空間に存在するかをアドレス上位ビット（例えば、ビット３２〜３９）で判定する（ステップＳ２）。リード先アドレスが含まれる管理単位メモリ空間を判定した後、補助情報アドレス生成回路１０３は、当該リード先アドレスが圧縮データ格納領域１０８Ｂ内へのアクセスであるかを判定する（ステップＳ３）。リード先アドレスがメモリ１０８の圧縮データ格納領域１０８Ｂ内へのアクセスである場合、補助情報アドレス生成回路１０３は、管理単位メモリ空間判定回路１０２の判定結果から、圧縮データに対応する補助情報格納領域１０８Ｃのスタートアドレス（ＳＴＣ）を導き出し、当該スタートアドレス（ＳＴＣ）とリード先アドレス（例えば、ビット８〜３１）とを用いて、補助情報アドレスを生成する（ステップＳ４）。なお、ステップＳ３とステップＳ４を逆にして、データが圧縮データであるかに関わらず補助情報アドレスを生成した後に、アクセス先が圧縮データであるかを判定して、補助情報アドレスを利用するか否かを決定することも可能である。
【００３５】
以下、補助情報アドレスを生成する動作について説明する。
【００３６】
説明を図３に戻す。図３に示すように、管理単位メモリ空間１０８Ａは圧縮データ格納領域１０８Ｂを包含するように設定されている。また補助情報格納領域１０８Ｃに関しても、複数の補助情報が包含されるように設定される。
【００３７】
図４は、管理単位メモリ空間１０８Ａと補助情報格納領域１０８Ｃの対応関係を示す図である。図４を参照し、圧縮データ＃１を読み出す例を述べる。
【００３８】
まず第１に、補助情報アドレス生成回路１０３は、管理単位メモリ空間判定回路１０２の判定結果から、アクセスする圧縮データが存在する管理単位メモリ空間１０８Ａのスタートアドレス（ＳＴＡ）を取得する。そして、管理単位メモリ空間１０８Ａのスタートアドレス（ＳＴＡ）をベースとして、ベースのアドレスと圧縮データ＃１のアドレス（ＳＴＢ１）との差分値（図４のＤａの距離）を算出する。
【００３９】
今、補助情報のサイズは元の圧縮データのサイズよりも１／Ｍ（Ｍは定数で、圧縮データと補助情報のデータサイズ比）倍であることを想定している。そのため、圧縮データが格納される領域は補助情報が格納される領域よりも１／Ｍ倍の大きさである。また、本実施の形態では、複数の圧縮データが格納される順番と、複数の対応する補助情報が格納される順番は等しくなるよう保存される。従って、管理単位メモリ空間１０８Ａ内に含まれるＮ番目の圧縮データは、補助情報格納領域１０８Ｃの中に含まれるＮ番目の補助情報に対応することとなる。そのため、管理単位メモリ空間のスタートアドレス（ＳＴＡ）と圧縮データ＃１のアドレスとの差分値(図４のＤａの距離)と、補助情報格納領域１０８Ｃのスタートアドレス（ＳＴＣ）とを用いて補助情報＃１のアドレス（第１の補助情報アドレス）を算出することができる。補助情報は圧縮データのサイズの１／Ｍ倍の大きさであるから、ベースのアドレスと圧縮データ＃１のアドレスとの差分値であるＤａの距離が求まれば、その値を１／Ｍ倍したものが補助情報格納領域１０８Ｃのスタートアドレス（ＳＴＣ）と補助情報＃１のアドレスの差分値(図４のＤｂの距離)となるためである。すなわち、管理単位メモリ空間１０８Ａのスタートアドレス（ＳＴＡ）と圧縮データ＃１のアドレスとの差分値を１／Ｍ倍したものを、補助情報格納領域１０８Ｃのスタートアドレス（ＳＴＣ）に加算することで、補助情報＃１のアドレスを算出することができる。このとき、管理単位メモリ空間内１０８Ａにおける圧縮データの相対的格納位置と、補助情報格納領域１０８Ｃ内における当該圧縮データに対応する補助情報の相対的格納位置とが一致するように、圧縮データと補助情報が格納されることとなる。
【００４０】
以上のように、管理単位メモリ空間のスタートアドレス（ＳＴＡ）をベースとして、ベースのアドレスと圧縮データ＃１のアドレスとの差分値の計算を行い、当該差分値を整数倍で縮小した値を補助情報格納領域１０８Ｃのスタートアドレス（ＳＴＣ）に加算した値が、補助情報＃１のアドレス値となる。そしてこのとき、管理単位メモリ空間単位内部で見たときの圧縮データの相対格納位置と、補助情報格納領域単位内部で見たときの圧縮データに対応する補助情報の相対格納位置は同じになる。つまり、換言すれば、管理単位メモリ空間のデータサイズを１／Ｍ倍に縮小し、管理格納される圧縮データを、当該圧縮データに対応する補助情報に置き換えたものが補助情報格納領域ということもできる。
【００４１】
以上のようにして、圧縮データのリード先アドレスから、補助情報のアドレスを算出することが可能となる。つまり、圧縮データと補助情報は、管理単位メモリ空間が設定されるメモリ上の場所を示すアドレスと、補助情報格納領域のスタートアドレスと、圧縮データへのリード先アドレスのみを用いて関連付けすることができる。そのため、ページングなどの制御をする必要がなく、ソフトウェアの処理量を削減し、処理時間を削減することが可能となる。
【００４２】
説明を図５Ａに戻す。以上のように補助情報アドレスを生成した後（ステップＳ４）、補助情報アドレス生成回路１０３は、生成した補助情報アドレスに対応する補助情報が補助情報キャッシュ１０４に存在するか確認する（ステップＳ５）。対応する補助情報が補助情報キャッシュ１０４内に存在している場合（ステップＳ５でＹＥＳの場合）、図５Ｂに示すように、補助情報キャッシュ１０４から当該補助情報を読み出し（ステップＳ６）、当該補助情報を用いてコマンド変換／データ圧縮回路１０５にてリードリクエストの内容を変換し（ステップＳ７）、当該リードリクエストをメモリコントローラ１０６に発行する（ステップＳ８）。また、補助情報キャッシュ１０４に、生成した補助情報アドレスに対応する補助情報が含まれていない場合は（ステップＳ５でＮＯの場合）、当該補助情報アドレスを使用して補助情報をメモリ１０８から例えば１２８バイト読み出したのち、補助情報キャッシュ１０４に格納する（ステップＳ９）。
【００４３】
またステップＳ３において、リード先アドレスが圧縮データ領域外へのリードリクエストである場合（ステップＳ３でＮＯの場合）、補助情報アドレス生成回路１０３は補助情報を生成することなく、演算回路１０１から発行されたリードリクエストは変換されないままメモリコントローラ１０６に出力される。
【００４４】
なお、補助情報キャッシュ１０４が存在しない場合は、補助情報アドレス生成回路１０３が補助情報アドレスを生成後（ステップＳ４）、補助情報キャッシュ１０４へアクセスすることなくメモリ１０８から補助情報を読み出し、読み出した補助情報を用いてコマンドを変換する（ステップＳ７）。
【００４５】
図６Ａ、６Ｂは、演算回路からメモリに対してライトリクエストが発行された時の動作を示す図である。ステップＳ１１からＳ１４まではリードリクエストのステップＳ１からＳ４と同様であるため説明を省略する。
【００４６】
ステップＳ１３において、ライトリクエストが圧縮データ格納領域１０８Ｂへのライトである場合（ステップＳ１３でＹＥＳの場合）、ステップＳ１４で補助情報アドレスを生成した後、データを圧縮し、当該データに対応する補助情報を生成する（ステップＳ１５）。生成された補助情報は補助情報キャッシュ１０４に格納された後メモリ１０８に格納されるが、一回のメモリアクセスでより多くの補助情報をメモリ１０８へ格納するために、一回でメモリ１０８へ転送できる最大サイズ分（例えば、６４バイト）の補助情報を補助情報キャッシュ１０４に格納してから、メモリ１０８にまとめて書き出しを行う。そのため、補助情報を生成した後、補助情報キャッシュ１０４に補助情報を書き込む空きがない場合（ステップＳ１６でＮＯの場合）、つまり補助情報がメモリ１０８で転送できる最大サイズ分既に格納されていた場合、図６Ｂに示すように、既に格納されていた分の補助情報をメモリ１０８に書き込み（ステップＳ１９）、補助情報キャッシュ１０４の空いたスペースに新たに生成した補助情報を書き込む（ステップＳ１７）。そして補助情報を補助情報キャッシュ１０４に格納した後、圧縮データをメモリ１０８に書き込む（ステップＳ１８）。一方、補助情報キャッシュ１０４に補助情報を書き込む空きがある場合(ステップＳ１６でＹＥＳの場合)、補助情報を補助情報キャッシュ１０４に書き込み（ステップＳ１７）、転送できる最大サイズ分補助情報が格納されるまでメモリ１０８への転送を待つ。
【００４７】
補助情報がメモリ１０８に書き込まれるときに生成される補助情報アドレスは、補助情報を読み出すときと同様に、管理単位メモリ空間が設定されるメモリ上の場所を示すアドレスと、補助情報格納領域１０８Ｃのスタートアドレス（ＳＴＣ）とから生成される。
【００４８】
以上のように、実施の形態１では、圧縮データ格納領域１０８Ｂを包含する管理単位メモリ空間１０８Ａと、補助情報を包含する補助情報格納領域１０８Ｃとを設定し、管理単位メモリ空間１０８Ａが設定されるメモリ上の場所を示すアドレスと、補助情報格納領域１０８Ｃのスタートアドレス（ＳＴＣ）と圧縮データの格納アドレスとから補助情報アドレスを算出する。これにより、圧縮データと補助情報の対応づけに必要な処理を軽量化し、ソフトウェアの処理量や計算に必要な処理時間を削減することができる。
【００４９】
（実施の形態２）
図８は、実施の形態２に係る半導体システムの構成を示す図である。図８に示す半導体システム２０は半導体装置２００およびメモリ２０８により構成される。半導体装置２００は、第一演算回路２０１＿１、第二演算回路２０１＿２、・・・、第Ｎ演算回路２０１＿Ｎと、第一補助情報管理／データ圧縮回路２１１＿１、第二補助情報管理／データ圧縮回路２１１＿２、・・・、第Ｎ補助情報管理／データ圧縮回路２１１＿Ｎと、バス２０９と、伸長回路２０７を有するメモリコントローラ２０６と、を備える。バス２０９は補助情報アクセス判定回路２１０とバス優先度制御回路２１２とを備える。実施の形態１と比較して、バス２０９に、補助情報アクセス判定回路２１０とバス優先度制御回路２１２とを新たに備えたことが異なる。補助情報アクセス判定回路２１０は、第一演算回路２０１＿１、第二演算回路２０１＿２、・・・、第Ｎ演算回路２０１＿Ｎからアクセスアドレスを受け取り、アクセス先が補助情報のアドレスであるか否かを判定する。バス優先度制御回路２１２は、補助情報アクセス判定回路２１０が補助情報のアクセスであると判定した場合に、当該アクセスの優先度を上げる調停を行う。
【００５０】
第一補助情報管理／データ圧縮回路２１１＿１〜第Ｎ補助情報管理／データ圧縮回路２１１＿Ｎのそれぞれは、管理単位メモリ空間判定回路２０２と補助情報アドレス生成回路２０３と補助情報キャッシュ２０４とコマンド変換／データ圧縮回路２０５とを備える。以下、第一補助情報管理／データ圧縮回路２１１＿１について説明するが、第二補助情報管理／データ圧縮回路２１１＿２、・・・、第Ｎ補助情報管理／データ圧縮回路２１１＿Ｎについても同様である。
【００５１】
管理単位メモリ空間判定回路２０２は、例えばアドレスの上位ビットを用いてアクセス先の管理単位メモリ空間を判定し、判定結果を補助情報アドレス生成回路２０３に出力する。
【００５２】
補助情報アドレス生成回路２０３は、管理単位メモリ空間判定回路２０２からの判定結果から、アクセス先の圧縮データに対応する補助情報が格納されている補助情報格納領域１０８Ｃのスタートアドレス（ＳＴＣ）を算出し、補助情報アドレスを生成する。そして、当該生成した補助情報アドレスを補助情報キャッシュ２０４に出力する。
【００５３】
補助情報キャッシュ２０４は、アクセスがリードアクセスである場合、補助情報アドレス生成回路２０３から出力された補助情報アドレスに格納される補助情報が、補助情報キャッシュ２０４内部に格納されているか確認する。対応する補助情報が存在すれば、当該補助情報をコマンド変換／データ圧縮回路２０５に出力して圧縮データを読み出し、存在しない場合はメモリ２０８から補助情報を読み出す。この際、補助情報へのリードリクエスト発行はリードコマンド変換／データ圧縮回路２０５が行う。また、アクセスがライトアクセスである場合は、コマンド変換／データ圧縮回路２０５は圧縮データをメモリ２０８に書き込み、かつ、圧縮時に生成された補助情報を補助情報キャッシュ２０４に書き込む。補助情報キャッシュ２０４に書き込まれた補助情報は、補助情報アドレス生成回路２０３によって生成された補助情報アドレスと共に関連付けられて管理される。
【００５４】
コマンド変換／データ圧縮回路２０５は、コマンドの変換とデータの圧縮処理を行う。第一演算回路２０１＿１は、データをコマンド変換／データ圧縮回路２０５に出力する。コマンド変換／データ圧縮回路２０５は、第一演算回路２０１＿１が出力したデータを圧縮し、その圧縮後のデータ長を補助情報として補助情報キャッシュ２０４に出力する。また、コマンド変換／データ圧縮回路２０５は、補助情報である圧縮データ長をもとにリードリクエストを、圧縮後のデータ長だけ読み出すように内容を変換する。
【００５５】
補助情報アクセス判定回路２１０は、第一演算回路２０１＿１〜第Ｎ演算回路２０１＿Ｎからアクセスアドレスを受け取り、補助情報へのアクセスであるか否かを判定する。
【００５６】
バス優先度制御回路２１２は、補助情報アクセス判定回路２１０からの判定結果が補助情報のアクセスであると判定された場合に、アクセスの優先度を上げる調停を行う。
【００５７】
実施の形態１で述べたように、圧縮データを読み出す際に補助情報が補助情報キャッシュ２０４内に存在しないとき、メモリ２０８から補助情報を読み出し、読み出した補助情報を用いて圧縮データを読み出すためのリードリクエストを生成する必要がある。そのため、補助情報を読み出しに遅延が生じた場合、コマンド変換／データ圧縮回路２０５による圧縮データのリードリクエスト発行も同様に遅延し、リードレイテンシが増大してしまう。
【００５８】
本実施の形態に係る構成では、補助情報アクセス判定回路２１０は、第一演算回路２０１＿１〜第Ｎ演算回路２０１＿Ｎからのアクセスアドレスが補助情報のアドレスであるか否かを判定し、アクセス先が補助情報のアドレスである際には、バス優先度制御回路２１２が補助情報を優先してメモリ２０８から読み出すようアクセスの優先度を上げる調停を行う。
【００５９】
以上のように補助情報のアクセスに高い優先順位を割り当てることで、補助情報のリードレイテンシを短くすることが可能となり、コマンド変換／データ圧縮回路２０５は少ない遅延で圧縮データのリードコマンドの発行をすることができる。そのため、圧縮データを読み出すためのリードレイテンシを削減することができる。
【００６０】
（実施の形態３）
図９は、実施の形態３に係る半導体システムの構成を示す図である。図９に示す半導体システム３０は半導体装置３００とメモリ３０８とにより構成されている。半導体装置３００は、第一演算回路３０１＿１、第二演算回路３０１＿２、・・・、第Ｎ演算回路３０１＿Ｎと、第一補助情報管理／データ圧縮回路３１１＿１、第二補助情報管理／データ圧縮回路３１１＿２、・・・、第Ｎ補助情報管理／データ圧縮回路３１１＿Ｎと、バス優先度制御回路３１２を有するバス３０９と、伸長回路３０７を有するメモリコントローラ３０６と、を備える。実施の形態１及び実施の形態２では、補助情報キャッシュ２０４は第一補助情報管理／データ圧縮回路２１１＿１〜第Ｎ補助情報管理／データ圧縮回路２１１＿Ｎにそれぞれ１つ設けられていた。一方、本実施の形態では、補助情報キャッシュ３０４は第一補助情報管理／データ圧縮回路３１１＿１〜第Ｎ補助情報管理／データ圧縮回路３１１＿Ｎの外に１つのみ設けられ、第一補助情報管理／データ圧縮回路３１１＿１〜第Ｎ補助情報管理／データ圧縮回路３１１＿Ｎが１つの補助情報キャッシュ３０４を共有する点が実施の形態１及び実施の形態２と相違する。補助情報キャッシュ３０４は、複数の演算回路におけるリードアクセス時の補助情報の制御を一元管理している。
【００６１】
第一補助情報管理／データ圧縮回路３１１＿１〜第Ｎ補助情報管理／データ圧縮回路３１１＿Ｎのそれぞれは、管理単位メモリ空間判定回路３０２と補助情報アドレス生成回路３０３とコマンド変換／データ圧縮回路３０５とを備える。以下、第一補助情報管理／データ圧縮回路３１１＿１について説明するが、第二補助情報管理／データ圧縮回路３１１＿２、・・・、第Ｎ補助情報管理／データ圧縮回路３１１＿Ｎについても同様である。
【００６２】
管理単位メモリ空間判定回路３０２は、例えばアドレスの上位ビットを用いてアクセス先の管理単位メモリ空間１０８Ａを判定し、判定結果を補助情報アドレス生成回路３０３に出力する。
【００６３】
補助情報アドレス生成回路３０３は、管理単位メモリ空間判定回路３０２からの判定結果とアクセスアドレスから補助情報アドレスを生成し、リードアクセスの場合は補助情報キャッシュ３０４に、補助情報のリードリクエストを出力する。ライトアクセスの場合はコマンド変換／データ圧縮回路３０５に圧縮データへのアクセスアドレスと補助情報アドレスを出力する。
【００６４】
補助情報キャッシュ３０４は、リードアクセス時において、第一補助情報管理／データ圧縮回路３１１＿１、第二補助情報管理／データ圧縮回路３１１＿２、・・・、第Ｎ補助情報管理／データ圧縮回路３１１＿Ｎが生成する全ての補助情報の管理を行う。補助情報アドレス生成回路３０３は補助情報キャッシュ３０４に補助情報アドレスを出力し、補助情報キャッシュ３０４内に当該補助情報アドレスに対応する補助情報があるか確認する。対応する補助情報が存在する場合、当該補助情報をコマンド変換／データ圧縮回路３０５に出力し、存在しない場合はバス３０９を経由して、メモリ３０８から補助情報をリードする。
【００６５】
コマンド変換／データ圧縮回路３０５は、コマンドの変換、データ圧縮処理およびライトアクセス時の補助情報の管理を行う。第一演算回路３０１＿１は、データをコマンド変換／データ圧縮回路３０５に出力する。コマンド変換／データ圧縮回路３０５はメモリ３０８に対してライトリクエストを発行し、第一演算回路３０１＿１が出力したデータを圧縮してメモリ３０８に格納する。また、補助情報アドレス生成回路３０３から出力された補助情報アドレスに、データを圧縮することによって得た補助情報を格納する。
【００６６】
また、コマンド変換／データ圧縮回路３０５は、補助情報である圧縮データ長をもとにコマンドのアクセス長を変換する。コマンド変換／データ圧縮回路３０５は、圧縮データと補助情報を、バス３０９を経由してメモリ３０８に格納する。
【００６７】
演算回路がリードリクエストを発行するためにはリードする圧縮データに対応する補助情報が必要なため、補助情報のリードアクセスは低レイテンシが要求される。レイテンシが大きい場合、リクエストの発行が遅れ、その遅れがリードデータのレイテンシにそのまま影響する。そのため、バス優先度制御回路３１２は第一補助情報管理／データ圧縮回路３１１＿１〜第Ｎ補助情報管理／データ圧縮回路３１１＿Ｎ及び補助情報キャッシュ３０４からのアクセスを受け取り、補助情報キャッシュ３０４からの補助情報のアクセスの優先度を上げて調停を行う。このように、補助情報アクセスのバスマスタを個別にすることで、バス調停におけるアクセス判定処理を削減でき、容易に優先度の制御をすることができる。
【００６８】
以上、本発明者らによってなされた発明を実施形態に基づき具体的に説明したが、本発明は、上記実施形態に限定されるものではなく、種々変更可能であることはいうまでもない。
【符号の説明】
【００６９】
１０・・・半導体システム
１００・・・半導体装置
１０１・・・演算回路
１０２・・・管理単位メモリ空間判定回路
１０３・・・補助情報アドレス生成回路
１０４・・・補助情報キャッシュ
１０５・・・コマンド変換／データ圧縮回路
１０６・・・メモリコントローラ
１０７・・・伸長回路
１０８・・・メモリ
１０８Ａ・・・管理単位メモリ空間
１０８Ｂ・・・圧縮データ格納領域
１０８Ｃ・・・補助情報格納領域
１０９・・・バス
１１１・・・補助情報管理／データ圧縮回路
【図１】
2019061631.tif 000003
【図２】
2019061631.tif 000004
【図３】
2019061631.tif 000005
【図４】
2019061631.tif 000006
【図５Ａ】
2019061631.tif 000007
【図５Ｂ】
2019061631.tif 000008
【図６Ａ】
2019061631.tif 000009
【図６Ｂ】
2019061631.tif 000010
【図７】
2019061631.tif 000011
【図８】
2019061631.tif 000012
【図９】
2019061631.tif 000013