JP2019095952A - プロセッサ、情報処理装置および処理方法 - Google Patents

プロセッサ、情報処理装置および処理方法 Download PDF

Info

Publication number
JP2019095952A
JP2019095952A JP2017223376A JP2017223376A JP2019095952A JP 2019095952 A JP2019095952 A JP 2019095952A JP 2017223376 A JP2017223376 A JP 2017223376A JP 2017223376 A JP2017223376 A JP 2017223376A JP 2019095952 A JP2019095952 A JP 2019095952A
Authority
JP
Japan
Prior art keywords
instruction
field
conversion table
predetermined field
bit
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.)
Pending
Application number
JP2017223376A
Other languages
English (en)
Inventor
小林 浩
Hiroshi Kobayashi
浩 小林
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.)
Sony Semiconductor Solutions Corp
Original Assignee
Sony Semiconductor Solutions 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 Sony Semiconductor Solutions Corp filed Critical Sony Semiconductor Solutions Corp
Priority to JP2017223376A priority Critical patent/JP2019095952A/ja
Priority to US16/763,492 priority patent/US11126434B2/en
Priority to PCT/JP2018/030256 priority patent/WO2019102662A1/ja
Publication of JP2019095952A publication Critical patent/JP2019095952A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/30181Instruction operation extension or modification
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • 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/3802Instruction prefetching

Landscapes

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

Abstract

【課題】フェッチされた命令の所定のフィールドを拡張して、命令の種類やオペランドの長さを確保する。【解決手段】命令変換テーブルは、命令の所定のフィールドのビットパターンに関連付けて前記所定のフィールドより長い拡張フィールドを記憶する。拡張フィールド取得部は、フェッチされた命令の所定のフィールドのビットパターンによって命令変換テーブルを参照して、拡張フィールドを取得する。命令デコーダは、フェッチされた命令の所定のフィールドに代えて拡張フィールドを備える新たな命令について、デコード処理を行う。【選択図】図1

Description

本技術は、プロセッサに関する。詳しくは、メモリから命令をフェッチしてデコード処理を行うプロセッサ、情報処理装置、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
従来のプロセッサ、特に、CISC(Complex Instruction Set Computer)、VLIW(Very Long Instruction Word)やTTA(Transport Triggered Architecture)においては、複数の命令の組合せを実現するために命令語長が長くなる傾向がある。アプリケーションごとに使用される命令の組合せ出現頻度は異なる。そのため、特定のアプリケーションでは無駄が生じてコードサイズが大きくなるという問題がある。
一方、従来のプロセッサにおいては、命令のビットフィールド割当ては命令デコーダの設計の時点で確定させる必要がある。したがって、アプリケーションプログラムを実行するときには命令デコーダの論理が固定されているため、命令のビットフィールド割当てを変更することはできない。
そこで、例えば、命令セットを拡張するために可変長命令セットの命令をデコードする方法が提案されている(例えば、特許文献1参照。)。
特開2005−025741号公報
上述の従来技術では、可変長命令セットの命令をデコードすることにより、命令セットを拡張している。しかしながら、この従来技術では、エスケープコードを使用して命令空間を拡張しており、エスケープコードを解釈するための制御が複雑になるという問題がある。また、エスケープコードによる拡張命令の頻度によっては、コードサイズが大きくなるという問題がある。
本技術はこのような状況に鑑みて生み出されたものであり、フェッチされた命令の所定のフィールドを変換することにより、実質的な命令語長を拡張して、命令の種類やオペランドの長さを確保することを目的とする。
本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、命令の所定のフィールドのビットパターンに関連付けて上記所定のフィールドより長い拡張フィールドを記憶する命令変換テーブルと、フェッチされた命令の上記所定のフィールドのビットパターンによって上記命令変換テーブルを参照して上記拡張フィールドを取得する拡張フィールド取得部と、上記フェッチされた命令の上記所定のフィールドに代えて上記拡張フィールドを備える新たな命令についてデコード処理を行う命令デコーダとを具備するプロセッサ、そのプロセッサを含む情報処理装置およびそれらにおける処理方法である。これにより、フェッチされた命令における所定のフィールドより長い拡張フィールドを備える新たな命令としてデコード処理を行うという作用をもたらす。
また、この第1の側面において、上記命令変換テーブルは、オペコードの少なくとも一部のビットパターンを上記所定のフィールドとして当該ビットパターンに関連付けて上記新たな命令のオペコードを上記拡張フィールドとして記憶するようにしてもよい。これにより、フェッチされた命令におけるオペコードより長いオペコードを備える新たな命令としてデコード処理を行うという作用をもたらす。
また、この第1の側面において、上記命令変換テーブルは、オペコードの少なくとも一部のビットパターンを上記所定のフィールドとして当該ビットパターンに関連付けて上記新たな命令のオペコードとオペランドの少なくとも一部とを上記拡張フィールドとして記憶するようにしてもよい。これにより、新たなオペランドを備える新たな命令としてデコード処理を行うという作用をもたらす。
また、この第1の側面において、上記命令変換テーブルは、上記拡張フィールドとしてモード情報を含み、上記命令デコーダは、上記モード情報に応じて上記新たな命令におけるオペランドを解釈するようにしてもよい。これにより、モード情報を含む拡張フィールドを備える新たな命令としてデコード処理を行うという作用をもたらす。
また、この第1の側面において、上記拡張フィールド取得部は、上記フェッチされた命令の上記所定のフィールドのビットパターンが特定のパターンであることを条件として上記拡張フィールドを取得し、上記命令デコーダは、上記フェッチされた命令の上記所定のフィールドのビットパターンが上記特定のパターンでない場合には上記フェッチされた命令についてデコード処理を行うようにしてもよい。これにより、命令の一部についてのみ拡張フィールドを備える新たな命令としてデコード処理を行うという作用をもたらす。
また、この第1の側面において、上記命令変換テーブルの記憶内容を書き替える書替え実行部をさらに具備してもよい。これにより、拡張フィールドを備える新たな命令を動的に変更するという作用をもたらす。
また、この第1の側面において、上記書替え実行部は、上記命令デコーダによってデコードされた命令が上記命令変換テーブルの書替え命令であった場合に、その命令によって指定された内容に上記命令変換テーブルを書き替えるようにしてもよい。これにより、書替え命令を用いて新たな命令を動的に変更するという作用をもたらす。
本技術によれば、フェッチされた命令の所定のフィールドを拡張して、命令の種類やオペランドの長さを確保することができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
本技術の第1の実施の形態における情報処理装置の構成例を示す図である。 本技術の第1の実施の形態における変換前の命令フォーマットの一例を示す図である。 本技術の第1の実施の形態におけるオペコード拡張の一例を示す図である。 本技術の第1の実施の形態における命令変換テーブル121による命令変換の一例を示す図である。 本技術の第1の実施の形態におけるプロセッサ100の処理手順の一例を示す流れ図である。 本技術の第2の実施の形態における変換前の命令フォーマットの一例を示す図である。 本技術の第2の実施の形態における変換後の命令フォーマットの一例を示す図である。 本技術の第2の実施の形態における命令変換テーブル121による命令変換の一例を示す図である。 本技術の第3の実施の形態における変換前後の命令フォーマットの一例を示す図である。 本技術の第3の実施の形態における命令変換テーブル121による命令変換の一例を示す図である。 本技術の第3の実施の形態におけるプロセッサ100の処理手順の一例を示す流れ図である。 本技術の第4の実施の形態における情報処理装置の構成例を示す図である。 本技術の第4の実施の形態における命令変換テーブル121の書替えを行うプログラムの一例を示す図である。
以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(オペコード拡張の例)
2.第2の実施の形態(オペランド拡張の例)
3.第3の実施の形態(一部の命令についてのみ拡張する例)
4.第4の実施の形態(命令参照テーブルを切り替える例)
<1.第1の実施の形態>
[情報処理装置の構成]
図1は、本技術の第1の実施の形態における情報処理装置の構成例を示す図である。この情報処理装置は、プロセッサ100およびメモリ200を備える。
メモリ200は、プロセッサ100における実行に必要なプログラムの命令やデータを記憶するものである。以下では、プロセッサ100がメモリ200から命令を読み出して(命令フェッチ)、その命令をデコードする一連の流れに着目して説明する。
プロセッサ100は、メモリ200から命令を読み出して、その命令を実行するものである。このプロセッサ100は、フェッチユニット110と、命令変換部120と、命令デコーダ130と、実行ユニット140とを備える。
フェッチユニット110は、メモリ200から命令を読み出す命令フェッチ処理を行うものである。このフェッチユニット110は、メモリ200に記憶されているプログラムの命令列から順番に命令を読み出す。このフェッチユニット110は、基本的にはアドレスの昇順に命令を読み出すが、分岐命令などにより分岐(ジャンプ)が生じる場合にはその分岐先から命令を読み出すことになる。
命令変換部120は、フェッチユニット110によって読み出された命令の所定のフィールドを置換して、命令変換するものである。この命令変換部120は、命令変換テーブル121および拡張フィールド取得部122を備える。
命令変換テーブル121は、命令の所定のフィールドのビットパターンに関連付けて、拡張フィールドを記憶するものである。この拡張フィールドは、元の命令の所定のフィールドよりも長いビット長を有する。
拡張フィールド取得部122は、フェッチされた命令の所定のフィールドのビットパターンによって、命令変換テーブル121を参照して、拡張フィールドを取得するものである。元の命令の所定のフィールドに代えて、この取得された拡張フィールドを置換することにより、命令変換が行われる。
命令デコーダ130は、命令変換部120によって変換された新たな命令についてデコード処理を行うものである。この命令デコーダ130によるデコード処理の結果、プロセッサ100の各部に対する制御が行われる。例えば、実行ユニット140における命令実行が制御される。
実行ユニット140は、命令デコーダ130によるデコード結果に従って、各種の命令を実行するものである。例えば、メモリ200へのアクセスや、(図示しない)演算器における演算処理などが実行される。
[命令フォーマット]
図2は、本技術の第1の実施の形態における変換前の命令フォーマットの一例を示す図である。
ここでは、命令長32ビットの命令を想定する。MSB(Most Significant Bit)側の第31ビットから第24ビットの8ビットがオペコードであり、残りの第23ビットから第0ビットの24ビットがオペランドである。
一般的なプロセッサにおいては、同図に示すような各種の命令が命令セットとして設けられる。システム関連命令としては、主にオペレーティングシステムによるシステム関数呼び出しのために使用されるシステムコール命令(syscall)や、何もしない命令(NOP:No Operation)等が分類される。
ロード命令は、メモリ200からの読出しを行うための命令である。ストア命令は、メモリ200への書込みを行うための命令である。レジスタ間転送命令は、プロセッサ100の内部レジスタ間の転送を行うための命令である。
加算命令は、加算処理を行うための命令である。減算命令は、減算処理を行うための命令である。論理演算命令は、論理演算処理を行うための命令である。乗算命令は、乗算処理を行うための命令である。除算命令は、除算処理を行うための命令である。
分岐命令は、プログラムの命令列における分岐を行うための命令である。分岐命令には、ある条件を満たした(または満たさなかった)ときに分岐を行う条件分岐命令と、無条件に分岐を行う無条件分岐命令とがある。
これらの命令を備えることを想定した場合、仮にそれぞれの命令の種類が32種類であるとすると、計320命令を設けることになる。オペコードとして8ビットを想定すると、表現できるのは最大256命令までである。この場合、例えば、乗算命令および除算命令を命令セットから除いて、残りの256命令を採用することが考えられる。しかし、乗算命令を多く必要とするアプリケーションもあり、命令の取捨選択は一概に決定できるものではない。そこで、この実施の形態においては、以下のようにオペコードを拡張することを考える。
図3は、本技術の第1の実施の形態におけるオペコード拡張の一例を示す図である。
この例では、8ビットのオペコードを12ビットに拡張して、計36ビットの命令に変換している。これにより、12ビットのオペコードにより表現できるのは最大4096命令となり、命令セットの設計の自由度を向上させることができる。
[命令変換テーブル]
図4は、本技術の第1の実施の形態における命令変換テーブル121による命令変換の一例を示す図である。
上述のように、この実施の形態においては、変換前の命令のオペコードのビット長は8ビットである。命令変換テーブル121は、オペコードの8ビットのビットパターンに関連付けて、256個の拡張後の12ビットのオペコードを拡張フィールドとして記憶する。
拡張フィールド取得部122は、フェッチされた命令の8ビットのオペコードのビットパターンによって、命令変換テーブル121を参照して、拡張後の12ビットのオペコードを取得する。そして、元の命令の8ビットのオペコードに代えて、12ビットのオペコードを置換することにより、36ビット長の命令が得られる。このとき、24ビットのオペランドについては、元の命令のオペランドがそのまま使用される。
ただし、同図から明らかなように、命令変換テーブル121に記憶される拡張後の12ビットのオペコードは、256個である。したがって、命令変換テーブル121の記憶内容を変更しないことを前提とすれば、一度に使用可能な命令の種類は256命令である。それ以外の命令を使用するためには、命令変換テーブル121の記憶内容を変更する必要が生じる。これについては、後述の第4の実施の形態において説明する。
[動作]
図5は、本技術の第1の実施の形態におけるプロセッサ100の処理手順の一例を示す流れ図である。
メモリ200からフェッチユニット110によって命令がフェッチされると、拡張フィールド取得部122は、フェッチされた命令からオペコードのビットフィールドを抽出する(ステップS911)。この実施の形態においては、上述のように、MSB側の第31ビットから第24ビットの8ビットがオペコードである。
そして、拡張フィールド取得部122は、抽出された8ビットのオペコードのビットフィールドによって命令変換テーブル121を参照して、12ビットのオペコードを取得する(ステップS913)。これにより、オペコードが12ビットに拡張された命令に変換される。
命令デコーダ130は、拡張フィールド取得部122により取得された12ビットのオペコードと、元の命令のオペランドとを結合した、新たな命令をデコードする(ステップS914)。
このように、本技術の第1の実施の形態によれば、命令変換テーブル121を参照することにより、命令のオペコードを拡張することができる。
<2.第2の実施の形態>
上述の第1の実施の形態では、命令のオペコードを8ビットから12ビットに拡張する一方で、24ビットのオペランドについては元の命令のオペランドをそのまま用いていた。この第2の実施の形態では、オペランドとして使用可能なフィールドについて、拡張を図る。なお、プロセッサ100としての基本的な構成については上述の第1の実施の形態と同様であるため、詳細な説明は省略する。
[命令フォーマット]
図6は、本技術の第2の実施の形態における変換前の命令フォーマットの一例を示す図である。
ここでは、上述の第1の実施の形態と同様に、命令長32ビットの命令を想定し、MSB側の8ビットがオペコードであり、残りの24ビットがオペランドである。
この第2の実施の形態においては、オペランドの最上位ビットにモード情報(mode)を設けて、このモード情報によってオペランドのフィールドの解釈を変更することを想定する。すなわち、モード情報が0を示す場合には、レジスタ操作を行う命令として、5ビット分のデスティネーションレジスタを1つと、5ビット分のソースレジスタを2つ指定できるものとし、残りの8ビットはイミディエイト(即値)として用いることができる。レジスタ指定のフィールドとして5ビットずつを想定しているため、それぞれ32個のレジスタを指定することができる。これにより、例えば、2つのソースレジスタの内容とイミディエイトに対して演算を行った結果を、デスティネーションレジスタに保持する処理を行うことができる。
モード情報が1を示す場合には、メモリアクセスを行う命令として、5ビット分のデスティネーションレジスタおよびベースアドレスレジスタをそれぞれ1つずつ指定できるものとし、残りの13ビットはディスプレースメントとして用いることができる。これにより、例えば、ベースアドレスレジスタの内容にディスプレースメントを加算したアドレスにアクセスを行って、その結果をデスティネーションレジスタに保持する処理を行うことができる。
これらの場合、レジスタ指定のビット長や、イミディエイトまたはディスプレースメントについて、24ビットに固定されたオペランドのフィールド内に収める必要がある。したがって、イミディエイトやディスプレースメントのビット長を長くしたい場合でも、ビットフィールドが足りないという問題を生じる。これに対して、この第2の実施の形態では、オペランドの一部を命令変換テーブル121に記憶しておくことにより、オペランドを拡張する。
図7は、本技術の第2の実施の形態における変換後の命令フォーマットの一例を示す図である。
この第2の実施の形態においては、オペランドを2つに分け、前半のオペランド(1)を命令変換テーブル121に記憶して、後半のオペランド(2)としては元の命令のオペランドをそのまま使用する。これにより、例えば、19ビットのイミディエイトまたは24ビットのディスプレースメントを使用することができる。
図8は、本技術の第2の実施の形態における命令変換テーブル121による命令変換の一例を示す図である。
この例では、命令変換テーブル121は、オペコードの8ビットのビットパターンに関連付けて256個のエントリを記憶する。各エントリは、9ビットのオペコード、1ビットのモード情報、5ビットのデスティネーションレジスタ、および、5ビットのソースレジスタまたはベースアドレスレジスタの各フィールドを拡張フィールドとして記憶する。これにより、オペコードだけでなく、オペランドについてもフィールドを拡張する。
このように、本技術の第2の実施の形態によれば、命令変換テーブル121を参照することにより、命令のオペランドを拡張することができる。
<3.第3の実施の形態>
上述の第1または第2の実施の形態では、全ての命令についてオペコードまたはオペランドを拡張していた。しかし、実際には拡張が不要な命令もあり、全ての命令を変換する必要がない場合もある。そこで、この第3の実施の形態では、一部の命令についてのみ変換を行い、他の命令についてはそのままの状態でデコード処理を行うことを想定する。なお、プロセッサ100としての基本的な構成については上述の第1の実施の形態と同様であるため、詳細な説明は省略する。
図9は、本技術の第3の実施の形態における変換前後の命令フォーマットの一例を示す図である。
この第3の実施の形態では、一部の命令のみを命令変換の対象として、それ以外の場合には命令変換を行わないことを想定する。すなわち、拡張フィールド取得部122は、フェッチされた命令の所定のフィールドのビットパターンが特定のパターンであることを条件として拡張フィールドを取得し、特定のパターンでなければ拡張フィールドを取得しない。
例えば、同図におけるaのように、オペコードが「0x000」から「0x0bf」の場合には、拡張フィールド取得部122は拡張フィールドを取得せず、命令デコーダ130はフェッチされた命令についてデコード処理を行う。一方、同図におけるbのように、オペコードが「0x0c0」から「0x0ff」の場合には、拡張フィールド取得部122は拡張フィールドを取得し、命令デコーダ130は拡張フィールドを備える新たな命令についてデコード処理を行う。なお、「0x」は後続の数字が16進数表記であることを意味する。
図10は、本技術の第3の実施の形態における命令変換テーブル121による命令変換の一例を示す図である。
この例では、8ビットのオペコードの上位2ビットが「0b11」であることを条件として、拡張フィールド取得部122は命令変換テーブル121を参照して拡張フィールドを取得する。なお、「0b」は後続の数字が2進数表記であることを意味する。
この例の命令変換テーブル121は、それぞれ20ビットからなる64個のエントリを有し、8ビットのオペコードの下位6ビットのビットフィールドによって参照される。命令変換テーブル121の各エントリは、9ビットのオペコード、1ビットのモード情報、5ビットのデスティネーションレジスタ、5ビットのソースレジスタまたはベースアドレスレジスタの各フィールドを備える。
取得された20ビットの拡張フィールドは、元の命令の24ビットのオペランドと結合されて、計44ビットの新たな命令を形成する。命令デコーダ130はこの新たな命令についてデコード処理を行う。20ビットの拡張フィールドには、9ビットのオペコードに加えて21ビットのオペランド(1)が含まれる。すなわち、元の命令の24ビットのオペランドをオペランド(2)とすると、オペランド(1)とオペランド(2)とを合わせた45ビットのオペランドを構成する。このように、オペコードを拡張するだけでなく、オペランドについても拡張することができる。すなわち、図7において説明したように、例えば、19ビットのイミディエイトまたは24ビットのディスプレースメントを使用することができる。
[動作]
図11は、本技術の第3の実施の形態におけるプロセッサ100の処理手順の一例を示す流れ図である。なお、この第3の実施の形態におけるステップS911、S913およびS914は、上述の第1の実施の形態と同様である。
ステップS911において、フェッチされた命令からオペコードのビットフィールドが抽出されると、その命令が変換対象命令であるか否かが判断される(ステップS912)。変換対象命令であれば(ステップS912:Yes)、拡張フィールド取得部122によって拡張フィールドが取得され(ステップS913)、命令デコーダ130は元の命令のオペランドと結合された新たな命令をデコードする(ステップS914)。
一方、フェッチされた命令が変換対象命令でなければ(ステップS912:No)、命令デコーダ130はフェッチされた命令をデコードする(ステップS915)。
このように、本技術の第3の実施の形態によれば、一部の命令についてのみ変換を行い、他の命令についてはそのままの状態でデコード処理を行うことができる。
<4.第4の実施の形態>
上述の第1乃至第3の実施の形態では、命令変換テーブル121の内容は予め設定されていることを想定していたが、命令変換テーブル121の内容を書き替えることも可能である。この第4の実施の形態では、プログラムの実行中に命令変換テーブル121の内容を動的に書き替える手法について説明する。
[情報処理装置の構成]
図12は、本技術の第4の実施の形態における情報処理装置の構成例を示す図である。この第4の実施の形態における情報処理装置は、命令変換テーブル121を書き替えることによりN個の何れかに切り替えて使用するものである。この書替えは、プログラムに従って実行ユニット140が行う。
[プログラム]
図13は、本技術の第4の実施の形態における命令変換テーブル121の書替えを行うプログラムの一例を示す図である。
第1行目から第5行目は初期化部分である。#ins_defは、変換後の命令が記憶されるメモリ領域のアドレスである。第1行目の命令は、レジスタr4に#ins_defのアドレスを設定するmove命令である。
t0からt3は命令変換テーブル121の4つのエントリである。第2行目から第5行目の命令は、t0からt3に命令変換テーブル121の設定内容をメモリ200からロードするload命令である。これにより、変換後の命令が命令変換テーブル121に設定される。
なお、命令変換テーブル121の初期値をNOPに設定しておくことにより、誤動作を防ぐことができる。
#dataは、データが記憶されるメモリ領域のアドレスである。第11行目は、データアドレスポインタとして使用されるレジスタr4に#dataのアドレスを設定するmove命令である。第12行目から第14行目は、レジスタr0からr2にデータをメモリ200からロードするload命令である。これにより、命令変換テーブル121の切替えを行うことができる。
第15行目の命令は、レジスタr4に#ins_defのアドレスを設定するmove命令である。
第16行目の命令は、t0に命令変換テーブル121の設定内容をメモリ200からロードするload命令である。第17行目の命令は、命令変換テーブル121を参照して拡張フィールドに差し替える命令である。
第18行目の命令は、t0に命令変換テーブル121の設定内容をメモリ200からロードするload命令である。第19行目の命令は、命令変換テーブル121を参照して拡張フィールドに差し替える命令である。
このように、本技術の第4の実施の形態によれば、命令変換テーブル121の内容を動的に切り替えることができる。したがって、上述の例のように、変換により8ビットのオペコードを12ビットに拡張する場合、最大で4096命令の中から任意の256命令を命令変換テーブル121に登録しておき、これを書き替えることにより4096命令を全て実行することが可能になる。
すなわち、本技術の実施の形態によれば、命令語長を縮小することができるため、プログラムのコードサイズを小さくすることができる。また、アプリケーションプログラム毎、または、アプリケーションプログラムの区間(例えばサブルーチン)毎に、命令変換テーブル121の内容をプログラム実行時に変更することにより、コードサイズを最適化することができる。そして、これらによる回路規模や命令フェッチ削減により、消費電力を削減することができる。
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disc)、メモリカード、ブルーレイディスク(Blu-ray(登録商標)Disc)等を用いることができる。
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
なお、本技術は以下のような構成もとることができる。
(1)命令の所定のフィールドのビットパターンに関連付けて前記所定のフィールドより長い拡張フィールドを記憶する命令変換テーブルと、
フェッチされた命令の前記所定のフィールドのビットパターンによって前記命令変換テーブルを参照して前記拡張フィールドを取得する拡張フィールド取得部と、
前記フェッチされた命令の前記所定のフィールドに代えて前記拡張フィールドを備える新たな命令についてデコード処理を行う命令デコーダと
を具備するプロセッサ。
(2)前記命令変換テーブルは、オペコードの少なくとも一部のビットパターンを前記所定のフィールドとして当該ビットパターンに関連付けて前記新たな命令のオペコードを前記拡張フィールドとして記憶する
前記(1)に記載のプロセッサ。
(3)前記命令変換テーブルは、オペコードの少なくとも一部のビットパターンを前記所定のフィールドとして当該ビットパターンに関連付けて前記新たな命令のオペコードとオペランドの少なくとも一部とを前記拡張フィールドとして記憶する
前記(1)または(2)に記載のプロセッサ。
(4)前記命令変換テーブルは、前記拡張フィールドとしてモード情報を含み、
前記命令デコーダは、前記モード情報に応じて前記新たな命令におけるオペランドを解釈する
前記(1)から(3)のいずれかに記載のプロセッサ。
(5)前記拡張フィールド取得部は、前記フェッチされた命令の前記所定のフィールドのビットパターンが特定のパターンであることを条件として前記拡張フィールドを取得し、
前記命令デコーダは、前記フェッチされた命令の前記所定のフィールドのビットパターンが前記特定のパターンでない場合には前記フェッチされた命令についてデコード処理を行う
前記(1)から(4)のいずれかに記載のプロセッサ。
(6)前記命令変換テーブルの記憶内容を書き替える書替え実行部をさらに具備する前記(1)から(5)のいずれかに記載のプロセッサ。
(7)前記書替え実行部は、前記命令デコーダによってデコードされた命令が前記命令変換テーブルの書替え命令であった場合に、その命令によって指定された内容に前記命令変換テーブルを書き替える
前記(6)に記載のプロセッサ。
(8)命令の所定のフィールドのビットパターンに関連付けて前記所定のフィールドより長い拡張フィールドを記憶して、フェッチされた命令の前記所定のフィールドに代えて前記拡張フィールドを備える新たな命令に変換する命令変換部と、
前記新たな命令についてデコード処理を行う命令デコーダと
を具備するプロセッサ。
(9)命令列を記憶するメモリと、
命令の所定のフィールドのビットパターンに関連付けて前記所定のフィールドより長い拡張フィールドを記憶する命令変換テーブルと、
前記メモリからフェッチされた命令の前記所定のフィールドのビットパターンによって前記命令変換テーブルを参照して前記拡張フィールドを取得する拡張フィールド取得部と、
前記フェッチされた命令の前記所定のフィールドに代えて前記拡張フィールドを備える新たな命令についてデコード処理を行う命令デコーダと
を具備する情報処理装置。
(10)命令の所定のフィールドのビットパターンに関連付けて前記所定のフィールドより長い拡張フィールドを記憶する命令変換テーブルを備えるプロセッサにおける処理方法であって、
フェッチされた命令の前記所定のフィールドを抽出する手順と、
前記抽出された前記所定のフィールドのビットパターンによって前記命令変換テーブルを参照して前記拡張フィールドを取得する手順と、
前記フェッチされた命令の前記所定のフィールドに代えて前記拡張フィールドを備える新たな命令についてデコード処理を行う手順と
を具備する処理方法。
100 プロセッサ
110 フェッチユニット
120 命令変換部
121 命令変換テーブル
122 拡張フィールド取得部
130 命令デコーダ
140 実行ユニット
200 メモリ

Claims (10)

  1. 命令の所定のフィールドのビットパターンに関連付けて前記所定のフィールドより長い拡張フィールドを記憶する命令変換テーブルと、
    フェッチされた命令の前記所定のフィールドのビットパターンによって前記命令変換テーブルを参照して前記拡張フィールドを取得する拡張フィールド取得部と、
    前記フェッチされた命令の前記所定のフィールドに代えて前記拡張フィールドを備える新たな命令についてデコード処理を行う命令デコーダと
    を具備するプロセッサ。
  2. 前記命令変換テーブルは、オペコードの少なくとも一部のビットパターンを前記所定のフィールドとして当該ビットパターンに関連付けて前記新たな命令のオペコードを前記拡張フィールドとして記憶する
    請求項1記載のプロセッサ。
  3. 前記命令変換テーブルは、オペコードの少なくとも一部のビットパターンを前記所定のフィールドとして当該ビットパターンに関連付けて前記新たな命令のオペコードとオペランドの少なくとも一部とを前記拡張フィールドとして記憶する
    請求項1記載のプロセッサ。
  4. 前記命令変換テーブルは、前記拡張フィールドとしてモード情報を含み、
    前記命令デコーダは、前記モード情報に応じて前記新たな命令におけるオペランドを解釈する
    請求項1記載のプロセッサ。
  5. 前記拡張フィールド取得部は、前記フェッチされた命令の前記所定のフィールドのビットパターンが特定のパターンであることを条件として前記拡張フィールドを取得し、
    前記命令デコーダは、前記フェッチされた命令の前記所定のフィールドのビットパターンが前記特定のパターンでない場合には前記フェッチされた命令についてデコード処理を行う
    請求項1記載のプロセッサ。
  6. 前記命令変換テーブルの記憶内容を書き替える書替え実行部をさらに具備する請求項1記載のプロセッサ。
  7. 前記書替え実行部は、前記命令デコーダによってデコードされた命令が前記命令変換テーブルの書替え命令であった場合に、その命令によって指定された内容に前記命令変換テーブルを書き替える
    請求項6記載のプロセッサ。
  8. 命令の所定のフィールドのビットパターンに関連付けて前記所定のフィールドより長い拡張フィールドを記憶して、フェッチされた命令の前記所定のフィールドに代えて前記拡張フィールドを備える新たな命令に変換する命令変換部と、
    前記新たな命令についてデコード処理を行う命令デコーダと
    を具備するプロセッサ。
  9. 命令列を記憶するメモリと、
    命令の所定のフィールドのビットパターンに関連付けて前記所定のフィールドより長い拡張フィールドを記憶する命令変換テーブルと、
    前記メモリからフェッチされた命令の前記所定のフィールドのビットパターンによって前記命令変換テーブルを参照して前記拡張フィールドを取得する拡張フィールド取得部と、
    前記フェッチされた命令の前記所定のフィールドに代えて前記拡張フィールドを備える新たな命令についてデコード処理を行う命令デコーダと
    を具備する情報処理装置。
  10. 命令の所定のフィールドのビットパターンに関連付けて前記所定のフィールドより長い拡張フィールドを記憶する命令変換テーブルを備えるプロセッサにおける処理方法であって、
    フェッチされた命令の前記所定のフィールドを抽出する手順と、
    前記抽出された前記所定のフィールドのビットパターンによって前記命令変換テーブルを参照して前記拡張フィールドを取得する手順と、
    前記フェッチされた命令の前記所定のフィールドに代えて前記拡張フィールドを備える新たな命令についてデコード処理を行う手順と
    を具備する処理方法。
JP2017223376A 2017-11-21 2017-11-21 プロセッサ、情報処理装置および処理方法 Pending JP2019095952A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2017223376A JP2019095952A (ja) 2017-11-21 2017-11-21 プロセッサ、情報処理装置および処理方法
US16/763,492 US11126434B2 (en) 2017-11-21 2018-08-14 Processor, information processing apparatus, and processing method for converting a field of an instruction
PCT/JP2018/030256 WO2019102662A1 (ja) 2017-11-21 2018-08-14 プロセッサ、情報処理装置および処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017223376A JP2019095952A (ja) 2017-11-21 2017-11-21 プロセッサ、情報処理装置および処理方法

Publications (1)

Publication Number Publication Date
JP2019095952A true JP2019095952A (ja) 2019-06-20

Family

ID=66631574

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017223376A Pending JP2019095952A (ja) 2017-11-21 2017-11-21 プロセッサ、情報処理装置および処理方法

Country Status (3)

Country Link
US (1) US11126434B2 (ja)
JP (1) JP2019095952A (ja)
WO (1) WO2019102662A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021025490A1 (ko) * 2019-08-06 2021-02-11 주식회사 아이씨티케이 홀딩스 프로세서, 프로세서의 동작 방법 및 이를 포함한 전자 장치

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08286911A (ja) * 1995-04-11 1996-11-01 Mitsubishi Electric Corp 機械語命令翻訳方法
SE520511C2 (sv) * 1997-12-02 2003-07-22 Ericsson Telefon Ab L M Processor och förfarande för instruktionsavkodning
US6662361B1 (en) * 2000-01-14 2003-12-09 International Business Machines Corporation Method, system, program, and data structures for transforming an instruction in a first bit architecture to an instruction in a second bit architecture
JP3729759B2 (ja) * 2001-08-07 2005-12-21 株式会社ルネサステクノロジ 圧縮された命令コードを読み出すマイクロコントローラ、命令コードを圧縮して格納するプログラムメモリ
JP4035004B2 (ja) * 2002-06-26 2008-01-16 株式会社ルネサステクノロジ 情報処理装置
US7917734B2 (en) 2003-06-30 2011-03-29 Intel Corporation Determining length of instruction with multiple byte escape code based on information from other than opcode byte
EP1899877A4 (en) * 2005-06-27 2011-12-28 Arithmosys Inc METHOD FOR SPECIFICATION OF STATE-OF-THE-ART TRANSACTION-ORIENTED SYSTEMS AND FLEXIBLE PICTURE DEVICES TO A STRUCTURALLY CONFIGURABLE IN-STORAGE PROCESSING SEMICONDUCTOR COMPONENT
JP4986431B2 (ja) 2005-09-29 2012-07-25 ルネサスエレクトロニクス株式会社 プロセッサ
US7703088B2 (en) * 2005-09-30 2010-04-20 Intel Corporation Compressing “warm” code in a dynamic binary translation environment
WO2012103359A2 (en) * 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
KR101612594B1 (ko) * 2011-01-27 2016-04-14 소프트 머신즈, 인크. 프로세서의 변환 룩 어사이드 버퍼를 이용하는 게스트 명령-네이티브 명령 레인지 기반 매핑

Also Published As

Publication number Publication date
WO2019102662A1 (ja) 2019-05-31
US20200310806A1 (en) 2020-10-01
US11126434B2 (en) 2021-09-21

Similar Documents

Publication Publication Date Title
KR101019347B1 (ko) 프리―디코딩 가변 길이 명령들
US7979676B2 (en) Method for instructing a data processor to process data
JP3898712B2 (ja) 3バイトのエスケープ・オペコードを使用した命令セットの拡張
JP2816248B2 (ja) データプロセッサ
US20060174089A1 (en) Method and apparatus for embedding wide instruction words in a fixed-length instruction set architecture
JP4228241B2 (ja) 演算処理装置
JPH1049369A (ja) データ処理装置
WO2019102662A1 (ja) プロセッサ、情報処理装置および処理方法
JP2007122626A (ja) マイクロプロセッサ
US5774694A (en) Method and apparatus for emulating status flag
JP3901670B2 (ja) データ処理装置
JP2007004475A (ja) プロセッサ及びプログラム実行方法
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
JP3472504B2 (ja) 命令解読方法、命令解読装置及びデータ処理装置
JP5263497B2 (ja) 信号処理プロセッサ及び半導体装置
JP2004005738A5 (ja)
JP5263498B2 (ja) 信号処理プロセッサ及び半導体装置
JP2006079451A (ja) 情報処理装置及び情報処理方法
KR20000003447A (ko) 무조건 분기 명령어의 수행 시간을 줄이기 위한 분기 방법
JP2000099329A (ja) プロセッサ