JP5289688B2 - プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法 - Google Patents

プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法 Download PDF

Info

Publication number
JP5289688B2
JP5289688B2 JP2006185087A JP2006185087A JP5289688B2 JP 5289688 B2 JP5289688 B2 JP 5289688B2 JP 2006185087 A JP2006185087 A JP 2006185087A JP 2006185087 A JP2006185087 A JP 2006185087A JP 5289688 B2 JP5289688 B2 JP 5289688B2
Authority
JP
Japan
Prior art keywords
register
bank
user
application program
cpu core
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.)
Expired - Fee Related
Application number
JP2006185087A
Other languages
English (en)
Other versions
JP2008015720A (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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics 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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2006185087A priority Critical patent/JP5289688B2/ja
Priority to US11/822,235 priority patent/US20080010426A1/en
Publication of JP2008015720A publication Critical patent/JP2008015720A/ja
Application granted granted Critical
Publication of JP5289688B2 publication Critical patent/JP5289688B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)

Description

本発明は、機能ユニットの制御情報等を格納するシステムレジスタに対するアクセス制御機構を備えるプロセッサシステムに関する。
自動車、航空機等の輸送機械や、携帯電話機、交換機等の通信機器に組み込まれ、これらの機械、機器の制御を行うプロセッサシステムは組み込みシステムと呼ばれている。組み込みシステムは、処理時間の向上、リアルタイム性の確保、プログラムのソフトウェア部品化による生産性向上等を実現するため、一般にマルチプログラミング環境を備えている。マルチプログラミング環境とは、複数のアプリケーションプログラムを定期的に切り替えて実行したり、あるイベントの発生に応じて実行するアプリケーションプログラムを切り替えたりすることによって、複数のアプリケーションプログラムがあたかも並列実行されているような環境を意味する。このようなマルチプログラミング環境は、CPUと、CPUで実行されるアプリケーションプログラムのスケジューリングを担うプログラムであるオペレーティングシステムプログラム(OS:Operating System Program)によって実現される。
上述した組み込みシステム等のプロセッサシステムは、CPU(Central Processing Unit)コアに様々な機能ユニットが結合された構成を有している。従来のプロセッサシステムの概略構成を図13に示す。
CPUコアは、命令をフェッチして実行する処理ユニットであり、命令フェッチユニット、フェッチされた命令をデコードして実行する整数演算ユニット、汎用レジスタファイル、並びに、後述する機能ユニットとのインタフェース等を備える。ここで、汎用レジスタファイルは、複数の汎用レジスタの集合である。汎用レジスタは、アプリケーションプログラムが汎用的に用いることができるレジスタであり、整数演算ユニット等のオペランドや演算結果を一時的に保持するアキュムレータ、あるいはメモリアクセス時のアドレス指定を行うためのアドレスレジスタとして使用される。
機能ユニットは、CPUコアに接続され、CPUコアに対して各種機能を提供するものである。具体的には、浮動小数点演算ユニット(FPU)及び乗算・積和演算ユニット(MAC)等のコプロセッサ、メモリ保護ユニット(MPU)及びデバッグユニット等のCPUコアと密接に結合した機能を提供するユニット、並びに、シリアルインタフェース、タイマ、プログラマブル・カウンタ等の周辺装置が機能ユニットに相当する。
システムレジスタ群は、CPUコア、機能ユニット、及びCPUコアで実行されるプログラムに関する各種の状態の保持、並びに、CPUコア及び機能ユニットを特定の動作モードに設定するためのCPUコア及び機能ユニットの制御情報の保持といった特定の用途に使用されるシステムレジスタの集合である。システムレジスタの具体例は、(1)CPUコアで実行されるプログラムの状態を保持するPSW(Program Status Word)レジスタ、(2)整数演算ユニットやFPUにおけるオーバーフロー、アンダーフロー、ゼロ除算等の発生を示すステータスレジスタ、(3)CPUコアの動作モード、DRAM及びSDRAM等のリフレッシュレート、並びに、FPU、メモリ保護ユニット、デバッグユニット、メモリコントローラ、割り込みコントローラ、シリアル通信ポート、タイマ、及びプログラマブル・カウンタ等の機能ユニットに対する動作設定や動作状況の読み出しに用いるコントロールレジスタ、などである。
上述したように、CPUコア及び機能ユニットの制御や動作状態の取得のために用いられるシステムレジスタには様々な情報が格納される。このため、システムレジスタの中には、アプリケーションプログラムによるアクセスを許可すべきものと禁止すべきものが混在している。しかしながら、従来のプロセッサシステム、特に組み込みシステムは、固定された種類のアプリケーションプログラムを実行する目的で使用されることが多く、新たなアプリケーションプログラムを柔軟に追加する機構を持っていないため、アプリケーションプログラムによるシステムレジスタへのアクセスを制限する機構、つまり、アプリケーションプログラムからシステムレジスタを保護する機構は重要視されていなかった。
しかし、最近では新たなプログラムをダウンロードして実行することが可能な携帯電話機など、信頼性が保証されていないアプリケーションプログラムを実行する組み込みシステムが登場している。このようなプロセッサシステムでは、アプリケーションプログラムから保護されるべきシステムレジスタが、信頼性の保証されていないアプリケーションプログラムによってアクセスされてしまう危険性がある。
特開平5−165631号公報
上述したように、従来のプロセッサシステムは、アプリケーションプログラムによるアクセスを許可すべきシステムレジスタ及び禁止すべきシステムレジスタが混在しているため、システムレジスタの保護が不十分であるという問題がある。
なお、特許文献1には、複数のレジスタバンクの各々に制御レジスタを設けることとし、複数のレジスタバンクのいずれかをイネーブルとする際に、まず、イネーブルとするレジスタバンクが備えている制御レジスタにアクセスを行うこととしたマイクロコンピュータが記載されている。つまり、制御レジスタへのアクセスを契機として、レジスタバンクの切り替えを行うものである。しかしながら、特許文献1は、アプリケーションプログラムからシステムレジスタを保護する機構については何ら開示していない。
また、例えば、ARMプロセッサでは、16本の汎用レジスタについてレジスタバンク構成を採用し、1のレジスタバンクはアプリケーションプログラムによって使用可能であり、他のレジスタバンクは、OSなどの特権レベルのプログラムによってのみ使用可能としている。例えば、割り込み発生時のレジスタ退避・回復処理を回避するために、割り込みハンドラプログラムのみがアクセス可能なレジスタを設けている。このように、ARMプロセッサは、汎用レジスタにレジスタバンク構成を用いるアーキテクチャを有するが、レジスタバンク構成によってアプリケーションプログラムからシステムレジスタを保護するための機構については開示していない。
本発明にかかるプロセッサシステムは、CPUコアと、前記CPUコアに接続される機能ユニットと、前記機能ユニットの制御情報及び動作状態の少なくとも一方を格納するシステムレジスタ群とを備えるプロセッサシステムである。さらに、前記システムレジスタ群は、それぞれが1又は複数のシステムレジスタを含む複数のレジスタバンクに分割されており、前記複数のレジスタバンクの少なくとも1つは、前記CPUコアで実行されるアプリケーションプログラムによるアクセスが許可されるユーザバンクであり、前記ユーザバンクを除く他の非ユーザバンクに対する前記アプリケーションプログラムによるアクセスが禁止されるものである。
このような構成により、アプリケーションプログラムによるアクセスが許可されるシステムレジスタとアクセスが禁止されるシステムレジスタとを別々のバンクに分離し、アプリケーションプログラムによるシステムレジスタへのアクセス要求をバンク単位で制限することができる。これにより、アプリケーションプログラムによるシステムレジスタへの不正なアクセスを防止し、アプリケーションプログラムによるアクセスを禁止すべきシステムレジスタを確実に保護することができる。
本発明にかかる方法は、CPUコア、前記CPUコアに接続される機能ユニット、並びに、前記機能ユニットの制御情報及び動作状態の少なくとも一方を格納するシステムレジスタ群を備え、前記システムレジスタ群は、それぞれが1又は複数のシステムレジスタを含む複数のレジスタバンクに分割されているプロセッサシステムを動作させるためのオペレーティングシステムプログラムの処理方法である。具体的には、まず、前記CPUコアで実行されるプログラムの特権レベルを判定する。次に、前記CPUコアで実行されるプログラムが、特権レベルのないアプリケーションプログラムである場合には、前記複数のレジスタバンクのうち予めアプリケーションプログラムがアクセス可能な対象として割てられたユーザバンクを選択する。続いて、前記選択したレジスタバンクの変更権限を前記アプリケーションプログラムに与えない状態で、前記アプリケーションプログラムの実行を開始する。
このような方法によって、アプリケーションプログラムによるシステムレジスタへのアクセス要求をバンク単位で制限することができる。これにより、アプリケーションプログラムによるシステムレジスタへの不正なアクセスを防止し、アプリケーションプログラムによるアクセスを禁止すべきシステムレジスタを確実に保護することができる。
本発明により、アプリケーションプログラムによるシステムレジスタへの不正なアクセスを防止することが可能なプロセッサシステム、及び、プロセッサシステムを動作させるためのオペレーティングシステムプログラムの処理方法を提供することができる。
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
発明の実施の形態1.
本実施の形態にかかるプロセッサシステム1の構成を図1に示す。始めに、図1を参照して、プロセッサシステム1が備える構成要素を説明する。図1において、CPUコア10は、命令をフェッチしてこれをデコードし、命令に応じた処理、例えば、算術演算及び論理演算等の演算処理、機能ユニットへの命令発行、後述するシステムレジスタバンク12に含まれるシステムレジスタへのアクセスを実行する処理ユニットである。
機能ユニット11A及びBは、CPUコアに接続され、CPUコアに対して各種機能を提供するものである。上述したように、機能ユニットとは、FPU等のコプロセッサ、メモリ保護ユニット(MPU)、及びデバッグユニット等である。
システムレジスタバンク12は、システムレジスタ群を複数のバンクに分割したものである。1つのバンクは、1又は複数のシステムレジスタを備えている。図1には、システムレジスタバンク12が4つのバンクBK1乃至BK4を備えており、各バンクが32個のレジスタを備える構成を示している。各システムレジスタには、CPUコア、機能ユニット、及びCPUコアで実行されるプログラムに関する各種の状態、並びに、CPUコア及び機能ユニットを特定の動作モードに設定するためのCPUコア及び機能ユニットの制御情報等が保持される。
バンク選択ユニット13は、バンクBK1乃至BK4のうち現在選択されているバンクを示すバンク選択信号BSSを出力する。具体的には、現在選択されているバンクの識別情報が格納されるバンク選択レジスタ(BSR)131をバンク選択ユニット13に設け、バンク選択レジスタ131に格納された識別情報をバンク選択信号BSSによって出力する。なお、詳細は後述するが、プロセッサシステム1は、CPUコア10で実行されるアプリケーションプログラムがアクセス可能なバンクを特定のバンクに制限している。このため、バンク選択レジスタ131に対する書き込みは、特権レベルのプログラム、具体的にはOSによって可能とし、非特権プログラムであるアプリケーションプログラムの要求に基づくバンク選択レジスタ131への書き込みは禁止される。
デコーダ121乃至124は、CPUコア10が出力するシステムレジスタへのアクセス要求及びバンク選択ユニット13が出力するバンク選択信号BSSを入力する。さらに、デコーダ121乃至124は、アクセス要求に含まれるアクセス先レジスタ番号とバンク選択信号BSSに含まれるバンク識別情報の組合せにより、所定のシステムレジスタを選択する。例えば、バンク選択レジスタ131にバンクBK4の識別情報が設定されており、かつ、CPUコア10によるシステムレジスタへのアクセス要求がレジスタ番号"1"を示す場合には、デコーダ124によってレジスタSR4_1がアクセス先に選択される。
システムレジスタバス14は、CPUコア10からシステムレジスタバンク12へのアクセス要求が転送されるバスである。命令バス15は、CPUコア10から機能ユニット11A及びBへの命令転送に使用される命令バスである。また、データバス16は、CPUコア10と機能ユニット11A及び11Bの間でのデータ転送に使用されるパスである。
続いて、以下では、アプリケーションプログラムによるシステムレジスタへのアクセスを制限するための機構について詳しく説明する。プロセッサシステム1は、システムレジスタバンク12に含まれる少なくとも1つのバンクを、アプリケーションプログラムによるアクセスが許可されるバンクと定義しており、CPUコア10がアプリケーションプログラムを実行するときは、当該バンクが選択されることを特徴としている。以下では、アプリケーションプログラムによるアクセスが許可されるバンクを"ユーザバンク"と呼ぶ。
図1に示す構成では、バンクBK4をユーザバンクとしている。なお、バンクBK1は、CPUコア10及びCPUコア10で実行されるプログラムの状態及び制御情報を保持するためのシステムレジスタ群である。バンクBK2は、機能ユニット11Aの状態及び制御情報を保持するためのシステムレジスタ群である。また、バンクBK3は、機能ユニット11Bの状態及び制御情報を保持するためのシステムレジスタ群である。バンクBK4には、他のバンクBK1乃至BK3に含まれる複数のシステムレジスタのうち、アプリケーションプログラムの実行に必要なシステムレジスタが対応付けられている。以下では、ユーザバンク(BK4)のシステムレジスタと他のバンク(BK1乃至BK3)のシステムレジスタを対応付けることを"マッピング"と呼ぶ。
マッピングの一例を図2に示す。図2では、バンクBK1のレジスタSR1_2をユーザバンクBK4のレジスタSR4_1にマッピングし、レジスタSR1_3をユーザバンクBK4のレジスタSR4_2にマッピングしている。また、バンクBK2のレジスタSR2_3をユーザバンクBK4のレジスタSR4_3にマッピングし、バンクBK3のレジスタSR3_1をユーザバンクBK4のレジスタSR4_32にマッピングしている。なお、図2に示すように、1つのシステムレジスタの格納情報をユーザバンクBK4の1つのレジスタにマッピングするだけでなく、1つのシステムレジスタのビットの一部をユーザバンクBK4のレジスタにマッピングしてもよい。また、複数のシステムレジスタに含まれるビットを、ユーザバンクBK4の1つのレジスタにマッピングしてもよい。
図2に示すようなマッピングは、デコーダ121乃至124のデコード論理によって実現できる。具体的には、システムレジスタに書き込みを行う場合に、その書き込み要求に応じて、マッピングにより対応付けられたシステムレジスタに対して同時に書き込みを行えばよい。例えば、バンクBK4が選択されている時に、レジスタ番号"1"のレジスタに書き込み要求があった場合には、当該書き込み要求に応じて、デコーダ124がレジスタSR4_1を選択するとともに、デコーダ121がレジスタSR1_2を選択するよう、デコーダ121乃至124のデコード論理を決定すればよい。
次に、ユーザバンクBK4が選択される際のプロセッサシステム1の動作を説明する。プロセッサシステム1は、バンク選択レジスタ131及びデコーダ121乃至124によってアクセス可能なレジスタバンクが限定される構成とし、アプリケーションプログラムの実行時にOSがユーザバンクBK4を選択することによって、アプリケーションプログラムがアクセス可能なシステムレジスタを制限している。具体的には、図3のフローチャートに示すように、OSがアプリケーションプログラムを起床する際に、ユーザバンクBK4を選択した状態でアプリケーションプログラムの実行を開始する。ステップS11では、実行を開始するアプリケーションプラムのコンテキストを復元するために、OSがコンテキスト切り替え処理を行う。ステップS12では、OSによって、バンク選択レジスタ131にユーザバンクBK4の識別情報がセットされる。ステップS13では、OSがアプリケーションプログラムを起床し、アプリケーションプログラムの実行が開始される。
上述したように、本実施の形態にかかるプロセッサシステム1は、システムレジスタ群を複数のバンクに分割し、少なくとも1つのバンクをユーザバンクに設定する。さらに、ユーザバンクを選択した状態でアプリケーションプログラムの実行を行うこととしている。つまり、プロセッサシステム1は、アプリケーションプログラムによるアクセスが許可されるシステムレジスタとアクセスが禁止されるシステムレジスタとを別々のバンクに分離し、アプリケーションプログラムによるシステムレジスタへのアクセス要求をバンク単位で制限している。このような構成により、ユーザバンク以外のバンクをアプリケーションプログラムに対して隠蔽することができるため、アプリケーションプログラムによるシステムレジスタへの不正なアクセスを確実に防止することができる。
なお、1つのアプリケーションプログラムによってアクセスされるシステムレジスタは、1つのユーザバンクにマッピングすることが望ましい。これにより、アプリケーションプログラムの実行中はバンク切り替えが不要となるため、バンク切り替え処理にかかるオーバヘッドを削減できる。図4を用いて具体例を説明する。図4(a)は、ユーザバンクを設けずに、システムレジスタSR1_2、SR2_3、SR3_1の順にアクセス要求が発生する場合の処理を示している。一方、図4(b)は、ユーザバンクBK4を備えるプロセッサシステム1の処理を示している。図4(a)の場合、3つのシステムレジスタは異なるバンクに属するため、アクセス要求の都度バンク切り替えを実行する必要がある。このような処理は、アプリケーションプログラムに対するシステムレジスタの保護が不十分であるだけでなく、バンク切り替えの頻発によるオーバヘッドが大きくなる。これに対して図4(b)の場合は、バンク切り替えが不要であるため、バンク切り替えによるオーバヘッドを抑制することができる。
また、1つのアプリケーションプログラムにアクセスされるシステムレジスタを、1つのユーザバンクにマッピングしておけば、アプリケーションプログラムの開発者はバンクの存在を意識してプログラミングを行う必要がないため、プログラム開発の負担を軽減できる利点がある。
また、本実施の形態のプロセッサシステム1は、ユーザバンク内のシステムレジスタと他のバンクのシステムレジスタとのマッピングをデコーダ121乃至124のデコード論理によって設定しているが、これらマッピング情報を変更可能とする構成も可能である。これにより、システムレジスタのマッピングの変更、つまり、アプリケーションプログラムに開示するシステムレジスタの変更を、プロセッサシステム1のハードウェアの変更を伴わずに容易に実現できる。具体的な実現方法の例としては、ユーザバンク内のシステムレジスタと他のバンクのシステムレジスタとのマッピング情報をメモリ(不図示)に格納しておき、デコーダ121乃至124はメモリ内に格納されたマッピング情報に従ってシステムレジスタを選択すればよい。マッピング情報を格納するためのメモリにRAMを使用することで、動的にマッピングの変更を行うことも可能である。このような構成は、アプリケーションプログラムを特定しない汎用プロセッサシステム等の応用に有効である。
発明の実施の形態2.
本実施の形態にかかるプロセッサシステム2の構成を図5に示す。プロセッサシステム2は、ユーザバンクを他のバンクから独立した物理的なレジスタ群として設けず、デコーダ221乃至223のデコード論理によって仮想的に実現したことを特徴としている。一例として、仮想化されたユーザバンクBK4と他のバンクBK1乃至BK3との間で、図2に示したのと同じマッピング関係を持たせる場合を考える。バンクBK1のデコーダ221は、バンク選択レジスタ131によってバンクBK1が選択された状態で、CPUコア10からレジスタ番号"1"のレジスタにアクセス要求があった場合は、レジスタSR1_1を選択する。一方、ユーザバンクBK4が選択された状態で、CPUコア10からレジスタ番号"1"のレジスタにアクセス要求があった場合は、仮想化されたレジスタSR4_1にマッピングされたレジスタSR1_2を選択する。同様に、バンク選択レジスタ131によってユーザバンクBK4が選択された状態で、レジスタ番号"2"にアクセス要求があった場合、仮想化されたレジスタSR4_2にマッピングされたレジスタSR1_3がデコーダ221によって選択される。また、ユーザバンクBK4が選択された状態でレジスタ番号"3"にアクセス要求があった場合、仮想化されたレジスタSR4_3に対応するレジスタSR2_3がデコーダ222によって選択される。
なお、このようなデコーダ221乃至223の動作は、図2に示すマッピングの実現手法として説明した発明の実施の形態1にかかるデコーダ121乃至124の動作と同様である。上述したように、OSによって選択されたバンクの識別情報に基づいて、アクセス要求に反応すべきシステムレジスタをデコーダ221乃至223が選択する構成を採用することにより、ユーザバンクBK4を物理的に独立したレジスタ資源として設ける必要はなく、これを仮想化することができる。これにより、システムレジスタバンク22の冗長性を排除し、ユーザバンクとして割り当てる物理的なレジスタ資源を削減することができる。
発明の実施の形態3.
本実施の形態にかかるプロセッサシステム3は、アプリケーションプログラムによるユーザバンクへのアクセス要求を一律に許可するのではなく、プログラムに割り当てられた特権レベルに応じて特定種別のアクセス要求を禁止することを特徴としている。なお、以下で述べる特定種別のアクセス要求は、具体的にはライトアクセス要求である。
プロセッサシステム3の構成を図6に示す。プロセッサシステム3と発明の実施の形態1にかかるプロセッサシステム1の構成上の相違点は、特権ビット格納部35及びアクセス制御部36である。特権ビット格納部35は、システムレジスタバンク12へのライトアクセスが可能であるか否かを示す特権ビットを格納する。つまり、特権ビットは、アプリケーションログラムに割り当てられた権限レベルを示す権限情報に相当し、特権ビット格納部35は、権限情報格納部に相当する。
例えば、特権ビットを1ビットデータとし、ライトアクセスが許可される特権レベルを値"1"とし、ライトアクセスが禁止される非特権レベルを値"0"とすれば良い。特権ビット格納部35の値は、CPUコア30で実行されるOSによって書き換え可能であり、アプリケーションプログラムによる書き換えは禁止する。
アクセス制御部36は、システムレジスタへのアクセス要求をCPUコア30から入力し、アクセス要求種別がライトアクセスである場合は、特権ビット格納部35に格納された値が特権レベルを示す場合に限り、アクセス要求をシステムレジスタバス14に出力する。アクセス制御部36の処理を示すフローチャートを図7に示す。ステップS21では、システムレジスタへのアクセス要求がCPUコア30から入力される。アクセス制御部36は、入力されたアクセス要求がリードアクセス要求である場合は、当該アクセス要求をシステムレジスタバス14に出力する(ステップS22及び24)。ステップS21で入力されたアクセス要求がライトアクセス要求である場合は、特権ビット格納部35を参照し、特権レベルを示す値が設定されていれば、入力されたライトアクセス要求をシステムレジスタバス14に出力する(ステップS22乃至S24)。一方、特権ビット格納部35に特権レベルを示す値が設定されていない場合は、入力されたライトアクセス要求を拒絶する(ステップS25)。
上記の構成において、アプリケーションプログラムの実行時には、特権ビット格納部35に非特権レベルを示す値(例えばゼロ)を格納することにより、アプリケーションプログラムによるシステムレジスタへのリードアクセス要求を許可し、ライトアクセス要求を禁止することができる。なお、上述したアクセス制御部36による可否判定は、ユーザバンクBK4に含まれるレジスタ単位で行ってもよい。
本実施の形態にかかるプロセッサシステム3の別の構成例を図8に示す。図8のプロセッサシステム4は、アクセス制御部36の機能をデコーダ321乃至323のデコード論理によって実現するものである。具体的には、特権ビット格納部35の値を示す信号をデコーダ321乃至323に入力し、デコーダ321乃至323によるアクセス要求のデコードを、特権ビット格納部35の値を参照して行う構成としている。デコーダ321乃至323は、ライトアクセス要求を受信すると、特権ビットが特権レベルを示す場合に限りシステムレジスタを選択する。このように構成されたプロセッサシステム4によっても、非特権レベルのアプリケーションプログラムによるシステムレジスタへのライトアクセスを禁止することができる。
また、上述した特権ビット格納部35は、システムレジスタの1つとして実現できる。具体的には、CPUコア30で実行されるアプリケーションプログラムの特権レベルは、プログラム状態を格納するシステムレジスタ(PSWレジスタ)に保持されるため、システムレジスタに格納されたアプリケーションプログラムの特権レベルを示す情報を特権ビットとし、これをシステムレジスタへのライトアクセスの可否判定に使用すればよい。
発明の実施の形態4.
本実施の形態にかかるプロセッサシステム5は、複数のユーザバンクを備えており、CPUコアで実行するアプリケーションプログラムに応じて、アプリケーションプログラムがアクセス可能なユーザバンクを複数のユーザバンクの中から選択することを特徴としている。プロセッサシステム5の構成を図9に示す。プロセッサシステム5と発明の実施の形態1にかかるプロセッサシステム1の構成上の相違点は、システムレジスタバンク42が2つのユーザバンクBK4及びBK5を備える点である。
アプリケーションプログラムのアクセスが禁止される3つのバンクBK1乃至BK3と、2つのユーザバンクBK4及びBK5との間のマッピング例を図10に示す。図10は、ユーザバンクBK4及びBK5に同一のシステムレジスタがマッピングされる場合を示している。例えば、バンクBK1のレジスタSR1_1が、ユーザバンクBK4のレジスタSR4_1及びユーザバンクBK5のレジスタSR5_1にマッピングされる。なお、図10のマッピングは一例であり、ユーザバンクBK4とBK5に異なるシステムレジスタを割り当ててもよい。
次に、アプリケーションプログラムに応じてユーザバンクBK4又はBK5を選択する動作を、図11のフローチャートを参照して説明する。図11は、アプリケーションプログラムによるシステムレジスタへのノンブロッキングアクセスを認めるか否かに応じて、CPUコア40で実行されるオペレーティングシステムプログラム(OS)がユーザバンクBK4又はBK5を選択する場合を示したものである。ここでは、ユーザバンクBK4をノンブロッキングアクセスが禁止されるアプリケーションプログラム用のユーザバンクとし、ユーザバンクBK5をノンブロッキングアクセスが許可されるアプリケーションプログラム用のユーザバンクとしている。つまり、ユーザバンクBK5には、ノンブロッキングアクセスを認めても良いシステムレジスタがマッピングされている。
まずステップS31では、実行を開始するアプリケーションプラムのコンテキストを復元するために、OSがコンテキスト切り替え処理を行う。次に、ステップS32において、OSは、実行を開始するアプリケーションプログラムがシステムレジスタへのノンブロッキングアクセスが許可されるプログラムであるか否かを判定する。ステップS32において、ノンブロッキングアクセスを認めないアプリケーションプログラムであると判定した場合は、バンク選択レジスタ131にユーザバンクBK4の識別情報をセットする(ステップS33)。一方、ステップS32において、ノンブロッキングアクセスを許可するアプリケーションプログラムであると判定した場合は、バンク選択レジスタ131にユーザバンクBK5の識別情報をセットする(ステップS34)。ステップS35では、OSがアプリケーションプログラムを起床し、アプリケーションプログラムの実行が開始される。
システムレジスタへのノンブロッキングアクセスを許可する場合と許可しない場合の違いを図12(a)及び(b)により説明する。図12(a)及び(b)のタイミング図は共に、機能ユニット11A及びBのいずれかがコプロセッサであると仮定し、コプロセッサで実行される命令OP1及びシステムレジスタへのリードアクセス命令OP2が連続して実行される場合のCPUコア40のパイプライン処理を示している。ただし、図12(a)は、システムレジスタへのノンブロッキングアクセスが禁止される場合を示し、図12(b)は、ステムレジスタへのノンブロッキングアクセスが許可される場合を示す。
図12(a)では、ノンブロッキングアクセスが禁止されるアプリケーションプログラム用のユーザバンクであるユーザバンクBK4が選択されている。命令フェッチ(IF)ステージ、命令デコード(ID)ステージ及び命令実行(EX)ステージでは、命令OP1及びOP2が連続して実行される。しかし、命令OP2によるシステムレジスタ・アクセスは、コプロセッサ実行命令OP1の完了まで待たされるため、命令OP2のメモリアクセス(MEM)ステージにおいて、時刻t4〜t7の4クロック分だけパイプラインが停止する。したがって、ライトバック(WB)ステージでの命令OP2によるシステムレジスタ値の取得は、コプロセッサ実行命令OP1の完了後の時刻t9に実行される。
一方、図12(b)では、ノンブロッキングアクセスが許可されるアプリケーションプログラム用のユーザバンクであるユーザバンクBK5が選択されている。この場合は、命令OP2によるシステムレジスタへのリードアクセスは、コプロセッサ実行命令OP1の完了を待たずに行われる。このため、命令OP2によるシステムレジスタの格納値の取得は時刻t5に実行される。
上述したように、複数のユーザバンクを設け、ノンブロッキングアクセスを許可するアプリケーションプログラムの実行時にノンブロッキングアクセス用のユーザバンクを選択することにより、ノンブロッキングアクセス用のユーザバンクに含まれていないシステムレジスタを確実に保護することができる。
なお、システムレジスタへのノンブロキングアクセスを許可するか否か応じて使用するユーザバンクの選択を行う動作は一例である。例えば、複数のユーザバンクに互いに異なるシステムレジスタ群をマッピングしておき、アプリケーションプログラムに応じて使用するユーザバンクを切り替えてもよい。
その他の実施の形態.
上述した発明の実施の形態1乃至4では、独立したバンク選択ユニット13を設けることとした。しかしながら、バンク選択レジスタ131を各バンクのいずれかのシステムレジスタにマッピングする、つまり、バンク選択レジスタ131に保持すべきバンク識別情報を、各バンクのシステムレジスタに保持してもよい。この場合は、デコーダ121乃至124などがシステムレジスタに保持されたバンク識別情報を用いて、アクセス要求のデコードを行えばよい。
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
発明の実施の形態1にかかるプロセッサシステムの構成図である。 発明の実施の形態1にかかるプロセッサシステムにおけるユーザバンクへのマッピングの一例を示す図である。 発明の実施の形態1にかかるプロセッサシステムの動作を示すフローチャートである。 発明の実施の形態1にかかるプロセッサシステムの効果を説明するための図である。 発明の実施の形態2にかかるプロセッサシステムの構成図である。 発明の実施の形態3にかかるプロセッサシステムの構成図である。 発明の実施の形態3にかかるプロセッサシステムの動作を示すフローチャートである。 発明の実施の形態3にかかるプロセッサシステムの他の構成例を示す図である。 発明の実施の形態4にかかるプロセッサシステムの構成図である。 発明の実施の形態4にかかるプロセッサシステムが備えるシステムレジスタバンクの構成を示す図である。 発明の実施の形態4にかかるプロセッサシステムの動作を示すフローチャートである。 発明の実施の形態4にかかるプロセッサシステムの効果を説明するための図である。 従来のプロセッサシステムの概略構成を示す図である。
符号の説明
1〜5 プロセッサシステム
10、30、40 CPU(Central Processing Unit)コア
11A、11B 機能ユニット
12、22、32、42 システムレジスタバンク
13 バンク選択ユニット
131 バンク選択レジスタ
14 システムレジスタバス
15 命令バス
16 データバス
35 特権ビット格納部
36 アクセス制御部
121〜124、221〜223、321〜323、421〜425 デコーダ

Claims (14)

  1. CPUコアと、
    前記CPUコアに接続される機能ユニットと、
    前記機能ユニットの制御情報及び動作状態の少なくとも一方を格納するシステムレジスタ群とを備え、
    前記システムレジスタ群は、それぞれが1又は複数のシステムレジスタを含む複数のレジスタバンクに分割されているプロセッサシステムであって、
    前記複数のレジスタバンクの少なくとも1つは、前記CPUコアで実行されるアプリケーションプログラムによるアクセスが許可されるユーザバンクであり、
    前記ユーザバンクを除く他の非ユーザバンクに対する前記アプリケーションプログラムによるアクセスが禁止され、
    前記ユーザバンクに含まれる第1のシステムレジスタは、前記非ユーザバンクに含まれる複数の第2のシステムレジスタのいずれかと対応付けられ、前記第1のシステムレジスタ及びこれに対応付けられた第2のシステムレジスタは、互いの格納情報が同一内容となるように更新される、
    プロセッサシステム。
  2. 前記CPUコアで実行されるオペレーティングシステムプログラムは、前記複数のレジスタバンクのすべてにアクセス可能である、請求項1に記載のプロセッサシステム。
  3. 前記複数のレジスタバンクの各々を一意に識別可能なバンク識別情報を保持可能なバンク選択部と、
    前記バンク識別情報、及び前記CPUコアが出力するシステムレジスタへのアクセス要求に含まれるレジスタ指定情報に基づいて、アクセス先システムレジスタを選択するデコーダをさらに備える、請求項1又は2に記載のプロセッサシステム。
  4. 前記デコーダは、前記非ユーザバンクに含まれる前記複数の第2のシステムレジスタのうち少なくとも1つを、前記バンク識別情報が前記非ユーザバンクを示す場合及び前記ユーザバンクを示す場合の両方の場合に選択することによって、前記第1のシステムレジスタと前記複数の第2のシステムレジスタのいずれかとの対応付けを行う、前記デコーダにより選択される、請求項に記載のプロセッサシステム。
  5. 前記デコーダは、前記バンク選択部によって保持される前記バンク識別情報が前記ユーザバンクを示す場合に、前記システムレジスタへの1つのアクセス要求に応じて、前記ユーザバンクに含まれる前記第1のシステムレジスタ、及び前記非ユーザバンクに含まれ且つ前記第1のシステムレジスタに対応付けられた第2のシステムレジスタを共に選択する、請求項又はに記載のプロセッサシステム。
  6. 前記デコーダがアクセス先システムレジスタを選択するためのデコード論理は、前記CPUコアで実行されるアプリケーションプログラムの種別に応じて変更可能である、請求項乃至のいずれか1項に記載のプロセッサシステム。
  7. 前記非ユーザバンクに含まれる前記複数の第2のシステムレジスタのうち前記アプリケーションプログラムによるアクセスが許可されるシステムレジスタと前記第1のシステムレジスタとの対応関係を定めたマッピング情報を保持できるよう構成されている、請求項1に記載のプロセッサシステム。
  8. 前記複数のレジスタバンクの各々を一意に識別可能なバンク識別情報を保持するバンク選択部と、
    前記バンク識別情報と、前記CPUコアが出力するシステムレジスタへのアクセス要求に含まれるレジスタ指定情報と、前記マッピング情報とに基づいて、アクセス先システムレジスタを選択するデコーダをさらに備える、請求項に記載のプロセッサシステム。
  9. 前記アプリケーションプログラムに割り当てられた権限レベルに応じて、前記アプリケーションプロラムによる前記ユーザバンクへのアクセス要求を制限するアクセス制御部をさらに備える、請求項1乃至のいずれか1項に記載のプロセッサシステム。
  10. 複数の前記ユーザバンクを備え、
    前記アプリケーションプログラムの種別に応じて、前記アプリケーションプログラムがアクセス可能な前記ユーザバンクを切り替える、請求項1乃至のいずれか1項に記載のプロセッサシステム。
  11. 前記機能ユニットは、浮動小数点演算ユニット、乗算・積和演算ユニット、前記CPUコアによるメモリアクセス要求を制御するメモリ保護ユニット、前記CPUコアで実行されるプログラムの性能情報を収集するデバッグユニット、シリアルインタフェース、タイマ、及びプログラマブル・カウンタのいずれかである、請求項1乃至10のいずれか1項に記載のプロセッサシステム。
  12. 前記システムレジスタ群は、前記CPUコア、前記CPUコアで実行されるプログラム、及び前記機能ユニットに関する状態を保持する、請求項1乃至11のいずれか1項に記載のプロセッサシステム。
  13. 請求項1乃至12のいずれか1項に記載のプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法であって、
    前記CPUコアで実行されるプログラムが、アプリケーションプログラムである場合には、前記複数のレジスタバンクのうち前記ユーザバンクを選択し、
    アクセス可能なレジスタバンクの変更権限を前記アプリケーションプログラムに与えない状態で、前記アプリケーションプログラムの実行を開始することを特徴とする処理方法。
  14. 前記プロセッサシステムは、複数のユーザバンクを備えており、
    前記アプリケーションプログラムの種別に応じて、前記アプリケーションプログラムがアクセス可能なユーザバンクを前記複数のユーザバンクから選択することを特徴とする、請求項13に記載の処理方法。
JP2006185087A 2006-07-05 2006-07-05 プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法 Expired - Fee Related JP5289688B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006185087A JP5289688B2 (ja) 2006-07-05 2006-07-05 プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法
US11/822,235 US20080010426A1 (en) 2006-07-05 2007-07-03 Processor system and processing method for operating system program in processor system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006185087A JP5289688B2 (ja) 2006-07-05 2006-07-05 プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法

Publications (2)

Publication Number Publication Date
JP2008015720A JP2008015720A (ja) 2008-01-24
JP5289688B2 true JP5289688B2 (ja) 2013-09-11

Family

ID=38920330

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006185087A Expired - Fee Related JP5289688B2 (ja) 2006-07-05 2006-07-05 プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法

Country Status (2)

Country Link
US (1) US20080010426A1 (ja)
JP (1) JP5289688B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5896423B2 (ja) * 2010-02-23 2016-03-30 アストロノーティクス コーポレイション オブ アメリカAstronautics Corporation Of America 単一プロセッサ・クラス3電子航空バッグ
US9697150B2 (en) * 2013-09-04 2017-07-04 Jory Schwach Real-time embedded system
US9727353B2 (en) * 2015-10-30 2017-08-08 International Business Machines Corporation Simultaneously capturing status information for multiple operating modes
US20190205061A1 (en) * 2017-12-29 2019-07-04 Intel Corporation Processor, method, and system for reducing latency in accessing remote registers
US10411705B1 (en) * 2018-09-28 2019-09-10 Arm Limited System, method and apparatus for electronic circuit

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2934003B2 (ja) * 1990-09-14 1999-08-16 株式会社日立製作所 データ処理装置
JPH1011352A (ja) * 1996-06-19 1998-01-16 Hitachi Ltd データ処理装置およびそのレジスタアドレス変換方法
TW343318B (en) * 1996-09-23 1998-10-21 Advanced Risc Mach Ltd Register addressing in a data processing apparatus
US5903919A (en) * 1997-10-07 1999-05-11 Motorola, Inc. Method and apparatus for selecting a register bank
JP2001005726A (ja) * 1999-04-20 2001-01-12 Nec Corp メモリアドレス空間拡張装置及びプログラムを記憶した記憶媒体
US7086035B1 (en) * 1999-05-13 2006-08-01 International Business Machines Corporation Method and system for counting non-speculative events in a speculative processor
US6636971B1 (en) * 1999-08-02 2003-10-21 Intel Corporation Method and an apparatus for secure register access in electronic device
US6973562B1 (en) * 2000-01-14 2005-12-06 Advanced Micro Devices, Inc. Establishing an operating mode in a processor
US6631460B1 (en) * 2000-04-27 2003-10-07 Institute For The Development Of Emerging Architectures, L.L.C. Advanced load address table entry invalidation based on register address wraparound
US6666383B2 (en) * 2001-05-31 2003-12-23 Koninklijke Philips Electronics N.V. Selective access to multiple registers having a common name
GB2385956B (en) * 2002-03-01 2004-06-02 3Com Corp Key based register locking mechanism
US7149862B2 (en) * 2002-11-18 2006-12-12 Arm Limited Access control in a data processing apparatus
US7171539B2 (en) * 2002-11-18 2007-01-30 Arm Limited Apparatus and method for controlling access to a memory
US7398390B2 (en) * 2003-08-08 2008-07-08 Hewlett-Packard Development Company, L.P. Method and system for securing a computer system

Also Published As

Publication number Publication date
JP2008015720A (ja) 2008-01-24
US20080010426A1 (en) 2008-01-10

Similar Documents

Publication Publication Date Title
KR101485068B1 (ko) 복수의 프로세서들을 포함하는 시스템 및 그 동작 방법
US8850168B2 (en) Processor apparatus and multithread processor apparatus
JP4939387B2 (ja) データ処理装置及びアドレス空間保護方法
KR100989215B1 (ko) 다중 레지스터 컨텍스트를 갖는 데이터 프로세싱 시스템및 이를 위한 방법
US7590774B2 (en) Method and system for efficient context swapping
JP5044387B2 (ja) 情報処理装置及びそのスタックポインタ更新方法
US6230259B1 (en) Transparent extended state save
US7228401B2 (en) Interfacing a processor to a coprocessor in which the processor selectively broadcasts to or selectively alters an execution mode of the coprocessor
JP6005392B2 (ja) ルーティングのための方法及び装置
JP5289688B2 (ja) プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法
JP5414057B2 (ja) マイクロコンピュータ
EP1760580B1 (en) Processing operation information transfer control system and method
US5928356A (en) Method and apparatus for selectively controlling groups of registers
JP3773470B2 (ja) データ処理装置内でのコプロセッサ命令の取り扱い
US9946665B2 (en) Fetch less instruction processing (FLIP) computer architecture for central processing units (CPU)
US7890740B2 (en) Processor comprising a first and a second mode of operation and method of operating the same
JP3659048B2 (ja) オペレーティングシステム及び計算機
JP2001188745A (ja) 制御装置及び制御方法
JP2009098819A (ja) メモリシステム、メモリシステムの制御方法、及びコンピュータシステム
JP2022509722A (ja) 例外原因イベントをハンドリングするための装置及び方法
EP1104899A2 (en) Data processing apparatus and method of controlling the same
JP2011198048A (ja) マイクロプロセッサ、電子制御ユニット、アドレス変換方法
JPH05241828A (ja) 命令処理装置
JP2004038995A (ja) マルチos構成方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090413

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110502

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110719

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120410

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120605

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130329

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130410

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130528

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130605

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees