(57)【特許請求の範囲】
【請求項１】
データを処理する装置であって、
プログラム命令に応答して１つ又は複数の制御信号を生成する命令デコーダ回路と、
前記１つ又は複数の制御信号に応答して前記プログラム命令によって指定されたデータ処理動作を実行する処理回路と、
プログラム可能なフロー制御値を格納するように構成されたフロー制御レジスタと、
を備え、
前記プログラム可能なフロー制御値がジャンプ有効化フィールドを含み、
前記命令デコーダ回路が、実行されている現在のプログラム命令列の終わりを表すマーカ命令に応答して、前記フロー制御レジスタから前記プログラム可能なフロー制御値を読み出し、前記ジャンプ有効化フィールドに格納された値に従って前記１つ又は複数の制御信号を生成して、前記現在のプログラム命令列の完了後に、
（ｉ）ターゲットプログラム命令から始まるターゲットプログラム命令列を処理すること、
（ｉｉ）新しい処理タスクが開始されるのを待つアイドル状態に入ること、
のうちの１つをトリガする、装置。
【請求項２】
前記プログラム可能なフロー制御値が、前記ターゲットプログラム命令のメモリ・アドレスを指定する、請求項１に記載の装置。
【請求項３】
前記プログラム可能なフロー制御値が、前記ターゲットプログラム命令のメモリ・アドレスを指定するターゲットアドレス・フィールドを含む、請求項１に記載の装置。
【請求項４】
前記ジャンプ有効化フィールドがジャンプ有効化ビットである、請求項１に記載の装置。
【請求項５】
前記マーカ命令が、前記現在のプログラム命令列の最後のプログラム命令を識別するプログラム終了命令である、請求項１に記載の装置。
【請求項６】
前記ターゲットプログラム命令列が、タスク・スケジューリングを制御するためのターゲットスケジューリング・プログラムである、請求項１に記載の装置。
【請求項７】
前記装置が、データ・エンジン及び前記命令デコーダ回路に結合されたホスト・プロセッサを備え、前記処理回路及び前記フロー制御レジスタが前記データ・エンジンの一部である、請求項１に記載の装置。
【請求項８】
前記ターゲットプログラム命令列が、タスク・スケジューリングを制御するためのターゲットスケジューリング・プログラムであり、前記ターゲットスケジューリング・プログラムが前記データ・エンジンによって実行され、前記現在のプログラム命令列が前記ホスト・プロセッサ及び前記ターゲットスケジューリング・プログラムのうちの１つによって実行のために呼び出される、請求項７に記載の装置。
【請求項９】
前記ホスト・プロセッサが、前記ホスト・プロセッサによって実行されるホスト・スケジューリング・プログラムを用いて前記現在のプログラム命令列を呼び出す、請求項８に記載の装置。
【請求項１０】
（ｉ）前記ターゲットスケジューリング・プログラムを実行する前記データ・エンジンが前記現在のプログラム命令列を呼び出すときに、前記プログラム可能なフロー制御値が、前記現在のプログラム命令列の完了後に前記ターゲットスケジューリング・プログラムの実行に戻ることをトリガする値にプログラムされ、
（ｉｉ）前記ホスト・スケジューリング・プログラムを実行する前記ホスト・プロセッサが前記現在のプログラム命令列を呼び出すときに、前記プログラム可能なフロー制御値が、前記現在のプログラム命令列の完了後に前記データ・エンジンが前記アイドル状態に入ることをトリガする値にプログラムされる、
請求項９に記載の装置。
【請求項１１】
前記プログラム可能なフロー制御値が、前記命令デコーダ回路によって前記データ・エンジンでデコードされたロード・プログラム命令に応答して、前記フロー制御レジスタに格納される、請求項７に記載の装置。
【請求項１２】
前記命令デコーダ回路が、
（ｉ）前記ジャンプ有効化フィールドが、前記現在のプログラム命令列の完了後に前記ターゲットプログラム命令から始まるターゲットプログラム命令列の処理をトリガする前記１つ又は複数の制御信号を前記命令デコーダ回路が生成することを指定する値にされ、前記プログラム可能なフロー制御値に含まれるターゲットアドレス・フィールドが前記ターゲットプログラム命令のメモリ・アドレスを指定する値にされる、第１形態の前記ロード・プログラム命令と、
（ｉｉ）前記ジャンプ有効化フィールドが、前記現在のプログラム命令列の完了後に前記ターゲットプログラム命令から始まるターゲットプログラム命令列の処理をトリガする前記１つ又は複数の制御信号を前記命令デコーダ回路が生成することを指定する値にされ、前記プログラム可能なフロー制御値に含まれるターゲットアドレス・フィールドが前記ターゲットプログラム命令のメモリ・アドレスを指定する値にされる、又は、前記ジャンプ有効化フィールドが、前記現在のプログラム命令列の実行が完了したときに前記アイドル状態に入ることを指定する値にされる、第２形態の前記ロード・プログラム命令と、
に応答する、請求項１１に記載の装置。
【請求項１３】
データを処理する装置であって、
プログラム命令に応答して１つ又は複数の制御信号を生成する命令デコーダ手段と、
前記１つ又は複数の制御信号に応答して前記プログラム命令によって指定されたデータ処理動作を実行する処理手段と、
プログラム可能なフロー制御値を格納するフロー制御レジスタ手段と、
を備え、
前記プログラム可能なフロー制御値がジャンプ有効化フィールドを含み、
前記命令デコーダ手段が、実行されている現在のプログラム命令列の終わりを表すマーカ命令に応答して、前記フロー制御レジスタ手段から前記プログラム可能なフロー制御値を読み出し、前記ジャンプ有効化フィールドに格納された値に従って前記１つ又は複数の制御信号を生成して、前記現在のプログラム命令列の完了後に、
（ｉ）ターゲットプログラム命令から始まるターゲットプログラム命令列を処理すること、
（ｉｉ）新しい処理タスクが開始されるのを待つアイドル状態に入ること、
のうちの１つをトリガする、装置。
【請求項１４】
プログラム命令に応答して、１つ又は複数の制御信号を生成するステップと、
前記１つ又は複数の制御信号に応答して、前記プログラム命令によって指定されるデータ処理動作を実行するステップと、
プログラム可能なフロー制御値を格納するステップと、
を含むデータを処理する方法であって、
前記プログラム可能なフロー制御値がジャンプ有効化フィールドを含み、
実行されている現在のプログラム命令列の終わりを表すマーカ命令に応答して、前記プログラム可能なフロー制御値を読み出し、前記ジャンプ有効化フィールドに格納された値に従って前記１つ又は複数の制御信号を生成して、前記現在のプログラム命令列の完了後に、
（ｉ）ターゲットプログラム命令から始まるターゲットプログラム命令列を処理すること、
（ｉｉ）新しい処理タスクが開始されるのを待つアイドル状態に入ること、
のうちの１つをトリガする、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。より詳細には、本発明は、データ処理システム内のプログラム・フローの制御に関する。
【背景技術】
【０００２】
プログラム命令によって指定されるデータ処理動作を行うように処理回路を制御することができる１つ又は複数の制御信号を生成するために、プログラム命令に応答する命令デコーダ回路を有する、データ処理システムを提供することが公知である。プログラムを系統立てるのに便利な方法は、それらを、必要に応じて呼ぶことができるルーチン又は機能に分割することである。例として、データ値を設定したときのフーリエ変換の計算のような機能を果たすために、コードが書き込まれコンパイルされてもよい。この機能は、プログラム・フロー内の多数の異なるポイントから呼ばれてもよい。プログラム命令を実行するための１つよりも多いハードウェア・セットを含むシステムにおいて、１つのハードウェア・セットが１つの命令セットを実行し、その一方で、別のハードウェア・セットが別の命令セットを実行することも可能である。この環境内で、１つのハードウェア・セットは、別のハードウェア・セットによって実行されるフーリエ変換のような機能を呼び出すことができる。こうした環境内で、特定の機能を実行するための特殊化されたハードウェアを形成することが可能である。
【０００３】
特定の機能を実行するための特殊用途ハードウェアの例は、データ・エンジンである。データ・エンジンは、例えば、メディア処理のような計算が集中するタスクを実行するために提供される場合がある。データ・エンジンは、典型的に、データ・エンジンと関連付けられたタスクを効率的に実行するように設計された特殊用途ハードウェアを含む。こうしたデータ・エンジンは、データ・エンジンによって実行されるべきタスクをスケジュールする汎用プロセッサと組み合わせて動作することができる。幾つかの場合において、データ・エンジンは、データ・エンジン上で実行されるスケジューリング・プログラムを用いて、データ・エンジンによる実行についてのそれ独自のタスクを自身でスケジュールすることが可能である。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特定の機能を実行するためのプログラムの開発及びテストには、高い費用と時間がかかる。プログラムは、少量のメモリ・ストレージを要求するものであることが望ましい。
【課題を解決するための手段】
【０００５】
１つの態様から見ると、本発明は、
プログラム命令に応答して１つ又は複数の制御信号を生成する命令デコーダ回路と、
前記１つ又は複数の制御信号に応答して前記プログラム命令によって指定されたデータ処理動作を実行する処理回路と、
プログラム可能なフロー制御値を格納するように構成されたフロー制御レジスタと、
を備え、
前記命令デコーダ回路が、実行されている現在のプログラム命令列の終わりを表すマーカ命令に応答して、前記フロー制御レジスタから前記プログラム可能なフロー制御値を読み出し、前記プログラム可能なフロー制御値に従って前記１つ又は複数の制御信号を生成して、前記現在のプログラム命令列の完了後に、
（ｉ）対象プログラム命令から始まる対象プログラム命令列を処理すること、
（ｉｉ）新しい処理タスクが開始されるのを待つアイドル状態に入ること、
のうちの１つをトリガする、データを処理する装置を提供する。
【０００６】
本技術は、実行されている現在のプログラム命令列が、どのようにしてそれが呼び出されたかに応じて現在のプログラム命令列の実行の完了時に適切な異なる挙動を有する、異なる機構を介して呼び出されてもよいことを識別する。どのようにしてそれが呼び出されたかに応じて現在のプログラム命令列の異なるバージョンを提供する代わりに、本技術は、フロー制御レジスタ内に格納されたプログラム・フロー制御値を用いて、現在のプログラム命令列が実行を完了したときにどんな挙動が起こるべきかを判定する。したがって、現在のプログラム命令列は、異なる形態に修正され又は提供される必要はなく、それにもかかわらず、完了時に異なる挙動のトリガをサポートすることができる。より具体的には、完了時にサポートすることが望ましい異なる挙動は、対象プログラム命令から始まる対象プログラム命令列の処理をトリガすること、又は、アイドル状態に入ること、例えば新しい処理タスクが開始されるのを待つことである。これらの挙動は、現在のプログラム命令列が、現在のプログラム命令列を実行するのと同じ機構上で実行される対象スケジューリング・プログラムから呼び出されるシステムをサポートするとともに、現在のプログラム命令列が、現在のプログラム命令列を実行するのとは別の機構から呼び出され、現在のプログラム命令列が完了したときにアイドル状態に入るようにされる機構もサポートする。
【０００７】
プログラム可能なフロー制御値の幾つかの値について実行される対象プログラム命令は、固定位置（例えばハードウェア組み込みベクトル）に固定された対象プログラム命令であってもよい。しかしながら、プログラム可能なフロー制御値がプログラム命令のメモリ・アドレスを指定するときに、より大きい融通性が達成される。したがって、対象プログラム命令は、プログラム可能なフロー制御値に設定された値に応じて変化することができる。
【０００８】
プログラム可能なフロー制御値は、プログラム可能なフロー制御値が対象プログラム命令のメモリ・アドレスを指定する対象アドレス・フィールドを含むかどうか、或いは代替的に、現在のプログラム命令列の実行が完了したときにアイドル状態に入るべきであることを指定する値を格納している、ジャンプ有効化フィールドを含んでもよい。ジャンプ有効化ビットであってもよい、このジャンプ有効化フィールドは、現在のプログラム命令列の完了時に代替的挙動間を切り換えるように働く。
【０００９】
命令デコーダがそれに応答して代替的なルーチン終了時の挙動をトリガするマーカ命令は、現在のプログラム命令列の最後のプログラム命令を識別するプログラム終了命令とすることができる。このプログラム終了命令は、シーケンス内の最後の命令であってもよく、又は、現在のプログラム命令列の最後の命令の前に所定の数の命令が配置されてもよい。後者の挙動は、現在のプログラム命令列がパイプライン化された実行機構上で実行されるときに有用であり、対象プログラム命令列への分岐が要求される場合に、これが現在のプログラム命令列の最後の命令より十分前の時間において、対象プログラム命令がフェッチされて後続の実行が開始されることを識別でき得ることを保証することによって、パイプラインの効果的な使用を促進させる。
【００１０】
その実行が１つの挙動においてトリガされてもよい対象プログラム命令列は、種々の異なる形態をとることができる。例として、多くの機能を、次の機能の開始をトリガするように働く１つの機能の終わりと結びつけることが可能である。代替的機構では、対象プログラム命令列は、タスク・スケジューリングを制御するための対象スケジューリング・プログラムであり、現在のプログラム命令列を実行するのと同じ機構によって実行される、すなわち、この機構は、対象スケジューリング・プログラムを使用して、それ独自のタスクをスケジュールする。
【００１１】
上記の技術を使用する装置は、様々な異なる形態を有してもよく、様々な異なる多重処理環境に適用可能である。しかしながら、この技術が良く適している１つの環境は、装置がデータ・エンジン及び命令デコーダ回路に結合されたホスト・プロセッサを備えるとき、処理回路及びフロー制御レジスタがデータ・エンジンの一部である。
【００１２】
この環境内で、対象スケジューリング・プログラムは、データ・エンジンによって実行されてもよく、現在のプログラム命令列は、ホスト・プロセッサ又は対象スケジューリング・プログラムのいずれかによって呼び出されてもよい。フロー制御レジスタを用いて現在のプログラム命令列の完了時の挙動を制御することにより、どのようにしてそれが呼び出されるか、及び、現在のプログラム命令列の完了時にそれがどれだけ適切に挙動するかとは無関係に、同じ現在のプログラム命令列が用いられることが可能となる。
【００１３】
ホスト・プロセッサはまた、データ・エンジンによる実行についての現在のプログラム命令列を呼び出すために、ホスト・スケジューリング・プログラムを使用してもよい。
【００１４】
幾つかの実施形態において、対象スケジューリング・プログラムが現在のプログラム命令列を呼び出すときに、現在のプログラム命令列の完了後に対象スケジューリング・プログラムの実行に戻ることをトリガされ、スケジューリング後のプログラムが現在のプログラム命令列を呼び出すときに、現在のプログラム命令列の完了後にデータ・エンジンがアイドル状態に入ることをトリガされるように、フロー制御値がプログラムされてもよい。
【００１５】
プログラム可能なフロー制御値は、データ・エンジン内でデコードされ実行されるロード・プログラム命令に応答してロードされてもよい。
【００１６】
ロード・プログラム命令は、ジャンプ有効化フィールドが、プログラム可能なフロー制御値が現在のプログラム命令列の完了時の実行についてトリガされるべき対象プログラム命令のメモリ・アドレスを指定する対象アドレス・フィールドを含むことを指定する値にされる１つの形態、ならびに、ジャンプ有効化フィールドが、現在のプログラム命令列の実行が完了したときに前述の挙動又は強制的にアイドル状態に入ることのいずれかを与える値に設定される第２の形態を有することができる。第１の形態は必ずしも存在する必要はない。
【００１７】
別の態様から見ると、本発明は、プログラム命令に応答して１つ又は複数の制御信号を生成する命令デコーダ手段回路と、
前記１つ又は複数の制御信号に応答して前記プログラム命令によって指定されたデータ処理動作を実行する処理手段と、
プログラム可能なフロー制御値を格納するフロー制御レジスタ手段と、
を備え、
前記命令デコーダ手段が、実行されている現在のプログラム命令列の終わりを表すマーカ命令に応答して、前記フロー制御レジスタ手段から前記プログラム可能なフロー制御値を読み出し、前記プログラム可能なフロー制御値に従って前記１つ又は複数の制御信号を生成して、前記現在のプログラム命令列の完了後に、
（ｉ）対象プログラム命令から始まる対象プログラム命令列を処理すること、
（ｉｉ）新しい処理タスクが開始されるのを待つアイドル状態に入ること、
のうちの１つをトリガする、データを処理する装置を提供する。
【００１８】
さらなる態様から見ると、本発明は、プログラム命令に応答して、１つ又は複数の制御信号を生成するステップと、
前記１つ又は複数の制御信号に応答して、前記プログラム命令によって指定されるデータ処理動作を実行するステップと、
プログラム可能なフロー制御値を格納するステップと、
を含むデータを処理する方法であって、
実行されている現在のプログラム命令列の終わりを表すマーカ命令に応答して、前記プログラム可能なフロー制御値を読み出し、前記プログラム可能なフロー制御値に従って前記１つ又は複数の制御信号を生成して、前記現在のプログラム命令列の完了後に、
（ｉ）対象プログラム命令から始まる対象プログラム命令列を処理すること、
（ｉｉ）新しい処理タスクが開始されるのを待つアイドル状態に入ること、
のうちの１つをトリガする、方法を提供する。
【００１９】
本発明の上記の及び他の目的、特徴及び利点は、添付の図面と組み合わせて読まれるべき例示的な実施形態の以下の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【００２０】
【図１】ホスト・プロセッサ及びデータ・エンジンを含むシステム・オン・チップ集積回路を概略的に示す図である。
【図２】図１のデータ・エンジン内で用いられるプログラム・フロー制御機構を概略的に示す図である。
【図３】プログラム可能なフロー制御値を格納するフロー制御レジスタを概略的に示す図である。
【図４】それぞれプログラム命令を格納するホスト・プロセッサ・メモリ及びデータ・エンジン・メモリを概略的に示す図である。
【図５】データ・エンジンによって実行され、プログラム終了命令の形態のマーカ命令を含む、現在のプログラム命令列を概略的に示す図である。
【図６】ホスト・プロセッサがデータ・エンジンにおける機能の実行を呼び出すときの動作フローを概略的に示す図である。
【図７】データ・エンジン上で実行される対象スケジューラによる機能スケジューリングを概略的に示す流れ図である。
【発明を実施するための形態】
【００２１】
図１は、システム・バス８を介して接続されたホスト・プロセッサ４及びデータ・エンジン６を含むシステム・オン・チップ集積回路２を概略的に示す。ホスト・プロセッサ４は、プロセッサ・コア１０、ホスト・メモリ１２及びシステム・インターフェース１４を含む。データ・エンジン６は、命令デコーダ１８及び処理回路２０を含んでいる処理コア１６を含む。命令密結合メモリ２２は、処理回路２０を制御する制御信号２４を生成するために命令デコーダ１８によってデコードするためのプログラム命令列を格納する。データ密結合メモリ２６は、命令デコーダ１８によってデコードされるときの命令密結合メモリ２２からのプログラム命令の制御の下で処理回路２０によって取り扱われる、入力及び出力データ値を格納する。システム・インターフェース２８が、データ・エンジン６をシステム・バス８に結合する。直接メモリ・アクセス・ユニット３０は、ホスト・プロセッサ４が、アービタ３２及び３４を介して、命令密結合メモリ２２及びデータ密結合メモリ２６からデータ値を読み出し、かつここにデータ値を書き込むことを可能にする。
【００２２】
動作中に、ホスト・プロセッサ４は、典型的に、ホスト・メモリ１２内に格納されたプログラム命令によって指示されるように、制御及び他のハイレベルな処理機能を実行する。ホスト・メモリ１２内に格納されたプログラム命令は、データ・エンジン６上の処理動作を呼び出すように働くホスト・スケジューリング・プログラムを含むことができる。データ・エンジン６は、典型的に、メディア処理、圧縮、暗号解読等のような、より低いレベルの計算集約型の処理動作を行う。
【００２３】
データ・エンジン６上での実行のために呼び出された機能（現在のプログラム命令列）の通常動作は、この現在のプログラム命令列が、その終わりにプログラム終了（ＥＯＰ）命令（マーカ命令）に直面するまで実行され、データ・エンジン６はそれらの上で次のタスクが呼び出されるのを待つアイドル状態に入ることである。データ・エンジン６は、命令密結合メモリ２２内に格納される対象スケジューリング・プログラムの形態のそれ独自のスケジューリング機構を含むことも可能である。この対象スケジューリング・プログラムは、データ・エンジン６上で実行されるべき機能を呼び出して、データ・エンジンが「自己スケジュール化」することを可能にする。データ・エンジン６自身によって実行される、対象スケジューリング・プログラムによってデータ・エンジン６上で呼び出された機能の実行の終了時に、プログラム・フローは、ホスト・プロセッサ４から呼び出された機能についての場合と同様にデータ・エンジン６がアイドル状態に入るのではなく、対象スケジューリング・プログラム又は少なくとも別のプログラム（例えば結びつけられた機能）に戻ることができる。
【００２４】
呼び出された機能を実行する現在のプログラム命令列は、ホスト・プロセッサ４から呼び出された機能とデータ・エンジン６から呼び出された機能との両方について共有されるライブラリからとられる共通のプログラミング命令列であってもよい。これは、ホスト・プロセッサ４とデータ・エンジン６のどちらがそれらの実行を呼び出しているかに従って、用いられるべき現在のプログラム命令列（ライブラリ機能）の別個の形態を提供する必要性をなくすためである。これは、コーディングの労力とプログラム・ストレージ・リソースを節約する。それにもかかわらず、呼び出された機能の完了時に異なるアクションがトリガされる必要がある。この異なる挙動は、データ・エンジン６内のフロー制御レジスタ３６を用いて制御される。
【００２５】
フロー制御レジスタ３６は、実行されている現在のプログラム命令列内のプログラム終了命令（マーカ命令）に直面するときに、命令デコーダ１８によって読み出されるプログラム可能なフロー制御値を格納する。プログラム可能なフロー制御値は、現在のプログラム命令列が実行を完了するときにどのタイプの挙動がトリガされるべきかを指定する。トリガされる１つのタイプの挙動は、実行が完了するときにデータ・エンジン６をアイドル状態（低電力状態）におくことである。プログラム可能なフロー制御値の異なる値は、現在のプログラム命令列の実行の完了時に、プログラム可能なフロー制御値内の対象アドレスによって指定される対象プログラム命令へのジャンプをトリガするように働く。この対象アドレス及び対象プログラム命令は、データ・エンジン６が「自己スケジューリング」するときに、データ・エンジン６の対象スケジューリング・プログラム内にあってもよい。したがって、現在のプログラム命令列の完了時に、制御は対象スケジューリング・プログラムに戻される。プログラム可能なプログラム制御値は、現在のプログラム命令列と結びつけられた別の機能へのジャンプに対応するアドレスを格納することも可能である。
【００２６】
図２は、データ・エンジン６内のプログラム・フロー制御機構３８を概略的に示す。プログラム・カウンタ・レジスタ４０が、命令密結合メモリ２２内にメモリ・アドレスを格納し、そこから、命令デコーダ１８によってデコードされるべき次の命令がフェッチされる。命令デコーダ１８は、デコードされたプログラム命令からのプログラム・フローを制御するための制御信号（１つ又は複数の制御信号）２４を生成する。並列処理要素（例えば、ＡＬＵ、ＡＧＵ等）におけるデコーダによって生成された他の制御信号は、処理回路２０を制御して、デコードされたプログラム命令に対応するデータ処理動作を実行させるように働く。処理動作は、データ・エンジン６に必須の処理の性質に応じて、ロード、格納、シフト等のような単純なもの、又は、乗算、積和演算、フィルタ演算等のようなより複雑な動作であってもよい。
【００２７】
制御フロー状態マシン４２によって、プログラム・カウンタ・レジスタ４０に、プログラム・カウンタ値がロードされる。制御フロー状態マシン４２は、プログラム・カウンタ・レジスタ４０に、様々な異なるソースからとられたプログラム・カウンタ値をロードすることができる。現在のプログラム命令列が順次に実行されているときに、フィードバック・パス４４及び制御フロー状態マシン４２内の増分回路が、プログラム・カウンタ値を着実に増分し、実行されている現在のプログラム命令列のステップを進めるように働く。現在のプログラム命令列内の制御フロー命令が命令デコーダ１８によってデコードされるときに（例えば分岐命令）、これらの制御フロー命令の対象アドレスが、制御フロー命令パス４６を介して制御フロー状態マシン４２に供給され、プログラム・カウンタ・レジスタ４０にロードされて、実行ポイントにおけるジャンプを実行するようにされる。
【００２８】
フロー制御レジスタ３６はまた、制御フロー状態マシン４２への入力を提供する。フロー制御レジスタ３６は、ジャンプ有効化フラグ４８と次のタスク・アドレス５０とから形成されたプログラム可能なフロー制御値を格納する。これは、現在のプログラム命令列内でプログラム終了（ＥＯＰ）命令に直面するときに、制御フロー命令パス４６上の信号によって制御フロー状態マシン４２に送られてもよい。プログラムの終了命令は、フロー制御レジスタ３６からプログラム可能なフロー制御値を読み出すように制御フロー状態マシン４２を制御する。ジャンプ有効化ビット４８が設定されない場合、制御フロー状態マシン４２は、現在のプログラム命令列（例えば、プログラム終了命令のデコーディング後の所定の一定数の処理サイクル）の完了時に、データ・エンジン６がアイドル状態に入るようにトリガする。この挙動は、ホスト・プロセッサ４が現在のプログラム命令列の実行を呼び出したときの要件に対応する。
【００２９】
ジャンプ有効化フラグ４８が設定される場合、プログラム終了命令に直面すると、制御フロー状態マシン４２は、次のタスク・アドレス５０（命令密結合メモリ２２内の対象プログラム命令のメモリ・アドレス）を読み出し、（パイプラインの深さに匹敵する遅延を伴って）プログラム・カウンタ・レジスタ４０にロードされるべき対象プログラム命令のメモリ・アドレスをトリガし、それにより、現在のプログラム命令列の完了時に、対象プログラム命令がフェッチされ実行される。
【００３０】
この例において、ジャンプ有効化フラグ４８はシングル・ビットである。より一般的には、ジャンプ有効化フラグは、１又は複数のビットを含むことができるジャンプ有効化フィールドであると考えられてもよい。
【００３１】
２つの異なる形態を有することができるロード命令によって、フロー制御レジスタ３６に、プログラム可能なフロー制御値４８、５０がロードされる。第１の形態のｉｎｃｒ＿Ｉｄｓｅｔにおいて、ジャンプ・フラグ４８が強制的に設定値（「１」）にされ、対象プログラム命令のメモリがプログラム可能なフロー制御値３６の次のタスク・アドレス５０部分にロードされる。第２形態のロード命令ｉｎｃｒ＿Ｉｄは、ジャンプ有効化フラグが強制的に設定値にされず、その代わりに設定値又は非設定値のいずれかとして指定されてもよいこと以外は、同様の方法で作用する。ロード命令に応答してフロー制御レジスタ３６にロードされる、これらのプログラム可能なフロー制御値は、マルチプレクサ５２及びロード命令を実行するデータ・エンジン６内からの内部データ・パス５４を介して、フロー制御レジスタ３６に供給される。ホスト・プロセッサ４によって処理が呼び出されるときに、フロー制御レジスタ３６内のプログラム可能なフロー制御値は、マルチプレクサ５２及び、ホスト・プロセッサ４４によって設定されるプログラム可能なフロー制御値がデータ・エンジン６のフロー制御機構３８にロードされる、外部タスク・アドレス・パス５６を介して、ロードされてもよい。
【００３２】
図３は、フロー制御レジスタ３６を概略的に示す。フロー制御レジスタ３６は、次のタスク・アドレス５０とジャンプ有効化フラグ４８を格納する。第１の形態のロード命令ｉｎｃｒ＿Ｉｄｓｅｔは、次のタスク・アドレス・フィールド５０に対象アドレスをロードし、ジャンプ有効化フラグ４８を強制的に値「１」にして、現在のプログラム命令列の完了時にデータ・エンジン６内のプログラム・フローを強制的にジャンプさせる。第２形態のロード命令ｉｎｃｒ＿Ｉｄはまた、対象アドレスを次のタスク・アドレス・フィールド５０にロードするが、この場合、設定値又は非設定値のいずれか一方がジャンプ有効化フラグ４８にロードされることを可能にする。
【００３３】
図４は、ホスト・メモリ１２内に格納されたプログラムと、命令密結合メモリ２２を概略的に示す。ホスト・メモリ１２は、データ・エンジン６上での呼び出し機能のアクションとは関係のないデータ処理動作を実行するためのホスト汎用プログラム５８を格納することができる。ホスト・メモリ１２はまた、データ・エンジン６による実行のための機能をスケジュールするように働くホスト・スケジューリング・プログラム６０を格納する。
【００３４】
データ・エンジン６による実行のためにスケジュール化される機能は、命令密結合メモリ２２内に格納されるプログラム命令列６２、６４に対応する。これらのプログラム命令列６２、６４の各々は、それらが実行されているときに及びそれらの完了の前に、上記に述べたように現在のプログラム命令列に対応する。命令密結合メモリ２２は、典型的に、機能ライブラリの形態の多くのこれらの機能を格納することになり、その各々は、データ・エンジン６が所望の機能に対応する処理動作を実行するのを制御するためのプログラム命令列に対応する。同じく命令密結合メモリ２２内に格納されるのは、データ・エンジン６によって実行されるプログラム命令列がデータ・エンジン６自身によって呼び出されるときに、「自己スケジューリング」のためにデータ・エンジン６によって用いられてもよい対象スケジューリング・プログラム６６である。
【００３５】
図４の左側には、実行を呼び出しているホスト・プロセッサ４によってホスト・スケジューリング・プログラム６０が実行されるときの、それぞれのプログラム命令列６２、６４の呼び出しが示されている。このようにして呼び出されたプログラム命令列が完了するときに、ポイント「ＤＥアイドル」にリンクする線によって図示されるように、データ命令はアイドル状態におかれる。データ・エンジン６によって実行される対象スケジューリング・プログラム６６はまた、それが開始されるときに、ホスト・スケジューリング・プログラム６０から呼び出される。その後、対象スケジューリング・プログラム６６は、対象スケジューリング・プログラム６６自身が完了するまで、「自己スケジューリング」ベースで、データ・エンジン６による実行のためのプログラム命令列６２、６４をスケジュールするように働く。
【００３６】
呼び出されたプログラム命令列６２、６４は、組み込み関数（ｉｎｔｒｉｎｓｉｃ）のライブラリ内に提供された組み込み関数の形態であってもよい。こうした組み込み関数は、典型的に、所望の組み込み関数へのポインタ、例えばｃａｌｌ［ｉｎｔｒｉｎｓｉｃ０＿ｐｏｉｎｔｅｒ］、であるオペランドを有するコール命令を用いて呼び出される。
【００３７】
図示された、命令密結合メモリ２２の右側には、データ・エンジン６上で実行される対象スケジューリング・プログラムによる異なるプログラム命令列６２、６４の呼び出しを示す線が示されている。各々のこれらのプログラム命令列６２、６４が完了するときに、対象スケジューリング・プログラム６６にプログラム実行ポイントの復帰が行われて、そのスケジューリング動作を続けることができるようにされる。
【００３８】
図５は、実行される現在のプログラム命令列６２を概略的に示す。この現在のプログラム命令列は、データ・エンジン６によって順に実行される命令Ｉ０、Ｉ１等を含む。より詳細には、命令デコーダ１８が、これらの命令Ｉ０、Ｉ１等をデコードし、１つ又は複数の対応する制御信号２４を生成し、制御信号２４が、処理回路２０を制御して指定された処理動作を実行する。現在のプログラム命令列６２内の最後の命令からの所定の数の命令には、プログラム終了命令ＥＯＰの形態のマーカ命令が配置されている。このプログラム終了命令は、次の３つのプログラム命令Ｉｎ＋２、Ｉｎ＋３、及びＩｎ＋４が実行された後で、データ・エンジン６が、例えば２つのタイプのさらなるアクションのうちの１つをトリガすることができることを示す。第１のタイプのアクションは、対象スケジューリング・プログラム６６を実行するために、したがってデータ・エンジン６内で続いている実行により分岐することである。フロー制御レジスタ３６から読み出されるプログラム可能なフロー制御値は、対象スケジューリング・プログラム６６内にジャンプするべき対象プログラム命令のアドレスを指定する。トリガすることができる第２の一連のアクションは、データ・エンジンがアイドル状態に入ることである。このアイドル状態に入ることは、プログラム可能なフロー制御値内のジャンプ有効化ビット４８が設定されないときに起こる。
【００３９】
図６は、ホスト・プロセッサ４による、データ・エンジン６上で実行されるべき機能の呼び出しを示す。ホスト・プロセッサ４は、ホスト・スケジューリング・プログラム６０を実行する。このホスト・スケジューリング・プログラム６０は、データ・エンジン機能を呼び出し、データ・エンジン６による処理を開始する。この処理の呼び出しは、マルチプレクサ５２及び図２に示された外部タスク・アドレス・パスを介して次のタスク・アドレス値をフロー制御レジスタ３６にロードすることによって達成することができる。したがって、データ・エンジン６は、呼び出されるべき現在のプログラム命令列の開始アドレスを渡す。要求されるデータ・エンジン６上での処理を呼び出すと、ホスト・プロセッサ４は、さらにホスト処理を続け、呼び出されたデータ・エンジン６によるタスクの完了に応答するような方法で動作するように制御され（又はプログラムされ）てもよいし、されなくてもよい。
【００４０】
図６のデータ・エンジン側では、データ・エンジン６は、ホスト・プロセッサ４によって呼び出された機能が開始されるまではアイドルである。データ・エンジン６は、次いで、呼び出された機能を実行する。呼び出された機能に対応する現在のプログラム命令列の終わりに向けて、プログラム終了命令に直面し、プログラム終了命令が実行される。プログラム終了命令の実行の結果として、フロー制御レジスタ３６内に格納されたプログラム可能なフロー制御値内にジャンプ有効化ビット４８が設定されるかどうかの検出がなされる。データ・エンジン６によって実行されている機能はホスト・プロセッサ４によって呼び出されたので、データ・エンジン６は機能の実行の完了後にそのアイドル状態に入り、ジャンプ有効化ビット４８は設定されないと予想される。したがって、ジャンプ有効化ビットが試みられ検出された後で、これは設定されないと判定され、データ・エンジン６はアイドル状態に入る。
【００４１】
図７は、データ・エンジン６自身によって実行される対象スケジューリング・プログラム６６による、プログラム命令列６２、６４の実行のスケジューリングを概略的に示す流れ図である。ステップ６８において、対象スケジューリング・プログラム６６の実行が開始される。対象スケジューリング・プログラム６６の実行は、それ自体が、図４に示されたようにホスト・スケジューリング・プログラム６０によって呼び出されてもよい。
【００４２】
ステップ７０において、対象スケジューリング・プログラム６６は、呼び出されるデータ・エンジン機能が存在するまで待つ。データ・エンジン機能が呼び出される準備ができたときに、ステップ７２は、該当するデータ・エンジン機能（現在のプログラム命令列）の実行を開始する。このデータ・エンジン機能の終わりに向けて、ステップ７４でプログラム終了命令が実行される。ステップ７６において、プログラム終了命令の実行が、フロー制御レジスタ３６からのプログラム可能なフロー制御値の読み出しをトリガする。ステップ７８は、ジャンプ有効化ビット４８が設定されているかどうかを判定する。ジャンプ有効化ビットが設定されていない場合、ステップ８０は、データ・エンジンをアイドル状態に切り換える。対象スケジューラ６８は、「０」に設定されるジャンプ有効化ビット４８の値を有するフロー制御値３６へのロードを実行して、次のプログラム命令列６２、６４の完了時にデータ・エンジン６がアイドル状態に入るようにすることができる。しかしながら、対象スケジューリング・プログラム６６が現在のプログラム命令列６６、６４の完了後にアクティブであり続けて、制御を復帰する場合、ジャンプ有効化ビットが設定され、ステップ７８における判定の後で処理がステップ８２に進み、そこで、次のタスク・アドレス・フィールド５８内の指定された対象アドレスへのジャンプが実行される。図示された例において、このジャンプは、対象スケジューリング・プログラム６６及びステップ７０に戻り、そこで、対象スケジューリング・プログラム６６は次にデータ・エンジン機能が呼び出されるのを待つ。機能を互いに結びつけ、ステップ８２において実行されるジャンプを別の機能の開始にジャンプさせることも可能である。
【００４３】
本発明の例示的な実施形態が、添付の図面を参照しながら本明細書において詳細に説明されたが、本発明はこれらの厳密な実施形態に限定されず、当業者であれば、付属の請求項によって定められる本発明の範囲及び思想から逸脱することなく、そこに種々の変更及び修正を加えることができることを理解されたい。
【符号の説明】
【００４４】
２  システム・オン・チップ集積回路
４  ホスト・プロセッサ
６  データ・エンジン
８  システム・バス
１０  プロセッサ・コア
１２  ホスト・メモリ
１４  システム・インターフェース
１６  処理コア
１８  命令デコーダ
２０  処理回路
２２  命令密結合メモリ
２４  制御信号
２６  データ密結合メモリ
２８  システム・インターフェース
３０  直接メモリ・アクセス・ユニット
３２、３４  アービタ
３６  フロー制御レジスタ
３８  プログラム・フロー制御機構
４０  プログラム・カウンタ・レジスタ
４２  制御フロー状態マシン
４４  フィードバック・パス
４６  制御フロー命令パス
４８  ジャンプ有効化フラグ
５０  次のタスク・アドレス
５２  マルチプレクサ
５４  内部データ・パス
５６  外部タスク・アドレス・パス
５８  ホスト汎用プログラム
６０  ホスト・スケジューリング・プログラム
６２、６４  プログラム命令列
６６  対象スケジューリング・プログラム
【図１】
0005611756.tif 000002
【図２】
0005611756.tif 000003
【図３】
0005611756.tif 000004
【図４】
0005611756.tif 000005
【図５】
0005611756.tif 000006
【図６】
0005611756.tif 000007
【図７】
0005611756.tif 000008