(57)【要約】本発明は、演算ユニット（１０）を駆動する方法であって、演算ユニット（１０）は、少なくとも１つの演算コア（１２）と、演算ユニット（１０）に関して局所的なメモリ（１４）と、を有し、少なくとも１つの演算コア（１２）によって、演算ユニット（１０）のためのコンピュータプログラム（２４）の複数のプログラム関数（２２）が実行される、上記方法に関する。本方法は、以下の工程、即ち、将来の実行時点（ｔ１”、ｔ２”、ｔ３”）に実行されるプログラム関数（２２）に属する全てのプログラム命令を定める工程（１０２）と、実行時点（ｔ１”、ｔ２”、ｔ３”）の前に、局所的なメモリ（１４）で、定められたプログラム命令（２６）を提供する工程（１０４）と、を含むことを特徴とする。【選択図】図２
2019520651.tif 000002
【特許請求の範囲】
【請求項１】
演算ユニット（１０）を駆動する方法であって、前記演算ユニット（１０）は、少なくとも１つの演算コア（１２）と、前記演算ユニット（１０）に関して局所的なメモリ（１４）と、を有し、前記少なくとも１つの演算コア（１２）によって、前記演算ユニット（１０）のためのコンピュータプログラム（２４）の複数のプログラム関数（２２）が実行される、前記方法において、以下の工程、即ち、
‐プログラム命令（２６）、特に、将来の実行時点（ｔ１”、ｔ２”、ｔ３”）に実行されるプログラム関数（２２）に属する全てのプログラム命令（２６）を定める工程（１０２）と、
‐前記実行時点（ｔ１”、ｔ２”、ｔ３”）の前に、前記局所的なメモリ（１４）で、定められた前記プログラム命令（２６）を提供する工程（１０４）と、
を含むことを特徴とする、方法。
【請求項２】
前記定められたプログラム命令（２６）は、実行される前記プログラム関数（２２）に依存した順序で、前記演算ユニット（１０）の前記局所的なメモリ（１４）で提供される、請求項１に記載の方法。
【請求項３】
複数の様々なプログラム関数（２２）それぞれについて、該当する前記プログラム関数（２２）に属する全てのプログラム命令（２６）が、各前記実行時点（ｔ１”、ｔ２”、ｔ３”）の前に前記局所的なメモリ（１４）で提供される、請求項１又は２に記載の方法。
【請求項４】
前記局所的なメモリ（１４）は、前記演算ユニット（１０）の大域的な作業メモリ、及び／又は、前記少なくとも１つの演算コア（１２）の局所的な作業メモリである、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
少なくとも１つのリングバッファ（１４’）が、前記局所的なメモリ（１４）に、前記定められたプログラム命令（２６）の前記提供（１０４）のために設けられ、前記リングバッファ（１４’）は、プログラム実行のために、周期的に前記演算ユニット（１０）によって読み出され、前記リングバッファ（１４’）には周期的に、時間的に後続の更なる別の定められたプログラム命令（２６）が、当該リングバッファ（１４’）の、周期において既に前記演算ユニット（１０）によって読み出されているアドレスに書き込まれる、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記定められたプログラム命令（２６）の前記提供（１０４）は、
好適に前記演算ユニット（１０）には依存しない、転送ユニット（２０）が、前記定められたプログラム命令（２６）をソースメモリ（１８）から前記局所的なメモリ（１４）へと複写することによって、行われる、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記転送ユニット（２０）は、更なる別の演算ユニット（１０）、及び／又は、前記演算ユニット（１０）の更なる別の演算コア（１２）、及び／又は、メモリ直接アクセス制御装置を含む、請求項６に記載の方法。
【請求項８】
前記定める工程（１０２）は、前記プログラム関数（２２）の周期的な実行の、好適に静的な計画の評価（１０３）、及び／又は、前記コンピュータプログラム（２４）の少なくとも一部のソフトウェア解析を含む、請求項１〜７の少なくとも１項に記載の方法。
【請求項９】
プログラム命令（２６）を定める前記工程（１０２）は、前記コンピュータプログラム（２４）の実行時間より時間的に前に行われ、特に、前記コンピュータプログラム（２４）及び／又は前記コンピュータプログラム（２４）を含むプログラムシステムの開発時点に行われ、前記コンピュータプログラム（２４）の前記実行時間の間に、前記定められたプログラム命令（２６）の前記提供（１０４）が行われる、請求項１〜８のいずれか１項に記載の方法。
【請求項１０】
少なくとも１つの演算コア（１２）と、前記演算ユニット（１０）に関して局所的なメモリ（１４）と、を有する演算ユニット（１０）であって、前記演算ユニット（１０）は、前記少なくとも１つの演算コア（１２）によって、前記演算ユニット（１０）のためのコンピュータプログラム（２４）の複数のプログラム関数（２２）を実行するよう構成され、前記演算ユニット（１０）は、以下の工程、即ち、
‐プログラム命令（２６）、特に、将来の実行時点（ｔ１”、ｔ２”、ｔ３”）に実行されるプログラム関数（２２）に属する全てのプログラム命令（２６）を定める工程（１０２）と、
‐前記実行時点（ｔ１”、ｔ２”、ｔ３”）の前に、前記局所的なメモリ（１４）で、定められた前記プログラム命令（２６）を提供する工程（１０４）と、
を実行するよう更に構成される、演算ユニット（１０）。
【請求項１１】
前記局所的なメモリ（１４）は、前記演算ユニット（１０）の大域的な作業メモリ、及び／又は、前記少なくとも１つの演算コア（１２）の局所的な作業メモリである、請求項１０に記載の演算ユニット（１０）。
【請求項１２】
前記演算ユニット（１０）は、転送ユニット（２０）を含み、前記転送ユニット（２０）は、当該転送ユニット（２０）が前記定められたプログラム命令（２６）をソースメモリ（１８）から前記局所的なメモリ（１４）へと複写することにより、前記定められたプログラム命令（２６）の前記提供（１０４）を実行するよう構成される、請求項１０又は１１に記載の演算ユニット（１０）。
【請求項１３】
前記転送ユニット（２０）は、前記演算ユニット（１０）及び／又は前記演算コア（１２）に対して、前記局所的なメモリ（１４）での前記定められたプログラム命令（２６）の前記提供（１０４）をシグナリングするよう構成される、請求項１２に記載の演算ユニット（１０）。
【請求項１４】
特に自動車のための、開ループ制御及び／又は閉ループ制御装置であって、
前記開ループ制御及び／又は閉ループ制御装置は、請求項１０〜１３のいずれか１項に記載の演算ユニット（１０）を備えることを特徴とする、開ループ制御及び／又は閉ループ制御装置。
【請求項１５】
プログラム命令（２６）、特に、コンピュータプログラム（２４）のプログラム関数（２２）に属する全てのプログラム命令（２６）を定める（１０２）ためのシステム（２００）であって、前記プログラム関数（２２）は将来の実行時点（ｔ１”、ｔ２”、ｔ３”）に実行され、前記システム（２００）は、プログラム命令（２６）を定めること（１０２）を、前記コンピュータプログラム（２４）の実行時間より時間的に前に、特に、前記コンピュータプログラム（２４）及び／又は前記コンピュータプログラム（２４）を含むプログラムシステムの開発時点に実行するよう構成される、システム（２００）。
【請求項１６】
演算ユニット（１０）のための転送ユニット（２０）であって、前記演算ユニット（１０）は、少なくとも１つの演算コア（１２）と、前記演算ユニット（１０）に関して局所的なメモリ（１４）と、を有し、前記演算ユニット（１０）は、前記少なくとも１つの演算コア（１２）によって、前記演算ユニット（１０）のためのコンピュータプログラム（２４）の複数のプログラム関数（２２）を実行するよう構成される、前記転送ユニット（２０）において、
前記転送ユニット（２０）は、好適に当該転送ユニット（２０）には依存しないユニットによって定められた（１０２）プログラム命令（２６）、特に、将来の実行時点（ｔ１”、ｔ２”、ｔ３”）に前記演算ユニットにより実行されるプログラム関数（２２）に属する全てのプログラム命令（２６）を、ソースメモリ（１８）から前記局所的なメモリ（１４；１４’）へと複写するよう構成されることを特徴とする、転送ユニット（２０）。
【請求項１７】
前記プログラム命令（２６）は、前記プログラム関数（２２）の周期的な実行の、好適に静的な計画の評価（１０３）、及び／又は、前記コンピュータプログラム（２４）の少なくとも一部のソフトウェア解析によって定められたものである、請求項１６に記載の転送ユニット（２０）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、請求項１の導入部に記載の方法、並びに、独立請求項に記載の演算ユニット、転送ユニット、及び、開ループ制御及び／又は閉ループ制御装置に関する。
【背景技術】
【０００２】
市場では、データメモリからデータ及び／又はプログラム命令を読み出すことが可能であり、これにより各コンピュータプログラムを実行することが可能な１つ以上のプロセッサ又はプロセッサコアを有する演算ユニットが公知である。
【発明の概要】
【課題を解決するための手段】
【０００３】
本発明の根底にある問題は、請求項１に係る方法、並びに、独立請求項に記載の演算ユニット、転送ユニット、及び、開ループ制御及び／又は閉ループ制御装置によって解決される。有利な発展形態が従属請求項において示される。本発明にとって重要な特徴が、以下の明細書の記載及び図面にさらに存在し、上記特徴は、単独でも、様々な組み合わせにおいても本発明にとって重要となりうるが、これについて再度明示的には言及されない。
【０００４】
本発明は、演算ユニットを駆動する方法であって、演算ユニットは、少なくとも１つの演算コアと、演算ユニットに関して局所的なメモリと、を有し、少なくとも１つの演算コアによって、演算ユニットのためのコンピュータプログラムの複数のプログラム関数が実行される、上記方法に関する。本方法は、以下の工程、即ち、
‐プログラム命令、特に、将来の実行時点に実行されるプログラム関数に属する全てのプログラム命令を定める工程と、
‐実行時点の前に、局所的なメモリで、定められた上記プログラム命令を提供する工程と、を含む。
【０００５】
好適に（しかし、必須ではなく）、上記プログラム命令を定める工程は、以下でさらに詳細に解説するように、コンピュータプログラムの実行時間より時間的に前に行われる。
【０００６】
例えば、局所的なメモリは、演算ユニットの、内部の大域的なメモリ、及び／又は、演算ユニットの外部メモリ、及び／又は、演算コアの局所的なメモリである。上記メモリは、例えば、ＲＡＭメモリ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【０００７】
演算ユニットは、コンピュータプログラムを実行するための、それ自体が任意の装置であってもよく、例えば、自身の周辺の構成要素を含むプロセッサ、又は、マイクロコントローラ等であってもよい。演算ユニットは、単体の半導体集積回路によって、又は、複数の半導体集積回路によって実現されてもよい。演算コアは、好適にプロセッサコアである。
【０００８】
上記のコンピュータプログラムは、１つ以上のプログラム関数を含んでいてもよく、各プログラム関数は、１つ以上のプログラム命令（Ｉｎｓｔｒｕｋｔｉｏｎｅｎ、命令）を含んでいてもよい。英語の言語使用において、「プログラム関数」（Ｐｒｏｇｒａｍｍｆｕｎｋｔｉｏｎ）は、場合によっては、「Ｒｕｎｎａｂｌｅ」という用語により特徴付けられうる。プログラム関数は、計画可能なプログラム関数、及び／又は、計画不可能なプログラム関数を含み得る。
【０００９】
提案される方法は、特に計画可能なプログラム関数の場合に、プログラム関数又はプログラム命令の実行時に実行のために必要なプログラム命令が当該実行の前に演算コアの局所メモリで提供されることで、待ち時間を防ぐことが可能である。
【００１０】
簡単に表現すると、各必要なプログラム命令を（最適に）局所的なメモリで提供するために、実行のために行列に入っている各次のプログラム関数についての知識が定められ、利用される。この知識は、例えば、プログラム関数の周期的な実行に関する静的な計画を介して、及び／又は、プログラム解析（ソフトウェア解析）によって定められうる。即ち、上記実行の前に既に各プログラム関数の順序が分かっている場合に、当該各プログラム関数の順序が、局所的なメモリで準備して（最適に）配置されうる。これにより、各演算コアが、システムメモリから（例えば、所謂「フラッシュ（Ｆｌａｓｈ）メモリ」から、又は、局所的なメモリよりも待ち時間が長い他のメモリから）、プログラム命令ごとにロードする必要がない。これによって、特に、以下のような確率が低減され、即ち、演算コアが、或るプログラム関数又はプログラム命令であって、未だロードされておらず従って演算コアが待機しなければならない上記プログラム関数又はプログラム命令を場合によっては実行するかもしれないという確率が有利に低減されうる。このようなシナリオは、英語の概念「ｉｎｓｔｒｕｃｔｉｏｎ  ｓｔａｌｌ」によっても特徴付けられる。
【００１１】
さらに、本発明に基づいて、関数レベルでの各将来の実行についてのシステム知が利用可能であり、対応して、或るプログラム関数に属する好適に全てのプログラム命令を予め提供可能であると簡略に述べられる。例えば、上記の「システム知」は、例えばエンジン制御等で適用可能な、例えば所謂埋め込みシステム（ｅｍｂｅｄｄｅｄ  ｓｙｓｔｅｍ）に関する、「ドメイン固有の知識」に相当する。
【００１２】
さらに、予測可能な（特に計画可能な）プログラム関数のためのプログラム命令の提供を様々な形態で行えると簡略に述べられる。このことについては、以下でさらに詳細に記載する。
【００１３】
さらに、プログラム関数の実行についての予測は、埋め込みシステムで実行される全プログラム関数のためには可能ではないことが多いと簡略して述べられる。このことは、例えば、所謂「割り込みハンドラ」（Ｉｎｔｅｒｒｕｐｔ‐Ｈａｎｄｌｅｒ）、及び／又は、ライブラリ関数、及び／又は、上記のやり方で予め予測し計画することが場合により困難な、駆動システムの関数に該当しうる。
【００１４】
一構成において、このために混合型の駆動が設けられ、即ち、計画可能なプログラム関数が局所的なメモリから実行され、計画不可能なプログラム関数は、従来のやり方で実行され、場合によってはコードメモリによって、比較可能な長い待ち時間を掛けて読み出される。
【００１５】
本発明には、演算ユニット又は演算コアの利用率であって、コンピュータプログラムの処理を特徴付ける上記利用率が上げられるという利点がある。例えば、マイクロコントローラの利用率が上げられうる。特に、より多くのＩＰＣ（英語では「ｉｎｓｔｒｕｃｔｉｏｎｓ  ｐｅｒ  ｃｙｃｌｅ（サイクルあたりの処理命令数）」、ドイツ語では「クロック周期ごとに実行可能な命令（プログラム命令）の数」）が、プログラム関数の実行中に可能とされうる。
【００１６】
本発明の更なる利点は、特に計画可能なプログラム関数の実行時に、キャッシュ（Ｃａｃｈｅ）メモリが少なくとも部分的に又は一時的に不要となりうることである。これにより、キャッシュメモリの効率が高められ、例えば、キャッシュメモリに存在する情報は、比較的まれにしか上書きしなくてもよい（より少ない「置換」）。同様に、キャッシュメモリの大きさをより小さく定めることも同様に可能であり、これにより、コストが削減されうる。キャッシュメモリは、比較的遅いシステムメモリへの反復アクセス又は場合によっては必要となる再計算を回避しうる比較的速いバッファメモリに相当する。キャッシュメモリは通常では、大域的なメモリよりも待ち時間が短いため、通常では、例えば局所的な作業メモリのような（従来の）局所的なメモリよりも高価である。全体として、本発明に係る原則の適用によって、比較的ゆっくりとした従って安価なコードメモリ（例えばフラッシュ（Ｆｌａｓｈ）メモリ等）の利用も可能となり、その際に、これに関して公知の欠点（例えば、ｉｎｓｔｒｕｃｔｉｏｎ  ｓｔａｌｌ）が発生することがない。
【００１７】
本発明の一構成において、定められたプログラム命令が、実行されるプログラム関数に依存した順序で、演算ユニットの局所的なメモリで提供されることが構想される。これにより、プログラム実行時の全体的に高い効率が有利に可能とされうる。
【００１８】
更なる別の構成において、複数の様々なプログラム関数それぞれについて、該当するプログラム関数に属する全てのプログラム命令が、各実行時点の前に局所的なメモリで提供されることが構想される。これにより、プログラム関数の処理の際に場合により発生する遅延が、有利に回避されうる。
【００１９】
更なる別の構成において、局所的なメモリは、演算ユニットの大域的な作業メモリ、及び／又は、少なくとも１つの演算コアの局所的な作業メモリであることが構想される。これにより有利に、各待ち時間が比較的短く保たれうる。例えば、大域的な作業メモリは、演算ユニットの複数の演算コア、即ち少なくとも２つの演算コアが自身にアクセスしうるように構成される。一構成において、大域的なメモリは、演算ユニットの外部又は内部ＲＡＭメモリである。
【００２０】
更なる別の構成において、少なくとも１つのリングバッファ（「Ｒｉｎｇｐｕｆｆｅｒ」）が、定められたプログラム命令の提供のために局所的なメモリに設けられ、特に、リングバッファは、プログラム実行のために周期的に演算ユニットによって読み出され、リングバッファには周期的に、時間的に後続の更なる別の定められたプログラム命令が、当該リングバッファの、周期において既に演算ユニットによって読み出されているアドレスに書き込まれる。例えば、リングバッファは、局所的なメモリのアドレス領域に配置されており、本発明に基づきリングバッファにアクセスするために、少なくとも１つの周期的に変更可能なアドレスポインタがそれぞれ設けられる。これにより、定められたプログラムの提供及び／又は実行が、特に効率良く行われうる。
【００２１】
例えば、演算コアは、実行すべきプログラム関数を連続的にリングバッファから実行し、その一方で、他のユニットが、リングバッファを適切なやり方で充填する。これについては、以下で詳細に記載する転送ユニットを参照されたい。リングバッファとして局所的なメモリの少なくとも一部を実現又は構成することは、本方法にとって特に有利でありうるが、局所的なメモリのための他の実施形態又は構成形態も、本発明に基づいて利用されうる。
【００２２】
更なる別の構成において、演算ユニットでは周期的に複数のプログラムブロック（英語「ｔａｓｋ（タスク）」）が実行され、特に、様々なプログラムブロックにはそれぞれ、様々な周期時間が対応付けられており、各プログラムブロックは、コンピュータプログラムの複数のプログラム関数であって、予め設定可能な順序で実行される上記複数のプログラム関数を有し、様々なプログラムブロックの定められたプログラム命令を提供するために、別体のリングバッファが１つずつ設けられる。例えば、自動車のエンジン制御のための開ループ制御及び／又は閉ループ制御装置では、プログラムブロックは、１ｍｓ（ミリ秒）、２ｍｓ、５ｍｓ、１０ｍｓ等の周期時間を有する。対応して、現在の周期時間ごとに固有のリングバッファを利用することが有利となりうる。これにより、演算ユニットの駆動時の効率が改善されうる。
【００２３】
更なる別の構成において、定められたプログラム命令の提供は、好適に演算ユニットには依存しない、転送ユニットが、定められたプログラム命令をソースメモリから局所的なメモリと複写することによって、行われることが構想される。例えば、ソースメモリは、演算ユニットに関して外部のフラッシュメモリである。転送ユニットの利用によって、本発明を有利に加速させ、各演算コアへの負荷を軽減することが可能である。
【００２４】
さらに、転送ユニットは、更なる別の演算ユニット、及び／又は、演算ユニットの更なる別の演算コア、及び／又は、メモリ直接アクセス制御装置を含むことが構想されうる。これにより、転送ユニットは、有利に簡単かつ効率良く実現されうる。特に好適な構成において、メモリ直接アクセス制御装置は、純粋なハードウェア回路として実現される。メモリ直接アクセス制御装置は、英語では「ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）‐Ｃｏｎｔｒｏｌｌｅｒ（ＤＭＡコントローラ）」とも称される。代替的に、メモリ直接アクセス制御装置は、ソフトウェアによって、又は、ハードウェアとソフトウェアとの混合によって実現されうる。更なる別の構成において、転送ユニットは、特別な（ユーザ固有の）ハードウェア回路として実現される。これにより、コード変換、及び／又は、アドレス位置に依存しないプログラムコード（英語：ｐｏｓｉｔｉｏｎ  ｉｎｄｅｐｅｎｄｅｎｔ  ｃｏｄｅ、位置独立コード）を利用することが特に簡単でありうる。
【００２５】
更なる別の構成において、プログラム関数に属する全てのプログラム命令を定める工程は、プログラム関数の周期的な実行の、好適に静的な計画の評価、及び／又は、コンピュータプログラムの少なくとも一部のソフトウェア解析を含む。これにより、次の期間中に実行される複数のプログラム関数から、それぞれ定期的に実行されるプログラム関数が、静的な計画を用いて、プログラム関数の線形リストを利用して有利に定められ、及び／又は、残りの実行すべきプログラム関数が、解析、特にソフトウェア解析を用いて有利に定められうる。このことによって、前述のシステム知又はドメイン固有の知識も特徴付けられうる。
【００２６】
更なる別の構成において、プログラム関数の複数の線形リストが定められ、コンピュータプログラム又はプログラムブロックの実行時間中に、当該実行時間中に定められた条件によって、処理するためのプログラム関数の各リストが複数の中から選択される。このような「ほぼ静的な計画」を任意に利用することによって、本方法が追加的に改良されうる。
【００２７】
一構成において、コンピュータプログラムの実行時間に、実行するために設けられたプログラム関数の少なくとも１つの連なりが定められる。この場合、上記の連なりは、上記線形リストと比較可能な方法で、本方法のために利用されうる。
【００２８】
他の構成において、プログラム関数は、その実行が将来の実行時点ごとに計画可能な第一群と、その実行が将来の実行時点ごとに計画不可能な第二群と、を含み、第一群のプログラム関数は、少なくとも部分的に例えばリングバッファとして構成された作業メモリを用いて実行され、第二群のプログラム関数は、従来のキャッシュメモリ又は従来のコードメモリを用いて実行される。これにより、本方法は有利に、演算ユニット及び／又はコンピュータプログラムの駆動の各条件に対して調整されうる。
【００２９】
更なる別の構成において、転送ユニットは、演算ユニットの起動時に及び／又は演算ユニットの実行時間中にプログラミングされ、特に、転送ユニットが実行時点の前に局所的なメモリでの定められたプログラム命令の提供を各必要な順序で実行しうるように、プログラミングされる。
【００３０】
さらに、転送ユニットのプログラミングはその都度、該当するプログラム関数の、少なくとも１つのソースアドレスと、少なくとも１つの宛先アドレスと、局所的なメモリで提供される付属するデータブロックの大きさと、を含む。これにより、転送ユニットの駆動が好適に最適化されうる。データブロックは、少なくとも１つのプログラム関数の各複数の定められたプログラム命令を含む。これに対する第１の変形例において、転送ユニットは、演算ユニット又は演算コア又は埋め込みシステムの起動時に一度プログラミングされ及び／又は設定される。これに対する第２の変形例において、このことは起動後に、即ち実行時間中に少なくとも一度行われる。
【００３１】
さらに、転送ユニットは、各プログラム命令を定めるため及び／又は定められたプログラム命令を局所的なメモリで提供するために、タイマ（「ｔｉｍｅｒ」）によって時間制御されることが構想されうる。これにより本方法のタイムスケジュールが改善されうる。
【００３２】
さらに、各プログラム命令を定めるため及び／又は定められたプログラム命令を局所的なメモリで提供するために、転送ユニットが、プログラムブロックを実行する演算ユニット（又は演算コア）によって、及び／又は、これとは異なる演算ユニット（又は演算コア）によって駆動制御されることが構想されうる。これにより、転送ユニットへの有利な制御が可能となる。一構成において、上記の駆動制御は割り込みを用いて行われる。
【００３３】
さらに、転送ユニットへの駆動制御は、局所的なメモリ又はリングバッファの充填状態、及び／又は、演算ユニット又は演算コアのシステム状態、及び／又は、演算ユニット又は演算コアの周辺ユニットのシステム状態に依存して行われる。これにより、局所的なメモリが、好都合にかつ効果的に利用されうる。
【００３４】
さらに、リングバッファでの定められたプログラム命令の提供が、厳密に１つのプログラム関数をそれぞれが含むデータブロックを利用して行われることが構想されうる。これにより、本方法が更に改良される。先に既に解説したように、各プログラム関数は、１つ以上のプログラム命令（Ｉｎｓｔｒｕｋｔｉｏｎｅｎ、命令）を含みうる。
【００３５】
さらに、リングバッファでの定められたプログラム命令の提供が、各プログラム関数に依存せずに一定の大きさを有するデータブロックを利用して行われることが構想されうる。これにより、本方法が有利に簡素化されうる。場合によっては、このようなデータブロックは、１つより多いプログラム関数を含み、又は、データブロック全体が、プログラム命令を含んでいるわけではない。場合によっては、プログラム関数が典型的に異なるデータ長であったとしても、プログラム関数ごとの転送が有意義でありうる。各最も適した変形例の選択は、例えば、ハードウェア構造、及び／又は、バスシステムの帯域幅、及び／又は、局所的なメモリの大きさに依存して行われうる。
【００３６】
さらに、局所的なメモリ又はリングバッファで提供されるプログラム命令のアドレス指定又はアドレスは、コンパイラ（Ｃｏｍｐｉｌｅｒ）及び／又はリンカ（Ｌｉｎｋｅｒ）を用いて、付属するプログラム関数の特性に依存して調整される。これにより、本方法が、プログラムコードの特性にほぼ依存せずに実行されうる。
【００３７】
これにより有利に、局所メモリでの定められたプログラム命令の提供が、一般的な場合に各プログラム関数にとって適切なアドレス領域では必ずしも行われないという状況が考慮されうる。従って好適に、転送ユニットは、（各固有の）プログラム関数に属するプログラム命令を、実行する演算コアの局所的なメモリ内の、同様に固有の（同一の）アドレスに転送することが可能である。この場合、上述のように、プログラム命令のアドレス指定又はアドレスは、コンパイラ／リンカを用いて、計画されたバッファリングに対応して調整されうる。
【００３８】
コンパイラ／リンカを用いたプログラム命令（「二値プログラムコード」）の静的な調整の代わりに又は上記調整に加えて、メモリ管理部（ＭＭＵ：Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）の利用が構想されうる。他の変形例において、プログラム関数又はプログラム命令は、アドレスに依存しないコード（英語：ｐｏｓｉｔｉｏｎ  ｉｎｄｅｐｅｎｄｅｎｔ  ｃｏｄｅ）を用いて実行される。
【００３９】
さらに、転送ユニットを用いて、局所的なメモリで提供されるプログラム関数及び／又はプログラム命令へのコード変換又はアドレス変換が行われることが構想されうる。これにより、上記手続きが有利に転送ユニットによっても行われ、その際に、費用及びコストが削減されうる。
【００４０】
更なる別の構成において、プログラム命令を定める工程は、コンピュータプログラムの実行時間より時間的に前に行われ、特に、コンピュータプログラム及び／又は当該コンピュータプログラムを含むプログラムシステムの開発時点（設計時点）に行われ、定められたプログラム命令の提供は、コンピュータプログラムの、場合によっては基本的により遅い時点にようやく発生する実行時間の間に行われる。好適に（しかし、必須ではなく）、プログラム命令を定める工程は、演算ユニットと異なるユニット又は演算ユニットと異なるシステムによって行われる。これにより、プログラム命令を定める工程が、有利にプログラム命令を提供する工程と分けられうる。特にこれにより、プログラム命令の定める工程を一度だけ実行することが可能となり、これにより、装置の費用及び／又は計算コストが、場合によっては低減されうる。
【００４１】
さらに、本発明は、少なくとも１つの演算コアと、演算ユニットに関して局所的なメモリと、を有する演算ユニットであって、演算ユニットは、少なくとも１つの演算コアによって、演算ユニットのためのコンピュータプログラムの複数のプログラム関数を実行するよう構成され、演算ユニットは、以下の工程、即ち、
‐プログラム命令、特に、将来の実行時点に実行されるプログラム関数に属する全てのプログラム命令を定める工程と、
‐実行時点の前に、局所的なメモリで、定められたプログラム命令を提供する工程と、
を実行するよう更に構成される、上記演算ユニットに関する。
【００４２】
これについての一構成において、局所的なメモリは、演算ユニットの大域的な作業メモリ、及び／又は、少なくとも１つの演算コアの局所的な作業メモリである。
【００４３】
これについての一構成において、演算ユニットは転送ユニットを含み、転送ユニットは、当該転送ユニットが定められたプログラム命令をソースメモリから局所的なメモリへと複写することにより、定められたプログラム命令の提供を実行するよう構成される。
【００４４】
別の構成において、転送ユニットは、演算ユニット及び／又は演算コアに対して、局所的なメモリでの定められたプログラム命令の提供をシグナリングするよう構成される。これにより同時に、可能な処理工程が記載される。補完的に、転送ユニットが、局所的なメモリ内の定められたプログラム命令及び／又はプログラム関数の各メモリアドレスも、演算ユニット及び／又は演算コアに伝達することが構想されうる。これにより、演算ユニットの駆動が改善されて、より確実なものとされうる。
【００４５】
本発明に係る演算ユニット、及び、当該演算ユニットに関して提案される構成について、本発明に係る方法のために先に既に記載したような比較可能な利点が明らかとなる。
【００４６】
さらに、本発明は、特に自動車のための、開ループ制御及び／又は閉ループ制御装置であって、開ループ制御及び／又は閉ループ制御装置は、上記の構成の少なくとも１つに記載の演算ユニットを備える、上記開ループ制御及び／又は閉ループ制御装置に関する。これにより、自動車の開ループ制御及び／又は閉ループ制御が有利に改善されうる。
【００４７】
さらに、本発明は、プログラム命令、特に、コンピュータプログラムのプログラム関数に属する全てのプログラム命令を定めるためのシステムであって、上記プログラム関数は将来の実行時点に実行され、上記システムは、プログラム命令を定めることを、コンピュータプログラムの実行時間より時間的に前に、特に、コンピュータプログラム及び／又は当該コンピュータプログラムを含むプログラムシステムの開発時点に実行するよう構成される、上記システムに関する。本発明に係るシステムによって、プログラム命令を定める工程が、有利に、プログラム命令を提供する工程と分けられうる。特にこれにより、プログラム命令を定める工程を一度だけ実行することが可能となり、これにより、装置の費用及び／又は計算コストが場合によっては低減されうる。
【００４８】
さらに、本発明は、演算ユニットのための転送ユニットであって、演算ユニットは、少なくとも１つの演算コアと、演算ユニットに関して局所的なメモリと、を有し、演算ユニットは、少なくとも１つの演算コアによって、演算ユニットのためのコンピュータプログラムの複数のプログラム関数を実行するよう構成される、上記転送ユニットに関する。転送ユニットは、好適に転送ユニットには依存しないユニットによって定められたプログラム命令、特に、将来の実行時点に演算ユニットにより実行されるプログラム関数に属する全てのプログラム命令を、ソースメモリから局所的なメモリへと複写するよう構成される。例えば、ソースメモリは、演算ユニットに関して外部のフラッシュメモリである。転送ユニットによって、コンピュータプログラムが特に有利に処理され、演算ユニット又は各演算コアへの負荷が有利に軽減されうる。
【００４９】
これについての一構成において、プログラム命令は、プログラム関数の周期的な実行の、好適に静的な計画の評価、及び／又は、コンピュータプログラムの少なくとも一部のソフトウェア解析によって定められたものである。対応するデータが、転送ユニットに対して、演算ユニットでのコンピュータプログラムの実行の前に提供され、又は動的に、即ち演算ユニットでのコンピュータプログラムの実行中にも提供されうる。例えば、このようなデータは、コンピュータプログラムへの追加として提供される。
【００５０】
更なる別の構成において、転送ユニットは、メモリ直接アクセス制御装置（英語：ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラ（ＤＭＡ‐Ｃｏｎｔｒｏｌｌｅｒ））、及び／又は、演算コア、即ち例えば、上記演算ユニットの更なる別の演算コア、及び／又は、演算コア及びメモリ直接アクセス制御装置に依存しないハードウェアユニット、即ち例えば、ＡＳＩＣ（英語：Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ、特定用途向け集積回路）、若しくはその一部、又は、ＥＰＧＡ（英語：Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、若しくはその一部を含む。転送ユニットの構成については、演算ユニットを駆動する方法のところで既に詳細に記載している。比較可能な利点が得られる。
【図面の簡単な説明】
【００５１】
以下では、本発明の例示的な実施形態が、図面を参照しながら解説される。
【図１】演算ユニットの簡略化されたブロック図を示す。
【図２】図１の演算ユニットの局所的なメモリでのプログラム命令の提供についての図を示す。
【図３】図１の演算ユニットの局所的なメモリの一実施形態の簡素化した図を示す。
【図４】演算ユニットを駆動する方法についての第１のフロー図を示す。
【図５】プログラム命令を定めるためのシステム、及び、演算ユニットを有する制御ユニットの図を示す。
【図６】演算ユニットを駆動する方法についての第２のフロー図を示す。
【図７】図５に関する拡大図を示す。
【００５２】
機能が同等の構成要素及び値について、全ての図において、実施形態が異なる場合でも同じ符号が利用される。
【発明を実施するための形態】
【００５３】
図１は、演算ユニット１０のブロック図を示しており、演算ユニット１０は、ここでは少なくとも１つの演算コア１２を含む。演算コア１２は、局所的なメモリ１４と接続されており、局所的なメモリ１４は、バスシステム１６と接続されている。好適な実施形態において、バスシステム１６は、例えばマイクロコントローラで利用されるような、複数のデータ線及びアドレス線を含む並列バスシステム１６である。
【００５４】
ここでは、演算ユニット１０は、少なくとも１つの演算コア１２を用いて、演算ユニット１０のためのコンピュータプログラム２４（図２参照）の複数のプログラム関数２２（図２参照）を実行するよう構成され、演算ユニット１０は、以下の工程、即ち、
‐プログラム命令２６、特に、将来の実行時点ｔ１”、ｔ２”、ｔ３”に実行されるプログラム関数２２（図２参照）に属する全てのプログラム命令を定める工程１０２（図２又は図４参照）と、
‐実行時点ｔ１”、ｔ２”、ｔ３”の前に、局所的なメモリ１４で、定められたプログラム命令２６を提供する工程１０４（図２又は図４参照）と、
を実行するよう更に構成される。
【００５５】
好適な実施形態において、上記定める工程１０２は、コンピュータプログラム２４、及び／又は、コンピュータプログラム２４を含むプログラムシステムの開発時間（「設計時間」）の間に行われる。その際に、上記定める工程１０２は、好適に、演算ユニット１０によってではなく、例えば、演算ユニット１０とは別体のシステム２００（以下の図５参照）によって行われる。
【００５６】
更なる別の実施形態において、上記定める工程１０２は、コンピュータプログラム２４の実行時間中に行われる。その際には、上記定める工程１０２は、別体のシステム２００、及び／又は、演算ユニット１０、及び／又は、演算ユニット１０の近傍の比較可能な演算ユニット１０’（図示せず）等によって行われうる。
【００５７】
一実施形態において、局所的なメモリ１４は、演算ユニット１０（図１）の大域的な作業メモリ、及び／又は、少なくとも１つの演算コア１２の局所的な作業メモリである。例えば、大域的な作業メモリは、演算ユニット１０の複数の演算コア１２が自身にアクセスしうるように、形成される。
【００５８】
ここで、演算ユニット１０は転送ユニット２０を含み、転送ユニット２０は、定められたプログラム命令２６の提供１０４を、当該転送ユニット２０が定められたプログラム命令２６をソースメモリ１８から局所的なメモリ１４へと複写することにより、実行するよう構成される。ソースメモリ１８は、例えば、所謂「フラッシュメモリ」として実現される。ソースメモリ１８及び転送ユニット２０は、バスシステム１６に接続されている。転送ユニット２０は、以下でさらに詳細に解説される。演算ユニット１０の更なる別の可能な周辺的な要素は、図１には一緒に示されていない。
【００５９】
一実施形態において、転送ユニット２０は、演算ユニット１０及び／又は演算コア１２に対して、局所的なメモリ１４での定められたプログラム命令２６の提供１０４をシグナリングするよう構成される。
【００６０】
例えば、局所的なメモリ１４は、演算ユニット１０の、内部の大域的なメモリ、及び／又は、演算ユニット１０の外部メモリ、及び／又は、演算コア１２の局所的なメモリ１４である。局所的なメモリ１４は、例えば、ＲＡＭメモリ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【００６１】
例えば、図１に係る演算ユニット１０は、例えば自動車のために実現された、開ループ制御装置及び／又は閉ループ制御装置（図示せず）の構成要素である。
【００６２】
演算ユニット１０の一実施形態において、少なくとも１つのリングバッファ１４’（図２参照）が、局所的なメモリ１４内に、定められたプログラム命令２６を提供するために設けられる。ここで、リングバッファ１４’は、プログラム実行のために周期的に演算ユニット１０によって読み出され、リングバッファ１４’には周期的に、時間的に後続の更なる別の定められたプログラム命令２６が、リングバッファ１４’の、周期において既に演算ユニット１０によって読み出されているアドレスに書き込まれる。例えば、リングバッファ１４’は、局所的なメモリ１４のアドレス領域に配置されており、少なくとも１つの周期的に変更可能なポインタが、リングバッファ１４’にアクセスするために設けられる。これに関して、図２が一実施例を示す。
【００６３】
全体として、図２は、コンピュータプログラム２４の一連のプログラム関数２２についての図を示している。これに関して、図２では、上方の領域に、ソースメモリ１８と、第１の時間軸ｔ’と、が示されている。プログラム関数２２はそれぞれ１つ以上のプログラム命令２６を含み、この１つ以上のプログラム命令２６は、転送ユニット２０によって、局所的なメモリ１４で提供されうる。
【００６４】
示されるように、コンピュータプログラム２４は、１つ以上のプログラム関数２２を含み、各プログラム関数２２は、１つ以上のプログラム命令２６（ｉｎｓｔｒｕｃｔｉｏｎ）を含みうる。英語の言語使用において、「プログラム関数」は、場合によっては、「Ｒｕｎｎａｂｌｅ」という概念によって特徴付けられうる。プログラム関数２２は、計画可能なプログラム関数２２、及び／又は、計画不可能なプログラム関数２２を含みうる。
【００６５】
さらに、図２には、局所的なメモリ１４の一実施形態が示されており、局所的なメモリ１４は、ここでは、リングバッファ１４’であり又はリングバッファ１４’を含む。例えば、リングバッファ１４’は、ＲＡＭメモリ内の固定長の所定のメモリ領域によって特徴付けられる。リングバッファ１４’は、現在伝送されているプログラム命令２６を書き込むことが可能な現在のアドレスを特徴付ける書き込みポインタ２８を有する。
【００６６】
好適に演算ユニット１０により制御される読み出しポインタ３０が、書き込みポインタ２８の後に、時間的に間隔を取って続き、これにより、演算ユニット１０又は演算コア１２による処理に、各プログラム命令２６を供給することが可能である。書き込みポインタ２８及び読み出しポインタ３０は、リングバッファ１４’に対応付けられた書き込み領域を周期的に通過する（durchlanfen）ことが可能である。
【００６７】
図２の下方の領域には、第２の時間軸ｔ”が概略的に示されており、この第２の時間軸ｔ”は、局所的なメモリ１４に提供されたプログラム関数２２又は演算コア１２により実行されるプログラム関数２２を示している。これに関して、第２の時間軸ｔ”は、各実行時点ｔ１”、ｔ２”及びｔ３”を有し、これら各実行時点ｔ１”、ｔ２”及びｔ３”は、因果関係により、上方の第１の時間軸ｔ’で示された各時間ｔ１’、ｔ２’及びｔ３’よりも時間的に後に存在する。
【００６８】
図３は、例えば１つ以上にリングバッファ１４’を含む（図２参照）局所的なメモリ１４の簡素化された図を示している。ここでは、局所的なメモリ１４を利用して、複数（ここでは２つ）の第１のプログラム関数２２’、及び、複数（ここでは２つ）の第２のプログラム関数２２”が提供又は実行されうる。例えば、第１のプログラム関数２２’は、１０ｍｓ（ミリ秒）の第１の周期時間（周期）を有し、第２のプログラム関数２２”は、１ｍｓの第２の周期時間を有する。例えば、第１のプログラム関数２２’は互いに同じ大きさのアドレス領域を含み、第２のプログラム関数２２”は互いに異なる大きさのアドレス領域を含む。
【００６９】
図３に示されるように、好適に、第１のプログラム関数２２’は、局所的なメモリ１４の第１のメモリ領域１４ａに提供され、第２のプログラム関数２２”は、局所的なメモリ１４の第２のメモリ領域１４ｂに提供される。これにより、局所的なメモリ１４でのプログラム関数２２’及び２２”の効率の良い管理、及び、演算ユニット１０の演算コア１２による、各プログラム命令２６の効率の良い処理が可能となる。
【００７０】
図１〜図３によって及び以下で示す図４に関して、以下では、演算ユニット１０を駆動する方法であって、演算ユニット１０が、少なくとも１つの演算コア１２と、演算ユニット１０に関して局所的なメモリ１４と、を有し、少なくとも１つの演算コア１２によって、演算ユニット１０のためのコンピュータプログラム２４の複数のプログラム関数２２が実行される、上記方法において、以下の工程、即ち、
‐プログラム命令２６、特に、将来の実行時点ｔ１”、ｔ２”、ｔ３”に実行されるプログラム関数２２に属する全てのプログラム命令２６を定める工程１０２と、
‐実行時点ｔ１”、ｔ２”、ｔ３”の前に、局所的なメモリ１４又は１４ａ、１４ｂ、１４’で、定められたプログラム命令２６を提供する工程１０４と、
を含むことを特徴とする、上記方法が記載される。
【００７１】
既に図１で詳述したように、プログラム命令２６を定める工程１０２は、好適に（しかし、必須ではなく）、定められたプログラム命令２６を提供する工程１０４とは別に行われうる。
【００７２】
例えば、局所的なメモリ１４は、演算ユニット１０の、内部の大域的なメモリ、及び／又は、演算ユニット１０の外部メモリ、及び／又は、演算コア１２の局所的なメモリ１４である。局所的なメモリ１４は、例えばＲＡＭメモリ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【００７３】
一実施形態において、定められたプログラム命令２６は、実行されるプログラム関数２２に依存した順序で、演算ユニット１０の局所的なメモリ１４に提供される。
【００７４】
一実施形態において、複数の様々なプログラム関数２２それぞれについて、該当するプログラム関数２２に属する全てのプログラム命令２６が、各実行時点ｔ１”、ｔ２”、ｔ３”の前に、局所的なメモリ１４で提供される。
【００７５】
一実施形態において、定められたプログラム命令２６を提供する工程１０４は、好適に演算ユニット１０には依存しない転送ユニット２０が定められたプログラム命令２６をソースメモリ１８から局所的なメモリ１４へと複写することにより、行われる。
【００７６】
一実施形態において、転送ユニット２０は、更なる別の演算ユニット１０、及び／又は、演算ユニット１０の更なる別の演算コア１２、及び／又は、それ自体は公知のやり方でバスシステム１６を介してメモリ直接アクセスを実行しうるメモリ直接アクセス制御装置を含む。好適な実施形態において、転送ユニット２０又はメモリ直接アクセス制御装置は、純粋なハードウェア回路として実現される。メモリ直接アクセス制御装置は、英語では、「ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラ（ＤＭＡ‐Ｃｏｎｔｒｏｌｌｅｒ）」とも称される。代替的に、メモリ直接アクセス制御装置は、ソフトウェアによって、又は、ハードウェアとソフトウェアとの混合によって実現されうる。他の構成において、転送ユニット２０は、特別な（ユーザ固有）のハードウェア回路として実現される。これに関して、以下の図５及び図７も参照されたい。
【００７７】
図４は、図１〜図３の１つ以上に係る演算ユニット１０を駆動する方法についてのフロー図を示している。第１のブロックでは、将来の実行時点ｔ１”、ｔ２”、ｔ３”に実行されるプログラム関数２２に属する好適に全てのプログラム命令２６を定める工程１０２が行われる。
【００７８】
一実施形態において、上記定める工程１０２は、プログラム関数２２の周期的な実行の、好適に静的な計画の評価１０３、及び／又は、コンピュータプログラム２４の少なくとも１つの部分のソフトウェア解析を含む。これにより、次の期間に実行される複数のプログラム関数２２から、それぞれ定期的に実行されるプログラム関数２２が、静的な計画を用いて、プログラム関数２２の線形リストを利用して定められ、及び／又は、実行される残りのプログラム関数２２が、解析によって、特にソフトウェア解析によって定められうる。
【００７９】
後続のブロックでは、定められたプログラム命令２６を提供する工程１０４が、実行時点ｔ１”、ｔ２”、ｔ３”の前に、局所的なメモリ１４で行われる。これに続くブロックでは、提供されたプログラム関数２２又はプログラム命令２６を実行する工程１０６が、演算コア１２によって、各実行時点ｔ１”、ｔ２”、ｔ３”に、局所的なメモリ１４を利用して行われる。破線は、プロック１０６の下で、ブロック１０２の開始へと進んでおり、図４で示す方法を対応するやり方で周期的又は連続的に続けられることを表している。
【００８０】
本発明の更なる別の変形例において、局所的なメモリ１４を、リングバッファ１４’の形態とは異なる形で構成することも構想されうる。
【００８１】
本発明に係る原則を利用することによって、有利に、比較的遅いコードメモリが設けられた場合にも、所謂インストラクション・ストール（ｉｎｓｔｒｕｃｔｉｏｎ  ｓｔａｌｌ）の回避と、これにより、演算ユニット１０の演算時間リソースのより効率の良い活用と、が可能となる。
【００８２】
図５は、プログラム命令２６、特に、コンピュータプログラム２４の、将来の時点ｔ１”、ｔ２”、ｔ３に実行されるプログラム関数２２に属する全てのプログラム命令２６を定めるため（１０２）のシステム２００（図５の左側）を示している。システム２００は、プログラム命令２６を定めること１０２を、コンピュータプログラム２４の実行時間よりも時間的に前に、特に、コンピュータプログラム２４及び／又はコンピュータプログラム２４を含むプログラムシステムの開発時点に実行するよう構成される。
【００８３】
図５の右側には、演算ユニット１０及び転送ユニット２０を有する制御装置３００が示されており、この制御装置３００は、例えば、自動車のための制御装置３００である。システム２００又は制御装置３００の上方にはそれぞれ、水平方向に両方向矢印が示しており、この両方向矢印はそれぞれ、プログラム命令２６を定める工程１０２、又は、プログラム命令２６を提供する工程１０４及びプログラム命令２６を実行する工程１０６についての符号で示されている。
【００８４】
ここでは、システム２００で定められたプログラム命令２６、及び／又は、当該プログラム命令２６を特徴付ける情報が、制御装置３００のメモリ３１０に格納されうる。一実施形態において、メモリ３１０は、一時記憶メモリであり、この一時記憶メモリから、プログラム命令２６が、局所的なメモリ１４又はリングバッファ１４’に、コンピュータプログラム２４の実行時間の間に書き込まれうる。一実施形態において、メモリ３１０は、局所的なメモリ１４又はリングバッファ１４’と同一である。
【００８５】
図示されない実施形態において、システム２００は、制御装置３００又は演算ユニット１０に組み込まれて実現されうる。ここでは、システム２００は、ハードウェアによって、又は、制御装置３００で実行可能なソフトウェアによって実現される。
【００８６】
代替的に、システム２００は、演算ユニット１０又は制御装置３００とは分けられており、例えば、演算ユニット１０のためのコンピュータプログラム２４の開発環境の一部である。システム２００は、例えば、以下の工程、即ち、プログラム関数２２の周期的な実行の、好適に静的な計画を評価する工程、及び／又は、コンピュータプログラム２４の少なくとも一部のソフトウェア解析を実行するためにも構成されうる。これらの工程は、例えば、システム２００の内部でも実行可能であり、特に、演算ユニット１０のコンピュータプログラム２４が実行のために提供される未だ前にも実行可能である。
【００８７】
図６は、演算ユニット１０を駆動する方法のための更なる別のフロー図を示している。このフロー図は好適に、しかし必須ではなく、図５の構成との関連で記載されうる。
【００８８】
第１の工程において（図示せず）、プログラム命令２６を定める工程１０２が、コンピュータプログラム２４の実行時間より時間的に前に、又は、図６に示されるフロー図の実行の前に行われる。好適に、上記定める工程１０２は、コンピュータプログラム２４及び／又はコンピュータプログラム２４を含むプログラムシステムの開発時点に行われる。
【００８９】
第２の工程において、コンピュータプログラム２４の実行時間の間に、定められたプログラム命令２６を提供する工程１０４、及び、提供されたプログラム関数２２又はプログラム命令２６を演算コア１２によって実行する工程１０６が、先に図４で既に記載したように行われる。ブロック１０６の終了からブロック１０４の開始への破線は、図６で示す方法を対応するやり方で周期的又は連続的に続けられることを表している。
【００９０】
図７は、図５に類似した図を示している。ここでは、バスシステム１６が、演算ユニット１０と、メモリ３１０と、ソースメモリ１８と、転送ユニット２０と、インタフェース回路３２０と、に接続されている。インタフェース回路３２０は、システム２００と接続されている。一実施形態において、転送ユニット２０は、データ線及び／又は制御線によって、ソースメモリ１８及び／又はインタフェース回路３２０及び／又は局所的なメモリ１４又は１４’と直接的に接続されている。このことは、図７では波線の接続線によって示されている。
【００９１】
転送ユニット２０は、好適に転送ユニットに依存しないユニット（ここでは、即ちシステム２００）によって、定められたプログラム命令２６、特に、将来の時点ｔ１”、ｔ２”、ｔ３”に実行されるプログラム関数２２に属する全てのプログラム命令２６を、ソースメモリ１８から局所的なメモリ１４又は１４’へと複写するよう構成される。
【００９２】
一実施形態において、プログラム命令２６は、プログラム関数２２の周期的な実行の好適に静的な計画の評価１０３、及び／又は、コンピュータプログラム２４の少なくとも一部のソフトウェア解析によって定められる。
【００９３】
例えばコンピュータプログラム２４の少なくとも１つのプログラム関数２２について、どのプログラム命令２６が全て、該当するプログラム関数２２に属するのかを示す対応する（設定）データが、転送ユニットに、演算ユニットでのコンピュータプログラムの実行の前に提供され、又は動的にも、即ち、演算ユニットでのコンピュータプログラムの実行の間に提供されうる。例えば、このようなデータは、コンピュータプログラムへの追加として提供され、又は、コンピュータプログラムとは別に設けられうる。上記データは、先に言及したように、特に、プログラム関数２２の周期的な実行についての情報も含むため、転送ユニット２０は、将来のどの時点までに、１つ以上の注目するプログラム関数２２のプログラム命令２６が、演算ユニットのために、例えば演算ユニットの局所的なメモリに提供されるのかを、上記データから定めることが可能である。
【００９４】
他の実施形態で転送ユニットが設けられていない限りにおいて、（設定）データの利用にも関する上記機能は、演算ユニット自身によっても実現されうる。
【図１】
2019520651.tif 000003
【図２】
2019520651.tif 000004
【図３】
2019520651.tif 000005
【図４】
2019520651.tif 000006
【図５】
2019520651.tif 000007
【図６】
2019520651.tif 000008
【図７】
2019520651.tif 000009
【手続補正書】
【提出日】平成31年2月13日(2019.2.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
演算ユニット（１０）を駆動する方法であって、前記演算ユニット（１０）は、少なくとも１つの演算コア（１２）と、前記演算ユニット（１０）に関して局所的なメモリ（１４）と、を有し、前記少なくとも１つの演算コア（１２）によって、前記演算ユニット（１０）のためのコンピュータプログラム（２４）の複数のプログラム関数（２２）が実行される、前記方法において、以下の工程、即ち、
‐プログラム命令（２６）を定める工程（１０２）と、
‐前記実行時点（ｔ１”、ｔ２”、ｔ３”）の前に、前記局所的なメモリ（１４）で、定められた前記プログラム命令（２６）を提供する工程（１０４）と、
を含み、
プログラム命令（２６）を定める前記工程（１０２）は、前記コンピュータプログラム（２４）の実行時間よりも時間的に前に行われることを特徴とする、方法。
【請求項２】
前記定められたプログラム命令（２６）は、実行される前記プログラム関数（２２）に依存した順序で、前記演算ユニット（１０）の前記局所的なメモリ（１４）で提供される、請求項１に記載の方法。
【請求項３】
複数の様々なプログラム関数（２２）それぞれについて、該当する前記プログラム関数（２２）に属する全てのプログラム命令（２６）が、各前記実行時点（ｔ１”、ｔ２”、ｔ３”）の前に前記局所的なメモリ（１４）で提供される、請求項１又は２に記載の方法。
【請求項４】
前記局所的なメモリ（１４）は、前記演算ユニット（１０）の大域的な作業メモリ、及び／又は、前記少なくとも１つの演算コア（１２）の局所的な作業メモリである、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
少なくとも１つのリングバッファ（１４’）が、前記局所的なメモリ（１４）に、前記定められたプログラム命令（２６）の前記提供（１０４）のために設けられ、前記リングバッファ（１４’）は、プログラム実行のために、周期的に前記演算ユニット（１０）によって読み出され、前記リングバッファ（１４’）には周期的に、時間的に後続の更なる別の定められたプログラム命令（２６）が、当該リングバッファ（１４’）の、周期において既に前記演算ユニット（１０）によって読み出されているアドレスに書き込まれる、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記定められたプログラム命令（２６）の前記提供（１０４）は、
前記演算ユニット（１０）には依存しない、転送ユニット（２０）が、前記定められたプログラム命令（２６）をソースメモリ（１８）から前記局所的なメモリ（１４）へと複写することによって、行われる、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記転送ユニット（２０）は、更なる別の演算ユニット（１０）、及び／又は、前記演算ユニット（１０）の更なる別の演算コア（１２）、及び／又は、メモリ直接アクセス制御装置を含む、請求項６に記載の方法。
【請求項８】
前記定める工程（１０２）は、前記プログラム関数（２２）の周期的な実行の、静的な計画の評価（１０３）、及び／又は、前記コンピュータプログラム（２４）の少なくとも一部のソフトウェア解析を含む、請求項１〜７の少なくとも１項に記載の方法。
【請求項９】
前記コンピュータプログラム（２４）の前記実行時間の間に、前記定められたプログラム命令（２６）の前記提供（１０４）が行われる、請求項１〜８のいずれか１項に記載の方法。
【請求項１０】
プログラム命令（２６）を定める前記工程（１０２）において、将来の実行時点（ｔ１”、ｔ２”、ｔ３”）に実行されるプログラム関数（２２）に属する全てのプログラム命令（２６）を定める、請求項１〜９のいずれかに記載の方法。
【請求項１１】
少なくとも１つの演算コア（１２）と、前記演算ユニット（１０）に関して局所的なメモリ（１４）と、を有する演算ユニット（１０）であって、前記演算ユニット（１０）は、前記少なくとも１つの演算コア（１２）によって、前記演算ユニット（１０）のためのコンピュータプログラム（２４）の複数のプログラム関数（２２）を実行するよう構成され、前記演算ユニット（１０）は、以下の工程、即ち、
‐プログラム命令（２６）を定める工程（１０２）と、
‐前記実行時点（ｔ１”、ｔ２”、ｔ３”）の前に、前記局所的なメモリ（１４）で、定められた前記プログラム命令（２６）を提供する工程（１０４）と、
を実行するよう更に構成される、演算ユニット（１０）。
【請求項１２】
前記局所的なメモリ（１４）は、前記演算ユニット（１０）の大域的な作業メモリ、及び／又は、前記少なくとも１つの演算コア（１２）の局所的な作業メモリである、請求項１１に記載の演算ユニット（１０）。
【請求項１３】
前記演算ユニット（１０）は、転送ユニット（２０）を含み、前記転送ユニット（２０）は、当該転送ユニット（２０）が前記定められたプログラム命令（２６）をソースメモリ（１８）から前記局所的なメモリ（１４）へと複写することにより、前記定められたプログラム命令（２６）の前記提供（１０４）を実行するよう構成される、請求項１１又は１２に記載の演算ユニット（１０）。
【請求項１４】
前記転送ユニット（２０）は、前記演算ユニット（１０）及び／又は前記演算コア（１２）に対して、前記局所的なメモリ（１４）での前記定められたプログラム命令（２６）の前記提供（１０４）をシグナリングするよう構成される、請求項１３に記載の演算ユニット（１０）。
【請求項１５】
プログラム命令（２６）を定める前記工程（１０２）において、将来の実行時点（ｔ１”、ｔ２”、ｔ３”）に実行されるプログラム関数（２２）に属する全てのプログラム命令（２６）を定める、請求項１１〜１４のいずれかに記載の演算ユニット。
【請求項１６】
自動車のための、開ループ制御及び／又は閉ループ制御装置であって、
前記開ループ制御及び／又は閉ループ制御装置は、請求項１０〜１３のいずれか１項に記載の演算ユニット（１０）を備えることを特徴とする、開ループ制御及び／又は閉ループ制御装置。
【請求項１７】
自動車のための、請求項１６に記載の開ループ制御及び／又は閉ループ制御装置。
【請求項１８】
プログラム命令（２６）を定める（１０２）ためのシステム（２００）であって、前記プログラム関数（２２）は将来の実行時点（ｔ１”、ｔ２”、ｔ３”）に実行され、前記システム（２００）は、プログラム命令（２６）を定めること（１０２）を、前記コンピュータプログラム（２４）の実行時間より時間的に前に実行するよう構成される、システム（２００）。
【請求項１９】
コンピュータプログラム（２４）のプログラム関数（２２）に属する全てのプログラム命令（２６）を定める（１０２）、請求項１８に記載のシステム（２００）。
【請求項２０】
前記システム（２００）は、プログラム命令（２６）を定めること（１０２）を、前記コンピュータプログラム（２４）及び／又は前記コンピュータプログラム（２４）を含むプログラムシステムの開発時点に実行するよう構成される、請求項１８又は１９に記載のシステム（２００）。
【請求項２１】
演算ユニット（１０）のための転送ユニット（２０）であって、前記演算ユニット（１０）は、少なくとも１つの演算コア（１２）と、前記演算ユニット（１０）に関して局所的なメモリ（１４）と、を有し、前記演算ユニット（１０）は、前記少なくとも１つの演算コア（１２）によって、前記演算ユニット（１０）のためのコンピュータプログラム（２４）の複数のプログラム関数（２２）を実行するよう構成される、前記転送ユニット（２０）において、
前記転送ユニット（２０）は、当該転送ユニット（２０）には依存しないユニットによって定められた（１０２）プログラム命令（２６）を、ソースメモリ（１８）から前記局所的なメモリ（１４；１４’）へと複写するよう構成されることを特徴とする、転送ユニット（２０）。
【請求項２２】
前記プログラム命令（２６）は、前記プログラム関数（２２）の周期的な実行の、静的な計画の評価（１０３）、及び／又は、前記コンピュータプログラム（２４）の少なくとも一部のソフトウェア解析によって定められたものである、請求項２１に記載の転送ユニット（２０）。
【請求項２３】
前記プログラム命令（２６）は、将来の実行時点（ｔ１”、ｔ２”、ｔ３”）に前記演算ユニットにより実行されるプログラム関数（２２）に属する全てのプログラム命令（２６）である、請求項２１又は２２に記載の転送ユニット（２０）。
【請求項２４】
前記プログラム命令（２６）は、当該転送ユニット（２０）には依存しないユニットによって定められた（１０２）、請求項２１〜２３のいずれかに記載の転送ユニット（２０）。
【手続補正書】
【提出日】平成31年2月26日(2019.2.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
演算ユニット（１０）を駆動する方法であって、前記演算ユニット（１０）は、少なくとも１つの演算コア（１２）と、前記演算ユニット（１０）に関して局所的なメモリ（１４）と、を有し、前記少なくとも１つの演算コア（１２）によって、前記演算ユニット（１０）のためのコンピュータプログラム（２４）の複数のプログラム関数（２２）が実行される、前記方法において、以下の工程、即ち、
‐プログラム命令（２６）を定める工程（１０２）と、
‐前記実行時点（ｔ１”、ｔ２”、ｔ３”）の前に、前記局所的なメモリ（１４）で、定められた前記プログラム命令（２６）を提供する工程（１０４）と、
を含み、
プログラム命令（２６）を定める前記工程（１０２）は、前記コンピュータプログラム（２４）の実行時間よりも時間的に前に行われることを特徴とする、方法。
【請求項２】
前記定められたプログラム命令（２６）は、実行される前記プログラム関数（２２）に依存した順序で、前記演算ユニット（１０）の前記局所的なメモリ（１４）で提供される、請求項１に記載の方法。
【請求項３】
複数の様々なプログラム関数（２２）それぞれについて、該当する前記プログラム関数（２２）に属する全てのプログラム命令（２６）が、各前記実行時点（ｔ１”、ｔ２”、ｔ３”）の前に前記局所的なメモリ（１４）で提供される、請求項１又は２に記載の方法。
【請求項４】
前記局所的なメモリ（１４）は、前記演算ユニット（１０）の大域的な作業メモリ、及び／又は、前記少なくとも１つの演算コア（１２）の局所的な作業メモリである、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
少なくとも１つのリングバッファ（１４’）が、前記局所的なメモリ（１４）に、前記定められたプログラム命令（２６）の前記提供（１０４）のために設けられ、前記リングバッファ（１４’）は、プログラム実行のために、周期的に前記演算ユニット（１０）によって読み出され、前記リングバッファ（１４’）には周期的に、時間的に後続の更なる別の定められたプログラム命令（２６）が、当該リングバッファ（１４’）の、周期において既に前記演算ユニット（１０）によって読み出されているアドレスに書き込まれる、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記定められたプログラム命令（２６）の前記提供（１０４）は、
前記演算ユニット（１０）には依存しない、転送ユニット（２０）が、前記定められたプログラム命令（２６）をソースメモリ（１８）から前記局所的なメモリ（１４）へと複写することによって、行われる、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記転送ユニット（２０）は、更なる別の演算ユニット（１０）、及び／又は、前記演算ユニット（１０）の更なる別の演算コア（１２）、及び／又は、メモリ直接アクセス制御装置を含む、請求項６に記載の方法。
【請求項８】
前記定める工程（１０２）は、前記プログラム関数（２２）の周期的な実行の、静的な計画の評価（１０３）、及び／又は、前記コンピュータプログラム（２４）の少なくとも一部のソフトウェア解析を含む、請求項１〜７の少なくとも１項に記載の方法。
【請求項９】
前記コンピュータプログラム（２４）の前記実行時間の間に、前記定められたプログラム命令（２６）の前記提供（１０４）が行われる、請求項１〜８のいずれか１項に記載の方法。
【請求項１０】
プログラム命令（２６）を定める前記工程（１０２）において、将来の実行時点（ｔ１”、ｔ２”、ｔ３”）に実行されるプログラム関数（２２）に属する全てのプログラム命令（２６）を定める、請求項１〜９のいずれかに記載の方法。
【請求項１１】
少なくとも１つの演算コア（１２）と、前記演算ユニット（１０）に関して局所的なメモリ（１４）と、を有する演算ユニット（１０）であって、前記演算ユニット（１０）は、前記少なくとも１つの演算コア（１２）によって、前記演算ユニット（１０）のためのコンピュータプログラム（２４）の複数のプログラム関数（２２）を実行するよう構成され、前記演算ユニット（１０）は、以下の工程、即ち、
‐プログラム命令（２６）を定める工程（１０２）と、
‐前記実行時点（ｔ１”、ｔ２”、ｔ３”）の前に、前記局所的なメモリ（１４）で、定められた前記プログラム命令（２６）を提供する工程（１０４）と、
を実行するよう更に構成される、演算ユニット（１０）。
【請求項１２】
前記局所的なメモリ（１４）は、前記演算ユニット（１０）の大域的な作業メモリ、及び／又は、前記少なくとも１つの演算コア（１２）の局所的な作業メモリである、請求項１１に記載の演算ユニット（１０）。
【請求項１３】
前記演算ユニット（１０）は、転送ユニット（２０）を含み、前記転送ユニット（２０）は、当該転送ユニット（２０）が前記定められたプログラム命令（２６）をソースメモリ（１８）から前記局所的なメモリ（１４）へと複写することにより、前記定められたプログラム命令（２６）の前記提供（１０４）を実行するよう構成される、請求項１１又は１２に記載の演算ユニット（１０）。
【請求項１４】
前記転送ユニット（２０）は、前記演算ユニット（１０）及び／又は前記演算コア（１２）に対して、前記局所的なメモリ（１４）での前記定められたプログラム命令（２６）の前記提供（１０４）をシグナリングするよう構成される、請求項１３に記載の演算ユニット（１０）。
【請求項１５】
プログラム命令（２６）を定める前記工程（１０２）において、将来の実行時点（ｔ１”、ｔ２”、ｔ３”）に実行されるプログラム関数（２２）に属する全てのプログラム命令（２６）を定める、請求項１１〜１４のいずれかに記載の演算ユニット（１０）。
【請求項１６】
自動車のための、開ループ制御及び／又は閉ループ制御装置であって、
前記開ループ制御及び／又は閉ループ制御装置は、請求項１１〜１５のいずれか１項に記載の演算ユニット（１０）を備えることを特徴とする、開ループ制御及び／又は閉ループ制御装置。
【請求項１７】
自動車のための、請求項１６に記載の開ループ制御及び／又は閉ループ制御装置。
【請求項１８】
プログラム命令（２６）を定める（１０２）ためのシステム（２００）であって、プログラム関数（２２）は将来の実行時点（ｔ１”、ｔ２”、ｔ３”）に実行され、前記システム（２００）は、プログラム命令（２６）を定めること（１０２）を、コンピュータプログラム（２４）の実行時間より時間的に前に実行するよう構成される、システム（２００）。
【請求項１９】
コンピュータプログラム（２４）のプログラム関数（２２）に属する全てのプログラム命令（２６）を定める（１０２）、請求項１８に記載のシステム（２００）。
【請求項２０】
前記システム（２００）は、プログラム命令（２６）を定めること（１０２）を、前記コンピュータプログラム（２４）及び／又は前記コンピュータプログラム（２４）を含むプログラムシステムの開発時点に実行するよう構成される、請求項１８又は１９に記載のシステム（２００）。
【請求項２１】
演算ユニット（１０）のための転送ユニット（２０）であって、前記演算ユニット（１０）は、少なくとも１つの演算コア（１２）と、前記演算ユニット（１０）に関して局所的なメモリ（１４）と、を有し、前記演算ユニット（１０）は、前記少なくとも１つの演算コア（１２）によって、前記演算ユニット（１０）のためのコンピュータプログラム（２４）の複数のプログラム関数（２２）を実行するよう構成される、前記転送ユニット（２０）において、
前記転送ユニット（２０）は、当該転送ユニット（２０）には依存しないユニットによって定められた（１０２）プログラム命令（２６）を、ソースメモリ（１８）から前記局所的なメモリ（１４；１４’）へと複写するよう構成されることを特徴とする、転送ユニット（２０）。
【請求項２２】
前記プログラム命令（２６）は、前記プログラム関数（２２）の周期的な実行の、静的な計画の評価（１０３）、及び／又は、前記コンピュータプログラム（２４）の少なくとも一部のソフトウェア解析によって定められたものである、請求項２１に記載の転送ユニット（２０）。
【請求項２３】
前記プログラム命令（２６）は、将来の実行時点（ｔ１”、ｔ２”、ｔ３”）に前記演算ユニットにより実行されるプログラム関数（２２）に属する全てのプログラム命令（２６）である、請求項２１又は２２に記載の転送ユニット（２０）。
【請求項２４】
前記プログラム命令（２６）は、当該転送ユニット（２０）には依存しないユニットによって定められた（１０２）、請求項２１〜２３のいずれかに記載の転送ユニット（２０）。
【国際調査報告】
2019520651.tif 000010
2019520651.tif 000011
2019520651.tif 000012
2019520651.tif 000013
2019520651.tif 000014
2019520651.tif 000015