(57)【要約】直接メモリアクセスデータチャネルを形成し、メモリに接続するための第１のインタフェイスを含む直接メモリアクセスコントローラ（１１６）からなる直接メモリアクセスシステム。第２のインタフェイスは、複数のノードを接続するためのものである。プロセッサ（１０６）は、直接メモリアクセスコントローラ（１１６）に接続していて、また、第２のインタフェイスにも接続している。この場合、プロセッサは、複数のノードのプログラマブルな選択可能な１つまたはそれ以上とメモリ（１０４または１０８）との間でデータを転送すべく、直接メモリアクセスデータチャネルを構成する。ある実施形態の場合には、複数のノードは、無線マルチメディア携帯電話で使用するマルチメディアプロセッサプラットフォーム（１００）のディジタル信号プロセッサメモリおよびホストプロセッサメモリである。
2004503855.tif 000002
【特許請求の範囲】
【請求項１】
複数の周辺装置インタフェイスと、第１のメモリと、同第１のメモリと該複数の周辺装置インタフェイスのそれぞれとを接続しているプログラマブル直接メモリアクセスモジュールとを備え、該プログラマブル直接メモリアクセスモジュールは、該第１のメモリと該複数の周辺装置インタフェイスのそれぞれとの間で選択的プログラマブル直接メモリアクセスデータチャネルを構成するデータ転送システム。
【請求項２】
前記プログラマブル直接メモリアクセスモジュールに接続され、かつ前記第１のメモリ接続されている第１のプロセッサを更に備える請求項１記載のデータ転送システム。
【請求項３】
前記プログラマブル直接メモリアクセスモジュールに接続されている第２のメモリであって、同第２のメモリと前記複数の周辺装置インタフェイスのそれぞれとの間で選択的プログラマブル直接メモリアクセスデータチャネルを構成する該プログラマブル直接メモリアクセスモジュールから更になる請求項１記載のデータ転送システム。
【請求項４】
前記プログラマブル直接メモリアクセスモジュールに接続され、かつ前記第２のメモリと接続されている第２のプロセッサを更に備える請求項３記載のデータ転送システム。
【請求項５】
前記選択的プログラマブル直接メモリアクセスデータチャネルが、前記第１のメモリと前記第２のメモリとの間で構成される請求項３記載のデータ転送システム。
【請求項６】
前記プログラマブル直接メモリアクセスモジュールがプログラマブルプロセッサを含む請求項１記載のデータ転送システム。
【請求項７】
前記プログラマブル直接メモリアクセスモジュールが前記プログラマブルプロセッサに接続されている直接メモリアクセスコントローラを更に含み、該プログラマブルプロセッサが、該直接メモリアクセスコントローラの専用直接メモリアクセスデータ転送チャネルを介して、前記第１のメモリと前記複数の周辺装置インタフェイスのそれぞれとの間で選択的プログラマブル直接メモリアクセスデータチャネルを構成する請求項６記載のデータ転送システム。
【請求項８】
前記プログラマブル直接メモリアクセスモジュールが、前記それぞれの選択的プログラマブル直接メモリアクセスデータチャネルによるデータ転送の優先順位を決めるためのプログラマブルスケジューラを備える請求項１記載のデータ転送システム。
【請求項９】
直接メモリアクセスデータチャネルを形成し、かつ、メモリに接続するための第１のインタフェイスを含む直接メモリアクセスコントローラと、
複数のノードに接続されるための第２のインタフェイスと、
該直接メモリアクセスコントローラに接続され、かつ該第２のインタフェイスに接続されているプロセッサと、を備え、該プロセッサが、複数のノードのうちのプログラマブルで選択可能な１つ以上と該メモリとの間でデータを転送するために直接メモリアクセスデータチャネルを構成する直接メモリアクセスシステム。
【請求項１０】
前記複数のノードが、前記複数の周辺装置インタフェイスおよびメモリインタフェイスのうちの１つである請求項９記載のシステム。
【請求項１１】
前記データ転送が所定の優先順位により行われるべく、前記直接メモリアクセスデータチャネルを介した該データ転送に優先順位をつけるためのプロセッサに接続されているプログラマブルスケジューラを更に備える請求項９記載のシステム。
【請求項１２】
直接メモリアクセスデータ転送に対する要求を受信する工程と、
前記要求が指定したノードと直接メモリアクセスインタフェイスとの間に直接メモリアクセスデータ転送チャネルを形成するためのコードを構成する工程と、
該直接メモリアクセスデータ転送チャネルによって該ノードと該直接メモリアクセスインタフェイスとの間でデータを転送する工程とからなる直接メモリアクセスを行う方法。
【請求項１３】
前記受信工程が、直接メモリアクセスデータ転送のための時間設定された要求を受信する工程を含む請求項１２記載の方法。
【請求項１４】
前記直接メモリアクセスデータ転送チャネルを介して転送されるデータに優先順位をつける工程を更に含む請求項１２記載の方法。
【請求項１５】
より高い優先順位の直接メモリアクセスデータ転送が要求された場合に、データの転送を中断する工程を含む請求項１４記載の方法。
【請求項１６】
より高い優先順位の直接メモリアクセスデータ転送が終了したときに、前記中断されたデータの転送を再開する工程を含む請求項１５記載の方法。
【請求項１７】
メモリと、
第１のバス幅を有する第１のバスを介して該メモリに接続されているマルチプレクサと、
第２のバス幅を有する第２のバスを介して該マルチプレクサに接続されているホストプロセッサであって、該第１のバス幅より狭い該第２のバス幅と、
前記ホストプロセッサおよび前記ディスプレイコントローラの双方のバッファとして該メモリを使用すべく、第１のバス幅と同一の第３のバス幅を有する第３のバスを介して前記マルチプレクサに接続されているディスプレイコントローラであって、該ディスプレイコントローラおよび該ホストプロセッサのうちの一方が、他方の機能を制限せずにメモリにアクセスし得る、メモリアクセスシステム。
【請求項１８】
前記第１のバス幅が１２８ビットである請求項１７記載のメモリアクセスシステム。
【請求項１９】
前記第２のバス幅が所定のビット数を有し、該所定のビット数が、８、１６及び３２ビットのいずれかである請求項１７記載のメモリアクセスシステム。
【請求項２０】
前記メモリを直接メモリアクセスノードとして使用することを許容すべく、前記第１のバス幅より狭い第４のバス幅を有する第４のバスを介して前記マルチプレクサに接続するプログラマブル直接メモリアクセスモジュールを更に備える請求項１７記載のメモリアクセスシステム。
【請求項２１】
前記第４のバス幅が所定のビット数を有し、該所定のビット数が８、１６及び３２ビットのいずれかである請求項２０記載のメモリアクセスシステム。
【請求項２２】
前記メモリが、前記ホストプロセッサおよび前記ディスプレイコントローラを含むプロセッサプラットフォーム上に埋設されている請求項１７記載のメモリアクセスシステム。
【請求項２３】
所定の容量を有する動的ランダムアクセスメモリを供給する工程と、
メモリの一部をリフレッシュするときの消費電力を低減するために、その所定の容量より小さい、該動的ランダムアクセスメモリの一部を周期的にリフレッシュする工程と、からなる方法。
【請求項２４】
周囲温度に基づいて、前記動的ランダムアクセスメモリのリフレッシュ頻度を調整する工程と、メモリが該調整したリフレッシュ頻度で前記部分の周期的リフレッシュにより周期的にリフレッシュされる工程と、からなる請求項２３記載の方法。
【請求項２５】
前記メモリ容量はその行列の所定の全数を含み、前記メモリ部分はその行列の所定の全数より少ない前記動的ランダムアクセスメモリの複数の行列からなる請求項２３記載の方法。
【請求項２６】
動的ランダムアクセスメモリを供給する工程と、
周囲温度に基づいて、該動的ランダムアクセスメモリのリフレッシュ頻度を調整する工程と、
より低い温度での消費電力を低減するために、より低い周囲温度ではより少ない頻度でのリフレッシュにより前記動的ランダムアクセスメモリを周期的にリフレッシュする工程と、を含むメモリリフレッシュ方法。
【請求項２７】
前記周期的リフレッシュ工程が、前記メモリ部分がリフレッシュされるときの消費電力を低減するために、前記動的ランダムアクセスメモリの所定の容量よりも少ない一部を周期的にリフレッシュする工程からなる請求項２６記載の方法。
【請求項２８】
前記メモリ容量がその行列の所定の全数を含み、前記メモリ部分がその行列の所定の全数より少ない、前記動的ランダムアクセスメモリの複数の行列からなる請求項２６記載の方法。
【請求項２９】
ホストプロセッサ直接メモリアクセスインタフェイスと、
１つ以上の周辺装置ポートと、
該ホストプロセッサ直接メモリアクセスインタフェイスと該１つ以上の周辺装置ポートとの間でデータ伝送するためのデータバスと、
該ホストプロセッサ直接メモリアクセスインタフェイスと該１つ以上の周辺装置ポートとの間で複数のデータ転送を行うために、前記複数のレジスタからデータを記憶し検索すべく、動作可能なプログラマブルコントローラとのデータ通信を維持するために、前記データバスと通信する複数のレジスタを備えるプログラマブルコントローラとからなるプロセッサ通信システム。
【請求項３０】
第２のプロセッサ直接メモリアクセスインタフェイスを備え、前記プログラマブルコントローラが、前記ホストプロセッサ直接メモリアクセスインタフェイス、該第２のプロセッサ直接メモリアクセスインタフェイス、および前記１つ以上の周辺装置ポートとの間で複数のデータ転送を行うために動作することが可能な請求項２９記載のシステム。
【請求項３１】
前記プログラマブルプロセッサが、前記ホストプロセッサ直接メモリアクセスインタフェイス、前記第２のプロセッサ直接メモリアクセスインタフェイス、および前記１つ以上の周辺装置ポートとの間でデータ転送を行うために、前記複数のレジスタから前記データを記憶し検索することにより形成された前記複数のデータ転送に優先順位をつける請求項３０記載のシステム。
【請求項３２】
前記第２のプロセッサ直接メモリアクセスインタフェイスが、ディジタル信号プロセッサと結合するランダムアクセスメモリへのディジタル信号プロセッサ直接メモリアクセスインタフェイスを備える請求項３０記載のシステム。
【請求項３３】
前記プログラマブルコントローラが、前記ホストプロセッサ直接メモリアクセスインタフェイス、前記ディジタル信号プロセッサ、直接メモリアクセスインタフェイス、および前記１つ以上の周辺装置ポートとの間で複数の実質的な直接メモリアクセスチャネルを形成するために動作することが可能な請求項３２記載のシステム。
【請求項３４】
前記ホストプロセッサと共に使用するための埋設動的ランダムアクセスメモリを備える請求項３３記載のシステム。
【請求項３５】
温度測定をするための温度センサと、
該温度測定に基づいて、温度依存カウント値を供給するために該温度センサに接続しているメモリと、
動的ランダムアクセスメモリの温度依存リフレッシュサイクルを決定するために使用する温度依存カウント値を記憶するための前記メモリに接続しているカウントレジスタと、を備えるメモリリフレッシュシステム。
【請求項３６】
前記カウントレジスタに接続しているコンパレータと、
同コンパレータに接続しているカウンタとを更に備え、該カウンタが該カウントレジスタ内の温度依存カウント値と一致したときに、該コンパレータが信号を出力する請求項３５記載のシステム。
【請求項３７】
前記コンパレータに接続さｓれ、かつ前記コンパレータからの信号出力に応じてリフレッシュイネーブル信号を出力し、前記動的ランダムアクセスメモリに前記温度依存リフレッシュサイクルを供給するリフレッシュイネーブルユニットからなる請求項３６記載のシステム。
【発明の詳細な説明】
【０００１】
（発明の背景）
本発明は、ディジタル電話等の無線携帯マルチメディア装置に関し、特に無線携帯マルチメディア装置のプロセッサプラットフォームに関する。さらに、本発明は、特にプロセッサプラットフォームの複数のプロセッサと複数の周辺装置との間で効率的なデータ転送を行い得る、サイズが最小で、消費電力が最低の上記プロセッサプラットフォームに関する。
【０００２】
ディジタルセルラシステムに対する新しい規格は、従来の回線交換の音声およびデータチャネルの他に、高速パケットデータネットワーク機能を含む。同時に、一般大衆の間に、パーソナル通信、情報、電子商取引、および娯楽サービスを提供するインターネットの使用が普及している。次世代のセルラシステムは、音声、データおよび個人情報管理機能を有する無線用製品、すなわち、マルチメディア装置を市販する機会を提供する。これらの製品は大きなマーケットシェアを獲得する可能性を有する携帯情報装置になるものと思われる。
【０００３】
このようなマルチメディア装置の場合、特に、ディジタルセルラフォンの場合には、プロセッサプラットフォームは、２つの主なプロセッサコア、すなわち、無線インタフェイスに接続しているディジタル信号プロセッサ（ＤＳＰ）コア、および上記装置を作動し、いくつかの周辺装置からのデータの移動を調整するためのホストプロセッサコアを含む。このような装置は、周辺装置として、ユニバーサルシリアルバス（ＵＳＢ）、ＩｒＤＡ規格をサポートするための任意のモードを含む汎用非同期式レシーバトランスミッタ（ＵＡＲＴ）、同期シリアルインタフェイス（ＳＳＩ）、マルチメディアカード（ＭＭＣ）、およびブルートゥース規格をサポートするブルートゥースインタフェイスを含む。
【０００４】
種々の周辺装置およびホストプロセッサのメモリへ／からデータを移動し得ることが望ましいし、また、種々の周辺装置およびＤＳＰのメモリへ／からデータを移動し得ることが望ましいし、さらに、ＤＳＰのメモリおよびホストプロセッサのメモリへ／からデータを移動し得ることが望ましい。直接メモリアクセス（ＤＭＡ）のような、当業者にとって周知の技術により、ホストプロセッサまたはＤＳＰを使用しなくても、上記のデータの転送は有利に行われる。それ故、例えば、特定の周辺装置からホストプロセッサメモリにデータの転送を起動するホストプロセッサの代わりに、ＤＭＡコントローラがデータの転送を行い、ホストプロセッサは、より重要な機能に集中することが可能である。都合のよいことに、ＤＭＡ技術は、ホストプロセッサおよびＤＳＰを単純なデータ転送の面倒なタスクから解放し、装置内でプロセッサをもっと高速に、もっと効率的に使用し得る。
【０００５】
しかし、ＤＭＡコントローラは、２つのノード間に、結線による一方向データチャネルを形成する。ＤＭＡコントローラは、特定の周辺装置と、データの転送を行うタスクから解放されるプロセッサ、およびそのメモリの両方にアクセスするシステムバスとを接続している。ＤＭＡコントローラは、直接メモリアクセスを行うためのハードウェアを提供する。各データチャネルは一方向チャネルなので、２つのノード間で二方向データ転送を行うには、２つの別々のＤＭＡデータチャネルが必要になる。さらに、各データチャネルはハードウェア内で形成されるので、いったん形成されると、データチャネルを異なる方向に、異なるノードへ／からデータを転送すべく再構成することは不可能である。
【０００６】
それ故、複数のプロセッサおよび複数の周辺装置に対して直接メモリアクセスするためには、別々の一方向データチャネルを結線で接続しなければならない。都合の悪いことに、携帯マルチメディア装置の場合には、多数の周辺装置を使用している。それ故、可能なＤＭＡ接続のすべてを結線で接続するには、多くのＤＭＡコントローラが必要になる。例えば、周辺装置と各メモリ間のデータ転送からホストプロセッサおよびＤＳＰをうまく解放するには、各ＤＭＡコントローラが必要な一方向データチャネルを形成すべく、各周辺装置とホストプロセッサメモリおよびＤＳＰメモリとの間のハードウェア内にＤＭＡコントローラを設置しなければならない。
【０００７】
都合の悪いことに、小型の携帯装置の場合には、多数のＤＭＡコントローラを設置すると、プロセッサプラットフォーム上の貴重なスペースが占有されることになる。すなわち、必要とするハードウェアＤＭＡコントローラが多くなればなるほど、プロセッサプラットフォーム上にもっと多くのトランジスタが必要になり、ＤＭＡハードウェアにより、プロセッサプラットフォーム上のより多くのスペースが使用されることになる。そのため、多様なすべてのデータ転送経路用の従来のＤＭＡハードウェアを使用しないで、複数のプロセッサが効率的に動作すべくＤＭＡ機能を実行するプロセッサプラットフォームの開発が待望されている。
【０００８】
小型の携帯マルチメディアプロセッサ用のプロセッサプラットフォームについてのもう１つの問題は、消費電力を最小にすることである。電力の節減を考えないプロセッサプラットフォームを使用すると、バッテリーの寿命が不当に短くなるが、このことは携帯装置にとっては重要なことである。何故なら、それにより、バッテリーの充電を頻繁に行わなければならないからである。さらに、大容量のランダムアクセスメモリ（ＲＡＭ）を必要とするマルチメディア装置の場合には、静的ＲＡＭ（ＳＲＡＭ）ではなく、動的ＲＡＭ（ＤＲＡＭ）を使用することが望ましい。何故なら、ダイサイズ対アレイ密度の点では、ＤＲＡＭはＳＲＡＭより遥かにコストが安いからである。
【０００９】
さらに、プロセッサプラットフォームが必要とする全スペースを低減するために、プロセッサプラットフォーム上に埋設したＤＲＡＭである、埋設型ＤＲＡＭ（ｅＤＲＡＭ）を使用してもよい。しかし、ＳＲＡＭと比較すると、ＤＲＡＭおよびｅＤＲＡＭいずれの場合も、その中に含まれているデータを確実にセーブするためには、周期的にリフレッシュしなければならない。通常、リフレッシュコントローラにより行われるリフレッシュプロセスは、確実にデータを記憶しておくために貴重な電力を消費する。そのため、できるだけ電力を消費しない方法でＤＲＡＭをリフレッシュする方法の開発が待望されている。
【００１０】
さらに、電話のような上記携帯マルチメディア装置の場合には、個人用携帯型情報端末（ＰＤＡ）で使用されているような液晶ディスプレイ（ＬＣＤ）は、例えば、ユーザが、容易にウェブページを見得るように構成される。通常のＬＣＤの場合には、データをビデオバッファからディスプレイ駆動回路に移動しなければならない。そのため、大容量のＬＣＤバスは、幅が８、１６または３２ビットしかないメモリ（例えば、ｅＤＲＡＭ）から、８、１６または３２ビットバスからデータを送受信しなければならないという問題が起こってくる。都合の悪いことに、ＬＣＤコントローラ、および他の周辺装置およびＤＭＡ技術用のシステムメモリにアクセスするために必要な、他の周辺装置および装置に対するビデオバッファとしてシステムメモリを使用するＬＣＤの画像プロセッサは、多くの時間を必要とし、そのため、システムメモリが、これらの他の周辺装置および装置にアクセスするのが難しくなる。それ故、ビデオ画像がＬＣＤ上に表示される場合、システムメモリ（例えば、ｅＤＲＡＭ）は、主として、ビデオバッファとして、またシステムＲＡＭとして機能する。他のＲＡＭ（例えば、他のｅＤＲＡＭ）は、ビデオバッファとして機能するように実行し得る。しかし、都合の悪いことに、このような追加のメモリを使用すると、トランジスタの数が増加し、そのため、プロセッサプラットフォームのサイズが大きくなる。ＬＣＤコントローラを適当にサポートし、同時に、システムＲＡＭとして、またＤＭＡデータ転送用に使用し得る効率的なメモリの開発が待望されている。
【００１１】
本発明は、上記および他のニーズを有利に解決する。
添付の図面および付録ＡおよびＢを参照しながら、本発明の以下のさらに詳細な説明を読めば、本発明の上記および他の態様、機能および利点をより明確に理解し得るだろう。
【００１２】
対応する参照番号は、数枚の全図面を通して対応する構成部品を示す。
（好適な実施形態の詳細な説明）
本発明を実行するための現在考えられる最善の方法を以下に説明するが、本発明の限定を意図するものではなく、単に本発明の一般原理を説明するためのものである。本発明の範囲は、特許請求の範囲で決定される。
【００１３】
本発明は、複数のプロセッサコア、複数の周辺装置、および複数のプロセッサコアメモリと、それに取り付けられている種々の周辺装置との間でプログラマブル選択可能データ転送をするための、プログラマブル直接メモリアクセス機能を実行するプロセッサ間通信モジュールを含む無線マルチメディアプロセッサプラットフォームを提供することによって、上記のニーズおよび他のニーズを有利に解決する。さらに、プロセッサプラットフォームは、プロセッサプラットフォームのサイズおよび消費電力を最小にし、またホストプロセッサメモリにアクセスするために、他の装置の機能を制限しないで液晶ディスプレイをサポートすべく、ホストプロセッサメモリからのビデオバッファを行い得る機能を含む。
【００１４】
マルチメディアプロセッサプラットフォームの概要
最初に、図１について説明すると、この図は、３つのプロセッサコア、すなわち、ディジタル信号プロセッサ（ＤＳＰ）、ホストプロセッサおよびプロセッサ間通信モジュール（ＩＰＣＭ）内のＲＩＳＣプロセッサコアを持つ無線マルチメディアプロセッサプラットフォームの高レベルのブロック図である。この場合、プロセッサ間通信モジュールは、プログラマブル直接メモリアクセスデータ転送を実行する。この図の場合、マルチメディアプロセッサプラットフォーム１００は、ディジタル信号プロセッサ１０２（ＤＳＰ１０２と呼ぶ）、ランダムアクセスメモリ１０４（ＲＡＭ、ＤＳＰメモリまたはＤＳＰ　ＲＡＭと呼ぶ）、ホストプロセッサ１０６（ホスト１０６またはＭＣｏｒｅと呼ぶ）、埋設型動的ランダムアクセスメモリ１０８（ｅＤＲＡＭ１０８またはホストプロセッサメモリと呼ぶ）、ユニバーサルシリアルバス１１０（ＵＳＢ１１０と呼ぶ）、ＩｒＤＡ規格をサポートするオプションとしてのモードを持つ汎用非同期式レシーバトランスミッタ１１２（ＵＡＲＴ／ＩｒＤＡ１１２と呼ぶこともある）、マルチメディアカード１１４（ＭＭＣ１１４と呼ぶ）、およびプロセッサ間通信モジュール１１６（ＩＰＣＭ１１６と呼ぶ）を含む。
【００１５】
プロセッサプラットフォーム１００、または単にプロセッサ１００とも呼ぶマルチメディアプロセッサプラットフォーム１００は、１つの集積回路または３つのプロセッサコア、すなわち、ＤＳＰ１０２、ホストプロセッサ１０６、およびＩＰＣＭ１１６内のＲＩＳＣプロセッサコアを含むチップの形をしている。プロセッサ１００は、「チップ上のシステム」設計（システムオンチップ「ＳＯＣ」と呼ぶ）になっている。無線携帯マルチメディア装置の場合には、プロセッサ１００の構成部品をすべて１つのチップ上に装着すると有利である。何故なら、携帯用の装置はサイズに制限があるのに、個々のチップ上の個々のプロセッサを結線で接続しなければならないからであり、その結果、チップ間の配線により損失が生じるからである。しかし、本発明は、１つのチップ上に１つのシステム設計という設計方法に限定されないで、３つのプロセッサコア、すなわち、ＤＳＰ１０２、ホストプロセッサ１０６、およびＩＰＣＭ１１６のＲＩＳＣプロセッサコアを、必要ならば、他の装置内の別のチップ上に設置することも可能である。
【００１６】
動作中、ＩＰＣＭ１１６は、ＤＳＰ部分（すなわち、ＤＳＰ１０２およびＲＡＭ１０４）、ホスト部分（すなわち、ホストプロセッサ１０６およびｅＤＲＡＭ１０８）、および周辺装置（すなわち、ＵＳＢ１１０、ＵＡＲＴ／ＩｒＤＡ１１２、およびＭＭＣ１１４）の３つすべてを一緒に接続する。都合のよいことに、ＩＰＣＭ１１６は、（１）特定の周辺装置から、ＤＳＰ　ＲＡＭ１０４またはｅＤＲＡＭ１０８に、（２）ＤＳＰ　ＲＡＭ１０４またはｅＤＲＡＭ１０８から特定の周辺装置に、（３）ＤＳＰ　ＲＡＭ１０４とｅＤＲＡＭ１０８との間で直接メモリアクセスデータ転送（ＤＭＡ）を行うことが可能なプログラマブル直接メモリアクセス（ＤＭＡ）データチャネルを提供する。これらのＤＭＡデータ転送は、（所定の時間に発生するように）時間調整し得るし、（要求または命令により発生するように）イベント調整することも可能である。ＩＰＣＭ１１６は、プログラマブル選択可能なＤＭＡデータチャネルを通して直接メモリアクセス（ＤＭＡ）データ転送し得る縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサコアを有する。一例として、例えば３２のプログラム可能なデータチャネルを形成するために、多数のハードウェアＤＭＡコントローラの代わりに、ＩＰＣＭ１１６を使用し得る。この場合、上記３つの方向のうちの任意の方向にデータを転送すべく、各データチャネルをプログラムすることも可能である。等価のハードウェアＤＭＡを実行するには、２＊ｎ＊（ｃ＋１）の個々のＤＭＡデータハードウェアコントローラが必要である。この場合、数字２は、２つの方向のデータチャネルであり、ｎは、データチャネルの数であり、ｃは、ＩＰＣＭ１１６を使用し得るプロセッサの数である。すなわち、ｃ＋１は、データ経路の数である。この図の実施形態の場合には、ｎ＝３２、ｃ＝２（すなわち、ＤＳＰ１０２およびホストプロセッサ１０６）であり、そのため、ｃ＋１＝３（すなわち、データ経路の数、例えば、メモリへの周辺装置、周辺装置へのメモリおよびメモリへのメモリ）であり、１９２の個々のハードウェアＤＭＡコントローラの代わりにＩＰＣＭ１１６が使用されたことになる。都合の悪いことに、この多数のＤＭＡコントローラは、費用対効果が低く、プロセッサの使用可能なスペースの大部分を占有してしまう。それ故、ＩＰＣＭ１１６は、多数のＤＭＡデータチャネルまたは異なるノードを一緒に接続するために、それぞれ構成することが可能で、またはプログラム可能なデータ経路を提供する。それ故、１つのノードは、通常、ＲＡＭ１０４、ｅＤＲＡＭ１０８、または周辺装置の中の１つである。それ故、ＵＳＢ１１０からｅＤＲＡＭ１０８に、直接メモリアクセスデータ転送すべく、１本のＤＭＡデータチャネルをプログラムすることが可能で、その後にＤＳＰ　ＲＡＭ１０４からＭＭＣ１１４に、直接メモリアクセスデータ転送を行うべく、同じデータチャネルを再プログラムまたは再構成することが可能である。
【００１７】
この点が、２つの異なるノード間で後で再構成し得ない、あるノードから他のノードへプログラムし得ない、一方向のワイヤで結線したデータチャネルを提供するハードウェアＤＭＡコントローラとは異なる点である。都合のよいことに、チップまたはプロセッサ１００のサイズが重要であり、直接メモリアクセスのために多数のＤＭＡコントローラを必要とする多数の周辺装置を使用する無線マルチメディア用途の場合には、ＩＰＣＭ１１６は、必要に応じて変更することが可能なデータチャネルが形成されるプログラム可能ＤＭＡ機能を提供する。それ故、多くのＤＭＡコントローラを必要としないし、多くのハードウェアＤＭＡコントローラを実行した場合と比較すると、プロセッサ１００の全体のサイズを小さくすることが可能である。
【００１８】
都合のよいことに、ＩＰＣＭ１１６の機能により、ホストプロセッサ１０６およびＤＳＰ１０４は、データ転送を行うために、タスクの実行を停止しないですむ。ＩＰＣＭ１１６は、ＤＳＰ１０２およびホストプロセッサ１０６の両方を最も効率的に動作させるべく、これらの転送を行う。すなわち、ＤＳＰ１０２およびホストプロセッサ１０６をその最適な速度で動作させ、簡単なデータ転送の速度を下げないで、設計目的の重要なタスクを行うことが可能である。
【００１９】
図２について説明すると、この図は、図１の無線マルチメディアプロセッサプラットフォームのある実施形態の詳細なブロック図である。この図の場合には、マルチメディアプロセッサプラットフォーム１００は、ディジタル信号プロセッサ１０２（ＤＳＰ１０２）、ＤＳＰ　ＲＡＭ１０４、ＤＳＰ周辺装置インタフェイス２０２、ホストプロセッサ１０６（呼出プロセッサ１０６と呼ぶ）、埋設型ＤＲＡＭ１０８（ｅＤＲＡＭ１０８）、画像処理レジスタ２０６および構成レジスタ２０８を含むＬＣＤコントローラ２０４（もっと一般的には、ディスプレイコントローラとも呼ばれる）、およびホスト周辺装置インタフェイス２１０を含む。プロセッサプラットフォーム１００は、また、下記の周辺装置２３０、すなわち、ＵＳＢ１１０、ＵＡＲＴ／ＩｒＤＡ１１２、同期シリアルインタフェイス２１２（ＳＳＩ２１２と呼ぶ）、ＭＭＣ１１４、およびブルートゥースインタフェイス２１４を含む。また、ＩＰＣＭ１１６、イベントタイマ２１６、データ経路選択２１８（データ経路選択ユニット２１８と呼ぶ）、ｅＤＲＡＭリフレッシュコントローラ２２０（リフレッシュコントローラ２２０と呼ぶ）、およびバスインタフェイス２２２も含む。
【００２０】
さらに、下記のバス、すなわち、リフレッシュコントローラ２２０に接続しているクロックバス２２４（「ｃ」バス２２４と呼ぶこと）；ＤＳＰ１０２と、ＤＳＰ　ＲＡＭ１０４と、ＤＳＰ周辺装置２０２とをＩＰＣＭ１１６に接続しているＤＳＰシステムバス２２６（「ｄ」バス２２６と呼ぶ）；周辺装置２３０をイベントタイマ２１６およびＩＰＣＭ１１６に接続しているイベントバス２２８（「ｅ」バス２２８と呼ぶこと）；ホストプロセッサを周辺装置２３０および２１０と、ＬＣＤコントローラ２０４と、バスインタフェイス２２２と、データ経路選択２１８と、リフレッシュコントローラ２２０と、ＩＰＣＭ１１６とに接続しているホストシステムバス２３２（「ｈ」バス２３２と呼ぶ）；ＩＰＣＭ１１６を周辺装置２３０に接続しているＩＰＣＭバス２３４（「ｉ」バス２３４と呼ぶ）；データ経路選択２１８をｅＤＲＡＭ１０８に接続しているメモリバス２３６（「ｍ」バス２３６と呼ぶ）；画像処理２０６をデータ経路選択２１８に接続しているＬＣＤバス２３８（「ｐ」バス２３８と呼ぶ）；リフレッシュコントローラ２２０をデータ経路選択２１８に接続しているリフレッシュバス２４０（「ｒ」バスと呼ぶ）；バスインタフェイスを、例えば、外部メモリ２４４に接続している外部システムバス２４２（「ｓ」バスと呼ぶ）；およびＩＰＣＭ１１６をデータ経路選択２１８に接続している転送バス２４６（「ｔ」バス２４６と呼ぶ）も含む。
【００２１】
図２は、また、プロセッサプラットフォーム１００の一部ではなく、ＤＳＰ周辺装置インタフェイス２０２に接続している無線ハードウェア２４８、画像処理２０６に接続しているＬＣＤパネル２５０、バスインタフェイス２２２に接続している外部メモリ２４４、およびリフレッシュコントローラ２２０に接続しているクロック入力２５２も示す。
【００２２】
プロセッサプラットフォーム１００は、３つのプロセッサコア、すなわち、ＤＳＰ１０２、ホストプロセッサ１０６、およびＩＰＣＭ１１６に埋設されているＲＩＳＣプロセッサコアを含む。都合のよいことに、この実施形態の場合には、プロセッサプラットフォーム１００は、１つのチップ上に１つのシステムの形で実行されている。しかし、本発明の多くの機能は、１つのチップ上に集積された１つのシステムという設計に限定されない。プロセッサプラットフォーム１００のいくつかの構成部品について以下に簡単に説明する。
【００２３】
当業者であれば周知のように、ＤＳＰ１０２は、ＤＳＰシステムバス２２６を介して、例えばＤＳＰ　ＲＡＭ１０４、およびＤＳＰ周辺装置インタフェイス２０２等のシステムメモリに対して、インタフェイスとして機能する。ＤＳＰ　ＲＡＭ１０４は、ＤＳＰプログラム領域およびデータ記憶領域を含む。ＤＳＰ周辺装置インタフェイス２０２は、セルラ無線通信を行うために、ＤＳＰコア（すなわち、モデム）を無線ハードウェア２４８にインタフェイスする働きをする。これらの構成部品は、当業者にとって周知のもので、通常、セルラフォンで使用される。
【００２４】
ホストプロセッサ１０６は、当業者であれば周知の汎用縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサ、または複合命令セットコンピュータ（ＣＩＳＣ）プロセッサである。ＬＣＤコントローラ２０４は、例えば、ｅＤＲＡＭ１０８メモリアレイのような、メモリ内に含まれている２進ビット画像から画像を外部ＬＣＤパネル２５０にレンダリングすべく構成されているディジタルロジックを含むモジュールである。ホスト周辺装置インタフェイス２１０は、ディジタルロジックを含み、ホストプロセッサ１０６により操作される周辺装置として構成されている１つまたはそれ以上のモジュールを含む。このような周辺装置インタフェイスの例としては、キーボードインタフェイス、汎用タイマ、および汎用Ｉ／Ｏポート等がある。
【００２５】
マルチメディア周辺装置２３０も内蔵されている。ＵＳＢ１１０は、ユニバーサルシリアルバスとして周知のオープン規格の媒体アクセス層を実行する周辺装置として構成されている論理ブロックである。このモジュールは、２つのインタフェイスポート、すなわち、ｈバス２３２を介して、構成管理および制御を目的とするホストプロセッサ１０６に対してインタフェイスとして機能するポート、及び、ｉバス２２６を介して、外部シリアルインタフェイスへ／からデータを送るために使用するＩＰＣＭ１１６に対してインタフェイスとして機能するデータポートとで構成されている。
【００２６】
ＩｒＤＡ／ＵＡＲＴ１１２は、当業者に周知の、ＩｒＤＡ規格をサポートする任意のモードを有する汎用非同期の送受信機として必要な機能を実行する周辺装置として構成されている論理ブロックである。ＩｒＤＡ／ＵＡＲＴ１１２は、２つのインタフェイスポート、すなわち、ｈバス２３２を介して、構成管理および制御を目的とするホストプロセッサ１０６に対してインタフェイスとして機能するポート及び、ｉバス２３６を介して外部シリアルインタフェイスへ／からデータを送るために使用するＩＰＣＭ１１６に対してインタフェイスとして機能するデータポートとで構成されている。
【００２７】
ＳＳＩ２１２は、当業者に周知の、同期シリアルインタフェイスとして必要な機能を実行する周辺装置として構成されている論理ブロックである。このモジュールは、２つのインタフェイスポート、すなわち、ｈバス２３２を介して、構成管理を目的とするホストプロセッサ１０６に対してインタフェイスとして機能するポート及び、ｉバス２３６を介して、外部シリアルインタフェイスへ／からデータを送るために使用するＩＰＣＭ１１６に対してインタフェイスとして機能するデータポートとで構成されている。
【００２８】
ＭＭＣ１１４は、マルチメディアカードに接続していて、このカードと一緒に動作すべく設計されているディジタルインタフェイスである。ＭＭＣ１１４は、２つのインタフェイスポート、すなわち、ｈバス２３２を介して、構成管理を目的とするホストプロセッサ１０６に対してインタフェイスとして機能するポート及び、ｉバス２３６を介して、外部マルチメディアカードへ／からデータを送るために使用するＩＰＣＭ１１６に対してインタフェイスとして機能するデータポートとで構成されている。
【００２９】
ブルートゥースインタフェイス２１４は、ブルートゥースオープン規格をサポートするために設計されたディジタルインタフェイスである。ブルートゥースインタフェイス２１４は２つのインタフェイスポート、すなわち、ｈバス２３２を介して、構成管理を目的とするホストプロセッサ１０６に対してインタフェイスとして機能するポート及び、ｉバス２３６を介して、外部ブルートゥース適合無線回路へ／からデータを送るために使用するＩＰＣＭ１１６に対してインタフェイスとして機能するデータポートとで構成されている。
【００３０】
イベントタイマ２１６は、ｅバス２２８を介してＩＰＣＭ１１６に接続しており、特定の状態が表示された場合にある信号を発生するために、所定のそれぞれの状態を検出し得る比較ロジックに接続している、「ｎ」個の状態を持つ２進カウンタである。上記カウンタは、正確なクロックソースによりクロック制御される。ある実施形態の場合には、イベントタイマ２１６は、所与の時点で３２までのイベントを処理可能である。ある実施形態の場合には、イベントタイマ２１６は、例えば、一定の間隔で、ＩＰＣＭ１１６にプログラムしたイベント、または直接メモリアクセスデータ転送を送るために使用し得る。
【００３１】
ＩＰＣＭ１１６は、ＤＳＰ１０２プロセッサおよびＵＳＢ１１０、ＩＲＤＡ／ＵＡＲＴ１１２、ブルートゥースインタフェイス２１４およびＭＭＣ１１４等のＩ／Ｏ周辺装置２３０を使用して、プロセッサ間および直列Ｉ／Ｏ通信を行うべく設計されている。ＩＰＣＭ１１６は、ホストプロセッサ１０６またはＤＳＰ１０２により、Ｉ／Ｏ周辺装置へ／からプログラマブル直接メモリアクセス（ＤＭＡ）データ転送を行い得るために、戦略上アーキテクチャ内に配置されている。さらに、ＩＰＣＭ１１６は、ＤＳＰとホスト自身との間のデータ転送をサポートする。それ故、都合のよいことに、ＩＰＣＭ１１６は、データ転送の際、ＤＳＰ１０２またはホストプロセッサ１０６を使用しないでも、データをメモリに転送するためのプログラマブルＤＭＡとして機能する。
【００３２】
ＩＰＣＭ１１６内には、ＤＭＡ機能を行うべくプログラムされるプログラマブルＲＩＳＣコアが位置する。ＩＰＣＭ１１６の内部動作のより詳細な説明は、図３で行う。プログラムし得ない解決法（例えばハードウェアに基づく）と比較して、この方法はいくつかの利点を持つ。ＩＰＣＭ１１６のプログラマブルＤＭＡ機能は多くの利点を有する。第一に、この機能はＲＩＳＣコアを種々のタスクを実行すべくプログラムし得るので、動的ルーチングを許容する。プログラム制御の下では、ある実施形態の場合には、ＩＰＣＭ１１６は、それぞれが、３つの方向のいずれかの方向に構成し得る、３２までの同時ＤＭＡチャネルを構成することが可能である。ＤＭＡデータ転送は、これら３２の各ＤＭＡデータチャネルを介して行われる。例えば、各データチャネルは、（１）周辺装置２３０からメモリ（例えば、ＤＳＰ　ＲＡＭ１０４またはｅＤＲＡＭ１０８）へ、（２）メモリ（例えば、ＤＳＰ　ＲＡＭ１０４またはｅＤＲＡＭ１０８）から周辺装置２３０へ、または（３）メモリ（例えば、ＤＳＰ　ＲＡＭ１０４またはｅＤＲＡＭ１０８）から、メモリ（例えば、他のｅＤＲＡＭ１０８またはＤＳＰ　ＲＡＭ１０４）へ、ＤＭＡデータ転送のためのＤＭＡデータチャネルとして構成することが可能である。都合のよいことに、これら３２のプログラムされたＤ各ＭＡデータチャネルは、後で、２つの異なるノード間でＤＭＡデータ転送すべく再プログラム可能である。
【００３３】
さらに、ＩＰＣＭ１１６は、もっと狭い領域内にもっと多くの機能を実行することを許容する。何故なら、種々のノード、すなわち、ＤＳＰ　ＲＡＭ１０４、ｅＤＲＡＭ１０８の間、および種々のＩ／Ｏ周辺装置２３０の間の多くの個々のワイヤで接続しているＤＭＡコントローラの代わりに、ＩＰＣＭ１１６が使用されているからである。ダイ上で必要なゲートまたはトランジスタが大幅に低減されていることを示している。携帯マルチメディア用途の場合には、これはプロセッサのサイズを最小にするために重要である。ＤＭＡチャネルの通常のゲートの数は、１本のチャネル当り約３，０００である。この実施形態の場合には、７つ以上のハードウェアＤＭＡチャネルが必要な場合には、ＩＰＣＭ１１６を使用すると、スペースを節減し得る利点がある。都合のよいことに、この実施形態の場合には、ＩＰＣＭ１１６は、（上記のように）約６つの実際のハードウェアＤＭＡチャネルの領域内の１９２本の個々のＤＭＡチャネルとして機能する。
【００３４】
さらに、ＩＰＣＭ１１６は、柔軟で、サイズを種々に調整し得る。この考えは、次世代製品の改善に役に立つ。この柔軟なデータルーチング機能を、ハードウェアをベースとする加速装置等の基本的アーキテクチャに追加可能である。ＩＰＣＭ１１６のＲＩＳＣコアの改善としては、この考えを将来のニーズに適合させ得るようにに、レジスタおよび新しい命令の追加等がある。
【００３５】
また、ＩＰＣＭ１１６のプログラマブルＲＩＳＣプロセッサコアは、定義すべき共通のアプリケーションプログラムインタフェイス（ＡＰＩ）を提供する。何故なら、プログラマブルＲＩＳＣコアは、ホストメモリ（すなわち、ｅＤＲＡＭ１０８）内にマッピングされる仮想制御レジスタを使用しているからである。将来の世代において、ＩＰＣＭ１１６が改善された場合に、ＡＰＩは何らの影響も受けない。この機能により、ソフトウェアの再利用性が増大する。
【００３６】
更なる機能は、ＩＰＣＭ１１６が動作していない時には、スリープモードになる等の便利な電力管理機能を備えていることである。バッテリーの寿命が重要な問題である携帯用途の場合にはこのことは重要である。
【００３７】
ＩＰＣＭの更に別の機能は、当業者に周知の、リトルエンディアン（ｌｉｔｔｌｅ‐Ｅｎｄｉａｎ）フォーマットまたはビッグエンディアン（ｂｉｇ‐Ｅｎｄｉａｎ）フォーマットにより、メモリ（例えば、ＤＳＰ　ＲＡＭ１０４またはｅＤＲＡＭ１０８）へ／から、ＤＭＡデータ転送をし得ることである。この機能により、ＩＰＣＭ１１６は、どちらかのフォーマットにより構成された多様なタイプのプロセッサと通信可能である。例えば、リットルエンディアンフォーマット用に構成されたＤＳＰ、またはビッグエンディアンフォーマット用に構成されたＤＳＰは、ＩＰＣＭ１１６に対してインタフェイスとして機能し得る。
【００３８】
プロセッサプラットフォーム１００のもう１つの特徴は、全システムが１つのチップ上で実行されるので、ホストプロセッサ１０６のＲＡＭが、当業者に周知の、ＤＲＡＭタイプのビットセルから構成されており、埋設型ＤＲＡＭまたはｅＤＲＡＭ１０８と呼ばれるオンチップメモリアレイであることである。このアレイは、全部で６７，１０８，８４６ビットセル（６４メガビット）に対して、それぞれ１２８ビットの６５５３６語（６４キロ語）として構成されている。ｅＤＲＡＭ１０８は、周期的にリフレッシュしなければならないが、この機能はリフレッシュコントローラ２２０により行われる。ｅＤＲＡＭ１０８の１２８ビット幅は、以下にさらに詳細説明するように、ＬＣＤコントローラ２０４用に最適化されている。それ故、ｅＤＲＡＭ１０８は、ホストプロセッサメモリとして、また液晶ディスプレイパネル２５０用のオンチップビデオバッファとして機能する。都合のよいことに、ｅＤＲＡＭのこの幅により、液晶ディスプレイコントローラ２０４が使用するアクセスサイクルの数が低減し、それにより、ホストプロセッサ１０６およびＩＰＣＭ１１６が使用可能なアクセスサイクルの数が増大する。
【００３９】
バスインタフェイス２２２は、当業者に周知の、メモリコントローラとして機能すべ区構成されたディジタルロジックを含むモジュールである。このモジュールは、ｓバス２４２を介して、プロセッサプラットフォーム１００に対して、インタフェイスとして機能する外部メモリ２４４をサポートする。外部メモリ２４４は、ＳＲＡＭ、ＥＰＲＯＭ、ＦＬＡＳＨおよびＤＲＡＭ等の多数の個々のメモリ素子を含む。外部メモリ２４４には、ホストプロセッサ１０６により直接アクセス可能で、またはＩＰＣＭ１１６を介してＤＳＰ１０２により間接的にアクセス可能である。このことは有利である。何故なら、この機能により、ホストプロセッサ１０６および／またはＤＳＰ１０２は、これらプロセッサの各メモリ内に記憶するには大きすぎるアプリケーションをアップロードし実行し得るからである。例えば、ＤＳＰ１０２は、外部メモリ２４４が記憶している音声認識プログラムをアップロードし、実行し得る。さらに、バスインタフェイス２２２により、ホストプロセッサ１０６、ＩＰＣＭ１１６およびＤＳＰ１０２の間で、同時処理動作を行い、それ故、例えば、マルチメディア電話を実行している１つの集積回路上で、複数の命令ストリーム、複数のデータストリーム（すなわち、ＭＩＭＤ）を実行し得る。
【００４０】
ｅＤＲＡＭ１０８は、ホストシステムバス、すなわちｈバス２３２の一部ではないそれ自身のバス、すなわち、ｍバス２３６を有しているので、ホストプロセッサ１０６はバスインタフェイス２２２を介して、外部メモリ２４４にアクセス可能であり、一方、同時にＩＰＣＭ１１６は、ｅＤＲＡＭ１０８にアクセスし得る。
【００４１】
データ経路選択２１８は、調停ロジックおよびｅＤＲＡＭ１０８のデータ経路を、アレイにアクセスを要求し得る４つのエンティティの中の１つに対して、インタフェイスとして機能するように設計されている、予めプログラムされたデータマルチプレクサを含む。ｅＤＲＡＭ１０８へのアクセスを要求し得る４つのエンティティは、３２ビットのアクセス幅を持つホストプロセッサ１０６、３２ビットのアクセス幅を持つＩＰＣＭ１１６、１２８ビットのアクセス幅を持つＬＣＤコントローラ２０４、および当業者に周知の、４０９６行に対するリフレッシュをスチールする、１６ｍｓの周期的サイクルを行うためのリフレッシュコントローラ２２０である。図の実施形態の場合には、各要求者は独自のデータ経路バス幅を有する。例えばｐバス２３８は１２８ビットの幅を持ち、一方、ｉバス２４６およびｈバス２３２は３２ビットの幅を持つ。データ経路選択２１８は、アクセスを許可されているデバイスにより適当なデータ経路を自動的に構成する。それ故、データ経路選択２１８は、例えばＩＰＣＭ１１６内で一般に使用される３２ビットのＲＩＳＣプロセッサコアをサポートするために、１２８ビットの広いアレイを変換する。すべての場合、アレイからの正しいデータ素子を参照するために、要求側が提示するメモリアドレスが考慮の対象になる。下記の表１は、各要求側に対するバス幅およびアクセスモードを示す。
【００４２】
【表１】
2004503855.tif 000003
さらに、ある実施形態の場合には、データ経路選択２１８は、何時でも、ビッグエンディアンフォーマットにより、ｅＤＲＡＭ１０８へ／からデータを記憶し、検索する。しかしＩＰＣＭはリットルエンディアンフォーマットまたはビッグエンディアンフォーマットのどちらかで動作すべく構成されているので、ＩＰＣＭがリットルエンディアンフォーマットで動作している場合には、データ経路選択２１８は、リットルエンディアンフォーマットにより、ＩＰＣＭへ／からのデータを変換し、ｅＤＲＡＭへ／からのデータをビッグエンディアンフォーマットに変換する。それ故、ＩＰＣＭは、データ経路選択にどのフォーマットで構成されているかを知らせる。
【００４３】
リフレッシュコントローラ２２０は、ｅＤＲＡＭアレイ内のビットセルの周期的サイクルリフレッシュを容易にするために、ｅＤＲＡＭ１０８に対してメモリ要求を発生する。しかし、本発明の好適な実施形態の場合には、ｅＤＲＡＭ１０８のリフレッシュ方法は、周知のリフレッシュ技術にはない種々の方法で、消費電力を最低にするために行われる。消費電力を低減すべく設計されているいくつかの特定のリフレッシュ技術については、図７−図９で説明する。
【００４４】
種々のバスインタフェイスについて以下に説明する。クロックバス２２４（「ｃ」バス）は、リフレッシュコントローラ２２０を配列し、タイミングをとるために使用される。ＤＳＰシステムバス２２６（「ｄ」バス）は、読取および書込動作を選択したデバイスに送るための制御信号と一緒に、個々のアドレスおよびデータ経路を含む。さらに、ＩＰＣＭ１１６が、ＤＳＰシステムバスの使用を要求し得るために、バス要求およびバス肯定応答信号も内蔵する。イベントバス２２８（「ｅ」バス）は、周辺装置２３０により駆動され、データ移動動作を作動させるために、ＩＰＣＭ１１６（図３参照）の入力イベント検出デバイスに送られる信号の１つのグループである。ホストシステムバス２３２（「ｈ」バス）は、読取および書込動作を選択したデバイスに送るための制御信号と一緒に、個々のアドレスおよびデータ経路を含む。ｈバス２３２は、すべての他のバスから独立して動作し得る。さらに、ＩＰＣＭ１１６が、ｈバス２３２の使用を要求し得るようにするために、バス要求およびバス肯定応答信号も内蔵している。ＩＰＣＭバス２３４（「ｉ」バス）は、指定の周辺装置２３０に、読取および書込動作を送るための制御信号と一緒に、個々のアドレスおよびデータ経路を含むＩＰＣＭシステムバスである。メモリバス２３６（「ｍ」バス）は、二方向バスであり、ｅＤＲＡＭ１０８を、データ経路選択２１８モジュールに相互接続するために使用される。メモリバス２３６の幅は、１２８ビットである。ＬＣＤバス２３８（「ｐ」バス）は、１２８ビットの幅を持つ一方向バスであり、表示画像サンプルをＬＣＤパネル２５０上に表示するために、ＬＣＤコントローラ２０４に送るために使用される。リフレッシュバス２４０（「ｒ」バス）は、設定された場合、ｅＤＲＡＭ１０８アレイ内でリフレッシュされる次の行のアドレスを含む。外部システムバス２４２（「ｓ」バス）は、読取および書込動作を選択した外部メモリ２４４に送るための制御信号と一緒に、個々のアドレスおよびデータ経路を含む。外部システムバス２４２は、ホストプロセッサ１０６またはＩＰＣＭ１１６によりアクセスし得る。転送バス２４６（「ｔ」バス）は、アクセス要求をＩＰＣＭ１１６からｅＤＲＡＭ１０８アレイに送る。転送バスは、二方向バスであり、３２ビットのデータ経路と３２ビットのアドレス経路を含む。
【００４５】
ｅＤＲＡＭ１０８のもう１つの機能は、オンチップビデオバッファを提供することであり、ホストプロセッサ１０６用のＲＡＭでもある。都合のよいことに、ＬＣＤコントローラ２０４を収容するために、ｅＤＲＡＭ１０８は、１２８ビットの幅を持つ。ｅＤＲＡＭが、共通のＲＩＳＣプロセッサコアおよびホストプロセッサをサポートするのに、通常使用される３２ビット幅である場合には、ｅＤＲＡＭ１０８は、ＬＣＤコントローラ２０４をサポートするための要求でいっぱいになり、そのため、ｅＤＲＡＭを使用する他のデバイスは、ＬＣＤコントローラ２０４と競合しなければならない。それ故、ＬＣＤコントローラ２０４は、本質的に、ｅＤＲＡＭおよびＩＰＣＭ１１６の主要なユーザになり、ホストプロセッサ１０６は、二次的なユーザになる。ＬＣＤバス２３８と同じ幅の非常に広いバッファを提供することにより、ＬＣＤコントローラ２０４は、ｅＤＲＡＭ１０８に短時間アクセスするだけで、ＩＰＣＭ１１６およびホストプロセッサ１０６は、ｅＤＲＡＭ１０８の主要なユーザになり得る。それ故、１２８ビット幅のｅＤＲＡＭを構成することにより、ＬＣＤコントローラは、ｅＤＲＡＭ機能の約２−３％を使用するだけなので、都合のよいことに、残りの９７％をｅＤＲＡＭを使用する他のデバイスが使用し得る。データ経路選択２１８により、ｅＤＲＡＭ１０８にアクセスするために、異なるサイズのバスを使用し得る。
【００４６】
ｅＤＲＡＭ１０８は、システムメモリおよびビデオバッファの２倍なので、プロセッサプラットフォーム１００上のスペースをさらに節減可能である。従来のように、個々の専用ビデオバッファを使用する場合には、この個々のビデオバッファは、プロセッサプラットフォーム上でより大きなスペースを占有し、ＬＣＤコントローラ２０４にワイヤで接続している別の集積回路となり、そのため、より多くのスペースが必要になり、配線の際に損失が生じる。従来の個々のビデオバッファとは対照的に、本発明のプロセッサプラットフォーム１００のｅＤＲＡＭ１０８は、小さな領域内でシステムメモリおよびビデオバッファの両方の働きをする。
【００４７】
ＩＰＣＭ１１６の種々の他の機能については以下に説明する。
ＩＰＣＭを使用すると、ＩＰＣＭバス２３６にマッピングされた周辺装置から、ＤＳＰ　ＲＡＭ１０４またはｅＤＲＡＭ１０８に、ＤＭＡデータ転送を行い得るので、ＩＰＣＭを使用すれば、ＤＳＰ１０２および／またはホストプロセッサ１０６は、これらの周辺装置２３０を使用可能である。例えば、ＭＭＣ１１４のようなデータ記憶装置は、ＤＳＰ１０２またはホストプロセッサ１０６にアクセスし得る。それ故、ＭＰ３でフォーマットされたデータを、インターネットのオーディオプレーヤーが聞き得るように、ＭＭＣ１１４からＤＳＰ１０２に送ることが可能である。他のアプリケーションは、ホストプロセッサ１０６により、ＭＭＣ１１４上に位置するデータファイルを、書き込んだり、読み取ったりするためのＩＰＣＭの使用を含む。さらに、ＩＰＣＭは、ＤＳＰ　ＲＡＭ１０４へ／からのディジタルオーディオサンプルを一組のＵＳＢ等時ポートに移動するように構成し得る。それ故、スピーカホンができる。さらに、ＩＰＣＭ１１６は、ｅＤＲＡＭ１０８またはＤＳＰ　ＲＡＭ１０４からの、および／または宛ての複数のデータストリームをサポートする。各ｅＤＲＡＭ１０８およびＤＳＰ　ＲＡＭ１０４からのデータ転送は、相互に別々に行い得る。
【００４８】
さらに、ＩＰＣＭ１１６は、（図３でさらに詳細に説明する）、ＲＩＳＣプロセッサコアを含むので、プログラムが便利である。それ故、プログラムタスクを、ｅＤＲＡＭからのＤＭＡデータ転送を通して、ホストプロセッサ１０６からオフロードし得る。例えば、ＩＰＣＭ１１６は、通常、ホストプロセッサ１０６が行う「ビットブリット」タスクを行い得る。コンピュータグラフィックスの当業者に周知のよ、「ビットブリット」タスクは、仮想表示の背景の表示の変更、または仮想表示を横切っての画像の「飛ばし」を含む。ＩＰＣＭ１１６は、ホストプロセッサ１０６の代わりに、このようなタスクを実行するために、ホストプロセッサ１０６から必要なプログラムをロードし得て、そのため、ホストプロセッサ１０６は、他のタスクを自由に実行し得る。
【００４９】
他のアプリケーションは、ＩｒＤＡ規格内で使用される「ＰＰＰ」または「ＬＡＰ層」機能のように、パケットプロトコルフレーマ機能の実行からホストプロセッサ１０６またはＤＳＰ１０２を解放する。この場合も、都合のよいことに、ホストプロセッサ１０６およびＤＳＰ１０２は、これらの機能を実行する必要はない。
【００５０】
ある実施形態の場合には、ＩＰＣＭ１１６は、ホストプロセッサ１０６の制御および監督の下で、デコーダにパケットを送信することにより、ＳＳＩ２１２またはＵＡＲＴ／ＩｒＤＡ１１２に接続している外部ＭＰＥＧデコーダをサポートする。ＩＰＣＭ１１６は、外部ＭＰＥＧデコーダからの復号したピクセルデータを検索し、ピクセルデータを、ｅＤＲＡＭ１０８内で割り当てられたビデオバッファ領域に配置する。それ故、「デスクトップウィンドウ内の画像」が、ＬＣＤパネル２５０に供給される。
【００５１】
ＩＰＣＭは、イベントタイマ２１６を利用するので、各周辺装置および／またはＤＳＰ１０２および／またはホストプロセッサ１０６によりトリガされた、イベントによる作動の他に、イベントタイマ２１６により、プログラマブルＤＭＡデータ転送を作動し得る。それ故、予めプログラムしたＤＭＡデータ転送は、所定の時間に自動的に行われる。
【００５２】
さらに、消費電力を最低にするために、ＩＰＣＭはイベントがペンディング中でない場合には低電力モード（すなわち、スリープモード）になるように設計される。それ故、ＩＰＣＭ１１６は、ＤＭＡデータ転送間にバッテリー内の電力を無駄に消費しない。
【００５３】
プロセッサ間通信モジュール（ＩＰＣＭ）
次に、図３は、図１および図２の無線マルチメディアプロセッサプラットフォーム１００のプロセッサ間通信モジュール（ＩＰＣＭ）のブロック図である。この図の場合には、ＩＰＣＭ１１６（「プログラマブル直接メモリアクセスモジュール」と呼ぶ）は、ＲＩＳＣプロセッサコア３０２（ＲＩＳＣコア、もっと一般的にはプロセッサ３０２と呼ぶ）；イベントスケジューラ３０４（イベント検出ユニット３０４、タスクスケジューラ３０４またはプログラマブルタスクスケジューラ３０４と呼ぶ）；静的ＲＡＭ３０６（ＳＲＡＭ３０６と呼ぶ）；読出し専用メモリ３０８（ＲＯＭ３０８と呼ぶ）；ＤＳＰ直接メモリアクセスユニット３１０（ＤＳＰ　ＤＭＡユニット３１０と呼ぶ）；ホスト直接メモリアクセスユニット３１２（ホストＤＭＡユニット３１２と呼ぶ）；ＤＳＰ制御レジスタ３１４（ＤＳＰ制御ユニット３１４と呼ぶ）；およびホスト制御レジスタ３１６（ホスト制御ユニット３１６と呼ぶ）を含む。この図は、また、ＤＳＰシステムバス２２６（「ｄ」バス２２６）；ホストシステムバス２３２（（「ｈ」バス２３２）；ＩＰＣＭバス２３４（「ｉ」バス２３４）、およびＵＳＢ１１０、ＩｒＤＡ／ＵＡＲＴ１１２、ＳＳＩ２１２およびＭＭＣ１１４を含む周辺装置２３０も示す。この図は、また、イベントバス２２８（「ｅ」バス２２８）を通して、イベントスケジューラ３０４に接続している、イベントタイマ入力３１８、および周辺装置／ＤＭＡイベント入力３２０も示す。
【００５４】
ＤＳＰ制御レジスタ３１４およびＤＳＰ　ＤＭＡユニット３１０は、バスインタフェイスを通してｄバス２２６に接続している。ホスト制御レジスタ３１６およびホストＤＭＡユニット３１２は、バスインタフェイスを通してｈバス２３２に接続している。ＩＰＣＭ１１６は、また、種々の周辺装置２３０に接続しているｉバスを含む。ＩＰＣＭ１１６内においては、ＲＩＳＣプロセッサコア３０２、ＳＲＡＭ３０６、ＲＯＭ３０８、ＤＳＰ制御レジスタ３１４、ＤＳＰ　ＤＭＡユニット３１０、ホスト制御レジスタ３１６、およびホストＤＭＡユニット３１２すべてが、ｉバス２３４に接続している。ＤＳＰ　ＤＭＡユニット３１０およびホストＤＭＡユニット３１２の両方は、それぞれ、従来のＤＭＡコントローラのバストランシーバ部分を備える。イベントスケジューラ３０４は、プロセッサ３０２に接続している。イベントスケジューラ３０４への入力は、イベントタイマ３１８および周辺装置／ＤＭＡイベント３２０である。
【００５５】
動作中、ＩＰＣＭ１１６は、実際には、すべての種々の可能なデータ転送経路用の、個々の専用ハードウェアＤＭＡチャネルを実行しないで、直接メモリアクセス（ＤＭＡ）技術を使用するプロセッサ間および直列Ｉ／Ｏデータ転送を行う。都合のよいことに、これらのＤＭＡデータ転送を行うために、ＩＰＣＭ１１６を提供することにより、ホストプロセッサおよびＤＳＰの両方がこのようなタスクから解放され、もっと重要なタスクを行い得る。都合のよいことに、また、結線で接続している一方向ＤＭＡデータチャネルを形成する従来のＤＭＡ回路（ＤＭＡコントローラと呼ぶ）とは対照的に、ＩＰＣＭ１１６は、（１）選択できる周辺装置２３０から２つのメモリ（例えば、ＤＳＰ　ＲＡＭ１０４またはｅＤＲＡＭ１０８）の中の一方に、（２）２つのメモリの中の一方から、選択し得る周辺装置２３０へ、（３）２つのメモリ間で、３つのタイプのデータ転送の中の任意の１つを行うようにプログラムし得るプログラマブルＤＭＡデータチャネルを提供するプログラマブルＤＭＡモジュールである。それ故、ＩＰＣＭ１１６は、例えば、それぞれが６つのタイプのデータ転送の中の１つに対して構成し得る３２のプログラマブルＤＭＡデータチャネルを構成する。都合のよいことに、当業者に周知の、約６つの従来のハードウェアＤＭＡコントローラの物理領域内には、ある実施形態の場合、１９２の個々のＤＭＡコントローラの代わりにＩＰＣＭ１１６が使用されていて、このＩＰＣＭ１１６は、所与の時点で、１９２の可能なＤＭＡデータチャネルの中の３２のデータチャネルを構成し得る。これら３２のプログラムされた各ＤＭＡデータチャネルは、次に、ＤＭＡデータ転送のために使用される。さらに、これらの３２のデータチャネルは、次に、必要な場合には、１９２の可能なＤＭＡデータチャネル構成の中の異なる３２のデータチャネルに再構成可能である。このことが、携帯装置のような狭いスペースしかない装置の場合に、非常に貴重であり柔軟性に富んでいることを証明している。
【００５６】
ある実施形態の場合には、３２のＤＭＡチャネルの中の１つが、ホストプロセッサ１０６からＩＰＣＭ１１６への制御チャネルとして予約される。それ故、ＩＰＣＭ１１６は、１８６の可能なＤＭＡデータチャネル構成の中の３１のＤＭＡデータチャネルを構成し得る。都合のよいことに、この制御チャネルにより、ホストプロセッサは、一組の３１の構成されたＤＭＡデータチャネルの中の１つまたはそれ以上のデータチャネルを、１８６の可能なＤＭＡデータチャネル構成の中のもう１つのＤＭＡデータチャネルに再構成するために、ＩＰＣＭに制御メッセージを送信可能である。制御チャネルがない場合でも、３２の構成されたＤＭＡデータチャネルの一組全体をホストプロセッサによりダンプし、再構成し得る。
【００５７】
このプログラマブルＤＭＡデータ転送機能を実行するために、ＩＰＣＭ１１６は、ＲＩＳＣプロセッサコア３０２およびＲＯＭ３０８およびＳＲＡＭ３０６を含む。いくつかの実施形態の場合には、ＲＩＳＣプロセッサコア３０２は、マイクロＲＩＳＣプロセッサコアからなる。ＲＩＳＣプロセッサコア３０２は、ＤＭＡデータ転送を行う短いルーチンまたは（ＳＲＡＭ３０６内に記憶している）命令を実行するために使用される。カスタムＲＩＳＣプロセッサコアおよびその命令セットの特定の例については、以下にさらに詳細に説明する。また、一組のＤＭＡユニット、ＤＳＰ　ＤＭＡユニット３１０およびホストＤＭＡユニット３１２、ＲＩＳＣプロセッサコア３０２へのインタフェイスも含み、すべてのＤＭＡ転送用の特殊な専用レジスタを使用する。それ故、ＤＳＰ　ＤＭＡユニット３１０およびホストＤＭＡユニット３１２は、従来のＤＭＡコントローラのバストランシーバ部分を含む。例えば、従来のＤＭＡコントローラのアドレスレジスタ、データレジスタおよびカウンタは、ＲＩＳＣプロセッサコア３０２内で実行される。それ故、各ＤＳＰ　ＤＭＡユニット３１０、ホストＤＭＡユニット３１２は、それぞれ、ＲＩＳＣプロセッサコア３０２へ／からの２つのワイヤで接続しているデータ経路、および、例えば、ｄバス２２６およびｈバス２３２のような各バスを表す。
【００５８】
ＲＯＭ３０８は、始動スクリプト（すなわち、ブートコード）およびＳＲＡＭ３０６内に常駐するスクリプトが参照する他の共通のユーティリティを含む。付録Ｂは、一組のＲＯＭスクリプトの例である。ＳＲＡＭ３０６は、プロセッサコンテキスト領域およびチャネルスクリプトを記憶するために使用するコードスペースに分割される。チャネルスクリプトは、ホストＤＭＡユニット３１２を使用して、ＩＰＣＭ１１６により、ｅＤＲＡＭまたは外部メモリからＳＲＡＭ３０６内にダウンロードされる。ダウンロードは、コマンドおよびホストプロセッサが供給するポインタにより行われる。各プログラマブル、または「仮想」ＤＭＡデータチャネルは、ホストプロセッサの制御下で、「必要に応じて」個々に構成し得る。それより、可能な最も狭い内部メモリ領域を使用して、広い範囲のＩＰＣＭ機能を使用し得る。マイクロコードルーチンは、例えば、大容量フラッシュメモリのような外部メモリに記憶し、必要に応じてダウンロードし得る。
【００５９】
タスクスケジューラ３０４は、周辺装置２３０、ホストプロセッサ１０６およびＤＭＡデータ転送用のＤＳＰ　ＲＡＭ１０２からの要求を受信するプログラマブルスケジューラである。これらの要求は、ｅバス２２８上で検出された「イベント」の形をしている。１つのイベントは、特定のプログラマブルＤＭＡデータチャネルの動作を制御する発生条件である。例えば、１つのイベントは、周辺装置、ホストまたはＤＳＰ（例えば、周辺装置／ＤＭＡイベント入力３２０）の中の１つからのＤＭＡデータ転送が要求されているという表示である。１つのイベントは、ホストプロセッサからの特定のＤＭＡデータチャネルの再プログラムを求めていることをＩＰＣＭに知らせる信号であってもよい。１つのイベントは、イベントタイマ（すなわち、イベントタイマ入力３１８）からの、ＤＭＡデータ転送を行うべきであるという時間指定表示であってもよい。例えば、ｅバス２２８のどのライン上でイベントが検出されたのかにより、タスクスケジューラ３０４は、誰が要求を行っているのか、またはそのＤＭＡデータ転送要求を、誰が表示しているのかを示し得る。タスクスケジューラ３０４は要求に優先順位をつけて管理する。タスクスケジューラ３０４は、ＤＭＡデータ転送のために外部イベントをモニタし、検出し、イベント（例えば、ＤＭＡデータ転送を行うべきであるということを示す信号）を特定のＤＭＡデータチャネルにマッピングする。イベントは、より高い優先順位のデータ転送がより低い優先順位のＤＭＡデータ転送の前に行われるように、優先順位により特定のＤＭＡデータチャネル内でＤＭＡデータ転送としてマッピングされる。さらに、タスクスケジューラ３０４は、より高い優先順位のＤＭＡデータ転送を実行し得るように、特定のＤＭＡデータ転送が、ＩＰＣＭ現在実行中の特定のＤＭＡデータ転送が中断される「優先順位をベースとする占有権割当て」を実行し得る。より高い優先順位のＤＭＡデータ転送が終了すると、他のより高い優先順位のＤＭＡデータ転送が要求されない限り、中断中のＤＭＡデータ転送が再開する。優先順位をベースとする占有権割当ては、通常、プロセッサに周知である。しかし、従来のＤＭＡコントローラは、ハードウェアをベースとしているので、（すなわち、プログラム不可能なので）、このような占有権割当てを行うことはできない。都合のよいことに、この実施形態は、プログラマブルＤＭＡシステムで、優先順位をベースとする占有権割当てを行う。
【００６０】
以下に、ＩＰＣＭによりサポートされている多様のタイプのプログラマブルＤＭＡデータ転送のデータの流れを簡単に説明する。
１．周辺装置からメモリへ
動作中、種々の周辺装置２３０が、プロセッサプラットフォームに入力するデータの収集を行う。例えば、ＭＭＣ１１４のような特定の周辺装置にデータが到着すると、周辺装置はイベントを、イベントバス２２８を介してＩＰＣＭ１１６のタスクスケジューラ３０４に送る。タスクスケジューラ３０４は任意の時点で３２のイベントを処理し得る。イベントは、タスクスケジューラ３０４により優先順位がつけられ、特定のＤＭＡデータチャネルにマッピングされる。イベントが実行すべきものである場合には、ＲＩＳＣプロセッサコア３０２は、ＳＲＡＭ３０６内に位置するスクリプトの形のソフトウェアを実行する。上記ソフトウェアは、特定のＤＭＡデータチャネル用のもので、特定のＤＭＡデータチャネルを構成する。上記ソフトウェアは、特定の周辺装置から、例えば、ｅＤＲＡＭまたはＤＳＰ　ＲＡＭのようなメモリ宛先にＤＭＡデータ転送を行うために、ＲＩＳＣプロセッサコア３０２を訓練する。ＤＭＡデータ転送は、周辺装置内のデータが、ｉバス２３４、および、例えば、ＤＳＰ　ＤＭＡユニット３１０またはホストＤＭＡユニット３１２等の各メモリに送られるべく、ＲＩＳＣプロセッサコア３０２でソフトウェアにより行われる。
【００６１】
都合のよいことに、ＤＭＡデータ転送は、ＤＳＰまたはホストプロセッサとは無関係に行われる。さらに、ＲＩＳＣプロセッサコア３０２、および、例えば、ホストＤＭＡユニット３１２のような１つのハードウェアＤＭＡ回路を含むＩＰＣＭ１１６を使用して、多くの異なるＤＭＡデータ経路が、１つの結線で接続しているＤＭＡユニットを介して形成される。これらの各データ経路は、プログラマブルＤＭＡデータチャネルまたは「仮想」ＤＭＡデータチャネルと呼ばれる。例えば、ＵＳＢ１１０からＤＳＰ　ＲＡＭ１０４へのＤＭＡデータチャネルまたは経路が存在し、ＳＳＩ２１２からＤＳＰ　ＲＡＭ１０４へのもう１つのＤＭＡデータチャネルまたは経路が存在する。両方ともＤＳＰ　ＤＭＡユニット３１０を通る。都合のよいことに、どちらのＤＭＡデータチャネルも、後で、例えば、ＭＭＣ１１４からＤＳＰ　ＲＡＭ１０４への異なるＤＭＡデータチャネルとして再構成される。それ故、メモリＤＭＡデータチャネルへの各周辺装置はＤＳＰ　ＤＭＡユニット３１０またはホストＤＭＡユニットを使用するが、ＩＰＣＭ１１６に接続している周辺装置の中の任意の１つからのものとして、プログラマブルで選択可能なものであっても、そうでないものでもよい。
【００６２】
２．メモリから周辺装置へ
このタイプのＤＭＡ転送は、転送が例えば、ＤＳＰ　ＲＡＭまたはホストプロセッサメモリ（例えば、ｅＤＲＡＭ）のプロセッサプラットフォームのプロセッサコアのうちの１つのメモリから周辺装置２３０の中の１つに対して行われる第１のタイプのものとは反対のＤＭＡ転送である。ＤＳＰは、ＤＳＰ制御レジスタ３１４を介して、タスクスケジューラ３０４に「イベント」を送り（データ転送）、タスクスケジューラ３０４は、イベントに優先順位をつけ、それをＤＭＡデータチャネルにマッピングし、データ転送を行うためにＲＩＳＣプロセッサコア３０２に送る。ＤＳＰが供給する情報はＤＳＰ　ＲＡＭ内のデータが記憶されている位置および送るデータ量を示す。次に、ＲＩＳＣプロセッサコア３０２はＳＲＡＭ３０６内に位置するスクリプトの形のソフトウェアを実行する。このソフトウェアは特定のＤＭＡデータチャネル専用のものである。ソフトウェアはＤＳＰ　ＲＡＭ１０４から特定の周辺装置２３０へのＤＭＡデータ転送を行うために、ＲＩＳＣプロセッサコア３０２を効果的に訓練する。上記転送は、データがＤＳＰ　ＲＡＭからＤＳＰ　ＤＭＡユニット内のレジスタにコピーされ、次に、ｉバス２３４を通して周辺装置に転送されるべく、ＲＩＳＣプロセッサコア３０２のソフトウェアにより行われる。
【００６３】
３．メモリからメモリへ
第３のタイプのＤＭＡデータ転送はメモリ間のＤＭＡデータ転送である。例えばイベントの際には、データはＤＳＰメモリ（例えば、ＤＳＰ　ＲＡＭ１０４）からホストプロセッサメモリ（例えば、ｅＤＲＡＭ１０８）に転送しなければならないので、ＤＳＰはＩＰＣＭ１１６のタスクスケジューラ３０４に１つのイベントを設定する。タスクスケジューラ３０４は、そのイベントを認識し、それに優先順位をつけ、次に、ＤＳＰ　ＤＭＡユニット３１０を介して、ＤＳＰ　ＲＡＭからＲＩＳＣプロセッサコア３０２自身にＤＭＡデータ転送を行うために、ＲＩＳＣプロセッサコア３０２にＳＲＡＭ３０６からのスクリプトをロードさせる。例えば、データは一時的にＲＩＳＣプロセッサコア３０２内のレジスタ内に収容される。次に、ホストＤＭＡユニット３１２を介して、ＲＩＳＣプロセッサコア３０２とホストプロセッサメモリ（例えば、ｅＤＲＡＭ１０８）との間でＤＭＡデータ転送が行われる。これは有効な「バック・ツー・バック」ＤＭＡデータ転送である。ＩＰＣＭ１１６はメモリサイズの違いを解決する。例えば、ＤＳＰ　ＲＡＭの幅が１６ビットであり、ホストプロセッサメモリの幅が３２ビットである場合には、ＩＰＣＭは１６ビット語を収集し、それを３２ビット語内に収容し、次に３２ビット語をホストプロセッサメモリに転送する。
【００６４】
ＲＩＳＣプロセッサコア３０２を介して、ＤＳＰ　ＲＡＭからホストプロセッサメモリに完全な「バック・ツー・バック」ＤＭＡデータ転送が行われると、ＩＰＣＭ１１６は、そのメモリ内に記憶しているデータがあることを通知するためにホストプロセッサに信号を送る。すなわち、ＲＩＳＣプロセッサコア３０２はホスト制御レジスタ３１６を介して、ホストプロセッサに制御信号を送信し、データが始まるホストプロセッサメモリ内のアドレスへの位置ポインタおよびそのアドレスからスタートして、どれだけの数の語がホストプロセッサメモリ内に記憶されているかを、ホストプロセッサに通知する。この時点でホストプロセッサは、希望する場合にはデータを検索する。大部分のＤＭＡデータ転送の長さは多くのバイト（例えば、１，０００バイト）を含んでいるので、転送完了イベントが送信される前に多くの反復が必要である。また、この通知プロセスは周辺装置からメモリへの転送の場合も同じである。すなわち、ＲＩＳＣプロセッサコア３０２は、例えば、ＤＳＰまたはホストプロセッサのような各プロセッサコアに、データがメモリ内で待機していることを通知する。
【００６５】
このプロセスは、当業者に周知の、２つのプロセッサ間でデータ転送を行い得るプロセッサブリッジと対照的である。例えば、ホストプロセッサがデータをホストからＤＳＰに転送したい場合には、ホストはＤＳＰの動作を中断し、データ交換可能になるまで待機し、その後数秒の間、ホストプロセッサは転送を行うためにＤＳＰメモリを制御する。都合の悪いことにそのためは、データ転送の間はＤＳＰとホストプロセッサの両方を一時的に停止しなければならない。それ故、ホストメモリおよびＤＳＰメモリは、それぞれ、同じ瞬間に停止および通信を行う。
【００６６】
対照的に、ＩＰＣＭ１１６はＤＳＰの動作を中断しないで、ホストメモリからＲＩＳＣプロセッサコア３０２内に、直接メモリアクセスデータ転送を行うことを許容する。ホストプロセッサ１０６が行わなければならない唯一の動作は、ホストメモリからＲＩＳＣプロセッサコア３０２にデータのＤＭＡデータ転送を行うために、ＩＰＣＭにあるイベントを送るための制御信号を送信することだけである。次に、ＲＩＳＣプロセッサコア３０２からＤＳＰメモリ内にＤＭＡデータ転送が行われる。次に、ＤＳＰはＤＳＰ　ＲＡＭからデータを検索する。この状況の場合には、ＤＳＰもまたはホストプロセッサも転送を行うために相手方に対して動作を中止しなければならない。
【００６７】
図４は、図１、図２および図３のＩＰＣＭにより提供されたプログラマブルで選択可能な直接メモリアクセス（ＤＭＡ）データチャネルを示す。この図はまた、ＩＰＣＭ１１６、ＤＳＰ　ＤＭＡユニット３１０、ホストＤＭＡユニット３１２、ＲＩＳＣプロセッサコア３０２、ｉバス２３４、ｄバス２２６、およびｈバス２３２も示す。ＤＳＰ　ＤＭＡユニット３１０は、第１のＤＳＰ　ＤＭＡデータ接続４０２、および第２のＤＳＰ　ＤＭＡデータ接続４０４を含む。ホストＤＭＡユニット３１２は、第１のホストＤＭＡデータ接続４０６および第２のホストＤＭＡデータ接続４１８を含む。
【００６８】
ＩＰＣＭ１１６は、ＤＳＰ　ＤＭＡユニット３１０およびホストＤＭＡユニット３１２を含む。各ＤＭＡユニット３１０および３１２は、従来のＤＭＡコントローラのバストランシーバ部を含み、（ＤＭＡデータ転送のためにどのプログラマブルＤＭＡデータチャネルを形成するかにより）２つの結線で接続しているＤＭＡデータ接続を形成するが、その一方は、ＲＩＳＣプロセッサコア３０２からメモリ方向のものであり、他方は、メモリからＲＩＳＣプロセッサコア３０２方向のものである。これら４つのＤＭＡデータ接続は、実際のハードウェアＤＭＡコントローラの数が１９２（ＤＭＡデータチャネルの中の１つが制御チャネルである場合は、１８６）である場合には、ＲＩＳＣプロセッサコア３０２と一緒に、同時に動作するかのように動作させるために、ＩＰＣＭのＲＩＳＣプロセッサコア３０２によりプログラムされる。対照的に、従来のＤＭＡコントローラは、ＤＭＡデータ接続により１つの専用ＤＭＡチャネルを形成し得るだけである。
【００６９】
広い意味でいうと、ＲＩＳＣプロセッサコア３０２は、デバイスと種々のワイヤで接続しているＤＭＡデータ接続との間でスイッチとして機能する。それ故、第１のホストＤＭＡチャネルデータ接続４０６は、例えば、ＵＳＢ１１０からｅＤＲＡＭ１０８へのＤＭＡデータチャネル、ＳＳＩ２１２からｅＤＲＡＭ１０８へのＤＭＡデータチャネル、およびＭＭＣ１１４からｅＤＲＡＭ１０８へのＤＭＡデータチャネルのような多くの異なるプログラマブルＤＭＡデータチャネルのように構成し、プログラムし得る。第１のホストＤＭＡチャネルデータ接続４０６を使用しているこれらの異なるＤＭＡデータチャネルは、「仮想」ＤＭＡデータチャネルと呼ぶことができる。何故なら、これらのＤＭＡデータチャネルは、現在ハードウェア内に存在するよりも多くのＤＭＡデータチャネルを効果的に提供するからである。それ故、第１のホストＤＭＡチャネル４０６は、いくつかの周辺装置の中の任意の１つから、または第２のＤＳＰ　ＤＭＡデータ接続４０４の発信ノードから、例えば、ｅＤＲＡＭ１０８のような第１のホストＤＭＡデータ接続４０６の宛先端部のところのメモリへのＤＭＡデータ転送をサポートし得るべくプログラム可能で、選択可能である。それ故、多くの個々のワイヤで接続している従来のＤＭＡコントローラの代わりに、ＲＩＳＣプロセッサコア３０２および、例えば、ホストＤＭＡユニット３１２のような１つのＤＭＡユニットを使用し得る。
【００７０】
同様に、第２のホストＤＭＡデータ接続４０８を、発信端部またはノード（例えば、ｅＤＲＡＭ１０８）から、いくつかの周辺装置の中の任意の１つ、または第１のＤＳＰ　ＤＭＡデータ接続４０２の宛先ノードへの「仮想」ＤＭＡデータチャネル内にプログラム可能で、選択可能である。これらの仮想ＤＭＡデータチャネルは、それぞれ、第２のホストＤＭＡデータ接続４０８を使用する。さらに、「バック・ツー・バック」ＤＭＡデータチャネルを、ＲＩＳＣプロセッサコア３０２を通して、第２のホストＤＭＡデータ接続４０８および第１のＤＳＰ　ＤＭＡデータ接続４０２により実行しうる。
【００７１】
カスタムＲＩＳＣプロセッサコア／ＩＰＣＭ
ＲＩＳＣプロセッサコアは、当業者に周知の、標準ＲＩＳＣプロセッサを使用し得る。しかし、カスタムＲＩＳＣプロセッサは、ＩＰＣＭ１１６内の性能を改善するように設計可能である。図１−図４のＩＰＣＭとして使用するための、カスタムＲＩＳＣプロセッサコアおよびＩＰＣＭの特定の実施形態について以下に説明する。
【００７２】
カスタムＲＩＳＣプロセッサコア３０２は、１６ビットの命令を含む３２ビットレジスタアーキテクチャである。８つの汎用３２ビットレジスタ、すなわち、当業者に周知の、４つのフラグ（Ｔ、ＬＭ、ＳＦ、およびＤＦ）および４つのＰＣＵレジスタ（ＰＣ、ＲＰＣ、ＳＰＣ、およびＥＰＣ）を使用している。ＲＩＳＣプロセッサコア３０２は、２段のパイプラインであり、同様にＲＯＭ３０８およびＳＲＡＭ３０６を含む。ＲＯＭ３０８は、（２５６×３２として構成されている）１ｋバイトの容量を持ち、ＳＲＡＭ３０６は、（２０４８×３２として構成されている）８ｋバイトの容量を持つ。
【００７３】
カスタムＲＩＳＣプロセッサコア３０２（以後、単にＲＩＳＣプロセッサコア３０２と呼ぶ）は、ＤＭＡデータ転送用の短いルーチンを実行するために使用される。（ＳＲＡＭ３０６が記憶している）命令セットは、ロード／記憶、ＣＲＣ、ＤＭＡ、および実行するのに２つまたはそれ以上のサイクルを必要とする分岐命令を除いて、単一サイクルの命令からなる。好適な命令セットは、本明細書の付録Ａに記載されている。ｉバス２３４は、３２ビットデータ経路、および１６ビットアドレスバスをサポートする。一組のＤＭＡユニット、ＤＳＰ　ＤＭＡユニット３１０、およびホストＤＭＡユニット３１２が、ＲＩＳＣプロセッサコア３０２に対してインタフェイスとして機能し、すべてのＤＭＡ転送に対して、特殊な専用レジスタを使用する。
【００７４】
ＲＯＭ３０８は、始動スクリプト（すなわち、ブートコード）、およびＳＲＡＭ３０６内に常駐するスクリプトが参照する他の共通のユーティリティを含む。ＳＲＡＭ３０６は、プロセッサコンテキスト領域、およびチャネルスクリプトを記憶するために使用するコードスペース領域に分割される。チャネルスクリプトは、ホストＤＭＡユニット３１２を使用して、ＩＰＣＭ１１６によりｅＤＲＡＭまたは外部メモリからＳＲＡＭ３０６内にダウンロードされる。ダウンロードはコマンドおよびホストプロセッサが供給するポインタにより行われる。各プログラマブル、または「仮想」ＤＭＡデータチャネルは、ホストプロセッサの制御下で、「必要に応じて」個々に構成可能である。そうすることにより、可能な最も狭い内部メモリ領域を使用して、広い範囲のＩＰＣＭ機能を使用し得る。マイクロコードルーチンは、例えば、大容量フラッシュメモリのような外部メモリ内に記憶し、必要に応じてダウンロードし得る。
【００７５】
タスクスケジューラ３０４は外部イベントをモニタし、検出し、イベントをＤＭＡデータチャネル（単に、チャネルと呼ぶ）にマッピングし、個々のチャネルを予め構成した優先順位にマッピングする。任意の時点で、タスクスケジューラは、ＩＰＣＭ１１６にサービスを要求している最も優先順位の高いチャネルを提示する。実行中の現在のチャネルを、サービスを必要とする選択可能チャネルに「条件付きで引き渡すために」、特殊なＩＰＣＭコア命令が使用される。選択可能チャネルがペンディング中である場合、またペンディング中である場合だけ、チャネルの現在の実行が優先的に行われる。選択可能チャネルを別々に決定する２つの「引渡し」命令が使用される。第１のバージョンの場合には、選択可能チャネルは、現在のチャネルの優先順位よりも、厳格により高い優先順位のペンディングチャネルである。第２のバージョン（「引渡し」）の場合には、選択可能チャネルは、現在のチャネルの優先順位より高いか、等しい優先順位のペンディングチャネルである。タスクスケジューラ３０４は、３２の入力イベントポート（イベントタイマ入力３１８および周辺装置／ＤＭＡイベント３２０）を介して、サービスを要求しているデバイス（例えば、チャネル）を検出する。あるイベントが検出された後で、また、あるチャネルにマッピングされた後でだけ、チャネルイベントは、「チャネルペンディング（ＥＰ）」レジスタにラッチされる。すべてのペンディングチャネルの優先順位は、ホストプロセッサおよびＤＳＰにより設定され、最も高いペンディング優先順位を更新するために、引き続き評価されている制御ビットと結合される。チャネルペンディングレジスタ内の各ビットは、チャネルサービスルーチンが終了した場合には、チャネルスクリプトソフトウェアによりクリアされる。
【００７６】
ホスト制御モジュール（すなわち、ホスト制御レジスタ３１６）は、３２の個々のチャネルを制御（すなわち、チャネルマッピング）するために使用されるアレイとして編成されているいくつかの小さなＲＡＭブロックを含む。チャネルイネーブルレジスタは、最大のＲＡＭアレイ（３２ビット×３２ビット）であり、イベントを特定のチャネルにマッピングするために使用される。第２のアレイは、優先順位ＲＡＭであり、プログラマブルな１−７のレベルの優先順位にチャネルを割り当てるために使用される。
【００７７】
ｅバス２２８を介してタスクスケジューラに接続している３２のイベント入力は、種々のソースからのものであり、中断要求信号に類似している。ＵＡＲＴポートおよびＵＳＢポート内の受信レジスタ満杯イベント、および送信レジスタ空イベントは、ＩＰＣＭ上のイベントポートに送られる信号の代表的な例である。イベント入力の中のあるものは、層１タイマ（例えば、イベントタイマ３０４）からのものである。層１タイマ内には、層１タイマの特定の瞬間的な状態についてのあるイベントを送信するために使用可能な、レジスタをベースとする比較／捕捉ブロックである。これらのイベントは、１つのまたは複数の特定のＩＰＣＭチャネルをトリガするのに使用される。この機能は、厳格な締め切りに適合するための要件を緩和するために、２つのプロセッサ（例えば、ＤＳＰおよびホストプロセッサ）間の「ジャスト・イン・タイム」データ交換を行うために使用される。
【００７８】
ＩＰＣＭは埋設されているので、確実に製品の品質および信頼性を達成し、コアの全性能機能を実現するために、オンチップデバッグ機能を必要とする。ＯｎＣＥ互換デバッグポートは、区切り、１つのステップおよび追跡およびレジスタダンプ機能を設定するためのサポートを含む。さらに、すべてのメモリ位置にデバッグポートからアクセス可能である。
【００７９】
ＩＰＣＭ１１６は、２つのメモリスペース、すなわち、命令のためのスペース、およびデータのためのスペースを含む。両方のスペースは同じリソース（ＲＯＭデバイスおよびＲＡＭデバイス）を共有しているので、システムバスは、ＩＰＣＭが、命令の読取りおよびデータの読取りまたは書込みの両方のために、同じリソースにアクセスした場合に起こりうる衝突を管理する。
【００８０】
１６ビット幅の命令は、３２ビット幅のデバイス内に記憶され、またデータとしてアクセスすることも可能である。対応はビッグエンディアンである。すなわち、（「０」で終わる）偶数の命令アドレスは、３２ビットデータの最上位（ビット［３１：１６］にアクセスし、（「Ｉ」で終わる）奇数の命令アドレスは３２ビットデータの最下位（ビット［１５：０］）にアクセスする。
【００８１】
命令はＩＰＣＭ　ＲＯＭおよびＲＡＭから入手し得る。ＲＯＭ、ＲＡＭ、周辺装置（ＵＳＢ、ＵＡＲＴ１、ＵＡＲＴ３、ＭＭＣおよびＶＳＡＰ）およびメモリマッピングしたレジスタには、データとしてアクセスし得る。
【００８２】
タスクスケジューラ３０４は、チャネル状態および優先順位に基づいて、ＩＰＣＭによる３２のプログラマブルで、選択可能なＤＭＡデータチャネル（仮想ＤＭＡチャネル）のタイムリーな実行を調整するために使用される、ハードウェアをベースとする設計になっている。タスクスケジューラは、下記の機能、すなわち、（１）供給される３２のイベント入力の中の任意の１つのモニタ、検出および、登録；（２）特定のチャネルまたはチャネルグループへの特定のイベント入力のリンク（チャネルマッピング）；（３）前に構成されたチャネルにマッピングされないイベントの無視；（４）サービスを要求しているすべてのチャネルのリストの維持；（５）サービスを要求している各チャネルへの、予めプログラムされた優先順位レベル（７のレベルの中の１つ）の割当て；および（６）オーバーラン／アンダーラン条件の検出とフラグ設定を行う。
【００８３】
プログラマブルＤＭＡデータチャネルまたは仮想ＤＭＡデータチャネル（以後、単にチャネルと呼ぶ）は、ＩＰＣＭ１１６を通るデータの流れを管理する。流れは通常一方向であるが、再構成可能で再プログラムも可能である。ＩＰＣＭは、０〜３１の番号の、３２の同時に動作するチャネルを持ち得る。チャネル０は、ＩＰＣＭ１１６を制御するためにホストプロセッサ１０６が使用する専用チャネルである。他のすべてのチャネルは、ホストプロセッサソフトウェアにより割り当てることが可能である。
【００８４】
１つのイベントは、１つのチャネルの動作を制御し得る発生条件である。イベントは、（例えば、ＵＡＲＴ受信ＦＩＦＯがしきい値となったというような）外部（すなわち、ＩＰＣＭ外部の）制御条件により、または内部タイマ（例えば、イベントタイマ）のスタートにより発生する。ＩＰＣＭは、相互にランダムに発生する最大３２のイベントを実行する。それ故、イベントは、タスクスケジューラが任意の時点で３２のイベントを処理し得る状態でランダムにタスクスケジューラに到着するように設計される。
【００８５】
タスクスケジューラ３０４は、イベントをチャネルにマッピングし、イベントに優先順位をつける。チャネルは、１つのイベント上での待機状態を打ち切ることが可能である。１つのイベントは、２つ以上のチャネル（例えば、Ｌ１タイマ）を能動状態にし得る。それが影響を与えるイベントからチャネルへのマッピングはプログラムの制御下にある。１つのビットマップを含む３２の各イベントに対して１つのレジスタが使用される。各チャネルに対して１つのビットが使用される。この１つのビットは、そのイベントによりどのチャネルが能動状態になるのかを決定する。そのチャネルが動作する優先順位を含む３２の各チャネルに対して１つのレジスタが使用される。
【００８６】
ハードウェアスケジュール作成ブロックは、スクリプトが、スケジュール作成を行うことができる１つの命令を実行した場合に、ペンディングイベントを持つ最も優先順位が高いスクリプトが実行されるようにスケジュール作成アルゴリズムを実行する。
【００８７】
複数のチャネルを任意の所与の時点で実行し得る。タスクスケジューラ３０４（結線で接続しているロジック）は、現在のチャネルが引渡された場合、実行される最も優先順位の高いチャネルを選択する。引渡しチャネルは、ホストプロセッサ１０６または信号プロセッサ１０２により、外部イベントまたは待機介入上でブロックすることが可能である。
【００８８】
Ｉ番目のチャネルは、下記の条件が真である場合だけ実行し得る。
（ＨＥ［ｉ］ ） ｜ ＨＯ［ｉ［］ ＆ ＤＤＥ［ｉ］ ｜ ＤＯ［ｉ］ ＆ （ＥＰ［ｉ］ ｜ ＥＯ［ｉ］）
各チャネルに対するホストイネーブルビットＨＥ［ｉ］は、ホストプロセッサにより設定またはクリアすることが可能である。このビットはスクリプトによってもクリアすることが可能である。
【００８９】
各チャネルに対する、ホストオーバライドイネーブルビットＨＯ［ｉ］は、ホストプロセッサにより設定またはクリアすることが可能である。このビットを設定することにより、ホストプロセッサ１０６は、ＤＳＰ１０２と周辺装置２３０との間の通信のような、それを含んでいないチャネルを許容し得る。
【００９０】
ｄｓｐイネーブルビットＤＥ［ｉ］は、ｄｓｐにより設定またはクリアされる。上記ビットは、スクリプトによりクリア可能である。
ｄｓｐオーバライドビットＤＯ［ｉ］は、ホストプロセッサにより設定またはクリアされる。このビットを設定することにより、ホストプロセッサは、ＤＳＰがチャネルを中止することを防止し得る。チャネル転送がＤＳＰを含まない場合がこれに相当する。
【００９１】
イベントペンディングビットＥＰ［ｉ］は、タスクスケジューラの出力である。このビットは、スクリプトによりクリアし得る。このビットは、また、イベント／チャネル接続マトリックスを無効にするために、ホストにより設定し得る。
【００９２】
イベントオーバライドビットＥＯ［ｉ］は、ホストプロセッサにより設定またはクリアされる。このビットを設定することにより、ホストプロセッサは、チャネルが周辺装置イベントを待機するために中止することを防止し得る。この状態は、例えば、ホストプロセッサからＤＳＰへのＤＭＡデータ転送のような、Ｉ／Ｏイベントを処理していない状態に相当する。
【００９３】
ＨＥ［ｉ］、ＨＯ［ｉ］、ＤＥ［ｉ］、ＤＯ［ｉ］、ＥＲ［ｉ］、およびＥＯ［ｉ］は、すべてリセットの際にゼロに設定される。
ＩＰＣＭ１１６は、ｄｏｎｅ命令または通知命令により、ＨＥ［ｉ］、ＤＥ［ｉ］、およびＥＰ［ｉ］ビットをクリアし得る。ｄｏｎｅ命令により、通知命令を再スケジュールしないで再スケジュールを行い得る。ｄｏｎｅ命令および通知命令は、下記のビットの中の１つ（また、１つだけ）をクリアすること可能である。
【００９４】
ＨＥ［Ｉ］、ＤＥ［Ｉ］、またはＥＰ［Ｉ］
同じ優先順位を持ついくつかのチャネルを選択し得る場合には、結線で接続している選択ツリーが最も高い数字のチャネルを自動的に選択する。すなわち、４という優先順位のチャネル７およびチャネル２４の両方が待機中である場合には、チャネル２４が次に実行されるチャネルである。
【００９５】
「引渡し」命令（すなわち、より大きいか等しい場合には引渡し）の場合で、現在のチャネルと同じ優先順位のチャネルが待機中である場合には、すでに説明したように、行動は結線で接続している選択ツリーにより駆動される。例えば、所与の３つのチャネル（すなわち、チャネル７、２３および２９）が同じ最高の優先順位を持っている場合である。
【００９６】
チャネル７は能動状態にあり、「引渡し」が行われる。このチャネルはチャネル２９により占有権割当てが行われる。しばらくして、チャネル２９は「引渡し」を行い、次に、チャネル２３により、そのチャネルは現在のチャネルであるので、チャネル２９として選択したチャネルが、選択することができるチャネルに属していないという占有権割当てが行われる。その後で、チャネル２３は、「引渡し」を実行し、チャネル２９により占有権割当てが行われる。チャネル２３および２９は、その中の１つが終了するまで、各「引渡し」の後に切り替えを継続する。チャネル７を選択することができるようになるのは、この時点だけである。この例の間、他の選択可能チャネルの中で、待機状態にあるものはないと見なされる。
【００９７】
図５について説明すると、この図は、本発明のある実施形態による、図３のカスタムＲＩＳＣプロセッサで使用するタスクスケジューラの特定の実施形態の機能を示す。この図は、また、エッジ検出およびラッチユニット５０２、マルチプレクサ５０４、カウンタ５０６、チャネルイネーブルＲＡＭ５０８、チャネルペンディングレジスタ５１０（イベントペンディングビットＥＰ［ｉ］を発生するＥＰ）、「ＯＲ」ゲート５１２、「ＡＮＤ」ゲート５１４、チャネルエラーレジスタ５１６、ホストイネーブルレジスタ５１８（ホストイネーブルビットＨＥ［ｉ］を発生するＨＥ）、ホストオーバライドイネーブルレジスタ５２０（ホストオーバライドイネーブルビット，ＨＯ［ｉ］を発生するＨＯ）、ｄｓｐイネーブルレジスタ５２２（ｄｓｐイネーブルビットＤＥ［ｉ］を発生するＤＥ）、ｄｓｐオーバライドレジスタ５２４（ホストオーバライドビットＤＯ［ｉ］を発生するＤＯ）、イベントオーバライドレジスタ５２６（イベントオーバライドビットＥＯ［ｉ］を発生するＥＯ）、決定ツリー５２８、優先順位レジスタ５３４、最高待機優先順位レジスタ（ＨＰＰＲ）５３０、および最高待機カレントチャネルレジスタ（ＨＰＣＲ）５３２も示す。
【００９８】
タスクスケジューラ３０４は、イベント入力を処理し、その優先順位を決めるための３段パイプラインを含む。パイプラインの第１の段は、イベント入力を走査し、検出したイベントを能動チャネルに対してマッピングする。パイプラインの第２の段は、サービスを要求しているチャネルのリストを維持し（チャネルペンディングレジスタ）、優先順位ＲＡＭ５３４からすべての待機チャネルに対して優先順位を割り当て、第３の段は、一番上の優先順位および関連チャネルを識別する。
【００９９】
タスクスケジューラの優先順位出力は、ＩＰＣＭのＲＩＳＣプロセッサコアに送られ、ＲＩＳＣプロセッサコアが現在実行中の優先順位との比較が行われる。コアは、プログラム状態語（ＰＳＷ）内に現在の優先順位を維持する。引渡し命令に遭遇した場合に、タスクスケジューラの優先順位が、現在の優先順位より高い場合には、優先順位をベースとする占有権割当てが行われる。
【０１００】
以下に、タスクスケジューラのパイプラインについて説明する。
パイプラインの第１の段（段階１）は、（ｍｕｘまたはＭ１と呼ぶ）３２Ｘ１ディジタルマルチプレクサ５０４の前に位置する３２ビットのエッジ検出およびラッチユニット５０２を含む。ｍｏｄ３２カウンタ５０６は、３２のイベント入力を通して、ｍｕｘ５０４選択入力およびｍｕｘ５０４シーケンスを駆動する。論理「１」は、走査中の対応する各論理「１」に対する、３２×３２入力チャネルイネーブルＲＡＭ５０８に送られる。それ故、１つのチャネルに対して１つのイベントがマッピングされる。走査したイベントに対応するエッジ検出／ラッチは、次のクロックサイクルの際に自動的にクリアされる。そのイベント入力の中の１つが検出されると、チャネルイネーブルＲＡＭ５０８に読取イネーブル信号が供給される。１つのイベントは、３２のクロックを検出し得る。検出されると、１つのイベントは、１クロックサイクル中に、チャネルイネーブルＲＡＭ５０８を通して、ｍｕｘ５０４から伝搬し得る。
【０１０１】
第２の段においては、チャネルイネーブルＲＡＭ５０８は、同じ３２ビットのカウンタ５０６によりアドレスされ、各チャネルを通る各イベントに対して供給される１つのビットを持つ四角の（３２×３２）アレイである。チャネルが動作可能になり、対応するイベントが検出されると、データ出力ポート上のチャネルイネーブルＲＡＭ５０８から論理「１」出力が発生する。この信号は、チャネルペンディングレジスタ５１０内の対応する位置にラッチされる。検出されたイベントは、２クロックサイクル中に、チャネルイネーブルＲＡＭ５０８からチャネルペンディングレジスタ５１０に伝搬する。チャネルペンディングレジスタ５１０（ＥＰ）は、３２の各チャネルに対して１つのビットを持つ３２ビットレジスタである。任意の所与のクロックサイクル中に、チャネルペンディングレジスタ５１０に設定されるチャネルの数は、５ビットカウンタにより選択されたアドレスに対応する、３２ビットマスク内の「１」に設定されたビットの数により決まることに留意されたい。「ＯＲ」ゲート５１２は、チャネルペンディングレジスタ５１０内に検出したイベントを捕捉し、保持する目的で、「現在の状態のフィードバック」を供給するために使用される。また、「ビットクリア」入力は、ＩＰＣＭコアが、チャネルペンディングレジスタ５１０内で特定のビットをクリアし得るようにするために供給されることにも留意されたい。この動作は、対応するチャネルがサービスを受けた時に、ソフトウェア命令を通して、ＩＰＣＭコアにより行われる。
【０１０２】
最後に、３２の「ＡＮＤ」ゲート５１４のグループが、すでにサービスを受けたイベントの再設定を検出するために使用される。すなわち、１つのイベントが送られ、そのチャネルがすでに待機中である場合には、オーバーラン／アンダーラン状態を示す対応するビットは、チャネルエラーレジスタ５１６内にラッチされる。ホストプロセッサは、次に、タスクスケジューラですべてのエラーを受信する。
【０１０３】
パイプラインの第３の段においては、前のチャネルペンディングレジスタ５１０の出力、およびＥＯレジスタ５２６の出力、ＨＥレジスタ５１８の出力、ＨＯレジスタ５２０の出力、ＤＥレジスタ５２２およびＤＯレジスタ５２４の出力、および（現在の優先順位を記憶する）優先順位レジスタ５３４の出力が、どのチャネルを動作可能にするのか、どのチャネルを決定ツリー５２８を通して注文しなければならないのかを決定する。
【０１０４】
この優先順位ツリー５２８は、サイクルベースで、動作可能になったチャネルに、最高の優先順位を供給する。（（ＥＰ［ｉ］｜ＥＯ［ｉ］）＆（ＨＥ［ｉ］｜ＨＯ［ｉ］）＆（ＤＥ［ｉ］｜ＤＯ［ｉ］）が、この特定のチャネルに対して１に設定された場合に、チャネル（ｉ）は動作可能になったといわれる）。
【０１０５】
同じ優先順位の動作可能になった複数のチャネルを選択し得る場合には、検出した最初のチャネルが選択される（検出はチャネル３１からスタートし、降順に行われる。すなわち、チャネル１３およびチャネル２４の両方を選択し得る場合には、チャネル２４が選択される）。
【０１０６】
「ツリーアーキテクチャ」により、（ＥＰ［ｉ］｜ＥＯ［ｉ］）＆（ＨＥ［ｉ］｜ＨＯ［ｉ］）＆（ＤＥ［ｉ］｜ＤＯ［ｉ］を動的に修正可能で、優先順位も動的に修正可能である。
【０１０７】
チャネルペンディングレジスタ５１０からＦＩＦＯへの伝搬時間は、１クロックである。
ステップを実行する図の部分に対する、図５の対応する番号を参照しながら、図５のタスクスケジューラのステップについて概略説明する。
【０１０８】
ステップ１において、ディジタルｍｕｘ５０２は、イベント入力を走査する。すべての入力は走査されるまでエッジされ、感知され、ラッチされる。走査後、すべての入力は自動的にクリアされる。ステップ２において、イベントおよびチャネルイネーブルレジスタ５０８マップ内の対応するビットがイエスになった場合には、チャネルペンディングレジスタ５１０内の１つのビットが「設定」される。ステップ３において、チャネルペンディングレジスタ５１０（ＥＰ）が、引き続きＥＯレジスタ、ＤＥレジスタ、ＤＯレジスタ、ＨＥレジスタおよびＨＯレジスタからのビットと結合され、優先順位と一緒に、決定ツリー５２８に送られる。ステップ４において、最高の待機優先順位レジスタ５３０（ＨＰＰＲ）内の値は、ＲＩＳＣプロセッサコアに対する現在のペンディングサービスの最高の優先順位を示す。ステップ５において、チャネルエラーレジスタ５１６は、チャネルが待機中であることを捕捉し、他の以降のイベントが、そのチャネル上で検出される。ステップ６において、そのチャネルがすでにサービスを受けた場合には、ＩＰＣＭコアが、チャネルペンディングレジスタ５１０内の１つのビットをクリアする。クリアされると、他のイベントがすでに検出されている場合には、そのチャネルが再設定される。
【０１０９】
ｄｏｎｅ命令を実行すると、プログラム制御ユニットは、コンテキスト切替えサブルーチンにジャンプし（付録Ｂ−ＩＰＣＭのＲＩＳＣプロセッサコア用のＲＯＭスクリプトの例参照）、現在のコンテキストをメモリに転送する。（図５には示していないが、ＩＰＣＭのＲＩＳＣプロセッサコア内に位置する）ＣＣＲ（現在のチャネルレジスタ）が、ＨＰＣＲ５３２（最高ペンディングチャネルレジスタ）に切り替わる、「真のコンテキスト切替え」が現在のコンテキストがメモリに転送された後で、ＴｓｔＰｅｎｄｉｎｇＡＬｎｄＳｗｉｔｃｈ命令の実行時に行われる。
【０１１０】
コンテキストスイッチプログラム（付録Ｂ参照）は、６つの部分、すなわち、（１）現在のコンテキストのスピンベースアドレスのロード；（２）現在のコンテキストのレジスタのメモリへの転送；（３）ペンディングチャネルの試験と適切な反応（ＴｓｔＰｅｎｄｉｎｇＡＬｎｄ　Ｓｗｉｔｃｈ）；（４）新しいコンテキストのベースアドレスのロード；（５）新しいコンテキストのダウンロード；（６）シャドーレジスタのコピーに分割をすることができる。
【０１１１】
ＴｓｔＰＰｅｎｄｉｎｇＡｎｄＳｗｉｔｃｈ命令の実行の際に、（ＨＥ［ｉ］｜ＨＯ［ｉ］）＆（ＥＰ［ｉ］｜ＥＯ［ｉ］＆ＤＥ［ｉ］｜ＤＯ［ｉ］）の修正または優先順位の修正のために、もはやＨＰＰＲ５３０（最高待機優先順位レジスタ）がヌルでない場合には、ＲＩＳＣコアは、アイドルモードを入力し、そうでない場合には、コンテキストスイッチスクリプトの半分が実行され、選択したチャネルのコンテキストがダウンロードされる。
【０１１２】
アイドルモードを入力した場合には（すなわち、メモリへのコンテキストの転送が終了した後で、ＨＰＣＲ／ＨＰＰＲが空である場合には）、新しいイベントが発生した場合、スクリプトの後の半分が引き続き実行され、新しいイベントに関連するチャネルのコンテキストのダウンロードが引き続き行われる。
【０１１３】
選択が行われると、（ＨＥ［ｉ］｜ＨＯ［ｉ］）＆（ＥＰ［ｉ］｜ＥＯ［ｉ］＆ＤＥ［ｉ］｜ＤＯ［ｉ］条件がゼロに遷移した場合でも、または、このチャネルに関連する優先順位がホストにより動的に修正された場合でも、現在のチャネルレジスタの状態（ＣＣＲ）および現在のチャネル優先順位（ＣＰＲｉ）を修正することができない。
【０１１４】
サブルーチンＨＰＣＲ／ＨＰＰＲの転送部分が空になった場合には、引渡し（ｄｏｎｅ＿０００）は、種々の方法で処理される。この特殊な場合には、今メモリに転送したばかりのコンテキストへのスクリプトおよびダウンロードが引き続き行われる。
【０１１５】
ＩＰＣＭ１１６の機能ユニットの中のいくつかについて以下に説明する。
ある実施形態の場合には、カスタムＩＰＣＭは、ＲＩＳＣプロセッサに接続している巡回冗長検査（ＣＲＣ）ユニット（図示せず）を含む。このユニットは、８〜３２段階の一組の所与の多項式のＣＲＣ計算を行い得る。ＣＲＣユニットは、２つの３２ビットレジスタ、すなわち、多項式を選択するＣＲＣアルゴリズムＣＡ、および各処理の後でデータを蓄積するＣＲＣチェックサムＣＳを含む。
【０１１６】
多項式を選択し、計算を開始するために、両方のレジスタをロードした後で、ＣＲＣユニットは、各クロックサイクル毎に１つのバイトを処理する。
ＤＳＰ　ＤＭＡユニット３１０は、ＲＩＳＣプロセッサコア３０２から命令を受信する。ＤＳＰ　ＤＭＡユニット３１０は、ＤＭＡアクセスにより、ＤＳＰメモリから／へデータを読み取ることも書き込むことも可能で、またクォーツＤＭＡに３２ビットおよび１６ビット転送を行うことも可能である。
【０１１７】
ＤＳＰ　ＤＭＡ３１０は、２つの主なレジスタ、すなわち、クォーツメモリで読取り、または書込みを行うデータのアドレスを含むアドレスレジスタ（ＤＡ）と、データ自身を含むデータレジスタ（ＤＤ）を使用する。
【０１１８】
その先取り機能およびフラッシュ機能により、ＤＳＰ　ＤＭＡ３１０は、ＤＳＰ　ＤＭＡ３１０が、終了するために読取コマンドまたは書込コマンドを受信すべくに待機している状態で、他の命令を実行し得るように、ＲＩＳＣプロセッサコアの動作を中止しないで、クォーツメモリにアクセスし得る。
【０１１９】
ホストＤＭＡユニット３１２は、ＲＩＳＣプロセッサコア３０２（ＩＰＣＭコアと呼ぶこともある）から命令を受信する。ホストＤＭＡユニット３１２は、ＤＭＡアクセスにより、埋設ＤＲＡＭ１０８または外部メモリ２４４から／へデータを読み取りも書き込み可能で、また３２ビット、１６ビットおよび８ビット転送を行うことも可能である。外部メモリ２４４へのアクセスは、ＭＣＯＲＥローカルバス（ＭＬＢ）スイッチを通して行われる。
【０１２０】
ホストＤＭＡ３１２は、２つの主なレジスタ、すなわち、クォーツメモリ内で読取り、または書込みを行うデータのアドレスを含むアドレスレジスタ（ＭＡ）と、データ自身を含むデータレジスタ（ＭＤ）を使用する。
【０１２１】
その先取り機能およびフラッシュ機能により、ホストＤＭＡ３１２は、ホストＤＭＡユニット３１２が終了するために読取コマンドまたは書込コマンドを受信するために待機している状態で他の命令を実行すべく、ＲＩＳＣプロセッサコア３０２の動作を中止しないで、ホストプロセッサ（例えば、ＭＣＯＲＥ）のメモリ（例えば、ｅＤＲＡＭ１０８）にアクセスし得る。
【０１２２】
ＩＰＣＭバススイッチにより、ホストＤＭＡユニット３１２は、ＭＣＯＲＥローカルバス（ＭＬＢ）に接続しているＭＣＯＲＥのＥＩＭモジュールを通して外部メモリにアクセスし得る。また、ＩＰＣＭバススイッチにより、（ＭＣＯＲＥ試験モジュール、ＮＥＸＵＳモジュールまたはＧＥＭモジュールのような）他のデバイスもＭＬＢを制御し得る。
【０１２３】
さらに、ＩＰＣＭ１１６は、２つの電力モード、すなわち、実行モードおよびアイドルモードを内部的に管理する。実行モードの場合には、ＩＰＣＭ１１６のすべてのモジュールは、１００ＭＨｚのＩＰＣＭクロックを受信する。チャネルが能動状態にある場合には、ＩＰＣＭ１１６は実行モードになる。
【０１２４】
アイドルモードの場合には、すべてのチャネルがサービスを受け、待機状態にあるチャネルはない。このモードはリセット後のモードである。ＩＰＣＭモジュールの大部分、ＲＩＳＣプロセッサコア、機能ユニットおよびバス調停ロジックは、もう１００ＭＨｚのクロックを受信しない。タスクスケジューラ３０４は、引き続き機能し続ける。何故なら、タスクスケジューラ３０４は、入力イベントをサンプリングしなければならないし、新しいチャネルにサービスするために、何時ＲＩＳＣプロセッサコア３０２を再スタートしなければならないかを決定しなければならないからである。ホスト制御モジュール３１６、およびＩＰＣＭ１１６の制御レジスタを保持しているＤＳＰ制御モジュール３１４は、依然として、１００ＭＨｚのクロックを受信する。何故なら、ＩＰＣＭ１１６がアイドルモードであっても、ホストプロセッサ１０６またはＤＳＰ１０２は、これらレジスタにアクセスし得るからである。アイドルモードの場合には電力が節減される。このことはバッテリーを電源とする場合には重要なことである。
【０１２５】
また、ホストプロセッサは、クロックコントローラによりＩＰＣＭ１１６を完全にストップし得る。この場合、ＩＰＣＭ１１６はクロックを全然受信しないので、ＩＰＣＭ１１６はそのクロックを再スタートすることはできない。ＩＰＣＭ１１６クロックを回復し得るのは、ホストプロセッサである。ＩＰＣＭ１１６を通してデータ転送を行う必要がない場合には、この機能モードは役に立つ。
【０１２６】
リセット（リセットモジュールから受信したか、またはホストプロセッサにより要求されたソフトウェアリセット）の後で、ＩＰＣＭ１１６はアイドルモードになる。ＩＰＣＭ１１６は、チャネルが作動すると、アドレス０に位置するブートコードを起動する。チャネルの作動は、正の優先順位をプログラムし、ＥＶＴＰＥＮＤレジスタ内にチャネルビットを設定した後で、ホストプロセッサにより行い得る。
【０１２７】
ＩＰＣＭ１１６がアイドルモードである場合には、コア上で命令を実行しなければならないＯｎＣＥデバッグ動作を行うことはできない。前もって、チャネルを作動させて、ＩＰＣＭを覚醒しておかなければならない。しかし、ＯｎＣＥを通してデバッグ要求を行い、次に、任意のチャネルを作動することは可能である。この場合、ＩＰＣＭクロックがスタートし、コアは、命令を全然実行しないで、直ちにデバッグモードに入る。詳細については、ＯｎＣＥについての章を参照されたい。さらに、ＩＰＣＭクロックゲート制御をオフにするために、ＪＴＡＧモジュールを使用し得る。そうすると、直ちに応答し得て、チャネルが能動状態でなくてもよい。このモードの場合には、クロックは、ＩＰＣＭモードが何であろうと、何時でも動作している。
【０１２８】
ＩＰＣＭ１１６の、プログラマブルＤＭＡデータチャネルを動作するために使用するソフトウェアインタフェイスについて以下に説明する。
図６について説明すると、この図は、ＩＰＣＭ内のポインタおよびメモリバッファ、および各プログラマブル直接メモリアクセスデータチャネル用に使用されるホストプロセッサメモリである。この図は、また、ポインタレジスタ６０４、チャネルイネーブルレジスタ６０６、ＤＳＰオーバライドレジスタ６０８、およびイベントオーバライドレジスタ６１０を含むテーブル６０２を含むＩＰＣＭを示す。また、この図は、チャネルポインタ６１３を備えるテーブル６１２を含むシステムＲＡＭ６０１も示す。システムＲＡＭ６０１は、バッファポインタ６１６、カウントフィールド６１９、およびモードフィールド６２０を備えるテーブル６１４を含む。また、システムＲＡＭは、バッファ６１８も含む。
【０１２９】
この節においては、ＩＰＣＭ１１６とホストプロセッサ１０６（ホストＭＣＵと呼ぶこともある）またはＤＳＰ１０２との間で使用するバッファ管理機構について説明する。ＩＰＣＭは、能動状態にある各チャネル用の１つまたはそれ以上のメモリバッファの中の最低限度のものを持つようになっている。これらのチャネルバッファは、それぞれ、ＭＣＵ、およびＤＳＰ（例えば、ＤＳＰ　ＲＡＭ１０４）のシステムＲＡＭ６０１（例えば、ｅＤＲＡＭ１０８）内に位置していなければならない。バッファは、ＭＣＵおよびＤＳＰのシステムＲＡＭ６０１の領域内に常駐する、リンクしたリストとして実行されている仮想制御レジスタを使用することにより記述および管理される。ホストＭＣＵポートの制御構造について以下に説明する。
【０１３０】
テーブル６０２は、ＩＰＣＭ１１６内に位置するハードウェアレジスタのグループである。ポインタレジスタ６０４は、ホストコアがアクセスすることができるポインタ６１３の構造を持つテーブル６１２へのポインタを含む３２ビットの書込／読取レジスタである。ポインタ６１３および６０４は、システムＲＡＭ６０１内の任意のメモリ位置を参照する。
【０１３１】
システムプログラマは、テーブル６１２および６１４が、主システムＲＡＭ６０１（例えば、スマートホンの場合には、ｅＤＲＡＭ１０８）内に位置する場合に、最適な性能を実現することを知っていなければならない。
【０１３２】
テーブル６１２は、３２のエントリの固定構造体である。各エントリは、３２のＩＰＣＭ　ＤＭＡデータチャネルの中の１つを表し、３２ビットのポインタを含む。ＩＰＣＭ１１６は、テーブル６１２を探すために、テーブル６０２内のポインタを使用する。３２すべてのチャネルが使用されていない場合でも、テーブル６１２全体が表示されなければならない。ＩＰＣＭ１１６は、（例えば、チャネルイネーブルレジスタ６０６内に設定された１つのビットのような）動作可能になっていないチャネルに対して、ポインタエントリを使用しない。
【０１３３】
テーブル６０２および６１２内のポインタの値は、ＩＰＣＭ動作セッション中、「静的」状態を維持するようになっている。
テーブル６１４は、動作コマンドおよび状態レジスタ、バッファサイズ記述子（例えば、カウントフィールド６１９）、物理バッファ６１８自身へのポインタ６１６を含む。３２の各チャネルに対して、専用テーブル６１４が必要であり、リンクされたリスト構造体として実行される。この技術を使用することにより、１つのＤＭＡチャネルに対して、１つまたはそれ以上のバッファ６１８を割り当てることができ、それにより、バッファ交換およびデイジー結合のような種々の実行スキームを実行し得る。
【０１３４】
動作中、ＩＰＣＭ１１６は、リスト内に記載されている第１のバッファのコマンドレジスタ素子を読み取り、満杯になるかまたは何らかのイベントにより閉鎖されるまで、そのバッファ６１８をライズする。ＩＰＣＭ１１６は、リンクされているリストを参照し、１つが宣言された場合には、リスト内の次のバッファを開く。ＩＰＣＭ１１６がリストの終わりに近づいた場合には、すべてのバッファ６１８は、満杯になるか閉鎖されて不毛になっていて、テーブル６１４により参照された特定のＩＰＣＭチャネルが閉鎖される。チャネルは、各チャネル用のテーブル６１４の内容をＭＣＵ更新し、その後で、ＩＰＣＭ内に位置するチャネルイネーブルレジスタ６０６内の適当なチャネルイネーブルビットを設定することにより、再スタートさせ得る。
【０１３５】
供給されるモードを使用して、種々の動作シナリオが可能になる。バッファ６１８は、交互に交換するものであってもよいし、デイジー結合のものであってもよいし、またはモジュロモードで動作するものであってもよい。モードレジスタ内の適当な制御ビットを構成することにより、特定のバッファが満杯になるか、閉鎖された場合に、ホストＭＣＵまたはＤＳＰに中断が発生する場合がある。
【０１３６】
テーブル６１４の構造体内のモードフィールド６２０は、セマフォとして動作する「Ｄ」ビットと呼ばれる制御ビットを含む。設定すると、バッファはＩＰＣＭにより所有され、ＭＣＵは、カウントフィールド、ポインタフィールド、状態フィールド、および制御フィールドを変更してはならない。Ｄ＝０の場合には、ＭＣＵは、その特定のバッファを占有し、ＩＰＣＭは制御フィールドまたはバッファスペースの何処にも書込みを行わない。
【０１３７】
クォーツＤＳＰへのチャネルインタフェイスは、ホストＭＣＵへのインタフェイスに類似していることに留意されたい。
ホストプロセッサプログラミングモデル
ホストプロセッサ１０６（単に、ホストと呼ぶこともある）は、いくつかのインタフェイスレジスタによりＩＰＣＭ１１６を制御する。これらのインタフェイスレジスタすべてには、１待機状態を登録する１回コマンドレジスタ（ＯＮＣＥ＿ＣＭＤ）、および同様に１待機状態を必要とするＣＨＥＮＥＮＢＬ　ＲＡＭを除いて、ｉｐバスインタフェイス上で、０待機状態でアクセスされる。これらのレジスタは、すべてＩＰＣＭクロックによりクロック制御される（このことは、ホストが任意のレジスタにアクセスしたい場合には、ＩＰＣＭクロックが確実に動作している状態にしておかなければならないことを意味する）。
【０１３８】
読取および書込許可サイズに関しては、任意の読取動作の場合、読取りのサイズいかんにかかわらず、レジスタの３２ビットの内容がバス上に置かれる（すなわち、バイトイネーブルは無視される）。任意の書込動作により、サイズが何であっても、何時でも、ＲＡＭ内のバス（３２ビット）上に全サイズ語を記憶しているＣＨＮＥＮＢＬ　ＲＡＭへの書込みを除いて、必要なサイズにより、レジスタの内容が更新される（すなわち、バスからレジスタに対応するバイトが書き込めるように、バイトイネーブルが使用される）。
【０１３９】
本発明のある実施形態によるＩＰＣＭ１１６を制御する際に使用するホストプロセッサのレジスタについて以下に説明する。
Ｃ０ＰＴＲ（チャネル０ポインタ）。このレジスタは、チャネル０に対する、それで起動するチャネル制御ブロックのアレイの、ホストメモリ内の、３２ビットアドレスを含む（制御チャネル）。ホストは、読取／書込アクセスを持ち、ＩＰＣＭは、読出し専用アクセスを有する。リセットした場合、このレジスタはすべてゼロになる。このレジスタは、それが、１つのチャネル（例えば、チャネル０）を動作可能にする前に、ホストにより初期化しなければならない。
【０１４０】
ＩＮＴＲ−チャネル中断。このレジスタは、３２のＨＩ［ｉ］ビットを含む。任意のビットが設定されると、ホストに対して中断が起こる。このレジスタは、ホストに対する「１書込」レジスタである。ホストが、このレジスタ内の１つのビットを設定すると、対応するＨＩ［ｉ］ビットがクリアされる。その中断がサービスされた場合には、中断サービスルーチンは、個々のチャネルビットをクリアしなければならない。クリアしないと、中断状態が継続する。ＩＰＣＭは、対応するＤＯＮＥ命令が実行されると、現在のチャネルに対応するＨＩ［ｉ］ビットを設定する。
【０１４１】
ＳＴＯＰ／ＳＴＡＴ−チャネルストップ／チャネル状態。この３２ビットレジスタは、各チャネルに対して１つのビットを有する。このレジスタは、ホストに対する「１書込」レジスタである。ホストが、このレジスタのビットｉ内に１を書き込むと、ホストは、ＨＥ［ｉ］ビットおよびＳＴＡＲＴ［ｉ］ビットをクリアする。このレジスタを読み取ると、ＨＥ［ｉ］ビットのカレント状態が発生する。
【０１４２】
ＳＴＡＲＴ−チャネルスタート。この３２ビットレジスタは、各チャネルに対して１つのビットを持つ。このレジスタは、ホストに対する「１書込」レジスタである。対応するＨＥ［ｉ］ビットがクリアされている場合には、ＳＴＡＲＴ［ｉ］ビットを設定することはできない。ホストが、１を書き込むことにより、ＳＴＡＲＴ［ｉ］ビットを設定しようとすると、対応するＨＥ［ｉ］ビットがクリアされている場合、ＳＴＡＲＴ［ｉ］レジスタ内のそのビットは、クリアされたままであり、ＨＥ［ｉ］ビットが設定される。対応するＨＥ［ｉ］ビットがすでに設定されている場合には、ＳＴＡＲＴ［ｉ］ビットが設定される。次に、ＩＰＣＭチャネルｉが、ｄｏｎｅ命令により、ＨＥ［ｉ］ビットをクリアしようとすると、ＳＴＡＲＴ［ｉ］レジスタ内のそのビットがクリアされ、ＨＥ［ｉ］ビットは、ＳＴＡＲＴ［ｉ］ビットの古い値になる。このレジスタを読み取ると、ＳＴＡＲＴ［ｉ］ビットのカレント状態になる。この機構により、各チャネル毎にホスト−パイプライン間の２つの起動コマンドができる。
【０１４３】
ＥＶＴＯＶＲ−チャネルイベントオーバライド。このレジスタは、３２のＥＯ［ｉ］ビットを含む。このレジスタ内の１つのビットを設定すると、対応するチャネルのスケジュールを作成している場合には、ＩＰＣＭはイベントを無視する。このレジスタ内に書き込むと、前の値に対して上書きが行われる。
【０１４４】
ＤＳＰＯＶＲ−チャネルＤＳＰオーバライド。このレジスタは、３２のＤＯ［ｉ］ビットを含む。このレジスタ内の１つのビットを設定すると、対応するチャネルのスケジュールを作成している場合には、ＩＰＣＭはＤＳＰイネーブルを無視する。
【０１４５】
ＨＯＳＴＯＶＲ−チャネルホストオーバライド。このレジスタは、３２のＨＯ［ｉ］ビットを含む。このレジスタ内の１つのビットを設定すると、対応するチャネルのスケジュールを作成している場合には、ＩＰＣＭはＨＯＳＴイネーブルを無視する。
【０１４６】
ＥＶＴＰＥＮＤ−チャネルイベントペンディング。このレジスタは、３２のＥＰ［ｉ］ビットを含む。このレジスタを読み取ると、ホストは、どのチャネルが待機中のイベントを持っているかを判断し得る。このレジスタ内の１つのビットを設定すると、このチャネル宛ての周辺装置イベントが発生したかのように、ＩＰＣＭがスケジュール作成を再評価する（これは、「１書込」機構である。「０」を書き込んでも、対応するビットはクリアされない）。これはチャネルを始動するのに役に立つ。そのため、第１のイベントに対して待機状態なる前に、初期化が行われる。タスクスケジューラは、また、受信したイベントにより、ＥＶＴＰＥＮＤレジスタ内のビットを設定することができる。ＥＰ［ｉ］ビットは、チャネルＩスクリプトを実行している場合には、ｄｏｎｅ命令によりクリアし得る。
【０１４７】
ＤＳＰＥＮＭＢＬ−チャネルＤＳＰイネーブル。このレジスタは、（ＤＳＰ制御モジュールまたは制御レジスタからの）３２のＤＥ［ｉ］ビットを含む。このレジスタにより、ホストは、ＤＳＰがどのチャネルを動作可能にしたのかを知り得る。
【０１４８】
ＲＥＳＥＴ−リセットレジスタ。このレジスタは、２つの制御ビットを含む。すなわち、（１）リセットビット（ＲＥＳＥＴ［０］）：設定されると、ＩＰＣＭをソフトウェアリセット状態に保持させる。それを解放可能にする前に、数サイクル、リセット状態を保持しなければならない。実際には、これらサイクル中、ソフトリセット（ｓｏｆｔ＿ｒｓｔＢロー）を能動状態に維持するために、カウントを使用する。ｓｏｆｔ＿ｒｓｔＢ信号は、リセットビットが設定されると、ローの状態に駆動される。リセットビットはＩＰＣＭによりクリアされる。（２）ｒｅｓｃｈｅｄビット（ＲＥＳＴ［ｉ］）：設定されると、スクリプトがｄｏｎｅ命令を実行したかのように、ＩＰＣＭは強制的に再スケジュールされる。これにより、ホストは、ＳＴＯＰレジスタにより、そのＨＥ［ｉ］ビットをクリアすることにより、チャネル上の暴走スクリプトから回復可能で、次に、ＲＥＳＥＴレジスタのＲＥＳＣＨＥＤビットにより、強制的に再スケジュールする。コンテキストスイッチがスタートすると、ｒｅｓｃｈｅｄビットがＩＰＣＭによりクリアされる。
【０１４９】
ＥＶＴＥＲＲ−イベントエラーレジスタ。このレジスタは、入力イベントが検出された場合に、ホストに警告するためにＩＰＣＭにより使用され、すでにペンディング中のチャネルまたはサービスを受けているチャネルをトリガする。このことは、恐らく、そのチャネルに対してデータのオーバフローがあることを意味する。このレジスタは、スケジューラに対する「１書込」レジスタである。このレジスタはフラグを設定することだけが可能である。ホストによりこのレジスタが読み取られるか、ＩＰＣＭリセット中に、フラグはクリアされる。
【０１５０】
チャネルｉをトリガするイベントを、イベント入力ピンを通して受信した場合で、ＥＰ［ｉ］ビットがすでに設定されている場合には、任意のＥＶＴＥＲＲ［ｉ］ビットが設定される。ＥＰ［ｉ］ビットがすでに設定されているので、ホストがＥＰ［ｉ］ビットを設定しようとしても、ＥＶＴＥＲＲ［ｉ］ビットは変化しない。
【０１５１】
このレジスタは、ＤＳＰ　ＥＶＴＥＲＲと同じものではない。ホストがそれを読み取り、クリアすると、ＤＳＰレジスタ内で、同じ情報を依然として入手し得る。
【０１５２】
ＩＮＴＲＭＡＳＫ−チャネル中断マスクフラグ。このレジスタは３２の中断発生マスクビットを含む。ＩＮＴＲＭＡＳＫ［ｉ］ビットを設定すると、チャネルｉ上でイベントエラーが検出される場合は、何時でもＨＩ［ｉ］ビットが設定され、中断がホストに送られる（すなわち、ＥＶＴＥＲＲ［ｉ］ビットが設定される）。
【０１５３】
ＰＳＷ−Ｓｃｈｅｄｕｌｅｒ状態。これは、下記の状態情報、すなわち、［４：０］ＣＣＲ（現在のチャネルレジスタ）；［７：５］ＣＣＰ（現在のチャネル優先順位）；［１２：８］ＮＣＲ（次のチャネルレジスタ）；および［１５：１３］ＮＣＰ（次のチャネル優先順位）を含む１６ビットレジスタである。
【０１５４】
ＥＶＴＥＲＲＤＢＧ−デバッグ用のイベントエラーレジスタ。このレジスタは、それを読み取っても、その内容が変化しない点を除けば、ＥＶＴＥＲＲと同じレジスタである（すなわち、このレジスタはクリアされない）。そのアドレスはデバッグモードで使用するためのものである。ＭＣＵ　ＯｎＣＥは、修正しないで、そのレジスタの値をチェックし得る。
【０１５５】
ＯＮＣＥ＿ＥＮＢ−ＯｎＣＥイネーブル。この１ビットレジスタは、ＯｎＣＥ制御ソースを選択する。クリアされて（０）になった場合、ＪＴＡＧは、ＯｎＣＥを制御する。（１）に設定されると、ホストは下記のレジスタによりＯｎＣＥを制御する。リセットの後でＯｎｃｅイネーブルビットがクリアされる（ＪＴＡＧ制御）。
【０１５６】
ＯＮＣＥ＿ＣＭＤ−ＯｎＣＥコマンドレジスタ（１待機状態）。このレジスタに書き込むと、ＯｎＣＥが、書き込まれたコマンドを実行する。必要な場合には、ＯＮＣＥ＿ＤＡＴＡレジスタおよびＯＮＣＥ＿ＩＮＳＴＲレジスタに、このレジスタにコマンドを書き込む前に、正しい値をロードしなければならない。
【０１５７】
ＣＳＷＡＤＤＲ−コンテキスト切替えアドレス。コンテキスト切替えアドレス（ビット１３−０）およびイネーブルビット（１４）を含む１５ビットレジスタ。イネーブルビットが設定されると、コンテキスト切替えルーチンは、ビット１３−０内に含まれているアドレスのところから、起動したものと見なされる。このレジスタのリセット値は、イネーブルビットに対しては０であり、コンテキスト切替えアドレスに対しては、小数点３２である。
【０１５８】
ＩＬＬＩＮＳＴＡＤＤＲ−違法命令捕捉アドレス。このレジスタのビット１３−０は、違法命令が実行された場合に、ＩＰＣＭがジャンプするアドレスを含む。このレジスタは、リセットされた場合、０ｘ０００１になる。
【０１５９】
ＣＨＮ０ＡＤＤＲ−チャネル０アドレス。このレジスタは、ブートコードまたはＩＰＣＭにより使用される１３ビットレジスタである。リセットすると、このレジスタは、ＲＯＭ内の標準ブートルーチン（チャネル０ルーチン）をポイントする。このアドレスを変更することにより、ユーザは、自分自身のルーチンでブートシーケンスを実行し得る。ブートコードの最初の命令は、このレジスタの内容を取り出し（それは、ＩＰＣＭメモリスペース内にマッピングされる）、所与のアドレスにジャンプする。このレジスタのリセット値は、０ｘ００５０（少数８０）である。
【０１６０】
ＣＨＮＥＮＢＬ−チャネルイネーブルＲＡＭ。ホスト制御モジュールは、３２×３２のチャネルイネーブルＲＡＭを含む。このチャネルイネーブルＲＡＭは、イベント／チャネル対応マップを含む。任意のイベントは、上記ＲＡＭの内容により、チャネルの任意の可能な組合わせをトリガし得る。
【０１６１】
ＣＨＮＰＲＩ−チャネル優先順位レジスタ。この３２のレジスタは、各チャネルの優先順位を含む。その数は１〜７の範囲内である。０はどのチャネルもペンディングされていない場合に、それを検出するために、ＩＰＣＭハードウェアが使用する予約値である。
【０１６２】
ＤＳＰプログラミングモデル
ＤＳＰ１０２は、ホストプロセッサ１０６（すなわち、ホスト）と比較すると、いくつかのインタフェイスレジスタによりＩＰＣＭ１１６に対して、ある程度制約された制御を行う。各レジスタは、３２すべてのチャネルを収容するために、２つの１６ビット語を占有する。すべてのレジスタは、ホストプロセッサのレジスタと同じ方法で動作する。ＣＥＶＴＯＶＲレジスタおよびＣＤＳＰＯＶＲレジスタは、ＤＳＰインタフェイス内では実行されない。
【０１６３】
Ｃ０ＰＴＲのようなすべてのアドレスは、クォーツメモリスペース（４ギガバイト）内の任意位置をアドレスし得る１つの３２ビット語からなる。
すべてのレジスタは、ＩＰＣＭクロックによりクロック制御される（このことは、ＤＳＰがこれらのレジスタにアクセスしていると考えられている場合に、ホストは、ＩＰＣＭクロックが確実に動作しているようにしなければならないことを意味する）。
【０１６４】
読取および書込許可サイズに関しては、任意の読取動作の場合、読取りのサイズいかんにかかわらず、レジスタの３２ビットの内容が、バス上に置かれる（すなわち、バイトイネーブルは無視される）。任意の書込動作により、必要なサイズにより、レジスタの内容が更新される（すなわち、バスからレジスタに対応するバイトが書き込めるように、バイトイネーブルが使用される）。
【０１６５】
本発明のある実施形態によるＩＰＣＭ１１６を制御する際に使用するＤＳＰのレジスタについて以下に説明する。
Ｃ０ＰＲＴ−チャネル０ポインタ。このレジスタは、チャネル０に対するＣＣＳからスタートするチャネル制御ブロックのアレイのＤＳＰメモリ内の３２ビットアドレスを含む（制御チャネル）。ＤＳＰは、読取／書込アクセスを持ち、ＩＰＣＭは、読出し専用アクセスを持つ。リセットした場合、このレジスタはすべてゼロになる。このレジスタは、任意のチャネルが動作可能になる前に、ＤＳＰにより初期化されなければならない。
【０１６６】
ＩＮＴＲ−チャネル中断。このレジスタは、３２のＤＩ［ｉ］ビットを含む。任意のビットが設定されると、ホストに対して中断が起こる。このレジスタは、ホストに対する「１書込」レジスタである。ホストが、このレジスタ内の１つのビットを設定すると、対応するＤＩ［ｉ］ビットがクリアされる。その中断がサービスされた場合には、中断サービスルーチンは、個々のチャネルビットをクリアしなければならない。クリアしないと、中断状態が継続する。ＩＰＣＭは、対応するｄｏｎｅ命令が実行されると、現在のチャネルに対応するかＤＩ［ｉ］ビットを設定する。
【０１６７】
ＳＴＯＰ／ＳＴＡＴ−チャネルストップ／チャネル状態。この３２ビットレジスタは、各チャネルに対して１つのビットを持つ。このレジスタは、ＤＳＰに対する「１書込」レジスタである。ＤＳＰが、このレジスタのビットＩ内に１を書き込むと、ＤＳＰは、対応するＤＥ［ｉ］ビットおよびＳＴＡＲＴ［ｉ］ビットをクリアする。このレジスタを読み取ると、ＤＥ［ｉ］ビットの現在の状態が発生する。
【０１６８】
ＳＴＡＲＴ−チャネルスタート。この３２ビットレジスタは、各チャネルに対して１つのビットを持つ。このレジスタは、ＤＳＰに対する「１書込」レジスタである。対応するＤＥ［ｉ］ビットがクリアされている場合には、ＳＴＡＲＴ［ｉ］ビットを設定することはできない。ＤＳＰが、１を書き込むことにより、ＳＴＡＲＴ［ｉ］ビットを設定しようとすると、対応するＤＥ［ｉ］ビットがクリアされている場合には、ＳＴＡＲＴ［ｉ］レジスタ内のそのビットは、クリアされたままであり、ＤＥ［ｉ］ビットが設定される。対応するＤＥ［ｉ］ビットがすでに設定されている場合には、ＳＴＡＲＴ［ｉ］ビットが設定される。次に、ＩＰＣＭチャネルＩが、ｄｏｎｅ命令によりＤＥ［ｉ］ビットをクリアしようとすると、ＳＴＡＲＴ［ｉ］レジスタ内のそのビットがクリアされ、ＤＥ［ｉ］ビットは、ＳＴＡＲＴ［ｉ］ビットの古い値になる。このレジスタを読み取ると、ＳＴＡＲＴ［ｉ］ビットの現在の状態になる。この機構により、各チャネル毎にＤＳＰ−パイプライン間の２つのスタートコマンドができる。
【０１６９】
ＥＶＴＥＲＲ−イベントエラーレジスタ。このレジスタは、入力イベントが検出された場合に、ＤＳＰに警告するためにＩＰＣＭにより使用され、すでに待機中のチャネル、またはサービスを受けているチャネルをトリガする。このことは、恐らく、そのチャネルに対してデータのオーバフローがあることを意味する。このレジスタは、スケジューラに対する「１書込」レジスタである。このレジスタは、フラグを設定可能である。ＤＳＰによりこのレジスタが読み取られるか、ＩＰＣＭリセット中に、フラグはクリアされる。
【０１７０】
チャネルｉをトリガするイベントを、イベント入力ピンを通して受信した場合、ＥＰ［ｉ］ビットがすでに設定されている場合には、任意のＥＶＴＥＲＲ［ｉ］ビットが設定される。ＥＰ［ｉ］ビットがすでに設定されているので、ホストがＥＰ［ｉ］ビットを設定しようとしても、ＥＶＴＥＲＲ［ｉ］ビットは変化しない。
【０１７１】
このレジスタは、ホストＥＶＴＥＲＲと同じものではない。ＤＳＰがそれを読み取り、クリアしても、ホストレジスタ内で、同じ情報を依然として入手することができる。
【０１７２】
ＩＮＴＲＭＡＳＫ−チャネル中断マスクフラグ。このレジスタは３２の中断発生マスクビットを含む。ＩＮＴＲＭＡＳＫ［ｉ］ビットを設定すると、チャネルｉ上でイベントエラーが検出された場合は、何時でも、ＤＩ［ｉ］ビットが設定され、中断がＤＳＰに送られる（すなわち、ＥＶＴＥＲＲ［ｉ］ビットが設定される）。
【０１７３】
ＰＳＷ−Ｓｃｈｅｄｕｌｅｒ状態。これは、下記の状態情報、すなわち、［４：０］ＣＣＲ（現在のチャネルレジスタ）；［７：５］ＣＣＰ（現在のチャネル優先順位）；［１２：８］ＮＣＲ（次のチャネルレジスタ）；および［１５：１３］ＮＣＰ（次のチャネル優先順位）を含む１６ビットレジスタである。
【０１７４】
ＥＶＴＥＲＲＤＢＧ−デバッグ用のイベントエラーレジスタ。このレジスタは、それを読み取っても、その内容が変化しない点を除けば、ＥＶＴＥＲＲと同じレジスタである（すなわち、このレジスタはクリアされない）。そのアドレスは、デバッグモードで使用するためのものである。ＤＳＰ　ＯｎＣＥは、修正しないで、そのレジスタの値をチェックし得る。
【０１７５】
ＩＰＣＭプログラミングモデル
各プログラマブルＤＭＡデータチャネルは、スクリプトが使用するための８つの３２ビット汎用レジスタを含む。汎用レジスタ０は、ループ命令のための専用機能を持つが、そうでない場合には、任意の目的のために使用し得る。
【０１７６】
機能ユニット状態。各チャネルコンテキストは、機能ユニットの一部であるある状態を持つ。この状態の特定の割当ては機能ユニットの定義の一部である。この状態は、コンテキストスイッチ上にセーブ／復元されなければならない。
【０１７７】
プログラムカウンタレジスタ（ＰＣ）。ＰＣは１４ビットレジスタである。命令の幅は１６ビットであり、ＩＰＣＭ内のすべてのメモリの幅は３２ビットであるので、ＰＣの下位のビットはカレント命令を含む３２ビットの半分を選択する。ゼロの下位ビットは、その語の最上位の半分（すなわち、ビッグエンディアン）を選択する。
【０１７８】
フラグ。各チャネルは、４つのフラグを持つ。Ｔビットは、いくつかの算術機能および試験機能の状態を反映する。このビットは、加算または減算の結果がゼロである場合に設定され、そうでない場合にクリアされる。このビットは、また、試験したビットのコピーでもある。最後に、このビットは、ループカウンタ（ＧＲｅｇ０）がゼロになった場合にも設定し得る。ハードウェアループの最後の命令が、Ｔフラグを修正し得る動作である場合には、Ｔビットに対するその効果は捨てられ、代わりにＧＲｅｇ０状態が使用される。
【０１７９】
２つの追加のビット、ＳＦビットおよびＤＦビットは、それぞれデータソースのロードおよび宛先への記憶による、エラー状態を表示するために使用される。アクセスエラーが発生すると、これらのビットが設定され、処理が成功するとクリアされる。これらのビットは、特定の命令（ＣＬＲＦおよびＬＯＯＰ）によってもクリアし得る。ＳＦ（ソース故障）は、ＬＤおよびＬＤＦをロードすることにより更新される。ＤＦ（宛先故障）は、ＳＴおよびＳＴＦを記憶することにより更新される。
【０１８０】
アクセスエラーはいくつかの状態、すなわち、ＲＯＭへの書込み、読出し専用のマッピングしたレジスタへの書込み、まだマッピングしていないアドレスへのアクセス、またはアクセスされた場合に、周辺装置が受信した任意の転送エラーにより発生する。
【０１８１】
ＳＦフラグおよびＤＦフラグは、ハードウェアループに大きな影響を持つ。ハードウェアループの始動時に、ＳＦフラグまたはＤＦフラグが設定されると、それはＬＯＯＰ命令によりマスクされないで、ループ本体は実行されない。この場合ループ本体内部では、ロードまたは記憶が対応するＳＦフラグまたはＤＦフラグを設定した場合にはループを直ちに抜け出す。ループの端部でＴフラグの状態を試験すれば（また、ＳＦフラグおよびＤＦフラグの両方を試験すれば）、ループからの抜出しが正常に行われたかどうかを知り得る。何故なら、任意の予測された抜出しの場合には、Ｇｒｅｇ０がゼロになるのが防止され、そのためＴフラグが設定されるのが防止されるからである。故障が最後のループの最後の命令のところで発生した場合にも同様である。
【０１８２】
最後のフラグは、ループモードフラグＬＭである。このフラグは、プロセッサがループモードで現在動作していることを示す。このフラグはループ命令により設定され、最後のループの最後の命令の実行後にクリアされる。
【０１８３】
戻りプログラムカウンタ（ＲＰＣ）。ＲＰＣは４ビットカウンタである。ＲＰＣはサブルーチン命令にジャンプした場合に設定され、サブルーチン命令からの復帰により使用される。命令は、その内容を汎用レジスタへ／から転送するために使用し得る。
【０１８４】
ループモードスタートプログラムカウンタ（ＳＰＣ）。ＳＰＣは、１４ビットカウンタである。ＳＰＣは、その直後の位置へのループ命令により設定される。　ループモードエンドプログラムカウンタ（ＥＰＣ）。ＥＰＣは１４ビットカウンタである。ＥＰＣは、ループの後の次の命令の位置へのループ命令により設定される。
【０１８５】
コンテキスト切替え。各チャネルは８つの汎用レジスタおよび機能ユニットの状態を表す追加コンテキストからなる個々のコンテキストを持つ。能動レジスタおよび機能ユニットは能動チャネルのコンテキストを含む。非能動チャネル内のコンテキストはＩＰＣＭアドレススペースの一部である、ＩＰＣＭ　ＲＡＭ内に記憶される。コンテキスト切替えは、能動レジスタを古いチャネルのコンテキスト領域内に記憶し、新しいチャネルのコンテキスト領域から新しいコンテキストをロードする。コンテキスト切替えは、終了するのに正確に４７のＩＰＣＭサイクルを必要とする。
【０１８６】
カスタムコンテキストスイッチルーチンを定義することが可能である。ユーザはＲＡＭ内の可能な場所にそれを記憶し、そのスタートアドレスをＭＣＯＲＥを通してＣＳＷＡＤＤＲ制御レジスタ内に書き込まなければならない。そのオプションにより、内蔵ルーチンと類似のサイクルカウント（すなわち、４７サイクル）を行うことはできない。何故なら、すべてのロードおよび記憶を完了するのに、ＲＯＭルーチン内の１サイクルではなく、２サイクル（ロード／記憶するのに１サイクル、および次の命令を取り出すのに１サイクル）を必要とするからである。（両方のアクセスは、ＲＡＭを使用する。ということは、これらサイクルを並列に行うことはできないことを意味する）。
【０１８７】
メモリマップドレジスタ。ＩＰＣＭコアは、システムバスを通していくつかのレジスタにアクセスする。
ホストチャネル０ポインタ（ＭＣ０ＰＴＲ）。このポインタは、ＭＣＵメモリスペース内の初期ＩＰＣＭコンテキストのアドレス、およびチャネル０上で動作しているＩＰＣＭブートスクリプトによりロードされるスクリプトを含む。このポインタは、読出し専用レジスタである。
【０１８８】
ＤＳＰチャネル０ポインタ（ＤＣ０ＰＴＲ）。このポインタは、ＤＳＰメモリスペース内の初期ＩＰＣＭコンテキストのアドレス、およびチャネル０上で動作しているＩＰＣＭブートスクリプトによりロードされるスクリプトを含む。現在、未使用である。このポインタは、読出し専用レジスタである。
【０１８９】
現在のチャネルレジスタ（ＣＣＲ）。このレジスタは、そのコンテキストがインストールされるチャネルの５ビットの優先順位を含む。このレジスタは、読出し専用レジスタである。
【０１９０】
現在のチャネル優先順位（ＣＣＰＲ）。このレジスタは、そのコンテキストがインストールされるチャネルの３ビットの優先順位を含む。このレジスタは、読出し専用レジスタである。
【０１９１】
最高ペンディングチャネルレジスタ（ＨＰＣＲ）。このレジスタは、タスクスケジューラが次に実行するために選択したチャネルの復号した３２ビット数を含む。１つのビットは、選択した位置またはチャネルにおいて、「１」に設定される（例えば、ＨＰＣＲが０ｘ０４００００００という値を含んでいる場合には、チャネル２６が、スケジューラが選択した次のチャネルになる）。このレジスタは、読出し専用レジスタである。
【０１９２】
最高ペンディング優先順位（ＨＤＰＲ）。このレジスタは、スケジューラが、次に実行するために選択したチャネルの３ビットの優先順位を含む。このレジスタは、読出し専用レジスタである。
【０１９３】
カレントチャネルポインタ（ＣＣＰＴＲ）。このレジスタは、現在のチャネルに対するコンテキストデータのスタートアドレスを含む。その値は、ＣＯＮＴＥＸＴ＿ＢＡＳＥ＋２０＊ＣＣＲ（ＣＯＮＴＥＸＴ＿ＢＡＳＥ＝０ｘ０８００）である。このレジスタは、読出し専用レジスタである。
【０１９４】
ＣＨＮ０ＡＤＤＲ。このレジスタは、ＭＣＯＲＥによりプログラムされたチャネル０ルーチンのアドレスを含む。このアドレスは、ブートのスタート時に汎用レジスタ内にロードされ、ＩＰＣＭは、それが含むアドレスにジャンプする。デフォールトにより、このアドレスは、ＲＯＭ内の標準ブートルーチンをポイントする。
【０１９５】
アドレススペース。ＩＰＣＭは、２本の内部バス、すなわち、メモリから命令を読み取るための命令バスと；命令バス上で見ることができるのと同じメモリにアクセスするために使用するデータバスを含む。その他に、いくつかのメモリマップドレジスタ（スケジューラ状態およびＯｎＣＥレジスタ）および５つの周辺装置レジスタ（ＵＳＢ、ＵＡＲＴ１、ＵＡＲＴ３、ＭＭＣおよびビデオＳＡＰ）を含む。
【０１９６】
命令メモリマップ。このマップは、１４ビットアドレスバス、および１６ビットデータ（命令）バスをベースとしている。命令は、ＲＯＭまたはプログラムＲＡＭから取り出される。ＩＰＣＭスクリプトは、同様に、データバスから見ることができるプログラムＲＡＭの内容を変更し得る。
【０１９７】
最初の２つの命令位置（０および１）は、特殊な命令位置である。位置０は、ＰＣがリセットの際に設定される位置である。位置１は、違法の命令の実行の際にＰＣが設定される位置である。これら両方の位置は、ハンドラルーチンへのジャンプを含むものと予想される。
【０１９８】
データメモリマップ。ＩＰＣＭスクリプトにアクセスし得るすべてのデータは、データメモリスペースまたはＩＰＣＭに転送される。このアドレススペースは、いくつかの構成部品、すなわち、ＲＯＭレジスタ、ＲＡＭレジスタ、周辺装置レジスタ、およびスケジューラレジスタ（ＣＣＲ、ＨＰＣＲおよびＣＣＰＴＲ）およびＯｎＣＥレジスタを含む。ＩＰＣＭスクリプトは、コンテキストＲＡＭ、データＲＡＭ、および周辺装置レジスタから読み取りや、これら構成部品に書き込み可能である。
【０１９９】
アドレス範囲は１６ビットであり、データ幅は３２ビットである。しかし、周辺装置レジスタ（ＵＳＢ等）にアクセスしている場合には、データ幅は種々の幅であってもよい。この場合には、書込動作中、書き込む３２ビットデータの未使用の一部は、周辺装置により無視される。読取動作中、３２ビット読み取りデータの喪失した部分は、「０」により置き換えられる。
【０２００】
ＩＰＣＭ初期化
ハードウェアをリセット後の、ＩＰＣＭ１１６、プログラムＲＡＭ、コンテキストＲＡＭ、およびデータＲＡＭの内容は予測することができない。能動レジスタの設定は、チャネル０に割り当てられ、ＰＣはすべてゼロに初期化される。しかし、チャネルイネーブルレジスタはすべてゼロなので、能動チャネルはなくなり、ＩＰＣＭは停止する。
【０２０１】
ＩＰＣＭを始動するには、ホストプロセッサ１０６（すなわち、ホスト）は、最初に、制御チャネル（チャネル０）用に、ホストメモリ内にいくつかのチャネル制御ブロックを生成し、次に、チャネル０ポインタレジスタを第１の制御ブロックのアドレスに初期化する。ホストプロセッサは、次に、チャネルイネーブルレジスタ内の（チャネル０に対応する）ビット０を設定する。
【０２０２】
能動状態になると、ＩＰＣＭ１１６は、次に、チャネル０用のプログラムＲＯＭ内のアドレス０のところに位置するスクリプトの実行をスタートする。このＲＯＭ３０８スクリプトは、チャネル０ポインタレジスタを読み取り、その内部に含まれているアドレスにより、第１のチャネル制御ブロックの（ＤＭＡによる）取出しをスタートする。ブロックが有効なコマンドを含んでいる場合には、ＩＰＣＭ１１６は、（通常、ホストからＩＰＣＭメモリへ何かをダウンロードする）コマンドを解釈し、このコマンドを実行するために先に進み、次の制御ブロックに移動する。この動作は、無効なチャネルコマンドに遭遇するまで引き続き行われる。無効なチャネルコマンドに遭遇した場合には、スクリプトは停止し、ホストは、チャネルが再度動作可能になるまで待機する。
【０２０３】
ユーザ定義のスクリプト上でＩＰＣＭブートを行うには２つの方法がある。第１の方法は、（そのＭＣＯＲＥインタフェイスのそのＪＴａｇインタフェイスを通して）ＯｎＣＥを使用して、ＩＰＣＭ　ＲＡＭ内の任意のコードをダウンロードし、そのコードで、ＩＰＣＭを強制的にブートする方法であり、第２の方法は、ホストプログラミングモデル内のＣＨＮ０ＡＤＤＲレジスタを使用する方法である。ＩＰＣＭブートコードは、上記レジスタの内容を取り出し、所与のアドレスにジャンプする。
【０２０４】
ＩＰＣＭスクリプトの実行は、スクリプトを構成している命令、およびそれが動作するデータコンテキスト両方に依存する。両者を初期化することによって、スクリプトを実行することが可能になる。３２の各チャネルは、個々のデータコンテキストを持っているが、データＲＡＭ内のスクリプトおよび位置を共有することも可能である。
【０２０５】
ホストは、プログラムＲＡＭおよびデータＲＡＭ内のスペースを管理する。ホストは、また、それを必要とするデバイスドライバに対する、ＩＰＣＭチャネルの割当ても管理する。チャネルは、任意の必要なスクリプトおよびデータ値およびチャネル初期コンテキストをダウンロードするために、チャネル０を使用して、ホストにより初期化される。コンテキストは、ＰＣを含むレジスタのすべての初期値を含む。次に、ホスト１０６は、チャネルを動作可能にし、チャネルが能動状態になると、そのスクリプトからの命令の取出しおよび実行をスタートする。
【０２０６】
「ＩＰＣＭのＲＩＳＣプロセッサコア用の命令セット」という名称の、付随の付録Ａについて説明すると、この付録Ａは、本発明のある実施形態による、ＩＰＣＭ１１６で使用するための好適な命令の完全なセットを示す。
【０２０７】
付録Ａの機能ユニットの命令セットを使用する実施形態に対応するＤＳＰ　ＤＭＡユニットおよびホストプロセッサＤＭＡユニットについて、以下にさらに詳細に説明する。
【０２０８】
機能ユニット命令により、命令の下位の８ビットに含まれている８ビットコードが、機能ユニット制御バス上で設定される。これらビットの中のあるものは、いくつかの機能ユニットの中の１つを選択するために使用される。プログラミングについての約束事を確立するために、選択ビットは、８ビットコードのある数の最上位ビットであると仮定する。さらに、ある数の最下位ビットは、実行する動作のタイプを確立するために、所与の機能ユニットにより復号される。
【０２０９】
ホストＤＭＡユニット３１２の場合には、ＤＭＡ命令は、ＤＭＡ状態マシーンを制御し、関連するメモリバス上でＤＭＡサイクルを実行し得る。ホストＤＭＡユニットに関連するレジスタは３つある。すなわち、アドレスレジスタ（ＭＡ）、データバッファ（ＭＤ）、および状態マシーンレジスタ（ＭＳ）である。
【０２１０】
アドレスレジスタ（ＭＡ）は、次のデータ転送に関連するＤＭＡメモリ内へのポインタを含む。アドレスレジスタは、バイト粒度を含む。ｌｄｆ命令（すなわち、読取）で、このレジスタを読み取っても、副次的な影響はない。アドレスレジスタに書込みを行うと、副次的な影響が発生する場合がある。バッファ内に数値書込データがある場合で、アドレスが変更される場合には、書込データは、フラッシュされる（すなわち、ＤＭＡ書込サイクルが発行される）。予備取出しビットが設定され、有効な書込データがない場合には、ＤＭＡ読取サイクルが、新しいアドレスと一緒に発行される。
【０２１１】
データが、データバッファへ／から転送されると、アドレスレジスタが、転送したバイト数だけ増大する。３２ビット語の境界を越えるアドレス増大の中、バッファ内の任意の有効な書込データがフラッシュされる。
【０２１２】
データバッファレジスタ（ＭＤ）内においては、ＤＭＡサイクルは、何時でも書込バッファをロードするｓｔｆ命令に関連しているわけではなく、命令は、転送のサブユニットを、命令が全サイズメモリ転送の際に後で使用されるバイトを蓄積する時に、バッファレジスタ内にロードするだけである。ＤＭＡユニットは、バイトを有効である状態に維持し、新しいデータの正確なシフトと挿入を行う。書込バッファをロードする命令は、条件付きで、結果として得られるバッファをフラッシュさせ、バッファが満杯になっていなくても、ＤＭＡ書込サイクルを実行する。
【０２１３】
データバッファを読み取るｌｄｆ命令は、データがまだ取り出されていない場合には、ＤＭＡサイクルを行い得る。各読取転送は、バッファ内のすべてのバイトがすでに転送されている場合には、先取りを行い得る。
【０２１４】
データバッファを読み書きすると、それぞれ、宛先故障またはソース故障になる場合がある。ＭＬＢは２４ビットのアクセスをサポートしないので、ホストＤＭＡは、ＭＬＢ上で３バイトのアクセスが要求されると、エラーをトリガする。フラッシュまたは取出しが要求された場合には、何も発生しない。内部ＭＤレジスタは、外部アクセスが行われない限りは、任意の瞬間に３バイトのデータを持ち得る。ｅＤＲＡＭは、３バイトアクセスをサポートする。
【０２１５】
フラッシュの特別な場合がある。ＭＤへのバイトアクセスにより、３つの能動バイトおよびフラッシュの要求を持ち得る。ＭＤ内の３つの能動バイトは、ｅＤＲＡＭに正確に書き込まれる。しかし、ＭＬＢ上で書込みが行われた場合には、アクセスするとエラーが発生する。
【０２１６】
状態レジスタ（ＭＳ）は、ＤＭＡ状態マシーン値を含む。このことは、通常のモードで、ユーザがアクセスし得ることを意味しない。実際には、ＤＭＡが任意の状態にある場合に、コンテキストが切り替えられる場合があるので、コンテキスト切替えルーチンにより行われる状態をセーブする必要がある。
【０２１７】
先取りおよびフラッシュ管理により、ＩＰＣＭ　ＲＩＳＣマシーンは、ＤＭＡアクセスが行われていても動作を継続し得る。ＲＩＳＣコアが先取りを要求している場合（ｐ＝１）、またはホストＤＭＡに対する自動フラッシュの場合（ｆ＝０）には、ＲＩＳＣコアは、ＤＭＡが外部アクセスを終了する前に、即時転送肯定応答を受信する。これにより、ＲＩＳＣコアは、他のＤＭＡマシーンへのアクセスのような他の動作を行い得る。
【０２１８】
しかし、ユーザは、この機構の固有の制限について知っておかなければならない。ＤＭＡが、コマンドを記憶するためのＦＩＦＯを持っていない限りは、先取り／自動フラッシュコマンドが発行された場合で、ＤＭＡがその前のアクセスを終了していない場合には、前のアクセスが終了するまで、転送肯定応答は遅れる。
【０２１９】
もう１つの問題はエラーの管理である。ＤＭＡはＲＩＳＣコアに直接肯定応答を送信するので、（それがＭＬＢへの２４ビットアクセスのように、アクセスが禁止されていることを検出する以外は）エラーが発生するものとみなされる。エラーが発生する場合には、下記のアクセスに対してフラグが設定される（転送エラー肯定応答）。
【０２２０】
ＤＭＡが正しく使用されている場合には問題は起こらない。先取り／自動フラッシュ機能は、ハードウェアループで使用するためのものであり、先取り（ｐ＝０）または強制的フラッシュ（ｆ＝１）を含まない最後のアクセスはハードウェアループの後で行わなければならない。このアクセスは、残りのエラー（それ自身および前の先取りまたは自動フラッシュアクセスからのエラー）を収集する。
【０２２１】
ＤＳＰ　ＤＭＡユニット３１０は、僅かな制約を除けば、ホストＤＭＡユニット３１２と同じものである。ＤＳＰ　ＤＭＡユニットを使用すれば、クォーツＤＭＡに対して、３２ビット転送および１６ビット転送を行い得る。
【０２２２】
ＤＭＡ命令は、ＤＭＡ状態マシーンを制御し、関連するメモリバス上でＤＭＡサイクルを実行し得る。ホストＤＭＡユニットに関連するレジスタは３つある、すなわち、アドレスレジスタ（ＤＡ）、データバッファ（ＤＤ）、および状態マシーンレジスタ（ＤＳ）である。
【０２２３】
アドレスレジスタ（ＤＡ）は、次のデータ転送に関連するＤＭＡメモリ内へのポインタを含む。アドレスレジスタはバイト粒度を含む。ｌｄｆ命令でこのレジスタを読み取っても副次的な影響はない。アドレスレジスタに書込みを行うと、副次的な影響が発生する場合がある。バッファ内に有効な書込データがある場合で、アドレスが変更される場合には、書込データはフラッシュされる（すなわち、ＤＭＡ書込サイクルが発行される）。先取りビットが設定され、有効な書込データがない場合には、ＤＭＡ読取サイクルが新しいアドレスと一緒に発行される。
【０２２４】
データがデータバッファへ／から転送されると、アドレスレジスタが転送したバイト数だけ増大する。３２ビット語の境界を越えてアドレスが増大すると、バッファ内の任意の有効な書込データがフラッシュされる。
【０２２５】
データバッファレジスタ（ＤＤ）内においては、ＤＭＡサイクルは、何時でも書込バッファをロードするＤＭＡ書込命令に関連しているわけではない。命令は、転送のサブユニットを、命令が全サイズメモリ転送の際に後で使用されるバイトを蓄積する時に、バッファレジスタ内にロードするだけである。ＤＭＡ状態は、バイトが有効である状態を維持し、新しいデータの正確なシフトと挿入を行う。書込バッファをロードする命令は、条件付きで、結果として得られるバッファをフラッシュさせ、バッファが満杯になっていなくてもＤＭＡ書込サイクルを実行する。
【０２２６】
データバッファを読み取るＤＭＡ読取命令は、データがまだ取り出されていない場合には、ＤＭＡサイクルを行い得る。各読取転送は、バッファ内のすべてのバイトがすでに転送されている場合には、条件付きで先取りを行い得る。
【０２２７】
データバッファを読書きすると、それぞれ、宛先故障またはソース故障になる場合がある。クォーツＤＭＡはバイトアクセスをサポートしないので、ＤＳＰ　ＤＭＡは、任意の許可されていないアクセスサイズを検出し、それによりエラーをトリガする。許可を受けていないサイズは、１バイトおよび３バイトである。フラッシュまたは取出しが要求された場合だけ、このようなバイト数が要求される。内部ＤＤレジスタは、外部アクセスが行われない限りは、任意の瞬間に、１バイトまたは３バイトを持ち得る。
【０２２８】
状態レジスタ（ＤＳ）は、副次的な影響のない００１１００００の３２ビット読取りからなる。
先取りおよびフラッシュ管理により、ＩＰＣＭ　ＲＩＳＣプロセッサは、ＤＭＡアクセスが行われていても動作を継続し得る。ＲＩＳＣコアが先取りを要求している場合（ｐ＝１）、またはホストＤＭＡに対する自動フラッシュの場合（ｆ＝０）には、ＲＩＳＣコアは、ＤＭＡが外部アクセスを終了する前に、即時転送肯定応答を受信する。これにより、ＲＩＳＣコアは、他のＤＭＡマシーンへのアクセスのような他の動作を行い得る。
【０２２９】
しかし、ユーザは、この機構の固有の制限について知っておかなければならない。ＤＭＡが、コマンドを記憶するためのＦＩＦＯを持っていない限りは、先取り／自動フラッシュコマンドが発行された場合でＤＭＡがその前のアクセスを終了していない場合には、前のアクセスが終了するまで転送肯定応答は遅れる。
【０２３０】
もう１つの問題はエラーの管理である。ＤＭＡはＲＩＳＣコアに直ちに肯定応答を送信するので、（それがＭＬＢへの２４ビットアクセスのように、アクセスが禁止されていることを検出する以外は）エラーが発生するものとみなされる。エラーが発生する場合には、下記のＤＭＡアクセスに対して、フラグが設定される（転送エラー肯定応答）。
【０２３１】
ＤＭＡが正しく使用されている場合には、問題は起こらない。先取り／自動フラッシュ機能は、ハードウェアループで使用するためのものであり、先取り（ｐ＝０）または強制的フラッシュ（ｆ＝１）を含まない最後のアクセスは、ハードウェアループの後で行わなければならない。このアクセスは、残りのエラー（それ自身および前の先取りまたは自動フラッシュアクセスからのエラー）を収集する。
【０２３２】
プログラミングの約束事
ホストまたはＤＳＰから見るように、多くのプログラミングモデルはＩＰＣＭのハードウェアのアーキテクチャから命令を受けないで、ＩＰＣＭ上で動作しているスクリプトから命令を受けている。これらのスクリプトの中のあるものはＲＯＭであり、それらが課する約束事は、容易に変更し得ない。
【０２３３】
ホストプロセッサ側には、そのベースアドレスがＣ０ＰＴＲ内で指定されているアレイ内に３２のチャネル制御ブロック（ＣＣＢ）が位置している。各制御ブロックは４つの３２ビット語からなる。最初の語は現在定義されていない状態を含む。第２の語はバッファ識別子（Ｂｄｓ）のアレイのベースへのポインタを含む。第３の語は現在のＢＤへのポインタを含む。第４の語は現在使用されていない。
【０２３４】
チャネル制御ブロックの内容は、チャネルが動作していない時にホストにより変更可能である。
ホストバッファ識別子（図６参照）は、プログラマブルサイズのアレイを形成する。最後のバッファ識別子は上記のようにマークされる。バッファ識別子のアレイはリングとして処理され、その場合、いくつかの論理的に連続している部分はホストが所有し、残りはＩＰＣＭが所有する。状態ビットは各バッファ識別子の所有者を示す。
【０２３５】
バッファ識別子が、ホストからＩＰＣＭの所有者を変更すると、カウントフィールドは、送信しなければならないデータの量および受信バッファのサイズを示す。所有者がホストに戻ると、カウントは、送信または受信したデータの量を示す。
【０２３６】
チャネル０コマンド。バッファ識別子のコマンドフィールドは、ホストとＩＰＣＭとの間での通信の際に使用される８ビットコマンドコードを含む。現在、チャネル０スクリプトは、下記のコマンド、すなわち、（１）以降のコマンドで使用されるＩＰＣＭアドレスをバッファアドレスフィールド内に含まれている値に設定するコマンドと；（２）バッファアドレスのところのホストメモリからＩＰＣＭメモリへコピーするコマンドと；（３）ＩＰＣＭメモリからバッファアドレスのところのホストメモリにコピーするコマンドと；（４）ホストメモリから上位５つのビット内のチャネル番号のチャネルコンテキストにコピーするコマンドと；（５）上位５つのビット内のチャネル番号のチャネルコンテキストからホストメモリにコピーするコマンドだけを認識する。
【０２３７】
ＤＳＰ側には、そのベースアドレスが、Ｃ０ＰＴＲで指定されているアレイ内に、３２のチャネル制御ブロック（ＣＣＢ）が位置している。チャネル０に対するＣＣＢは使用されていない。各チャネル制御ブロックは８つの１６ビット語からなる。最初２つの語は現在定義されていない状態を含む。第２の２つの語はバッファ識別子（Ｂｄｓ）のアレイのベースへのポインタを含む。第３の２つの語は現在のＢＤへのポインタを含む。第４の２つの語は現在使用されていない。
【０２３８】
動的メモリリフレッシュ方法
図２に戻って簡単に説明すると、この図では、プロセッサプラットフォームは、動的ランダムアクセスメモリ、すなわち、ｅＤＲＡＭをリフレッシュするためのリフレッシュコントローラを含む。リフレッシュコントローラ２２０は、ＩＰＣＭ１１６、ホストプロセッサ１０６、およびＬＣＤコントローラ２０４のような他の競合するデバイスからｅＤＲＡＭへ多重アクセスするデータ経路選択２１８を通して、ｒバス２４０経由で、ｅＤＲＡＭ１０８に接続している。
【０２３９】
当業者であれば周知のように、動的メモリ（ＤＲＡＭまたはｅＤＲＡＭ）は、直流電力の供給を必要とし、メモリ内に記憶しているデータを保持するために、周期的にリフレッシュしなければならない。対照的に、静的メモリ（例えば、ＳＲＡＭ）は、停電しない電源に接続している限りは、リフレッシュする必要はない。プロセッサプラットフォーム１００のある実施形態のリフレッシュコントローラ２２０は、電力をできるだけ節減するように設計されている。それは、携帯用途の場合には、バッテリーの寿命を長くするのに有利である。
【０２４０】
リフレッシュコントローラ２２０は、２つの基本的な動作モード、すなわち、能動モードとデータ保持モードを持つ。能動モードは、ｅＤＲＡＭ１０８の通常の動作用のモードである。能動モードは、プロセッサプラットフォーム１００を内蔵する製品をエンドユーザが使用する際に、何時でも使用される。能動モードは、個々のＤＲＡＭ装置の当業者であれば周知の「サイクルスティール」分散型リフレッシュ方法を使用する。
【０２４１】
データ保持モードは、プロセッサプラットフォーム１００を内蔵する製品が動作していない場合のモードであり、ｅＤＲＡＭ１０８の内容を保持したい場合に使用するモードである。このデータ保持モードは、３つのの動作モード、すなわち、（１）分散型リフレッシュモード、（２）「選択的リフレッシュ」モード、および（３）「温度補償」リフレッシュモードを持つ。
【０２４２】
当業者であれば周知の分散型リフレッシュモードは、メモリが周期的にリフレッシュされる動作の能動モードと同じものである。一方、選択的リフレッシュモードおよび温度補償リフレッシュモードは、ｅＤＲＡＭメモリアレイ内のデータを保持するために必要な電力の量を節減するために、別々にまたは一緒に使用し得るし、または、データを保持するために消費する電力を、さらに、全体的に節減するために一緒に使用し得る。これらのモードを使用すれば、バッテリーの寿命を延ばし、それは、携帯用途に特に重要である。
【０２４３】
能動モードおよび分散型リフレッシュ技術は、当業者であれば周知のものであるが、リフレッシュコントローラ２２０は、３２ｋＨｚで動作するデイモジュールのある時点からの低い周波数のクロックソースを有利に使用する。しかし、他の実施形態の場合には、当業者であれば周知の任意の他のクロックを使用し得る。それ故、好適な実施形態の場合には、リフレッシュコントローラ２２０へのクロック入力２５２は、プロセッサプラットフォーム１００を内蔵する製品で必要なデイクロックの時間である。この３２ｋＨｚのクロック入力２５２は、リフレッシュコントローラ２２０内で多重化（×２）され、リフレッシュサイクルを作動するために使用される。当業者であれば周知のように、カウンタは、「ｎ」個の状態を持つリフレッシュコントローラ２２０に内蔵されているが、この場合、「ｎ」は、アレイ内の行の全数に等しい。カウンタは、各クロック遷移を含む増大モジュロ「ｎ」である。当業者であれば周知の「感知アンプ」は、行内の選択したビットセルを実際にリフレッシュする。
【０２４４】
都合のよいことに、リフレッシュコントローラ２２０は、デイクロックのすでに供給した時間をクロック入力として使用する。それ故、従来行われているように、リフレッシュコントローラ２２０を動作させるために、別の専用クロックを必要としない。リフレッシュコントローラ２２０に対して別の専用クロックを使用すると、電力をオフにした場合、システムが消費する電力がさらに増大する。
【０２４５】
図７について説明すると、選択的リフレッシュモードは、保持されるメモリセルの数を削減して消費電力を節減するために、リフレッシュするメモリ（例えば、ｅＤＲＡＭ１０８）内の行の数を有利に低減する。しかし、メモリ（例えば、ＤＲＡＭ）が、複数の部分に分割できる場合には、メモリの複数の部分すべてをリフレッシュしないで、その中の１つまたはそれ以上をリフレッシュし得る。より詳細に説明すると、複数の部分を、アレイの形でメモリの複数の行とし得る。それ故、リフレッシュ中のメモリの複数の行の内容がセーブされ、一方、リフレッシュ中でないメモリの複数の行内に保持されているデータの内容は喪失する。例えば、（例えば、電源をオフにするなどして）ユーザがデバイスの動作を中止すると、ホストプロセッサ１０６は、例えば、ｅＤＲＡＭ１０８のようなメモリ内のどの行をセーブしなければならないのか、また（例えば、行のような）どの部分をセーブする必要がないのかを判断する（ステップ７０２）。次に、ホストプロセッサ１０６は、ホストプロセッサメモリの行または部分をセーブしたいのかを命令するリフレッシュコントローラ２２０に制御信号を送信する（ステップ７０４）。リフレッシュコントローラ２２０は、電源がオフになっている間に、メモリ内の識別した行または部分だけをリフレッシュするように構成されている。次に、リフレッシュコントローラ２２０は、（例えば、データ経路選択２１８を通して、ｅＤＲＡＭ１０８のような）ホストプロセッサメモリにアクセスし、構成された行をリフレッシュする（ステップ７０６）。それ故、より少ない電力でメモリをリフレッシュし得る。何故なら、メモリ全体をリフレッシュするのではなく、メモリの一部だけをリフレッシュするからである。そのため、この実施形態の場合には、電力を非常に節減することが可能である。何故なら、ｅＤＲＡＭ１０８は大型で、セーブするのに必要な部分は、通常、全ｅＤＲＡＭ１０８より小さいからである。
【０２４６】
リフレッシュコントローラ２２０により実行する選択的リフレッシュ方法については以下に説明する。例えば、ｅＤＲＡＭ１０８のようなメモリアレイ内にｎ個の行が存在する場合には、ｊが０とｎとの間のある数になるように、リフレッシュするメモリアレイ内の行の全数としてｊを定義する。そのため、アルゴリズムは下式のようになる。
【０２４７】
ｉ＝０
Ｒｅｆｒｅｓｈ　Ｒｏｗｉ
ｉ＝ｉ＋１　ｍｏｄｕｌｏ　ｊ
すなわち、リフレッシュコントローラ２２０モジュロ「ｎ」カウンタは、モジュロ（ｎ−ａ）カウンタになる。この場合、「ａ」は、リフレッシュ動作から除外する行の数である。
【０２４８】
図８について説明すると、この図は、メモリリフレッシュの温度補償方法を実行している際の、図２のリフレッシュコントローラ２２０のステップのフローチャート８００である。メモリリフレッシュの温度補償方法は、製品の周囲温度に基づいてリフレッシュ動作の周期を調整する。室温またはそれより低温である場合には、この方法はかなりの量の電力を節減することができる。このことはバッテリーを電源とする携帯デバイスの場合には、バッテリーを長持ちさせるのに重要な役割を果たす。
【０２４９】
通常、温度が高ければ高いほど、例えば、ｅＤＲＡＭのような所与のメモリを、より頻繁にリフレッシュしなければならない。従来技術の方法の場合には、製品がＤＲＡＭを内蔵している「最悪の場合」の、リフレッシュユニットのリフレッシュ頻度は、非常に高いデフォールト温度になるように設計される。それ故、大部分の時間の間、メモリは実際には「過度にリフレッシュされる」。しかし、消費電力を最小限度まで少なくしたい、マルチメディア無線携帯デバイスとして使用されるプロセッサプラットフォーム１００での使用のように、サイズや消費電力が問題になる場合には、上記のような「過度なリフレッシュ」は、リフレッシュコントローラが動作中に必要以上の電力を消費することになる。
【０２５０】
それ故、従来のリフレッシュコントローラとは対照的に、リフレッシュコントローラ２２０のためのデフォールト温度は非常に低く、そのため、デフォールトリフレッシュ頻度はより低く（すなわち、リフレッシュ間の間隔がより長くなり）、多くの場合電力消費が少なくなるものとみなされる。しかし、製品の温度は、この低い温度またはそれ以下の場合もあるし、製品の周囲温度がこの低いリフレッシュ頻度の温度より高い場合もある。より高い温度に対してリフレッシュ頻度を補償してやらないと、ＤＲＡＭが保持しているデータは、リフレッシュサイクル中に失われる。それ故、リフレッシュの温度補償方法は、リフレッシュ頻度を増大する必要があるかどうか、または電力を節減するために、もっと間隔の長いリフレッシュサイクルのままでよいのかを判断するために、製品の周囲温度を測定する。製品の周囲温度が高い場合には、リフレッシュサイクル間の時間を短縮する。
【０２５１】
温度補償リフレッシュ方法については、以下にさらに説明する。最初に、ディジタルタイマ回路は、＋／−１００ｐｐｍの精度でクロック制御されていて、少なくとも０．１秒の解像度を持つものとする。このタイマは、適当なクロック信号で時間を測定することが可能で、予めプログラムした時間が経過した後で、ある「イベント」を送信し得るものでなければならない。このタイマは、整数値に設定し得て、測定すべき予めプログラムした値の経過時間を表示するために使用し得るレジスタを備えていなければならない。電子ディジタル温度計回路は、＋／「ｊ」度の精度で、ｘ度からｙ度の表示範囲を持っていて、さらに、各素子が、本明細書においては、「カウント」と呼ぶ整数を含む不揮発性アレイ（例えば、予めプログラムしたＲＯＭ）からなる変換テーブルを備えているものとする。アレイの境界（すなわち、素子の数）は、下式、すなわち、ｎ＝ｙ−ｘにより決定される。ここで、ｎはアレイ素子の数であり、ｘおよびｙは、温度範囲の上限および下限である。
【０２５２】
絶対値および「カウント」の範囲は、ディジタルタイマによりサポートされている、「カウント」レジスタの絶対値および範囲と互換性を持つものでなければならない。各「カウント」入力はアレイ内の１つの素子に入るように割り当てられる。「カウント」の入力は、アレイ内の最初の素子が最も低い測定温度（すなわち、ｘ）に対応し、アレイ内の最後の素子が最も高い測定温度（すなわち、ｙ）に対応するように、アレイ内で直線的な昇順に配列される。
【０２５３】
各カウント入力に割り当てられる値は、使用目的の実際のＤＲＡＭメモリ素子の実際のサンプルから入力した経験的データから作られる。別な方法としては、「カウント」の値を周囲温度の変化の関数としてメモリアレイで使用するトランジスタの漏洩特性のコンピュータシミュレーションにより決定し得る。どちらの場合も、「カウント」の値は、ｘ度とｙ度との間の特定の温度でのデータの統合性を維持するために必要な最小のリフレッシュ頻度を示す。アレイ内の各素子は、スタート温度ｘから温度ｙまでの周囲温度上昇の変化を示す。各素子の内容は、データの統合性を維持するために必要な最低リフレッシュ頻度を示す。追加の許容範囲は、ディジタル温度精度「ｊ」およびメモリ動作電圧の許容範囲、および単位変動に対する予想単位を抱合し得るものでなければならない。アレイの素子が直線的に配列されているので、「カウント」の値は、指数的特性を示し得ると予想される。
【０２５４】
温度補償リフレッシュ方法動作手順は、メモリアレイ内のすべての行をリフレッシュすることからスタートする（ステップ８０２）。リフレッシュする行を、ステップ８０２が、メモリアレイ内のメモリのすべての行（部分）より少ない頻度でリフレッシュされるように、図７を参照しながら説明した「選択的リフレッシュ方法」により制御し得ることに留意されたい。次に、ディジタル温度計により周囲温度が測定される（ステップ８０４）。次に、周囲温度の測定値が、参照テーブルにより、カウント値に変換される（ステップ８０６）。参照テーブルは、シミュレーションおよび経験的データにより決定した、異なる温度での種々のリフレッシュ頻度を表す。測定温度が参照テーブルの範囲を超えた場合、下限「ｘ」以下に下がった場合には、第１の素子を選択し、上限「ｙ」以上に上昇した場合には、最後の素子を選択しなければならない。カウント値は、ディジタルタイマ回路に送られる（ステップ８０８）。タイマ「イベント」が終了した場合には、すなわち、ディジタルタイマ回路が時間切れになった場合には（ステップ８１０）、すべての行がリフレッシュされる。それ故、ステップ８０２からステップ８１０が反復して実行される。製品がオンになるまで、すべてのステップが無限に反復される（ステップ８１２）。それ故、能動リフレッシュモードに再度入る（ステップ８１４）。
【０２５５】
それ故、メモリリフレッシュの温度補償リフレッシュ方法を使用することにより、例えば、分散型リフレッシュ方法のような標準リフレッシュ動作と比較した場合、室温動作以下の環境の場合には、特に電力消費が少なくてすむ。
【０２５６】
「温度補償モード」は、「選択的リフレッシュモード」と一緒に、可能な最小のデータ保持電力消費を達成するために、有利に同時に動作し得る。リフレッシュコントローラの動作モードは、製品をオフにする前に、ｈバス２３２を通して信号を送ることにより、ホストプロセッサにより構成される。リフレッシュコントローラ２２０は、ホストプロセッサ１０６が能動状態に戻った場合に、すなわち、電源がオンになった場合に、「通常」のリフレッシュモード（例えば、分散型リフレッシュ）に自動的に復帰する。データ保持と通常の動作（能動モード）との間の遷移は、ホストプロセッサ１０６からの介入がなくても、連続的に滑らかに行われる。
【０２５７】
図９について説明すると、この図は、図７および図８の、選択的リフレッシュ技術および温度補償リフレッシュ技術により、メモリリフレッシュシステム９００のブロック図である。この図は、デイクロック９０２の時間、２進カウンタ９０４および９０６、コンパレータ９０８および９１０、部分リフレッシュレジスタ９１２、ホストプロセッサ９１４（ホストＭＣＵ９１４）、カウントレジスタ９１６、メモリアレイ９１８、ディジタル温度測定９２０、温度センサ９２２、リフレッシュイネーブル・フリップフロップ９２４、クリア信号９２６、設定信号９２８、リフレッシュイネーブル信号９３０およびリフレッシュ行イネーブル９３２も示す。
【０２５８】
図７および図８で説明したように、ディジタル温度センサ９２２は、周囲温度を測定する。この温度測定値９２０は、メモリアレイ９１８に送られ、図８で説明したように、メモリアレイ内に記憶している参照テーブルにより、カウント値に変換される。カウント値は、種々の動作温度でのリフレッシュサイクル間の時間の測定値に対応する。カウント値は、カウントレジスタ９１６内にコピーされる。このカウント値は、次に、その間を接続しているコンパレータ９１０により、２進カウンタ９０６の値と比較される。２進カウンタ９０６は、実時間でカウントするように、デイクロック９０２の時間に送られる。
【０２５９】
２進カウンタ９０６内の値が、カウントレジスタ９１６内の値と等しくなった場合には、コンパレータ９１０は、リフレッシュサイクルを作動する目的で、リフレッシュイネーブル・フリップフロップ９２４を設定するために、設定信号９２８を出力する。すなわち、リフレッシュイネーブル・フリップフロップ９２４は、リフレッシュイネーブル信号９３０を出力する（例えば、リフレッシュイネーブル信号９３０は、ハイまたは「１」になる）。この時点で、温度により決定した時間が経過した後で、メモリはリフレッシュされる。設定信号９２８は、また、（ゼロまたは他の基準スタート点に再設定する）２進カウンタ９０６に、またディジタル温度測定値９２０に戻る。この設定信号は、次のリフレッシュサイクルのための時間の次の可変量を決定するために、メモリアレイ９１８内に再ロードされる。温度が同じである場合には、リフレッシュサイクル間の時間は同じままである。温度が変化すると、リフレッシュサイクル間の時間も変化する。例えば、温度が下がると、リフレッシュサイクル間の時間が長くなり、都合のよいことに、消費電力が少なくなる。何故なら、リフレッシュサイクルの頻度が下がるからである。
【０２６０】
さらに、ホストプロセッサは、ホストプロセッサ９１４が、例えば、リフレッシュする行およびリフレッシュしない行のような、リフレッシュするシステムメモリの部分を示す値を特定のリフレッシュレジスタ９１２にロードするように、部分リフレッシュレジスタ９１２に接続している。この値は、部分リフレッシュレジスタ９１２であり、次に、その間を接続しているコンパレータ９０８により、２進カウンタ９０４の値と比較される。２進カウンタ９０４は、また、デイクロック９０２の時間に接続しているが、コンパレータ９１０が、同様に、２進カウンタ９０４に接続している設定信号９２８を出力するまで、カウントをスタートしない。それ故、リフレッシュサイクル（リフレッシュイネーブル信号が出力）が、設定信号９２８により、リフレッシュイネーブル・フリップフロップ９２４内で作動すると、２進カウンタ９０４はカウントをスタートする。
【０２６１】
２進カウンタ９０４内の値が部分リフレッシュレジスタ９１２内の値と等しくなると、コンパレータは、クリア信号９２６をリフレッシュイネーブル・フリップフロップ９２４に出力し、２進カウンタ９０４に戻る。クリア信号は、２進カウンタ９０４をリセットし、リフレッシュイネーブル・フリップフロップが、リフレッシュイネーブル信号９３０を動作不能にするようにする（例えば、リフレッシュイネーブル信号９３０は、ロー、すなわち、「０」になる）。それにより、（電力をオフにする前に、ホストプロセッサが決定したように）メモリの全体より少ない部分がリフレッシュされるように、リフレッシュプロセスを停止する。これにより消費電力が有利に節減される。この実施形態の場合には、２進カウンタは、また、メモリ（ＤＲＡＭ）内のリフレッシュ行アドレスに対応する数、すなわち、リフレッシュ行アドレス信号９３２もカウントする。
【０２６２】
図９のメモリリフレッシュシステムは、ＤＲＡＭのリフレッシュ中の電力消費を相乗的に低減するために、選択的リフレッシュ技術および温度補償リフレッシュ技術の両方を有利に使用する。使用する構成部品は、当業者にとって周知のものである。これらの構成部品の大部分は、実施形態により、図２のリフレッシュコントローラ２２０の構成部品と同じものである。例えば、ある実施形態の場合には、温度センサ９２２、温度測定値９２０、およびメモリアレイ９１８は、別々のチップの上に位置しているが、ホストプロセッサは同じプロセッサプラットフォーム上に位置している。部分リフレッシュレジスタ９１２、コンパレータ９０８および９１０、２進カウンタ９０４および９０６、カウントレジスタ９１６、およびリフレッシュイネーブル・フリップフロップ９２４は、すべてリフレッシュコントローラ２２０の構成部品である。
【０２６３】
特定の実施形態および用途により、本発明を説明してきたが、当業者であれば、本発明の範囲から逸脱することなしに、本発明を種々に修正および変更することが可能である。
【図面の簡単な説明】
【図１】３つのプロセッサコア、すなわち、ディジタル信号プロセッサ（ＤＳＰ）、ホストプロセッサ、およびプロセッサ間通信モジュール（ＩＰＣＭ）内のＲＩＳＣプロセッサコア、を有し、プロセッサ間通信モジュールはプログラマブルな直接メモリアクセス機能を実行する、無線マルチメディアプロセッサプラットフォームの高レベルのブロック図。
【図２】図１の無線マルチメディアプロセッサプラットフォームの詳細なブロック図。
【図３】図１および図２の無線マルチメディアプロセッサプラットフォームのプロセッサ間通信モジュール（ＩＰＣＭ）のブロック図。
【図４】図１、図２および図３のプロセッサ間通信モジュール（ＩＰＣＭ）が提供するプログラマブル選択可能な直接メモリアクセス（ＤＭＡ）データチャネル図。
【図５】本発明の一実施形態による、図２のイベントスケジューラの機能を示す図。
【図６】各プログラマブル直接メモリアクセスデータチャネルに対して使用し得る、プロセッサ間通信モジュールおよびホストプロセッサメモリ内のポインタおよびメモリバッファ図。
【図７】本発明の一実施形態による、図２のリフレッシュコントローラが実行する、選択的リフレッシュ技術の実行ステップのフローチャート。
【図８】本発明の他の実施形態による、温度補償メモリリフレッシュ法を実行する際の、図２のリフレッシュコントローラが行う工程のフローチャート。
【図９】上記の選択的リフレッシュ技術および図７および図８の温度補償リフレッシュ技術を使用するメモリリフレッシュシステムのブロック図。
【図２】
2004503855.tif 000004
【図３】
2004503855.tif 000005
【図４】
2004503855.tif 000006
【図５】
2004503855.tif 000007
【図６】
2004503855.tif 000008
【図７】
2004503855.tif 000009
【図８】
2004503855.tif 000010
【図９】
2004503855.tif 000011
【国際公開パンフレット】
2004503855.tif 000012
2004503855.tif 000013
2004503855.tif 000014
2004503855.tif 000015
2004503855.tif 000016
2004503855.tif 000017
2004503855.tif 000018
2004503855.tif 000019
2004503855.tif 000020
2004503855.tif 000021
2004503855.tif 000022
2004503855.tif 000023
2004503855.tif 000024
2004503855.tif 000025
2004503855.tif 000026
2004503855.tif 000027
2004503855.tif 000028
2004503855.tif 000029
2004503855.tif 000030
2004503855.tif 000031
2004503855.tif 000032
2004503855.tif 000033
2004503855.tif 000034
2004503855.tif 000035
2004503855.tif 000036
2004503855.tif 000037
2004503855.tif 000038
2004503855.tif 000039
2004503855.tif 000040
2004503855.tif 000041
2004503855.tif 000042
2004503855.tif 000043
2004503855.tif 000044
2004503855.tif 000045
2004503855.tif 000046
2004503855.tif 000047
2004503855.tif 000048
2004503855.tif 000049
2004503855.tif 000050
2004503855.tif 000051
2004503855.tif 000052
2004503855.tif 000053
2004503855.tif 000054
2004503855.tif 000055
2004503855.tif 000056
2004503855.tif 000057
2004503855.tif 000058
2004503855.tif 000059
2004503855.tif 000060
2004503855.tif 000061
2004503855.tif 000062
2004503855.tif 000063
2004503855.tif 000064
2004503855.tif 000065
2004503855.tif 000066
2004503855.tif 000067
2004503855.tif 000068
2004503855.tif 000069
2004503855.tif 000070
2004503855.tif 000071
2004503855.tif 000072
2004503855.tif 000073
2004503855.tif 000074
2004503855.tif 000075
2004503855.tif 000076
2004503855.tif 000077
2004503855.tif 000078
2004503855.tif 000079
2004503855.tif 000080
2004503855.tif 000081
2004503855.tif 000082
2004503855.tif 000083
2004503855.tif 000084
2004503855.tif 000085
2004503855.tif 000086
2004503855.tif 000087
2004503855.tif 000088
2004503855.tif 000089
2004503855.tif 000090
2004503855.tif 000091
2004503855.tif 000092
2004503855.tif 000093
2004503855.tif 000094
2004503855.tif 000095
2004503855.tif 000096
2004503855.tif 000097
2004503855.tif 000098
2004503855.tif 000099
【国際公開パンフレット（コレクトバージョン）】
2004503855.tif 000100
2004503855.tif 000101
【国際調査報告】
2004503855.tif 000102
2004503855.tif 000103
2004503855.tif 000104
2004503855.tif 000105