(57)【要約】  【課題】  外部メモリへの効率的なアクセスが可能なマルチプロセッサを提供することである。  【解決手段】  ＣＰＵ５は、外部メモリインタフェース３に直接外部バスアクセス要求を発行する機能と、ＤＭＡＣ４に対してＤＭＡ転送要求を行う機能と、の両方を備える。従って、離散したアドレスにランダムにデータアクセスを行う場合などは直接外部メモリインタフェース３に外部バスアクセス要求を発行し、データのブロック転送や仮想記憶管理機構が要求するページスワップなどを行う場合にはＤＭＡＣ４にＤＭＡ転送要求を発行することで、外部メモリ５０への効率的なアクセスが可能となる。【選択図】  図１
2011034570.tif 000002
【特許請求の範囲】
【請求項１】
外部バスへのアクセスが可能なマルチプロセッサであって、
各々演算処理を実行する複数のプロセッサコアと、
前記プロセッサコアの一部または全部からの前記外部バスの使用要求を調停して、いずれか１つの前記プロセッサコアに対して前記外部バスへのアクセスを許可する外部メモリインタフェースと、を備え、
前記外部メモリインタフェースは、異なる複数のメモリインタフェースを含み、前記複数のメモリインタフェースのいずれか１つを選択し、選択した前記メモリインタフェースを通じて、前記外部バスに接続される外部メモリであって、選択した前記メモリインタフェースに対応するタイプの前記外部メモリへのアクセスを行う、マルチプロセッサ。
【請求項２】
前記外部バスのアドレス空間は、複数の領域に分割され、前記領域ごとに、前記外部メモリのタイプを設定可能であり、
前記外部メモリインタフェースは、前記外部バスへのアクセスを許可された前記プロセッサコアが発行しているアドレスを含む前記領域に設定された前記外部メモリのタイプに対応する前記メモリインタフェースを選択し、選択した前記メモリインタフェースを通じて、当該外部メモリへのアクセスを行う、請求項１記載のマルチプロセッサ。
【請求項３】
前記外部メモリインタフェースは、前記複数の領域に対応する複数の第１の制御レジスタを含み、
前記複数の第１の制御レジスタには、少なくとも１つの前記プロセッサコアがアクセス可能であり、
前記少なくとも１つのプロセッサコアが前記第１の制御レジスタに値を設定することによって、その第１の制御レジスタに対応する前記領域に対して、前記外部メモリのタイプが設定される、請求項２記載のマルチプロセッサ。
【請求項４】
前記外部バスのアドレス空間は、複数の領域に分割され、前記領域ごとに、前記外部バスのデータバス幅を設定可能である、請求項１から３記載のマルチプロセッサ。
【請求項５】
前記外部メモリインタフェースは、前記複数の領域に対応する複数の第２の制御レジスタを含み、
前記複数の第２の制御レジスタには、少なくとも１つの前記プロセッサコアがアクセス可能であり、
前記少なくとも１つのプロセッサコアが前記第２の制御レジスタに値を設定することによって、その第２の制御レジスタに対応する前記領域に対して、前記外部バスのデータバス幅が設定される、請求項４記載のマルチプロセッサ。
【請求項６】
前記外部バスのアドレス空間は、複数の領域に分割され、前記領域ごとに、前記外部メモリに対するアクセスタイミングを設定可能である、請求項１から５記載のマルチプロセッサ。
【請求項７】
前記外部メモリインタフェースは、前記複数の領域に対応する複数の第３の制御レジスタを含み、
前記複数の第３の制御レジスタには、少なくとも１つの前記プロセッサコアがアクセス可能であり、
前記少なくとも１つのプロセッサコアが前記第３の制御レジスタに値を設定することによって、その第３の制御レジスタに対応する前記領域に対して、前記外部メモリに対するアクセスタイミングが設定される、請求項６記載のマルチプロセッサ。
【請求項８】
前記外部メモリインタフェースは、少なくとも１つの前記プロセッサコアがアクセス可能な第４の制御レジスタを含み、
前記少なくとも１つのプロセッサコアが前記第４の制御レジスタに値を設定することによって、前記領域の境界が設定される、請求項１から７記載のマルチプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサコアを有するマルチプロセッサ及びその関連技術に関する。
【背景技術】
【０００２】
特許文献１のマルチプロセッサでは、外部メモリ及び内部メモリ間のデータ転送を、ＤＭＡによって行っている。
【０００３】
特許文献２のマルチプロセッサでは、外部メモリにアクセスするためのメモリ管理ユニットをプロセッサコアごとに搭載している。
【０００４】
従来のマルチプロセッサでは、一般的に、共有の内部メモリにアクセスするためのバスとＣＰＵが他の機能ユニットを制御するためのバスとが同一である。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−１７５３９８号公報
【特許文献２】特開２００１−５１９５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１のマルチプロセッサでは、外部メモリ及び内部メモリ間でデータのブロック転送などを行うときは、ＤＭＡ転送により高速なデータ転送が可能となるが、離散したアドレスにランダムにデータアクセスを行う際は、ＤＭＡ転送では効率が悪い。
【０００７】
特許文献２のマルチプロセッサでは、プロセッサコアの各々がメモリ管理ユニットを搭載しているので、回路構成が複雑になり、コストの低減が図れない。
【０００８】
共有の内部メモリにアクセスするためのバスとＣＰＵが他の機能ユニットを制御するためのバスとが同一である上記従来のマルチプロセッサでは、ＣＰＵが他の機能ユニットを制御するためのアクセスが内部メモリのバスバンド幅を浪費してしまう。
【０００９】
そこで、本発明は、外部メモリへの効率的なアクセスが可能なマルチプロセッサ及びその関連技術を提供することを目的とする。
【００１０】
また、本発明の他の目的は、外部メモリへのアクセスに関する回路構成を簡略化して、コストの低減を図ることができるマルチプロセッサ及びその関連技術を提供することである。
【００１１】
さらに、本発明の他の目的は、プロセッサコアに対する制御に起因する内部メモリのバスバンド幅の浪費を防止できるマルチプロセッサ及びその関連技術を提供することである。
【課題を解決するための手段】
【００１２】
本発明の第１の観点によれば、マルチプロセッサは、外部バスへのアクセスが可能なマルチプロセッサであって、各々演算処理を実行する複数のプロセッサコアと、前記複数のプロセッサコアによって共有される内部メモリと、前記プロセッサコアの一部または全部からのダイレクトメモリアクセス転送要求を調停して、前記内部メモリと、前記外部バスに接続される外部メモリと、の間でダイレクトメモリアクセス転送を行うダイレクトメモリアクセスコントローラと、前記プロセッサコアの一部または全部および前記ダイレクトメモリアクセスコントローラからの前記外部バスの使用要求を調停して、いずれか１つの前記プロセッサコアまたは前記ダイレクトメモリアクセスコントローラに対して前記外部バスへのアクセスを許可する外部メモリインタフェースと、を備える。
【００１３】
この構成では、プロセッサコアの一部または全部は、外部メモリインタフェースに直接外部バス使用要求を発行する機能と、ダイレクトメモリアクセスコントローラに対してダイレクトメモリアクセス転送要求を行う機能と、の両方を備える。従って、離散したアドレスにランダムにデータアクセスを行う場合などは直接外部メモリインタフェースに外部バス使用要求を発行し、データのブロック転送や仮想記憶管理機構が要求するページスワップなどを行う場合にはダイレクトメモリアクセスコントローラにダイレクトメモリアクセス転送要求を発行することで、外部メモリへの効率的なアクセスが可能となる。
【００１４】
上記マルチプロセッサにおいて、前記ダイレクトアクセスメモリコントローラは、各々が、対応する前記プロセッサコアからの前記ダイレクトメモリアクセス転送要求を格納する複数のバッファと、複数の前記バッファが送出した複数の前記ダイレクトメモリアクセス転送要求を調停して、いずれか１つの前記ダイレクトメモリアクセス転送要求を出力する調停手段と、複数の前記ダイレクトメモリアクセス転送要求を保持でき、前記調停手段が出力した前記ダイレクトメモリアクセス転送要求を受け取った順に出力するキューと、前記キューが出力した前記ダイレクトメモリアクセス転送要求に応じたダイレクトメモリアクセス転送を実行するダイレクトメモリアクセス転送実行手段と、を含む。
【００１５】
この構成では、複数のプロセッサコアからの複数のダイレクトメモリアクセス転送要求を保持する複数のバッファおよびキューを備えている。従って、ダイレクトメモリアクセス転送実行中であっても、ダイレクトメモリアクセス転送要求を受け付けることができる。特に、ダイレクトメモリアクセスチャンネルが１つしかない場合に有効である。
【００１６】
上記マルチプロセッサにおいて、前記外部メモリインタフェースは、前記外部バスの使用要求を行うことができる前記プロセッサコアおよび前記ダイレクトメモリアクセスコントローラの優先順位を定めた優先順位テーブルに従って調停を行い、前記優先順位テーブルは複数用意され、互いに優先順位が異なっている。
【００１７】
この構成によれば、優先順位が固定されないので、ある優先順位テーブルで優先順位が低く設定されているプロセッサコアであっても、他の優先順位テーブルで優先順位を高く設定することができ、当該プロセッサコアの外部バス使用要求が、システムに不都合を生じるほど長く待たされることを防止できる。ダイレクトメモリアクセスコントローラについても同様である。
【００１８】
このマルチプロセッサにおいて、前記外部メモリインタフェースは、所定条件が成立したときに、前記優先順位テーブルを切り替えて調停を行う。
【００１９】
この構成によれば、目的に応じた所定条件を設定することにより、目的に応じて優先順位テーブルを切り替えることができる。
【００２０】
前記所定条件は、所定の前記プロセッサコアまたは前記ダイレクトメモリアクセスコントローラからの前記外部バスの使用要求が所定時間待たされたことである。
【００２１】
この構成によれば、所定のプロセッサコアまたはダイレクトメモリアクセスコントローラからの外部バスの使用要求が、システムに不都合が生じるほど長く待たされることを防止できる。
【００２２】
前記外部バスインタフェースは、少なくとも１つの前記プロセッサコアがアクセス可能な制御レジスタを含み、前記少なくとも１つのプロセッサコアにより前記制御レジスタに所定値が設定されたことを追加条件として、前記優先順位テーブルの切り替えを行うこともできる。
【００２３】
この構成によれば、１つの優先順位テーブルに固定して調停を行うのか、あるいは、複数の優先順位テーブルを切り替えながら調停を行うのか、を動的に設定できる。
【００２４】
本発明の第２の観点によると、マルチプロセッサは、外部バスへのアクセスが可能なマルチプロセッサであって、各々演算処理を実行する複数のプロセッサコアと、前記プロセッサコアの一部または全部からの前記外部バスの使用要求を調停して、いずれか１つの前記プロセッサコアに対して前記外部バスへのアクセスを許可する外部メモリインタフェースと、を備え、前記外部メモリインタフェースは、異なる複数のメモリインタフェースを含み、前記複数のメモリインタフェースのいずれか１つを選択し、選択した前記メモリインタフェースを通じて、前記外部バスに接続される外部メモリであって、選択した前記メモリインタフェースに対応するタイプの前記外部メモリへのアクセスを行う。
【００２５】
この構成では、外部メモリにアクセスするための機構は外部メモリインタフェースが備えている。従って、異なるタイプのメモリインタフェースをサポートする場合でも、プロセッサコアの各々が、複数のメモリインタフェースを備える必要が無い。このため、回路構成の簡略化が可能になり、コストの低減を図ることができる。
【００２６】
上記マルチプロセッサにおいて、前記外部バスのアドレス空間は、複数の領域に分割され、前記領域ごとに、前記外部メモリのタイプを設定可能であり、前記外部メモリインタフェースは、前記外部バスへのアクセスを許可された前記プロセッサコアが発行しているアドレスを含む前記領域に設定された前記外部メモリのタイプに対応する前記メモリインタフェースを選択し、選択した前記メモリインタフェースを通じて、当該外部メモリへのアクセスを行う。
【００２７】
この構成によれば、外部バスのアドレス空間の領域ごとに、外部メモリのタイプを設定できるので、異なる複数のタイプの外部メモリを接続できる。
【００２８】
このマルチプロセッサにおいて、前記外部メモリインタフェースは、前記複数の領域に対応する複数の第１の制御レジスタを含み、前記複数の第１の制御レジスタには、少なくとも１つの前記プロセッサコアがアクセス可能であり、前記少なくとも１つのプロセッサコアが前記第１の制御レジスタに値を設定することによって、その第１の制御レジスタに対応する前記領域に対して、前記外部メモリのタイプが設定される。
【００２９】
この構成によれば、プロセッサコアによって、動的に、領域ごとに外部メモリのタイプを設定できる。
【００３０】
上記マルチプロセッサにおいて、前記外部バスのアドレス空間は、複数の領域に分割され、前記領域ごとに、前記外部バスのデータバス幅を設定可能である。この構成によれば、データバス幅の異なる複数の外部メモリを接続できる。
【００３１】
このマルチプロセッサにおいて、前記外部メモリインタフェースは、前記複数の領域に対応する複数の第２の制御レジスタを含み、前記複数の第２の制御レジスタには、少なくとも１つの前記プロセッサコアがアクセス可能であり、前記少なくとも１つのプロセッサコアが前記第２の制御レジスタに値を設定することによって、その第２の制御レジスタに対応する前記領域に対して、前記外部バスのデータバス幅が設定される。
【００３２】
この構成によれば、プロセッサコアによって、動的に、領域ごとに外部バスのデータバス幅を設定できる。
【００３３】
上記マルチプロセッサにおいて、前記外部バスのアドレス空間は、複数の領域に分割され、前記領域ごとに、前記外部メモリに対するアクセスタイミングを設定可能である。この構成によれば、アクセスタイミングの異なる複数の外部メモリを接続できる。
【００３４】
このマルチプロセッサにおいて、前記外部メモリインタフェースは、前記複数の領域に対応する複数の第３の制御レジスタを含み、前記複数の第３の制御レジスタには、少なくとも１つの前記プロセッサコアがアクセス可能であり、前記少なくとも１つのプロセッサコアが前記第３の制御レジスタに値を設定することによって、その第３の制御レジスタに対応する前記領域に対して、前記外部メモリに対するアクセスタイミングが設定される。
【００３５】
この構成によれば、プロセッサコアによって、動的に、領域ごとに外部メモリに対するアクセスタイミングを設定できる。
【００３６】
上記マルチプロセッサにおいて、前記外部メモリインタフェースは、少なくとも１つの前記プロセッサコアがアクセス可能な第４の制御レジスタを含み、前記少なくとも１つのプロセッサコアが前記第４の制御レジスタに値を設定することによって、前記領域の境界が設定される。この構成によれば、プロセッサコアによって、領域の境界を動的に設定できる。
【００３７】
本発明の第３の観点によると、マルチプロセッサは、各々演算処理を実行する複数のプロセッサコアと、前記複数のプロセッサコアによって共有される内部メモリと、前記プロセッサコア及び前記内部メモリ間のデータ転送を行う第１のデータ転送経路と、前記プロセッサコアが他の前記プロセッサコアを制御するためのデータ転送を行う第２のデータ転送経路と、を備える。
【００３８】
この構成では、共有の内部メモリに対するアクセスの経路と、プロセッサコアの制御のための経路と、が分離されているので、プロセッサコアに対する制御に起因する内部メモリのバスバンド幅の浪費を防止できる。
【００３９】
上記マルチプロセッサにおいて、前記第２のデータ転送経路を用いて、前記他のプロセッサコアを制御する前記プロセッサコアは、プログラム命令を解釈し実行する中央演算処理装置である。この構成によれば、ソフトウェアにより、動的に、各プロセッサコアの制御が可能になる。
【図面の簡単な説明】
【００４０】
【図１】本発明の実施の形態によるマルチメディアプロセッサ１の内部構成を示すブロック図である。
【図２】外部バス５１のアドレス空間の説明図である。
【図３】外部メモリインタフェース３による調停の際に参照されるＥＢＩ優先順位テーブルの例示図である。
【図４】外部メモリインタフェース３が備える制御レジスタの説明図である。
【図５】ＤＭＡＣ４のリクエストキュー４５及びその周辺部を示すブロック図である。
【図６】ＤＭＡＣ４による調停の際に参照されるＤＭＡ優先順位テーブルの例示図である。
【図７】ＤＭＡＣ４が備える制御レジスタの説明図である。
【図８】ＮＯＲインタフェースにおけるランダムアクセスのリードサイクルを示すタイミングチャートである。
【図９】ページモード付ＮＯＲインタフェースにおけるページモードアクセスのリードサイクルを示すタイミングチャートである。
【図１０】ＮＯＲインタフェースにおけるランダムアクセスのライトサイクルを示すタイミングチャートである。
【図１１】ＮＡＮＤインタフェースにおけるリードサイクルを示すタイミングチャートである。
【発明を実施するための形態】
【００４１】
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、図中、同一または相当部分については同一の参照符号を付してその説明を援用する。また、本明細書及び図面において、信号のどのビットかを示す必要があるときは、信号名の後に、［ａ：ｂ］あるいは［ａ］を付する。［ａ：ｂ］は、その信号の第ａ番目のビットから第ｂ番目のビットを意味し、［ａ］は、その信号の第ａ番目のビットを意味する。「０ｂ」は２進数を、「０ｘ」は１６進数を意味する。
【００４２】
図１は、本発明の実施の形態によるマルチメディアプロセッサ１の内部構成を示すブロック図である。図１に示すように、このマルチメディアプロセッサは、外部メモリインタフェース３、ＤＭＡＣ（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ  ｃｏｎｔｒｏｌｌｅｒ）４、中央演算処理装置（以下、「ＣＰＵ」と呼ぶ。）５、ＣＰＵローカルＲＡＭ７、レンダリングプロセッシングユニット（以下、「ＲＰＵ」と呼ぶ。）９、カラーパレットＲＡＭ１１、サウンドプロセシングユニット（以下、「ＳＰＵ」と呼ぶ。）１３、ＳＰＵローカルＲＡＭ１５、ジオメトリエンジン（以下、「ＧＥ」と呼ぶ。）１７、Ｙソーティングユニット（以下、「ＹＳＵ」と呼ぶ。）１９、外部インタフェースブロック２１、メインＲＡＭアクセスアービタ２３、メインＲＡＭ２５、Ｉ／Ｏバス２７、ビデオＤＡＣ（ｄｉｇｉｔａｌ  ｔｏ  ａｎａｌｏｇ  ｃｏｎｖｅｒｔｅｒ）２９、オーディオＤＡＣブロック３１、及びＡ／Ｄコンバータ（以下、「ＡＤＣ」と呼ぶ。）３３を具備する。外部メモリインタフェース３は、メモリインタフェース（ＭＩＦ）４０，４１及び４２を含む。ＣＰＵ５は、ＩＰＬ（ｉｎｉｔｉａｌ  ｐｒｏｇｒａｍ  ｌｏａｄｅｒ）３５を含む。
【００４３】
ここで、ＣＰＵ５、ＲＰＵ９、ＳＰＵ９、ＧＥ１７、及びＹＳＵ１９をそれぞれプロセッサコアと呼ぶこともある。また、メインＲＡＭ２５及び外部メモリ５０を区別して説明する必要がないときは、「メモリＭＥＭ」と表記する。
【００４４】
本発明の特徴の１つである外部メモリインタフェース３は、外部バス５１を介して、外部メモリ５０からのデータの読み出し、及び外部メモリ５０へのデータの書き込みを司る。メモリインタフェース４０は、スタンダード非同期インタフェース（以下、「ＮＯＲインタフェース」と呼ぶ。）であり、メモリインタフェース４１は、ページモード付スタンダード非同期インタフェース（以下、「ページモード付ＮＯＲインタフェース」と呼ぶ。）であり、メモリインタフェース４２は、ＮＡＮＤフラッシュＥＥＰＲＯＭ互換インタフェース（以下、「ＮＡＮＤインタフェース」と呼ぶ。）である。外部メモリインタフェース３については、後で詳述する。
【００４５】
本発明の特徴の１つであるＤＭＡＣ４は、メインＲＡＭ２５と、外部バス５１に接続された外部メモリ５０と、の間でＤＭＡ転送を行う。ＤＭＡＣ４については、後で詳述する。
【００４６】
ＣＰＵ５は、メモリＭＥＭに格納されたプログラムを実行して、各種演算やシステム全体の制御を行う。また、ＣＰＵ５は、ＤＭＡＣ４にプログラム及びデータの転送要求を行うこともできるし、ＤＭＡＣ４を介さずに、外部メモリ５０から直接プログラムコードをフェッチしたり、外部メモリ５０に直接データアクセスを行うこともできる。ＩＰＬ３５は、電源が投入された時またはリセットされた時に一番最初に起動するプログラムを外部メモリ５０からロードする。
【００４７】
本発明の特徴の１つであるＩ／Ｏバス２７は、ＣＰＵ５をバスマスタとするシステム制御用のバスであり、バススレイブである各機能ユニット（外部メモリインタフェース３、ＲＰＵ９、ＳＰＵ１３、ＧＥ１７、ＹＳＵ１９、及び外部インタフェースブロック２１）の制御レジスタ及びローカルＲＡＭ７，１１，１５へのアクセスに用いられる。このようにして、これらの機能ユニットは、Ｉ／Ｏバス２７を通じて、ＣＰＵ５により制御される。
【００４８】
ＣＰＵローカルＲＡＭ７は、ＣＰＵ５専用のＲＡＭであり、サブルーチンコールや割り込み時におけるデータの退避などを行うためのスタック領域、及びＣＰＵ５のみが扱う変数の格納領域等として使用される。
【００４９】
ＲＰＵ９は、ポリゴン及びスプライトから構成される三次元イメージをリアルタイムに生成する。具体的には、ＲＰＵ９は、ＹＳＵ１９によるソート済みの、ポリゴン構造体配列の各構造体インスタンス及びスプライト構造体配列の各構造体インスタンスを、メインＲＡＭ２５から読み出し、所定の処理を実行して、スクリーン（表示画面）のスキャンに合わせて水平ラインごとにイメージを生成する。生成されたイメージは、コンポジットビデオ信号波形を示すデータストリームに変換され、ビデオＤＡＣ２９に出力される。また、ＲＰＵ９は、ＤＭＡＣ４に対して、ポリゴン及びスプライトのテクスチャパターンデータの取り込みのためのＤＭＡ転送要求を行う機能を有する。
【００５０】
テクスチャパターンデータとは、ポリゴンまたはスプライトに貼り付けられる２次元の画素配列データであり、各画素データは、カラーパレットＲＡＭ１１のエントリを指定するための情報の一部である。以降、テクスチャパターンデータの画素を「テクセル」と呼称し、スクリーンに表示されるイメージを構成する画素を指す「ピクセル」とは区別して使用する。
【００５１】
ポリゴン構造体配列は、多角形状のグラフィック要素であるポリゴンのための構造体配列であり、スプライト構造体配列は、スクリーンに平行な矩形のグラフィック要素であるスプライトのための構造体配列である。ポリゴン構造体配列の要素を、「ポリゴン構造体インスタンス」と呼び、スプライト構造体配列の要素を、「スプライト構造体インスタンス」と呼ぶ。ただし、両者を区別して説明する必要がないときは、単に「構造体インスタンス」と呼ぶこともある。
【００５２】
ポリゴン構造体配列に格納された各ポリゴン構造体インスタンスは、ポリゴンごとの表示情報（テクスチャマッピングモードでのテクスチャパターンデータ格納アドレス及びグーローシェーディングモードでのカラーデータ（ＲＧＢのカラーコンポーネント）を含む。）であり、１つのポリゴン構造体インスタンスに１つのポリゴンが対応している。スプライト構造体配列に格納された各スプライト構造体インスタンスは、スプライトごとの表示情報（テクスチャパターンデータ格納アドレスを含む。）であり、１つのスプライト構造体インスタンスに１つのスプライトが対応している。
【００５３】
ビデオＤＡＣ２９は、アナログのビデオ信号を生成するためのデジタル／アナログ変換器である。ビデオＤＡＣ２９は、ＲＰＵ９から入力されたデータストリームをアナログのコンポジットビデオ信号に変換し、ビデオ信号出力端子（図示せず）からテレビジョンモニタ等（図示せず）に出力する。
【００５４】
カラーパレットＲＡＭ１１は、本実施の形態では５１２色すなわち５１２エントリのカラーパレットからなる。ＲＰＵ９は、テクスチャパターンデータに含まれるテクセルデータをカラーパレットのエントリを指定するインデックスの一部として、カラーパレットＲＡＭ１１を参照し、テクスチャパターンデータを、カラーデータ（ＲＧＢのカラーコンポーネント）に変換する。
【００５５】
ＳＰＵ１３は、ＰＣＭ（ｐｕｌｓｅ  ｃｏｄｅ  ｍｏｄｕｌａｔｉｏｎ）波形データ（以下、「ウェーブデータ」と呼ぶ。）、アンプリチュードデータ、及びメインボリュームデータを生成する。具体的には、ＳＰＵ１３は、最大６４チャンネル分のウェーブデータを時分割多重するとともに、最大６４チャンネル分のエンベロープデータを時分割多重してチャンネルボリュームデータと乗算し、アンプリチュードデータを生成する。そして、ＳＰＵ１３は、メインボリュームデータ、時分割多重されたウェーブデータ、及び時分割多重されたアンプリチュードデータを、オーディオＤＡＣブロック３１に出力する。また、ＳＰＵ１３は、ＤＭＡＣ４に対して、ウェーブデータ及びエンベロープデータの取り込みのためのＤＭＡ転送要求を行う機能を有する。
【００５６】
オーディオＤＡＣブロック３１は、ＳＰＵ１３から入力されたウェーブデータ、アンプリチュードデータ、及びメインボリュームデータをそれぞれアナログ信号に変換し、結果をアナログ乗算して、アナログオーディオ信号を生成する。このアナログオーディオ信号は、オーディオ信号出力端子（図示せず）からテレビジョンモニタ等（図示せず）のオーディオ入力端子（図示せず）に出力される。
【００５７】
ＳＰＵローカルＲＡＭ１５は、ＳＰＵ１３がウェーブ再生及びエンベロープ生成を行う際に用いるパラメータ（例えば、ウェーブデータやエンベロープデータの格納アドレスやピッチ情報など）を格納する。
【００５８】
ＧＥ１７は、三次元イメージを表示するための幾何演算を実行する。具体的には、ＧＥ１７は、行列積、ベクトルアフィン変換、ベクトル直交変換、透視投影変換、頂点明度／ポリゴン明度計算（ベクトル内積）、及びポリゴン裏面カリング処理（ベクトル外積）などの演算を実行する。
【００５９】
ＹＳＵ１９は、メインＲＡＭ２５に格納されているポリゴン構造体配列の各構造体インスタンス及びスプライト構造体配列の各構造体インスタンスを、ソートルール１〜４に従ってソートする。この場合、ポリゴン構造体配列とスプライト構造体配列とで、別個にソートが行われる。
【００６０】
ソートルール１は、最小Ｙ座標が小さい順に、各ポリゴン構造体インスタンスを並べ替えることである。最小Ｙ座標とは、ポリゴンの３頂点のＹ座標のうち、最も小さいＹ座標のことである。Ｙ座標はスクリーンの垂直座標であり、下向きが正方向である。ソートルール２は、最小Ｙ座標が同じである複数のポリゴンについては、デプス値が大きい順に、各ポリゴン構造体インスタンスを並べることである。
【００６１】
ただし、ＹＳＵ１９は、スクリーンの先頭ラインに表示されるピクセルを持つ複数のポリゴンについては、最小Ｙ座標が異なっている場合でも、それらが同一であるとみなして、ソートルール１ではなく、ソートルール２に従って、各ポリゴン構造体インスタンスの並べ替えを行う。つまり、スクリーンの先頭ラインに表示されるピクセルを持つポリゴンが複数存在する場合は、最小Ｙ座標が同一であるとみなして、デプス値が大きい順に並べ替えられる。これがソートルール３である。
【００６２】
インタレーススキャンの場合でも、ソートルール１〜３が適用される。ただし、奇数フィールドを表示するためのソートでは、奇数ラインに表示されるポリゴンの最小Ｙ座標及び／又はその奇数ラインの１つ前の偶数ラインに表示されるポリゴンの最小Ｙ座標が同一であるとみなして、ソートルール２によるソートを行う。ただし、先頭の奇数ラインは除く。なぜなら、その１つ前の偶数ラインが存在しないからである。一方、偶数フィールドを表示するためのソートでは、偶数ラインに表示されるポリゴンの最小Ｙ座標及び／又はその偶数ラインの１つ前の奇数ラインに表示されるポリゴンの最小Ｙ座標が同一であるとみなして、ソートルール２によるソートを行う。これがソートルール４である。
【００６３】
スプライトに関するソートルール１〜４は、それぞれポリゴンに関するソートルール１〜４と同様である。
【００６４】
外部インタフェースブロック２１は、周辺装置５４とのインタフェースであり、２４チャンネルのプログラマブルなデジタル入出力（Ｉ／Ｏ）ポートを含む。２４チャンネルのＩ／Ｏポートの各々は、４チャンネル分のマウスインタフェース機能、４チャンネル分のライトガンインタフェース機能、２チャンネル分の汎用タイマ／カウンタ、１チャンネル分の調歩同期式シリアルインタフェース機能、１チャンネル分の汎用パラレル／シリアル変換ポート機能のうち１または複数に内部接続されている。
【００６５】
ＡＤＣ３３は、４チャンネルのアナログ入力ポートに接続され、これらを介して、アナログ入力装置５２から入力されたアナログ信号をデジタル信号に変換する。例えば、マイク音声等のアナログ入力信号をサンプリングしてデジタルデータに変換する。
【００６６】
本発明の特徴の１つであるメインＲＡＭアクセスアービタ２３は、機能ユニット（ＣＰＵ５、ＲＰＵ９、ＧＥ１７、ＹＳＵ１９、ＤＭＡＣ４、及び外部インタフェースブロック２１（調歩同期式シリアルポートあるいは汎用パラレル／シリアル変換ポート））からのメインＲＡＭ２５へのアクセスを調停して、いずれかの機能ユニットにアクセス許可を出す。
【００６７】
メインＲＡＭ２５は、ＣＰＵ５のワーク領域、変数格納領域、および仮想記憶管理領域等として利用される。また、メインＲＡＭ２５は、ＣＰＵ５が他の機能ユニットに受け渡すデータの格納領域、ＲＰＵ９及びＳＰＵ１３が外部メモリ５０からＤＭＡによって取得したデータの格納領域、ＧＥ１７及びＹＳＵ１９の入力データ及び出力データの格納領域等としても使用される。
【００６８】
外部バス５１は、外部メモリ５０にアクセスするためのバスである。ＩＰＬ３５、ＣＰＵ５、およびＤＭＡＣ４から、外部メモリインタフェース３を介してアクセスされる。外部バス５１のアドレスバスは、３０ビットから成り、最大で１Ｇバイト（＝８Ｇビット）の外部メモリ５０を接続することができる。外部バス５１のデータバスは、１６ビットから成り、８ビット又は１６ビットのデータバス幅を持つ外部メモリ５０を接続できる。異なるデータバス幅を持つ外部メモリを同時に接続可能であり、アクセスする外部メモリによってデータバス幅を自動的に切り替える機能が備えられる。
【００６９】
図２は、外部バス５１のアドレス空間の説明図である。図２に示すように、外部バス５１のアドレス空間は、２種類の異なる外部メモリを接続できるように、２つの領域に分割されており、それぞれ、プライマリメモリ領域及びセカンダリメモリ領域と呼ぶ。この領域ごとに、メモリインタフェース４０〜４２のいずれか１つが設定される。もちろん、２つの領域に同じメモリインタフェースを設定することもできるし、異なるメモリインタフェースを設定することもできる。以下、外部メモリインタフェース３について詳細に説明していく。
【００７０】
図１に戻って、メモリインタフェース４０、つまり、ＮＯＲインタフェースとは、アドレス及びデータの各ビットがパラレルに外部メモリインタフェース３及び外部メモリ５０間で接続され、信号間の同期のためのクロック信号を持たないメモリインタフェースのことである。スタンダードなマスクＲＯＭ、スタンダードなＳＲＡＭ、及びＮＯＲフラッシュＥＥＰＲＯＭなどが、ＮＯＲインタフェースを備えている。従って、外部メモリ５０として、これらのメモリを使用できる。
【００７１】
メモリインタフェース４１、つまり、ページモード付ＮＯＲインタフェースとは、ページモードをサポートしているＮＯＲインタフェースのことである。従って、ＮＯＲインタフェースを備え、ページモードをサポートしているメモリを、外部メモリ５０として使用できる。一般に、ページモードとは、メモリに設定されているページ内でアクセスが連続した場合に、ページ内の２回目以降のアクセスタイムを短縮できるアクセスモードのことである。ページのサイズは、メモリの品種によって異なる。
【００７２】
メモリインタフェース４２、つまり、ＮＡＮＤインタフェースとは、ＮＡＮＤフラッシュＥＥＰＲＯＭのインタフェースと互換性を持つメモリインタフェースである。但し、マルチプロセッサ１のＮＡＮＤインタフェースは、エラー訂正のためのハードウェアを備えていないため、ＮＡＮＤフラッシュＥＥＰＲＯＭをそのまま接続することはできず、ＮＡＮＤフラッシュＥＥＰＲＯＭ互換マスクＲＯＭ等との接続が可能である。従って、外部メモリ５０として、それらのメモリを使用できる。
【００７３】
外部メモリインタフェース３は、後述のＥＢＩ優先順位テーブルに従って、ＩＰＬ３５、ＣＰＵ５、及びＤＭＡＣ４からの外部バスアクセス要求要因（外部バス５１へのアクセスを要求する要因）を調停して、いずれか１つの外部バスアクセス要求要因を選択する。そして、選択した外部バスアクセス要求要因に対して外部バス５１へのアクセスを許可する。これらの詳細を説明する。
【００７４】
図３は、外部メモリインタフェース３による調停の際に参照されるＥＢＩ優先順位テーブルの例示図である。図３（ａ）を参照して、外部バスアクセス要求要因として、ＩＰＬ３５によるブロック転送要求、ＣＰＵ５によるデータアクセス要求、ＤＭＡＣ４によるＤＭＡ要求、及びＣＰＵ５による命令フェッチ要求がある。優先順位は、１番が最も高く、番号が大きくなるに従って低くなる。
【００７５】
外部メモリインタフェース３は、図３（ａ）のＥＢＩ優先順位テーブルに従って、外部バスアクセス要求要因を調停する。ただし、ＣＰＵ５による命令フェッチ要求が１０マイクロ秒以上待たされ、かつ、後述の調停優先順位制御レジスタの設定が「優先順位変更イネーブル」となっている場合、図３（ｂ）に示すＥＢＩ優先順位テーブルが用いられる。この状態でＣＰＵ５による命令フェッチが行われると、再び図３（ａ）に示すＥＢＩ優先順位テーブルが使用される。
【００７６】
図２に戻って、外部バスアクセス要求要因のうち、ＤＭＡＣ４によるＤＭＡ要求およびＣＰＵ５によるデータアクセス要求では、外部バス５１のアドレス空間の全領域に対してアクセスが可能である。これに対し、ＣＰＵ５による命令フェッチ要求およびＩＰＬ３５によるブロック転送要求では、アクセス可能な領域が制限される。
【００７７】
ＣＰＵ５による命令フェッチ要求では、０ｘ００００００００〜０ｘ００ＦＦＦＦＦＦの範囲が、アクセス可能な外部バスアドレスである。ＩＰＬ３５は、マルチメディアプロセッサ１の起動時に外部バスアドレス０ｘ００００００００〜０ｘ００００００ＦＦに格納されているデータ（起動プログラム）をメインＲＡＭ２５のアドレス０ｘ００００〜０ｘ００ＦＦに転送し、ＣＰＵ５のプログラム実行をメインＲＡＭ２５の０ｘ００００番地から開始させる。従って、ＩＰＬ３５によるブロック転送要求では、０ｘ００００００００〜０ｘ００００００ＦＦの範囲以外の外部バスアドレスにはアクセスが行われない。
【００７８】
図４は、外部メモリインタフェース３が備える制御レジスタの説明図である。図４に示すように、各制御レジスタは、図中対応するＩ／Ｏバスアドレスに配置され、ＣＰＵ５がＩ／Ｏバス２７を介してリード及びライトすることができる。
【００７９】
セカンダリメモリ開始アドレスレジスタは、セカンダリメモリ領域の開始アドレス、つまり、プライマリメモリ領域とセカンダリメモリ領域との境界を設定するための制御レジスタである。但し、外部バスアドレスの上位１０ビットのみが設定可能であり、下位２０ビットは全て「０」に固定される。従って、セカンダリメモリ領域の開始アドレスは、０ｘ００００００００，０ｘ００１０００００，０ｘ００２０００００，…のように、１Ｍバイト（＝８Ｍビット）単位で設定可能である。
【００８０】
プライマリメモリタイプレジスタは、プライマリメモリ領域に設定するメモリインタフェース（外部メモリ）のタイプ（メモリインタフェース４０，４１あるいは４２）、ページサイズ（４，８，１６，３２，６４，１２８，２５６あるいは５１２バイト）、データバス幅（８あるいは１６ビット）、およびＮＡＮＤインタフェースのアドレスサイズ（３あるいは４バイト）を設定するための制御レジスタである。
【００８１】
プライマリメモリアクセスタイミングレジスタは、プライマリメモリ領域へのアクセスタイミングを設定するための制御レジスタである。
【００８２】
つまり、この制御レジスタには、アクセスサイクル時間Ｔａｃ、ページアクセスサイクル時間Ｔａｐｃ（メモリインタフェース４１が設定されているとき有効）、コマンドラッチイネーブル信号ＣＬＥ及びアドレスラッチイネーブル信号ＡＬＥのライトイネーブル信号／ＷＥに対するホールド時間Ｔｃａｈ（メモリインタフェース４２が設定されているとき有効）、メモリセレクト信号／ＣＳ０Ｂのアクセスサイクル開始からの遅延時間Ｔｃｄ、リードイネーブル信号／ＲＥＢのアクセスサイクル開始からの遅延時間Ｔｒｄ、リードイネーブル信号／ＲＥＢのパルス幅Ｔｒｐｗ、ライトイネーブル信号／ＷＥＢのアクセスサイクル開始からの遅延時間Ｔｗｄ、ライトイネーブル信号／ＷＥＢのパルス幅Ｔｗｐｗ、ライトイネーブル信号／ＷＥＢの立ち上がりに対するライトデータのホールド時間Ｔｄｈ（メモリインタフェース４２以外のメモリインタフェース４０あるいは４１が設定されているとき有効）、ライトイネーブル信号／ＷＥＢの立ち上がりに対するライトデータのホールド時間Ｔｆｄｈ（メモリインタフェース４２が設定されているとき有効）、並びにライトイネーブル信号／ＷＥＢの立ち下がりに対するライトデータのセットアップ時間Ｔｄｓが設定される。これらについては、後述の図８〜図１１の説明で明らかになる。
【００８３】
セカンダリメモリタイプレジスタは、セカンダリメモリ領域に設定するメモリインタフェース（外部メモリ）のタイプ（メモリインタフェース４０，４１あるいは４２）、ページサイズ（４，８，１６，３２，６４，１２８，２５６あるいは５１２バイト）、データバス幅（８あるいは１６ビット）、およびＮＡＮＤインタフェースのアドレスサイズ（３あるいは４バイト）を設定するための制御レジスタである。
【００８４】
セカンダリメモリアクセスタイミングレジスタは、セカンダリメモリ領域へのアクセスタイミングを設定するための制御レジスタである。具体的な設定内容は、プライマリメモリアクセスタイミングレジスタと同様である。ただし、遅延時間Ｔｃｄは、メモリセレクト信号／ＣＳ１Ｂのアクセスサイクル開始からの遅延時間である。
【００８５】
調停優先順位制御レジスタは、外部バスアクセス要求要因間の調停における優先順位を制御するための制御レジスタである。このレジスタに「１」が設定されて「優先順位変更イネーブル」となっている場合に、ＣＰＵ５による命令フェッチ要求が１０マイクロ秒以上待たされると、図３（ｂ）に示すＥＢＩ優先順位テーブルが用いられ、ＣＰＵ５による命令フェッチ要求の優先順位が引き上げられる。この状態でＣＰＵ５による命令フェッチが行われると、再び図３（ａ）に示すＥＢＩ優先順位テーブルが使用される。なお、このレジスタに「０」が設定されると「優先順位変更ディセーブル」となり、上記の優先順位の変更は行われない。
【００８６】
外部メモリインタフェース３は、調停の結果、外部バス５１へのアクセスを許可した機能ユニット（ＩＰＬ３５、ＣＰＵ５、あるいはＤＭＡＣ４）が発行している外部バスアドレスを含む領域（プライマリメモリ領域あるいはセカンダリメモリ領域）に設定されたメモリインタフェース４０，４１あるいは４２を選択し、選択したメモリインタフェースを通じて、外部メモリ５０へのアクセスを行う。
【００８７】
この場合、選択されたメモリインタフェースは、外部バス５１へのアクセスを許可された機能ユニットが出力しているリード／ライト情報、データ転送バイト数情報、及び／又はライトデータに基づいて、リード／ライト制御を行う。
【００８８】
図５は、ＤＭＡＣ４のリクエストキュー４５及びその周辺部を示すブロック図である。図５に示すように、ＤＭＡＣ４は、ＣＰＵ５からのＤＭＡ要求を保持するリクエストバッファ１０５、ＲＰＵ９からのＤＭＡ要求を保持するリクエストバッファ１０９、ＳＰＵ１３からのＤＭＡ要求を保持するリクエストバッファ１１３、ＤＭＡリクエストアービタ４４、リクエストキュー４５、及びＤＭＡ実行ユニット４６を含む。
【００８９】
リクエストバッファ１０５，１０９及び１１３のうち、２以上のリクエストバッファにＤＭＡ転送要求がエントリされている場合、ＤＭＡリクエストアービタ４４は、後述のＤＭＡ優先順位テーブルに従って、ＤＭＡ転送要求をリクエストキュー４５の最後尾に送出する。４つのエントリを有するリクエストキュー４５は、ＦＩＦＯ構造になっており、最初に受け付けたＤＭＡ転送要求から順次ＤＭＡ実行ユニット４６に送出する。ＤＭＡ実行ユニット４６は、外部バス５１へのアクセス要求（外部バスアクセス要求要因としてのＤＭＡ要求）を発行し、外部バス５１へのアクセスが許可された場合は、リクエストキュー４５から受け取ったＤＭＡ転送要求に従ったＤＭＡ転送を実行する。
【００９０】
ＤＭＡＣ４が備えるＤＭＡチャンネルは一つのみであるため、ＤＭＡ転送を同時実行することはできないが、ＣＰＵ５、ＲＰＵ９、及びＳＰＵ１３からのＤＭＡ転送要求を保持するリクエストバッファ１０５，１０９及び１１３と、４エントリのリクエストキュー４５と、を備えているため、ＤＭＡ転送中でもＤＭＡ転送要求を受け付けることができる。
【００９１】
図６は、ＤＭＡＣ４による調停の際に参照されるＤＭＡ優先順位テーブルの例示図である。図６を参照して、上記のように、このＤＭＡ優先順位テーブルは、リクエストバッファ１０５，１０９及び１１３のうち、２以上のリクエストバッファにＤＭＡ転送要求がエントリされている状態において、ＤＭＡリクエストアービタ４４が、どのＤＭＡ転送要求を優先してリクエストキュー４５に送出するのかを示す。
【００９２】
優先順位は、１番が最も高く、番号が大きくなるに従って低くなる。従って、優先順位が高いほうから、ＳＰＵ１３によるＤＭＡ転送要求、ＲＰＵ９によるＤＭＡ転送要求、及び、ＣＰＵ５によるＤＭＡ転送要求、となる。本実施の形態では、優先順位はハードウェアで固定されており、変更することはできない。
【００９３】
ＳＰＵ１３、ＲＰＵ９、及びＣＰＵ５からのＤＭＡ要求要因（ＤＭＡ転送を要求する要因）について順に説明していく。
【００９４】
図６を参照して、ＳＰＵ１３のＤＭＡ要求要因として、（１）ウェーブデータをウェーブバッファに転送すること、（２）エンベロープデータをエンベロープバッファに転送すること、がある。ウェーブバッファ及びエンベロープバッファは、それぞれメインＲＡＭ２５上に設定されるウェーブデータ及びエンベロープデータのテンポラリ格納領域である。このテンポラリ格納領域の先頭アドレスは、ＳＰＵ１３内の制御レジスタ（図示せず）で定められ、このテンポラリ格納領域の大きさは、再生チャンネル数の設定により定められる。なお、ＳＰＵ１３の２つのＤＭＡ要求要因間の調停は、ＳＰＵ１３内のハードウェア（図示せず）で行われ、ＤＭＡＣ４は関知しない。
【００９５】
ＲＰＵ９のＤＭＡ要求要因として、テクスチャパターンデータをテクスチャバッファに転送すること、がある。テクスチャバッファは、メインＲＡＭ２５上に設定されるテクスチャパターンデータのテンポラリ格納領域である。このテンポラリ格納領域の先頭アドレス及びサイズは、ＲＰＵ９内の制御レジスタ（図示せず）で定められる。
【００９６】
ＣＰＵ５のＤＭＡ要求要因として、（１）仮想記憶管理においてページミスが発生した場合のページ転送、（２）アプリケーションプログラム等が要求するデータ転送、がある。なお、ＣＰＵ５内で複数のＤＭＡ転送要求が同時に発生した場合は、その調停はＣＰＵ５で実行されるソフトウェアにて行われ、ＤＭＡＣ４は関知しない。
【００９７】
ＣＰＵ５による上記（１）のＤＭＡ要求要因についてもう少し詳しく説明する。ＣＰＵ５のＤＭＡ転送要求は、ソフトウェアの実行に応じて行われる。マルチメディアプロセッサ１の一般的なソフトウェア構造では、仮想記憶管理は、ＯＳ（オペレーティングシステム）によって行われる。仮想記憶管理においてページミスが発生し、ページスワップの必要が発生すると、ＯＳは、ＤＭＡＣ４にＤＭＡ転送要求を発行する。
【００９８】
ＣＰＵ５による上記（２）のＤＭＡ要求要因についてもう少し詳しく説明する。ＯＳ等のシステムソフトウェアやアプリケーションソフトウェアの実行中、外部メモリ５０とメインＲＡＭ２５との間で、まとまったデータ転送の必要が生じた場合、ＤＭＡ要求が発行される。
【００９９】
ＤＭＡＣ４は、ＬＺ７７アルゴリズムに基づくデータ伸張機能を備えており、ＣＰＵ５によるＭＤＡ転送要求に対して、外部メモリ５０に格納された圧縮データを伸張しながらＤＭＡ転送することが可能である。
【０１００】
図７は、ＤＭＡＣ４が備える制御レジスタの説明図である。図７に示すように、各制御レジスタは、図中対応するＩ／Ｏバスアドレスに配置され、ＣＰＵ５がＩ／Ｏバス２７を介してリード及びライトすることができる。つまり、これらの制御レジスタは、ＣＰＵ５によるＤＭＡ転送要求の際に設定される。
【０１０１】
ＤＭＡ転送元アドレスレジスタには、ＤＭＡ転送における転送元アドレスが外部バス５１の物理アドレスで設定される。ＤＭＡ転送先アドレスレジスタには、ＤＭＡ転送における転送先アドレスがメインＲＡＭ２５の物理アドレスで設定される。ＤＭＡ転送バイト数レジスタには、ＤＭＡ転送における転送バイト数が設定される。データ伸張ＤＭＡにおいては、伸張後のバイト数でカウントする。
【０１０２】
ＤＭＡ制御レジスタは、ＤＭＡＣ４の各種制御を行うレジスタであり、ＤＭＡ転送イネーブルビット、ＤＭＡ開始ビット、及び割り込みイネーブルビットを含む。ＤＭＡ転送イネーブルビットは、ＣＰＵ５から要求されるＤＭＡ転送のイネーブル／ディセーブルを制御するビットである。ＤＭＡ開始ビットに「１」が設定されると、ＣＰＵ５に対応するリクエストバッファ１０５に書き込まれているＤＭＡ転送要求（転送元アドレス、転送先アドレス、及び転送バイト数）が、リクエストキュー４５に送出される。割り込みイネーブルビットは、ＣＰＵ５から要求されたＤＭＡ転送が終了した際に、ＣＰＵ５に対して割り込み要求を行うか否かを制御するビットである。
【０１０３】
ＤＭＡデータ伸張制御レジスタは、データ伸張イネーブルビットを含む。このビットは、ＣＰＵ５から要求されるＤＭＡ転送におけるデータ伸張のイネーブル／ディセーブルを制御するビットである。ＤＭＡステータスレジスタは、ＤＭＡＣ４の各種ステータスを表すレジスタであり、リクエストキュービジービット、ＤＭＡ完了ビット、ＤＭＡ実行中ビット、及びＤＭＡ未完了フィールドを含む。
【０１０４】
リクエストキュービジービットは、リクエストキュー４５の状態（ビジー／レディ）を示す。リクエストキュー４５の状態が「ビジー」だと、新たなＤＭＡ転送要求はリクエストキュー４５にエントリされない。ＤＭＡ完了ビットには、ＣＰＵ５から要求されたＤＭＡ転送が完了する度に「１」がセットされる。割り込みイネーブルビットをイネーブルに設定している場合、ＤＭＡ完了ビットに「１」がセットされるのと同時に、ＣＰＵ５に対する割り込み要求が発生する。ＤＭＡ実行中ビットは、ＤＭＡ転送が実行中か否かを示すビットである。ＤＭＡ未完了フィールドは、ＣＰＵ５から要求された未完了のＤＭＡ転送の数を示すフィールドである。
【０１０５】
ＤＭＡデータ伸張ＩＤレジスタは、データ伸張ＤＭＡにおけるＩＤコードを格納する。ＤＭＡデータ伸張制御レジスタが、イネーブルに設定されている場合、２５６バイトのブロックの先頭２バイトがＤＭＡデータ伸張ＩＤレジスタに設定されているＩＤコードと一致していると、ＤＭＡＣ４はそのブロックを圧縮ブロックとみなしてデータ伸張を行う。
【０１０６】
さて、次に、図８から図１１のタイミングチャートを参照しながら、外部メモリ５０に対するアクセスを説明する。なお、図８から図１１の説明において、期間１Ｔは、マルチメディアプロセッサ１のシステムクロックの１周期を表し、約１０．２ナノ秒に相当する。
【０１０７】
図８は、ＮＯＲインタフェースにおけるランダムアクセスのリードサイクルを示すタイミングチャートである。図８の例では、Ｔａｃ＝９Ｔ、Ｔｃｄ＝１Ｔ、Ｔｒｄ＝２Ｔ、Ｔｒｐｗ＝７Ｔである。期間Ｔａｃ，Ｔｃｄ，Ｔｒｄ及びＴｒｐｗの意味は、図４で説明した通りである。また、設定された外部バス５１のデータバス幅を１６ビットとしている。
【０１０８】
これらの期間は、次の条件を全て満たす必要がある。
【０１０９】
Ｔａｃ≧Ｔｒｄ＋Ｔｒｐｗ
Ｔａｃ≧２Ｔ
Ｔａｃ＞Ｔｃｄ
Ｔｒｐｗ＞０Ｔ
【０１１０】
これらの条件が満たされない場合、外部メモリインタフェース３のプライマリメモリアクセスタイミングレジスタ及びセカンダリメモリアクセスタイミングレジスタへの書き込みは無視される。
【０１１１】
図８を参照して、メモリインタフェース４０は、アクセスサイクル期間Ｔａｃの開始サイクルＣＹ０において、外部バスアドレスＥＡ［２９：０］の外部バス５１への送出を開始する。外部バスアドレスＥＡの送出は、アクセスサイクル期間Ｔａｃ中行われる。そして、メモリインタフェース４０は、開始サイクルＣＹ０のシステムクロックの立ち上がりから期間Ｔｃｄ後に、メモリセレクト信号／ＣＳＢ０又は／ＣＳＢ１をアサートする。さらに、メモリインタフェース４０は、開始サイクルＣＹ０のシステムクロックの立ち上がりから期間Ｔｒｄ後に、リードイネーブル信号／ＲＥＢをアサートする。そして、メモリインタフェース４０は、アクセスサイクルＴａｃの最終サイクルのシステムクロックの立ち上がりで、外部メモリ５０から外部バス５１に読み出されたデータＥＤ［１５：０］を取り込む。なお、リードアクセスであるため、ライトイネーブル信号／ＷＥＢは、ネゲートが維持される。
【０１１２】
図９は、ページモード付ＮＯＲインタフェースにおけるページモードアクセスのリードサイクルを示すタイミングチャートである。図９の例では、Ｔａｃ＝５Ｔ、Ｔａｐｃ＝３Ｔ、Ｔｃｄ＝１Ｔ、Ｔｒｄ＝２Ｔ、Ｔｒｐｗ＝３Ｔである。期間Ｔａｃ，Ｔａｐｃ，Ｔｃｄ，Ｔｒｄ及びＴｒｐｗの意味は、図４で説明した通りである。ただし、図９では、期間Ｔａｃは、ランダムアクセスのサイクル時間である。また、設定された外部バス５１のデータバス幅を１６ビットとしている。
【０１１３】
これらの期間は、次の条件を全て満たす必要がある。
【０１１４】
Ｔａｃ≧Ｔｒｄ＋Ｔｒｐｗ
Ｔａｃ≧２Ｔ
Ｔａｐｃ＞０Ｔ
Ｔａｃ＞Ｔｃｄ
Ｔｒｐｗ＞０Ｔ
【０１１５】
これらの条件が満たされない場合、外部メモリインタフェース３のプライマリメモリアクセスタイミングレジスタ及びセカンダリメモリアクセスタイミングレジスタへの書き込みは無視される。
【０１１６】
図９を参照して、期間Ｔａｃによって長さが規定される最初のリードサイクルＣＹＲはランダムアクセスのサイクルであり、期間Ｔａｐｃによって長さが規定される続く３つのリードサイクルＣＹＰ１〜ＣＹＰ３は、ページモードアクセスのサイクルである。
【０１１７】
メモリインタフェース４１は、アクセスサイクル期間Ｔａｃの開始サイクルＣＹ０において、外部バスアドレスＥＡ［２９：０］の外部バス５１への送出を開始する。外部バスアドレスＥＡの送出は、アクセスサイクル期間Ｔａｃ中行われる。そして、メモリインタフェース４１は、開始サイクルＣＹ０のシステムクロックの立ち上がりから期間Ｔｃｄ後に、メモリセレクト信号／ＣＳＢ０又は／ＣＳＢ１をアサートする。さらに、メモリインタフェース４１は、開始サイクルＣＹ０のシステムクロックの立ち上がりから期間Ｔｒｄ後に、リードイネーブル信号／ＲＥＢをアサートする。そして、メモリインタフェース４１は、最初のリードサイクルＣＹＲの最終サイクルでのシステムクロックの立ち上がりで、外部メモリ５０から外部バス５１に読み出されたデータＥＤ［１５：０］を取り込む。
【０１１８】
次のリードサイクルＣＹＰ１において、メモリインタフェース４１は、次の外部バスアドレスＥＡを外部メモリ５０へ送出する。そして、メモリインタフェース４１は、リードサイクルＣＹＰ１の最終サイクルでのシステムクロックの立ち上がりで、外部メモリ５０から外部バス５１に読み出された新たなデータＥＤを取り込む。このような動作が、引き続き後のリードサイクルＣＹＰ２及びＣＹＰ３でも行われる。
【０１１９】
このように、ページモードアクセスでは、最初のリードサイクルＣＹＲにおいてのみ、メモリセレクト信号／ＣＳＢ０，／ＣＳＢ１及びリードイネーブル信号／ＲＥＢの制御が必要なだけで、続くリードサイクルＣＹＰ１〜ＣＹＰ３では、それらの制御が不要となり、高速なアクセスが可能となる。なお、リードアクセスであるため、ライトイネーブル信号／ＷＥＢは、ネゲートが維持される。
【０１２０】
図１０は、ＮＯＲインタフェースにおけるランダムアクセスのライトサイクルを示すタイミングチャートである。図１０の例では、Ｔａｃ＝９Ｔ、Ｔｃｄ＝１Ｔ、Ｔｗｄ＝２Ｔ、Ｔｗｐｗ＝６Ｔ、Ｔｄｓ＝１Ｔ、Ｔｄｈ＝１Ｔである。期間Ｔａｃ，Ｔｃｄ，Ｔｗｄ，Ｔｗｐｗ，Ｔｄｓ及びＴｄｈの意味は、図４で説明した通りである。また、設定された外部バス５１のデータバス幅を１６ビットとしている。
【０１２１】
これらの期間は、次の条件を全て満たす必要がある。
【０１２２】
Ｔａｃ≧Ｔｗｄ＋Ｔｗｐｗ
Ｔａｃ≧２Ｔ
Ｔａｃ＞Ｔｃｄ
Ｔｗｐｗ＞０Ｔ
Ｔｗｄ≧Ｔｄｓ
【０１２３】
これらの条件が満たされない場合、外部メモリインタフェース３のプライマリメモリアクセスタイミングレジスタ及びセカンダリメモリアクセスタイミングレジスタへの書き込みは無視される。
【０１２４】
図１０を参照して、メモリインタフェース４０は、アクセスサイクル期間Ｔａｃの開始サイクルＣＹ０において、外部バスアドレスＥＡ［２９：０］の外部メモリ５０への送出を開始する。外部バスアドレスＥＡの送出は、アクセスサイクル期間Ｔａｃ中行われる。そして、メモリインタフェース４０は、開始サイクルＣＹ０のシステムクロックの立ち上がりから期間Ｔｃｄ後に、メモリセレクト信号／ＣＳＢ０又は／ＳＣＢ１をアサートする。さらに、メモリインタフェース４０は、開始サイクルＣＹ０のシステムクロックの立ち上がりから期間Ｔｗｄ後に、ライトイネーブル信号／ＷＥＢをアサートする。
【０１２５】
メモリインタフェース４０は、ライトイネーブル信号／ＷＥＢがアサートされる前に、つまり、時間Ｔｄｓだけ早く、ライトデータＥＤ［１５：０］の外部バス５１への送出を開始する。また、メモリインタフェース４０は、ライトイネーブル信号／ＷＥＢがネゲートされた後、時間Ｔｄｈだけ、ライトデータＥＤの外部バス５１への送出を継続する。なお、ライトアクセスであるため、リードイネーブル信号／ＲＥＢは、ネゲートが維持される。
【０１２６】
なお、アクセスの対象となる領域（図２参照）がページモードに設定されている場合でも、ライトサイクルではページモードアクセスは適用されず、全てランダムアクセスになる。
【０１２７】
図１１は、ＮＡＮＤインタフェースにおけるリードサイクルを示すタイミングチャートである。図１１の例では、Ｔｃｄ＝１Ｔ、Ｔｃａｈ＝２Ｔ、Ｔｗｄ＝２Ｔ、Ｔｗｐｗ＝３Ｔ、Ｔｄｓ＝１Ｔ、Ｔｆｄｈ＝２Ｔ、Ｔｒｄ＝２Ｔ、Ｔｒｐｗ＝４Ｔである。これらの期間の設定は、図４で説明した通りである。また、設定された外部バス５１のデータバス幅を１６ビットとしている。
【０１２８】
図１１を参照して、ＮＡＮＤインタフェースの外部メモリ５０にアクセスする場合、メモリインタフェース４２は、先ずリードコマンドを外部メモリ５０に発行する。この際、メモリインタフェース４２は、コマンドラッチイネーブル信号ＣＬＥをアサートする。メモリインタフェース４２が発行するコマンドの種類は「０ｘ００」と「０ｘ０１」の二種類のリードコマンドである。リードコマンドが二種類用意されているのは、コマンドのＬＳＢがリード開始アドレスの第８ビットＡ８を示しているからである。
【０１２９】
続いて、メモリインタフェース４２は、リード開始アドレスを外部メモリ５０に発行する。この際、メモリインタフェース４２は、アドレスラッチイネーブル信号ＡＬＥをアサートする。リード開始アドレスは、８ビットずつ３回に分けて発行される。但し、接続されている外部メモリ５０の容量が３２Ｍバイトを超える場合、８ビットずつ４回に分けて入力するモードに設定されなければならない。この設定は、外部メモリインタフェース３のプライマリメモリタイプレジスタあるいはセカンダリメモリタイプレジスタで行われる。
【０１３０】
これらのコマンドの発行及びリード開始アドレスの発行の際には、ライトイネーブル信号／ＷＥＢがアサートされる。
【０１３１】
ここで、期間Ｔｗｄは、コマンドまたはリード開始アドレス発行の先頭サイクルからライトイネーブル信号／ＷＥＢがアサートされるまでの遅延時間を示す。また、期間Ｔｗｐｗは、ライトイネーブル信号／ＷＥＢがアサートされる期間の長さを示す。期間Ｔｃａｈは、コマンドラッチイネーブル信号ＣＬＥ及びアドレスラッチイネーブル信号ＡＬＥのライトイネーブル信号／ＷＥに対するホールド時間、期間Ｔｃｄは、メモリセレクト信号／ＣＳ０Ｂあるいは／ＣＳ１Ｂのアクセスサイクル開始からの遅延時間、期間Ｔｆｄｈは、ライトイネーブル信号／ＷＥＢの立ち上がりに対するリードコマンドのホールド時間、期間Ｔｄｓは、ライトイネーブル信号／ＷＥＢの立ち下がりに対するリードコマンドのセットアップ時間である。
【０１３２】
リード開始アドレスが入力されると、外部メモリ５０はビジー状態に入る。ビジー状態になると、外部メモリ５０は、レディ／ビジー信号ＲＤＹ＿ＢＳＹＢを、Ｌｏｗレベル（ビジー）にする。メモリインタフェース４２は、レディ／ビジー信号ＲＤＹ＿ＢＳＹＢのＬｏｗレベル（ビジー）からＨｉｇｈレベル（レディ）への遷移を検出すると、データのリードを開始する。
【０１３３】
但し、ビジー状態がシステムクロックの一周期より短い場合、メモリインタフェース４２は、ビジー状態を検出できない場合がある。そこで、外部メモリ５０のレディ／ビジー出力は最大２００ナノ秒の遅延であることから、リード開始アドレスの最後のバイトを発行してから２００ナノ秒後に既にレディ／ビジー信号ＲＤＹ＿ＢＳＹＢがＨｉｇｈレベル（レディ）を示している場合、外部メモリ５０は既にビジー状態を経過してレディ状態になっていると判断できる。従って、メモリインタフェース４２は、リード開始アドレスの最後のバイトを発行してから２０Ｔ後にレディ／ビジー信号ＲＤＹ＿ＢＳＹＢがＨｉｇｈレベル（レディ）を示していれば、即座にデータリードを開始する。
【０１３４】
データリードが開始されると、メモリインタフェース４２は、リードイネーブル信号／ＲＥＢをアサートして外部メモリ５０からデータをリードする。リードイネーブル信号／ＲＥＢがアサートされる度に、ＮＡＮＤインタフェースの外部メモリ５０は、連続するアドレスのメモリワードを外部バス５１のデータバスＥＤに出力する。メモリインタフェース４２は、１回のリードサイクルの終端、すなわちリードイネーブル信号／ＲＥＢがネゲートされるシステムクロックの立ち上がりで、外部バス５１のデータバスＥＤからリードデータを取り込む。
【０１３５】
このように、ＮＡＮＤインタフェースの外部メモリ５０からのデータリードでは、リードイネーブル信号／ＲＥＢがアサートされる度に、リード開始アドレスから連続してデータをリードすることがでる。但し、ページの終端までリードが到達すると、レディ／ビジー信号ＲＤＹ＿ＢＳＹＢが再びＬｏｗレベル（ビジー）を示し、Ｈｉｇｈレベル（レディ）になるまでリードは中断される。
【０１３６】
ここで、期間Ｔｒｄは、リードサイクルの先頭サイクルからリードイネーブル信号／ＲＥＢがアサートされるまでの遅延時間を示す。また、期間Ｔｒｐｗは、リードイネーブル信号／ＲＥＢがアサートされる期間の長さを示す。
【０１３７】
さて、以上のように、本実施の形態では、ＣＰＵ５は、外部メモリインタフェース３に直接外部バスアクセス要求を発行する機能と、ＤＭＡＣ４に対してＤＭＡ転送要求を行う機能と、の両方を備える。従って、離散したアドレスにランダムにデータアクセスを行う場合などは直接外部メモリインタフェース３に外部バスアクセス要求を発行し、データのブロック転送や仮想記憶管理機構が要求するページスワップなどを行う場合にはＤＭＡＣ４にＤＭＡ転送要求を発行することで、外部メモリ５０への効率的なアクセスが可能となる。
【０１３８】
また、本実施の形態では、ＩＰＬ３５、ＣＰＵ５、及びＤＭＡＣ４は、外部メモリインタフェース３に対して外部バスアクセス要求を行うのみであり、データのリード／ライトのための機構は、外部メモリインタフェース３が備えている。従って、異なるタイプのメモリインタフェースをサポートする場合でも、ＩＰＬ３５、ＣＰＵ５、及びＤＭＡＣ４の各々が、複数のメモリインタフェースを備える必要が無い。このため、回路構成の簡略化が可能になり、コストの低減を図ることができる。
【０１３９】
従来のマルチプロセッサにおいても、複数のプロセッサコアが、外部メモリインタフェースを通じて外部バスを共有しているが、データのリード／ライトのための機構は、各プロセッサコアが備えている。従って、ＮＯＲインタフェースとＮＡＮＤインタフェースのように、アクセス手法が全く異なるタイプの外部メモリを接続可能とするためには、プロセッサコアの各々が、複数の異なるメモリインタフェースを備えなければならない。これでは、回路構成が複雑化し、コストの低減を図れない。
【０１４０】
さらに、本実施の形態では、共有のメインＲＡＭ２５に対するアクセスの経路（つまり、メインＲＡＭアクセスアービタ２３）と、機能ユニットの制御のための経路（つまり、Ｉ／Ｏバス２７）と、が分離されているので、機能ユニットに対する制御に起因するメインＲＡＭ２５のバスバンド幅の浪費を防止できる。
【０１４１】
この場合、Ｉ／Ｏバス２７を用いて機能ユニットを制御するのは、プログラム命令を解釈し実行するＣＰＵ５であるため、ソフトウェアにより、動的に、各機能ユニットの制御が可能になる。
【０１４２】
さらに、本実施の形態では、ＣＰＵ５、ＲＰＵ９、及びＳＰＵ１３からの３つのＤＭＡ転送要求を保持する３つのリクエストバッファ１０５，１０９及び１１３並びに４エントリのリクエストキュー４５を備えている。従って、ＤＭＡ転送実行中であっても、ＤＭＡ転送要求を受け付けることができる。特に、ＤＭＡチャンネルが１つしかない場合に有効である。
【０１４３】
さらに、本実施の形態では、外部メモリインタフェース３は、ＣＰＵ５による命令フェッチ要求が１０マイクロ秒以上待たされ、かつ、調停優先順位制御レジスタの設定が「優先順位変更イネーブル」となっている場合、図３（ａ）ではなく図３（ｂ）に示すＥＢＩ優先順位テーブルを参照する。従って、ＣＰＵ５による命令フェッチ要求が、システムに不都合が生じるほど長く待たされることを防止できる。しかも、ＣＰＵ５が調停優先順位制御レジスタにアクセスすることで、１つの優先順位テーブルに固定して調停を行うのか、あるいは、２つの優先順位テーブルを切り替えながら調停を行うのか、を動的に設定できる。
【０１４４】
さらに、本実施の形態によれば、外部バス５１のアドレス空間が、プライマリメモリ領域とセカンダリメモリ領域とに分割されているので、領域ごとに、外部メモリのタイプを設定でき、異なる複数のタイプの外部メモリを接続できる。また、領域ごとに、外部バス５１のデータバス幅を設定可能であるので、データバス幅の異なる複数の外部メモリを接続できる。さらに、領域ごとに、外部メモリに対するアクセスタイミングを設定可能であるので、アクセスタイミングの異なる複数の外部メモリを接続できる。
【０１４５】
さらに、本実施の形態によれば、図４に示すように、プライマリメモリ領域及びセカンダリメモリ領域のそれぞれに対して、メモリタイプレジスタ及びアクセスタイミングレジスタが設けられる。従って、ＣＰＵ５によって、領域ごとに、外部メモリ５０のタイプ、外部バス５１のデータバス幅、及び外部メモリ５０に対するアクセスタイミングを動的に設定できる。また、セカンダリメモリ開始アドレスレジスタを設けているので、ＣＰＵ５によって、領域の境界を動的に設定できる。
【０１４６】
なお、本発明は、上記の実施の形態に限られるものではなく、その要旨を逸脱しない範囲で種々の態様において実施することが可能であり、例えば、以下のような変形も可能である。
【０１４７】
（１）上記では、外部メモリインタフェース３に対して、外部バスアクセス要求ができるのは、ＩＰＬ３５、ＣＰＵ５、及びＤＭＡＣ４だけであったが、より多くの機能ユニットが外部バスアクセス要求を行えるようにすることもできる。
【０１４８】
（２）上記では、ＤＭＡＣ４に対してＤＭＡ転送要求ができるのは、ＣＰＵ５、ＲＰＵ９、及びＳＰＵ１３だけであったが、より多くの機能ユニットあるいはより少ない機能ユニットがＤＭＡ転送要求を行えるようにすることもできる。この場合、ＤＭＡ転送要求が可能な機能ユニットの数と同じ数のリクエストバッファをＤＭＡＣ４に設ける。また、リクエストキュー４５のエントリ数は、４つに限定されない。
【０１４９】
（３）上記では、外部バス５１のアドレス空間を２つの領域に分割したが、３以上の領域に分割することもできる。この場合は、領域の数と同じ数の、メモリタイプレジスタ及びアクセスタイミングレジスタの組を設ける。
【０１５０】
（４）上記では、３つのメモリインタフェース４０〜４２を設けたが、２つ以下でもよいし、４以上設けることもできる。また、メモリインタフェースとして、ＮＯＲインタフェース、ページモード付ＮＯＲインタフェース、及びＮＡＮＤインタフェースをサポートしたが、メモリインタフェースのタイプはこれらに限定されない。
【０１５１】
（５）上記では、ＣＰＵ５だけが、Ｉ／Ｏバス２７を使用し、他の機能ユニットの制御を行ったが、複数の機能ユニットがＩ／Ｏバス２７により他の機能ユニットを制御できるようにすることもできる。
【０１５２】
（６）上記では、ＥＢＩ優先順位テーブルは固定であったが、所定条件の成立によって、複数の異なるＥＢＩ優先順位テーブルを切り替えて使用することもできる。また、２つのＤＭＡ優先順位テーブルを切り替えて使用したが、３以上のＤＭＡ優先順位テーブルを切り替えて使用することもできる。
【符号の説明】
【０１５３】
１…マルチメディアプロセッサ、３…外部メモリインタフェース、４…ＤＭＡＣ、５…ＣＰＵ、９…ＲＰＵ、１３…ＳＰＵ、１７…ＧＥ、１９…ＹＳＵ、２１…外部インタフェースブロック、２３…メインＲＡＭアクセスアービタ、２５…メインＲＡＭ、２７…Ｉ／Ｏバス、４０〜４２…メモリインタフェース（ＭＩＦ）、４４…ＤＭＡリクエストアービタ、４５…リクエストキュー、４６…ＤＭＡ実行ユニット、５１…外部バス、５０…外部メモリ、１０５，１０９，１１３…リクエストバッファ。
【図１】
2011034570.tif 000003
【図２】
2011034570.tif 000004
【図３】
2011034570.tif 000005
【図４】
2011034570.tif 000006
【図５】
2011034570.tif 000007
【図６】
2011034570.tif 000008
【図７】
2011034570.tif 000009
【図８】
2011034570.tif 000010
【図９】
2011034570.tif 000011
【図１０】
2011034570.tif 000012
【図１１】
2011034570.tif 000013