説明

マルチプロセッサ

【課題】 外部メモリへの効率的なアクセスが可能なマルチプロセッサを提供することである。
【解決手段】 CPU5は、外部メモリインタフェース3に直接外部バスアクセス要求を発行する機能と、DMAC4に対してDMA転送要求を行う機能と、の両方を備える。従って、離散したアドレスにランダムにデータアクセスを行う場合などは直接外部メモリインタフェース3に外部バスアクセス要求を発行し、データのブロック転送や仮想記憶管理機構が要求するページスワップなどを行う場合にはDMAC4にDMA転送要求を発行することで、外部メモリ50への効率的なアクセスが可能となる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のプロセッサコアを有するマルチプロセッサ及びその関連技術に関する。
【背景技術】
【0002】
特許文献1のマルチプロセッサでは、外部メモリ及び内部メモリ間のデータ転送を、DMAによって行っている。
【0003】
特許文献2のマルチプロセッサでは、外部メモリにアクセスするためのメモリ管理ユニットをプロセッサコアごとに搭載している。
【0004】
従来のマルチプロセッサでは、一般的に、共有の内部メモリにアクセスするためのバスとCPUが他の機能ユニットを制御するためのバスとが同一である。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平11−175398号公報
【特許文献2】特開2001−51958号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1のマルチプロセッサでは、外部メモリ及び内部メモリ間でデータのブロック転送などを行うときは、DMA転送により高速なデータ転送が可能となるが、離散したアドレスにランダムにデータアクセスを行う際は、DMA転送では効率が悪い。
【0007】
特許文献2のマルチプロセッサでは、プロセッサコアの各々がメモリ管理ユニットを搭載しているので、回路構成が複雑になり、コストの低減が図れない。
【0008】
共有の内部メモリにアクセスするためのバスとCPUが他の機能ユニットを制御するためのバスとが同一である上記従来のマルチプロセッサでは、CPUが他の機能ユニットを制御するためのアクセスが内部メモリのバスバンド幅を浪費してしまう。
【0009】
そこで、本発明は、外部メモリへの効率的なアクセスが可能なマルチプロセッサ及びその関連技術を提供することを目的とする。
【0010】
また、本発明の他の目的は、外部メモリへのアクセスに関する回路構成を簡略化して、コストの低減を図ることができるマルチプロセッサ及びその関連技術を提供することである。
【0011】
さらに、本発明の他の目的は、プロセッサコアに対する制御に起因する内部メモリのバスバンド幅の浪費を防止できるマルチプロセッサ及びその関連技術を提供することである。
【課題を解決するための手段】
【0012】
本発明の第1の観点によれば、マルチプロセッサは、外部バスへのアクセスが可能なマルチプロセッサであって、各々演算処理を実行する複数のプロセッサコアと、前記複数のプロセッサコアによって共有される内部メモリと、前記プロセッサコアの一部または全部からのダイレクトメモリアクセス転送要求を調停して、前記内部メモリと、前記外部バスに接続される外部メモリと、の間でダイレクトメモリアクセス転送を行うダイレクトメモリアクセスコントローラと、前記プロセッサコアの一部または全部および前記ダイレクトメモリアクセスコントローラからの前記外部バスの使用要求を調停して、いずれか1つの前記プロセッサコアまたは前記ダイレクトメモリアクセスコントローラに対して前記外部バスへのアクセスを許可する外部メモリインタフェースと、を備える。
【0013】
この構成では、プロセッサコアの一部または全部は、外部メモリインタフェースに直接外部バス使用要求を発行する機能と、ダイレクトメモリアクセスコントローラに対してダイレクトメモリアクセス転送要求を行う機能と、の両方を備える。従って、離散したアドレスにランダムにデータアクセスを行う場合などは直接外部メモリインタフェースに外部バス使用要求を発行し、データのブロック転送や仮想記憶管理機構が要求するページスワップなどを行う場合にはダイレクトメモリアクセスコントローラにダイレクトメモリアクセス転送要求を発行することで、外部メモリへの効率的なアクセスが可能となる。
【0014】
上記マルチプロセッサにおいて、前記ダイレクトアクセスメモリコントローラは、各々が、対応する前記プロセッサコアからの前記ダイレクトメモリアクセス転送要求を格納する複数のバッファと、複数の前記バッファが送出した複数の前記ダイレクトメモリアクセス転送要求を調停して、いずれか1つの前記ダイレクトメモリアクセス転送要求を出力する調停手段と、複数の前記ダイレクトメモリアクセス転送要求を保持でき、前記調停手段が出力した前記ダイレクトメモリアクセス転送要求を受け取った順に出力するキューと、前記キューが出力した前記ダイレクトメモリアクセス転送要求に応じたダイレクトメモリアクセス転送を実行するダイレクトメモリアクセス転送実行手段と、を含む。
【0015】
この構成では、複数のプロセッサコアからの複数のダイレクトメモリアクセス転送要求を保持する複数のバッファおよびキューを備えている。従って、ダイレクトメモリアクセス転送実行中であっても、ダイレクトメモリアクセス転送要求を受け付けることができる。特に、ダイレクトメモリアクセスチャンネルが1つしかない場合に有効である。
【0016】
上記マルチプロセッサにおいて、前記外部メモリインタフェースは、前記外部バスの使用要求を行うことができる前記プロセッサコアおよび前記ダイレクトメモリアクセスコントローラの優先順位を定めた優先順位テーブルに従って調停を行い、前記優先順位テーブルは複数用意され、互いに優先順位が異なっている。
【0017】
この構成によれば、優先順位が固定されないので、ある優先順位テーブルで優先順位が低く設定されているプロセッサコアであっても、他の優先順位テーブルで優先順位を高く設定することができ、当該プロセッサコアの外部バス使用要求が、システムに不都合を生じるほど長く待たされることを防止できる。ダイレクトメモリアクセスコントローラについても同様である。
【0018】
このマルチプロセッサにおいて、前記外部メモリインタフェースは、所定条件が成立したときに、前記優先順位テーブルを切り替えて調停を行う。
【0019】
この構成によれば、目的に応じた所定条件を設定することにより、目的に応じて優先順位テーブルを切り替えることができる。
【0020】
前記所定条件は、所定の前記プロセッサコアまたは前記ダイレクトメモリアクセスコントローラからの前記外部バスの使用要求が所定時間待たされたことである。
【0021】
この構成によれば、所定のプロセッサコアまたはダイレクトメモリアクセスコントローラからの外部バスの使用要求が、システムに不都合が生じるほど長く待たされることを防止できる。
【0022】
前記外部バスインタフェースは、少なくとも1つの前記プロセッサコアがアクセス可能な制御レジスタを含み、前記少なくとも1つのプロセッサコアにより前記制御レジスタに所定値が設定されたことを追加条件として、前記優先順位テーブルの切り替えを行うこともできる。
【0023】
この構成によれば、1つの優先順位テーブルに固定して調停を行うのか、あるいは、複数の優先順位テーブルを切り替えながら調停を行うのか、を動的に設定できる。
【0024】
本発明の第2の観点によると、マルチプロセッサは、外部バスへのアクセスが可能なマルチプロセッサであって、各々演算処理を実行する複数のプロセッサコアと、前記プロセッサコアの一部または全部からの前記外部バスの使用要求を調停して、いずれか1つの前記プロセッサコアに対して前記外部バスへのアクセスを許可する外部メモリインタフェースと、を備え、前記外部メモリインタフェースは、異なる複数のメモリインタフェースを含み、前記複数のメモリインタフェースのいずれか1つを選択し、選択した前記メモリインタフェースを通じて、前記外部バスに接続される外部メモリであって、選択した前記メモリインタフェースに対応するタイプの前記外部メモリへのアクセスを行う。
【0025】
この構成では、外部メモリにアクセスするための機構は外部メモリインタフェースが備えている。従って、異なるタイプのメモリインタフェースをサポートする場合でも、プロセッサコアの各々が、複数のメモリインタフェースを備える必要が無い。このため、回路構成の簡略化が可能になり、コストの低減を図ることができる。
【0026】
上記マルチプロセッサにおいて、前記外部バスのアドレス空間は、複数の領域に分割され、前記領域ごとに、前記外部メモリのタイプを設定可能であり、前記外部メモリインタフェースは、前記外部バスへのアクセスを許可された前記プロセッサコアが発行しているアドレスを含む前記領域に設定された前記外部メモリのタイプに対応する前記メモリインタフェースを選択し、選択した前記メモリインタフェースを通じて、当該外部メモリへのアクセスを行う。
【0027】
この構成によれば、外部バスのアドレス空間の領域ごとに、外部メモリのタイプを設定できるので、異なる複数のタイプの外部メモリを接続できる。
【0028】
このマルチプロセッサにおいて、前記外部メモリインタフェースは、前記複数の領域に対応する複数の第1の制御レジスタを含み、前記複数の第1の制御レジスタには、少なくとも1つの前記プロセッサコアがアクセス可能であり、前記少なくとも1つのプロセッサコアが前記第1の制御レジスタに値を設定することによって、その第1の制御レジスタに対応する前記領域に対して、前記外部メモリのタイプが設定される。
【0029】
この構成によれば、プロセッサコアによって、動的に、領域ごとに外部メモリのタイプを設定できる。
【0030】
上記マルチプロセッサにおいて、前記外部バスのアドレス空間は、複数の領域に分割され、前記領域ごとに、前記外部バスのデータバス幅を設定可能である。この構成によれば、データバス幅の異なる複数の外部メモリを接続できる。
【0031】
このマルチプロセッサにおいて、前記外部メモリインタフェースは、前記複数の領域に対応する複数の第2の制御レジスタを含み、前記複数の第2の制御レジスタには、少なくとも1つの前記プロセッサコアがアクセス可能であり、前記少なくとも1つのプロセッサコアが前記第2の制御レジスタに値を設定することによって、その第2の制御レジスタに対応する前記領域に対して、前記外部バスのデータバス幅が設定される。
【0032】
この構成によれば、プロセッサコアによって、動的に、領域ごとに外部バスのデータバス幅を設定できる。
【0033】
上記マルチプロセッサにおいて、前記外部バスのアドレス空間は、複数の領域に分割され、前記領域ごとに、前記外部メモリに対するアクセスタイミングを設定可能である。この構成によれば、アクセスタイミングの異なる複数の外部メモリを接続できる。
【0034】
このマルチプロセッサにおいて、前記外部メモリインタフェースは、前記複数の領域に対応する複数の第3の制御レジスタを含み、前記複数の第3の制御レジスタには、少なくとも1つの前記プロセッサコアがアクセス可能であり、前記少なくとも1つのプロセッサコアが前記第3の制御レジスタに値を設定することによって、その第3の制御レジスタに対応する前記領域に対して、前記外部メモリに対するアクセスタイミングが設定される。
【0035】
この構成によれば、プロセッサコアによって、動的に、領域ごとに外部メモリに対するアクセスタイミングを設定できる。
【0036】
上記マルチプロセッサにおいて、前記外部メモリインタフェースは、少なくとも1つの前記プロセッサコアがアクセス可能な第4の制御レジスタを含み、前記少なくとも1つのプロセッサコアが前記第4の制御レジスタに値を設定することによって、前記領域の境界が設定される。この構成によれば、プロセッサコアによって、領域の境界を動的に設定できる。
【0037】
本発明の第3の観点によると、マルチプロセッサは、各々演算処理を実行する複数のプロセッサコアと、前記複数のプロセッサコアによって共有される内部メモリと、前記プロセッサコア及び前記内部メモリ間のデータ転送を行う第1のデータ転送経路と、前記プロセッサコアが他の前記プロセッサコアを制御するためのデータ転送を行う第2のデータ転送経路と、を備える。
【0038】
この構成では、共有の内部メモリに対するアクセスの経路と、プロセッサコアの制御のための経路と、が分離されているので、プロセッサコアに対する制御に起因する内部メモリのバスバンド幅の浪費を防止できる。
【0039】
上記マルチプロセッサにおいて、前記第2のデータ転送経路を用いて、前記他のプロセッサコアを制御する前記プロセッサコアは、プログラム命令を解釈し実行する中央演算処理装置である。この構成によれば、ソフトウェアにより、動的に、各プロセッサコアの制御が可能になる。
【図面の簡単な説明】
【0040】
【図1】本発明の実施の形態によるマルチメディアプロセッサ1の内部構成を示すブロック図である。
【図2】外部バス51のアドレス空間の説明図である。
【図3】外部メモリインタフェース3による調停の際に参照されるEBI優先順位テーブルの例示図である。
【図4】外部メモリインタフェース3が備える制御レジスタの説明図である。
【図5】DMAC4のリクエストキュー45及びその周辺部を示すブロック図である。
【図6】DMAC4による調停の際に参照されるDMA優先順位テーブルの例示図である。
【図7】DMAC4が備える制御レジスタの説明図である。
【図8】NORインタフェースにおけるランダムアクセスのリードサイクルを示すタイミングチャートである。
【図9】ページモード付NORインタフェースにおけるページモードアクセスのリードサイクルを示すタイミングチャートである。
【図10】NORインタフェースにおけるランダムアクセスのライトサイクルを示すタイミングチャートである。
【図11】NANDインタフェースにおけるリードサイクルを示すタイミングチャートである。
【発明を実施するための形態】
【0041】
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、図中、同一または相当部分については同一の参照符号を付してその説明を援用する。また、本明細書及び図面において、信号のどのビットかを示す必要があるときは、信号名の後に、[a:b]あるいは[a]を付する。[a:b]は、その信号の第a番目のビットから第b番目のビットを意味し、[a]は、その信号の第a番目のビットを意味する。「0b」は2進数を、「0x」は16進数を意味する。
【0042】
図1は、本発明の実施の形態によるマルチメディアプロセッサ1の内部構成を示すブロック図である。図1に示すように、このマルチメディアプロセッサは、外部メモリインタフェース3、DMAC(direct memory access controller)4、中央演算処理装置(以下、「CPU」と呼ぶ。)5、CPUローカルRAM7、レンダリングプロセッシングユニット(以下、「RPU」と呼ぶ。)9、カラーパレットRAM11、サウンドプロセシングユニット(以下、「SPU」と呼ぶ。)13、SPUローカルRAM15、ジオメトリエンジン(以下、「GE」と呼ぶ。)17、Yソーティングユニット(以下、「YSU」と呼ぶ。)19、外部インタフェースブロック21、メインRAMアクセスアービタ23、メインRAM25、I/Oバス27、ビデオDAC(digital to analog converter)29、オーディオDACブロック31、及びA/Dコンバータ(以下、「ADC」と呼ぶ。)33を具備する。外部メモリインタフェース3は、メモリインタフェース(MIF)40,41及び42を含む。CPU5は、IPL(initial program loader)35を含む。
【0043】
ここで、CPU5、RPU9、SPU9、GE17、及びYSU19をそれぞれプロセッサコアと呼ぶこともある。また、メインRAM25及び外部メモリ50を区別して説明する必要がないときは、「メモリMEM」と表記する。
【0044】
本発明の特徴の1つである外部メモリインタフェース3は、外部バス51を介して、外部メモリ50からのデータの読み出し、及び外部メモリ50へのデータの書き込みを司る。メモリインタフェース40は、スタンダード非同期インタフェース(以下、「NORインタフェース」と呼ぶ。)であり、メモリインタフェース41は、ページモード付スタンダード非同期インタフェース(以下、「ページモード付NORインタフェース」と呼ぶ。)であり、メモリインタフェース42は、NANDフラッシュEEPROM互換インタフェース(以下、「NANDインタフェース」と呼ぶ。)である。外部メモリインタフェース3については、後で詳述する。
【0045】
本発明の特徴の1つであるDMAC4は、メインRAM25と、外部バス51に接続された外部メモリ50と、の間でDMA転送を行う。DMAC4については、後で詳述する。
【0046】
CPU5は、メモリMEMに格納されたプログラムを実行して、各種演算やシステム全体の制御を行う。また、CPU5は、DMAC4にプログラム及びデータの転送要求を行うこともできるし、DMAC4を介さずに、外部メモリ50から直接プログラムコードをフェッチしたり、外部メモリ50に直接データアクセスを行うこともできる。IPL35は、電源が投入された時またはリセットされた時に一番最初に起動するプログラムを外部メモリ50からロードする。
【0047】
本発明の特徴の1つであるI/Oバス27は、CPU5をバスマスタとするシステム制御用のバスであり、バススレイブである各機能ユニット(外部メモリインタフェース3、RPU9、SPU13、GE17、YSU19、及び外部インタフェースブロック21)の制御レジスタ及びローカルRAM7,11,15へのアクセスに用いられる。このようにして、これらの機能ユニットは、I/Oバス27を通じて、CPU5により制御される。
【0048】
CPUローカルRAM7は、CPU5専用のRAMであり、サブルーチンコールや割り込み時におけるデータの退避などを行うためのスタック領域、及びCPU5のみが扱う変数の格納領域等として使用される。
【0049】
RPU9は、ポリゴン及びスプライトから構成される三次元イメージをリアルタイムに生成する。具体的には、RPU9は、YSU19によるソート済みの、ポリゴン構造体配列の各構造体インスタンス及びスプライト構造体配列の各構造体インスタンスを、メインRAM25から読み出し、所定の処理を実行して、スクリーン(表示画面)のスキャンに合わせて水平ラインごとにイメージを生成する。生成されたイメージは、コンポジットビデオ信号波形を示すデータストリームに変換され、ビデオDAC29に出力される。また、RPU9は、DMAC4に対して、ポリゴン及びスプライトのテクスチャパターンデータの取り込みのためのDMA転送要求を行う機能を有する。
【0050】
テクスチャパターンデータとは、ポリゴンまたはスプライトに貼り付けられる2次元の画素配列データであり、各画素データは、カラーパレットRAM11のエントリを指定するための情報の一部である。以降、テクスチャパターンデータの画素を「テクセル」と呼称し、スクリーンに表示されるイメージを構成する画素を指す「ピクセル」とは区別して使用する。
【0051】
ポリゴン構造体配列は、多角形状のグラフィック要素であるポリゴンのための構造体配列であり、スプライト構造体配列は、スクリーンに平行な矩形のグラフィック要素であるスプライトのための構造体配列である。ポリゴン構造体配列の要素を、「ポリゴン構造体インスタンス」と呼び、スプライト構造体配列の要素を、「スプライト構造体インスタンス」と呼ぶ。ただし、両者を区別して説明する必要がないときは、単に「構造体インスタンス」と呼ぶこともある。
【0052】
ポリゴン構造体配列に格納された各ポリゴン構造体インスタンスは、ポリゴンごとの表示情報(テクスチャマッピングモードでのテクスチャパターンデータ格納アドレス及びグーローシェーディングモードでのカラーデータ(RGBのカラーコンポーネント)を含む。)であり、1つのポリゴン構造体インスタンスに1つのポリゴンが対応している。スプライト構造体配列に格納された各スプライト構造体インスタンスは、スプライトごとの表示情報(テクスチャパターンデータ格納アドレスを含む。)であり、1つのスプライト構造体インスタンスに1つのスプライトが対応している。
【0053】
ビデオDAC29は、アナログのビデオ信号を生成するためのデジタル/アナログ変換器である。ビデオDAC29は、RPU9から入力されたデータストリームをアナログのコンポジットビデオ信号に変換し、ビデオ信号出力端子(図示せず)からテレビジョンモニタ等(図示せず)に出力する。
【0054】
カラーパレットRAM11は、本実施の形態では512色すなわち512エントリのカラーパレットからなる。RPU9は、テクスチャパターンデータに含まれるテクセルデータをカラーパレットのエントリを指定するインデックスの一部として、カラーパレットRAM11を参照し、テクスチャパターンデータを、カラーデータ(RGBのカラーコンポーネント)に変換する。
【0055】
SPU13は、PCM(pulse code modulation)波形データ(以下、「ウェーブデータ」と呼ぶ。)、アンプリチュードデータ、及びメインボリュームデータを生成する。具体的には、SPU13は、最大64チャンネル分のウェーブデータを時分割多重するとともに、最大64チャンネル分のエンベロープデータを時分割多重してチャンネルボリュームデータと乗算し、アンプリチュードデータを生成する。そして、SPU13は、メインボリュームデータ、時分割多重されたウェーブデータ、及び時分割多重されたアンプリチュードデータを、オーディオDACブロック31に出力する。また、SPU13は、DMAC4に対して、ウェーブデータ及びエンベロープデータの取り込みのためのDMA転送要求を行う機能を有する。
【0056】
オーディオDACブロック31は、SPU13から入力されたウェーブデータ、アンプリチュードデータ、及びメインボリュームデータをそれぞれアナログ信号に変換し、結果をアナログ乗算して、アナログオーディオ信号を生成する。このアナログオーディオ信号は、オーディオ信号出力端子(図示せず)からテレビジョンモニタ等(図示せず)のオーディオ入力端子(図示せず)に出力される。
【0057】
SPUローカルRAM15は、SPU13がウェーブ再生及びエンベロープ生成を行う際に用いるパラメータ(例えば、ウェーブデータやエンベロープデータの格納アドレスやピッチ情報など)を格納する。
【0058】
GE17は、三次元イメージを表示するための幾何演算を実行する。具体的には、GE17は、行列積、ベクトルアフィン変換、ベクトル直交変換、透視投影変換、頂点明度/ポリゴン明度計算(ベクトル内積)、及びポリゴン裏面カリング処理(ベクトル外積)などの演算を実行する。
【0059】
YSU19は、メインRAM25に格納されているポリゴン構造体配列の各構造体インスタンス及びスプライト構造体配列の各構造体インスタンスを、ソートルール1〜4に従ってソートする。この場合、ポリゴン構造体配列とスプライト構造体配列とで、別個にソートが行われる。
【0060】
ソートルール1は、最小Y座標が小さい順に、各ポリゴン構造体インスタンスを並べ替えることである。最小Y座標とは、ポリゴンの3頂点のY座標のうち、最も小さいY座標のことである。Y座標はスクリーンの垂直座標であり、下向きが正方向である。ソートルール2は、最小Y座標が同じである複数のポリゴンについては、デプス値が大きい順に、各ポリゴン構造体インスタンスを並べることである。
【0061】
ただし、YSU19は、スクリーンの先頭ラインに表示されるピクセルを持つ複数のポリゴンについては、最小Y座標が異なっている場合でも、それらが同一であるとみなして、ソートルール1ではなく、ソートルール2に従って、各ポリゴン構造体インスタンスの並べ替えを行う。つまり、スクリーンの先頭ラインに表示されるピクセルを持つポリゴンが複数存在する場合は、最小Y座標が同一であるとみなして、デプス値が大きい順に並べ替えられる。これがソートルール3である。
【0062】
インタレーススキャンの場合でも、ソートルール1〜3が適用される。ただし、奇数フィールドを表示するためのソートでは、奇数ラインに表示されるポリゴンの最小Y座標及び/又はその奇数ラインの1つ前の偶数ラインに表示されるポリゴンの最小Y座標が同一であるとみなして、ソートルール2によるソートを行う。ただし、先頭の奇数ラインは除く。なぜなら、その1つ前の偶数ラインが存在しないからである。一方、偶数フィールドを表示するためのソートでは、偶数ラインに表示されるポリゴンの最小Y座標及び/又はその偶数ラインの1つ前の奇数ラインに表示されるポリゴンの最小Y座標が同一であるとみなして、ソートルール2によるソートを行う。これがソートルール4である。
【0063】
スプライトに関するソートルール1〜4は、それぞれポリゴンに関するソートルール1〜4と同様である。
【0064】
外部インタフェースブロック21は、周辺装置54とのインタフェースであり、24チャンネルのプログラマブルなデジタル入出力(I/O)ポートを含む。24チャンネルのI/Oポートの各々は、4チャンネル分のマウスインタフェース機能、4チャンネル分のライトガンインタフェース機能、2チャンネル分の汎用タイマ/カウンタ、1チャンネル分の調歩同期式シリアルインタフェース機能、1チャンネル分の汎用パラレル/シリアル変換ポート機能のうち1または複数に内部接続されている。
【0065】
ADC33は、4チャンネルのアナログ入力ポートに接続され、これらを介して、アナログ入力装置52から入力されたアナログ信号をデジタル信号に変換する。例えば、マイク音声等のアナログ入力信号をサンプリングしてデジタルデータに変換する。
【0066】
本発明の特徴の1つであるメインRAMアクセスアービタ23は、機能ユニット(CPU5、RPU9、GE17、YSU19、DMAC4、及び外部インタフェースブロック21(調歩同期式シリアルポートあるいは汎用パラレル/シリアル変換ポート))からのメインRAM25へのアクセスを調停して、いずれかの機能ユニットにアクセス許可を出す。
【0067】
メインRAM25は、CPU5のワーク領域、変数格納領域、および仮想記憶管理領域等として利用される。また、メインRAM25は、CPU5が他の機能ユニットに受け渡すデータの格納領域、RPU9及びSPU13が外部メモリ50からDMAによって取得したデータの格納領域、GE17及びYSU19の入力データ及び出力データの格納領域等としても使用される。
【0068】
外部バス51は、外部メモリ50にアクセスするためのバスである。IPL35、CPU5、およびDMAC4から、外部メモリインタフェース3を介してアクセスされる。外部バス51のアドレスバスは、30ビットから成り、最大で1Gバイト(=8Gビット)の外部メモリ50を接続することができる。外部バス51のデータバスは、16ビットから成り、8ビット又は16ビットのデータバス幅を持つ外部メモリ50を接続できる。異なるデータバス幅を持つ外部メモリを同時に接続可能であり、アクセスする外部メモリによってデータバス幅を自動的に切り替える機能が備えられる。
【0069】
図2は、外部バス51のアドレス空間の説明図である。図2に示すように、外部バス51のアドレス空間は、2種類の異なる外部メモリを接続できるように、2つの領域に分割されており、それぞれ、プライマリメモリ領域及びセカンダリメモリ領域と呼ぶ。この領域ごとに、メモリインタフェース40〜42のいずれか1つが設定される。もちろん、2つの領域に同じメモリインタフェースを設定することもできるし、異なるメモリインタフェースを設定することもできる。以下、外部メモリインタフェース3について詳細に説明していく。
【0070】
図1に戻って、メモリインタフェース40、つまり、NORインタフェースとは、アドレス及びデータの各ビットがパラレルに外部メモリインタフェース3及び外部メモリ50間で接続され、信号間の同期のためのクロック信号を持たないメモリインタフェースのことである。スタンダードなマスクROM、スタンダードなSRAM、及びNORフラッシュEEPROMなどが、NORインタフェースを備えている。従って、外部メモリ50として、これらのメモリを使用できる。
【0071】
メモリインタフェース41、つまり、ページモード付NORインタフェースとは、ページモードをサポートしているNORインタフェースのことである。従って、NORインタフェースを備え、ページモードをサポートしているメモリを、外部メモリ50として使用できる。一般に、ページモードとは、メモリに設定されているページ内でアクセスが連続した場合に、ページ内の2回目以降のアクセスタイムを短縮できるアクセスモードのことである。ページのサイズは、メモリの品種によって異なる。
【0072】
メモリインタフェース42、つまり、NANDインタフェースとは、NANDフラッシュEEPROMのインタフェースと互換性を持つメモリインタフェースである。但し、マルチプロセッサ1のNANDインタフェースは、エラー訂正のためのハードウェアを備えていないため、NANDフラッシュEEPROMをそのまま接続することはできず、NANDフラッシュEEPROM互換マスクROM等との接続が可能である。従って、外部メモリ50として、それらのメモリを使用できる。
【0073】
外部メモリインタフェース3は、後述のEBI優先順位テーブルに従って、IPL35、CPU5、及びDMAC4からの外部バスアクセス要求要因(外部バス51へのアクセスを要求する要因)を調停して、いずれか1つの外部バスアクセス要求要因を選択する。そして、選択した外部バスアクセス要求要因に対して外部バス51へのアクセスを許可する。これらの詳細を説明する。
【0074】
図3は、外部メモリインタフェース3による調停の際に参照されるEBI優先順位テーブルの例示図である。図3(a)を参照して、外部バスアクセス要求要因として、IPL35によるブロック転送要求、CPU5によるデータアクセス要求、DMAC4によるDMA要求、及びCPU5による命令フェッチ要求がある。優先順位は、1番が最も高く、番号が大きくなるに従って低くなる。
【0075】
外部メモリインタフェース3は、図3(a)のEBI優先順位テーブルに従って、外部バスアクセス要求要因を調停する。ただし、CPU5による命令フェッチ要求が10マイクロ秒以上待たされ、かつ、後述の調停優先順位制御レジスタの設定が「優先順位変更イネーブル」となっている場合、図3(b)に示すEBI優先順位テーブルが用いられる。この状態でCPU5による命令フェッチが行われると、再び図3(a)に示すEBI優先順位テーブルが使用される。
【0076】
図2に戻って、外部バスアクセス要求要因のうち、DMAC4によるDMA要求およびCPU5によるデータアクセス要求では、外部バス51のアドレス空間の全領域に対してアクセスが可能である。これに対し、CPU5による命令フェッチ要求およびIPL35によるブロック転送要求では、アクセス可能な領域が制限される。
【0077】
CPU5による命令フェッチ要求では、0x00000000〜0x00FFFFFFの範囲が、アクセス可能な外部バスアドレスである。IPL35は、マルチメディアプロセッサ1の起動時に外部バスアドレス0x00000000〜0x000000FFに格納されているデータ(起動プログラム)をメインRAM25のアドレス0x0000〜0x00FFに転送し、CPU5のプログラム実行をメインRAM25の0x0000番地から開始させる。従って、IPL35によるブロック転送要求では、0x00000000〜0x000000FFの範囲以外の外部バスアドレスにはアクセスが行われない。
【0078】
図4は、外部メモリインタフェース3が備える制御レジスタの説明図である。図4に示すように、各制御レジスタは、図中対応するI/Oバスアドレスに配置され、CPU5がI/Oバス27を介してリード及びライトすることができる。
【0079】
セカンダリメモリ開始アドレスレジスタは、セカンダリメモリ領域の開始アドレス、つまり、プライマリメモリ領域とセカンダリメモリ領域との境界を設定するための制御レジスタである。但し、外部バスアドレスの上位10ビットのみが設定可能であり、下位20ビットは全て「0」に固定される。従って、セカンダリメモリ領域の開始アドレスは、0x00000000,0x00100000,0x00200000,…のように、1Mバイト(=8Mビット)単位で設定可能である。
【0080】
プライマリメモリタイプレジスタは、プライマリメモリ領域に設定するメモリインタフェース(外部メモリ)のタイプ(メモリインタフェース40,41あるいは42)、ページサイズ(4,8,16,32,64,128,256あるいは512バイト)、データバス幅(8あるいは16ビット)、およびNANDインタフェースのアドレスサイズ(3あるいは4バイト)を設定するための制御レジスタである。
【0081】
プライマリメモリアクセスタイミングレジスタは、プライマリメモリ領域へのアクセスタイミングを設定するための制御レジスタである。
【0082】
つまり、この制御レジスタには、アクセスサイクル時間Tac、ページアクセスサイクル時間Tapc(メモリインタフェース41が設定されているとき有効)、コマンドラッチイネーブル信号CLE及びアドレスラッチイネーブル信号ALEのライトイネーブル信号/WEに対するホールド時間Tcah(メモリインタフェース42が設定されているとき有効)、メモリセレクト信号/CS0Bのアクセスサイクル開始からの遅延時間Tcd、リードイネーブル信号/REBのアクセスサイクル開始からの遅延時間Trd、リードイネーブル信号/REBのパルス幅Trpw、ライトイネーブル信号/WEBのアクセスサイクル開始からの遅延時間Twd、ライトイネーブル信号/WEBのパルス幅Twpw、ライトイネーブル信号/WEBの立ち上がりに対するライトデータのホールド時間Tdh(メモリインタフェース42以外のメモリインタフェース40あるいは41が設定されているとき有効)、ライトイネーブル信号/WEBの立ち上がりに対するライトデータのホールド時間Tfdh(メモリインタフェース42が設定されているとき有効)、並びにライトイネーブル信号/WEBの立ち下がりに対するライトデータのセットアップ時間Tdsが設定される。これらについては、後述の図8〜図11の説明で明らかになる。
【0083】
セカンダリメモリタイプレジスタは、セカンダリメモリ領域に設定するメモリインタフェース(外部メモリ)のタイプ(メモリインタフェース40,41あるいは42)、ページサイズ(4,8,16,32,64,128,256あるいは512バイト)、データバス幅(8あるいは16ビット)、およびNANDインタフェースのアドレスサイズ(3あるいは4バイト)を設定するための制御レジスタである。
【0084】
セカンダリメモリアクセスタイミングレジスタは、セカンダリメモリ領域へのアクセスタイミングを設定するための制御レジスタである。具体的な設定内容は、プライマリメモリアクセスタイミングレジスタと同様である。ただし、遅延時間Tcdは、メモリセレクト信号/CS1Bのアクセスサイクル開始からの遅延時間である。
【0085】
調停優先順位制御レジスタは、外部バスアクセス要求要因間の調停における優先順位を制御するための制御レジスタである。このレジスタに「1」が設定されて「優先順位変更イネーブル」となっている場合に、CPU5による命令フェッチ要求が10マイクロ秒以上待たされると、図3(b)に示すEBI優先順位テーブルが用いられ、CPU5による命令フェッチ要求の優先順位が引き上げられる。この状態でCPU5による命令フェッチが行われると、再び図3(a)に示すEBI優先順位テーブルが使用される。なお、このレジスタに「0」が設定されると「優先順位変更ディセーブル」となり、上記の優先順位の変更は行われない。
【0086】
外部メモリインタフェース3は、調停の結果、外部バス51へのアクセスを許可した機能ユニット(IPL35、CPU5、あるいはDMAC4)が発行している外部バスアドレスを含む領域(プライマリメモリ領域あるいはセカンダリメモリ領域)に設定されたメモリインタフェース40,41あるいは42を選択し、選択したメモリインタフェースを通じて、外部メモリ50へのアクセスを行う。
【0087】
この場合、選択されたメモリインタフェースは、外部バス51へのアクセスを許可された機能ユニットが出力しているリード/ライト情報、データ転送バイト数情報、及び/又はライトデータに基づいて、リード/ライト制御を行う。
【0088】
図5は、DMAC4のリクエストキュー45及びその周辺部を示すブロック図である。図5に示すように、DMAC4は、CPU5からのDMA要求を保持するリクエストバッファ105、RPU9からのDMA要求を保持するリクエストバッファ109、SPU13からのDMA要求を保持するリクエストバッファ113、DMAリクエストアービタ44、リクエストキュー45、及びDMA実行ユニット46を含む。
【0089】
リクエストバッファ105,109及び113のうち、2以上のリクエストバッファにDMA転送要求がエントリされている場合、DMAリクエストアービタ44は、後述のDMA優先順位テーブルに従って、DMA転送要求をリクエストキュー45の最後尾に送出する。4つのエントリを有するリクエストキュー45は、FIFO構造になっており、最初に受け付けたDMA転送要求から順次DMA実行ユニット46に送出する。DMA実行ユニット46は、外部バス51へのアクセス要求(外部バスアクセス要求要因としてのDMA要求)を発行し、外部バス51へのアクセスが許可された場合は、リクエストキュー45から受け取ったDMA転送要求に従ったDMA転送を実行する。
【0090】
DMAC4が備えるDMAチャンネルは一つのみであるため、DMA転送を同時実行することはできないが、CPU5、RPU9、及びSPU13からのDMA転送要求を保持するリクエストバッファ105,109及び113と、4エントリのリクエストキュー45と、を備えているため、DMA転送中でもDMA転送要求を受け付けることができる。
【0091】
図6は、DMAC4による調停の際に参照されるDMA優先順位テーブルの例示図である。図6を参照して、上記のように、このDMA優先順位テーブルは、リクエストバッファ105,109及び113のうち、2以上のリクエストバッファにDMA転送要求がエントリされている状態において、DMAリクエストアービタ44が、どのDMA転送要求を優先してリクエストキュー45に送出するのかを示す。
【0092】
優先順位は、1番が最も高く、番号が大きくなるに従って低くなる。従って、優先順位が高いほうから、SPU13によるDMA転送要求、RPU9によるDMA転送要求、及び、CPU5によるDMA転送要求、となる。本実施の形態では、優先順位はハードウェアで固定されており、変更することはできない。
【0093】
SPU13、RPU9、及びCPU5からのDMA要求要因(DMA転送を要求する要因)について順に説明していく。
【0094】
図6を参照して、SPU13のDMA要求要因として、(1)ウェーブデータをウェーブバッファに転送すること、(2)エンベロープデータをエンベロープバッファに転送すること、がある。ウェーブバッファ及びエンベロープバッファは、それぞれメインRAM25上に設定されるウェーブデータ及びエンベロープデータのテンポラリ格納領域である。このテンポラリ格納領域の先頭アドレスは、SPU13内の制御レジスタ(図示せず)で定められ、このテンポラリ格納領域の大きさは、再生チャンネル数の設定により定められる。なお、SPU13の2つのDMA要求要因間の調停は、SPU13内のハードウェア(図示せず)で行われ、DMAC4は関知しない。
【0095】
RPU9のDMA要求要因として、テクスチャパターンデータをテクスチャバッファに転送すること、がある。テクスチャバッファは、メインRAM25上に設定されるテクスチャパターンデータのテンポラリ格納領域である。このテンポラリ格納領域の先頭アドレス及びサイズは、RPU9内の制御レジスタ(図示せず)で定められる。
【0096】
CPU5のDMA要求要因として、(1)仮想記憶管理においてページミスが発生した場合のページ転送、(2)アプリケーションプログラム等が要求するデータ転送、がある。なお、CPU5内で複数のDMA転送要求が同時に発生した場合は、その調停はCPU5で実行されるソフトウェアにて行われ、DMAC4は関知しない。
【0097】
CPU5による上記(1)のDMA要求要因についてもう少し詳しく説明する。CPU5のDMA転送要求は、ソフトウェアの実行に応じて行われる。マルチメディアプロセッサ1の一般的なソフトウェア構造では、仮想記憶管理は、OS(オペレーティングシステム)によって行われる。仮想記憶管理においてページミスが発生し、ページスワップの必要が発生すると、OSは、DMAC4にDMA転送要求を発行する。
【0098】
CPU5による上記(2)のDMA要求要因についてもう少し詳しく説明する。OS等のシステムソフトウェアやアプリケーションソフトウェアの実行中、外部メモリ50とメインRAM25との間で、まとまったデータ転送の必要が生じた場合、DMA要求が発行される。
【0099】
DMAC4は、LZ77アルゴリズムに基づくデータ伸張機能を備えており、CPU5によるMDA転送要求に対して、外部メモリ50に格納された圧縮データを伸張しながらDMA転送することが可能である。
【0100】
図7は、DMAC4が備える制御レジスタの説明図である。図7に示すように、各制御レジスタは、図中対応するI/Oバスアドレスに配置され、CPU5がI/Oバス27を介してリード及びライトすることができる。つまり、これらの制御レジスタは、CPU5によるDMA転送要求の際に設定される。
【0101】
DMA転送元アドレスレジスタには、DMA転送における転送元アドレスが外部バス51の物理アドレスで設定される。DMA転送先アドレスレジスタには、DMA転送における転送先アドレスがメインRAM25の物理アドレスで設定される。DMA転送バイト数レジスタには、DMA転送における転送バイト数が設定される。データ伸張DMAにおいては、伸張後のバイト数でカウントする。
【0102】
DMA制御レジスタは、DMAC4の各種制御を行うレジスタであり、DMA転送イネーブルビット、DMA開始ビット、及び割り込みイネーブルビットを含む。DMA転送イネーブルビットは、CPU5から要求されるDMA転送のイネーブル/ディセーブルを制御するビットである。DMA開始ビットに「1」が設定されると、CPU5に対応するリクエストバッファ105に書き込まれているDMA転送要求(転送元アドレス、転送先アドレス、及び転送バイト数)が、リクエストキュー45に送出される。割り込みイネーブルビットは、CPU5から要求されたDMA転送が終了した際に、CPU5に対して割り込み要求を行うか否かを制御するビットである。
【0103】
DMAデータ伸張制御レジスタは、データ伸張イネーブルビットを含む。このビットは、CPU5から要求されるDMA転送におけるデータ伸張のイネーブル/ディセーブルを制御するビットである。DMAステータスレジスタは、DMAC4の各種ステータスを表すレジスタであり、リクエストキュービジービット、DMA完了ビット、DMA実行中ビット、及びDMA未完了フィールドを含む。
【0104】
リクエストキュービジービットは、リクエストキュー45の状態(ビジー/レディ)を示す。リクエストキュー45の状態が「ビジー」だと、新たなDMA転送要求はリクエストキュー45にエントリされない。DMA完了ビットには、CPU5から要求されたDMA転送が完了する度に「1」がセットされる。割り込みイネーブルビットをイネーブルに設定している場合、DMA完了ビットに「1」がセットされるのと同時に、CPU5に対する割り込み要求が発生する。DMA実行中ビットは、DMA転送が実行中か否かを示すビットである。DMA未完了フィールドは、CPU5から要求された未完了のDMA転送の数を示すフィールドである。
【0105】
DMAデータ伸張IDレジスタは、データ伸張DMAにおけるIDコードを格納する。DMAデータ伸張制御レジスタが、イネーブルに設定されている場合、256バイトのブロックの先頭2バイトがDMAデータ伸張IDレジスタに設定されているIDコードと一致していると、DMAC4はそのブロックを圧縮ブロックとみなしてデータ伸張を行う。
【0106】
さて、次に、図8から図11のタイミングチャートを参照しながら、外部メモリ50に対するアクセスを説明する。なお、図8から図11の説明において、期間1Tは、マルチメディアプロセッサ1のシステムクロックの1周期を表し、約10.2ナノ秒に相当する。
【0107】
図8は、NORインタフェースにおけるランダムアクセスのリードサイクルを示すタイミングチャートである。図8の例では、Tac=9T、Tcd=1T、Trd=2T、Trpw=7Tである。期間Tac,Tcd,Trd及びTrpwの意味は、図4で説明した通りである。また、設定された外部バス51のデータバス幅を16ビットとしている。
【0108】
これらの期間は、次の条件を全て満たす必要がある。
【0109】
Tac≧Trd+Trpw
Tac≧2T
Tac>Tcd
Trpw>0T
【0110】
これらの条件が満たされない場合、外部メモリインタフェース3のプライマリメモリアクセスタイミングレジスタ及びセカンダリメモリアクセスタイミングレジスタへの書き込みは無視される。
【0111】
図8を参照して、メモリインタフェース40は、アクセスサイクル期間Tacの開始サイクルCY0において、外部バスアドレスEA[29:0]の外部バス51への送出を開始する。外部バスアドレスEAの送出は、アクセスサイクル期間Tac中行われる。そして、メモリインタフェース40は、開始サイクルCY0のシステムクロックの立ち上がりから期間Tcd後に、メモリセレクト信号/CSB0又は/CSB1をアサートする。さらに、メモリインタフェース40は、開始サイクルCY0のシステムクロックの立ち上がりから期間Trd後に、リードイネーブル信号/REBをアサートする。そして、メモリインタフェース40は、アクセスサイクルTacの最終サイクルのシステムクロックの立ち上がりで、外部メモリ50から外部バス51に読み出されたデータED[15:0]を取り込む。なお、リードアクセスであるため、ライトイネーブル信号/WEBは、ネゲートが維持される。
【0112】
図9は、ページモード付NORインタフェースにおけるページモードアクセスのリードサイクルを示すタイミングチャートである。図9の例では、Tac=5T、Tapc=3T、Tcd=1T、Trd=2T、Trpw=3Tである。期間Tac,Tapc,Tcd,Trd及びTrpwの意味は、図4で説明した通りである。ただし、図9では、期間Tacは、ランダムアクセスのサイクル時間である。また、設定された外部バス51のデータバス幅を16ビットとしている。
【0113】
これらの期間は、次の条件を全て満たす必要がある。
【0114】
Tac≧Trd+Trpw
Tac≧2T
Tapc>0T
Tac>Tcd
Trpw>0T
【0115】
これらの条件が満たされない場合、外部メモリインタフェース3のプライマリメモリアクセスタイミングレジスタ及びセカンダリメモリアクセスタイミングレジスタへの書き込みは無視される。
【0116】
図9を参照して、期間Tacによって長さが規定される最初のリードサイクルCYRはランダムアクセスのサイクルであり、期間Tapcによって長さが規定される続く3つのリードサイクルCYP1〜CYP3は、ページモードアクセスのサイクルである。
【0117】
メモリインタフェース41は、アクセスサイクル期間Tacの開始サイクルCY0において、外部バスアドレスEA[29:0]の外部バス51への送出を開始する。外部バスアドレスEAの送出は、アクセスサイクル期間Tac中行われる。そして、メモリインタフェース41は、開始サイクルCY0のシステムクロックの立ち上がりから期間Tcd後に、メモリセレクト信号/CSB0又は/CSB1をアサートする。さらに、メモリインタフェース41は、開始サイクルCY0のシステムクロックの立ち上がりから期間Trd後に、リードイネーブル信号/REBをアサートする。そして、メモリインタフェース41は、最初のリードサイクルCYRの最終サイクルでのシステムクロックの立ち上がりで、外部メモリ50から外部バス51に読み出されたデータED[15:0]を取り込む。
【0118】
次のリードサイクルCYP1において、メモリインタフェース41は、次の外部バスアドレスEAを外部メモリ50へ送出する。そして、メモリインタフェース41は、リードサイクルCYP1の最終サイクルでのシステムクロックの立ち上がりで、外部メモリ50から外部バス51に読み出された新たなデータEDを取り込む。このような動作が、引き続き後のリードサイクルCYP2及びCYP3でも行われる。
【0119】
このように、ページモードアクセスでは、最初のリードサイクルCYRにおいてのみ、メモリセレクト信号/CSB0,/CSB1及びリードイネーブル信号/REBの制御が必要なだけで、続くリードサイクルCYP1〜CYP3では、それらの制御が不要となり、高速なアクセスが可能となる。なお、リードアクセスであるため、ライトイネーブル信号/WEBは、ネゲートが維持される。
【0120】
図10は、NORインタフェースにおけるランダムアクセスのライトサイクルを示すタイミングチャートである。図10の例では、Tac=9T、Tcd=1T、Twd=2T、Twpw=6T、Tds=1T、Tdh=1Tである。期間Tac,Tcd,Twd,Twpw,Tds及びTdhの意味は、図4で説明した通りである。また、設定された外部バス51のデータバス幅を16ビットとしている。
【0121】
これらの期間は、次の条件を全て満たす必要がある。
【0122】
Tac≧Twd+Twpw
Tac≧2T
Tac>Tcd
Twpw>0T
Twd≧Tds
【0123】
これらの条件が満たされない場合、外部メモリインタフェース3のプライマリメモリアクセスタイミングレジスタ及びセカンダリメモリアクセスタイミングレジスタへの書き込みは無視される。
【0124】
図10を参照して、メモリインタフェース40は、アクセスサイクル期間Tacの開始サイクルCY0において、外部バスアドレスEA[29:0]の外部メモリ50への送出を開始する。外部バスアドレスEAの送出は、アクセスサイクル期間Tac中行われる。そして、メモリインタフェース40は、開始サイクルCY0のシステムクロックの立ち上がりから期間Tcd後に、メモリセレクト信号/CSB0又は/SCB1をアサートする。さらに、メモリインタフェース40は、開始サイクルCY0のシステムクロックの立ち上がりから期間Twd後に、ライトイネーブル信号/WEBをアサートする。
【0125】
メモリインタフェース40は、ライトイネーブル信号/WEBがアサートされる前に、つまり、時間Tdsだけ早く、ライトデータED[15:0]の外部バス51への送出を開始する。また、メモリインタフェース40は、ライトイネーブル信号/WEBがネゲートされた後、時間Tdhだけ、ライトデータEDの外部バス51への送出を継続する。なお、ライトアクセスであるため、リードイネーブル信号/REBは、ネゲートが維持される。
【0126】
なお、アクセスの対象となる領域(図2参照)がページモードに設定されている場合でも、ライトサイクルではページモードアクセスは適用されず、全てランダムアクセスになる。
【0127】
図11は、NANDインタフェースにおけるリードサイクルを示すタイミングチャートである。図11の例では、Tcd=1T、Tcah=2T、Twd=2T、Twpw=3T、Tds=1T、Tfdh=2T、Trd=2T、Trpw=4Tである。これらの期間の設定は、図4で説明した通りである。また、設定された外部バス51のデータバス幅を16ビットとしている。
【0128】
図11を参照して、NANDインタフェースの外部メモリ50にアクセスする場合、メモリインタフェース42は、先ずリードコマンドを外部メモリ50に発行する。この際、メモリインタフェース42は、コマンドラッチイネーブル信号CLEをアサートする。メモリインタフェース42が発行するコマンドの種類は「0x00」と「0x01」の二種類のリードコマンドである。リードコマンドが二種類用意されているのは、コマンドのLSBがリード開始アドレスの第8ビットA8を示しているからである。
【0129】
続いて、メモリインタフェース42は、リード開始アドレスを外部メモリ50に発行する。この際、メモリインタフェース42は、アドレスラッチイネーブル信号ALEをアサートする。リード開始アドレスは、8ビットずつ3回に分けて発行される。但し、接続されている外部メモリ50の容量が32Mバイトを超える場合、8ビットずつ4回に分けて入力するモードに設定されなければならない。この設定は、外部メモリインタフェース3のプライマリメモリタイプレジスタあるいはセカンダリメモリタイプレジスタで行われる。
【0130】
これらのコマンドの発行及びリード開始アドレスの発行の際には、ライトイネーブル信号/WEBがアサートされる。
【0131】
ここで、期間Twdは、コマンドまたはリード開始アドレス発行の先頭サイクルからライトイネーブル信号/WEBがアサートされるまでの遅延時間を示す。また、期間Twpwは、ライトイネーブル信号/WEBがアサートされる期間の長さを示す。期間Tcahは、コマンドラッチイネーブル信号CLE及びアドレスラッチイネーブル信号ALEのライトイネーブル信号/WEに対するホールド時間、期間Tcdは、メモリセレクト信号/CS0Bあるいは/CS1Bのアクセスサイクル開始からの遅延時間、期間Tfdhは、ライトイネーブル信号/WEBの立ち上がりに対するリードコマンドのホールド時間、期間Tdsは、ライトイネーブル信号/WEBの立ち下がりに対するリードコマンドのセットアップ時間である。
【0132】
リード開始アドレスが入力されると、外部メモリ50はビジー状態に入る。ビジー状態になると、外部メモリ50は、レディ/ビジー信号RDY_BSYBを、Lowレベル(ビジー)にする。メモリインタフェース42は、レディ/ビジー信号RDY_BSYBのLowレベル(ビジー)からHighレベル(レディ)への遷移を検出すると、データのリードを開始する。
【0133】
但し、ビジー状態がシステムクロックの一周期より短い場合、メモリインタフェース42は、ビジー状態を検出できない場合がある。そこで、外部メモリ50のレディ/ビジー出力は最大200ナノ秒の遅延であることから、リード開始アドレスの最後のバイトを発行してから200ナノ秒後に既にレディ/ビジー信号RDY_BSYBがHighレベル(レディ)を示している場合、外部メモリ50は既にビジー状態を経過してレディ状態になっていると判断できる。従って、メモリインタフェース42は、リード開始アドレスの最後のバイトを発行してから20T後にレディ/ビジー信号RDY_BSYBがHighレベル(レディ)を示していれば、即座にデータリードを開始する。
【0134】
データリードが開始されると、メモリインタフェース42は、リードイネーブル信号/REBをアサートして外部メモリ50からデータをリードする。リードイネーブル信号/REBがアサートされる度に、NANDインタフェースの外部メモリ50は、連続するアドレスのメモリワードを外部バス51のデータバスEDに出力する。メモリインタフェース42は、1回のリードサイクルの終端、すなわちリードイネーブル信号/REBがネゲートされるシステムクロックの立ち上がりで、外部バス51のデータバスEDからリードデータを取り込む。
【0135】
このように、NANDインタフェースの外部メモリ50からのデータリードでは、リードイネーブル信号/REBがアサートされる度に、リード開始アドレスから連続してデータをリードすることがでる。但し、ページの終端までリードが到達すると、レディ/ビジー信号RDY_BSYBが再びLowレベル(ビジー)を示し、Highレベル(レディ)になるまでリードは中断される。
【0136】
ここで、期間Trdは、リードサイクルの先頭サイクルからリードイネーブル信号/REBがアサートされるまでの遅延時間を示す。また、期間Trpwは、リードイネーブル信号/REBがアサートされる期間の長さを示す。
【0137】
さて、以上のように、本実施の形態では、CPU5は、外部メモリインタフェース3に直接外部バスアクセス要求を発行する機能と、DMAC4に対してDMA転送要求を行う機能と、の両方を備える。従って、離散したアドレスにランダムにデータアクセスを行う場合などは直接外部メモリインタフェース3に外部バスアクセス要求を発行し、データのブロック転送や仮想記憶管理機構が要求するページスワップなどを行う場合にはDMAC4にDMA転送要求を発行することで、外部メモリ50への効率的なアクセスが可能となる。
【0138】
また、本実施の形態では、IPL35、CPU5、及びDMAC4は、外部メモリインタフェース3に対して外部バスアクセス要求を行うのみであり、データのリード/ライトのための機構は、外部メモリインタフェース3が備えている。従って、異なるタイプのメモリインタフェースをサポートする場合でも、IPL35、CPU5、及びDMAC4の各々が、複数のメモリインタフェースを備える必要が無い。このため、回路構成の簡略化が可能になり、コストの低減を図ることができる。
【0139】
従来のマルチプロセッサにおいても、複数のプロセッサコアが、外部メモリインタフェースを通じて外部バスを共有しているが、データのリード/ライトのための機構は、各プロセッサコアが備えている。従って、NORインタフェースとNANDインタフェースのように、アクセス手法が全く異なるタイプの外部メモリを接続可能とするためには、プロセッサコアの各々が、複数の異なるメモリインタフェースを備えなければならない。これでは、回路構成が複雑化し、コストの低減を図れない。
【0140】
さらに、本実施の形態では、共有のメインRAM25に対するアクセスの経路(つまり、メインRAMアクセスアービタ23)と、機能ユニットの制御のための経路(つまり、I/Oバス27)と、が分離されているので、機能ユニットに対する制御に起因するメインRAM25のバスバンド幅の浪費を防止できる。
【0141】
この場合、I/Oバス27を用いて機能ユニットを制御するのは、プログラム命令を解釈し実行するCPU5であるため、ソフトウェアにより、動的に、各機能ユニットの制御が可能になる。
【0142】
さらに、本実施の形態では、CPU5、RPU9、及びSPU13からの3つのDMA転送要求を保持する3つのリクエストバッファ105,109及び113並びに4エントリのリクエストキュー45を備えている。従って、DMA転送実行中であっても、DMA転送要求を受け付けることができる。特に、DMAチャンネルが1つしかない場合に有効である。
【0143】
さらに、本実施の形態では、外部メモリインタフェース3は、CPU5による命令フェッチ要求が10マイクロ秒以上待たされ、かつ、調停優先順位制御レジスタの設定が「優先順位変更イネーブル」となっている場合、図3(a)ではなく図3(b)に示すEBI優先順位テーブルを参照する。従って、CPU5による命令フェッチ要求が、システムに不都合が生じるほど長く待たされることを防止できる。しかも、CPU5が調停優先順位制御レジスタにアクセスすることで、1つの優先順位テーブルに固定して調停を行うのか、あるいは、2つの優先順位テーブルを切り替えながら調停を行うのか、を動的に設定できる。
【0144】
さらに、本実施の形態によれば、外部バス51のアドレス空間が、プライマリメモリ領域とセカンダリメモリ領域とに分割されているので、領域ごとに、外部メモリのタイプを設定でき、異なる複数のタイプの外部メモリを接続できる。また、領域ごとに、外部バス51のデータバス幅を設定可能であるので、データバス幅の異なる複数の外部メモリを接続できる。さらに、領域ごとに、外部メモリに対するアクセスタイミングを設定可能であるので、アクセスタイミングの異なる複数の外部メモリを接続できる。
【0145】
さらに、本実施の形態によれば、図4に示すように、プライマリメモリ領域及びセカンダリメモリ領域のそれぞれに対して、メモリタイプレジスタ及びアクセスタイミングレジスタが設けられる。従って、CPU5によって、領域ごとに、外部メモリ50のタイプ、外部バス51のデータバス幅、及び外部メモリ50に対するアクセスタイミングを動的に設定できる。また、セカンダリメモリ開始アドレスレジスタを設けているので、CPU5によって、領域の境界を動的に設定できる。
【0146】
なお、本発明は、上記の実施の形態に限られるものではなく、その要旨を逸脱しない範囲で種々の態様において実施することが可能であり、例えば、以下のような変形も可能である。
【0147】
(1)上記では、外部メモリインタフェース3に対して、外部バスアクセス要求ができるのは、IPL35、CPU5、及びDMAC4だけであったが、より多くの機能ユニットが外部バスアクセス要求を行えるようにすることもできる。
【0148】
(2)上記では、DMAC4に対してDMA転送要求ができるのは、CPU5、RPU9、及びSPU13だけであったが、より多くの機能ユニットあるいはより少ない機能ユニットがDMA転送要求を行えるようにすることもできる。この場合、DMA転送要求が可能な機能ユニットの数と同じ数のリクエストバッファをDMAC4に設ける。また、リクエストキュー45のエントリ数は、4つに限定されない。
【0149】
(3)上記では、外部バス51のアドレス空間を2つの領域に分割したが、3以上の領域に分割することもできる。この場合は、領域の数と同じ数の、メモリタイプレジスタ及びアクセスタイミングレジスタの組を設ける。
【0150】
(4)上記では、3つのメモリインタフェース40〜42を設けたが、2つ以下でもよいし、4以上設けることもできる。また、メモリインタフェースとして、NORインタフェース、ページモード付NORインタフェース、及びNANDインタフェースをサポートしたが、メモリインタフェースのタイプはこれらに限定されない。
【0151】
(5)上記では、CPU5だけが、I/Oバス27を使用し、他の機能ユニットの制御を行ったが、複数の機能ユニットがI/Oバス27により他の機能ユニットを制御できるようにすることもできる。
【0152】
(6)上記では、EBI優先順位テーブルは固定であったが、所定条件の成立によって、複数の異なるEBI優先順位テーブルを切り替えて使用することもできる。また、2つのDMA優先順位テーブルを切り替えて使用したが、3以上のDMA優先順位テーブルを切り替えて使用することもできる。
【符号の説明】
【0153】
1…マルチメディアプロセッサ、3…外部メモリインタフェース、4…DMAC、5…CPU、9…RPU、13…SPU、17…GE、19…YSU、21…外部インタフェースブロック、23…メインRAMアクセスアービタ、25…メインRAM、27…I/Oバス、40〜42…メモリインタフェース(MIF)、44…DMAリクエストアービタ、45…リクエストキュー、46…DMA実行ユニット、51…外部バス、50…外部メモリ、105,109,113…リクエストバッファ。

【特許請求の範囲】
【請求項1】
外部バスへのアクセスが可能なマルチプロセッサであって、
各々演算処理を実行する複数のプロセッサコアと、
前記プロセッサコアの一部または全部からの前記外部バスの使用要求を調停して、いずれか1つの前記プロセッサコアに対して前記外部バスへのアクセスを許可する外部メモリインタフェースと、を備え、
前記外部メモリインタフェースは、異なる複数のメモリインタフェースを含み、前記複数のメモリインタフェースのいずれか1つを選択し、選択した前記メモリインタフェースを通じて、前記外部バスに接続される外部メモリであって、選択した前記メモリインタフェースに対応するタイプの前記外部メモリへのアクセスを行う、マルチプロセッサ。
【請求項2】
前記外部バスのアドレス空間は、複数の領域に分割され、前記領域ごとに、前記外部メモリのタイプを設定可能であり、
前記外部メモリインタフェースは、前記外部バスへのアクセスを許可された前記プロセッサコアが発行しているアドレスを含む前記領域に設定された前記外部メモリのタイプに対応する前記メモリインタフェースを選択し、選択した前記メモリインタフェースを通じて、当該外部メモリへのアクセスを行う、請求項1記載のマルチプロセッサ。
【請求項3】
前記外部メモリインタフェースは、前記複数の領域に対応する複数の第1の制御レジスタを含み、
前記複数の第1の制御レジスタには、少なくとも1つの前記プロセッサコアがアクセス可能であり、
前記少なくとも1つのプロセッサコアが前記第1の制御レジスタに値を設定することによって、その第1の制御レジスタに対応する前記領域に対して、前記外部メモリのタイプが設定される、請求項2記載のマルチプロセッサ。
【請求項4】
前記外部バスのアドレス空間は、複数の領域に分割され、前記領域ごとに、前記外部バスのデータバス幅を設定可能である、請求項1から3記載のマルチプロセッサ。
【請求項5】
前記外部メモリインタフェースは、前記複数の領域に対応する複数の第2の制御レジスタを含み、
前記複数の第2の制御レジスタには、少なくとも1つの前記プロセッサコアがアクセス可能であり、
前記少なくとも1つのプロセッサコアが前記第2の制御レジスタに値を設定することによって、その第2の制御レジスタに対応する前記領域に対して、前記外部バスのデータバス幅が設定される、請求項4記載のマルチプロセッサ。
【請求項6】
前記外部バスのアドレス空間は、複数の領域に分割され、前記領域ごとに、前記外部メモリに対するアクセスタイミングを設定可能である、請求項1から5記載のマルチプロセッサ。
【請求項7】
前記外部メモリインタフェースは、前記複数の領域に対応する複数の第3の制御レジスタを含み、
前記複数の第3の制御レジスタには、少なくとも1つの前記プロセッサコアがアクセス可能であり、
前記少なくとも1つのプロセッサコアが前記第3の制御レジスタに値を設定することによって、その第3の制御レジスタに対応する前記領域に対して、前記外部メモリに対するアクセスタイミングが設定される、請求項6記載のマルチプロセッサ。
【請求項8】
前記外部メモリインタフェースは、少なくとも1つの前記プロセッサコアがアクセス可能な第4の制御レジスタを含み、
前記少なくとも1つのプロセッサコアが前記第4の制御レジスタに値を設定することによって、前記領域の境界が設定される、請求項1から7記載のマルチプロセッサ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2011−34570(P2011−34570A)
【公開日】平成23年2月17日(2011.2.17)
【国際特許分類】
【出願番号】特願2010−201547(P2010−201547)
【出願日】平成22年9月9日(2010.9.9)
【分割の表示】特願2005−239533(P2005−239533)の分割
【原出願日】平成17年8月22日(2005.8.22)
【出願人】(396025861)新世代株式会社 (138)
【Fターム(参考)】