(57)【要約】【課題】データの一貫性が実現される半導体装置を提供する。【解決手段】半導体装置が実行する処理は、データを圧縮して圧縮データおよびその情報量を表す圧縮情報を生成するステップ（Ｓ１２１０）と、メモリ領域へのアクセスを制御する管理データにアクセスするステップ（Ｓ１２２０）と、アクセスされる領域が他の圧縮伸長モジュールに専有されていないことが当該管理データに示されていることに基づいて、所定のデータサイズ単位でメモリ領域への書き込みを許可するステップ（Ｓ１２３０）と、データを書き込んで管理データを更新するステップ（Ｓ１２４０）と、アクセスされる領域が他の圧縮伸長モジュールに専有されていないことが管理データに示されていることに基づいて、当該データサイズ単位で当該領域からの読み出しを許可するステップ（１２５０）と、当該領域から圧縮データおよび圧縮情報を読み出すステップ（Ｓ１２６０）とを含む。【選択図】図１２
2020102102.tif 000002
【特許請求の範囲】
【請求項１】
データを圧縮または伸長するための第１の圧縮伸長モジュールと、
データを圧縮または伸長するための第２の圧縮伸長モジュールと、
前記第１の圧縮伸長モジュールによって生成された圧縮データまたは前記第２の圧縮伸長モジュールによって生成された圧縮データを格納するためのメモリと、
定められたデータサイズ単位で、前記第１の圧縮伸長モジュールおよび前記第２の圧縮伸長モジュールによる前記メモリへのアクセスを排他的に制御するための管理モジュールとを備え、
前記第１の圧縮伸長モジュールは、
データを圧縮して、前記圧縮データと前記圧縮データのデータ量を示す圧縮情報とを出力するためのロスレス圧縮処理部と、
前記圧縮データを伸長して圧縮前のデータを出力するためのロスレス伸長処理部と、
前記アクセスを管理するためのデータに基づいて、前記定められたデータサイズ単位で前記メモリにおける圧縮データの書き込みまたは読み出しを制御するための圧縮情報管理部とを含み、
前記圧縮情報管理部は、
前記メモリへのライトアクセスが行なわれる場合に、前記ライトアクセスによりアクセスされる領域が他の圧縮伸長モジュールに専有されていないことが前記管理モジュールによって示されている時、前記定められたデータサイズ単位で前記領域への書き込みを許可し、
前記メモリへのリードアクセスが行なわれる場合に、前記リードアクセスによりアクセスされる領域が他の圧縮伸長モジュールに専有されていないことが前記管理モジュールによって示されている時、前記定められたデータサイズ単位で前記領域からの読み出しを許可する、半導体装置。
【請求項２】
前記排他的な制御の対象となるアドレス空間のサイズは、前記圧縮データを生成するための圧縮処理の単位と、前記圧縮情報とに基づいて規定されている、請求項１に記載の半導体装置。
【請求項３】
前記圧縮情報管理部は、前記アドレス空間に対する最初のアクセスに基づいて、前記アドレス空間のロックを要求する、請求項２に記載の半導体装置。
【請求項４】
前記ロックを要求することは、前記アドレス空間がロックされるまで、再度ロックを要求することを含む、請求項３に記載の半導体装置。
【請求項５】
前記メモリにおいてアドレス空間を専有している圧縮伸長モジュールに対して、前記アドレス空間の解放を指示するための強制解放指示部をさらに備える、請求項１に記載の半導体装置。
【請求項６】
前記第１の圧縮伸長モジュールは、第１の信号処理モジュールに接続されており、
前記第２の圧縮伸長モジュールは、第２の信号処理モジュールに接続されており、
前記強制解放指示部は、
前記第１の圧縮伸長モジュールによるアドレス空間のロックの試みが設定された回数失敗したことに基づいて、前記アドレス空間をロックしている他の圧縮伸長モジュールに対して、前記アドレス空間を解放する指示を出力するように構成されている、請求項５に記載の半導体装置。
【請求項７】
データを圧縮または伸長するための第１の圧縮伸長モジュールと、
データを圧縮または伸長するための第２の圧縮伸長モジュールと、
前記第１の圧縮伸長モジュールによって生成された圧縮データまたは前記第２の圧縮伸長モジュールによって生成された圧縮データを格納するためのメモリと、
前記メモリへのデータの格納を制御するためのメモリコントローラとを備え、
前記第１の圧縮伸長モジュールは、前記メモリへのアクセスを管理するためのデータに基づいて、前記メモリにおける前記定められたデータサイズ単位での圧縮データの書き込みまたは読み出しを制御するための圧縮情報管理部を含み、
前記メモリコントローラは、
データを圧縮して圧縮データと圧縮情報とを出力するためのロスレス圧縮処理部と、
前記圧縮データを伸長して圧縮前のデータを出力するためのロスレス伸長処理部と、
定められたデータサイズ単位で、前記第１の圧縮伸長モジュールおよび前記第２の圧縮伸長モジュールによる前記メモリへのアクセスを排他的に制御するための管理モジュールとを含み、
前記圧縮情報管理部は、
前記メモリへのライトアクセスが行なわれる場合に、前記ライトアクセスによりアクセスされる領域が他の圧縮伸長モジュールに専有されていないことが前記管理モジュールによって示されている時、前記定められたデータサイズ単位で前記領域への書き込みを許可し、
前記メモリへのリードアクセスが行なわれる場合に、前記リードアクセスによりアクセスされる領域が他の圧縮伸長モジュールに専有されていないことが前記管理モジュールによって示されている時、前記定められたデータサイズ単位で前記領域からの読み出しを許可する、半導体装置。
【請求項８】
前記排他的な制御の対象となるアドレス空間のサイズは、圧縮データを生成するための圧縮処理の単位と、前記圧縮データのデータ量を示す圧縮情報とに基づいて規定されている、請求項７に記載の半導体装置。
【請求項９】
前記圧縮情報管理部は、前記アドレス空間に対する最初のアクセスに基づいて、前記アドレス空間のロックを要求する、請求項８に記載の半導体装置。
【請求項１０】
前記ロックを要求することは、前記アドレス空間がロックされるまで、再度ロックを要求することを含む、請求項９に記載の半導体装置。
【請求項１１】
前記メモリにおいてアドレス空間を専有している圧縮伸長モジュールに対して、前記アドレス空間の解放を指示するための強制解放指示部をさらに備える、請求項７に記載の半導体装置。
【請求項１２】
前記第１の圧縮伸長モジュールは、第１の信号処理モジュールに接続されており、
前記第２の圧縮伸長モジュールは、第２の信号処理モジュールに接続されており、
前記強制解放指示部は、
前記第１の圧縮伸長モジュールによるアドレス空間のロックの試みが設定された回数失敗したことに基づいて、前記アドレス空間をロックしている他の圧縮伸長モジュールに対して、前記アドレス空間を解放する指示を出力するように構成されている、請求項１１に記載の半導体装置。
【請求項１３】
半導体装置においてデータのアクセスを制御するための方法であって、
データを圧縮して圧縮データおよび前記圧縮データの情報量を表す圧縮情報を生成するロスレス圧縮処理を実行するステップと、
定められたデータサイズ単位で前記半導体装置のメモリへの圧縮データの書き込みを制御する管理データにアクセスするステップと、
前記メモリへのライトアクセスが行なわれる場合に、前記ライトアクセスによりアクセスされる領域が他の圧縮伸長モジュールに専有されていないことが前記管理データによって示されていることに基づいて、前記定められたデータサイズ単位で前記領域への書き込みを許可するステップと、
前記許可に基づいて、前記圧縮データを前記領域に書き込むステップと、
前記メモリへのリードアクセスが行なわれる場合に、前記リードアクセスによりアクセスされる領域が他の圧縮伸長モジュールに専有されていないことが前記管理データによって示されていることに基づいて、前記定められたデータサイズ単位で前記領域からの読み出しを許可するステップと、
前記読み出しの許可に基づいて、前記領域から圧縮データを読み出すステップとを含む、方法。
【請求項１４】
前記排他的な制御の対象となるアドレス空間のサイズは、圧縮データを生成するための圧縮処理の単位と、前記圧縮情報とに基づいて規定されている、請求項１３に記載の方法。
【請求項１５】
前記アドレス空間に対する最初のアクセスに基づいて、前記アドレス空間のロックを要求するステップをさらに含む、請求項１４に記載の方法。
【請求項１６】
前記ロックを要求するステップは、前記アドレス空間がロックされるまで、再度ロックを要求することを含む、請求項１５に記載の方法。
【請求項１７】
前記メモリにおいてアドレス空間を専有している圧縮伸長モジュールに対して、前記アドレス空間の解放を指示するステップをさらに含む、請求項１３に記載の方法。
【請求項１８】
前記解放を指示するステップは、複数の圧縮伸長モジュールのうちの一つの圧縮伸長モジュールによるアドレス空間のロックの試みが設定された回数失敗したことに基づいて、前記アドレス空間をロックしている他の圧縮伸長モジュールに対して、前記アドレス空間を解放する指示を出力することを含む、請求項１７に記載の方法。
【請求項１９】
前記解放を指示するステップは、メモリコントローラが前記圧縮伸長モジュールに対して前記アドレス空間の解放を指示することを含む、請求項１７に記載の方法。
【請求項２０】
前記圧縮データおよび前記圧縮情報を生成するステップは、メモリコントローラが、前記圧縮データおよび前記圧縮情報を生成することを含む、請求項１３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は半導体装置に関し、例示的には、半導体装置におけるデータのアクセスの排他制御に関する。
【背景技術】
【０００２】
半導体装置におけるデータ処理に関し、各モジュールによる処理が高度化するにつれて要求されるメモリ帯域が増大している。これに対応するために、例えば、特開平１０−２７１２７号公報（特許文献１）は、「データを圧縮して記憶装置に格納し、演算時に伸張して使用することにより、記憶装置に占めるデータの容量を削減する」技術、および、「記憶装置と演算器の間のデータの転送量を減らしてコンピュータの処理速度を向上させる」技術を開示している。当該技術は、「演算器１と演算結果を記憶装置に書き込むためのバス制御回路４の間に、データの圧縮回路５及び伸張回路６を設け、演算結果の圧縮と記憶装置からの入力データの伸張を行なう。圧縮されたデータは、アドレス生成器２で求められた論理アドレス７をページング制御回路３で変換した物理アドレス８に格納されるとともに、ページング変換の過程において、圧縮方法の情報をページテーブルに格納する。記憶装置から圧縮されたデータを参照する際は、前記ページテーブル内の情報を元に伸張処理が行なわれ、演算器１で演算される」というものである（以上、［要約］参照）。
【０００３】
また、特開２０１７−１０２５２４号公報（特許文献２）は、「より適切に圧縮及び伸張を行うことが可能な半導体装置」を開示している。当該半導体装置は、「半導体装置１００は、演算モジュール１１０とメモリ制御モジュール１２０とを備え、演算モジュール１１０は、演算処理を実行する演算器１１１と、演算処理結果のデータを圧縮する圧縮回路１１と、を備え、メモリ制御モジュール１２０は、圧縮されたデータをメモリに書き込み、書き込まれたデータをメモリから読み出すアクセス回路１２１と、メモリから読み出されたデータを伸張し、伸張されたデータを演算モジュール１１０へ出力する伸張回路２１と、を備える。」というものである（以上［要約］参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−２７１２７号公報
【特許文献２】特開２０１７−１０２５２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献２に開示された技術によると、データを効率よく圧縮するために、演算モジュールはバッファを備える。バッファは、圧縮で必要とされるデータ量が蓄積されるまでデータを保持する。演算モジュールが処理を終了した時点でバッファ内のデータ量が圧縮に必要な量に満たない時、終端のデータがバッファ内に留まり続ける。例えば、ある信号処理モジュールの処理結果を他の信号処理モジュールが利用する場合、当該他の信号処理モジュールは、正しい終端を有するデータを利用できなくなり、データの一貫性が実現されなくなる。
【０００６】
また、ロスレス圧縮方式が用いられる場合、圧縮後のデータ量が可変となることから、圧縮が必要とするデータ量単位ごとに圧縮後のデータ量を示す情報（以下「圧縮情報」ともいう。）が存在する。圧縮情報を格納するバッファも圧縮伸長を行なう処理モジュールの中に存在するので、終端のデータに対応する圧縮情報も当該バッファにとどまり続ける。
【０００７】
従って、ロスレス圧縮伸長が行なわれてもデータの一貫性が担保される技術が必要とされている。また、信号処理モジュールや圧縮伸長を実行するモジュールの構成を変更することなく、あるいは、各モジュール間におけるデータの入出力のタイミングを確認するための制御を組み入れることなく、データの一貫性が担保される技術が必要とされている。さらに別の局面において、信号処理モジュールの処理単位が明確でない場合の処理の場合、すなわち、バッファからデータの押し出しをするタイミングとなる処理の終端が明確でない場合においてもバッファの押し出しが可能となる技術が必要とされている。
【０００８】
本開示は上述のような背景に鑑みてなされたものであって、ある局面において、ロスレス圧縮処理が実行された場合でもデータの一貫性が担保される技術が開示される。
【課題を解決するための手段】
【０００９】
ある実施の形態に従う半導体装置は、データを圧縮または伸長するための第１の圧縮伸長モジュールと、データを圧縮または伸長するための第２の圧縮伸長モジュールと、第１の圧縮伸長モジュールによって生成された圧縮データまたは第２の圧縮伸長モジュールによって生成された圧縮データを格納するためのメモリと、定められたデータサイズ単位で、第１の圧縮伸長モジュールおよび第２の圧縮伸長モジュールによるメモリへのアクセスを排他的に制御するための管理モジュールとを備える。第１の圧縮伸長モジュールは、データを圧縮して、圧縮データと圧縮データのデータ量を示す圧縮情報とを出力するためのロスレス圧縮処理部と、圧縮データを伸長して圧縮前のデータを出力するためのロスレス伸長処理部と、アクセスを管理するためのデータに基づいて、定められたデータサイズ単位でメモリにおける圧縮データの書き込みまたは読み出しを制御するための圧縮情報管理部とを含む。圧縮情報管理部は、メモリへのライトアクセスが行なわれる場合に、ライトアクセスによりアクセスされる領域が他の圧縮伸長モジュールに専有されていないことが管理モジュールによって示されている時、定められたデータサイズ単位で領域への書き込みを許可し、メモリへのリードアクセスが行なわれる場合に、リードアクセスによりアクセスされる領域が他の圧縮伸長モジュールに専有されていないことが管理モジュールによって示されている時、定められたデータサイズ単位で領域からの読み出しを許可する。
【００１０】
ある局面において、ロスレス圧縮処理が実行された場合でもデータの一貫性が担保される。
【００１１】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【図面の簡単な説明】
【００１２】
【図１】二つの信号処理モジュールがメモリ領域を共有する半導体装置１００の一例を表すブロック図である。
【図２】二つの信号処理モジュールにおける一貫性を実現するために実行される制御のタイミングを表すフローチャートである。
【図３】半導体装置３００のハードウェア構成を表すブロック図である。
【図４】他の局面において二つの信号処理モジュールにおける一貫性を実現するために実行される制御のタイミングを表すフローチャートである。
【図５】半導体装置３００の他の制御構造を説明する図である。
【図６】半導体装置３００の他の動作が実行されるタイミングを表すタイミングチャートである。
【図７】ある実施の形態に従う半導体装置７００のハードウェア構成を表すブロック図である。
【図８】ある局面におけるメモリ１５０において格納されるデータの一例を表す図である。
【図９】第２の実施の形態に従う半導体装置９００のハードウェア構成を表すブロック図である。
【図１０】ある実施の形態に従う半導体装置１０００のハードウェア構成を表すブロック図である。
【図１１】半導体装置１１００のハードウェア構成を表すブロック図である。
【図１２】ある実施の形態に従う半導体装置７００において実行される処理の一部を表わすフローチャートである。
【発明を実施するための形態】
【００１３】
以下、図面を参照しつつ、本明細書に開示される技術思想に係る実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【００１４】
図１および図２を参照して、ある局面に従うメモリアーキテクチャについて説明する。図１は、二つの信号処理モジュールがメモリ領域を共有する半導体装置１００の一例を表すブロック図である。図２は、二つの信号処理モジュールにおける一貫性を実現するために実行される制御のタイミングを表すフローチャートである。
【００１５】
図１に示されるように、半導体装置１００は、ＣＰＵ（Central  Processing  Unit）１１０と、信号処理モジュール１２０，１３０と、メモリコントローラ１４０と、メモリ１５０とを備える。ＣＰＵ１１０と、信号処理モジュール１２０、１３０と、メモリコントローラ１４０とは、それぞれ、バス１６０に接続されている。メモリ１５０は、メモリコントローラ１４０に接続されている。メモリ１５０は、例えば、ＤＤＲ（Double  Data  Rate）−ＳＤＲＡＭ（Synchronous  Dynamic  Random  Access  Memory）であるが、これに限られない。
【００１６】
図２に示されるように、タイミングｔ（１）において、ＣＰＵ１１０は、信号処理モジュール１２０に対して、処理の実行命令を送信する。その実行命令に応答して、信号処理モジュール１２０は、タイミングｔ（２）において処理の実行を開始する。信号処理モジュール１２０は、ある処理単位を完了し、全てのデータがメモリ１５０に格納されたことを確認すると、タイミングｔ（３）において、ＣＰＵ１１０に処理が終了したことを終了割り込みとして通知する。その後、タイミングｔ（４）において、ＣＰＵ１１０は、信号処理モジュール１３０に対して、処理の実行命令を送信する。その実行命令に応答して、信号処理モジュール１３０は、タイミングｔ（５）において処理の実行を開始する。信号処理モジュール１３０は、ある処理単位を完了し、全てのデータがメモリ１５０に格納されたことを確認すると、タイミングｔ（６）において、ＣＰＵ１１０に処理が終了したことを終了割り込みとして通知する。
【００１７】
ある局面において、各信号処理モジュールが要求するメモリの帯域の合計値がメモリ１５０の帯域を上回る場合があり得る。そこで、データを圧縮することが考えられる。データの圧縮として、各信号処理モジュールのデータ入出力部に圧縮伸張モジュール（ＣＤＭ：Compression/Decompression  Module）を設けることが考えられる。データを効率よく圧縮するためには、ある程度のデータ量の単位で処理する必要があり、ＣＤＭはバッファを有する。
【００１８】
そこで、図３および図４を参照して、ある局面に従う半導体装置３００の構成について説明する。図３は、半導体装置３００のハードウェア構成を表すブロック図である。図４は、他の局面において二つの信号処理モジュールにおける一貫性を実現するために実行される制御のタイミングを表すフローチャートである。
【００１９】
図３に示されるように、半導体装置３００は、ＣＰＵ１１０と、信号処理モジュール１２０，１３０と、ＣＤＭ３２０，３３０と、メモリコントローラ１４０と、メモリ１５０とを備える。ＣＤＭ３２０は、バッファ３２１を含む。ＣＤＭ３３０は、バッファ３３１を含む。ＣＰＵ１１０と、ＣＤＭ３２０，３３０と、メモリコントローラ１４０とは、バス１６０に接続されている。メモリ１５０は、メモリコントローラ１４０に接続されている。ＣＤＭ３２０は、信号処理モジュール１２０に接続されている。ＣＤＭ３３０は、信号処理モジュール１３０に接続されている。
【００２０】
図４に示されるように、タイミングｔ（１）において、ＣＰＵ１１０は、信号処理モジュール１２０に対して、処理の実行命令を送信する。その実行命令に応答して、信号処理モジュール１２０は、タイミングｔ（２）において処理の実行を開始する。タイミングｔ（３）から、処理後のデータがＣＤＭ３２０のバッファ３２１に蓄積される。信号処理モジュール１２０は、ある処理単位を完了すると、タイミングｔ（４）において、バッファに蓄積されているデータを出力する指示（以下「バッファフラッシュ要求」ともいう。）をＣＤＭ３２０に送信する。ＣＤＭ３２０は、バッファフラッシュ要求に応答して、バッファ３２１に蓄積されたデータを外部のメモリ１５０に出力する。タイミングｔ（５）において、ＣＤＭ３２０は、バッファ３２１に蓄積されていた全てのデータがメモリ１５０に格納されたことを示す通知（バッファ・フラッシュ・アクノリッジ）を信号処理モジュール１２０に送信する。信号処理モジュール１２０は、その通知を受信すると、タイミングｔ（６）において、終了割り込みをＣＰＵ１１０に出力する。
【００２１】
その後、タイミングｔ（７）において、ＣＰＵ１１０は、信号処理モジュール１３０に対して、処理の実行命令を送信する。その実行命令に応答して、信号処理モジュール１３０は、タイミングｔ（８）において処理の実行を開始する。タイミングｔ（９）から、処理後のデータがＣＤＭ３３０のバッファ３３１に蓄積される。信号処理モジュール１３０は、ある処理単位を完了すると、タイミングｔ（１０）において、バッファフラッシュ要求をＣＤＭ３３０に送信する。ＣＤＭ３３０は、バッファフラッシュ要求に応答して、バッファ３３１に蓄積されたデータを外部のメモリ１５０に出力する。タイミングｔ（１１）において、ＣＤＭ３３０は、バッファ３３１に蓄積されていた全てのデータがメモリ１５０に格納されたことを示す通知（バッファ・フラッシュ・アクノリッジ）を信号処理モジュール１３０に送信する。信号処理モジュール１３０は、その通知を受信すると、タイミングｔ（１２）において、終了割り込みをＣＰＵ１１０に出力する。
【００２２】
図５および図６を参照して、ある局面に従う半導体装置３００の他の制御構造について説明する。図５は、半導体装置３００の他の制御構造を説明する図である。図６は、半導体装置３００の他の動作が実行されるタイミングを表すタイミングチャートである。
【００２３】
図５に示されるように、半導体装置３００では、信号処理モジュール１２０，１３０のモジュール終了割り込みがＣＰＵ１１０に対して出力されると、そのタイミングで、信号処理モジュール１２０，１３０は、ＣＤＭ３２０，３３０に対する、バッファ３２１，３３１からメモリ１５０への押し出し指示として、バッファフラッシュ要求を出力する。バッファ３２１，３３１に蓄積されている全てのデータがメモリ１５０に格納されると、ＣＤＭ３２０，３３０は、圧縮伸長処理終了割り込みをＣＰＵ１１０に対して出力する。
【００２４】
図６を参照して、タイミングｔ（１）において、ＣＰＵ１１０は、信号処理モジュール１２０に対して、処理の実行命令を送信する。その実行命令に応答して、信号処理モジュール１２０は、タイミングｔ（２）において処理の実行を開始する。タイミングｔ（３）から、処理後のデータがＣＤＭ３２０のバッファ３２１に蓄積される。信号処理モジュール１２０は、ある処理単位を完了すると、タイミングｔ（４）において、モジュール終了割り込みをＣＰＵ１１０に対して出力すると共に、バッファフラッシュ要求をＣＤＭ３２０に送信する。ＣＤＭ３２０は、バッファフラッシュ要求に応答して、バッファ３２１に蓄積されたデータを外部のメモリ１５０に出力する。タイミングｔ（５）において、ＣＤＭ３２０は、バッファ３２１に蓄積されていた全てのデータがメモリ１５０に格納されたことを示す通知（バッファ・フラッシュ・アクノリッジ）として、圧縮伸長処理終了割り込みをＣＰＵ１１０に送信する。
【００２５】
その後、タイミングｔ（６）において、ＣＰＵ１１０は、信号処理モジュール１３０に対して、処理の実行命令を送信する。その実行命令に応答して、信号処理モジュール１３０は、タイミングｔ（７）において処理の実行を開始する。タイミングｔ（８）から、処理後のデータがＣＤＭ３３０のバッファ３３１に蓄積される。信号処理モジュール１３０は、ある処理単位を完了すると、タイミングｔ（９）において、モジュール終了割り込みをＣＰＵ１１０に対して出力すると共に、バッファフラッシュ要求をＣＤＭ３３０に送信する。ＣＤＭ３３０は、バッファフラッシュ要求に応答して、バッファ３３１に蓄積されたデータを外部のメモリ１５０に出力する。タイミングｔ（１０）において、ＣＤＭ３３０は、バッファ３３１に蓄積されていた全てのデータがメモリ１５０に格納されたことを示す通知（バッファ・フラッシュ・アクノリッジ）として、圧縮伸長処理終了割り込みをＣＰＵ１１０に送信する。
【００２６】
［第１の実施の形態］
そこで、図７を参照して、処理の終端が明確でない場合においてもデータの一貫性を実現するための技術について説明する。当該技術は、共有メモリへのアクセスを自動で排他制御することにより、圧縮伸長処理が適用されても、信号処理モジュールの構成を変更することなく、あるいは、ＣＰＵ１１０等によるソフトウェアの制御を追加することなく、データの一貫性が実現され得る。
【００２７】
図７は、ある実施の形態に従う半導体装置７００のハードウェア構成を表すブロック図である。半導体装置７００は、信号処理モジュール１２０，１３０と、メモリコントローラ１４０と、メモリ１５０と、排他制御用フラグ管理モジュール７１０と、圧縮伸長モジュール７２０，７３０とを備える。信号処理モジュール１２０と信号処理モジュール１３０とは相互に通信可能に構成されており、ある局面において、いずれかの信号処理モジュールが他の信号処理モジュールにより処理されたデータを使用するように構成される。メモリ１５０は、例えば、ＤＤＲ  ＳＤＲＡＭ（Double-Data-Rate  Synchronous  Dynamic  Random  Access  Memory）であるがその他のメモリであってもよい。
【００２８】
圧縮伸長モジュール７２０，７３０と、メモリコントローラ１４０とは、バス１６０にそれぞれ接続されている。排他制御用フラグ管理モジュール７１０は、圧縮伸長モジュール７２０、７３０に接続されている。圧縮伸長モジュール７２０は、信号処理モジュール１２０にさらに接続されている。圧縮伸長モジュール７３０は、信号処理モジュール１３０にさらに接続されている。
【００２９】
ある局面において、信号処理モジュール１２０，１３０は、トランザクションに対してデータのロスレス圧縮を指示する。信号処理モジュール１２０，１３０は、命令を実行するＣＰＵその他の演算処理装置としてソフトウェアとハードウェアとを組み合わせた態様により実現される。他の局面において、信号処理モジュール１２０，１３０は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）その他のハードウェアとしても構成され得る。
【００３０】
ある局面において、排他制御用フラグ管理モジュール７１０は、メモリ１５０への圧縮データおよび圧縮情報の書き込みと、メモリ１５０からの圧縮データおよび圧縮情報の読み出しとを管理するための演算処理を実行するように構成された複数の回路素子の組み合わせとして実現され得る。他の局面において、排他制御用フラグ管理モジュール７１０は、当該演算処理を実行するプロセッサによって構成されてもよい。
【００３１】
ある局面において、圧縮伸長モジュール７２０は、信号処理モジュール１２０によって出力されるデータをロスレスで圧縮して圧縮データを生成する処理および圧縮データをロスレスで伸長して圧縮前のデータを復元する処理を実行するように構成された回路として実現される。別の局面において、圧縮伸長モジュール７２０は、これらの処理を実現する命令と、当該命令を実行する演算装置との組み合わせとして実現されてもよい。圧縮伸長モジュール７３０も同様である。また、図７には２つの圧縮伸長モジュールが使用される態様が例示されているが、別の局面において、３つ以上の圧縮伸長モジュールが使用されてもよい。
【００３２】
圧縮伸長モジュール７２０は、ロスレス圧縮処理部７２１と、ロスレス伸長処理部７２２と、圧縮情報管理部７２３とを含む。圧縮伸長モジュール７３０は、ロスレス圧縮処理部７３１と、ロスレス伸長処理部７３２と、圧縮情報管理部７３３とを含む。
【００３３】
ロスレス圧縮処理部７２１は、信号処理モジュール１２０のトランザクションに対して、データの圧縮処理を実行し、圧縮後のデータ（圧縮データ）と圧縮情報とを生成する。圧縮情報は、当該圧縮データのデータ量を示す。圧縮データと圧縮情報とは、メモリコントローラ１４０によってメモリ１５０に格納される。例えば、ロスレス圧縮処理部７２１は、メモリ１５０に対するデータの書き込みが可能であることを確認すると、書き込みコマンド（ｗｃｍｄ）と書き込み対象となる圧縮データ（ｗｄａｔａ）をメモリコントローラ１４０に送信する。
【００３４】
他方、圧縮伸長モジュール７２０は、信号処理モジュール１２０からの読み出しの命令を受信すると、ロスレス伸長処理部７２２は読出コマンド（ｒｃｍｄ）をメモリコントローラ１４０に送る。メモリコントローラ１４０は、読出コマンドに応答して、メモリ１５０から圧縮データを読み出して、圧縮伸長モジュール７２０に読み出した圧縮データ（ｒｅａｄ  ｄａｔａ）を送る。ロスレス伸長処理部７２２は、当該圧縮データの伸長処理を行ない、復元されたデータを信号処理モジュール１２０に送信する。信号処理モジュール１２０は、その復元されたデータを用いて所定の処理を実行する。
【００３５】
圧縮情報管理部７２３は、ロスレス圧縮処理部７２１と、ロスレス伸長処理部７２２と、メモリコントローラ１４０とそれぞれ通信可能に構成されている。さらに、圧縮情報管理部７２３は、排他制御用フラグ管理モジュール７１０と通信可能に構成されている。ある局面において、圧縮情報管理部７２３は、メモリコントローラ１４０との間で圧縮情報を通信する。他の局面において、圧縮情報管理部７２３は、アドレス空間に対する最初のアクセスに基づいて、当該アドレス空間のロックを要求する。
【００３６】
ロスレス圧縮処理部７３１は、ロスレス圧縮処理部７２１と同様の処理を実行する。より具体的には、ロスレス圧縮処理部７３１は、信号処理モジュール１３０のトランザクションに対して、データのロスレス圧縮処理を実行する。排他制御の確認の結果、メモリ１５０への書き込みが可能である場合には、圧縮処理により生成された圧縮データは、圧縮伸長モジュール７３０が書き込みコマンド（ｗｃｍｄ）および書き込み対象となる圧縮データをメモリコントローラ１４０に送信し、圧縮データは、メモリコントローラ１４０によってメモリ１５０に格納される。
【００３７】
他方、圧縮伸長モジュール７３０が信号処理モジュール１３０から命令を受信すると、圧縮伸長モジュール７３０は、メモリ１５０へのアクセスが可能であることを確認する。メモリコントローラ１４０がメモリ１５０から圧縮データを圧縮伸長モジュール７３０に読み出すと、ロスレス伸長処理部７３２は、当該データの伸長処理を行なう。圧縮情報管理部７３３は、排他制御用フラグ管理モジュール７１０と通信可能に構成されている。圧縮情報管理部７３３は、メモリコントローラ１４０との間で圧縮情報を通信する。
【００３８】
ある実施の形態において、排他的な制御の対象となるアドレス空間のサイズは、圧縮データを生成するための圧縮処理の単位と、圧縮情報とに基づいて規定されている。例えば、ある局面において、メモリ１５０において共有されるメモリ領域へのアクセスの排他制御は、圧縮伸長モジュール７２０，７３０が管理するデータサイズ単位で管理され得る。一例として、圧縮処理単位が２５６バイトで、圧縮情報の管理単位が６４の場合、排他制御は、１６ｋ（＝２５６×６４＝１６，３８４）バイト単位で実行される。このような構成により、バッファからデータの押し出しをするタイミングとなる処理の終端が明確でない場合においてもバッファの押し出しが可能となる。排他制御は、圧縮情報管理部７２３と排他制御用フラグ管理モジュール７１０との間で行なわれる。
【００３９】
排他制御用フラグ管理モジュール７１０は、当該排他制御用のフラグを管理する。ある局面において、排他制御用フラグ管理モジュール７１０は、フラグ７１１，７１２を含む。ある局面において、フラグは、圧縮伸長モジュールの数だけ用意される。図７に示される例では、２つの圧縮伸長モジュールが例示されているため、２つのフラグが排他制御用フラグ管理モジュール７１０に準備されているが、別の局面において、３つ以上の圧縮伸長モジュールおよびフラグが使用されてもよい。一例として、フラグ７１１，７１２は、それぞれ、圧縮データを格納するためのメモリ空間が、複数の信号処理モジュールのうちのいずれかの信号処理モジュールに割り当てられているか否かを表す。より具体的には、ある局面において、メモリ１５０においてロックしたい領域の先頭アドレスが、フラグ７１１，７１２として使用される。当該先頭アドレスは、圧縮情報管理部７２３，７３３によって、排他制御用フラグ管理モジュール７１０に送信され、排他制御用フラグ管理モジュール７１０に確保された領域に格納される。
【００４０】
ある局面において、メモリ１５０における１６ｋバイトの空間に対する最初のアクセスがロスレス圧縮処理部７２１によって行なわれると、当該アクセスを示す情報は、圧縮情報管理部７２３に送られる。圧縮情報管理部７２３は、当該情報の受信に応答して、排他制御用フラグ管理モジュール７１０に対して当該空間のロックを要求する。排他制御用フラグ管理モジュール７１０は、当該空間のロックを試み、当該空間がロックできたか否かを示す情報を圧縮情報管理部７２３に返す。排他制御用フラグ管理モジュール７１０が当該空間をロックできなかった場合には、当該空間のロックを排他制御用フラグ管理モジュール７１０に再度要求するリトライを実行する。このリトライの頻度は、半導体装置７００の製造事業者によって適宜設定され得る。
【００４１】
ある局面において、圧縮伸長モジュール７２０がメモリ１５０に対してライトアクセスを試みる場合、圧縮伸長モジュール７２０が有する１６ｋバイト空間に対する全ての圧縮データおよび圧縮情報がメモリ１５０に格納された時、圧縮伸長モジュール７２０は、当該１６ｋバイトの空間のロックを解放する。圧縮伸長モジュール７２０が当該空間のロックを解放すると、排他制御用フラグ管理モジュール７１０のフラグの内容を、その旨に更新する。
【００４２】
別の局面において、リードアクセスが行なわれる場合、圧縮伸長モジュール７２０が一時的に保持する、１６ｋバイト空間に対する圧縮情報が、圧縮情報管理部７２３から読み込まれた圧縮情報によって上書きされた時に、圧縮伸長モジュール７２０は、当該空間のロックを解放する。
【００４３】
予め定められた時間、信号処理モジュール１２０からロックした１６ｋバイト空間に対するアクセスがない時、圧縮伸長モジュール７２０は、ライトアクセスの時に、該当する１６ｋバイト空間に対する全てのデータおよび圧縮情報をメモリ１５０に押し出し、当該空間のロックを解放する。
【００４４】
一方、リードアクセスの時、圧縮伸長モジュール７２０は、該当する１６ｋバイト空間に対する圧縮情報を無効（invalid）にし、当該空間のロックを解放する。
【００４５】
次に、図８を参照して、本実施の形態に係るメモリ１５０におけるデータの格納の一態様について説明する。図８は、ある局面におけるメモリ１５０において格納されるデータの一例を表す図である。
【００４６】
あるタイミングにおいて、メモリ１５０は、領域８１１〜８１４，８２１〜８２４を含み、各領域の大きさは予め定められている。圧縮データ８１０と、圧縮情報８２０とを格納している。圧縮データ８１０は、圧縮データ（Ａ）と、圧縮データ（Ｂ）と、圧縮データ（Ｃ）と、圧縮データ（Ｄ）等を含む。圧縮情報８２０は、圧縮情報（Ａ）と、圧縮情報（Ｂ）と、圧縮情報（Ｃ）と、圧縮情報（Ｄ）とを含む。
【００４７】
圧縮データ８１０は、ロスレス圧縮処理部７２１またはロスレス圧縮処理部７３１による圧縮処理によって生成されたデータである。圧縮情報８２０は、圧縮データ８１０のデータ量を含む。例えば、圧縮情報（Ａ）は、圧縮データ（Ａ）のデータ量を示している。圧縮情報（Ｂ）、圧縮情報（Ｃ）、および圧縮情報（Ｄ）も同様である。
【００４８】
例えば、ロスレス圧縮処理部７２１が、信号処理モジュール１２０による処理によって生成されたデータを圧縮して、当該データを圧縮データ（Ａ）として領域８１１に書き込もうとする場合、まず、圧縮伸長モジュール７２０は、圧縮情報管理部７２３を介して、排他制御用フラグ管理モジュール７１０にアクセスする。
【００４９】
一例として、ロスレス圧縮処理部７２１は、圧縮情報管理部７２３を介して、排他制御用フラグ管理モジュール７１０にアクセスして、排他制御管理フラグの内容を確認する。最初の圧縮データを書き込む局面では、メモリ１５０におけるメモリ空間は、いずれの信号処理モジュールにも専有されていないので、当該排他制御管理フラグ（例えば、フラグ７１１）は、メモリ空間（例えば、領域８１１）がいずれの信号処理モジュールにも専有されていないことを示している。
【００５０】
そこで、圧縮情報管理部７２３は、フラグ７１１の内容を、確保したい領域８１１の先頭アドレスに書き換えると共に、当該フラグの内容（領域８１１の先頭アドレス）をロスレス圧縮処理部７２１に送信する。ロスレス圧縮処理部７２１は、当該内容を受信すると、圧縮データ（Ａ）を領域８１１に書き込む指示、および、圧縮情報（Ａ）を領域８２１に書き込む指示を含む命令（例えば、ｗｃｍｄ）と、圧縮データ（Ａ）および圧縮情報（Ａ）とをメモリコントローラ１４０に送る。
【００５１】
メモリコントローラ１４０は、当該命令に基づき、圧縮データ（Ａ）を領域８１１に書き込み、圧縮情報（Ａ）を領域８２１に書き込む。メモリコントローラ１４０は、圧縮データ（Ａ）および圧縮情報（Ａ）の書き込みを終了すると、当該書き込みが終了したことを表す信号をロスレス圧縮処理部７２１に送る。
【００５２】
ロスレス圧縮処理部７２１は、その信号を受信すると、圧縮情報管理部７２３に、領域８１１が信号処理モジュール１２０の専有から解放されたことを通知する。圧縮情報管理部７２３は、領域８１１がいずれの信号処理モジュールにも専有されていないことを示すために、フラグ７１１の内容をクリアする。したがって、その後は、他の信号処理モジュール（例えば、信号処理モジュール１３０）が領域８１１にアクセス可能となり、例えば、領域８１１に格納されている圧縮データの読み出しが可能となる。
【００５３】
次に、リードアクセスの場合、圧縮伸長モジュール７３０が一時的に有する１６ｋバイト空間に対する圧縮情報が新たに読み込んだ圧縮情報で上書きされた場合に、圧縮情報管理部７２３は、当該１６ｋバイト空間のロックを解放する。
【００５４】
より詳しくは、一例として、信号処理モジュール１３０が、メモリ１５０に格納されているデータを用いた処理を実行しようとする場合、圧縮伸長モジュール７３０に対してメモリ１５０からの圧縮データの読み出しを指示する。圧縮伸長モジュール７３０において、圧縮情報管理部７３３は、排他制御用フラグ管理モジュール７１０にアクセスして、読み出そうとする圧縮データへのアクセスが可能か否かを確認する。例えば、信号処理モジュール１３０が領域８１１に格納されている圧縮データ（Ａ）を利用しようとする場合、圧縮情報管理部７３３は、排他制御用フラグ管理モジュール７１０に含まれる全てのフラグの内容を確認する。図７の構成例では、圧縮情報管理部７３３は、フラグ７１１，７１２の内容を確認する。フラグ７１１，７１２の内容が、領域８１１はいずれの信号処理モジュールにも専有されていないことを示している（例えば、フラグ７１１，７１２のいずれにも領域８１１の先頭アドレスが書き込まれていない）場合には、圧縮情報管理部７３３は、領域８１１が信号処理モジュール１３０によって専有されていることを示す内容に変更する指示を、排他制御用フラグ管理モジュール７１０に送信する。排他制御用フラグ管理モジュール７１０は、その指示に応じて、フラグ７１１またはフラグ７１２の内容を変更する。例えば、排他制御用フラグ管理モジュール７１０は、フラグ７１２に領域８１１の先頭アドレスを書き込む。
【００５５】
排他制御用フラグ管理モジュール７１０は、フラグ７１２の内容の変更を終了すると、当該変更が終了したことを表す通知を圧縮伸長モジュール７３０に送る。ロスレス伸長処理部７３２は、その通知の受信に応答して、メモリコントローラ１４０を介して、メモリ１５０にアクセスする。メモリコントローラ１４０は、領域８１１に格納されている圧縮データ（Ａ）と、領域８２１に格納されている圧縮情報（Ａ）とを読み出し、圧縮データ（Ａ）と圧縮情報（Ａ）とを圧縮伸長モジュール７３０に送信する。ロスレス伸長処理部７３２は、読み出された圧縮情報（Ａ）を用いて圧縮データ（Ａ）を伸長し、元のデータを信号処理モジュール１３０に送る。信号処理モジュール１３０は、そのデータを用いて処理を実行する。
【００５６】
以上のようにして、第１の実施の形態に従う半導体装置７００によれば、データの圧縮を適用しても、信号処理モジュール等の信号処理モジュールの機能を変更することなく、また、信号処理モジュールを制御するプロセッサが実行するソフトウェアの制御を追加することなく、データの一貫性を実現することができる。また、信号処理モジュールにおいてデータ処理の開始または終了が明確に存在しない場合であっても、データの一貫性を実現することができる。たとえば、信号処理モジュールの処理単位が明確でない場合の処理が行なわれる場合、すなわち、バッファ押し出しを行なうタイミングとなる処理の終端が明確でない場合であっても、処理単位が所定のデータサイズで規定されていることから、バッファの押し出しを行なうことが可能となる。
【００５７】
［第２の実施の形態］
図９を参照して、第２の実施の形態について説明する。図９は、第２の実施の形態に従う半導体装置９００のハードウェア構成を表すブロック図である。本実施の形態に係る半導体装置９００は、あるアドレス空間を専有している圧縮伸長モジュールに対して、そのアドレス空間を強制的に解放させる機能を有する点で、前述の半導体装置７００と異なる。
【００５８】
半導体装置９００は、半導体装置７００が備える排他制御用フラグ管理モジュール７１０に代えて、排他制御用フラグ管理モジュール９１０を備える。排他制御用フラグ管理モジュール９１０は、半導体装置７００が保持するフラグ（例えば、フラグ７１１，７１２）に加えて、強制解放指示部９１１を含む。その他の構成は、半導体装置７００が備える構成と同じである。同一の構成には同一の符号を付してある。したがって、同一の構成の説明は繰り返さない。
【００５９】
強制解放指示部９１１は、各圧縮伸長モジュール７２０，７３０に接続され、メモリ１５０のあるアドレス空間を専有している圧縮伸長モジュールに対して、当該アドレス空間の解放を指示する。
【００６０】
ある局面において、ある信号処理モジュールによるアドレス空間のロックの試みが設定された回数失敗すると、排他制御用フラグ管理モジュール９１０は、当該アドレス空間をロックしている圧縮伸長モジュールに対して、当該アドレス空間を強制的に解放する指示を出力する。なお、当該設定された回数は、半導体装置９００の製造事業者によって信号処理モジュール毎に適宜設定可能である。当該解放する指示を受信した圧縮伸長モジュールは、当該アドレス空間を直ちに解放する。
【００６１】
例えば、ライトアクセスが行なわれる場合、当該解放する指示を受信した圧縮伸長モジュールは、当該アドレス空間に対応する１６ｋバイト空間に対する全ての圧縮データおよび圧縮情報をメモリ１５０に書き込み、当該書き込みが完了すると、その１６ｋバイト空間のロックを解放する。
【００６２】
他方、リードアクセスが行なわれる場合、当該解放する指示を受信した圧縮伸長モジュールは、当該アドレス空間に対応する１６ｋバイト空間に対する圧縮情報を無効にし、当該空間のロックを解放する。
【００６３】
以上のようにして、本実施の形態に係る半導体装置９００は、アドレス空間の専有に対して、信号処理モジュール毎に優先順位をつけることができる。これにより、例えば、即時応答性が求められる信号処理モジュールには高優先度を設け、ロバスト性が高い信号処理モジュールには低優先度を設ける等の、個別の設定が可能となる。その結果、用途に応じた動作特性を有する半導体装置９００を提供することができる。
【００６４】
［第３の実施の形態］
以下、第３の実施の形態について説明する。本実施の形態に係る半導体装置１０００は、ロスレス圧縮処理部と、ロスレス伸長処理部と、排他制御用フラグ管理モジュールとがメモリコントローラに実装される構成を有する点で、前述の実施の形態に係る半導体装置７００や半導体装置９００と異なる。なお、前述の実施の形態に係る半導体装置が備える構成と同じ構成には同一の符号を付してある。これらの機能も同じである。したがって、同じ構成の説明は、繰り返さない。
【００６５】
図１０を参照して、半導体装置１０００の構成について説明する。図１０は、ある実施の形態に従う半導体装置１０００のハードウェア構成を表すブロック図である。半導体装置１０００は、信号処理モジュール１２０，１３０と、圧縮伸長モジュール１０２０，１０３０と、メモリコントローラ１０４０と、メモリ１５０とを備える。圧縮伸長モジュール１０２０は、ライトアクセス解析部１０２１と、リードアクセス解析部１０２２と、圧縮情報管理部７２３とを含む。圧縮伸長モジュール１０３０は、ライトアクセス解析部１０３１と、リードアクセス解析部１０３２と、圧縮情報管理部７３３とを含む。メモリコントローラ１０４０は、ロスレス圧縮処理部７２１と、ロスレス伸長処理部７２２と、排他制御用フラグ管理モジュール７１０とを含む。本実施の形態においても、排他的な制御の対象となるアドレス空間のサイズは、圧縮データを生成するための圧縮処理の単位と、圧縮情報とに基づいて規定されている。したがって、ロスレス圧縮方式が使用されて圧縮データのデータ量が可変となっても、データの一貫性が担保され得る。
【００６６】
ライトアクセス解析部１０２１は、信号処理モジュール１２０のトランザクションを解析し、当該解析の結果と圧縮情報管理部７２３からのデータとに基づき、メモリ１５０に対する書き込みのための圧縮処理を実行可能か否かを判断する。ライトアクセス解析部１０２１による結果が圧縮処理を実行可能であることを示している場合には、圧縮伸長モジュール１０２０は、圧縮対象のデータと、当該圧縮処理を実行する指示とを、メモリコントローラ１０４０に送る。ロスレス圧縮処理部７２１は、当該指示に応答して、当該データに対して圧縮処理を実行し、所定の領域に圧縮データと圧縮情報とを格納する。
【００６７】
他方、リードアクセス解析部１０２２は、信号処理モジュール１２０のトランザクションを解析し、当該解析の結果と圧縮情報管理部７２３からのデータとに基づき、メモリ１５０に蓄積されている圧縮データの伸長処理を実行可能か否かを判断する。リードアクセス解析部１０２２による結果が伸長処理を実行可能であることを示している場合には、圧縮伸長モジュール１０２０は、伸長対象の圧縮データが蓄積されている領域を特定して、メモリ１５０から当該圧縮データを読み出す指示をロスレス伸長処理部７２２に送る。ロスレス伸長処理部７２２は、当該指示に応答して、特定された領域にアクセスして、当該圧縮データに対して伸長処理を実行し、伸長されたデータをリードアクセス解析部１０２２に送る。リードアクセス解析部１０２２は、伸長されたデータを信号処理モジュール１２０に送る。
【００６８】
なお、信号処理モジュール１２０が実行する圧縮伸長処理の一態様を例示したが、信号処理モジュール１３０が圧縮伸長処理を実行する場合も同様である。
【００６９】
以上のようにして、本実施の形態に従う半導体装置１０００によると、排他制御用フラグ管理モジュール７１０と、ロスレス圧縮処理部７２１と、ロスレス伸長処理部７２２とは、メモリコントローラ１０４０に実装されている。このような構成により、規模の大きい（専有面積の大きい）ロスレス圧縮処理部７２１およびロスレス伸長処理部７２２が一カ所にまとめられるので、半導体装置１０００の全体の規模（サイズ）を抑制することができる。また、メモリコントローラ１０４０が排他制御用フラグ管理モジュール７１０を備えるので、メモリコントローラ１０４０は、全ての信号処理モジュールのトランザクションを管理することができるので、全ての信号処理モジュール間でのデータの一貫性を実現することができる。
【００７０】
［第４の実施の形態］
以下、第４の実施の形態について説明する。本実施の形態に係る半導体装置１１００は、アドレス空間の強制解放機能を有する点で、第３の実施の形態に係る半導体装置１０００と異なる。
【００７１】
図１１を参照して、第４の実施の形態にかかる半導体装置１１００の構成について説明する。図１１は、半導体装置１１００のハードウェア構成を表すブロック図である。なお、前述の構成と同じ構成には同一の符号を付してある。当該構成の機能も同じである。したがって、同じ構成の説明は繰り返さない。
【００７２】
半導体装置１１００は、図１０に示される半導体装置１０００の構成に対して、メモリコントローラ１０４０に代えて、メモリコントローラ１１４０を備える。メモリコントローラ１０４０は、ロスレス圧縮処理部７２１と、ロスレス伸長処理部７２２と、排他制御用フラグ管理モジュール９１０とを含む。排他制御用フラグ管理モジュール９１０は、半導体装置７００が保持するフラグ（例えば、フラグ７１１，７１２，７１３，７１４）に加えて、強制解放指示部９１１を含む。
【００７３】
図１１に示される半導体装置１１００によれば、第２の実施の形態に従う半導体装置９００と同様に、メモリ１５０においてアドレス空間のロックの試みが所定回数失敗した場合には、当該アドレス空間を専有している圧縮伸長モジュールに対して、当該アドレス空間の解放を指示することができる。当該指示に応答して当該アドレス空間が解放されると、当該アドレス空間のロックを要求している圧縮伸長モジュールが、ロックを行なうことができる。このようにすると、アドレス空間の専有について優先順位を各信号処理モジュール毎に設けることができる。
【００７４】
図１２を参照して、以上詳述した半導体装置の制御構造の概略を説明する。図１２は、ある実施の形態に従う半導体装置７００において実行される処理の一部を表わすフローチャートである。他の半導体装置９００，１０００，１１００についても同様である。
【００７５】
ステップＳ１２１０にて、圧縮伸長モジュール７２０のロスレス圧縮処理部７２１は、信号処理モジュール１２０から受信したデータを圧縮して圧縮データおよび前記圧縮データの情報量を表す圧縮情報を生成する。
【００７６】
ステップＳ１２２０にて、ロスレス圧縮処理部７２１は、圧縮情報管理部７２３を介して、定められたデータサイズ単位でメモリ１５０への圧縮データの書き込みを制御する管理データ（例えばフラグ７１１，７１２）にアクセスする。
【００７７】
ステップＳ１２３０にて、圧縮情報管理部７２３は、メモリ１５０へのライトアクセスが行なわれる場合に、ライトアクセスによりアクセスされる領域が他の圧縮伸長モジュール（例えば、圧縮伸長モジュール７３０）に専有されていないことが当該管理データ（いずれかのフラグ）によって示されていることに基づいて、定められたデータサイズ単位でメモリ領域への書き込みを許可する。例えば、アクセスを要求する領域の先頭アドレスが他の信号処理モジュール１３０によって使用されていないことが、排他制御用フラグ管理モジュール７１０のフラグによって示される場合には、圧縮情報管理部７２３は、ロスレス圧縮処理部７２１による書き込みを許可する。他方、当該先頭アドレスが他の信号処理モジュール１３０によって使用されていることが、排他制御用フラグ管理モジュール７１０のフラグによって示される場合には、圧縮情報管理部７２３は、ロスレス圧縮処理部７２１による書き込みを禁止する。
【００７８】
ステップＳ１２４０にて、ロスレス圧縮処理部７２１は、圧縮情報管理部７２３から当該許可を受信すると、圧縮データを許可されたメモリ領域に書き込む。圧縮情報管理部７２３は、書き込みの完了を検知すると、当該メモリ領域を解放するために、フラグ７１１の内容を圧縮伸長モジュール７２０による専有がなくなった内容に変更する。
【００７９】
その後、別の局面において、メモリ１５０に格納されている圧縮データを使用するトランザクションが信号処理モジュール１３０で実行され得る。そこで、信号処理モジュール１３０は、圧縮伸長モジュール７３０に対して、圧縮データのリクエストを送信する。
【００８０】
ステップＳ１２５０にて、当該リクエストに応答して、メモリ１５０へのリードアクセスが行なわれる場合に、リードアクセスによりアクセスされる領域が他の圧縮伸長モジュール（例えば、圧縮伸長モジュール７２０）に専有されていないことが管理データ（上記フラグ）によって示されていることに基づいて、当該定められたデータサイズ単位で当該領域からの読み出しを許可する。
【００８１】
ステップＳ１２６０にて、ロスレス伸長処理部７３２は、読み出しの許可に基づいて、当該領域から圧縮データおよび圧縮情報を読み出す。ロスレス伸長処理部７３２は、圧縮情報を用いて圧縮データの伸長処理を実行し、圧縮前のデータを復元する。復元されたデータは、信号処理モジュール１３０に送信される。
【００８２】
以上、本発明者によってなされた発明を実施形態に基づき具体的に説明したが、本発明は上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【００８３】
１００，３００，７００，９００，１０００，１１００  半導体装置、１４０，１０４０，１１４０  メモリコントローラ、１５０  メモリ、１６０  バス、３２１，３３１  バッファ、７１０，９１０  排他制御用フラグ管理モジュール、７１１，７１２，７１３，７１４  フラグ、７２０，７３０，１０２０，１０３０  圧縮伸長モジュール、７２１，７３１  ロスレス圧縮処理部、７２２，７３２  ロスレス伸長処理部、７２３，７３３  圧縮情報管理部、８１０  圧縮データ、８１１，８１２，８１３，８１４，８２１，８２２，８２３，８２４  領域、８２０  圧縮情報、９１１  強制解放指示部、１０２１，１０３１  ライトアクセス解析部、１０２２，１０３２  リードアクセス解析部。
【図１】
2020102102.tif 000003
【図２】
2020102102.tif 000004
【図３】
2020102102.tif 000005
【図４】
2020102102.tif 000006
【図５】
2020102102.tif 000007
【図６】
2020102102.tif 000008
【図７】
2020102102.tif 000009
【図８】
2020102102.tif 000010
【図９】
2020102102.tif 000011
【図１０】
2020102102.tif 000012
【図１１】
2020102102.tif 000013
【図１２】
2020102102.tif 000014