(57)【要約】【課題】括弧付き命令を含む数値論理演算に、必要とする命令の種類を削減すると共にマッピングマッピングＲＡＭの必要容量を減らす。【解決手段】括弧命令と演算子の並びは、左括弧命令をオペコードに、演算子をオペランドに分けてレジスタ（ＩＲ０）に格納し、レジスタ（ＩＲ）のオペコードが左括弧命令になるとき、そのオペランドの演算子をインストラクションスタック（ＩＳ）に格納しておき、マイクロコードのデコード出力に従ってレジスタ（ＩＲ０）に含まれるオペコードとインストラクションスタック（ＩＳ）にプッシュされたオペランドを切り替えてＭＡＰＲＡＭのマッピングアドレスとする。  ＭＡＰＲＡＭを２ポート構成とし、一方のポートはレジスタ（ＩＲ０）にリードされたインストラクションをマッピングアドレスとし、他方のポートをレジスタ（ＩＲ１）のオペランドをマッピングアドレスとして切り替えることも含む。【選択図】図１
2008102563.tif 000002
【特許請求の範囲】
【請求項１】
括弧命令と演算子の組み合わせになるインストラクションを複数段のインストラクションレジスタ（ＩＲ０，ＩＲ１，ＩＲ）に順次格納してパイプライン処理し、前記レジスタ（ＩＲ０）に読み出されるオペコードをアドレスとして、ＭＡＰＲＡＭ（マッピングＲＡＭ）に従ってＭＣＲＡＭ（マイクロコードＲＡＭ）をアクセスすることでマイクロコード制御するプログラマブルコントローラの演算方式であって、
括弧命令と演算子の並びは、左括弧命令をオペコードに、演算子をオペランドに分けて前記レジスタ（ＩＲ０）に格納し、
前記レジスタ（ＩＲ）のオペコードが左括弧命令になるとき、そのオペランドの演算子をインストラクションスタック（ＩＳ）に格納しておき、
前記マイクロコードのデコード出力に従って、前記レジスタ（ＩＲ０）に含まれるオペコードと前記インストラクションスタック（ＩＳ）にプッシュされたオペランドを切り替えて前記ＭＡＰＲＡＭのマッピングアドレスとすることを特徴とするプログラマブルコントローラの演算方式。
【請求項２】
括弧命令と演算子の組み合わせになるインストラクションを複数段のインストラクションレジスタ（ＩＲ０，ＩＲ１，ＩＲ）に順次格納してパイプライン処理し、前記レジスタ（ＩＲ０）に読み出されるオペコードをアドレスとして、ＭＡＰＲＡＭ（マッピングＲＡＭ）に従ってＭＣＲＡＭ（マイクロコードＲＡＭ）をアクセスすることでマイクロコード制御するプログラマブルコントローラの演算方式であって、
括弧命令と演算子の並びは、左括弧命令をオペコードに、演算子をオペランドに分けて前記レジスタ（ＩＲ０）に格納し、
前記ＭＡＰＲＡＭを２ポート構成とし、一方のポートは前記レジスタ（ＩＲ０）にリードされたインストラクションをマッピングアドレスとし、他方のポートを前記レジスタ（ＩＲ１）のオペランドをマッピングアドレスとし、
前記レジスタ（ＩＲ１）のオペコードが左括弧命令になるとき、左括弧命令の実行時のオペランドの演算子を実行するためのマッピングアドレスを前記ＭＡＰＲＡＭの他方のポートからインストラクションスタック（ＩＳ）に退避しておき、
前記マイクロコードのデコード出力が左括弧命令の実行になるとき、前記ＭＡＰＲＡＭの一方のポートの出力を前記ＭＣＲＡＭのマッピングアドレスとし、右括弧命令の実行時に前記インストラクションスタック（ＩＳ）にプッシュされたアドレスを前記ＭＣＲＡＭのマッピングアドレスとして切り替えることを特徴とするプログラマブルコントローラの演算方式。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラに係り、特に括弧命令と演算子の組み合わせになるアプリケーションプログラム命令を、パイプライン処理およびマイクロコード制御で実行するための演算方式に関する。
【背景技術】
【０００２】
プログラマブルコントローラは、プログラムメモリ上に格納されたアプリケーションプログラム命令の羅列を順次読み出し、解析し、その結果に基づき演算を実行する。
【０００３】
プログラマブルコントローラの言語のうち、ラダー言語とＩＬ（Ｉｎｓｔｌｕｃｔｉｏｎ  Ｌｉｓｔ）言語は主に数値論理演算プログラムを構築するのに利用され、図３にラダープログラムの例を、図４にＩＬ言語の例を示す。このプログラムをブール式で表現すると、下記の（１）式となる。
［数１］ｇ＝ａＡＮＤｂＡＮＤ（ｃＯＲ（ｄＡＮＤｅ））ＡＮＤｆ…（１）
プログラマブルコントローラは、（１）式の右辺の左側から右側に向かって各命令を順番に読み出し、各命令が意味する論理演算を実行することで、図３のラダープログラムと同じ演算結果を得ようとする。
【０００４】
しかし、（１）式において、“ＡＮＤ（”と“ＯＲ（”に行き当たると、この２つの命令は括弧内を先に演算した後に演算すべき演算子であり、プログラマブルコントローラではこのままでは演算できない。
【０００５】
この問題を解消する手法として、プログラマブルコントローラにインストラクションスタック（ＩＳ）を設け、左括弧“（”に遭遇したときに、その直前の命令をインストラクションスタックにプッシュしておき、括弧内の命令を使った演算を先に実行し、その結果とインストラクションスタックにプッシュしておいた命令との論理積／論理和などの演算を行う方式を本願出願人は既に提案している（例えば、特許文献１参照）。
【特許文献１】特開平１１−２８８３０６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
プログラマブルコントローラのアプリケーションプログラムを実行する専用プロセッサをパイプライン、マイクロコード制御方式にて構築する場合、図５のような構成となる。なお、パイプラインとはハードウェアを並列処理させて性能を向上させるための手法であり、マイクロコード方式とはアプリケーションプログラムの１命令を実行するためにプロセッサ内部にプログラムを具備して実行する方式である。
【０００７】
図５の構成による演算は以下のように実行される。
【０００８】
（１）ＰＣ（プログラムカウンタ）をアドレスとして、ＰＭ（プログラムメモリ）からインストラクションをリードし、インストラクションレジスタ（ＩＲ０，ＩＲ１，ＩＲ）に順次格納する。
【０００９】
図５では３段のパイプライン構成を示しており、ＩＲに格納されているインストラクションの内容が演算される。すなわち、ＩＲにカレントのインストラクションが格納され、ＩＲ１に次に実行されるインストラクションが格納され、ＩＲ０にその次に実行されるインストラクションが格納される。
【００１０】
したがって、３段のパイプライン処理の場合、ＰＣはカレントのインストラクション実行位置より＋３進んだアドレス位置を示している。
【００１１】
（２）インストラクションにはオペコードとオペランドが含まれ、図５ではオペコード（ＯＰＣ）、オペランド（ＯＰＲ）を含めてインストラクションレジスタに格納される。
【００１２】
（３）ＩＲ０のオペコードをアドレスとしてＭＡＰＲＡＭ（マッピングＲＡＭ：マイクロコードのエントリアドレスを格納しているＲＡＭ）をリードしてＭＡＰＲＥＧ（マップレジスタ）に格納する。
【００１３】
（４）ＭＡＰＲＥＧをアドレスとしてＭＣＲＡＭ（マイクロコードＲＡＭ）をアクセスし、ＭＣＲＥＧ（マイクロコードレジスタ）へ格納し、ＭＣＲＥＧの内容をＤＥＣ（デコーダ）でデコードして、専用プロセッサ内部の演算処理などを行う。
【００１４】
つまり、ＭＡＰＲＥＧには次に実行されるオペコードを変換したマイクロコードのエントリアドレスが格納されている。カレントの命令処理を終了した後、ＭＡＰＲＥＧを使って次のエントリへジャンプする。この処理は一般的にマッピングジャンプと呼ぶ。
【００１５】
（５）ＡＬＵ（数値演算器）前段のマルチプレクサ（ＭＵＸ）はＭＣＲＥＧのデコード内容に応じて演算対象を決定する。
【００１６】
図５の構成においては、同図中に命令（Ａ）で例を示すように、オペコードが左括弧命令と演算子の組になる “ＡＮＤ（”など、論理演算式に括弧付き命令を含ませる場合には、演算子の数だけ左括弧命令が必要となる。つまり、オペコードの種類が増大し、それに伴ってＭＡＰＲＡＭの必要容量も増大する。
【００１７】
また、マイクロコードも右括弧命令“）”を実行するにあたり、ＩＳ（インストラクションスタック）に退避された演算子の内容に応じて演算を行わなければならないため、マイクロコードの容量も増大する。
【００１８】
本発明の目的は、上記の課題を解決したプログラマブルコントローラの演算方式を提供することにある。
【課題を解決するための手段】
【００１９】
本発明は、前記の課題を解決するため、以下の演算方式とする。
【００２０】
（１）括弧命令と演算子の組み合わせになるインストラクションを複数段のインストラクションレジスタ（ＩＲ０，ＩＲ１，ＩＲ）に順次格納してパイプライン処理し、前記レジスタ（ＩＲ０）に読み出されるオペコードをアドレスとして、ＭＡＰＲＡＭ（マッピングＲＡＭ）に従ってＭＣＲＡＭ（マイクロコードＲＡＭ）をアクセスすることでマイクロコード制御するプログラマブルコントローラの演算方式であって、
括弧命令と演算子の並びは、左括弧命令をオペコードに、演算子をオペランドに分けて前記レジスタ（ＩＲ０）に格納し、
前記レジスタ（ＩＲ）のオペコードが左括弧命令になるとき、そのオペランドの演算子をインストラクションスタック（ＩＳ）に格納しておき、
前記マイクロコードのデコード出力に従って、前記レジスタ（ＩＲ０）に含まれるオペコードと前記インストラクションスタック（ＩＳ）にプッシュされたオペランドを切り替えて前記ＭＡＰＲＡＭのマッピングアドレスとすることを特徴とする。
【００２１】
（２）括弧命令と演算子の組み合わせになるインストラクションを複数段のインストラクションレジスタ（ＩＲ０，ＩＲ１，ＩＲ）に順次格納してパイプライン処理し、前記レジスタ（ＩＲ０）に読み出されるオペコードをアドレスとして、ＭＡＰＲＡＭ（マッピングＲＡＭ）に従ってＭＣＲＡＭ（マイクロコードＲＡＭ）をアクセスすることでマイクロコード制御するプログラマブルコントローラの演算方式であって、
括弧命令と演算子の並びは、左括弧命令をオペコードに、演算子をオペランドに分けて前記レジスタ（ＩＲ０）に格納し、
前記ＭＡＰＲＡＭを２ポート構成とし、一方のポートは前記レジスタ（ＩＲ０）にリードされたインストラクションをマッピングアドレスとし、他方のポートを前記レジスタ（ＩＲ１）のオペランドをマッピングアドレスとし、
前記レジスタ（ＩＲ１）のオペコードが左括弧命令になるとき、左括弧命令の実行時のオペランドの演算子を実行するためのマッピングアドレスを前記ＭＡＰＲＡＭの他方のポートからインストラクションスタック（ＩＳ）に退避しておき、
前記マイクロコードのデコード出力が左括弧命令の実行になるとき、前記ＭＡＰＲＡＭの一方のポートの出力を前記ＭＣＲＡＭのマッピングアドレスとし、右括弧命令の実行時に前記インストラクションスタック（ＩＳ）にプッシュされたアドレスを前記ＭＣＲＡＭのマッピングアドレスとして切り替えることを特徴とする。
【発明の効果】
【００２２】
以上のとおり、本発明によれば、以下の効果がある。
【００２３】
（１）左括弧命令“（”をオペコード、演算子をオペランドと区別することで、オペコードの種類を削減でき、ＭＡＰＲＡＭの容量も削減できる。
【００２４】
（２）左括弧命令“（”をオペコード、演算子をオペランドと区別することで、括弧付き命令の演算子の命令と括弧無しの演算子の命令とを同じマイクロプログラムで実行できるため、マイクロプログラムの容量を削減できる。
【００２５】
（３）ＭＡＰＲＡＭを２ポートメモリとすることにより、パイプライン制御に障害を及ぼすことなく、演算が実行できる。
【発明を実施するための最良の形態】
【００２６】
（実施形態１）
図１は、本実施形態を示すプログラマブルコントローラの構成図である。同図が図５と異なる部分を説明する。ＩＳ（インストラクションスタック）は、ＩＲ（インストラクションレジスタ）に格納されるＯＰＣ（オペコード）が左括弧命令になるときに、ＯＰＲ（オペランド）の演算子がプッシュされて格納する。ＭＵＸ（マルチプレクサ）は、ＤＥＣ（デコーダ）のデコード出力に従って、ＩＲ０（インストラクションレジスタ）に含まれるＯＰＣとＩＳにプッシュされたＯＰＲを切り替え、これをＭＡＰＲＡＭに格納する。
【００２７】
図１の構成において、括弧命令と演算子の並びは、同図中に命令（Ａ）で例を示すように、“ＡＮＤ（”のうち、オペコードに左括弧命令“（”を、オペランドに演算子“ＡＮＤ”を格納するように、左括弧命令“（”と演算子“ＡＮＤ”を区別したインストラクションの並びとする。
【００２８】
このように、左括弧命令を“（”をオペコード、演算子をオペランドと区別することで、図１中に（Ｂ）で示すように、ＩＲのオペランド（右括弧命令の時に実行すべき演算子）がインストラクションスタック（ＩＳ）に格納される。
【００２９】
こうすることで、左括弧命令“（”では、オペランドに格納された演算子の種別に関わらず、ＩＲのオペランドをＩＳに退避させる処理を行うことになる。
【００３０】
したがって、演算子ごとに左括弧命令を持つ必要が無くなるため、オペコードの種類を削減でき、ＭＡＰＲＡＭの容量も削減できる。
【００３１】
（実施形態２）
前記の図１において、左括弧命令付きのインストラクション“ＡＮＤ（”や“ＯＲ（”等を実行する場合、ＩＳ（インストラクションスタック）にはプログラムメモリに格納されているオペランドが格納されているため、ＩＳを使ってＭＣＲＡＭ（マイクロコードＲＡＭ）をアクセスできない。したがって、ＩＳを使ってマップジャンプ処理を行わなければならないため、パイプライン処理に障害が生じる。
【００３２】
そこで、本実施形態は、図２にプログラマブルコントローラの構成図を示すように、ＭＡＰＲＡＭ（マッピングＲＡＭ）を２ポート構成にする。このうち、一方のポートはＩＲ０（インストラクションレジスタ）のオペコードをアドレスとし、他方のポートをＩＲ１（インストラクションレジスタ）のオペランドをアドレスとする（図２のＡ）。また、ＩＲ１のオペランドをアドレスとしたＭＡＰＲＡＭのポートの出力にＩＳ（インストラクションスタック）を置く。
【００３３】
この構成により、左括弧命令“ＡＮＤ（”実行時にオペランドに格納されている演算子のマッピングジャンプ先をＩＳに退避しておき、右括弧命令“）”実行時にＩＳに退避されている演算子を実行するためにＩＳをエントリアドレスとしたマッピングジャンプ処理を行う（図２のＢ）。
【００３４】
これにより、パイプライン処理に障害を与えることなく、括弧付き命令を実行することができる。また、右括弧命令“）”において、マイクロコードではＩＳに退避された演算子を実行すれば良くなるため、括弧無しの演算子と同じマイクロプログラムを実行することが可能である。したがって、マイクロコードのステップ数を削減できる。
【００３５】
なお、実施形態では、論理演算子の場合を示すが、ＡＤＤ（加算）などの数値演算子を含むインストラクションの実行に適用して同等の作用効果を得ることができる。
【図面の簡単な説明】
【００３６】
【図１】本発明の実施形態１を示すプログラマブルコントローラの構成図。
【図２】本発明の実施形態２を示すプログラマブルコントローラの構成図。
【図３】ラダープログラムの例。
【図４】ＩＬ言語例。
【図５】従来のプログラマブルコントローラの構成図。
【符号の説明】
【００３７】
ＰＭ  プログラムメモリ
ＩＲ０，ＩＲ１，ＩＲ  インストラクションレジスタ
ＩＳ  インストラクションスタック
ＭＡＰＲＡＭ  マッピングＲＡＭ
ＭＵＸ  マルチプレクサ
ＭＣＲＡＭ  マイクロコードＲＡＭ
ＤＥＣ  デコーダ
【図１】
2008102563.tif 000003
【図２】
2008102563.tif 000004
【図３】
2008102563.tif 000005
【図４】
2008102563.tif 000006
【図５】
2008102563.tif 000007