以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の機能を有する部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
図1〜図3を用いて、本発明の一実施の形態に係るマルチメディアマイコンの構成及び動作の一例を説明する。図1は、マルチメディアマイコンを示す構成図である。図2は、メモリの構成を示す図である。図3は、別のマルチメディアマイコンを示す構成図である。
図1に示すように、本実施の形態のマルチメディアマイコン1は、マスタとして動作するCPU11と、スレーブとして動作する複数のアクセラレータ12(12−1〜12−n)と、本発明の特徴であるI/O専用キャッシュ14と、これらを接続するバス13と、メモリコントローラ15から構成されている。このマルチメディアマイコン1の外部に、メモリ2が接続されている。
アクセラレータ12は、CPU11を補助する役目を持ち、CPU11が不得意な時間のかかる処理をハードウエアで高速に実行する機能を持つ。また、メモリコントローラ15は、I/O専用キャッシュ14とメモリ2とに接続され、バス13及びI/O専用キャッシュ14を介してから来るメモリアクセス要求に対し、メモリ2に対して、SDRAMまたはDDR−SDRAMコマンドを出してアクセスを行う機能を持つ。
図2に示すように、メモリ2には、CPU11で実行されるマルチメディア処理に関する一連の手続き処理を記述したプログラム21と、ワークエリア22と、さらには、アクセラレータ12毎に処理するデータを格納するデータ領域23(23−1〜23−n)がある。また、複数のアクセラレータ12間で共通のデータ領域23をアクセスすることもある。
図3に示すように、本実施の形態のマルチメディアマイコンにおいては、前記図1のようにメモリ2を外部に接続する構成の他に、メモリ2を内部に設けて、このメモリ2と、CPU11、複数のアクセラレータ12(12−1〜12−n)、I/O専用キャッシュ14、バス13、及びメモリコントローラ15が一体型となったマルチメディアマイコン10とすることも可能である。
続いて、前記図1に示したマルチメディアマイコン1において、I/O専用キャッシュ14がOFFの場合の動作について説明する。なお、図3に示したマルチメディアマイコン10においても同様である。
CPU11は、バス13、I/O専用キャッシュ14、メモリコントローラ15を介し、メモリ2からプログラム21及びワークエリア22、データ領域23内のデータをアクセスして処理を行う。このとき、CPU11はプログラム21に従い、アクセラレータ12で処理すべきデータをデータ領域23へセットし、アクセラレータ12へ処理要求し、アクセラレータ12での処理結果をデータ領域23から読み出しを行うことにより、MPEGやMP3をはじめとしたマルチメディア処理が実現される。
このように、マルチメディアマイコン1では、CPU11とアクセラレータ12間でメモリ2内のデータ領域23を介したデータ連携を行い、マルチメディア処理が実行される。そのため、CPU11やアクセラレータ12の処理速度に比べ、アクセス速度の遅いメモリ2がマルチメディア処理におけるボトルネックとなり、マルチメディア処理性能の向上が難しくなってきた。そこで、本実施の形態では、後述するように、CPU11とアクセラレータ12間のデータのやり取りをスムーズに行うことで、マルチメディア処理の高速化を実現することが可能となる。
すなわち、前記図1に示すように、I/O専用キャッシュ14をメモリコントローラ15側に置き、CPU11及びアクセラレータ12の双方からアクセスできるようにし、CPU11とアクセラレータ12間での連携データを保持する。これにより、CPU11とアクセラレータ12間のデータ連携を、より高速にアクセス可能なI/O専用キャッシュ14にて行い、メモリアクセス待ちによるオーバーヘッドを大幅に削減し、スムーズなマルチメディア処理の実行を実現する。
また、CPU11とアクセラレータ12でのデータ連携に必要なデータは、アクセラレータ12で処理させるすべてのデータではなく、ヘッダやアクセラレータ12へのコマンドなどのみの一部であることに注目し、I/O専用キャッシュ14は連携に必要なデータである連携データのみを保持し、CPU11のみ、アクセラレータ12のみで処理するデータであるデータ本体は、I/O専用キャッシュ14ではなく、メモリ2上に置くことで、I/O専用キャッシュ14に保持するデータ量を抑え、I/O専用キャッシュ14の有効利用及びヒット率の向上を実現する。
ここで注目すべきは、I/O専用キャッシュ14が保持すべき連携データは、必ずCPU11かアクセラレータ12により、メモリ2に書き込まれるデータである。従って、I/O専用キャッシュ14は、メモリ2へのライトアクセスに対してのみキャッシュするか否かの判定を行えば良く、この判定には、当該ライトアクセスのアドレスを用いる方法と、I/O専用キャッシュ14へのキャッシュ要求信号を用いる方法の2通りが存在する。なお、CPU11からのライトアクセスにおけるキャッシュ判定は、アドレスを用いた判定を、また、アクセラレータ12からのライトアクセスにおけるキャッシュ判定は、アドレスを用いた判定及びキャッシュ要求信号による判定の両方を用いることができる。
一方、メモリ2へのリードに関しては、ヒットすればI/O専用キャッシュ14から当該データを出力するが、キャッシュミスの場合、I/O専用キャッシュ14はメモリ2へ当該アクセスを通すのみとし、メモリ2からのリードデータをキャッシュすることはしない。これは、CPU11及びアクセラレータ12が専用のキャッシュまたはバッファをもっており、この専用のキャッシュまたはバッファで、メモリ2からのリードデータが保持されるためである。さらに、バス13がスプリットバスである場合に対応するため、I/O専用キャッシュ14は、キャッシュミスを起こし、メモリ2にリードアクセス中であっても、次のアクセス要求に対して、キャッシュヒットの場合には、当該ヒットデータをバス13に出力する機能が必要となる。この点が、I/O専用キャッシュ14が従来のキャッシュ及びバッファと大きく異なる所となる。
また、もうひとつの特徴は、I/O専用キャッシュ14はキャッシュであり、CPU11で実行されるプログラム21は、このI/O専用キャッシュ14の存在を意識することなく、メモリ2へのアクセスとして処理できる点である。
さらに、メモリ2へのアクセス効率を向上させるため、I/O専用キャッシュ14では、CPU11やアクセラレータ12から要求されるアクセスサイズが、メモリ2のアクセスサイズより小さい場合、本I/O専用キャッシュ14を用いてまとめてメモリ2とアクセスすることで、メモリ2へのアクセス回数を削減し、メモリ待ちによるボトルネックを削減することが可能となる。
次に、図4を用いて、マルチメディアマイコンで実行されるマルチメディア処理の流れの一例を説明する。図4は、マルチメディア処理の流れを示す図である。
図4に示すように、マルチメディアマイコン1では、CPU11とアクセラレータ12とが連携してマルチメディア処理を行い、CPU11にて実行される処理(1000)と、アクセラレータ12にて実行される処理(1100)に区別される。CPU11にて実行されるマルチメディア処理は、前処理(1001)と後処理(1009)の2つがあり、それぞれ、アクセラレータ12による処理(1005)の前後に行う。
まず、CPU11が前処理(1001)を行うと、CPU11はアクセラレータ12に当該データを渡すために、データ領域23に書き込み(1002)、アクセラレータ12に対して、起動要求を出す(1003)。それを受け、アクセラレータ12は、データ領域23からデータを読み出し(1004)、アクセラレータ12で処理を行い(1005)、処理結果をデータ領域23に書き戻し(1006)、その後に、CPU11に対して処理終了報告を上げる(1007)。そして、CPU11は、アクセラレータ12からの処理終了報告を受けると、アクセラレータ12による処理結果をデータ領域23から読み込み(1008)、後処理を行う(1009)。また、処理内容によっては、前処理(1001)がなく、アクセラレータ12から処理が開始される場合や、後処理(1009)がなく、アクセラレータ12による処理で終了するものもある。
このように、CPU11とアクセラレータ12がデータ領域23を介してデータ連携を行い、マルチメディア処理を実行している。
次に、図5及び図6を用いて、前記図4を参照しながら、I/O専用キャッシュを用いたマルチメディア処理のデータの流れの一例を説明する。図5及び図6は、マルチメディア処理のデータの流れを示す図であり、図5は図4における前処理(1001)からアクセラレータ処理(1005)までの処理、図6は図4における処理結果セット(1006)から後処理(1009)までの処理をそれぞれ示したものである。
まず、図5に示すように、CPU11は前処理(1001)を行い、その結果データをアクセラレータ12で処理させるために、データ領域23に書き込む(1002,101)。このとき、I/O専用キャッシュ14は、CPU11からのデータ領域23への当該書き込みデータをキャッシュすると共に、メモリ2内のデータ領域23に当該書き込みデータを書き込む(102)。この際に、I/O専用キャッシュ14は、キャッシュすべきデータであるかは、CPU11から書き込みデータと共に出力される書き込み先のアドレスにより、データ領域23であるかどうかにより判断する。
その後、CPU11は、アクセラレータ12に対して起動要求信号を出力する(1003)。それを受けて、アクセラレータ12は起動し、データ領域23から当該データを読み込む(1004)。このとき、I/O専用キャッシュ14上に当該書き込みデータがキャッシュされている部分の連携データは、I/O専用キャッシュ14から読み出し(103)、I/O専用キャッシュ14にキャッシュされていない部分のデータ本体は、メモリ2のデータ領域23から直接読み出し(104)、アクセラレータ12は読み出された当該データに対して処理(1005)を行う。
続いて、図6に示すように、アクセラレータ12による処理(1005)が終わると、処理結果をデータ領域23に書き戻す(1006,111)。このとき、I/O専用キャッシュ14は、アクセラレータ12からデータ領域23への書き込みデータをキャッシュすると共に、メモリ2内のデータ領域23に当該処理データを書き込む(112)。この際に、I/O専用キャッシュ14は、アクセラレータ12から当該処理データと共に出力されるキャッシュ要求信号または書き込み先のアドレスにより、キャッシュすべきデータであるかどうかを判定する。
その後、アクセラレータ12からの処理終了報告(1007)を受け、CPU11は、当該処理データをデータ領域23から読み出す(1008)。このとき、CPU11が処理するデータは、I/O専用キャッシュ14上に当該処理データがキャッシュされている部分の連携データであるため、I/O専用キャッシュ14から読み出す(113)だけで、CPU11は後処理(1009)ができる。この際に、I/O専用キャッシュ14の容量の関係でキャッシュされていない部分が存在した場合のみ、メモリ2のデータ領域23から読み出す(114)。
このように、メモリ2よりもアクセスレイテンシが短い高速なI/O専用キャッシュ14を介して、CPU11とアクセラレータ12がデータ連携を行うことで、メモリ2内のデータ領域23を介したデータ連携に比べて、オーバーヘッドとなるアクセス待ち時間を大幅に削減でき、マルチメディア処理の高速化が実現される。
さらに、CPU11が後処理を行う場合、CPU11がアクセラレータ12による処理データをすべて読み出すことは少ないことに注目し、当該処理データをメモリ2に書き込む際に、CPU11が読み出すデータである連携データの部分をI/O専用キャッシュ14にキャッシュし、それ以外のデータ本体は、I/O専用キャッシュ14上にキャッシュせず、メモリ2内のデータ領域23に直接書き込む。
また、アクセラレータ12にて処理を行う場合、アクセラレータ12は、基本的にデータ領域23へのアクセスは連続したアドレスに対して行われる。そこで、メモリ2は、SDRAMやDDR−SDRAMなどのスループットが高速であるメモリであることに注目し、データ領域23の最初のみをI/O専用キャッシュ14に保持し、あとは、メモリ2の連続アクセス性能に期待する方法を採る。
以上の方法を採ることで、I/O専用キャッシュ14上にキャッシュする連携データの部分を減らして、I/O専用キャッシュ14の有効利用を実現できる。
次に、図7〜図14を用いて、I/O専用キャッシュの構造及び動作を詳細に説明する。図7は、バスの構成を示す図である。図8は、I/O専用キャッシュの構成を示す図である。図9は、レジスタの構成を示す図である。図10(a),(b)は、I/O専用キャッシュ内のレジスタアクセス経路を示す図である。図11は、判定回路での処理の流れを示す図である。図12は、アドレス判定回路の構成を示す図である。図13は、キャッシュの構成を示す図である。図14は、キャッシュの動作を示す図である。
図7に示すように、バス13は、アドレスバス131と、データバス132から構成されている。アドレスバス131は、アクセス先のアドレス1311とアクセス信号1312、及び、アクセラレータ12からのキャッシュ要求信号1313から構成されている。また、データバス132は、リード用データバス1321とライト用データバス1322から構成されている。
図8に示すように、I/O専用キャッシュ14は、バス13とメモリコントローラ15に接続されており、レジスタ141、判定回路142及びキャッシュ143から構成される。また、判定回路142からキャッシュ143に対して、キャッシュ要求144が、レジスタ141から判定回路142へエリアレジスタデータ信号145が出力されている。さらに、I/O専用キャッシュ14において、アドレスバス131は、判定回路142及びキャッシュ143に、データバス132はキャッシュ143に接続されている。
図9に示すように、レジスタ141は、CPU11からアクセス可能であり、I/O専用キャッシュ14の状態及び設定値を保持する複数のレジスタから構成されている。このレジスタ141は、I/O専用キャッシュ14の有効・無効をセットさせる動作モードレジスタ1411、ライトバックモードやライトスルーモードなどのキャッシュ143の動作モードを規定するキャッシュモードレジスタ1412、及びI/O専用キャッシュ14に保持させるデータエリア(アドレス範囲)を指定する連携データエリアレジスタ1413から構成されている。
この連携データエリアレジスタ1413では、1つの連携データエリアは、連携データエリアアドレスレジスタ1414(1414−1〜1414−m)と、連携データエリアマスクレジスタ1415(1415−1〜1415−m)を用いて表し、この2つのレジスタのセットを複数持つことで、複数の連携データエリアをサポート可能とする。また、連携データエリアマスクレジスタ1415は、連携データエリアアドレスレジスタ1414とアドレス1311とで値の比較を行う際に、比較すべきビットを表している。これにより、2つのレジスタ1414と1415とで、連携データエリアを表現することが可能となる。他には、連携データエリア開始アドレスレジスタと連携データエリア終了アドレスレジスタのセットによる連携データエリアの表現もある。
この連携データエリアレジスタ1413内のこれらのレジスタ値はエリアレジスタデータ信号145として、判定回路142に出力される。
なお、このレジスタ141に対するCPU11からのアクセス経路に関しては、図10に示すように、バス13に接続された構成(a)と、バス13とは異なるレジスタアクセス用バス経由でバス13に接続される構成(b)がある。すなわち、図10(a)の構成では、レジスタ141がバス13に接続され、このバス13を通じてCPU11からアクセスされる。一方、図10(b)の構成では、レジスタ141がレジスタアクセス用バスを経由してバス13に接続され、このレジスタアクセス用バスを経由してCPU11からアクセスされる。
判定回路142は、CPU11及びアクセラレータ12からのメモリ2へのライトアクセスに対し、レジスタ141からのエリアレジスタデータ信号145、アドレスバス131及び、アクセラレータ12からのキャッシュ要求信号1313から、そのライトデータをキャッシュ143に保持させるかどうかの判定を行い、キャッシュ143に対してキャッシュ要求144を出力する。この判定方法は、図11に示すとおりである。
図11に示すように、まず、判定回路142は、バス13からメモリ2へのアクセス要求に対し、アクセス信号1312をチェックし、アクセスの種類を調べ(1421)、リードアクセスならば、キャッシュ要求144は無効とする(1426)。
また、1421にて、ライトアクセスの場合、当該ライトアクセスのアドレス1311及び、レジスタ141からのエリアレジスタデータ信号145から、当該アドレスが、連携データエリア内であるかどうかを調べ(1422)、連携データエリア内ならば(Yes)、キャッシュ要求144は有効となる(1425)。
また、1422にて、連携データエリア外の場合(No)、当該ライトアクセスのアクセス要求元を調べ(1423)、CPU11からのライトアクセスならば、キャッシュ要求144は無効となる(1426)。
また、1423にて、アクセス要求元がアクセラレータ12ならば、当該アクセラレータ12からのキャッシュ要求信号1313が有効か無効かを調べ(1424)、有効ならば、キャッシュ要求144は有効となる(1425)。
また、1424にて、当該アクセラレータ12からのキャッシュ要求信号1313が無効ならば、キャッシュ要求144は無効となる(1426)。
続いて、前述したライトアクセスのアドレスが連携データエリア内であるかどうかの判定(1422)について図12に示す。
図12に示すように、判定(1422)は、レジスタ141からのエリアレジスタデータ信号145及びアドレス1311を入力とし、連携データエリアアドレスレジスタ1414−1〜1414−mとアドレス1311との比較を行う。連携データエリアアドレスレジスタ1414−1〜1414−mと連携データエリアマスクレジスタ1415とでビット毎の論理積を計算するゲート1425−1〜1425−mと、アドレス1311と連携データエリアマスクレジスタ1415とでビット毎の論理積を計算するゲート1426−1〜1426−mにより比較するビットのみを比較器1427−1〜1427−mに入力し、各比較器1427−1〜1427−mの比較結果の総論理和をゲート1428で計算し、当該アドレス1311が、連携データエリアであるかどうかを判定する。
以上により、判定回路142は、メモリ2へのアクセスが連携データエリアへのアクセスかどうかを判定し、キャッシュ143にキャッシュ要求144を出力する。キャッシュ143は、バス13及びメモリコントローラ15と接続されており、ライトバックまたはライトスルーキャッシュとして動作し、判定回路142からのキャッシュ要求144を受け、当該ライトデータをキャッシュする。
このキャッシュ143の構成を図13に示す。図13ではフルアソシアティブ方式で、N個のエントリを持ち、各エントリに保持しているアドレス情報、データ、制御情報がある。各エントリが保持するデータのサイズは、32Bや64Bぐらいである。また、制御情報は、エントリの入換えを行う際のLRU情報やエントリにデータが登録されているかどうかのValidビット及び、データサイズが更新されているかどうかを示すダーティビット(ライトバック時に使用)などがある。また、キャッシュヒットとは、当該アドレスが、本キャッシュ143のエントリに登録されている場合、キャッシュミスは、キャッシュ143に登録されていない場合のことを示す。
このキャッシュ143の動作は、下記の5種類(ライトアクセスで3種類(a)−(1),(2),(3)、リードアクセスで2種類(b),(c))に分類される。
(a)−(1)ライトアクセスで、キャッシュ要求144が有効及び、キャッシュヒットの場合は、キャッシュ143に登録されている当該エントリのデータをデータライトバス133のライトデータで上書きを行い、ダーティビットをONにする。
(a)−(2)ライトアクセスで、キャッシュ要求144が有効及び、キャッシュミスでキャッシュ143に空いているエントリがある場合は、キャッシュ143の空いているエントリを探し、当該エントリにライトデータを登録する。これは、エントリを有効にし、アドレス情報にアドレス1311の値を書き込む。このとき、データライトバス1322からのライトデータサイズがエントリのデータサイズより小さい場合には、メモリ2より当該アドレスの内容データを読み出し、当該エントリのデータ情報に登録した後に、当該ライトデータを書き込む。
(a)−(3)ライトアクセスで、キャッシュ要求144が有効及び、キャッシュミスでキャッシュ143に空いているエントリがない場合は、キャッシュ143の各エントリの制御情報にあるLRU情報を調べ、一番古いエントリを破棄し、このエントリに当該ライトデータを登録する。登録手順は、(a)−(2)と同じである。
(b)リードアクセスで、キャッシュ143にヒットした場合は、キャッシュ143に登録されている当該アドレスのエントリのデータ情報をデータリードバス1321に出力する。
(c)リードアクセスで、キャッシュ143にてミスした場合は、メモリコントローラ15に、当該アドレスを出力し、メモリ2から当該アドレスに対応するデータを読み出し、データリードバス1321に出力する。なお、このとき読み出したデータをキャッシュ143には登録しない。
上記処理にて、キャッシュ143に登録する際に、全てのエントリが使用中であった場合には、従来のキャッシュと同様にLRU等のアルゴリズムを用い、キャッシュ143から追い出すエントリを探す。このとき、キャッシュ143がライトバックモードの場合には、当該エントリのデータをメモリ2へ書き戻しを行う。
以上の手順により、I/O専用キャッシュ14は、CPU11及びアクセラレータ12からのライトデータをキャッシュ143に保持し、CPU11とアクセラレータ12間のデータ連携をI/O専用キャッシュ14内で実現することで、データ連携によるボトルネックを解消し、マルチメディア処理の高速化を実現できる。また、本当に連携するデータのみをI/O専用キャッシュ14に保持させることで、I/O専用キャッシュ14の使用効率を向上し、キャッシュミスによるオーバーヘッドを最小化することが可能となる。
さらに、本I/O専用キャッシュ14の処理を高速化及びスプリットバスに対応するため、処理をパイプライン化し、図14に示すように3ステージ制を採る。なお、キャッシュミスによりメモリ2へのアクセス中のエントリに対しては、当該エントリへの登録処理が終了するまで、同一エントリへのアクセスは待たせ、メモリ競合においても、正しくメモリアクセスが行われるようにする。
すなわち、図14に示すように、ステージ1では、判定回路142がキャッシュ要求判定を行い、キャッシュ143がライトアクセス及びリードアクセスの時にヒット判定を行う。ステージ2では、キャッシュの動作において、ライトアクセスの時はヒットの場合にキャッシュ143のデータ更新、ミスの場合にメモリ2へのアクセスを行い、リードアクセスの時はヒットの場合にキャッシュ143からデータ出力、ミスの場合にメモリ2へのアクセスを行う。ステージ3では、キャッシュの動作において、ライトアクセスの時はミスの場合にキャッシュ143への登録を行い、リードアクセスの時はミスの場合にバス13へのデータ出力を行う。
これにより、メモリアクセス中においても、判定回路142によるキャッシュ要求判定や、キャッシュ143によるキャッシュ判定処理が行えるため、I/O専用キャッシュ14によるオーバーヘッドを小さくすることができる。
さらに、I/O専用キャッシュ14とメモリコントローラ15とを組合せて、さらに効率を向上させる本実施の形態の応用例を、以下において説明する。
次に、図15〜図17を用いて、本実施の形態の応用例として、I/O専用キャッシュ14とメモリコントローラ15とを組合せて効率を向上させる場合を説明する。図15は、メモリコントローラの構成を示す図である。図16は、キャッシュの構成を示す図である。図17は、アクセス要求のデータ構成を示す図である。
まず、メモリコントローラ15に、以下の機能を持たせる。
(1)メモリ帯域確保のために、メモリアクセスに優先順位を導入する。すなわち、大きな帯域が必要なアクセラレータに対して、優先的にメモリアクセスが行われるようにする。
(2)メモリアクセスのオーバーヘッドを最小限にするOut−of−orderアクセスを採用する。すなわち、SDRAM及びDDR−SDRAMのバンク毎にアクティブ状態を管理し、各バンクに対してCASアドレス投入のみでアクセス可能な同じRowアドレスへのアクセスが連続するようにメモリアクセスの順番の入換えを行う。
また、ライトアクセスはI/O専用キャッシュ14がアクセス要求を受け取れば、CPU11やアクセラレータ12は次の処理に移ることができるが、リードアクセスが遅れるとCPU11やアクセラレータ12がメモリ待ちとなるため、リードアクセスを優先して行う必要がある。そのため、本メモリコントローラ15では、メモリアクセスのみを高速化し、帯域確保のための優先順位制御はリードアクセスに対してのみ行う。
さらに、注意すべき点は、帯域確保やOut−of−orderアクセスを行うことにより、メモリ2へのアクセス順序の入換えが発生する。そのため、アクセス順序どおりにアクセスしたのと同じ結果が得られるようにするメモリコンシステンシを保つことが重要となる。このメモリコンシステンシの維持には、以下の配慮が必要となる。
すなわち、異なるアドレスへの2つのメモリアクセスに関する順序入換えは問題なし。同一アドレスへの2つのメモリアクセスに関して、ライトアクセスを越えた順序の入換えがないようにする。以後、同一アドレスへの2つのメモリアクセス要求のことを、「2つのメモリアクセスには依存関係がある」と呼ぶ。
このメモリコントローラ15の構成を図15に示す。図15に示すように、メモリコントローラ15は、アクセス制御回路151、リフレッシュ制御回路152、優先順位付きリードアクセス要求FIFO153、ライトアクセス要求FIFO154、メモリアクセス制御回路155から構成されている。リードアクセス要求FIFO153は、優先順位毎にFIFO(153−1〜153−n)が存在する。
また、I/O専用キャッシュ14内にあるキャッシュ143の構成を図16に示す。図16に示すように、キャッシュ143には、前記図13に示したN個の各エントリに保持しているアドレス情報、データ、制御情報に加えて、優先順位を示す優先度が登録されている。
このような構成による本実施の形態の応用例では、I/O専用キャッシュ14からは、CPU11及びアクセラレータ12に従った優先順位情報付きのアクセス要求が来る。これを受け、アクセス制御回路151は、図17に示すアクセス要求フォーマットに変換する。このフォーマットは、アクセス要求に関するアクセス属性とメモリコンシステンシを維持するための依存関係情報からなっており、アクセス属性は、各アクセスを管理するためのtagNoと、リードライト信号、アドレス、データから構成され、また、依存関係情報は、依存関係のあるメモリアクセス要求のtagNo及び、自分に依存するアクセスがあるかどうかの最終ビットから構成されている。
このアクセス制御回路151の動作は、I/O専用キャッシュ14から来るアクセス要求は、下記のとおりである。
(1)新たなアクセス要求に対して、新たなタグを発行し、tagNoに登録する。また、最終ビットをセットする。
(2)続いて、リードアクセス要求FIFO153及びライトアクセス要求FIFO154にキューイングされている先行アクセス要求を調べ、依存関係があるかを確認する。この確認の結果、依存関係がない場合、リードアクセスの場合には、該当するリードアクセス要求FIFO153−1〜153−nの該当FIFOに、また、ライトアクセスの場合は、ライトアクセス要求FIFO154にキューイングして終了する。
また、依存関係がある場合には、下記の手順に従う。
(a)−(1)本アクセス要求がリードアクセス要求である場合、依存関係のある先行する最新アクセス要求(最終ビットがセット)に対し、ライトアクセス要求の場合は、当該先行アクセス要求のライトアクセスデータを返し、本リードアクセス要求はキューイングせずに終了する(FIFOヒット)。
(a)−(2)本アクセス要求がリードアクセス要求である場合、依存関係のある先行する最新アクセス要求(最終ビットがセット)に対し、リードアクセス要求の場合は、当該先行リードアクセス要求のtagNoを、本アクセス要求の依存tagに登録し、先行リードアクセス要求の最終ビットをクリアする。
(b)キューイングするアクセス要求がライトアクセスである場合、当該先行アクセス要求のtagNoを、本アクセス要求の依存tagに登録し、先行ライトアクセス要求の最終ビットをクリアする。
また、メモリアクセス制御回路155の動作は、各リードアクセス要求FIFO153とライトアクセス要求FIFO154に対して、各FIFOの優先順位順に、アクセス要求を取り出す。このとき、SDRAMに対して発行するアクセスに対して、同一バンク、同一Rowアドレスに関するアクセスについて、リードアクセスとライトアクセスをそれぞれまとめて、メモリ2にアクセスする。この際に、依存tagNoがセットされているアクセス要求に対しては、除外すると共に、メモリ2にアクセスする各アクセス要求に対して、最終ビットがセットされている場合は、依存関係がないので、そのまま終了する。最終ビットがクリアされている場合は、下記の手順に従い、依存関係リストを更新する。
(a)キューイングされている各アクセス要求に対して、依存tagが終了した本アクセス要求のタグ番号であるかを調べる。
(b)該当するキューイング中のアクセス要求に対して、依存tagをクリアする。
以上の方式を採ることにより、メモリコンシステンシ(一貫性)を保持しつつ、SDRAM、DDR−SDRAMの各バンクに対して、効率のよい同一Rowアドレスへのアクセスをまとめてアクセスすることが可能となり、メモリ2へのアクセス効率を向上させることが可能となる。このアクセス効率とI/O専用キャッシュ14による効果でマルチメディア処理はメモリ2によるボトルネックを最小限に抑え、スムーズな処理実行を実現できる。
次に、図18を用いて、本実施の形態のマルチメディアマイコンを用いたマルチメディア端末の一例を説明する。図18は、マルチメディアマイコンを用いたマルチメディア端末を示す構成図である。
マルチメディア端末としては、近年、携帯電話やPDAなどの小型の表示機能を持つ携帯端末においても、音楽演奏機能やカメラ機能を持ち、画面に静止画(写真)や動画(ムービー)を表示したりすることが可能となっている。
このマルチメディア端末100は、マルチメディアマイコン1を核として、このマルチメディアマイコン1に、メモリ2、入出力装置である画面3、カメラ4、スピーカ5、及び通信装置6を接続した構成となっている。
このマルチメディアマイコン1は、画面3、カメラ4、スピーカ5、通信装置6と接続するインタフェースを持つと共に、画面表示制御、画像入力制御、音声出力制御、通信送受信制御を行うアクセラレータを持つ。これにより、カメラ4で撮影された映像を画面3への表示や、通信装置6を介した外部と映像を高速に送受信することが可能となる。
次に、図19及び図20を用いて、本実施の形態において、さらに別のマルチメディアマイコンの構成及び動作の一例を説明する。図19は、さらに別のマルチメディアマイコンを示す構成図である。図20は、キャッシュとI/O専用キャッシュとの使い分けを示す図である。
図19に示すように、本実施の形態において、さらに別のマルチメディアマイコン1は、マスタとして動作し、内部にキャッシュ110を持つCPU11と、スレーブとして動作する複数のアクセラレータ12(12−1〜12−n)と、本発明の特徴であるI/O専用キャッシュ14と、これらを接続するバス13と、メモリコントローラ15から構成されている。このマルチメディアマイコン1の外部にはメモリ2が接続されており、メモリ2には、CPU11で実行される一連の手続き処理を記述したプログラム21と、ワークエリア22と、さらに、各アクセラレータ12が処理するデータを格納するデータ領域23(23−1〜23−n)がある。
キャッシュ110及びI/O専用キャッシュ14はメモリ2の内容を一時的に保持するキャッシュとしての機能を持っており、キャッシュ110は、CPU11がメモリ2にアクセスする際のアクセス効率の向上を、また、I/O専用キャッシュ14は、CPU11及びアクセラレータ12がメモリ2にアクセスする際のアクセス効率の向上を実現させる。
図20を用いて、キャッシュ110とI/O専用キャッシュ14との使い分けについて説明する。なお、以下、キャッシュ110はコピーバック方式を採るものとし、スヌープ機能を用いて、アクセラレータ12からのメモリ2へのアクセスを監視し、キャッシュ110と、メモリ2及びI/O専用キャッシュ14との間で、キャッシュコヒーレンシを保つ機能を持つ。また、キャッシュがメモリ2からデータをラインサイズ分読み込むことをフィード、メモリ2に対してラインサイズ分書き込むことをパージと称する。
CPU11が、プログラム21及びワークエリア22をアクセスする際には、キャッシュ110のみを動作し、I/O専用キャッシュ14はスルーする(121)。従って、キャッシュ110でキャッシュミスが発生した際には、CPU11のアクセスがリード及びライト(ライトバック時)の両方において、キャッシュ110はメモリ2に対して、データをフィード及びパージを行う。
一方、CPU11が、アクセラレータ21のデータ領域23をアクセスする際には、キャッシュ110及びI/O専用キャッシュ14がともに動作する(122〜124)。従って、キャッシュ110でキャッシュミスが発生した際には、引き続いてI/O専用キャッシュ14でもキャッシュ判定が行われる。
I/O専用キャッシュ14でキャッシュヒット時、CPU11はI/O専用キャッシュ14上のデータをアクセスする(122)。また、I/O専用キャッシュ14でキャッシュミス時、キャッシュ110からのアクセスにより動作が異なる。
(1)キャッシュ110からのキャッシュフィードアクセス(リード)
I/O専用キャッシュ14は、メモリ2からのリードデータをスルーしてキャッシュ110にデータを出力する(123)。
(2)キャッシュ110からのキャッシュパージアクセス(ライト)
(2)−(a)I/O専用キャッシュ14は、当該パージデータが連携データである場合、I/O専用キャッシュ14に登録する。このとき、キャッシュ110のラインサイズが、I/O専用キャッシュ14のラインサイズより小さい場合、メモリ2より、当該パージデータを含むラインをフィード(124)した後に、当該パージデータを書き込む。
(2)−(b)当該パージデータが連携データでない場合には、I/O専用キャッシュ14はスルーしてメモリ2に書き込む(123)。
続いて、図21〜図28を用いて、暗号化をIPプロトコルレベルで行い、セキュリティ確保を実現するIPsecを用いた通信を高速化するマルチメディアマイコンの具体例について説明する。このIPsecは、VPN(Virtual Private Network)の標準プロトコルとして規定されたものである。
図21は、マルチメディアマイコン1の具体的な構成を示す。マルチメディアマイコン1は、CPU11、アクセラレータ12、I/O専用キャッシュ14と、これらを接続するバス13及びメモリコントローラ15から構成されている。また、アクセラレータ12として、TCPアクセラレータ12−1、IPsecアクセラレータ12−2、及びEtherMAC12−3を持ち、TCPアクセラレータ12−1はチェックサム計算とメモリコピーを、IPsecアクセラレータ12−2は復号化及び認証処理を、EtherMAC12−3はLAN130で接続されて、LANからのフレームの送受信機能を持つ。なお、ここではLAN130は、LANとして最も多く使用されているイーサネット(登録商標)とする。
図22は、IPsecのトランスポートベースを用いて通信を行う際のフレーム構造を示す。LAN及びインターネットでは、標準プロトコルとしてTCP/IPプロトコルが使用されており、送受信されるデータサイズが1フレームで送信できるサイズより大きい場合、複数のTCPパケットに分割されて送受信される。
図22に示すとおり、IPsecのトランスポートモードでは、TCPパケットを暗号化したIPsecパケットにIPヘッダを付加してIPでカプセル化した構成を採っている。マルチメディアマイコン1では、LAN向けとしてイーサネット(登録商標)を使用しているため、最後にMACヘッダを付加した構成となる。ちなみに、図23には、IPsecを用いない場合のTCP/IPのフレーム構成を示している。
なお、IPsecパケットは、IPsecヘッダとIPsecデータから構成されており、IPsecヘッダには暗号化を行っているためにESPヘッダを使用する。IPsecデータは、暗号化に必要なデータを持つESPトレーラをTCPパケットに付加し、その全体を暗号化した後、改ざんを検出できるようにESP認証値が加えられている。
次に、キャッシュの動作として、I/O専用キャッシュを使用しない場合の受信処理(図24)、I/O専用キャッシュを使用した場合の受信処理(図25)、連携データ部のみをI/O専用キャッシュに保持し、I/O専用キャッシュを使用した場合の受信処理(図26)を順に説明する。
まず、I/O専用キャッシュ14を使用しない場合、この図22に示すIPsecのトランスポートモードのイーサフレームを受信する際の処理を、図24を用いて説明する。
(1)マルチメディアマイコン1がイーサネット(登録商標)のLAN130から、当該イーサフレームを受信し、メモリ2内のアクセラレータ12のデータ領域23に書き込む(1001,1011)。
(2)CPU11は、当該イーサフレーム1011のMACヘッダ及びIPヘッダをアクセラレータ12のデータ領域23より読み込み、イーサ受信及びIP受信処理を行う(1002)。
(3)CPU11は、当該イーサフレーム1011がIPsecパケットを含むため、当該イーサフレーム1011内のIPsecヘッダを読み込み、IPsec受信処理を行い、IPsecアクセラレータ12−2を起動する。
(4)IPsecアクセラレータ12−2は、アクセラレータ12のデータ領域23より当該イーサフレーム1011内のIPsecデータを読み込み、認証処理及び復号処理を行い、その結果をアクセラレータ12のデータ領域23にTCPパケット(TCPデータ)1012として書き戻す(1003)。
(5)CPU11は、アクセラレータ12のデータ領域23内のTCPパケット1012より、TCPヘッダを読み込み、受信処理を行うとともに、チェックサムを計算するため、TCPアクセラレータ12−1を起動する(1004)。
(6)TCPアクセラレータ12−1は、アクセラレータ12のデータ領域23内のTCPパケット1012を読み込み、チェックサムを計算するとともに、TCPデータを受信データ内の適切な位置(図では左から3番目の位置)に書き込む(1005)。
このように、I/O専用キャッシュ14を使用しない場合、メモリ2へのアクセスが、1イーサフレーム当たり5回発生することになる。
一方、I/O専用キャッシュ14を使用した場合の動作を、図25を用いて説明する。
(1’)マルチメディアマイコン1がイーサネット(登録商標)のLAN130から、当該イーサフレームを受信し、メモリ2内のアクセラレータ12のデータ領域23に書き込む(1021,1011)。しかし、アクセラレータ12のデータ領域23への書き込みであるため、I/O専用キャッシュ14は当該フレームをキャッシュし(1011’)、実際にメモリ2へのアクセスは発生しない。
(2’)CPU11は、アクセラレータ12のデータ領域23内の当該イーサフレーム1011内にあるMACヘッダ及びIPヘッダを読み込む際、I/O専用キャッシュ14にヒットする。そのため、メモリ2へのアクセスは発生せず、I/O専用キャッシュ14から当該フレーム1011’のMACヘッダ及びIPヘッダが読み込まれ、イーサ受信及びIP受信処理を行う(1022)。
(3’)CPU11は、当該イーサフレーム1011’がIPsecパケットを含むため、当該イーサフレーム1011内のIPsecヘッダを読み込み、IPsec受信処理を行い、IPsecアクセラレータ12−2を起動する。このメモリ2へのアクセスも、(2)と同様にI/O専用キャッシュ14にヒットするため、当該イーサフレーム1011’のIPsecヘッダが読み込まれ、メモリ2へのアクセスは発生しない(1022)。
(4’)IPsecアクセラレータ12−2は、当該イーサフレーム1011内のIPsecデータを読み込もうとするが、I/O専用キャッシュ14にヒットし、実際には当該イーサフレーム1011’から読み込まれる(1023)。その後、IPsecアクセラレータ12−2は認証処理及び復号処理を行い、その結果をアクセラレータ12のデータ領域23にTCPパケット1012として書き戻す。しかし、アクセラレータ12のデータ領域23への書き込みであるため、I/O専用キャッシュ14はキャッシュし(1012’)、実際にメモリ2へのアクセスは発生しない(1023)。
(5’)CPU11は、アクセラレータ12のデータ領域23内のTCPパケット1012より、TCPヘッダの読み込みを行うが、実際にはI/O専用キャッシュ14でヒットするため、TCPパケット1012’のTCPヘッダが読み込まれる(1024)。続いて、CPU11はTCP受信処理を行うとともに、チェックサムを計算するため、TCPアクセラレータ12−1を起動する。
(6’)TCPアクセラレータ12−1は、アクセラレータ12のデータ領域23内にあるTCPパケット1012の読み込みを行うが、I/O専用キャッシュ14でヒットするため、TCPパケット1012’を読み込む。TCPアクセラレータ12−1は、チェックサムを計算するとともに、TCPデータを受信データ内の適切な位置に書き込む(1025)。
以上により、アクセラレータ12とCPU11がともにアクセスする連携データをI/O専用キャッシュ14内に留めることで、メモリ2へのアクセスを0回にすることが可能となった。実際には上述のように、画像やダウンロードなどでは、複数のイーサフレームに分割されて送受信されるため、メモリ2へのアクセスのオーバーヘッドが通信性能に大きく影響することになる。
また、CPU11とアクセラレータ12がともにアクセスする連携データは、1031及び1032のヘッダ部分である。この連携データをI/O専用キャッシュ14がキャッシュすることにより、CPU11は、アクセラレータ12が書き込んだデータをアクセスが遅いメモリ2からではなく、I/O専用キャッシュ14から読み込むことができるため、オーバーヘッドとなるアクセス待ち時間を大幅に削減でき、IPsecベースのTCP/IP通信を高速に行うことが可能となる。
また、図26に、連携データ部1031(MACヘッダ、IPヘッダ、IPsecヘッダ),1032(TCPヘッダ)のみをI/O専用キャッシュ14に保持し、それ以外のデータ(IPsecデータ、TCPデータ)をメモリ2内に保持した場合の構成図を示す。この構成は同時に複数のアクセラレータ12が動作し、I/O専用キャッシュ14に余裕がない場合である。
一方、I/O専用キャッシュ14に余裕がある場合には、図25に示すように、連携データ部1031,1032に加えて、連携データ部以外のデータもキャッシュすることにより、アクセラレータ12間のデータ転送への利用も可能となる。アクセラレータ12側では、連続したアドレスに対してアクセスすることが多いことに注目し、アクセラレータ12間のデータ転送により、連携データ1031,1032がキャッシュアウトされないことがポイントとなる。そこで、I/O専用キャッシュ14上に連携データが優先的にキャッシュすることを実現する方法として、以下の方法が挙げられる。
(a)連携データのみキャッシュする。
(b)連携データのキャッシュ滞在時間を他のデータよりも長くする(LRUのカウンタの進み具合を他のデータに比べて遅くするなど)。
(c)ラインごとに連携データ用の使用中ビットを設け、CPU11での一連の処理が終了した時点で、当該使用中ビットをクリアする。クリアされたラインは、キャッシュアウトの対象となる。
ここで、(a),(b)の方法は、I/O専用キャッシュ14での処理となるため、アプリケーションの介在が不要であるが、(c)の方法は、使用中ビットをOSかドライバ・ミドルウエアレベルの管理処理が必須となる。
上記の方法により、連携データがI/O専用キャッシュ14に長く滞在可能となり、特に複数のアクセラレータが同時に動作している際に、連携データがI/O専用キャッシュ14からキャッシュアウトされることによる性能低下を防ぐ事が可能となる。
さらに、同様にIPsecを用いて暗号化したデータを送信する処理を図27に示す。送信処理は、受信処理と逆である。
CPU11は、メモリ2内のアクセラレータ12のデータ領域23内に送信データをセットする。このとき、I/O専用キャッシュ14は、送信データがアクセラレータ12のデータ領域23にライトされるのを検出し、キャッシュする。図27では、この送信データは4フレームに分割され、3番目のデータ1061が送信される処理を示している。
(1)CPU11は3番目のデータ1061を送信するため、TCPアクセラレータ12−1に起動をかける。
(2)TCPアクセラレータ12−1は、アクセラレータ12のデータ領域23内の当該送信データから1フレームで送信可能なサイズ1061に切り出し、チェックサムを計算するとともに、送信用のバッファ1062内のTCPデータ部にコピーする。このとき、TCPアクセラレータ12−1はアクセラレータ12のデータ領域23内をアクセスするため、実際にはI/O専用キャッシュ14内の1061’を読み込み、1062’のTCPデータ部に書き込む(1051)。
(3)CPU11はTCPヘッダを作成し、アクセラレータ12のデータ領域23内のTCPパケット1062内のTCPヘッダに書き込む。しかし、実際にはI/O専用キャッシュ14内のTCPパケット1062’内のTCPヘッダ部1071に書き込まれる(1052)。
(4)TCPパケットを暗号化するため、CPU11はIPsecアクセラレータ12−2を起動する。これを受けて、IPsecアクセラレータ12−2は、TCPパケット1062を読み込み、暗号化した結果をイーサフレーム1063のIPsecデータ部に書き込む。このとき、実際には、I/O専用キャッシュ14内の1062’を読み込み、暗号化したデータを1063’のIPsecデータ部に書き込む。
(5)CPU11はヘッダ部(MACヘッダ、IPヘッダ、IPsecヘッダ)を作成し、アクセラレータ12のデータ領域23内のイーサフレーム1063のヘッダ部に書き込むが、実際にはI/O専用キャッシュ14内の1063’のヘッダ部1072に書き込まれる(1053)。
(6)CPU11は、イーサフレーム1063の作成終了を受け、EtherMAC12−3に送信要求を行う。それを受け、EtherMAC12−3はアクセラレータ12のデータ領域23内のイーサフレーム1063(実際にはI/O専用キャッシュ14内の1063’)を読み出し、イーサネット(登録商標)のLAN130に出力する。
以上のように、送信処理においても、CPU11及びアクセラレータ12はともに、I/O専用キャッシュ14の有無を気にすることなく実行することが出来る。
また、上記受信処理及び送信処理が同時に発生しても、I/O専用キャッシュ14はキャッシュであるため、問題なく利用できる。
次に、図28を用いて、CPU11内のキャッシュ110がスヌープ機能を持つ際の処理を示す。
上記送信処理の(3)において、CPU11がキャッシュ110を有効かつライトバックモードで、TCPヘッダを作成すると、実際のTCPヘッダはキャッシュ110内にのみ存在し、I/O専用キャッシュ14内の1071及び、アクセラレータ12のデータ領域23内には存在しない。ここで、CPU11の起動を受けたIPsecアクセラレータ12−2は、TCPヘッダを読みに行く。キャッシュ14はこのアクセスを、バス13を介して検出すると、IPsecアクセラレータ12−2にアクセス中断要求を出すとともに、キャッシュ110内のTCPヘッダのデータをアクセラレータ12のデータ領域23内のTCPパケット1062へパージする。しかし、実際にはI/O専用キャッシュ14内のTCPヘッダ部1071に書き込まれる。
パージ処理が終了すると、キャッシュ110はIPsecアクセラレータ12−2へのアクセス中断要求を解除する。これを受けて、IPsecアクセラレータ12−2はTCPヘッダの読み込みを再開する。キャッシュ110からのパージ後の正しいTCPヘッダ1071のデータを読み込むことが可能となる。
ここで注目すべきは、アクセス時間の短いI/O専用キャッシュ14を使用することで、キャッシュ110とメモリ2間のキャッシュコヒーレンシは、アクセス待ち時間の大きいメモリ2へのアクセスなしに、I/O専用キャッシュ14を介したアクセスとなり、キャッシュパージによるオーバーヘッドを大幅に削減することが可能となる。
以上説明したように、本実施の形態によれば、以下のような効果を得ることができる。
(1)I/O専用キャッシュ14を採用したマルチメディアマイコン1,10によれば、マルチメディア処理をCPU11とアクセラレータ12が連携して動作する際に発生するメモリアクセスでのデータ連携によるボトルネックを最小限に抑えることができ、マルチメディア処理性能を高めることができる。
(2)I/O専用キャッシュ14は、CPU11とアクセラレータ12間のデータ連携に必要なデータのみを保持すると共に、I/O専用キャッシュ14に保持するかどうかの判定は、メモリ2へのライトアクセスのみで良いことに注目することにより、データ連携におけるI/O専用キャッシュ14でのキャッシュヒット率を向上させることが可能となり、よりコンパクトにI/O専用キャッシュ14を実現できる。
(3)複数のマルチメディア向けのアクセラレータ12を搭載した場合でも、データ連携を効率よく行うことが可能となるため、音声や静止画、動画などの複数のマルチメディア処理を同時かつ高速に処理可能なマルチメディアマイコン1,10、及びこのマルチメディアマイコンを用いたマルチメディア端末100を構成できる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
例えば、前記実施の形態においては、イーサネット(登録商標)を使用した有線による通信機能を具体例として説明したが、本発明はこれに限定されるものではなく、(1)無線による通信機能、(2)グラフィックス、MPEGやJPEG(画像圧縮/伸張)などによる画面表示機能、(3)画像回転や画質調整などの画像処理によるカメラ処理機能、(4)音楽、MP3(音声圧縮/伸張)などによるスピーカ処理機能、などにも同様に適用することができる。
尚、上述した実施の形態ではCPUを1つ備えた構成例を示したが、複数のCPUを備えた構成においても本発明を有効に適用することが出来る。
1…マルチメディアマイコン、2…メモリ、3…画面、4…カメラ、5…スピーカ、6…通信装置、10…マルチメディアマイコン、11…CPU、12…アクセラレータ、13…バス、14…I/O専用キャッシュ、15…メモリコントローラ、21…プログラム、22…ワークエリア、23…データ領域、100…マルチメディア端末、110…キャッシュ、130…LAN、141…レジスタ、142…判定回路、143…キャッシュ、151…アクセス制御回路、152…リフレッシュ制御回路、153…リードアクセス要求FIFO、154…ライトアクセス要求FIFO、155…メモリアクセス制御回路。