(57)【特許請求の範囲】
【請求項１】
（ａ）データバスとアドレスバスを有し、各タスクに対応するプログラムの命令を記憶するメモリと、
（ｂ）前記データバスに結合し、処理される命令を命令サイクルの速度で受ける命令プロセッサと、
（ｃ）各タスクに関連して種々のプライオリティレベルを有し、関連するタスクがサーブをリクエストするとすぐにアサートされるリクエストラインと、
（ｄ）実行される関連タスクの現在の命令のアドレスを含み、関連するイネーブルラインがアサートされると各命令サイクルで前記アドレスバスにアドレスを提供し、前記命令プロセッサに対応する命令を提供して各命令サイクルで実行させる、各タスクに関連する複数の命令ポインタと、
（ｅ）前記リクエストラインと前記命令ポインタに結合する前記イネーブルラインに結合し、最高位のプライオリティレベルのアサートされたリクエストラインに対応して前記命令ポインタのイネーブルラインをアサートするプライオリティレベル復号器と、
（ｆ）前記命令ポインタに結合し、イネーブルされた命令ポインタを、関連するタスクの次の命令に対するポイントに変更する増加回路と、
を有する複数のタスクの中からカレントタスクをサーブするためのプロセッサ。
【請求項２】
更にプリフィックス復号器を含み、各命令が命令プロセッサに与えられるコマンドフィールドとプリフィックス復号器に与えられる命令タイプフィールドとを含み、
該プリフィックス復号器は、
（ａ）カレント命令のタイプフィールドが第１の所定の値を有するならば、新しい命令ポインタがプライオリティレベル復号器によりイネーブルにされる手段と、
（ｂ）カレント命令のタイプフィールドが第２の所定の値を有するならば、イネーブルされた命令ポインタの内容をカレントプログラムのスタートアドレスに初期化する手段とを有する、請求項１記載のプロセッサ。
【請求項３】
タイプフィールドがカレント命令を実行する回数を示す所定の値を有するならば、プリフィックス復号器が増加回路を禁止にする手段を有し、これによりカレント命令が前記の所定の値で決定される回数だけ各命令サイクルで実行される請求項２のプロセッサ。
【請求項４】
命令プロセッサにより制御されるシステムバスからメモリが独立している請求項１のプロセッサ。
【請求項５】
装置がシステムバスに結合され、更に各命令が命令プロセッサに与えられるコマンドフィールドと、命令が実行される時システムバスを使用する前記の装置を選択するアクノレッジフィールドとを有している請求項４のプロセッサ。
【請求項６】
トランジットメモリがシステムバスに結合され、更にシステムバスに結合されている前記の装置が、
（ａ）システムバスに関連する少なくとも１つの読み出し専用装置であり、システムバスからトランジットメモリにデータを転送するタスクが実行される時、関連するリクエストラインをアサートしてデータを前記トランジットメモリに転送する必要があることを表示し、該リクエストのアクノレッジが前記読み出し専用装置のみを選択して前記システムバスを使用する前記読み出し専用装置と、
（ｂ）システムバスに関連する少なくとも１つの書き込み専用装置であり、トランジットメモリからシステムバスにデータを転送するタスクを実行する時、トランジットメモリからデータを受信する必要がある時、関連するリクエストラインをアサートし、該リクエストのアクノレッジが前記書き込み専用装置のみを選択する前記書き込み専用装置とをふくむ、請求項５記載のプロセッサ。
【請求項７】
命令プロセッサが多数のワイヤアドレス計算機能を含み、それぞれの機能が読み出しまたは書き込み命令のフィールドにより選択される請求項６のプロセッサ。
【請求項８】
各アドレス計算機能がアドレスレジスタに関連し、前記トランジットメモリのアドレスを保持し、該アドレス計算機能はその関連するアドレスレジスタの内容を変更する回路をふくむ、請求項７記載のプロセッサ。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、ひとつのプロセッサを有するマルチタスクプロセッサに関する。より詳細には、この発明はタスクのリアルタイム処理に適合する。
【０００２】
【従来の技術】
マルチタスク処理を制御するため、最も簡単で価格の低いアプローチはタスクに対応しタイムシェアリングで幾つかのプログラムを実行するプロセッサを有するシステムを使用することである。一番目のプログラムが実行される間に二番目のプログラムがプロセッサにより実行しなければならないときは、割り込みリクエストがこのプロセッサに送られてくる。二番目のプログラムが一番目より高いプライオリティを有していれば、この割り込みリクエストは一番目のプログラムの実行を中止する。一番目のプログラムが割り込まれる時、プロセッサは“セーブコンテクスト（ｓａｖｅ  ｃｏｎｔｅｘｔ）”動作により一番目のプログラムのコンテクストをセーブする必要がある。一番目のプログラムの実行が再び始まると、リストアコンテクスト動作が予めセーブされたコンテクストをリストアする。このリストアコンテクスト動作により一番目のプログラムは割り込みが行なわれた点から再び始まる。
【０００３】
マルチタスクプロセッサシステムは比較的簡単で価格が低いが、幾つかの命令サイクルが割り込みの間実行される必要からそれぞれの割り込みがオーバーヘッドでぶつかることにより比較的処理が遅い。これはコンテクストをセーブし実行される新しいプログラムにスタートアドレスの位置を定める割り込みルーチンがコールされるからである。同様に、リストアコンテクストも時間を消費する。
【０００４】
この種のシステムは割り込みの頻繁が高くタスクが所謂“リアルタイム”で実行される時適していない。
【０００５】
典型的なリアルタイムマルチタスクシステムはテレビジョン映像を処理するように設計されたシステムであるが、このシステムでは処理されたデータの非割り込みフローが出力される間データの非割り込みフローを受け処理している。映像処理用としては、パイプラインアーキテクチャシステムが最も使用されている。この種のシステムでは所要のデータフロー速度で映像を処理することができるが、非常に複雑で高価である。
【０００６】
ＥＰ−Ａ−０５０３９５６にはＭＰＥＧ標準に従い圧縮されたビデオ信号を伸張（ｄｅｃｏｍｐｒｅｓｓｉｏｎ）するためのタイムシェアリング映像処理システムが記載されている。このシステムでは、処理されるデータはメモリ装置、復号化装置、動き補償装置、及び逆離散コサイン変換（ＤＣＴ−１）の計算装置の間で転送される。これらの装置からの転送は割り込みにより動作する特別なプロセッサにより制御されている。
【０００７】
ＥＰ−Ａ−０５０３９５６に使用されているプロセッサはエレメント間でのデータの転送に特に適合するが、割り込みオーバーヘッドは依然として重要でありシステムを現在のリクエストされたデータフローの速度で処理することができない。
【０００８】
【課題を解決するための手段】
この発明の目的はあるタスクの実行から他のタスクの実行へのパスが特に高速であるマルチタスクプロセッサを提示することである。
【０００９】
この発明の他の目的は非常に高速なデータフロー速度、より詳細には現在の標準が要求しているフロー速度で処理できる映像処理システムを提示することである。
【００１０】
これらの目的は、
（ａ）データバスとアドレスバスを有し、各タスクに対応するプログラムの命令を記憶するメモリと、
（ｂ）前記データバスに結合し、処理される命令を命令サイクルの速度で受ける命令プロセッサと、
（ｃ）各タスクに関連して種々のプライオリティレベルを有し、関連するタスクがサーブをリクエストするとすぐにアサートされるリクエストラインと、
（ｄ）実行される関連タスクの現在の命令のアドレスを含み、関連するイネーブルラインがアサートされると各命令サイクルで前記アドレスバスにアドレスを提供し、前記命令プロセッサに対応する命令を提供して各命令サイクルで実行させる、各タスクに関連する複数の命令ポインタと、
（ｅ）前記リクエストラインと前記命令ポインタに結合する前記イネーブルラインに結合し、最高位のプライオリティレベルのアサートされたリクエストラインに対応して前記命令ポインタのイネーブルラインをアサートするプライオリティレベル復号器と、
（ｆ）前記命令ポインタに結合し、イネーブルされた命令ポインタを、関連するタスクの次の命令に対するポイントに変更する増加回路と、
を有する複数のタスクの中からカレントタスクをサーブするためのプロセッサにより達成される。
【００１１】
本発明の実施例によると、更にプリフィックス復号器を含み、各命令が命令プロセッサに与えられるコマンドフィールドとプリフィックス復号器に与えられる命令タイプフィールドとを含み、
該プリフィックス復号器は、
（ａ）カレント命令のタイプフィールドが第１の所定の値を有するならば、新しい命令ポインタがプライオリティレベル復号器によりイネーブルにされる手段と、
（ｂ）カレント命令のタイプフィールドが第２の所定の値を有するならば、イネーブルされた命令ポインタの内容をカレントプログラムのスタートアドレスに初期化する手段とを有する。
【００１２】
本発明の実施例によると、タイプフィールドがカレント命令を実行する回数を示す所定の値を有するならば、プリフィックス復号器が増加回路を禁止にする手段を有し、これによりカレント命令が前記の所定の値で決定される回数だけ各命令サイクルで実行される。
【００１３】
本発明の実施例によると、命令プロセッサにより制御されるシステムバスからメモリが独立している。
【００１４】
本発明の実施例によると、装置がシステムバスに結合され、更に各命令が命令プロセッサに与えられるコマンドフィールドと、命令が実行される時システムバスを使用する前記の装置を選択するアクノレッジフィールドとを有している。
【００１５】
本発明の実施例によると、トランジットメモリがシステムバスに結合され、更にシステムバスに結合されている前記の装置が、
（ａ）システムバスに関連する少なくとも１つの読み出し専用装置であり、システムバスからトランジットメモリにデータを転送するタスクが実行される時、関連するリクエストラインをアサートしてデータを前記トランジットメモリに転送する必要があることを表示し、該リクエストのアクノレッジが前記読み出し専用装置のみを選択して前記システムバスを使用する前記読み出し専用装置と、
（ｂ）システムバスに関連する少なくとも１つの書き込み専用装置であり、トランジットメモリからシステムバスにデータを転送するタスクを実行する時、トランジットメモリからデータを受信する必要がある時、関連するリクエストラインをアサートし、該リクエストのアクノレッジが前記書き込み専用装置のみを選択する前記書き込み専用装置とをふくむ。
【００１６】
この発明の実施態様によれば、処理装置には多数のアドレス計算機能があり、それぞれの機能は読み出しまたは書き込み命令のフィールドにより選択される。
【００１７】
この発明の実施態様によれば、それぞれの機能はアドレスバスに接続されたアドレスレジスタに関連しており、この機能には処理装置内で命令が実行される間アドレスレジスタの内容を適当に変更する回路が含まれている。
【００１８】
【実施例】
図１では、種々の装置１０がシステムバスに接続されているが、このシステムバスにはデータバスＤ、及びアドレスバスＡをふくむシステムバス、更にシステムバスに接続されたエレメントの読み出しまたは書き込みモードを他の操作の中から選択する制御バスＣＴＲＬが含まれている。読み出し専用メモリ（ＲＯＭ）１２とランダムアクセスメモリ（ＲＡＭ）１４もこのシステムバスに接続されている。
【００１９】
システム内でプロセッサにより実行されるメインのタスクは装置１０、１２、１４の間でデータを交換し、更に必要があればデータの上でオペレイトされる。
【００２０】
この発明によるプロセッサの実施態様を図の点線Ｌの下に示している。プロセッサにはシステムバスＤ，Ａ，ＣＴＲＬに接続された命令処理装置（ＩＰＲＯＣ）１６がある。この装置１６は例えば、マイクロプロセッサに共通のタイプである従来の命令プロセッサである。従来の命令プロセッサはデータバスＤを通してＲＯＭ１２またＲＡＭ１４内に記憶された命令Ｉを最初受ける即ちロードし、次にこの命令を実行する。命令の実行は一般にバスＤ，Ａ，ＣＴＲＬの上に作用する。
【００２１】
従来のプロセッサでは、命令が取出されるアドレスは単独の命令ポインタの中に含まれている。この命令ポインタの内容はプログラムの実行が割り込まれその後再開する時セーブされリストアされる。
【００２２】
これとは反対に、この発明ではそれぞれが実行される可能性のあるタスクに対応した多数の命令ポインタＩＰ１，ＩＰ２…ＩＰｎがある。これらのポインタのそれぞれは処理装置１６に対し取出される命令のアドレスとしてポインタがその内容を与えるためそれぞれのイネーブルラインＥＮ１−ＥＮｎによりイネーブルにされる。イネーブルラインＥＮはプライオリティレベル復号器１８により制御されているが、これはプロセッサによる処理をリクエストする各装置１０から１つのリクエストラインＲＥＱを受ける。それ故それぞれのリクエストライン、及び各装置１０にはプライオリティレベルが割り当てられている。同じプライオリティレベルが幾つかのタスクに割り当てられる場合がある。復号器１８は同時に１つのポインタＩＰのみイネーブルにする。これは例えば種々のプライオリティレベルをこれらのタスクに内部で割り当てることにより行なわれ、更に命令または１グループの命令が実行される毎に内部のプライオリティレベルを循環的にシフトすることにより行なわれる。
【００２３】
必要があれば、このイネーブルラインＥＮは装置１０により発生するリクエストのアクノレッジラインＡＣＫとして機能する場合がある。アクノレッジはそれを受ける装置の特性により種々の影響を及ぼす。
【００２４】
プログラムはＲＯＭまたはＲＡＭ内のそれぞれの位置に記憶され、更に実行されるタスクにそれぞれ対応している。ＲＯＭは図１のプロセッサのあらゆるシステム内で実行されるベーシックプログラムを記憶している。同様にＲＡＭは使用者が選択し、例えばフロッピーディスクまたはハードディスクからロードするプログラムを記憶している。使用者がＲＡＭにプログラムをロードできることはシステムがモジュラーベースで動作しても特に有益であるが、このモジュラーベースでは使用者はシステムバスＤ，Ａ，ＣＴＲＬの上で制御される装置を加えたり除去できる。システムが制御できるタスクの最大数はプロセッサに与えられる命令ポインタＩＰの数ｎに等しい。
【００２５】
システムの動作は以下の通りである。電源を投入すると、各命令ポインタＩＰｉ（ｉ＝１，２，…ｎ）は関連するプログラムのスタートアドレスに対応しているスタート値ＩＰｉ０で初期化される。これらのスタートアドレスは例えばＲＯＭまたはＲＡＭ記憶されており、ブートプログラムによりまたは動作中のシステムによりそれぞれに命令ポインタに転送される。更に、例えば命令ポインタのランクを関連プログラムに割り当てることによりプライオリティレベルは各プログラムに割り当てられる。しかも、復号化の機能が電源投入時にプログラムされるプライオリティ復号器１８も与えられている。
【００２６】
システムが初期化されると、ラインＲＥＱ上にリクエストが生ずる。プライオリティ復号器１８はプライオリティの一番高いリクエストの命令ポインタＩＰをイネーブルにする。命令プロセッサ１６はイネーブルされた命令ポインタにより示されたアドレスにある命令を受け（即ちロードし）、この命令を実行する。この命令が実行されると、増加回路２０はイネーブルされた命令ポインタを増加させる。これにより次の命令のアドレスが命令プロセッサ１６により実行される。増加回路２０はイネーブルポインタ上でのみ動作する。すなわち、他のポインタの内容は変更されない。増加回路２０の表現（＋１）はシンボルである。例えば、命令が異なる長さを有する時、またはジャンプ即ちサブプログラムのコール命令が実行されると、実行される命令は必ずしも連続したアドレスにある必要はない。この場合、イネーブルされた命令ポインタは従来のプロセッサのように適当な値だけ増加または減少する。
【００２７】
命令ポインタＩＰのランク（ｉ）は関連プログラム（即ちタスク）とリクエストを示すため使用される。タスクは関連プログラムの多数のループの実行に、またはプログラムの一部の実行に対応している。タスクは連続していてもよい。このように、プログラムの終わりは必ずしも関連タスクの終わりに対応しておらず、その逆もある。リクエストが無くなればタスクの終わりが発生する。このような時、タスクはサーブされると言われる。
【００２８】
リクエストｉのプライオリティが実行されるプログラムのプライオリティより高い時、例えばプログラムｉ−１が補正プログラムならば、プログラムｉ−１のカレント命令が実行された後復号器１８はポインタＩＰｉ−１の代わりポインタＩＰｉをイネーブルにする。以下に更に記載するが、プログラムＩＰｉ−１の命令のグループが実行されるまで、ＩＰｉをイネーブルにすることが待機される。リクエストｉは関連するアクノレッジラインＡＣＫにより同時にアクノレッジされる。新しいイネーブルポインタＩＰｉにより示される命令は命令プロセッサ１６内にロードされいかなる時間ロスも無く実行される。すなわち、新しい命令はプログラムｉ−１の新しい命令が実行された時実行される。
【００２９】
タスクｉがサーブされると、リクエストｉがディセイブルされ、更に復号器１８はプライオリティが最大の新しいタスクに対応した命令ポインタをイネーブルにする。新しいタスクはタスクｉにより休止にされたタスクであり、すなわちタスクｉ−１は完全に新しいタスクである。関連するプログラムはすぐに実行される。新しいタスクが休止にされたタスクであれば、そのプログラムは休止ポイントからスタートする。新しいタスクがまだスタートされないタスクに対応したプログラムであれば、そのプログラムはスタートアドレスでスタートする。
【００３０】
容易に判るように、１つのタスクから他のタスクへのスイッチングには従来のシステムで内容のセーブとリストアに必要であったいかなるデッドタイムも生じない。
【００３１】
復号器１８および増加回路２０での命令プロセッサ１６の動作は継続した命令サイクルに同期したクロック回路２３により与えられる共通クロック信号ＣＫにより同期している。ポインタの増加は各命令サイクルの終わりまたは始めのいずれかで行なわれる。
【００３２】
通常、従来から知られているように一番高いプライオリティレベルは一番短いタスクに割り当てられている。タスクの長さは関連するリクエストの活性化期間により決定される。早い処理を必要とする期間の長いタスクはこのルールに従わない。例えば、長いタスクにはデータのロスを防ぐため高いプライオリティが必要である。
【００３３】
前述のように、所定のタスクに関連するプログラムはループ内で実行されるように与えられている。このように図１のシステムにおいて、この種のプログラムの最後の命令はプログラムの一番目の命令にジャンプする。このジャンプは従来は増加回路２０により制御されている。この発明による最適な方法はループの制御に対する以下の部分に記載されている。
【００３４】
従来のプロセッサシステムには実行が休止されない命令のグループが幾つかある。従来のプロセッサでは割り込みリクエストのサーブをディセイブル及びイネーブルを行なう特別な命令がある。しかし、この発明によるプロセッサでは、このような特別な命令はそのような割り込みがそれ自体ないことにより適していない。
【００３５】
この問題を解決するため、この発明では各命令ＩをプリフィックスＩ１とコマンドＩ２に分けている。プリフィックスＩ１はプリフィックス復号器２２に与えられ、従来の命令に対応したコマンドＩ２は命令プロセッサ１６に与えられる。関連する命令がより高いプライオリティでプログラムを処理するため実行されるとき、プリフィックスＩ１はカレントプログラムが休止されるかされないかを示している。
【００３６】
プリフィックス復号器２２はプライオリティ復号器１８に信号ＮＥＸＴＥＮを与えるが、この信号はプリフィックスが特別な値にあれば、例えばカレントプログラムのプライオリティより高いプライオリティを有するリクエストが生じても、新しい命令ポインタのイネーブルを禁止する。
【００３７】
図２にはこの発明によるマルチタスクプロセッサの他の実施態様を示している。図１と同じエレメントは同じ参照番号で示している。このプロセッサは所定のタスクを有するマルチタスクに適合する。タスクに対応したプログラムはシステムバスＤ，Ａ，ＣＴＲＬと独立したＲＯＭ２４内に記憶される。イネーブル命令ポインタＩＰｉの内容はアドレスバスＡに与えられる代わりＲＯＭ２４のアドレス入力に直接加えられる。命令プロセッサ１６は前述のようにシステムバスＤ，Ａ，ＣＴＲＬに結合されているが、ＲＯＭ２４から命令を直接受けるように変更されている。従来のプロセッサのこのような変更は当業者により容易に行なわれている。
【００３８】
従来のプロセッサには命令レジスタと、データバスＤに結合されているワークレジスタとがある。命令がロードされると、命令レジスタに書き込まれ、更にこの命令が実行される時、データバスＤとワークレジスタの間でやりとりが発生する。この発明によれば、命令レジスタをデータバスＤに結合する代わり、この命令レジスタがＲＯＭ２４の出力に結合されている。このようなシステムでは、命令プロセッサ１６に命令がロードされるとすぐ命令が実行される。このように、システムバスは命令を得るためには命令プロセッサに必要でない。これは時間の大幅な節約を示している。
【００３９】
図２のシステムには最適化が更に含まれている。命令のプリフィックスＩ１は、カレントプログラムがカレント命令の後に休止されるかされないかの他に、カレント命令が所定の回数実行されるかどうかを適当な数のビットで示すため与えられている。プリフィックスＩ１は更にカレント命令がプログラムの最後の命令かどうかを示すため使用されている。
【００４０】
プリフィックス復号器２２にはプリフィックスＩ１内の数により初期化される命令サイクルのダウンカウンタがある。この数はプリフィックス復号器により復号される幾つかの一定数またはデータバスＤにより与えられる数Ｎの中から選択される数である。この数Ｎは計算されメモリ内に記憶される、即ちサーブ装置１０により与えられる。ループ命令が実行されると、プリフィックス復号器２２は所要数の命令サイクルの間増加回路２０を禁止にする。その結果ロードされた命令は所要の数と同じ回数実行される。
【００４１】
この方法では実行される各ループに対しジャンプ命令を使用していないが、これは１つの命令のみが数回連続的に実行されるならば大きな時間の節約になる。このような命令ループはデータがブロック毎にシステムバスの１つのエレメントから他のエレメントに転送される時特に有益である。
【００４２】
図２の実施態様では、各命令ポインタＩＰは次の２つのレジスタをふくむ：一番目のレジスタには関連するプログラムを実行するために命令アドレスを有しており、二番目のレジスタにはこのプログラムのスタートアドレスＩＰ０を有している。値ＩＰ０を与えるため幾つかの解決策が利用できる。例えばＲＯＭ２４はスタートアドレスのテーブルを有しており、これらのアドレスは初期化の間対応するレジスタ内に書き込まれる。ＲＯＭ２４内のプログラムがあるシステムと他のシステムで同一であれば、スタートアドレスＩＰ０はハード的に接続できる。この最後の解決策によりシステムバスにポインタＩＰを結合することが避けられ、これによりプロセッサの構造が簡単になる。
【００４３】
実行される命令が最後の命令であることをプリフィックスＩ１が示すと、この命令により信号ＩＮＩＴを命令ポインタＩＰのグループに与える復号器２２が実行され、イネーブルされたポインタのみをプログラムスタートアドレスで初期化する。
【００４４】
このようなシステムでは、プロセッサの命令セットは、幾つかの場合いかなるジャンプ命令も含まないセットに制限されており、これはプロセッサとりわけ増加回路２０を大幅に簡単にする。
【００４５】
図３は例えばビデオ信号用の単独の信号プロセッサシステムに適合するこの発明によるプロセッサの実施態様を示している。図２と同じエレメントは同じ参照番号で示している。
【００４６】
タイムシェアリング信号処理システムでは、ＥＰ−Ａ−０５０３９５６のシステムのように、信号の処理自体は特別な回路により実施される。プロセッサはデータをＲＡＭから種々の処理回路に転送するのみである。
【００４７】
図３の構造によりバスＶＩＮ上に来るデータの連続フローをＲＡＭ１４内に転送するように、更にＲＡＭの内容を処理回路３０に転送するようにされている。更に、この構造により回路３０により処理されるデータをＲＡＭに転送するように、また最後にＲＡＭの内容を出力バスＶＯＵＴに転送するようにされている。ＲＡＭ１４を通る中間的な通過はデータが入力バスＶＩＮと処理回路３０との間で不適当な順序で到達することから、またはデータが処理回路３０と出力バスＶＯＵＴとの間で不適当な順序で到達することから、または処理されるデータがすでに処理されたデータと結合されることから必要である。ＲＡＭ１４は従来から“トランジットメモリ”と呼ばれている。
【００４８】
図３のシステム内で実行されるタスクには適当なアドレスを計算することが含まれているが、これはデータが連続して処理回路３０に転送されるように一番目のＲＡＭエリア内で適当な順序で記憶されるためであり、更にデータが連続して出力バスＶＯＵＴの上に転送されるように二番目のＲＡＭエリア内で適当な順序で記憶されるためである。
【００４９】
入力バスＶＩＮ、処理回路３０の入力、出力、および出力バスＶＯＵＴはそれぞれ先入れ先出し方式（ｆｉｒｓｔ  ｉｎ  ｆｉｒｓｔ  ｏｕｔ）メモリ（“ＦＩＦＯ”）３２、３３、３４、３５を通してデータバスＤに結合されている。ＦＩＦＯ３２−３５のそれぞれはリクエストラインＲＥＱに接続されている。ＦＩＦＯ３２と３４はデータバスＤに対し読み出し専用メモリで、内容が所定の最大の内容を越える時およびその内容がシステムバスを通し空になる時、アクティブリクエストを出す。ＦＩＦＯ３３と３５はデータバスＤに対し書き込み専用メモリであり、内容が所定の最小の内容より小さい時、および内容がバスを通し充満される時アクティブリクエストを発生する。ＦＩＦＯのリクエストは前の図とは異なりアクノレッジ回路３８に結合されているそれぞれのアクノレッジラインＡＣＫを通しアクノレッジされる。
【００５０】
アクノレッジ回路３８はＲＯＭ２４により与えられるそれぞれの命令ＩからアディショナルフィールドＩ３を受ける。この構成において、ＦＩＦＯ３２−３５、データバスＤに接続されるあらゆる他の読み出し書き込み専用装置はアドレスバス上にいかなるアドレスも発生すること無く実行される命令（より詳細にはフィールドＩ３）により直接選択される。これにより書き込み専用装置に直接書き込むためＲＡＭで読み出されるデータが生じ、更に読み出しサイクルを実行する必要はないが、書き込みサイクルに従いＲＡＭ内に直接書き込む読み出し専用装置に読み出されるデータを生ずる。回路３８は必要があればアクノレッジを適当にフォーマットするための復号器および／または回路である（例えば、ＦＩＦＯメモリによりデータが読み込まれる前にＲＡＭ時間をバスＤ上で現在のデータに与えるため、この回路はアクノレッジ信号を遅延する必要がある）。
【００５１】
この種のシステムは以下のように動作する。２つの一番高いプライオリティレベルはＦＩＦＯ３２と３５のリクエストに割り当てられるが、これはこれらのＦＩＦＯがデータの連続フローをそれぞれバスＶＩＮ上で受けバスＶＯＵＴ上に与えるためである。圧縮データがバスＶＩＮ上に到着し伸張データがバスＶＯＵＴ上で伝達されるとき、データのフローはバスＶＯＵＴ上よりバスＶＩＮ上の方が遅い。一番高いプライオリティはＦＩＦＯ３５のリクエストに割り当てられる。非圧縮データがバスＶＩＮ上に到着し圧縮データがバスＶＯＵＴ上で伝達されるとき、一番高いプライオリティレベルがＦＩＦＯ３２のリクエストに割り当てられる。より低いプライオリティレベルは連続的にＦＩＦＯ３０とＦＩＦＯ３４のリクエストに割り当てられる。
【００５２】
前に示したように、書き込み専用ＦＩＦＯ（ＦＩＦＯ３３と３５）はその内容が内容の最小より小さければ、例えばＦＩＦＯメモリサイズの半分に等しければリクエストを出す。書き込み専用ＦＩＦＯに関連するタスクはデータのパケットをＲＡＭからＦＩＦＯに転送するが、データのこのパケットの大きさは固定されており、例えばＦＩＦＯのサイズの半分に等しい。
【００５３】
このような転送操作は前に示したように、ＲＡＭ読み出し命令のループ化された実行から成るが、このループの数は読み出し命令のプリフィックスＩ１により決定される。読み出し命令の各実行の間、ＲＡＭ１４はＦＩＦＯに直接転送されたデータをバスＤ上で与える。データのＦＩＦＯへの書き込み操作はクロック信号ＣＫのエッジに同期している。
【００５４】
読み出し専用ＦＩＦＯ（ＦＩＦＯ３２と３４）はそこに含まれるデータの数が最大の内容を越えていれば、例えばＦＩＦＯの大きさの半分に等しければリクエストを出す。ＦＩＦＯに関連するタスクはＦＩＦＯの内容をデータのパケットによりＲＡＭ１４内に転送する。各々のパケットには例えばＦＩＦＯの大きさの半分に等しい固定数のデータが入っている。
【００５５】
このような転送操作はＲＡＭ書き込み命令のループ化された実行から成るが、このループの数は書き込み命令のプリフィックスＩ１により決定される。ＦＩＦＯのアクノレッジ信号がアクティブにされると、ＦＩＦＯはデータをバスの上にクロック信号ＣＫの速度で与えられるが、この速度は書き込み命令の実行速度である。このように、ＦＩＦＯによりバスの上に与えられる各データは直接ＲＡＭに書き込まれる。
【００５６】
データのパケットが転送されるＲＡＭ１４のアドレスを決定するため、例えばＲＡＭ内に記憶されたポインタを更新することができる。命令プロセッサ１６にはアドレスレジスタＡＲがあるが、このレジスタには転送（読み出しまたは書き込み）操作が行なわれるアドレスが含まれている。データのパケットに対する転送プログラムの始めにはこのアドレスレジスタ内にポインタの内容を書き込む命令が含まれている。プログラムの後続の命令は例えば各転送命令においてアドレスレジスタの内容を適当に変更する命令である。この適当な変更は増加またはより複雑な計算、例えば再帰的な操作から成る。
【００５７】
しかし、転送命令の各実行におけるアドレスレジスタＡＲの変更命令の実行には転送命令の前後に命令が挿入されることが必要である。変更命令は転送命令と同じループの間に実行される。この方法はカレント命令のみループ化する必要があることを示すためプリフィックスＩ１を使用することにより与えられる利点とは両立しない。
【００５８】
この欠点を避けシステムの速度を更に上昇させるため、命令プロセッサ１６にはアドレスを計算するため所定数の所定の機能を有するアドレス計算ユニット１６−１がある。各機能には機能を実施するためのハードウェアがある。計算ユニット１６−１のそれぞれの計算機能は命令ＩのアディショナルフィールドＩ４により選択される（フィールドＩ４もアクノレッジフィールドＩ３に対応している）。このように実行される各命令に対し、特別なアドレス計算機能が選択される。それぞれのハードワイヤ機能は（クロックＣＫの）命令サイクルと同期してレジスタＡＲの状態を変更するようにされている。この構成により単独の読み出しまたは書き込み命令がループ実行される。読み出しまたは書き込み操作はレジスタＡＲ内のアドレスで生じ、更にこのアドレスは各ループで自動的にしかも適当に更新される。
【００５９】
ＦＩＦＯからＲＡＭにｎ個のデータのパケットを転送する転送プログラムについて検討する。この転送プログラムはＦＩＦＯにより与えられるリクエストで初期化されたタスクに対応している。数ｎはパケットのｎ番目のデータを受信した時対象とするＦＩＦＯがリクエストをアクティブにしないように十分大きく選択される。
【００６０】
この種のプログラムは次の命令から構成されている：
（１）カレントタスクの最後の実行の間使用されるラストアドレスをレジスタＡＲ内にロードするための命令（このアドレスは、例えばタスクに割り当てられた位置でＲＡＭに記憶される）。この命令のプリフィックスＩ１は命令が実行された後タスクが（より高いプライオリティにより）休止されないことを示している。フィールドＩ３とＩ４にはアクティブでない値が入っている。
（２）転送命令であり、この命令のプリフィックスＩ１はこの命令がｎ回実行され、更にタスクが休止されないことを示している。フィールドＩ３は処理される装置（３２−３５）を選択し、フィールドＩ４は使用されるアドレス計算機能を選択する。
（３）レジスタＡＲの内容をセーブするための命令で、そのプリフィックスＩ１はプログラムの実行が最初から続いておりタスクが休止していることを示している。フィールドＩ３とＩ４はアクティブでない値を有している。
【００６１】
このようなタスクはプログラムの最後の命令において、即ちデータの全てのパケットが転送された時、より高いプライオリティのタスクに制御を与える（この命令はタスクを休止させる命令である）。パケット内のデータ数ｎが大きければ、より高いプライオリティのタスクにより頻繁に制御を与える必要がある。
【００６２】
これを行なうため、一番目のアプローチはｎ個のデータにパケットをそれぞれｎ１…ｎｉ…ｎｐ個のデータのサブパケットに分割することであり、更にそれぞれｎ１…ｎｉ…ｎｐ個のデータのｐ個の連続した転送プログラムを有する転送プログラムを与えることである。各サブプログラムには転送命令がｎ回の代わりｎｉ回実行されることを除き、更にプログラムが始めから連続していることを最後のサブプログラムのサーブＡＲ命令のみが示していることを除いて、前述の３つの命令を含んでいる。これにより各サブプログラムの終わりで、即ち（ｎ個データの代わり）ｎｉ個のデータの転送に多くても等しい比較的短い待ち時間の後に、より高いプライオリティのタスクがゲインコントロールされる。これにより、更に各サブプログラムにおいて異なったアドレス計算機能が選択され、しかも複雑な計算機能を他のタスクにも使用される簡単なサブ機能に分割できる。
【００６３】
しかし、このアプローチにはｎｉ個のデータの２つの転送の間でセーブ命令を実行することと、処理の速度を下げるレジスタＡＲの更新命令を実行することが必要である。
【００６４】
この欠点を避ける二番目のアプローチは計算機能と同じ数のアドレスレジスタＡＲを有する命令プロセッサ１６を与えることから成る。このように、各計算機能は自身のアドレスレジスタの上で動作を実施し、更に機能が（内蔵タスクが休止されることにより）休止されるならば、内蔵アドレスレジスタはアドレスを保持し、機能が再度アクティブにされるならばこのアドレスから継続する。これらのアドレスレジスタを更新しまたはセーブする必要がない。この結果、転送プログラムのみがアドレスレジスタに対する可能な一番目の更新命令と、可能な最後のセーブ命令と、これらの間に一連の転送命令とから構成されるが、それぞれはループ内で実行され、各転送命令のプリフィックスＩ１はループの数を示している。
【００６５】
プログラムはループ化された命令を実行する間休止されない。これを行なうため、ループ化された命令のフィールドＩ１はアクティブビットにより（図１に関して前に記載したように）プログラムが休止されてはいけないことを示している。このアクティブビットは信号ＮＥＸＴＥＮをアクティブにしないプリフィックス復号器２２により受信されるが、これによりカレントプログラムが休止されることを示している。
【００６６】
図４Ａには映像処理システム、例えばＭＰＥＧ標準に従い圧縮（符号化）されたビデオ信号の伸張（即ち復号化）に適合するこの発明によるプロセッサの実施態様を示している。このシステムは図３のシステムに基づいているが、同じエレメントは同じ参照番号で示している。処理回路３０は、可変長復号器（ＶＬＤ），ランレングス復号器（ＲＬＤ），および逆離散コサイン変換回路（ＤＣＴ−１）を有した復号器である。アディショナル書き込み専用ＦＩＦＯ３６はデータバスＤと、アクノレッジバスＡＣＫと、更にリクエストバスＲＥＱとに接続されている。ＦＩＦＯ３６によりデータはフィルタ４０に与えられる。このフィルタを通されたデータは復号器３０の出力に加えられる。フィルタがデータを受信する必要があることを示すためフィルタ４０がラインＦＲＱをアクティブにすればＦＩＦＯ３６のみがリクエストを発生する。
【００６７】
回路３０のＶＬＤはバスＶを通し命令プロセッサ１６のレジスタ１６−２に接続されている。復号器ＶＬＤは更にフィルタのアクティブラインＧＯを通しフィルタ４０に接続されている。
【００６８】
命令プロセッサ１６の計算ユニット１６−１はプリフィックス復号器２２に命令がループされている回数を示すための前述の数Ｎを与えている。
【００６９】
この場合使用されているＲＡＭ１４はダイナミックラム（ＤＲＡＭ）である。ＤＲＡＭの利点はサイズが小さいこと、低廉であること、および記憶容量が大きいことである。しかし、ＤＲＡＭは２つの段階でアクセスされる。ＤＲＡＭは幾つかのページに分割される。ＤＲＡＭ内での読み出しまたは書き込みの前に、ページは特別なアドレスサイクルで選択される。従って、セルは通常の読み出しまたは書き込みサイクルでこのページ内で選択される。
【００７０】
図４Ａに示すような映像処理システムにおいては、ＤＲＡＭは多数の領域に分割される。一番目の領域はバスＶＩＮを通して与えられる圧縮データを受けるためのものである。二番目から四番目の領域は最後の２つの処理映像と同じく復号器３０により処理される映像を記憶するためのものである。（バスＶＯＵＴに送られて）ディスプレイされる映像はこれらの最後の３つのセルの１つから読み出される。
【００７１】
図４ＢはバスＶＩＮに到着するデータのフローを示している。ＤＲＡＭ領域の部分１００は処理される映像を記憶するため使用されており、ＤＲＡＭ領域の部分１０２は処理される最後の２つの映像を記憶するため使用されている。
【００７２】
バスＶＩＮに到着するデータのフローにはヘッダＨが前にある可変長の圧縮データＣＤのパケットがある。連続的なパケットＣＤは例えば映像の１６×１６画素の連続したスクエアに対応している。各パケットは復号されると所謂“マクロブロック”になる。マクロブロックは例えば１６×１６画素の輝度ブロックＹと、更に例えば８×８画素の２つの色ブロックＵ、Ｖとに分割される。１つの映像を記憶するためのＤＲＡＭ領域は２つのサブ領域に分割され、一方は輝度ブロックＹを記憶し、他方は色ブロックＵ、Ｖを記憶する。色ブロックはブロックの全数をＤＲＡＭのページに入れるためこのように色ブロックから分離される。記載を簡単にするため、前述の２つのサブ領域は合わせて示している。このように、メモリ領域からマクロブロックを読み出すことまたは書き込むことは、輝度ブロックＹを一番目のサブ領域に、更に対応した色ブロックＵ、Ｖを二番目のサブ領域から読み出すことまたは書き込むことになる。マクロブロックをＤＲＡＭとＦＩＦＯの間で対応するため、アドレス計算機能は一番目のサブ領域内でのブロックＹの読み出しまたは書き込みを、更に二番目のサブ領域内でのブロックＵ、Ｖの読み出しまたは書き込みを制御するため必要になる。
【００７３】
ＭＰＥＧ標準によれば３つの再構成タイプ、即ち“内部”、“予測”、および“両方向”がある。内部の再構成では復号器３０により与えられるマクロブロックは直接映像部分に対応しており処理の追加を必要としない。
【００７４】
予測の再構成では、再構成される映像のマクロブロックは前に再構成された映像のマクロブロックと結合される（“予測器”）。復号器３０により与えられるマクロブロックはカレントブロックを形成するためフィルタを通った予測器に加えられる補正マクロブロックである。
【００７５】
予測器は再構成される映像に従ってまたは前にディスプレイの順序で映像内でサーチされる。勿論これを行なうため映像はディスプレイの順序とは異なる適当な順序で到達する。
【００７６】
両方向の再構成では、再構成される映像のマクロブロックは予測器で述べたようにそれぞれ前の２つの再構成された映像の２つのマクロブロックと結合される。これらの２つの再構成された映像は、再構成される映像の前にある映像および再構成される映像の後にある映像にそれぞれ対応している。復号器３０により与えられるマクロブロックも補正マクロブロックである。
【００７７】
図４Ｂは映像のマクロブロックＢの予測の再構成がメモリ領域１００内で再構成されることを示している。このメモリ領域のハッチング部分は既に再構成されたマクロブロックを示している。メモリ領域１０２は既に再構成された映像の全てを記憶している。データのパケットのヘッダＨはこのヘッダの後に到着するデータＣＤ上で動作する再構成のタイプを示している。予測の再構成の場合、データＣＤは復号され補正マクロブロックＣＢを形成する。マクロブロックＣＢの画素が与えられるように、メモリ領域１０２内でサーチされる予測器ＰＢの画素に加えられるが、この予測器ＰＢの画素は既にフィルタを通っている。領域１０２内の予測器ＰＢの位置はヘッダにより与えられるベクトルＶにより決定される。ベクトルＶにより、領域１００内で再構成されるブロックＢの位置に対応した領域１０２内での位置に対する予測器Ｐの相対的な位置が与えられる。
【００７８】
図４Ａのシステムの動作を次に考察する。種々のＦＩＦＯに内蔵されたタスクをプライオリティが減少する順序で以下に記載する：
−ＤＲＡＭからバスＶＯＵＴへの転送（ＦＩＦＯ３５），
−バスＶＩＮからＤＲＡＭへの転送（ＦＩＦＯ３２），
−ＤＲＡＭから復号器３０への転送（ＦＩＦＯ３３），
−ＤＲＡＭからフィルタ４０への転送（ＦＩＦＯ３６），
−復号器３０からＤＲＡＭへの転送（ＦＩＦＯ３４）。
【００７９】
ＦＩＦＯ３４−３６の大きさは、例えば２つのマクロブロックである、即ち１６×１６画素の２つのブロック（輝度）、および８×８画素の４つのブロック（色）である。ＦＩＦＯ３４−３６は１つのマクロブロックを含む時リクエストを発生する。ＦＩＦＯ３２と３３の大きさは、例えば平均サイズの圧縮データの２つのパケットであり、半分満たされた時リクエストを発生する。
【００８０】
内部の再構成の場合の図４Ａのシステムの動作は、予測器を処理するフィルタ４０が含まれていないので図３の動作に等しい。
【００８１】
ＦＩＦＯ３２に関連するタスクは一番目のＤＲＡＭ領域における内容の半分を書き込むことから成る。データは連続したアドレスでＤＲＡＭ内に書き込まれる。
【００８２】
ＦＩＦＯ３３に関連するタスクは前述の一番目の領域内に記憶されたデータを有するＦＩＦＯ３３の半分を満たすことから成る。データは連続したアドレスでＤＲＡＭから読み出される。
【００８３】
これらのタスクに関連するアドレス計算機能は簡単なアドレスの増加から成る。
【００８４】
ＦＩＦＯ３４に内蔵されたタスクはＦＩＦＯ３４を空にすること、およびこのマクロブロックをＤＲＡＭの二番目から四番目の映像領域の１つの中に書き込むことから成る。これらの映像領域は２つの再構成された映像と再構成された１つの映像が常に利用できるようにするため周期的に充満される。マクロブロックは、例えば連続的なアドレスのメモリセルが映像ラインの連続的な画素に対応するように対象とする映像領域に書き込まれる。
【００８５】
ＦＩＦＯ３５に関連するタスクはディスプレイされる映像を含む領域内に読み出されたマクロブロックによりＦＩＦＯ３５を充満することから成る。前述のように、この領域は二番目から四番目の領域の１つである。アドレスは映像ラインの連続した画素に対応したメモリセルを読み出すように発生する。充満される映像領域に画素を読み出すことが必要である。この場合、この充満はシステムが画素の読み出しを開始した直後に開始する。読み出される画素は書き込まれるマクロブロックにより重ね書きされない。
【００８６】
前述のように、各マクロブロックには映像領域の一番目のサブ領域に記憶された輝度ブロックと、映像領域の二番目のサブ領域に記憶された２つの色ブロックとがある。アドレス計算機能は書き込みの間データの分離を制御し、しかも読み出しの間データのグループ分けを制御し、更にサブ領域への画素の読み出し書き込みを制御する。
【００８７】
予測または両方向の再構成の場合、システムは次のように動作する。ＦＩＦＯ３２−３５に関連するタスクは前述の通りである。ＶＬＤが予測ベクトルＶを含むヘッダを受信すると、信号ＧＯを送ることによりフィルタ４０をアクティブにし、ＶＬＤは命令プロセッサ１６のレジスタ１６−２にベクトルＶを同時に送る。フィルタ４０はラインＦＲＱをアクティブにしＦＩＦＯ３６により発生するリクエストをイネーブルにする。ＦＩＦＯ３５は最初空であるので、リクエストをすぐに発生する。
【００８８】
ＦＩＦＯ３６に関連するタスクはＦＩＦＯ３６内でベクトルＶにより示される予測器に書き込まれる。このタスクに関連するプログラムにはＤＲＡＭを読み出し更にフィールドＩ４を通し特別なアドレス計算機能を選択するためのループ化された命令がある。この特別なアドレス計算機能はベクトルＶを使用し予測器が読み出される位置に置かれる。両方向の再構成の場合、ベクトルＶはダブルであり２つの所要の予測器のいずれかの位置を示している。アドレス計算機能は２つの予測器が画素のグループにより交互に読み出されるように行なわれる。
【００８９】
図４Ｂに示すように、予測器ＰＢによりＤＲＡＭの幾つかのページはオーバーラップされる（ページの境界は太いラインで示される）。予測器の読み出しはより複雑である。この場合、選択された計算機能によりプリフィックス復号器に数Ｎが与えられる。数Ｎは例えば予測器が部分的に含む上側のページ内で列の画素の高さを示している。予測器を読み出すことは全ての列に対し、上側のページに含まれる列の一番目の部分の画素を読み出すためＮ回読み出し命令を実行することから成り、次に下側のページ内の列の残りの部分をＬ−Ｎ回読み出し命令を実行することから成る（Ｌは列の画素の全ての高さ）。ＤＲＡＭのページの変更は２つの読み出しループの間で行なわれる。
【００９０】
このような構成により、予測器は適当な順序で読み出されるが、これにより予測器の画素を再配列するための複雑なアドレス計算機能と、配列される前に予測器の画素を一時的に記憶するためのバッファを用意する必要性が無くなる。前述のＥＰ−Ａ−０５０３９５６の特許出願において、ページに含まれる部分的な予測器の全ての画素は他のページに含まれる部分的な予測器の画素を読み出す前に一番目に読み出されるが、これはより高い複雑性を犠牲にしてページの変更数を最小にするためである。この発明によれば、システムの速さは十分であるので多数のページ変更を行なうことが可能である。更に実際にはこのページ変更の数の増加は１００回につき約４クロックサイクルである。
【００９１】
当業者はアドレス計算に必要な種々の機能を実行するための論理回路を容易に実現することができる。
【００９２】
このシステムはタイムシェアリング映像処理システムのメモリコントローラに対応できることに注意する必要がある。システムの全体は、この発明によりこのようなシステムが改善される内容を容易に示す簡単な方法について記載されている。当業者はこの記載で与えられた情報により、およびＭＰＥＧ標準により与えられた命令で映像処理システムの全体を理解することができる。
【００９３】
この発明の１つの特別な実施態様について記載したが、種々の変更、修正、および改善が当業者には容易に考えられる。このような変更、修正、および改善はこの開示の一部であり、この発明の内容および範囲の中である。従って前述の記載は一例でありこれにより制限されない。
【図面の簡単な説明】
【図１】  この発明によるマルチタスクプロセッサの例
【図２】  この発明によるプロセッサの他の例
【図３】  この発明によるプロセッサの他の例で、より詳細には単独の処理システムに適合する例
【図４Ａ】  この発明によるプロセッサの簡単な例で、より詳細には映像処理システムに適合する例
【図４Ｂ】  ＭＰＥＧの標準に従い動作する映像処理システムにより処理される映像部分に対応したデータのブロックダイアグラム
【符号の説明】
１０  装置
１２  読み出し専用メモリ（ＲＯＭ）
１４  ランダムアクセスメモリ（ＲＡＭ）
１６  命令処理装置（ＩＰＲＯＣ）
１６−１  アドレス計算ユニット
１６−２  レジスタ
１８  復号器
２０  増加回路
２２  プリフィックス復号器
２３  クロック回路
２４  ＲＯＭ
３０  処理回路
３２、３３、３４、３５  先入れ先出し方式メモリ（ＦＩＦＯ）
３６  付加的な書き込み専用ＦＩＦＯ
３８  アクノレッジ回路
４０  フィルタ
１００、１０２  メモリ領域
【図１】
0003713723.tif 000002
【図２】
0003713723.tif 000003
【図３】
0003713723.tif 000004
【図４Ａ】
0003713723.tif 000005
【図４Ｂ】
0003713723.tif 000006