JP6294142B2 - 被演算データ読み出しのための外部メモリアクセスが発生しないプログラマブルコントローラ - Google Patents

被演算データ読み出しのための外部メモリアクセスが発生しないプログラマブルコントローラ Download PDF

Info

Publication number
JP6294142B2
JP6294142B2 JP2014091226A JP2014091226A JP6294142B2 JP 6294142 B2 JP6294142 B2 JP 6294142B2 JP 2014091226 A JP2014091226 A JP 2014091226A JP 2014091226 A JP2014091226 A JP 2014091226A JP 6294142 B2 JP6294142 B2 JP 6294142B2
Authority
JP
Japan
Prior art keywords
processor
instruction
code
memory
programmable controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014091226A
Other languages
English (en)
Other versions
JP2015210628A (ja
Inventor
基好 宮地
基好 宮地
靖司 野本
靖司 野本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
FANUC Corp
Original Assignee
FANUC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by FANUC Corp filed Critical FANUC Corp
Priority to JP2014091226A priority Critical patent/JP6294142B2/ja
Publication of JP2015210628A publication Critical patent/JP2015210628A/ja
Application granted granted Critical
Publication of JP6294142B2 publication Critical patent/JP6294142B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Programmable Controllers (AREA)

Description

本発明は、プログラマブルコントローラに関し、特にプロセッサによる被演算データ読み出しのための外部メモリアクセスが発生しないプログラマブルコントローラに関する。
プログラマブルコントローラにおいて、シーケンスプログラムの処理は、1ビットのデータに対する演算処理に特化した専用プロセッサ(ASIC)、および、1バイト以上のデータを扱う複雑な命令を実行する汎用プロセッサ(CPU)から構成されるハードウェアにより実行されることが多い(例えば、特許文献1参照)。
特開2009−116445号公報
従来技術にあるような2つのプロセッサから構成されるハードウェアにおいても演算データを格納するメモリは1つであり、このメモリは一方のプロセッサから高速にアクセスすることができるが、もう一方のプロセッサによるアクセススピードは遅く、これが命令の実行スピードを遅くする原因となっている。
例えば、図3のような構成のプログラマブルコントローラの場合、演算データ格納用メモリは専用プロセッサに内蔵されているため、専用プロセッサの演算処理回路からは高速にアクセスすることができるが、汎用プロセッサと演算データ格納用メモリは外部バスにより接続されているため、汎用プロセッサによる演算格納用メモリへのアクセスは、専用プロセッサの演算データ格納用メモリへのアクセスよりもアクセススピードが遅くなる。
従来技術にみられる課題を解決する一手法として、シーケンスプログラムを汎用プロセッサのみで実行する(汎用プロセッサ内臓データキャッシュを利用する)構成が考えられる。この構成を用いる場合、シーケンスプログラムの処理では、1ビットデータの演算処理、被演算データ読み出し・演算結果データ書き込みのためのメモリのアラインメント境界に跨るワード・ロングワードアクセスを行う。このため、シーケンスプログラム処理用の汎用プロセッサとしては以下の条件を満たすものを選定しなければならなくなる。
条件1:1ビットデータの演算処理を汎用プロセッサで実行するためにリード・モディファイ・ライトをアトミックに実行する手段を有すること。
条件2:メモリのアラインメント境界に跨るワード・ロングワードアクセス時のデータのコヒーレンシ(整合性)を保つために、2回のメモリアクセスをアトミックに実行する手段を有すること。
また、課題を解決する別の手法として、使用頻度の高い一部の機能命令の処理を専用プロセッサ(ASIC)で実行するように構成することも考えられる。しかしながら、このような構成を設けるためには複雑な機能命令の処理回路を専用プロセッサ(ASIC)に組み込む必要があるため、ASICの開発・評価のために多くの時間・費用を要する。
そこで、本発明の目的は、異なるプロセッサ間でアクセススピードの遅い被演算データの読み出しが発生しないハードウェア構成にすることにより、命令の実行時間を短縮するプログラマブルコントローラを提供することである。
本願請求項1に係る発明は、シーケンスプログラムを実行するプログラマブルコントローラにおいて、所定の第1の命令を実行する第1のプロセッサと、前記第1のプロセッサで実行できない第2の命令を実行する第2のプロセッサとを有し、前記第1のプロセッサは、前記第1の命令および前記第2の命令の実行時に用いられる被演算データを格納するメモリと、前記シーケンスプログラムを構成する命令コードに含まれる前記第2のプロセッサが処理する命令に関する情報をデコードするデコード回路と、前記メモリから前記被演算データを、前記デコード回路によりデコードされた被演算データのアドレス情報に基づいて読み出すメモリアクセス回路を内蔵するコードジェネレータとを有し、前記コードジェネレータは、前記第2のプロセッサがシーケンスプログラムを実行するのに必要な前記第2のプロセッサが実行できる前記第2の命令の命令コードを生成し、この命令コードを前記第2のプロセッサが読みだすことができるバッファメモリに転送する、ことを特徴とするプログラマブルコントローラである。
本願請求項2に係る発明は、前記コードジェネレータは、前記第2のプロセッサが処理する命令を実行するための関数が格納されているメモリ上のアドレスを算出するアドレス変換回路を有する、ことを特徴とする請求項1に記載のプログラマブルコントローラである。
本願請求項3に係る発明は、前記コードジェネレータは、前記被演算データと前記第2のプロセッサのロード命令コードを組み合わせて、前記第2のプロセッサが前記被演算データを前記第2のプロセッサの汎用レジスタにロードするロード命令を生成する、ことを特徴とする請求項1に記載のプログラマブルコントローラである。
本願請求項4に係る発明は、前記コードジェネレータは、関数が格納されているメモリ上のアドレスデータと前記第2のプロセッサの分岐命令コードを組み合わせて、前記第2のプロセッサが実行するべき命令に該当する関数に分岐するための分岐命令を生成する、
ことを特徴とする請求項1に記載のプログラマブルコントローラである。
本願請求項に係る発明は、前記コードジェネレータは、シーケンスプログラムから前記第2のプロセッサが実行するべき前記第2の命令をフェッチした時以外は、前記第2のプロセッサのNOP(No Operation)コードを生成し、この命令コードを前記第2のプロセッサが読みだすことができるバッファメモリに転送する、ことを特徴とする請求項1に記載のプログラマブルコントローラである。
本願請求項に係る発明は、前記バッファメモリは、前記コードジェネレータで生成したコードを第2のプロセッサから見てメモリ空間に配置されているように見える、ことを特徴とする前記請求項に記載のプログラマブルコントローラである。
本発明により、専用プロセッサ(ASIC)と汎用プロセッサ(CPU)のそれぞれの利点を生かしたまま、シーケンスプログラムで使用する汎用プロセッサが実行するべき命令の処理時間が確実に短縮することを可能とするプログラマブルコントローラを提供することができる。
本発明に基づくプログラマブルコントローラのブロック図である。 バッファ15の内容の一例を示す図である。 従来技術に基づくプログラマブルコントローラのブロック図である。
以下、本発明のプログラマブルコントローラの一実施形態について図面とともに説明する。
図1は、本発明のプログラマブルコントローラの概略ブロック図である。
プログラマブルコントローラ100は、専用プロセッサ10、汎用プロセッサ20、および、メインメモリ30、バス40、バス50を備えている。
専用プロセッサ10は、演算処理回路11、演算データ格納用メモリ12、調停回路13、I/F14、バッファ15、インストラクションデコーダ16、コードジェネレータ17、バッファ18を備えている。演算処理回路11は、専用プロセッサが実行するべき命令、例えば1ビットデータに対する演算処理などを行う回路である。演算データ格納用メモリ12は、演算処理の対象となる被演算データを格納している。調停回路13は、演算データ格納用メモリ12への書き込み読み出しを制御している。I/F14は、専用プロセッサ10がメインメモリ30からシーケンスプログラムコードを取り出す時、および汎用プロセッサ20からの演算結果を受け取る時に用いられるインタフェース回路である。バッファ15は、コードジェネレータ17が生成したロード・分岐命令を汎用プロセッサ20に転送する際に用いられるバッファメモリであり、バッファ15の本体は例えば数段のFIFOにより構成されている。インストラクションデコーダ16は、メインメモリ30から取り出した命令をデコードする機能を有する。コードジェネレータ17は、汎用プロセッサ20が実行するべきコードがフェッチされた時に汎用プロセッサ20が実行するロード・分岐命令を生成して汎用プロセッサ20に転送する機能を有する。バッファ18は、汎用プロセッサ20が命令を実行した結果を演算データ格納用メモリ12に書き込む際にライトバッファとして用いられる。
汎用プロセッサ20は、専用プロセッサが実行できない命令であって汎用プロセッサが実行するべき命令(以下、機能命令と呼ぶ)を実行する。本実施形態では、汎用プロセッサ20は専用プロセッサと2つのバスを介して接続されている。1つはPCI−Expressなどにより実現されるバス40である。バス40は、バッファ15と接続されており、汎用プロセッサ20が機能命令をバッファ15から読みだすために用いられる。もう一つはバス50であり、汎用プロセッサ20が、メインメモリからの機能命令関数コードを読み出す際、および機能命令を実行した結果を専用プロセッサ10のバッファ18に書き込む際に用いる。
メインメモリ30は、専用プロセッサ10によって実行されるシーケンスプログラムコードと、汎用プロセッサ20により実行される機能命令関数コードを記憶している。本実施形態では、メインメモリ30は、バス50を介して専用プロセッサ10、汎用プロセッサ20と接続されている。
また、コードジェネレータが生成してバッファ15に転送された各コードが汎用プロセッサから見てメモリ上のコード領域に配置されているように見えるようにするために、例えばバッファ15のアドレス空間はメモリ上のアドレス空間の一部にマッピングされている。このような構成とすることで、コードジェネレータが生成してバッファ15に転送されたコードは、汎用プロセッサから見てメモリ空間上のコード領域に配置されているように見えるので、汎用プロセッサはこれら各コードを直接実行することができる。
次に、上記ハードウェア構成を備えたプログラマブルコントローラ100におけるシーケンスプログラムの実行処理について説明する。
本実施形態におけるプログラマブルコントローラでは、「シーケンスプログラムコード」と「汎用プロセッサ20の命令セットにより構成されるコード」の2種類のプログラムコードを扱う。シーケンスプログラムコードは、専用プロセッサ10で直接実行でき、汎用プロセッサ20では実行できないコードである。シーケンスプログラムコードは、汎用プロセッサ20で実行する命令の種類、被演算データのアドレス情報・サイズ・形式(バイナリ形式、BCD形式など)を示す中間コードを含んでいる。一方、汎用プロセッサ20の命令セットにより構成されるコードは、汎用プロセッサ20で直接実行でき、専用プロセッサ10では実行できないコードである。
専用プロセッサ10は、汎用プロセッサ20により実行されるべき機能命令が発生していないときは、バッファ15に対して「NOP(No−Operation)」命令コードを書き込んでいる。また、バッファメモリの見かけのメモリサイズ(汎用プロセッサ20から見た場合のメモリサイズ)に応じてnバイト毎にバッファメモリの先頭アドレスに戻るための分岐命令が記録されている。例えば、汎用プロセッサ20の命令セットの命令長が4バイト、バッファメモリの見かけのサイズを64バイトとする場合には、64バイト(16命令)毎にバッファ先頭アドレスへの分岐命令コード「BL StartAddress」を挿入する。この場合、汎用プロセッサ20から見たコード領域としてのバッファ15は、例えば図2(a)に示すような状態になる。
専用プロセッサ10はメインメモリ30から外部バス50を介してプログラムコードをフェッチする。フェッチされたプログラムコードがシーケンスプログラムコードである場合は専用プロセッサで実行処理が行われる。一方で、フェッチされたプログラムコードが汎用プロセッサ20が実行処理するべき命令である場合には当該命令コードから命令の種類、被演算データのアドレス情報・サイズ・形式などの情報をデコードし、これらデコードされた各情報を用いてコードジェネレータ17は以下の処理を行う。
ステップ1:デコードされた被演算データのアドレス情報・サイズ・形式に基づいて演算データ格納用メモリ12から必要な被演算データを読み出す。
ステップ2:デコードされた命令の種類に基づいて該当命令の処理関数が格納されているメモリのアドレスを算出する。
ステップ3:ステップ1,2で得られた被演算データおよびアドレスを用いて汎用プロセッサ20の命令セット(「被演算データを汎用プロセッサ20の汎用レジスタにロードする命令コード」および「該当命令の処理関数が格納されているアドレスに分岐する命令コード」)を生成する。
ステップ4:ステップ3で生成した命令コードを汎用プロセッサ20へバッファ15を介して転送する。
ここで、バッファ15は例えば2バンクで構成し、一方のバッファへの命令コードの書き込みが完了したらこれを汎用プロセッサ20に転送するなどの方法により、ステップ3で生成した命令コードをバッファ15へ書き込むタイミングと、バッファ15のデータを汎用プロセッサ20へ転送するタイミングが重ならないようにする。
コードジェネレータ17によって生成された命令コードが転送されると、汎用プロセッサ20から見たコード領域としてのバッファ15は例えば図2(b)に示すような状態になる。ここで、「LD Data_A, GPR_1」「LD Data_B, GPR_2」「LD Data_C, GPR_3」は被演算データData_A,Data_B,Data_Cを、それぞれ汎用プロセッサ20が備える汎用レジスタGPR_1,GPR_2,GPR_3にロードする命令である。また「BL InstAddress」は、該当する命令処理関数が格納されているメインメモリ30のアドレスへと分岐する分岐命令コードである。
そして、汎用プロセッサ20は専用プロセッサ10により生成されたプログラムコードをバッファ15から読み出して順次実行する。機能命令処理に当たると、バッファ15に図2(b)のようにロード命令、分岐命令が書き込まれるので、汎用プロセッサ20がこれを実行することにより該当機能命令関数コードに分岐し、汎用プロセッサ20が備える汎用レジスタから被演算データを取り出して演算処理を実行する。
汎用プロセッサ20は演算処理終了後、演算結果をバス50を介して専用プロセッサ10に内蔵されたバッファ18に書き込み、その後演算結果はバッファ18から演算データ格納用メモリ12に格納される。
以上のように、汎用プロセッサ20による機能命令の実行時に、これまで処理時間中大きな割合を占めていた低速なメモリアクセス処理が発生しないため、機能命令を従来よりも高速に処理することができる。
10 専用プロセッサ
11 演算処理回路
12 演算データ格納用メモリ
13 調停回路
14 I/F
15 バッファ
16 インストラクションデコーダ
17 コードジェネレータ
18 バッファ
20 汎用プロセッサ
30 メインメモリ
40 バス
50 バス
100 プログラマブルコントローラ

Claims (6)

  1. シーケンスプログラムを実行するプログラマブルコントローラにおいて、
    所定の第1の命令を実行する第1のプロセッサと、
    前記第1のプロセッサで実行できない第2の命令を実行する第2のプロセッサとを有し、前記第1のプロセッサは、
    前記第1の命令および前記第2の命令の実行時に用いられる被演算データを格納するメモリと、
    前記シーケンスプログラムを構成する命令コードに含まれる前記第2のプロセッサが処理する命令に関する情報をデコードするデコード回路と、
    前記メモリから前記被演算データを、前記デコード回路によりデコードされた被演算データのアドレス情報に基づいて読み出すメモリアクセス回路を内蔵するコードジェネレータとを有し、
    前記コードジェネレータは、前記第2のプロセッサがシーケンスプログラムを実行するのに必要な前記第2のプロセッサが実行できる前記第2の命令の命令コードを生成し、この命令コードを前記第2のプロセッサが読みだすことができるバッファメモリに転送する、
    ことを特徴とするプログラマブルコントローラ。
  2. 前記コードジェネレータは、前記第2のプロセッサが処理する命令を実行するための関数が格納されているメモリ上のアドレスを算出するアドレス変換回路を有する、
    ことを特徴とする請求項1に記載のプログラマブルコントローラ。
  3. 前記コードジェネレータは、前記被演算データと前記第2のプロセッサのロード命令コードを組み合わせて、前記第2のプロセッサが前記被演算データを前記第2のプロセッサの汎用レジスタにロードするロード命令を生成する、
    ことを特徴とする請求項1に記載のプログラマブルコントローラ。
  4. 前記コードジェネレータは、関数が格納されているメモリ上のアドレスデータと前記第2のプロセッサの分岐命令コードを組み合わせて、前記第2のプロセッサが実行するべき命令に該当する関数に分岐するための分岐命令を生成する、
    ことを特徴とする請求項1に記載のプログラマブルコントローラ。
  5. 前記コードジェネレータは、シーケンスプログラムから前記第2のプロセッサが実行するべき前記第2の命令をフェッチした時以外は、前記第2のプロセッサのNOP(No Operation)コードを生成し、この命令コードを前記第2のプロセッサが読みだすことができるバッファメモリに転送する、
    ことを特徴とする請求項1に記載のプログラマブルコントローラ。
  6. 前記バッファメモリは、前記コードジェネレータで生成したコードを第2のプロセッサから見てメモリ空間に配置されているように見える、
    ことを特徴とする請求項1に記載のプログラマブルコントローラ。
JP2014091226A 2014-04-25 2014-04-25 被演算データ読み出しのための外部メモリアクセスが発生しないプログラマブルコントローラ Active JP6294142B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014091226A JP6294142B2 (ja) 2014-04-25 2014-04-25 被演算データ読み出しのための外部メモリアクセスが発生しないプログラマブルコントローラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014091226A JP6294142B2 (ja) 2014-04-25 2014-04-25 被演算データ読み出しのための外部メモリアクセスが発生しないプログラマブルコントローラ

Publications (2)

Publication Number Publication Date
JP2015210628A JP2015210628A (ja) 2015-11-24
JP6294142B2 true JP6294142B2 (ja) 2018-03-14

Family

ID=54612772

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014091226A Active JP6294142B2 (ja) 2014-04-25 2014-04-25 被演算データ読み出しのための外部メモリアクセスが発生しないプログラマブルコントローラ

Country Status (1)

Country Link
JP (1) JP6294142B2 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH036705A (ja) * 1989-06-05 1991-01-14 Hitachi Seiki Co Ltd シーケンスコントローラ
JP3024719B2 (ja) * 1992-06-05 2000-03-21 富士電機株式会社 プログラマブルコントローラの演算処理方法
JP2008226276A (ja) * 2008-06-09 2008-09-25 Matsushita Electric Works Ltd プログラマブルコントローラ

Also Published As

Publication number Publication date
JP2015210628A (ja) 2015-11-24

Similar Documents

Publication Publication Date Title
JP5844882B2 (ja) データ要素のストライドパターンギャザーおよびデータ要素のストライドパターンスキャッタのためのシステム、装置、および方法
TWI476597B (zh) 資料處理裝置及半導體積體電路裝置
CN109508206B (zh) 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统
US20180052685A1 (en) Processor and method for executing instructions on processor
JP5947879B2 (ja) マスクレジスタを用いてジャンプを行うシステム、装置、および方法
KR20170098803A (ko) 데이터 추론 실행을 위한 시스템, 장치 및 방법
JP2017016712A5 (ja) 方法、プロセッサ、及び、システム
KR20170099872A (ko) 데이터 추론 실행을 위한 시스템, 장치 및 방법
JP2018500630A (ja) 4次元モートン座標変換プロセッサ、方法、システム、及び命令
KR20170097621A (ko) 충돌 검출을 수행하기 위한 방법 및 장치
BR112015029930B1 (pt) Pares de imposição de ordem de instrução de instruções, processadores, métodos e sistemas
TW201516864A (zh) 多執行緒圖形處理單元管線
JP4243271B2 (ja) データ処理装置およびデータ処理方法
CN108959180B (zh) 一种数据处理方法及系统
KR102152735B1 (ko) 그래픽 처리 장치 및 이의 동작 방법
JPS59231652A (ja) メモリアクセス・オ−バラツプ検出方式
WO2023142524A1 (zh) 指令处理方法、装置、芯片、电子设备以及存储介质
JP6294142B2 (ja) 被演算データ読み出しのための外部メモリアクセスが発生しないプログラマブルコントローラ
JP2008299729A (ja) プロセッサ
US20140365751A1 (en) Operand generation in at least one processing pipeline
US11080054B2 (en) Data processing apparatus and method for generating a status flag using predicate indicators
CN111752614A (zh) 一种处理器、指令执行设备及方法
JP6344022B2 (ja) 演算処理装置および演算処理装置の制御方法
JP5292831B2 (ja) プログラマブルコントローラ
JPH0524537B2 (ja)

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161116

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170815

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170822

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171016

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180123

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180215

R150 Certificate of patent or registration of utility model

Ref document number: 6294142

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150