(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0027】
以下、本発明によるプログラマブル回路等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。また、所定の情報が格納され得る格納部等において、当該格納部に情報が記憶される過程は問わないものとする。例えば、記録媒体を介して情報が格納部等で記憶されるようになってもよい。また、通信回線などを介して送信された情報が格納部等で記憶されるようになってもよい。さらに、入力デバイスを介して入力された情報が格納部等で記憶されるようになってもよい。また、本実施の形態において説明する各情報の形式、内容などは、あくまで例示であり、各情報の持つ意味を示すことができれば、形式、内容などは問わない。
【0028】
(実施の形態1)
本実施の形態において、処理要求に応じて動作するプログラマブル回路1であって、処理要求に対応する動作情報を選択し、当該動作情報に従い動作するプログラマブル回路1について説明する。
【0029】
図1は、本実施の形態におけるプログラマブル回路1のブロック図である。プログラマブル回路1は、格納部11、受付部12、取得部13、動作部14を備える。また、取得部13は、格納手段131、取得手段132、選択手段133、結合手段134、変更手段135を備える。なお、
図1において、格納部11、受付部12、取得部13、動作部14は、通常、一体であるが、そうでなくてもよい。「一体である」とは、例えば、物理的に分離不可であることや、物理的に閉じられた1つの空間内にあること、1つの電子回路基板上に構成されていることなどを意味する。
【0030】
また、格納部11、受付部12、取得部13、動作部14が一体である場合、本実施の形態におけるプログラマブル回路1は、例えば、CPU(Central Processing Unit)や、MPU(Micro Processing Unit)などのいわゆるプロセッサと呼ばれる集積回路や、ASIC(Application Specific Integrated Circuit)や、FPGA(Field Programmable Gate Array)などのいわゆるPLD(Programmable Logic Device)と呼ばれる集積回路などである。また、一体でない場合、本実施の形態におけるプログラマブル回路1は、例えば、CPUや記憶回路などの2以上の集積回路を備える回路や装置などである。
【0031】
格納部11には、後述の動作部14が動作を行う際に用いる動作情報を管理する情報である1以上の動作管理情報が格納される。動作管理情報は、要求された処理に関する条件である処理要求条件と、所定の処理を行うための一連の動作を示す動作情報とを有する。処理要求条件は、通常、所定の処理を要求することを示す情報である処理要求情報に関する条件である。つまり、処理要求条件は、後述の受付部12が受け付けた処理要求情報に対応する動作情報を取得するための条件である。また、処理要求条件は、後述の動作部14が動作情報に従い行った動作の結果を示す動作結果情報に関する条件であってもよい。つまり、処理要求条件は、後述の動作部14が動作情報に従い行った動作の結果に対応する動作情報を取得するための条件であってもよい。
【0032】
処理要求情報は、例えば、処理の内容を示す処理内容情報や、当該処理の程度を示す処理程度情報、当該処理に用いるパラメータ、当該処理に要する時間を示す処理時間情報、処理により得られる結果の品質を示す処理結果品質情報などである。処理内容情報は、例えば、「高解像度化」や、「ノイズ除去」などである。処理程度情報は、例えば、「強」、「弱」、「大」、「小」などである。また、パラメータは、例えば、「80%」や、「0.1」などである。また、処理時間情報は、例えば、「1μsec」や、「0.5μsec」などである。また、処理結果品質情報は、例えば、「高」や、「低」、「80/100」、「50%」などである。
【0033】
また、動作結果情報は、例えば、動作部14が動作を行うことにより行った処理の内容を示す処理内容情報や、当該動作に要した時間を示す動作時間情報、当該動作により得られた結果の品質を示す動作結果品質情報などである。また、動作結果情報は、例えば、処理内容情報や、動作時間情報、動作結果品質情報などの統計量であってもよい。統計量とは、例えば、平均や分散などである。また、当該平均は、例えば、過去10回の平均などである。なお、動作時間情報は、処理時間情報と同様である。また、動作結果品質情報は、処理結果品質情報と同様である。
【0034】
つまり、処理要求条件は、例えば、処理内容情報に関する条件である処理内容条件や、処理程度情報に関する条件である処理程度条件、パラメータに関する条件であるパラメータ条件、処理時間情報に関する条件である処理時間条件、処理結果品質情報に関する条件である処理結果品質条件、動作時間情報に関する条件である動作時間条件、動作結果品質情報に関する条件である動作結果品質条件などである。処理内容条件は、例えば、「処理内容=高解像度化」や、「処理内容=高解像度化&ノイズ除去」などである。また、処理程度条件は、例えば、「程度=強」や、「程度=弱&強」などである。また、パラメータ条件は、例えば、「パラメータ=100」や、「param=0.8」などである。また、処理時間条件および動作時間条件は、例えば、「時間<0.5μsec」や、「0.1≦時間<0.5μsec」などである。また、処理結果品質条件および動作結果品質条件は、例えば、「品質≧80」や、「60≦品質<80」などである。
【0035】
また、処理要求条件は、例えば、「処理要求情報または動作結果情報が、所定の情報を有すること」であってもよい。「所定の情報」とは、通常、上記の各種情報である。つまり、この場合の処理要求条件は、例えば、「処理要求情報が、処理内容情報を有すること」や、「処理要求情報が、処理内容情報「高解像度化」を有すること」などである。
【0036】
また、動作情報は、通常、後述の動作部14が行う動作を指示するための情報である。動作情報は、例えば、プログラムや、回路情報などである。プログラムは、通常、いわゆるオブジェクトコード(いわゆるバイナリ)であるが、例えば、アセンブリ言語で記述されたものなどであってもよい。つまり、プログラムは、CPUやMPUなどのプロセッサが解釈し、解釈どおりに動作を行う(所定の処理を行う)ことができるものであれば、書式や形式などは問わない。また、回路情報とは、通常、いわゆるネットリストや、回路デザイン、コンフィギュレーション情報と呼ばれるものである。つまり、回路情報は、ASICやFPGAなどの集積回路が解釈し、解釈どおりに動作を行う(内部の回路構成を定義・変更する)ことができるものであれば、書式や形式などは問わない。
【0037】
また、動作情報は、通常、2以上の命令の集合であるが、1つの命令であってもよい。また、当該命令は、指示であってもよい。また、動作情報は、2以上の動作情報の集合であってもよい。また、動作情報は、例えば、変数や、置換することを示す記号などを有していてもよい。また、動作情報は、動作情報を識別する識別子であってもよい。また、動作情報は、通常、機械語である。
【0038】
また、動作管理情報は、動作情報の属性を示す動作属性情報を有していてもよい。動作属性情報は、例えば、動作情報に従った動作により行われる処理の内容を示す処理内容情報や、動作情報の優先順位を示す優先順位情報、動作情報に従った動作に要する時間を示す動作時間情報、動作情報に従い動作を行うことにより構成される回路の規模を示す回路規模情報、動作情報のサイズ(容量)を示すサイズ情報、当該動作により得られた結果の品質を示す動作結果品質情報、動作情報を解釈することができる回路を識別する回路識別子などである。
【0039】
優先順位情報は、例えば、相対的な優先順位を示すものであってもよいし、絶対的な優先順位を示すものであってもよい。優先順位情報は、例えば、「高」や、「低」、「1位」、「100」などである。また、回路規模情報は、例えば、回路数を示すものであってもよいし、回路の大きさを示すものであってもよい。回路規模情報は、例えば、「10Mゲート」や、「大」、「小」などである。また、回路識別子は、例えば、「CPU_A」や、「MPU_X」などである。なお、動作管理情報が有する動作情報などの各種情報の書式や形式などは、問わない。
【0040】
受付部12は、処理要求情報を受け付ける。受け付けとは、有線もしくは無線の通信回線を介して送信された情報の受信、光ディスクや磁気ディスク、半導体メモリなどの記録媒体からの情報の取得や読み出しなどを含む概念である。また、受付部12が受け付ける処理要求情報は、通常、処理内容情報や、処理程度情報などを、1以上有する。また、受付部12は、処理要求情報が所定の条件(以下、処理要求判断条件)を満たすか否かを判断し、満たすと判断した処理要求情報のみを受け付けてもよい。当該処理要求判断条件は、通常、処理要求条件と同様である。また、この場合、処理要求判断条件は、通常、受付部12が保持しているが、所定の記憶領域や任意の記憶領域などに格納されていてもよい。また、受付部12は、処理要求条件を受け付けてもよい。この場合、受付部12は、当該処理要求条件を、処理要求情報として受け付けてもよい。
【0041】
取得部13は、受付部12が受け付けた処理要求情報が合致する処理要求条件に対応する1以上の動作情報を、格納部11から取得する。「処理要求情報が合致する」とは、当該処理要求情報が処理要求条件を満たすことである。また、取得部13は、通常、後述の各手段により、1以上の動作情報を取得する。従って、後述の各手段が取得した1以上の動作情報が、取得部13が取得した動作情報となる。
【0042】
また、例えば、受付部12が処理要求条件を受け付けた場合、取得部13は、当該処理要求条件に合致する動作属性情報に対応する1以上の動作情報を、格納部11から取得してもよい。「処理要求条件に合致する」とは、動作属性情報が処理要求条件を満たすことである。つまり、取得部13は、受付部12が受け付けた処理要求情報または処理要求条件に対応する動作情報を、格納部11から取得できればよく、その取得の方法や手順などは、問わない。
【0043】
格納手段131には、選択条件が格納される。選択条件とは、2以上の動作情報から1以上の動作情報を取得するための条件である。また、選択条件は、通常、動作情報に関する条件であるが、具体的には、動作情報に対応付いている動作属性情報に関する条件である。選択条件は、例えば、優先順位に関する優先順位条件や、動作時間に関する条件である動作時間条件、回路規模に関する条件である回路規模条件などである。また、格納手段131には、通常、1または2以上の選択条件が格納される。
【0044】
取得手段132は、受付部12が受け付けた処理要求情報が合致する処理要求条件に対応する1または2以上の動作情報を取得する。この場合、取得手段132は、例えば、受付部12が受け付けた処理要求情報を取得し、当該処理要求情報が、格納部11に格納されている1以上の動作管理情報が有する処理要求条件のいずれに合致するか否かを判断する。そして、取得手段132は、合致すると判断した1または2以上の処理要求条件の各々に対応する動作情報を取得する。
【0045】
また、取得手段132は、動作情報の取得の際に、動作結果情報を用いてもよい。この場合、取得手段132は、通常、受付部12が受け付けた処理要求情報、または後述の動作部14が取得した動作結果情報が、格納部11に格納されている1以上の動作管理情報が有する処理要求条件のいずれに合致するか否かを判断する。そして、取得手段132は、合致すると判断した1または2以上の処理要求条件の各々に対応する動作情報を取得する。
【0046】
例えば、処理要求情報が「高解像度化」であり、処理要求条件が「処理要求情報⊃処理内容情報」であるとする。当該処理要求情報は、高解像度化の処理を行うことを要求することを意味する。また、当該処理要求条件は、処理要求情報が処理内容情報を有することを意味する。この様な場合、取得手段132は、当該処理要求情報が当該処理要求条件に合致すると判断し、当該処理要求条件に対応する動作情報を、格納部11から取得する。
【0047】
また、例えば、処理要求情報が「高解像度化」であり、処理要求条件が「処理要求情報⊃処理時間情報」であるとする。当該処理要求条件は、処理要求情報が処理時間情報を有することを意味する。この様な場合、取得手段132は、当該処理要求情報が当該処理要求条件に合致しないと判断する。
【0048】
また、例えば、処理要求情報が「ノイズ除去,弱」であり、処理要求条件が「処理内容=ノイズ除去&程度=弱」であるとする。当該処理要求情報は、程度が「弱」であるノイズ除去の処理を行うことを要求することを意味する。また、当該処理要求条件は、処理要求情報が有する処理内容情報が「ノイズ除去」であり、かつ、「ノイズ除去」の程度が「弱」であることを意味する。この様な場合、取得手段132は、当該処理要求情報が当該処理要求条件に合致すると判断し、当該処理要求条件に対応する動作情報を、格納部11から取得する。
【0049】
また、例えば、処理要求情報が「高音質化,80%」であり、動作結果情報が「0.5μsec」であり、処理要求条件が「処理内容=高音質化&向上率≧80%&処理時間≦0.5μsec」であるとする。当該処理要求情報は、向上率「80%」で高音質化の処理を行うことを要求することを意味する。また、当該動作結果情報は、動作情報に従い動作した結果、動作に要した時間が「0.5μsec」であったことを意味する。また、当該処理要求条件は、処理要求情報が有する処理内容情報が「高音質化」であり、かつ、処理要求情報が有する向上率(パラメータ)が「80%」以上であり、処理時間(動作時間)が「0.5μsec」以下であることを意味する。この様な場合、取得手段132は、当該処理要求情報および動作結果情報が当該処理要求条件に合致すると判断し、当該処理要求条件に対応する動作情報を、格納部11から取得する。
【0050】
また、受付部12が処理要求条件を受け付けた場合、取得手段132は、通常、当該処理要求条件に合致する動作属性情報に対応する1または2以上の動作情報を取得する。この場合、取得手段132は、例えば、受付部12が受け付けた処理要求条件を取得し、当該処理要求条件に、格納部11に格納されている1以上の動作管理情報が有する動作属性情報のいずれが合致するか否かを判断する。そして、取得手段132は、合致すると判断した1または2以上の動作属性情報の各々に対応する動作情報を取得する。
【0051】
例えば、処理要求条件が「処理内容=高解像度化」であり、動作管理情報が有する動作属性情報が「処理内容:高画質化」であるとする。当該処理要求条件は、処理内容が「高画質化」であることを意味する。当該動作属性情報の意味も同様である。この様な場合、取得手段132は、当該処理要求条件に当該動作属性情報が合致すると判断し、当該動作属性情報に対応する動作情報を、格納部11から取得する。
【0052】
また、例えば、処理要求条件が「(処理時間≦0.1μsec)&(品質=高)」であり、動作管理情報が有する動作属性情報が「処理時間:0.05μsec」と「品質:高」であるとする。当該処理要求条件は、処理時間が「0.1μsec以下」であり、かつ、品質が「高」であることを意味する。また、当該動作属性情報は、処理時間が「0.05μsec」であり、かつ、品質が「高」であることを意味する。この様な場合、取得手段132は、当該処理要求条件に当該動作属性情報が合致すると判断し、当該動作属性情報に対応する動作情報を、格納部11から取得する。
【0053】
選択手段133は、取得手段132が2以上の動作情報を取得した場合に、当該2以上の動作情報のうちのいずれか1以上を選択し、取得する。この場合、選択手段133は、通常、取得手段132が取得した2以上の動作情報が、格納手段131に格納されている選択条件に合致するか否かを判断する。そして、選択手段133は、合致すると判断した1以上の動作情報を、当該2以上の動作情報から取得する。
【0054】
選択条件は、例えば、優先順位に関する優先順位条件や、動作時間に関する条件である動作時間条件、回路規模に関する条件である回路規模条件などである。つまり、選択手段133は、取得手段132が取得した2以上の動作情報に対応付いている優先順位情報などの動作属性情報が、選択条件に合致するか否かを判断する。
【0055】
また、選択手段133は、動作情報の取得の際に、動作結果情報を用いてもよい。当該動作結果情報は、通常、取得手段132が取得した2以上の動作情報の各々に対応する動作結果情報である。「動作情報に対応する動作結果情報」とは、後述の動作部14が、当該動作情報に従い動作した結果を示す動作結果情報である。つまり、この場合、選択手段133は、通常、取得手段132が取得した2以上の動作情報の各々対応する動作結果情報を、後述の動作部14から取得する。そして、選択手段133は、当該2以上の動作結果情報のいずれが選択条件に合致するか否かを判断する。そして、選択手段133は、合致すると判断した動作結果情報に対応する1以上の動作情報を、取得手段132が取得した2以上の動作情報から取得する。
【0056】
なお、選択手段133は、通常、取得手段132が取得した2以上の動作情報から、1つの動作情報を取得することが好適である。また、動作情報に対応付いている動作属性情報や、動作結果情報が、選択条件に合致するか否かの判断の方法や手順などは、取得手段132による処理要求情報が処理要求条件に合致するか否かの判断の方法や手順などと同様であるので、説明を省略する。
【0057】
結合手段134は、取得手段132が2以上の動作情報を取得した場合に、当該2以上の動作情報を結合し、1つの動作情報を生成する。「結合する」とは、通常、連結することであり、一の動作情報の後ろに、他の動作情報を繋げることである。また、「生成する」とは、生成した動作情報を取得することである。
【0058】
また、2以上の動作情報の結合の順序は問わない。例えば、結合手段134は、取得手段132が当該2以上の動作情報を取得した順序や、当該2以上の各動作情報に対応する動作属性情報が示す順序に応じて、2以上の動作情報を結合してもよい。「動作属性情報が示す順序」とは、例えば、優先順位情報が示す優先順位の昇順や降順、動作時間情報が示す動作時間の昇順や降順、品質情報が示す品質の昇順や降順などである。
【0059】
また、結合手段134は、選択手段133が2以上の動作情報を取得した場合に、当該2以上の動作情報を結合し、1つの動作情報を生成してもよい。
【0060】
変更手段135は、取得手段132が取得した動作情報を、受付部12が受け付けた処理要求情報に応じて変更し、変更後の動作情報を取得する。「処理要求情報に応じて」とは、通常、処理要求情報が有する各種情報に従うことである。また、「変更」とは、例えば、置換や、削除、順序の入れ替えなどである。
【0061】
例えば、処理要求情報がパラメータを有する場合、変更手段135は、例えば、動作情報が有する所定の情報と、当該パラメータとを置換する。当該「所定の情報」とは、例えば、変数であるが、置換することを示す記号などであってもよい。
【0062】
例えば、処理要求情報がパラメータ「rate=80%」を有しており、動作情報が変数「$rate」を有しているとする。この様な場合、変更手段135は、当該変数「$rate」を、当該パラメータ「80%」で置換する。
【0063】
また、例えば、処理要求情報が処理時間情報を有する場合、変更手段135は、例えば、動作情報に従い動作を行った際の動作時間が、当該処理時間情報が示す処理時間以下になるように、動作情報が有する所定の情報を削除する。また、例えば、処理要求情報が処理時間条件を有する場合、変更手段135は、例えば、動作情報に従い動作を行った際の動作時間が、当該処理時間条件を満たすように、動作情報が有する所定の情報を削除する。これらの場合、変更手段135は、例えば、動作情報に対応する動作時間情報の合計が、当該処理時間情報以下になる、または当該処理時間条件を満たすまで、対応する動作時間情報が小さい順に、動作情報を削除する。また、この場合、変更手段135は、例えば、動作情報に対応する動作情報の合計が、当該処理時間情報以下になる、または当該処理時間条件を満たすまで、対応する優先順位情報が示す優先順位が低い順に、動作情報を削除してもよい。また、例えば、動作情報が有する1以上の各命令に優先順位情報が対応付いている場合、変更手段135は、優先順位情報が示す優先順位が低い順に、動作情報が有する命令を削除してもよい。
【0064】
例えば、処理要求情報が処理時間情報「1.0μsec」、または処理時間条件「時間≦1.0μsec」を有しているとする。また、取得手段132が4つの動作情報(以下、動作情報A、動作情報B、動作情報C、動作情報Dとする)を取得し、当該動作情報の各々に動作時間情報「0.5μsec」、「0.2μsec」、「0.1μsec」、「0.3μsec」が対応付いているとする。この様な場合、変更手段135は、まず、これら4つの動作時間情報の合計「1.1μsec」を算出する。そして、変更手段135は、算出した動作時間情報の合計が、動作時間情報以下でないと判断し、まず、動作時間情報が最小である動作情報Cを削除する。そして、この結果、残った3つの動作時間情報の合計が「1.0μsec」となり、処理時間情報以下となるため、変更手段135は、削除を終了する。
【0065】
また、例えば、処理要求情報が処理の順序を示す処理順序情報を有する場合、変更手段135は、例えば、当該処理順序情報が示す順序で処理が行われるように、動作情報の順序を入れ替える。また、例えば、処理要求情報が処理の順序に関する条件である処理順序条件を有する場合、変更手段135は、例えば、当該処理順序条件を満たすように、動作情報の順序を入れ替える。
【0066】
例えば、処理要求情報が、処理順序情報「高→低」、または処理順序条件「順序=高→低」を有しているとする。当該処理順序情報、および当該処理順序条件は、優先順位情報が示す優先順位が高いものから順に、動作情報に従った動作を行うことを意味する。また、取得手段132が3つの動作情報(以下、動作情報A、動作情報B、動作情報Cとする)を順に取得し、当該動作情報の各々に優先順位情報「1」、「3」、「2」が対応付いているとする。この様な場合、変更手段135は、当該優先順位情報が示す優先順位の順になるように、動作情報A、動作情報C、動作情報Bの順に順序を入れ替える。
【0067】
また、例えば、処理要求情報が、処理順序情報「動作情報C、動作情報B、動作情報A」を有しているとする。当該処理順序情報は、「動作情報C」、「動作情報B」、「動作情報A」の順に、動作情報に従った動作を行うことを意味する。また、取得手段132が3つの動作情報(以下、動作情報A、動作情報B、動作情報Cとする)を順に取得したとする。この様な場合、変更手段135は、当該優先順位情報が示す順序になるように、動作情報C、動作情報B、動作情報Aの順に順序を入れ替える。
【0068】
また、変更手段135は、選択手段133が取得した動作情報、または結合手段134が取得した動作情報を変更してもよい。
【0069】
なお、取得部13は、上記の各手段を用いて、1または2以上の動作情報が取得できればよく、例えば、取得した2以上の動作情報からの1以上の動作情報の選択や、2以上の動作情報の結合、動作情報の変更などの処理の手順や、当該処理の有無などは、問わない。
【0070】
動作部14は、取得部13が取得した動作情報に従い動作を行う。例えば、動作情報がプログラムである場合、動作部14は、当該プログラムが有する命令を解釈し、当該命令に従った処理を行う。また、動作情報が回路情報である場合、動作部14は、当該回路情報が有する命令を解釈し、当該命令に従い内部の回路構成の定義や、内部の回路構成の変更などを行う。また、動作部14は、通常、取得部13が取得した動作情報に従い動作を行った後、当該行った動作の結果を示す動作結果情報を取得する。なお、動作部14が動作情報に従い動作を行う方法や手順などは、公知であるので、詳細な説明を省略する。
【0071】
また、プログラマブル回路1が備える各部は、通常、ASICやMPUなどの集積回路で実現され得る。また、プログラマブル回路1が備える各部がMPUなどで実現され得る場合、処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。
【0072】
また、格納部11、格納手段131は、不揮発性の記録媒体で実現されることが好適であるが、揮発性の記録媒体で実現されてもよい。
【0073】
また、受付部12は、例えば、無線または有線の通信手段や、放送を受信する手段などで実現されてもよい。
【0074】
次に、プログラマブル回路1の全体動作について、
図2のフローチャートを用いて説明する。なお、所定の情報におけるi番目の情報は、「情報[i]」と記載するものとする。また、
図2のフローチャートにおいて、格納部11には、m個の動作管理情報が格納されているものとする。
【0075】
(ステップS201)取得手段132は、受付部12が処理要求情報を受け付けたか否かを判断する。受け付けた場合は、ステップS202に進み、そうでない場合は、ステップS201に戻る。
【0076】
(ステップS202)取得手段132は、カウンタiに1をセットする。
【0077】
(ステップS203)取得手段132は、動作部14が動作結果情報を取得済みであるか否かを判断する。取得済みである場合は、ステップS204に進み、そうでない場合は、ステップS205に進む。
【0078】
(ステップS204)取得手段132は、ステップS201で受け付けた処理要求情報、および所定の記憶領域に格納されている動作結果情報が、格納部11に格納されている動作管理情報[i]が有する処理要求条件[i]に合致するか否かを判断する。合致する場合は、ステップS206に進み、そうでない場合は、ステップS207に進む。
【0079】
(ステップS205)取得手段132は、ステップS201で受け付けた処理要求情報が、格納部11に格納されている動作管理情報[i]が有する処理要求条件[i]に合致するか否かを判断する。合致する場合は、ステップS206に進み、そうでない場合は、ステップS207に進む。
【0080】
(ステップS206)取得手段132は、ステップS204またはステップS205で合致すると判断した処理要求条件[i]に対応する動作情報[i]を、格納部11から取得する。
【0081】
(ステップS207)取得手段132は、iがmであるか否かを判断する。mである場合は、ステップS209に進み、そうでない場合は、ステップS208に進む。
【0082】
(ステップS208)取得手段132は、iを1インクリメントし、ステップS203に戻る。
【0083】
(ステップS209)選択手段133は、ステップS206で取得した動作情報が2以上であるか否かを判断する。ここで、ステップS206で取得した動作情報は、n個であるものとする。そして、2以上である場合は、ステップS210に進み、そうでない場合は、ステップS217に進む。
【0084】
(ステップS210)選択手段133は、カウンタiに1をセットする。
【0085】
(ステップS211)選択手段133は、ステップS206で取得した動作情報[i]が、格納手段131に格納されている選択条件に合致するか否かを判断する。合致する場合は、ステップS212に進み、そうでない場合は、ステップS213に進む。
【0086】
(ステップS212)選択手段133は、動作情報[i]を取得する。
【0087】
(ステップS213)選択手段133は、iがnであるか否かを判断する。nである場合は、ステップS215に進み、そうでない場合は、ステップS214に進む。
【0088】
(ステップS214)選択手段133は、iを1インクリメントし、ステップS211に戻る。
【0089】
(ステップS215)結合手段134は、ステップS212で取得した動作情報が2以上であるか否かを判断する。2以上である場合は、ステップS216に進み、そうでない場合は、ステップS217に進む。
【0090】
(ステップS216)結合手段134は、ステップS212で取得した動作情報を結合し、1つの動作情報を取得する。
【0091】
(ステップS217)変更手段135は、ステップS206、またはステップS212、ステップS216で取得した動作情報を、ステップS201で受け付けた処理要求情報に応じて変更する。この処理の詳細は、
図3のフローチャートを用いて説明する。
【0092】
(ステップS218)動作部14は、ステップS217で取得した動作情報に従い動作を行う。
【0093】
なお、
図2のフローチャートにおいて、電源オフや処理終了の割り込みにより処理を終了してもよい。
【0094】
図3は、
図2のフローチャートのステップS217の処理要求情報に応じた変更処理を示すフローチャートである。
【0095】
(ステップS301)変更手段135は、ステップS201で受け付けた処理要求情報が、パラメータを有するか否かを判断する。有する場合は、ステップS302に進み、そうでない場合は、ステップS303に進む。
【0096】
(ステップS302)変更手段135は、変更の対象となる動作情報が有する記号を、処理要求情報が有するパラメータで置換する。当該記号とは、パラメータと置換することを示す記号(例えば、変数など)である。
【0097】
(ステップS303)変更手段135は、ステップS201で受け付けた処理要求情報が、処理時間情報を有するか否かを判断する。有する場合は、ステップS304に進み、そうでない場合は、ステップS305に進む。
【0098】
(ステップS304)変更手段135は、変更の対象となる動作情報に対応する動作時間情報の合計が、処理要求情報が有する処理時間情報以下になるように、動作情報を削除する。
【0099】
(ステップS305)変更手段135は、ステップS201で受け付けた処理要求情報が、処理順序情報を有するか否かを判断する。有する場合は、ステップS306に進み、そうでない場合は、上位処理にリターンする。
【0100】
(ステップS306)変更手段135は、変更の対象となる動作情報の順序が、処理要求情報が有する処理順序情報が示す順序に合うように、動作情報の順序を入れ替える。そして、上位処理にリターンする。
【0101】
なお、
図3のフローチャートにおいて、ステップS301、ステップS303、ステップS305の判断の順序は、問わない。
【0102】
(具体例)
次に、プログラマブル回路1の動作の具体例について説明する。なお、本具体例において、格納部11には、
図4に示す動作管理情報が格納されているものとする。当該動作管理情報は、レコードを一意に特定するためのID(項目名:ID)と、処理要求条件(項目名:条件)と、動作情報(項目名:動作情報)と、優先順位情報(項目名:優先順位)と、動作時間情報(項目名:時間)と、回路規模情報(項目名:規模)と、品質情報(項目名:品質)と、回路識別子(項目名:識別子)とを有する。また、
図4において、「[μsec]」や、「[gate]」は、それぞれ、時間情報、回路規模情報の単位である。また、
図4において、動作情報は、動作情報を識別する識別子である。これらの識別子により識別される動作情報は、例えば、
図5や、
図6などであり、通常、格納部11に格納されている。
図5は、プログラムであり、
図6は、回路情報である。また、
図4において、「ID=011」から「ID=015」までの動作情報は、
図5の様なプログラムであり、「ID=031」から「ID=035」までの動作情報は、
図6の様な回路情報であるものとする。
【0103】
(例1)
本例において、動作部14はCPUであり、当該CPUを識別する回路識別子「CPU_A」を保持しているものとする。
【0104】
まず、例えば、受付部12が、処理要求情報「処理内容=(高解像度化,ノイズ除去)」を受け付けたとする。当該処理要求情報は、高解像度化の処理と、ノイズ除去の処理とを行うための動作を要求することを意味する。すると、取得手段132は、当該処理要求情報が、
図4の「ID=011」から「ID=014」までの処理要求条件に合致すると判断する。そして、取得手段132は、
図4の「ID=011」から「ID=014」までの動作情報を取得する。このとき、取得手段132は、通常、当該動作情報に対応付いている優先順位情報などと共に取得する。
【0105】
次に、選択手段133は、
図4の「ID=011」から「ID=014」までの4つの動作情報から、選択条件に合致する動作情報を取得する。ここで、選択条件が「処理時間≦0.3μsec」であるとする。すると、選択手段133は、
図4の「ID=011」から「ID=014」までの動作情報に対応付いている動作時間情報を用いて、選択条件に合致するか否かを判断し、
図4の「ID=011」は、選択条件に合致しないと判断し、「ID=012」から「ID=014」までは、選択条件に合致すると判断する。ここで、「ID=013」と「ID=014」の動作情報は、処理要求条件より、同一の処理を行うための動作情報であることがわかる。しかしながら、動作時間情報は、「ID=014」の方が小さい。従って、選択手段133は、
図4の「ID=012」と「ID=014」の動作情報を取得する。
【0106】
次に、結合手段134は、
図4の「ID=012」と「ID=014」の動作情報を結合し、1つの動作情報を生成する。当該動作情報は、例えば、
図5の様なプログラムである。そして、動作部14は、結合手段134が作成した
図5の様なプログラム中の命令を解釈し、当該命令どおりの動作を行う。
【0107】
また、例えば、受付部12が、処理要求情報「処理内容=(高解像度化,ノイズ除去)&処理時間≦0.8μsec」を受け付けたとする。当該処理要求情報は、高解像度化の処理と、ノイズ除去の処理とを、0.8μsec以下で行うための動作を行うことを要求することを意味する。すると、取得手段132は、当該処理要求情報が、
図4の「ID=011」から「ID=014」までの処理要求条件に合致すると判断する。そして、取得手段132は、
図4の「ID=011」から「ID=014」までの動作情報を取得する。
【0108】
次に、変更手段135は、受付部12が受け付けた処理要求情報が処理時間情報(以下、適宜、処理時間条件)を有しているので、取得手段132が取得した動作情報に対応する動作時間情報の合計が、当該処理時間条件に合致するように、動作情報を削除する。
【0109】
まず、
図4の「ID=011」から「ID=014」までの動作時間情報の合計は、「1.1」である。従って、変更手段135は、当該4つの動作情報のうちの1つを削除すると判断する。ここで、当該4つの動作情報のうち、優先順位が一番低いのは、「ID=014」の動作情報である。従って、変更手段135は、取得手段132が取得した動作情報から、「ID=014」の動作情報を削除する。この結果、残った3つの動作情報に対応する動作時間情報の合計は、「1.0」となる。
【0110】
次に、変更手段135は、動作情報の合計が処理時間条件に合致しないと判断し、当該3つの動作情報のうちの1つを削除すると判断する。ここで、当該3つの動作情報のうち、優先順位が一番低いのは、「ID=012」の動作情報である。従って、変更手段135は、残った3つの動作情報から、「ID=012」の動作情報を削除する。この結果、残った2つの動作情報に対応する動作時間情報の合計は、「0.7」となる。従って、変更手段135は、動作情報の削除を終了する。
【0111】
次に、結合手段134は、
図4の「ID=011」と「ID=013」の動作情報を結合し、1つの動作情報を生成する。当該動作情報は、例えば、
図5の様なプログラムである。そして、動作部14は、結合手段134が作成した
図5の様なプログラム中の命令を解釈し、当該命令どおりの動作を行う。
【0112】
また、例えば、受付部12が、処理要求情報「(高解像度化,強,90%)&(ノイズ除去,強,80%)」を受け付けたとする。当該処理要求情報は、程度が「強」であり、パラメータ「90%」を用いる高解像度化の処理と、程度が「強」であり、パラメータ「80%」を用いるノイズ除去の処理とを行うための動作を要求することを意味する。すると、取得手段132は、当該処理要求情報の各々が、
図4の「ID=011」の処理要求条件と、
図4の「ID=013」の処理要求条件に合致すると判断する。そして、取得手段132は、
図4の「ID=011」と「ID=013」の動作情報を取得する。
【0113】
次に、変更手段135は、
図4の「ID=011」の動作情報に含まれる変数を、当該動作情報を取得する際に用いた処理要求情報が有するパラメータ「90%」で置換する。このとき、変更手段135は、例えば、変数「$rate」と、パラメータ「90%」とを置換する。また、変更手段135は、上記と同様に、
図4の「ID=013」の動作情報に含まれる変数を、当該動作情報を取得する際に用いた処理要求情報が有するパラメータ「80%」で置換する。
【0114】
次に、結合手段134は、パラメータでの置換後の、
図4の「ID=011」と「ID=013」の動作情報を結合し、1つの動作情報を生成する。当該動作情報は、例えば、
図5の様なプログラムである。そして、動作部14は、結合手段134が作成した
図5の様なプログラム中の命令を解釈し、当該命令どおりの動作を行う。
【0115】
また、例えば、受付部12が、処理要求情報「高解像度化」を受け付けたとする。当該処理要求情報は、高解像度化の処理を行うための動作を要求することを意味する。すると、取得手段132は、当該処理要求情報が、
図4の「ID=011」と「ID=012」の処理要求条件に合致すると判断する。そして、取得手段132は、
図4の「ID=011」と「ID=012」の動作情報を取得する。
【0116】
次に、動作部14は、取得手段132が取得した
図4の「ID=011」と「ID=012」の動作情報の各々に従い動作を行う。そして、動作部14は、当該動作の結果を示す動作結果情報を、所定の記憶領域に蓄積する。ここで、当該動作結果情報が、高解像度化の処理を行った画像の品質を示す画像品質情報であるとする。そして、
図4の「ID=011」に従い行った動作の結果を示す画像品質情報が、最高を「100」としたときの「95」であり、
図4の「ID=012」に従い行った動作の結果を示す画像品質情報が、最高を「100」としたときの「85」であるとする。
【0117】
次に、選択手段133は、
図4の「ID=011」と「ID=012」の動作情報の各々に対応する画像品質情報「95」と「85」を比較し、「ID=011」に対応する画像品質情報の方が高いと判断する。そして、選択手段133は、取得手段132が取得した
図4の「ID=011」と「ID=012」の動作情報から、「ID=011」の動作情報を取得する。
【0118】
次に、動作部14は、選択手段133が取得した
図4の「ID=011」の動作情報に従い動作を行う。ここで、動作部14は、既に、
図4の「ID=011」の動作情報に従い動作を行っている。従って、動作部14は、
図4の「ID=011」の動作情報に従い既に行った動作を、自身が行った動作として採用する。
【0119】
(例2)
本例において、動作部14はFPGAであり、当該FPGAを識別する回路識別子「FPGA_X」を保持しているものとする。
【0120】
まず、例えば、受付部12が、処理要求情報「高解像度化」を受け付けたとする。すると、取得手段132は、当該処理要求情報が、
図4の「ID=031」と「ID=034」の処理要求条件に合致すると判断する。また、取得手段132は、当該2つの動作管理情報のうち、動作部14が保持する回路識別子「FPGA_X」が、「ID=031」の回路識別子に合致すると判断する。そして、取得手段132は、
図4の「ID=031」の動作情報を取得する。
【0121】
次に、動作部14は、取得手段132が取得した動作情報に従い動作を行う。当該動作情報は、
図6の様な回路情報である。従って、動作部14は、
図6の様な回路情報中の命令を解釈し、当該命令どおりに自身の内部回路の構成を定義する。
【0122】
なお、本例において、取得手段132が2以上の動作情報を取得する例や、当該2以上の動作情報を結合する例などは、例1と同様であるので、説明を省略する。
【0123】
(例3)
図7は、プログラマブル回路1の回路構成例を示す図である。
図7において、プログラマブル回路1は、プログラムジェネレート回路22、MPU_A26、MPU_B27、専用論理回路_C28を備える。当該2つのMPUは、命令セットを含めたプログラムコードの形式が異なっていてもよい。また、
図7において、21は、処理要求情報の例(以下、処理要求情報21)である。当該処理要求情報21は、程度が「高」である高解像度化の処理と、程度が「弱」であるノイズ除去の処理を行うための動作を要求することを意味する。また、プログラムコードA23、プログラムコードB24、プログラムコードC25は、動作情報である。また、29は、プログラムコードAの例である。また、プログラムジェネレート回路22は、受付部12と、取得部13に相当する。また、MPU_A26、MPU_B27、専用論理回路_C28の各々は、動作部14に相当する。また、プログラムジェネレート回路22は、通常、格納部11に相当するメモリ(図示せず)を備える。
【0124】
プログラムジェネレート回路22には、処理要求情報21の様な処理要求情報が入力される。そして、プログラムジェネレート回路22は、入力された処理要求情報が合致する処理要求条件に対応する動作情報を、自身が備えるメモリから取得する。
図7において、プログラムジェネレート回路22は、処理要求情報21が合致する処理要求条件に対応する動作情報であり、MPU_A26、MPU_B27、専用論理回路_C28の各々の回路(当該回路を識別する回路識別子)に対応する合計3つの動作情報を取得する。そして、プログラムジェネレート回路22は、MPU_A26に対応する動作情報として、プログラムコードA23を取得し、MPU_B27に対応する動作情報として、プログラムコードB24を取得し、専用論理回路_C28に対応する動作情報として、プログラムコードC25を取得する。そして、プログラムジェネレート回路22は、取得した3つの動作情報について、プログラムコードA23はMPU_A26に送信し、プログラムコードB24はMPU_B27に送信し、プログラムコードC25は専用論理回路_C28に送信する。
【0125】
MPU_A26、MPU_B27、専用論理回路_C28の各々は、プログラムジェネレート回路22から動作情報を受信すると、受信した動作情報に従い動作を行う。
図7において、MPU_A26、およびMPU_B27は、程度が「高」である高解像度化の処理と、程度が「弱」であるノイズ除去の処理を行う。また、専用論理回路_C28は、程度が「高」である高解像度化の処理と、程度が「弱」であるノイズ除去の処理を行うための内部回路の構成を定義する。
【0126】
(例4)
図8は、格納部11、受付部12、取得部13の回路構成例であるプログラムジェネレート回路3を示す図である。プログラムジェネレート回路3は、テンプレートテーブル34、2つのテンプレート選択回路35、2つのテンプレート置換回路36、2つのテンプレート削除回路37、テンプレート結合回路38を備える。また、
図7において、処理方式31、処理パラメータ32、処理時間33は、動作情報である。また、テンプレートテーブル34は、格納部11に相当する。また、テンプレート選択回路35は、受付部12、格納手段131、取得手段132、選択手段133に相当する。また、テンプレート置換回路36、テンプレート削除回路37は、受付部12、変更手段135に相当する。また、テンプレート結合回路38は、結合手段134に相当する。
【0127】
テンプレート選択回路35には、処理方式31が入力される。当該処理方式は、処理内容情報に相当する。そして、テンプレート選択回路35は、テンプレートテーブル34に格納されている1以上の動作情報から、入力された処理方式31に対応する動作情報を取得する。このとき、
図8において、テンプレート選択回路35の各々は、通常、1つの動作情報を取得する。そして、テンプレート選択回路35は、取得した動作情報を、テンプレート置換回路36に送信する。
【0128】
テンプレート置換回路36には、処理パラメータ32と、テンプレート選択回路35が取得した動作情報とが入力される。そして、テンプレート置換回路36は、入力された動作情報中の処理パラメータに相当する箇所を、入力された処理パラメータ32で置換する。そして、テンプレート置換回路36は、処理パラメータ32での置換後の動作情報を、テンプレート削除回路37に送信する。
【0129】
テンプレート削除回路37には、処理時間33と、テンプレート置換回路36が取得した動作情報とが入力される。そして、テンプレート削除回路37は、入力された処理時間33が示す時間内に処理が完了するように、入力された動作情報から、優先順位の低い命令を、順に削除していく。このとき、入力された動作情報が有する各命令には、通常、優先順位情報と、処理時間情報とが対応付いている。また、当該処理時間情報は、実際の処理時間ではなく、削除するか否かを判断するための目安となる処理時間であってもよい。そして、テンプレート削除回路37は、命令を削除するたびに、処理時間情報の合計を算出し、当該合計が、入力された処理時間33以下であるか否かを判断する。そして、テンプレート削除回路37は、処理時間情報の合計が、入力された処理時間33以下になれば、削除を終了する。そして、テンプレート削除回路37は、命令を削除後の動作情報を、テンプレート結合回路38に送信する。
【0130】
テンプレート結合回路38には、テンプレート削除回路37の各々が取得した2つの動作情報が入力される。そして、テンプレート結合回路38は、入力された2つの動作情報を結合し、当該動作情報を、例えば、動作部14に相当する回路に送信する。
【0131】
以上、本実施の形態によるプログラマブル回路1によれば、受け取った処理要求に対応する動作指示をリアルタイムに選択し、選択した動作指示に従い動作を行うことができる。これにより、例えば、ユーザは、動作指示であるオブジェクトコードなどを事前に作成することなく、処理要求のみを与えるだけで、プログラマブル回路に所望の動作を行わせることができる。
【0132】
なお、本実施の形態において、プログラマブル回路1は、2以上の動作部14を備えていてもよい。この場合、2以上の各動作部14は、通常、回路識別子を保持している。また、この場合、取得部13は、通常、当該回路識別子の各々に対応する2以上の動作情報を取得する。例えば、プログラマブル回路1が2つの動作部14を備えており、当該動作部14の各々が、回路識別子「回路A」、「回路B」を保持しているとする。この様な場合、取得部13は、通常、受付部12が受け付けた処理要求情報が合致する処理要求条件に対応する動作情報であり、回路識別子「回路A」、「回路B」の各々が対応付いた2以上の動作情報を取得する。
【0133】
また、本実施の形態において、格納部11に格納されている動作管理情報は、通常、変更が可能である。これにより、動作管理情報の追加や、動作管理情報の削除、動作管理情報の修正(更新)などを行うことができる。
【0134】
また、本実施の形態において、取得部13は、受付部12が一の処理要求情報を受け付けるたびに、当該一の処理要求情報に対応する動作情報を、格納部11から取得する。このとき、取得部13は、通常、当該一の処理要求情報に対応する1または2以上の動作情報を取得する。
【0135】
また、上記各実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよいし、あるいは、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
【0136】
また、上記各実施の形態において、各構成要素は専用のハードウェアにより構成されてもよいし、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。
【0137】
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。