(57)【要約】【課題】メモリの個数を削減することができ、半導体装置のチップ面積を削減することが可能なトランザクション制御装置を提供すること。【解決手段】イニシエータ別トランザクション待ち行列管理部１０２は、受付制御部１０１によってキューイング可能と判定されたトランザクションをキューイングし、トランザクションに対応する許容待ち時間が完了するまでに、トランザクションのデータが大規模メモリに書き込まれるようにトランザクション待ち行列の管理を行なってデータの書き込み要求を行なう。優先順位制御部１０３は、受付制御部１０１によってキューイングが不可と判定されたトランザクションのデータおよびイニシエータ別トランザクション持ち行列管理部によって書き込み要求が行なわれたトランザクションのデータを優先順位に応じて大規模メモリに書き込む。したがって、メモリの個数を削減することができ、半導体装置のチップ面積を削減することが可能となる。【選択図】図６
2012103892.tif 000002
【特許請求の範囲】
【請求項１】
複数の周辺モジュールから発行されるトランザクションを制御して、共有メモリに対するデータ転送の制御を行なうトランザクション制御装置であって、
前記複数の周辺モジュールから発行されるトランザクションを受付けて、当該トランザクションがキューイング可能か否かを判定する受付制御手段と、
前記受付制御手段によってキューイング可能と判定されたトランザクションをキューイングし、当該トランザクションに対応する許容待ち時間が完了するまでに、当該トランザクションのデータが前記共有メモリに書き込まれるようにトランザクション待ち行列の管理を行なってデータの書き込み要求を行なう管理手段と、
前記受付制御手段によってキューイングが不可と判定されたトランザクションのデータおよび前記管理手段によって書き込み要求が行なわれたトランザクションのデータを優先順位に応じて前記共有メモリに書き込む優先順位制御手段とを含むと共に、
トランザクション全体の平均処理時間と周辺モジュール毎のトランザクションの平均処理時間とからトランザクション処理の優先順位を変更する制御を行う、トランザクション制御装置。
【請求項２】
前記優先順位制御手段は、当該トランザクションに対応する前記許容待ち時間までの残り時間に応じて前記優先順位を決定する、請求項１記載のトランザクション制御装置。
【請求項３】
前記優先順位制御手段は、当該トランザクションに対応して予め定められた想定平均処理レートと、実際の平均処理レートとの乖離を検出し、該乖離に応じて当該トランザクションの前記優先順位を決定する、請求項１記載のトランザクション制御装置。
【請求項４】
前記トランザクション制御装置はさらに、誤り訂正方式が異なる複数の誤り訂正手段を含み、
前記優先順位制御手段は、当該トランザクションに対応する誤り訂正方式に応じて、前記複数の誤り訂正手段のいずれかに選択的にデータを出力する、請求項１〜３のいずれかに記載のトランザクション制御装置。
【請求項５】
前記管理手段は、データ書き込みが待たされている複数のトランザクションの依存関係に応じてデータを連結し、１つのトランザクションとして管理する、請求項１〜４のいずれかに記載のトランザクション制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の周辺モジュールから発行されたトランザクションを制御する技術に関し、特に、複数の周辺モジュールからのデータを共有メモリに格納するようにトランザクションを制御するトランザクション制御装置に関する。
【背景技術】
【０００２】
近年、ＣＰＵ（Central Processing Unit）を搭載したシステムの高機能化、多機能化が進んでおり、システムに搭載されるＣＰＵの数や周辺モジュールの数も増加する傾向にある。
【０００３】
従来、複数の周辺モジュールのそれぞれが個別にメモリを有していることが多く、システム全体のメモリの個数が多くなる傾向にあった。また、複数の周辺モジュールのメモリを共有化することで、メモリの個数を削減することができるが、そのためには、必要応答時間などのような周辺モジュールごとの要求を満たす必要があり、バス制御が複雑になってしまう。
【０００４】
さらには、データの高信頼性を確保するために、周辺モジュールからのデータ種別に合った、ＥＣＣ訂正、ブロック誤り訂正などの誤り訂正機能が必要になる。これらに関連する技術として、下記の特許文献１〜２に開示された発明がある。
【０００５】
特許文献１は、処理速度を高めることのできる画像処理システムを提供することを目的とする。画像データを一次記憶するＤＲＡＭと、ＤＲＡＭのリードライト制御を行うＤＲＡＭ制御部と、画像データに対して所定の画像処理を行う画像処理部と、画像入力部と、画像出力部と、ＤＲＡＭ制御部と画像処理部との間に配置され、画像データの転送を行うキャッシュシステムと、を備える。キャッシュシステムは、ＤＲＡＭに対してリードアドレスの先出しによる先読み動作と、データをまとめて後から書き込むライトバック動作とを行なう。画像処理部と、画像入力部と、画像出力部とから入出力される画像データは、ＤＭＡによりリードキャッシュあるいはライトキャッシュを介してＤＲＡＭにリードライトされる。
【０００６】
特許文献２は、従来のフラッシュメモリで追加書込みを行なうとすると、通常の書込みと同一のアルゴリズムすなわち一旦当該セクタのデータを外部へ読み出してセクタの一括消去を行なってから、上記読出しデータと追加書込みデータとを合成して書込みを行なわなくてはならないため、追加書込みに要する時間が非常に長くなるとともに、ソフトウェアの負担が大きくなってしまうという不具合を防止することを目的とする。所定のコマンドが与えられると、指定されたセクタの記憶データを読み出してレジスタに退避させてから選択セクタの一括消去を行ない、退避されたデータと追加書込みデータとから書込み期待値データを形成して書込み動作を行なうように構成する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−０７２８３２号公報
【特許文献２】特開平１０−０７９１９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述のように、複数の周辺モジュールのそれぞれが個別にメモリを有している場合には、システム全体のメモリの個数が多くなり、半導体装置のチップ面積が大きくなってしまうといった問題点があった。
【０００９】
また、複数の周辺モジュールのメモリを共有化することで、メモリの個数を削減することができるが、実時間処理が重要になるアクセスがある場合に、その優先度を考慮したメモリ制御を行なうことが困難であるといった問題点もあった。
【００１０】
また、複数の周辺モジュールからのデータに対して、固定の誤り訂正のみが行われることが多く、周辺モジュールからのデータ種別に合った誤り訂正が行なわれていないといった問題点もあった。
【００１１】
本発明は、上記問題点を解決するためになされたものであり、その目的は、メモリの個数を削減することができ、半導体装置のチップ面積を削減することが可能なトランザクション制御装置を提供することである。
【課題を解決するための手段】
【００１２】
本発明の一実施例によれば、複数の周辺モジュールから発行されるトランザクションを制御して、大規模メモリに対するデータ転送の制御を行なうトランザクション制御装置が提供される。受付制御部は、複数の周辺モジュールから発行されるトランザクションを受付けて、当該トランザクションがキューイング可能か否かを判定する。イニシエータ別トランザクション待ち行列管理部は、受付制御部によってキューイング可能と判定されたトランザクションをキューイングし、当該トランザクションに対応する許容待ち時間が完了するまでに、当該トランザクションのデータが大規模メモリに書き込まれるようにトランザクション待ち行列の管理を行なってデータの書き込み要求を行なう。優先順位制御部は、受付制御部によってキューイングが不可と判定されたトランザクションのデータおよびイニシエータ別トランザクション持ち行列管理部によって書き込み要求が行なわれたトランザクションのデータを優先順位に応じて大規模メモリに書き込む。
【発明の効果】
【００１３】
本発明の一実施例によれば、イニシエータ別トランザクション待ち行列管理部が、受付制御部によってキューイング可能と判定されたトランザクションをキューイングし、当該トランザクションに対応する許容待ち時間が完了するまでに、当該トランザクションのデータが大規模メモリに書き込まれるようにトランザクション待ち行列の管理を行なってデータの書き込み要求を行なうので、メモリの個数を削減することができ、半導体装置のチップ面積を削減することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の形態におけるトランザクション制御装置を含んだシステムの構成例を示すブロック図である。
【図２】トランザクション制御部３６の内部構成を説明するためのブロック図である。
【図３】トランザクション制御部３６が周辺モジュールから受けるパケットデータの構成を示す図である。
【図４】本発明の実施の形態におけるトランザクション制御部３６のデータ書き込み時の動作を説明するためのタイミングチャートである。
【図５】本発明の実施の形態におけるトランザクション制御部３６のデータ読み出し時の動作を説明するためのタイミングチャートである。
【図６】トランザクション制御部３６のキューイング可否の判定動作を説明するための図である。
【図７】トランザクション制御部３６のイニシエータ別トランザクション待ち行列管理部１０２の動作を説明するための図である。
【図８】トランザクション制御部３６のイニシエータ別トランザクション待ち行列管理部１０２の動作をさらに説明するための図である。
【図９】トランザクション制御部３６のイニシエータ別トランザクション待ち行列管理部１０２の動作をさらに説明するための図である。
【図１０】トランザクション実行管理のためのデータ構造を説明するための図である。
【図１１】トランザクション開始を説明するためのデータ構造の一例を示す図である。
【図１２】トランザクション開始時における割り込み動作を説明するための図である。
【図１３】トランザクション開始時におけるイニシエータへの通知機能の一例を説明するための図である。
【図１４】トランザクション開始時におけるイニシエータへの通知機能の他の一例を説明するための図である。
【図１５】トランザクション開始時におけるイニシエータへの通知機能のさらに他の一例を説明するための図である。
【図１６】トランザクション完了を説明するためのデータ構造の一例を示す図である。
【図１７】トランザクション完了時における割り込み動作を説明するための図である。
【図１８】トランザクション完了時におけるイニシエータへの通知機能の一例を説明するための図である。
【図１９】トランザクション完了時における複数のイニシエータへの通知機能の一例を説明するための図である。
【図２０】トランザクション完了時における複数のイニシエータへの通知機能の他の一例を説明するための図である。
【図２１】トランザクション完了時におけるイニシエータへの通知機能のさらに他の一例を説明するための図である。
【図２２】トランザクション完了時におけるイニシエータへの通知機能のさらに他の一例を説明するための図である。
【図２３】トランザクション完了時におけるイニシエータへの通知機能のさらに他の一例を説明するための図である。
【図２４】トランザクション生成処理の一例を示す図である。
【図２５】複数のトランザクション生成処理が発生する場合の一例を示す図である。
【発明を実施するための形態】
【００１５】
図１は、本発明の実施の形態におけるトランザクション制御装置を含んだシステムの構成例を示すブロック図である。このシステムは、ＣＰＵバスプラットフォーム１と、クロック生成回路２と、ＦＬＩ（Flash Instruction）３と、フラッシュＩ／Ｆ４と、タイマ１〜３（５〜７）と、ＡＤＣ（Analog to Digital Converter）＿０（８）およびＡＤＣ＿１（９）と、Ｉｎｔａｉｆ（Interrupt Asynchronous Interface）１０と、マルチプレクサ（ＭＵＸ）１１と、ＰＡＤ１２と、ＷＤＴ（Watch Dog Timer）１３と、Ｉ／Ｏポート（ＰＯＲＴ）１４と、ＭｏｄｅＣｎｔ（Mode Controller）１５と、ＰＯＲＴ制御部１６と、ＴｅｓｔＣｎｔ（Test Controller）１７と、ＭＯＴＯＲ＿ＩＰ（Intellectual Property）１８と、ＲＤＣ（Resolver to Digital Converter）１９と、タイマ２０と、ＣＡＮ（Controlled Area Network）２１と、ＳＣＩ（Serial Communication Interface）＿１（２２）と、ＳＣＩ＿２（２３）とを含む。
【００１６】
クロック生成回路２は、原発振である２０ＭＨｚのＸＴＡＬを逓倍／分周することにより、各部に与えるクロック信号を生成する。ｔＣＰＵはＣＰＵコア３１に与えるクロック信号であり、ｔＢＵＳはバスに与えるクロック信号であり、ｔＰＥＲＩは周辺モジュールに与えるクロック信号であり、ｔＲＤＣはＲＤＣ１９に与えるクロック信号である。
【００１７】
ＦＬＩ３は、命令コードを記憶するフラッシュメモリであり、５１２ＫＢの容量を有している。このＦＬＩ３は、内部バス２４を介してＣＰＵバスプラットフォーム１に接続されると共に、ＣＰＵバスプラットフォーム１内のＲＯＭ  Ｉ／Ｆ３２に接続される。
【００１８】
フラッシュＩ／Ｆ４は、図示しないフラッシュメモリに対するアクセスを制御する。ＡＤＣ＿０（８）およびＡＤＣ＿１（９）は、アナログ信号をデジタル信号に変換してＣＰＵバスプラットフォーム１に出力する。なお、フラッシュＩ／Ｆ４、タイマ１〜３（５〜７）、ＡＤＣ＿０（８）およびＡＤＣ＿１（９）は、バス２４を介してＣＰＵバスプラットフォーム１に接続される。
【００１９】
Ｉｎｔａｉｆ１０は、ＮＭＩ（Non-Maskable Interrupt）、外部の周辺デバイスなどからの割り込み要求のような非同期の割り込み要求を受け、たとえばノイズ除去などを行なってＣＰＵバスプラットフォーム１に割り込み要求を出力する。
【００２０】
マルチプレクサ（ＭＵＸ）１１は、外部から入力されるＩＯデータを選択的にＩＯポート（ＰＯＲＴ）１４に出力する。ＰＡＤ１２は、図示しない外部端子に接続され、外部端子と内部回路との間の接続を行なう。
【００２１】
ＷＤＴ１３は、プログラムがハングアップなどの不正な状態に陥ってしまい規則的なウォッチドッグ操作が行なわれなかったことを検出するために使用されるインターバルタイマである。
【００２２】
ＰＯＲＴ１４は、外部のＩＯポートとの間のデータ入出力を行なう。ＭｏｄｅＣｎｔ１５は、システムのモードを制御するためのコントローラである。ＰＯＲＴ制御部１６は、システム内のＩＯポートの制御を行なう。
【００２３】
ＴｅｓｔＣｎｔ１７は、システム内のテストを容易化するためのコントローラである。ＭＯＴＯＲ＿ＩＰ１８は、たとえば自動車の用途に用いられるモータを制御するためのＩＰであり、トランザクション制御部３６に接続される。
【００２４】
ＲＤＣ１９は、レゾルバからの出力信号をデジタル信号に変換してトランザクション制御部３６に出力する。ＣＡＮ２１は、自動車に搭載される様々な電子機器との間で通信を行なう機能を有しており、トランザクション制御部３６と接続される。
【００２５】
ＳＣＩ＿１（２２）およびＳＣＩ＿２（２３）は、シリアル通信を行なうＩＦ回路である。
【００２６】
なお、ＡＤＣ＿０（８）、ＡＤＣ＿１（９）、ＭＯＴＯＲ＿ＩＰ１８、ＲＤＣ１９、ＣＡＮ２１、ＳＣＩ＿１（２２）およびＳＣＩ＿２（２３）は、後述のイニシエータに対応しており、トランザクション制御部３６に対してトランザクションを発行する。
【００２７】
また、ＣＰＵバスプラットフォーム１は、ＣＰＵコア３１と、ＲＯＭ  Ｉ／Ｆおよびキャッシュ３２と、ＩＮＴＣ（Interrupt Controller）を含む周辺ＩＯ３３と、ＨＰＢ（High-speed Peripheral Bus）−ＩＦ３４と、ＢＩＵ（Bus Interface Unit）＿ＳＨ３５と、トランザクション制御部３６と、ＤＭＡＣ（Direct Memory Access Controller）３７と、ＭＰＵ２（３８）と、ＢＩＵ＿Ｐ３９、４２および４３と、ＳＹＳＣＯＮＦ（System Configuration）を含む周辺ＩＯ４０と、第３のバスマスタとなるＢｕｓ  Ｍａｓｔｅｒ  Ｉ／Ｆ４１と、ＰＢＩＵ（Peripheral Bus Interface Unit）４４〜４６とを含む。
【００２８】
また、ＣＰＵコア３１は、バス４８を介してＢＩＵ＿ＳＨ３５、トランザクション制御部３６、ＢＩＵ＿Ｐ３９、４２および４３に接続されており、ＣＰＵ５１と、トランザクション制御部３６から出力されるデータを記憶するＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）などによって構成される大規模メモリ５２と、ＭＰＵ１（５３）とを含む。
【００２９】
ＣＰＵ５１は、ＲＯＭ  Ｉ／Ｆおよびキャッシュ３２を介してＦＬＩ３に接続され、ＦＬＩ３に記憶される命令コードを読み出して実行する。このとき、命令コードはキャッシュ３２にキャッシュされる。ＣＰＵ５１は、大規模メモリ５２に記憶されるトランザクション制御部３６から転送されたデータを読み出して種々の動作を行なう。
【００３０】
ＣＰＵコア３１は、ＨＰＢ−ＩＦ３４を介してバス２４およびＢＩＵ＿ＳＨ３５に接続され、周辺モジュールから高速にデータを読み出すことが可能である。
【００３１】
ＭＰＵ２（３８）は、バス４９および５０を介してＢＩＵ＿ＳＨ３５、トランザクション制御部３６、ＢＩＵ＿Ｐ３９、４２および４３に接続され、周辺モジュールとの間でデータ入出力を行ないながら処理を実行する。
【００３２】
また、Ｂｕｓ  Ｍａｓｔｅｒ  Ｉ／Ｆ４１は、バス４７を介してＢＩＵ＿ＳＨ３５、トランザクション制御部３６、ＢＩＵ＿Ｐ３９、４２および４３に接続され、周辺モジュールとの間でデータ入出力を行ないながら第３のバスマスタとして動作する。
【００３３】
ＢＩＵ＿Ｐ３９は、ＰＢＩＵ４６を介してＷＤＴ１３、ＰＯＲＴ１４、ＭｏｄｅＣｎｔ１５、ＰＯＲＴ制御部１６、ＴｅｓｔＣｎｔ１７などの周辺モジュールに接続されており、それらとの間のデータ入出力の制御を行なう。
【００３４】
ＢＩＵ＿Ｐ４２は、ＰＢＩＵ４４を介してＣＡＮ２１、ＳＣＩ＿１（２２）、ＳＣＩ＿２（２３）などの周辺モジュールに接続されており、それらとの間のデータ入出力の制御を行なう。
【００３５】
ＢＩＵ＿Ｐ４３は、ＰＢＩＵ４５を介してＭＯＴＯＲ＿ＩＰ１８、ＲＤＣ１９、タイマ２０などの周辺モジュールに接続されており、それらとの間のデータ入出力の制御を行なう。
【００３６】
図２は、トランザクション制御部３６の内部構成を説明するためのブロック図である。トランザクション制御部３６は、選択回路１（６１）と、各種誤り訂正符号化復号化回路６２と、ビタビ誤り訂正符号化復号化回路６３と、リードソロモン誤り訂正符号化復号化回路６４と、選択回路２（６５）と、ＥＣＣ（Error Check and Correction）回路６６と、制御部６７とを含む。
【００３７】
制御部６７は、トランザクション制御部３６の全体的な制御を行なう部分であり、後述のトランザクションの受付、ヘッダ解析、メモリアクセスなどを行なう。また、制御部６７は、ヘッダ解析によってデータの種別を判断し、選択回路１（６１）を切り替えることにより、そのデータに適した誤り訂正符号化復号化回路６２〜６４またはＥＣＣ回路６６を選択してデータを出力する。
また、制御部６７は、選択回路２（６５）を切り替えることによって、処理を行なった誤り訂正符号化復号化回路６２〜６４またはＥＣＣ回路６６からのデータを受けて、ＣＰＵコア３１内の大規模メモリ５２に転送する。
ビタビ誤り訂正符号化復号化回路６３は、扱うデータのサイズが比較的小さい通信系の周辺モジュールからのデータに対して誤り訂正および符号化復号化を行なう。リードソロモン誤り訂正符号化復号化回路６４は、扱うデータのサイズが比較的大きい通信系の周辺モジュールからのデータに対して誤り訂正および符号化復号化を行なう。
【００３８】
ＥＣＣ回路６６は、タイマやＡＤＣなどからの極めて小さいデータの誤り検出、誤り訂正を行なう。各種誤り訂正符号化復号化回路６２は、データに対してそれ以外の方式で誤り訂正および符号化復号化を行なう。
【００３９】
図３は、トランザクション制御部３６が周辺モジュールから受けるパケットデータの構成を示す図である。パケットは、大きく、ヘッダ（仕分け情報）７１と、データ本体７２とによって構成される。
【００４０】
ヘッダ（仕分け情報）７１は、識別番号８１と、キューイング情報８２と、アウトオブオーダ情報８３と、誤り訂正情報８４と、誤り訂正のタイプ情報８５と、使用領域情報８６と、許容待ち時間８７と、転送バイト数８８と、転送先アドレス８９と、転送方向９０と、アクセスレベル９１と、スプリット可否情報９２と、ロック転送情報９３と、平均処理レート情報９４とを含む。
【００４１】
識別番号８１は、トランザクションを識別するための番号と、発行元のイニシエータを識別するための番号とを含む。キューイング情報８２は、キューイング可能なトランザクションであるか、キューイング不可能なトランザクションであるかを示す情報である。
【００４２】
アウトオブオーダ情報８３は、アウトオブオーダが可能なトランザクションであるか否かを示す情報である。誤り訂正情報８４は、そのトランザクションに対応するデータが誤り訂正、符号化復号化する対象であるか否かを示す情報である。
【００４３】
誤り訂正のタイプ情報８５は、そのトランザクションに対応するデータを、ＥＣＣ方式で誤り訂正を行なうか、リードソロモン方式で符号化を行なうか、ビタビ方式で符号化を行なうか、その他の方式で誤り訂正を行なうかを示す情報である。
【００４４】
使用領域情報８６は、その周辺モジュールに格納されるデータのメモリ領域を示す情報であり、開始アドレスと終了アドレスとに使用領域が指定される。許容待ち時間８７は、トランザクションの完了までに許容できる時間を示す情報である。
【００４５】
転送バイト数８８は、そのトランザクションに対応するデータの転送バイト数を示す情報である。転送先アドレス８９は、そのトランザクションに対応するデータを転送する大規模メモリ５２のアドレスを示す情報である。
【００４６】
転送方向９０は、そのトランザクションがデータ読み出しであるか、データ書き込みであるかを示す情報である。アクセスレベル９１は、そのアクセスがユーザアクセスであるか、特権アクセスであるかを示す情報である。
【００４７】
スプリット可否情報９２は、転送途中での一時中断の可否を示す情報である。ロック転送情報９３は、そのアクセスがロック転送であるか否かを示す情報である。平均処理レート情報９４は、そのトランザクション処理における平均処理レートを示す情報である。
【００４８】
図４は、本発明の実施の形態におけるトランザクション制御部３６のデータ書き込み時の動作を説明するためのタイミングチャートである。図４に示すように、周辺ブロック（周辺モジュール）のクロックの立ち上がりエッジで、各周辺ブロックからのライトアドレスおよびライトデータがトランザクション制御部３６に入力される。
【００４９】
トランザクション制御部３６は、周辺Ａブロック〜周辺Ｆブロックから出力されるライトアドレスおよびライトデータを多重化し、メモリバスクロックの立ち上がりエッジで大規模メモリ５２に出力する。これによって、周辺ブロックからのデータ書き込み周期に対して、たとえば６倍の速度で大規模メモリ５２に対するデータ書き込みが行なわれる。
【００５０】
図５は、本発明の実施の形態におけるトランザクション制御部３６のデータ読み出し時の動作を説明するためのタイミングチャートである。図５に示すように、周辺ブロック（周辺モジュール）のクロックの立ち上がりエッジで、各周辺ブロックからのリードアドレスがトランザクション制御部３６に入力される。
【００５１】
トランザクション制御部３６は、周辺Ａブロック〜周辺Ｆブロックから出力されるリードアドレスを多重化し、メモリバスクロックの立ち上がりエッジで大規模メモリ５２からデータを読み出す。これによって、周辺ブロックからのデータ読み出し周期に対して、たとえば６倍の速度で大規模メモリ５２からのデータ読み出しが行なわれる。
【００５２】
図６は、トランザクション制御部３６のキューイング可否の判定動作を説明するための図である。トランザクション制御部３６は、受付制御部１０１、イニシエータ別トランザクション待ち行列管理部１０２と、優先順位制御部１０３とを含む。
【００５３】
受付制御部１０１は、複数のイニシエータ（１〜１０）から発行されるトランザクションを受付け、パケットデータの仕分け情報７１の中からトランザクション識別番号８１およびキューイング情報８２とを抽出する。そして、受付制御部１０１は、キューイング情報８２に基づいてそのトランザクションがキューイング可能か否かを判定する（Ｓ１１）。
【００５４】
キューイング可能なトランザクションであれば（Ｓ１１，ＯＫ）、そのトランザクションをトランザクション識別番号８１に対応するイニシエータ別トランザクション待ち行列にキューイングする（Ｓ１２）。また、キューイング不可能なトランザクションであれば（Ｓ１１，ＮＧ）、そのトランザクションをキューイングせずに、優先順位制御部１０３に転送して優先順位制御処理（アービトレーション処理）を行わせる。
【００５５】
図７は、トランザクション制御部３６のイニシエータ別トランザクション待ち行列管理部１０２の動作を説明するための図である。イニシエータ別トランザクション待ち行列管理部１０２は、イニシエータ別トランザクション待ち行列にキューイングされているトランザクションの許容待ち時間情報８７を抽出し、その許容待ち時間をダウンカウンタ１１２に設定してダウンカウントを開始させる。このダウンカウンタ１１２は、イニシエータ別トランザクション待ち行列にキューイングされているトランザクション別に設けられている。イニシエータからトランザクションが発行されてから、実際に転送が完了するまでに時間的制限が課されている場合に、このダウンカウンタ１１２の値で各トランザクションのデータ転送を管理するものである。
【００５６】
図８は、トランザクション制御部３６のイニシエータ別トランザクション待ち行列管理部１０２の動作をさらに説明するための図である。イニシエータ別トランザクション待ち行列管理部１０２は、イニシエータ別トランザクション待ち行列にキューイングされたトランザクションに対応するダウンカウンタ１１２の値を参照し、許容待ち時間の残り時間が少ないトランザクションを優先して優先順位制御部１０３に優先順位制御を行わせる。これによって、静的に指定されている優先度に加えて実際の状況に応じたバスの使用権の振り分けを行うことができる。
【００５７】
図９は、トランザクション制御部３６のイニシエータ別トランザクション待ち行列管理部１０２の動作をさらに説明するための図である。イニシエータ別トランザクション待ち行列管理部１０２は、各トランザクションの処理に要した時間を管理しており、実際に要した時間から平均処理レート結果を算出する。そして、イニシエータ別トランザクション待ち行列にキューイングされたトランザクションに対応する平均処理レート情報９４を抽出し、レート補正検出部１２３が平均処理レート情報９３と算出された平均処理レート結果１２２とを比較する。
【００５８】
レート補正検出部１２３は、比較結果を参照して、乖離している量に応じて優先順位制御を行なう。たとえば、平均処理レート結果１２２が想定平均処理レート９４よりも大きい場合には、その差分に応じて優先順位を高く設定する。逆に、平均処理レート結果１２２が想定平均処理レート９４よりも小さい場合には、その差分に応じて優先順位を低く設定する。
【００５９】
図１０は、トランザクション実行管理のためのデータ構造を説明するための図である。図１０に示すように、イニシエータ別にトランザクションが管理されており、さらにトランザクション別にトランザクションの実行状況を３つのステータス（ＩＤＬＥ、ＥＸＥ、ＥＮＤ）で管理する。イニシエータ別トランザクション待ち行列管理部１０２は、各トランザクションの実行状況をこのようなステータスで管理する。
【００６０】
図１１は、トランザクション開始を説明するためのデータ構造の一例を示す図である。図１１に示すように、イニシエータ１の先頭のトランザクションの実行が開始されると、そのステータスが“ＥＸＥ”に更新される。これによって、先頭のトランザクションのみが実行段階に入ったことを認識することができる。
【００６１】
図１２は、トランザクション開始時における割り込み動作を説明するための図である。図１２に示すように、イニシエータ３の先頭のトランザクションの実行が開始されたときに割り込みを発生させるように設定されていれば、そのステータスが“ＥＸＥ”に更新されたときに割り込み要求を出力する。たとえば、画像のフレームごとに割り込みを発生させて、ＣＰＵにおけるソフトウェア制御の起動タイミングを生成することができる。
【００６２】
図１３は、トランザクション開始時におけるイニシエータへの通知機能の一例を説明するための図である。イニシエータとバスとの間にトランザクション制御部３６が設けられるため、イニシエータが転送開始のタイミングを直接把握することが困難である。そのため、イニシエータへの通知機能を設けている。
【００６３】
図１３に示すように、イニシエータ１の先頭のトランザクションの実行が開始されたときに、イニシエータ別トランザクション待ち行列管理部１０２は、そのトランザクション識別番号と共にトランザクションの開始をイニシエータ１（１３１）に通知する。
【００６４】
イニシエータ１（１３１）は、トランザクション識別番号ごとに開始確認を行なっており、トランザクション制御部３６からトランザクションの開示通知を受けると、ポインタ更新部１５１のポインタ１５２および１５３の値を更新する。ポインタ１５２は、どのトランザクションが実行中（更新中）であるかを示しており、更新中であることを示すＤ（Ｄｉｒｔｙ）フラグが立っている。
【００６５】
また、ポインタ１５３は、どのトランザクションの実行が完了したか示しており、データ転送が完了したことを示すＶ（Ｖａｌｉｄ）フラグが立っている。ＣＰＵコア３１などがこのフラグ情報を参照することにより、どこまでデータ転送が完了しているかを把握することができ、不完全な途中データを参照するといった不具合を防止することができる。
【００６６】
図１４は、トランザクション開始時におけるイニシエータへの通知機能の他の一例を説明するための図である。図１４に示すように、イニシエータ１の先頭のトランザクションの実行が開始されたときに、イニシエータ別トランザクション待ち行列管理部１０２は、そのトランザクション識別番号と共にトランザクションの開始をイニシエータ１（１３１）に通知する。
【００６７】
イニシエータ１（１３１）は、メモリ空間のどの領域のデータのトランザクションを発行したかを管理しており、トランザクション制御部３６からトランザクションの開始通知を受けたときに、そのトランザクションに対応するメモリ領域を書き込み中領域に設定する。図１４においては、斜線を施した部分が既に転送を完了しているトランザクションを示している。
【００６８】
図１５は、トランザクション開始時におけるイニシエータへの通知機能のさらに他の一例を説明するための図である。図１５は、イニシエータ１（１３１）がデータ読み出しを行なう場合を示している。
【００６９】
図１５に示すように、イニシエータ１の先頭のトランザクションの実行が開始されたときに、イニシエータ別トランザクション待ち行列管理部１０２は、そのトランザクション識別番号と共にトランザクションの開始をイニシエータ１（１３１）に通知する。
【００７０】
イニシエータ１（１３１）は、メモリ空間のどの領域のデータのトランザクションを発行したかを管理しており、トランザクション制御部３６からトランザクションの開始通知を受けたときに、そのトランザクションに対応するメモリ領域を読み出し中領域に設定する。図１５においては、斜線を施した部分が既に転送を完了しているトランザクションを示している。
【００７１】
なお、データの書き込みおよび読み出しを管理するライトポインタとリードポインタにおいて、転送が完了したことを示すＶ（Ｖａｌｉｄ）フラグ、リード転送中（アドレス更新中）であることを示すＥ（Ｅｘｅｃｕｔｅ）フラグ、ライト転送中（アドレッシングされているデータ自体が更新中）であることを示すＤ（Ｄｉｒｔｙ）フラグの３つを用いて状態を管理する。
【００７２】
図１６は、トランザクション完了を説明するためのデータ構造の一例を示す図である。図１６に示すように、イニシエータ１の先頭のトランザクションの実行が完了すると、そのステータスが“ＥＮＤ”に更新される。これによって、先頭のトランザクションのみが実行完了したことを認識することができる。
【００７３】
図１７は、トランザクション完了時における割り込み動作を説明するための図である。図１７に示すように、イニシエータ３の先頭のトランザクションの実行が完了したときに割り込みを発生させるように設定されていれば、そのステータスが“ＥＮＤ”に更新されたときに割り込み要求を出力する。たとえば、画像のフレームごとに割り込みを発生させて、ＣＰＵにおけるソフトウェア制御の起動タイミングを生成することができる。
【００７４】
図１８は、トランザクション完了時におけるイニシエータへの通知機能の一例を説明するための図である。イニシエータとバスとの間にトランザクション制御部３６が設けられるため、イニシエータが転送の完了のタイミングを直接把握することが困難である。そのため、イニシエータへの通知機能を設けている。
【００７５】
図１８に示すように、イニシエータ１（１３１）の先頭のトランザクションの実行が完了したときに、イニシエータ別トランザクション待ち行列管理部１０２は、そのトランザクション識別番号と共にそのトランザクションの完了をイニシエータ１（１３１）に通知する。
【００７６】
イニシエータ１（１３１）は、トランザクション識別番号ごとに完了確認を行なっており、トランザクション制御部３６からトランザクションの完了通知を受けると、ポインタの値を更新する。
【００７７】
図１９は、トランザクション完了時における複数のイニシエータへの通知機能の一例を説明するための図である。図１８と同様に、イニシエータ１〜３（１３１〜１３３）の先頭のトランザクションの実行が完了したときに、イニシエータ別トランザクション待ち行列管理部１０２は、そのトランザクション識別番号と共にトランザクションの完了をイニシエータ１〜３（１３１〜１３３）に通知する。
【００７８】
イニシエータ１〜３（１３１〜１３３）は、トランザクション識別番号ごとに完了確認を行なっており、トランザクション制御部３６からトランザクションの完了通知を受けると、ポインタの値を更新する。
【００７９】
図２０は、トランザクション完了時における複数のイニシエータへの通知機能の他の一例を説明するための図である。図１９と同様に、イニシエータ１〜３（１３１〜１３３）の先頭のトランザクションの実行が完了したときに、イニシエータ別トランザクション待ち行列管理部１０２は、そのトランザクション識別番号と共にトランザクションの完了をイニシエータ１〜３（１３１〜１３３）に通知する。
【００８０】
イニシエータ１〜３（１３１〜１３３）は、トランザクション識別番号ごとに完了確認を行なっており、トランザクション制御部３６からトランザクションの完了通知を受けると、ポインタの値を更新する。そして、イニシエータ１〜３（１３１〜１３３）は、トランザクション生成処理を行なう。このトランザクション生成処理の詳細は、後述する。
【００８１】
図２１は、トランザクション完了時におけるイニシエータへの通知機能のさらに他の一例を説明するための図である。イニシエータとバスとの間にトランザクション制御部３６が設けられるため、イニシエータが転送完了のタイミングを直接把握することが困難である。そのため、イニシエータへの通知機能を設けている。
【００８２】
図２１に示すように、イニシエータ１の先頭のトランザクションの実行が完了したときに、イニシエータ別トランザクション待ち行列管理部１０２は、そのトランザクション識別番号と共にトランザクションの完了をイニシエータ１（１３１）に通知する。
【００８３】
イニシエータ１（１３１）は、トランザクション識別番号ごとに完了確認を行なっており、トランザクション制御部３６からトランザクションの完了通知を受けると、ポインタ更新部１５１のポインタ１５２および１５３の値を更新する。ポインタ１５２は、どのトランザクションが実行中（更新中）であるかを示しており、更新中であることを示すＤ（Ｄｉｒｔｙ）フラグが立っている。
【００８４】
また、ポインタ１５３は、どのトランザクションの実行か完了したか示しており、データ転送が完了したことを示すＶ（Ｖａｌｉｄ）フラグが立っている。ＣＰＵコア３１などがこのフラグ情報を参照することにより、どこまでデータ転送が完了しているかを把握することができ、不完全な途中データを参照するといった不具合を防止することができる。
【００８５】
図２２は、トランザクション完了時におけるイニシエータへの通知機能のさらに他の一例を説明するための図である。図２２に示すように、イニシエータ１の先頭のトランザクションの実行が完了したときに、イニシエータ別トランザクション待ち行列管理部１０２は、そのトランザクション識別番号と共にトランザクションの完了をイニシエータ１（１３１）に通知する。
【００８６】
イニシエータ１（１３１）は、メモリ空間のどの領域のデータのトランザクションを発行したかを管理しており、トランザクション制御部３６からトランザクションの完了通知を受けたときに、そのトランザクションに対応するメモリ領域を書き込み完了領域に設定する。図２２においては、斜線を施した部分が既に転送を完了しているトランザクションを示している。
【００８７】
図２３は、トランザクション完了時におけるイニシエータへの通知機能のさらに他の一例を説明するための図である。図２３は、イニシエータ１（１３１）がデータ読み出しを行なう場合を示している。
【００８８】
図２３に示すように、イニシエータ１の先頭のトランザクションの実行が完了したときに、イニシエータ別トランザクション待ち行列管理部１０２は、そのトランザクション識別番号と共にトランザクションの完了をイニシエータ１（１３１）に通知する。
【００８９】
イニシエータ１（１３１）は、メモリ空間のどの領域のデータのトランザクションを発行したかを管理しており、トランザクション制御部３６からトランザクションの完了通知を受けたときに、そのトランザクションに対応するメモリ領域を読み出し済領域に設定する。図２３においては、斜線を施した部分が既に転送を完了しているトランザクションを示している。
【００９０】
図２４は、トランザクション生成処理の一例を示す図である。図２４（ａ）に示すように、イニシエータ１のトランザクションの実行が完了したときに、イニシエータ別トランザクション待ち行列管理部１０２は、そのトランザクション識別番号と共にトランザクションの完了をイニシエータ１（１３１）に通知する。
【００９１】
イニシエータ１（１３１）は、トランザクション識別番号ごとに完了確認を行なっており、トランザクション制御部３６からトランザクションの完了通知を受けると、そのトランザクションのタイプ情報８５（種別）を確認する。
【００９２】
また、イニシエータ１（１３１）は、トランザクションの実行状況を参照し、ステータスが“ＩＤＬＥ”となっているトランザクションを抽出する。そして、“ＩＤＬＥ”となっているトランザクションのタイプ情報８５（種別）を抽出し、使用領域情報（開始アドレス、終了アドレス）８６および転送方向情報（Ｒ／Ｗ）９０を参照して、連結可能なトランザクションがトランザクション制御部３６においてキューイングされているか否かを判定する。たとえば、タイプ情報８５が同じであり、使用領域情報８６が連続しており、転送方向情報９０が同じトランザクションを、連結可能なトランザクションと判定する。
【００９３】
このとき、イニシエータ１（１３１）は、連結したトランザクションに対応する新たな仕分け情報７１（仕分けシート）を作成する。この仕分けシートには、イニシエータ１（１３１）側に残っている各トランザクション識別情報に対応したトランザクションを管理するステータスを含む。
【００９４】
図２４（ｂ）に示すように、イニシエータ別トランザクション待ち行列管理部１０２は、イニシエータ１（１３１）から新たな仕分けシートを受けると、仕分けシートに記載されている連結したトランザクション識別情報の列挙を参照し、それぞれのトランザクションの実行状況を管理する。
【００９５】
また、図２４（ｃ）に示すように、イニシエータ別トランザクション待ち行列管理部１０２は、連結前の各トランザクション単位で実行状況をイニシエータ１（１３１）に通知する。
【００９６】
なお、トランザクションの連結は、必ずしもページサイズに丁度合うように連結する必要はない。連結されたトランザクションは、キューイングされているトランザクションの範囲で連結されているため、連結前の各トランザクションよりはデータが長くなるが、転送サイズは毎回ページサイズになる訳ではない。
【００９７】
図２５は、複数のトランザクション生成処理が発生する場合の一例を示す図である。図２５（ａ）は、図２４（ａ）に示すものと同様である。
【００９８】
図２５（ｂ）に示すように、イニシエータ別トランザクション待ち行列管理部１０２は、イニシエータ１（１３１）から２つの新たな仕分けシート７１を受けると、それぞれの仕分けシート７１に記載されている連結したトランザクション識別情報の列挙を参照し、それぞれのトランザクションの実行状況を管理する。
【００９９】
以上説明したように、本実施の形態におけるトランザクション制御装置によれば、キューイング可能なトランザクションをキューイングし、許容待ち時間が完了するまでにこのトランザクションのデータが大規模メモリ５２に書き込まれるようにトランザクション待ち行列を管理するようにしたので、メモリの個数を削減することができ、半導体装置のチップ面積を削減することが可能となった。
【０１００】
また、トランザクションに対応する許容待ち時間までの残り時間に応じて優先順位を決定するようにしたので、必要応答時間などのような周辺モジュールごとの要求を満たすことが可能となった。
【０１０１】
また、想定平均処理レートと実際の平均処理レートとの乖離に応じて優先順位を決定するようにしたので、想定平均処理レートに近いレートでトランザクションの処理を行なうことが可能となった。
【０１０２】
また、複数の誤り訂正方式に対応した複数の誤り訂正符号化復号化回路を設け、転送データに最適な誤り訂正方式で符号化復号化するようにしたので、データの信頼性を向上させることが可能となった。
【０１０３】
また、トランザクションの依存関係に応じて複数のトランザクションを連結するようにしたので、バスアクセス時におけるデータ転送長を長くすることができ、バスの使用効率を向上させることが可能となった。
【０１０４】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１０５】
１  ＣＰＵバスプラットフォーム、２  クロック生成回路、３  ＦＬＩ、４  フラッシュＩ／Ｆ、５〜７，２０  タイマ、８，９  ＡＤＣ、１０  Ｉｎｔａｉｆ、１１  マルチプレクサ、１２  ＰＡＤ、１３  ＷＤＴ、１４  Ｉ／Ｏポート、１５  ＭｏｄｅＣｎｔ、１６  ＰＯＲＴ制御部、１７  ＴｅｓｔＣｎｔ、１８  ＭＯＴＯＲ＿ＩＰ、１９  ＲＤＣ、２１  ＣＡＮ、２２，２３  ＳＣＩ、３１  ＣＰＵコア、３２  ＲＯＭ  Ｉ／Ｆおよびキャッシュ、３３，４０  周辺ＩＯ、３４  ＨＰＢ−ＩＦ、３５  ＢＩＵ＿ＳＨ、３６  トランザクション制御部、３７  ＤＭＡＣ、３８，５３  ＭＰＵ、３９，４２，４３  ＢＩＵ＿Ｐ、４１  Ｂｕｓ  Ｍａｓｔｅｒ  Ｉ／Ｆ、４４〜４６  ＰＢＩＵ、５１  ＣＰＵ、５２  大規模メモリ、６１，６５  選択回路、６２  各種誤り訂正符号化復号化回路、６３  ビタビ誤り訂正符号化復号化回路、６４  リードソロモン誤り訂正符号化復号化回路、６６  ＥＣＣ回路、６７  制御部、１０１  受付制御部、１０２  イニシエータ別トランザクション待ち行列管理部、１０３  優先順位制御部。
【図１】
2012103892.tif 000003
【図２】
2012103892.tif 000004
【図３】
2012103892.tif 000005
【図４】
2012103892.tif 000006
【図５】
2012103892.tif 000007
【図６】
2012103892.tif 000008
【図７】
2012103892.tif 000009
【図８】
2012103892.tif 000010
【図９】
2012103892.tif 000011
【図１０】
2012103892.tif 000012
【図１１】
2012103892.tif 000013
【図１２】
2012103892.tif 000014
【図１３】
2012103892.tif 000015
【図１４】
2012103892.tif 000016
【図１５】
2012103892.tif 000017
【図１６】
2012103892.tif 000018
【図１７】
2012103892.tif 000019
【図１８】
2012103892.tif 000020
【図１９】
2012103892.tif 000021
【図２０】
2012103892.tif 000022
【図２１】
2012103892.tif 000023
【図２２】
2012103892.tif 000024
【図２３】
2012103892.tif 000025
【図２４】
2012103892.tif 000026
【図２５】
2012103892.tif 000027