JP2006079451A - 情報処理装置及び情報処理方法 - Google Patents
情報処理装置及び情報処理方法 Download PDFInfo
- Publication number
- JP2006079451A JP2006079451A JP2004264425A JP2004264425A JP2006079451A JP 2006079451 A JP2006079451 A JP 2006079451A JP 2004264425 A JP2004264425 A JP 2004264425A JP 2004264425 A JP2004264425 A JP 2004264425A JP 2006079451 A JP2006079451 A JP 2006079451A
- Authority
- JP
- Japan
- Prior art keywords
- code
- function
- information
- program
- instruction code
- 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.)
- Withdrawn
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
【課題】プログラムコード領域を縮小する。
【解決手段】コードRAM2は、複数のファンクションによって構築されたプログラムを記憶する。各ファンクションには、プログラムコード領域を縮小するため、オペコードのインデックスが記述され、オペコードのアドレスデータとインデックスとの対応関係が記述される。オペコードROM163,164は、全てのオペコードを予め記憶し、コード変換用RAM161,162は、オペコードのアドレスデータとインデックスとの対応関係を示すOTを記憶する。デコード部160は、プログラム実行時、ファンクションの記述に従い、OTをファンクション毎に書き替え、OTを参照して、インデックスからアドレスデータを取得し、このアドレスデータを用いてオペコードROM163,164からオペコードを取得する。
【選択図】図4
【解決手段】コードRAM2は、複数のファンクションによって構築されたプログラムを記憶する。各ファンクションには、プログラムコード領域を縮小するため、オペコードのインデックスが記述され、オペコードのアドレスデータとインデックスとの対応関係が記述される。オペコードROM163,164は、全てのオペコードを予め記憶し、コード変換用RAM161,162は、オペコードのアドレスデータとインデックスとの対応関係を示すOTを記憶する。デコード部160は、プログラム実行時、ファンクションの記述に従い、OTをファンクション毎に書き替え、OTを参照して、インデックスからアドレスデータを取得し、このアドレスデータを用いてオペコードROM163,164からオペコードを取得する。
【選択図】図4
Description
本発明は、情報処理装置及び命令コードの圧縮方法に関するものである。
従来より、命令コードの圧縮を行う情報処理装置がある(例えば、特許文献1参照)。この情報処理装置は、命令コードの使用率に従って短命令のコードに置き換えて全体のコードサイズを小さくしている。
特開平11−224199号公報(第5頁−第6頁、図1)
しかし、従来のこのような情報処理装置では、プログラムの一部分のみの命令コードの短縮しかできない。特に、情報処理装置として、VLIW方式のプロセッサを備えたものでは、その特性上、プログラムコード領域が通常のプロセッサよりも大きくなってしまう。
従って、VLIW方式のプロセッサを備えた情報処理装置においては、プログラムの一部分のみの命令コードを短縮しただけでは、すべての命令コードに対する短縮効果は現れてこない。
本発明は、このような従来の問題点に鑑みてなされたもので、プログラムコード領域を縮小することが可能な情報処理装置及び命令コードの圧縮方法を提供することを目的とする。
この目的を達成するため、本発明の第1の観点に係る情報処理装置は、
プログラムを構築するファンクションの内容を前記プログラムの実行可能な命令コードに変換して前記プログラムを実行する情報処理装置において、
前記命令コードの代わりに前記命令コードを識別するための識別情報が記述され、さらに前記命令コードと前記識別情報との対応関係情報が記述されたファンクションを記憶するファンクション記憶手段と、
前記対応関係情報を記憶するための対応関係情報記憶手段と、
前記プログラムの実行時、前記ファンクション毎に、前記対応関係情報記憶手段に既に記憶されている対応関係情報を、前記ファンクション記憶手段が記憶する前記対応関係情報に書き替える情報書き替え手段と、
前記命令コード書き替え手段が書き替えた前記対応関係情報記憶手段の対応関係情報に従い、前記ファンクションに記述されている識別情報を前記命令コードに変換するコード変換手段と、を備えたことを特徴とする。
プログラムを構築するファンクションの内容を前記プログラムの実行可能な命令コードに変換して前記プログラムを実行する情報処理装置において、
前記命令コードの代わりに前記命令コードを識別するための識別情報が記述され、さらに前記命令コードと前記識別情報との対応関係情報が記述されたファンクションを記憶するファンクション記憶手段と、
前記対応関係情報を記憶するための対応関係情報記憶手段と、
前記プログラムの実行時、前記ファンクション毎に、前記対応関係情報記憶手段に既に記憶されている対応関係情報を、前記ファンクション記憶手段が記憶する前記対応関係情報に書き替える情報書き替え手段と、
前記命令コード書き替え手段が書き替えた前記対応関係情報記憶手段の対応関係情報に従い、前記ファンクションに記述されている識別情報を前記命令コードに変換するコード変換手段と、を備えたことを特徴とする。
前記対応関係情報記憶手段は、
前記プログラムに用いられる全命令コードを格納する第1の記憶手段と、
前記対応関係情報として、前記命令コードの識別情報と前記命令コードの前記第1の記憶手段における格納位置を示すアドレスデータとを対応させて記憶する第2の記憶手段と、からなり、
前記ファンクション記憶手段は、前記識別情報と前記アドレスデータとの対応関係情報が記述されたファンクションを記憶し、
前記コード変換手段は、前記第2の記憶手段に記憶された対応関係情報に従って、前記識別情報から前記アドレスデータを取得し、取得した前記アドレスデータに基づいて、前記第1の記憶手段を参照し、前記識別情報を前記命令コードに変換するようにしてもよい。
前記プログラムに用いられる全命令コードを格納する第1の記憶手段と、
前記対応関係情報として、前記命令コードの識別情報と前記命令コードの前記第1の記憶手段における格納位置を示すアドレスデータとを対応させて記憶する第2の記憶手段と、からなり、
前記ファンクション記憶手段は、前記識別情報と前記アドレスデータとの対応関係情報が記述されたファンクションを記憶し、
前記コード変換手段は、前記第2の記憶手段に記憶された対応関係情報に従って、前記識別情報から前記アドレスデータを取得し、取得した前記アドレスデータに基づいて、前記第1の記憶手段を参照し、前記識別情報を前記命令コードに変換するようにしてもよい。
前記情報書き替え手段は、前記プログラムの実行前、前記ファンクション記憶手段に記憶されている各ファンクションに記述されている命令コードを識別情報に書き替え、前記各ファンクションに前記対応関係情報を記述するようにしてもよい。
本発明の第2の観点に係る情報処理方法は、
プログラムを構築するファンクションの内容を前記プログラムの実行可能な命令コードに変換して前記プログラムを実行する情報処理方法において、
前記ファンクションは、前記命令コードの代わりに前記命令コードを識別するための識別情報が記述され、さらに前記命令コードと前記識別情報との対応関係情報が記述されたものであって、
前記プログラムの実行時、前記ファンクション毎に、既に記憶されている対応関係情報を、前記ファンクションに記述された対応関係情報に書き替えるステップと、
書き替えた前記対応関係情報に従い、前記ファンクションに記述されている識別情報を前記命令コードに変換するステップと、を備えたことを特徴とする。
プログラムを構築するファンクションの内容を前記プログラムの実行可能な命令コードに変換して前記プログラムを実行する情報処理方法において、
前記ファンクションは、前記命令コードの代わりに前記命令コードを識別するための識別情報が記述され、さらに前記命令コードと前記識別情報との対応関係情報が記述されたものであって、
前記プログラムの実行時、前記ファンクション毎に、既に記憶されている対応関係情報を、前記ファンクションに記述された対応関係情報に書き替えるステップと、
書き替えた前記対応関係情報に従い、前記ファンクションに記述されている識別情報を前記命令コードに変換するステップと、を備えたことを特徴とする。
本発明によれば、プログラムコード領域を縮小することができる。
以下、本発明の実施形態に係る情報処理装置を図面を参照して説明する。
本実施形態に係る情報処理装置の構成を図1に示す。
図1に示す情報処理装置は、いわゆるスタックマシンとして構成されたものであり、コア部1と、コードRAM(Random Access Memory)2と、を備える。
本実施形態に係る情報処理装置の構成を図1に示す。
図1に示す情報処理装置は、いわゆるスタックマシンとして構成されたものであり、コア部1と、コードRAM(Random Access Memory)2と、を備える。
コードRAM2は、図2に示すようなアセンブリコードで記述されたプログラムを記憶する。図2に示すように、プログラムは、複数のファンクションによって構築される。コードRAM2は、例えば、ファンクション記憶手段に対応するものである。
function1は、そのファンクションの1つを示し、function1の中の「push」は、ファンクションコールの際にコードをスタックに退避させるための命令である。アセンブリコード「pop」は、スタックに退避させたコードを元に戻すための命令である。アセンブリコード「sotset」,「dotset」は、後述するテーブルのデータを書き換えさせるコードである。
また、コードRAM2は、このアセンブリコードをVLIW(Very Long Instruction Word Processor)コードにコード化してコア部1に供給する。
VLIWとは、コンパイラで静的に並列実行可能な複数のオペコードを抽出し、抽出した命令データを組み合わせてビット長の長い複合オペコードを生成するプロセッサである。
VLIWコードは、図3(a),(b)に示すように、S命令コードとD命令コードとからなる。S命令コードは、スタックユニットに対するオペコード、即ち、命令をスタック131〜134上で実行する演算系のオペコードである。
S命令コードは、図3(a),(b)に示すように、スタック131〜134に対応するように、それぞれ、S0,S1,S2,S3のフィールドに組み込まれるものとする。ここで、S0,S1,S2,S3のフィールドを、それぞれ、S0,S1,S2,S3スロットとし、これらを総称してSスロットとする。
命令フェッチ、デコードを容易にするため、S0,S1,S2,S3スロットは、それぞれ、1バイト固定で構成される。
S0,S1,S2,S3スロットは、図3(c)に示すように、それぞれ、US(Unit Selector)ビットと、TI(Ope Code Table Index)ビットと、OS(First Operand Selector)ビットと、からなる。
USビットデータは、各Sスロットの区切りを示すコードデータであり、1ビットで構成される。尚、Dスロットも、それぞれ、先頭にUSビットを備えており、SスロットのUSビットは0、DスロットのUSビットは1とされる。
TIビットには、インデックスデータが格納される。インデックスデータは、オペコードを識別するための識別情報であり、オペコードテーブル(Opecode Table、以後、「OT」と記す。)に記述される。OTは、インデックスデータとオペコードとの対応関係を示すテーブルである。このオペコードのエントリ数を16エントリとすると、TIビットは、4ビットで構成される。このOTについては後述する。
OSビットデータは、第1オペランドを指定するためのものであり、3ビットで構成される。通常、オペランドは、第1オペランド、第2オペランドの2フィールドで構成される。しかし、本実施形態では、スタックアーキテクチャが取り入れられているため、第2オペランドは、スタック131〜134のいずれかに既に格納されている。このため、OSビットは、第1オペランドのみの1フィールドで構成される。
尚、Sスロットが4つ未満の場合、NOPコードが取り除かれても、Sスロットと演算ユニットとの対応関係を判別できるようにAppendコードが付加される。
D命令コードはデータユニットに対するオペコードであり、アドレス計算ユニット向けの命令、「Load」、「Store」といった制御系の命令を実行するためのオペコードである。
尚、「Load」は、データRAM(図示せず)から読み出した値をスタック131〜134のいずれかにPUSHする命令であり、「Store」はスタック131〜134をPopし、Popされた値をデータRAMに書き込む命令である。また、D命令コードは、Jump命令のような即値を必要とする命令用にも用いられる。
D命令コードは、図3(a)のDA,DBで示すように、2バイトで構成されるか、図3(b)のDで示すように4バイトで構成される。
D命令コードについても、図3(a)に示すD命令コードDA、DBのフィールドを、それぞれ、DA,DBスロット、図3(b)に示す命令コードのフィールドを総称してDスロットとする。
但し、これらのスロットの全てに並列実行可能な命令が有効に割り当てられるとは限らず、スロットが6つ未満の場合もある。スロットが6つ未満の場合、VLIWコードが合計64ビットで構成されるように、VLIWコードは、NOPコードで埋め込まれる。
このようにして、VLIWコードは、常に合計64ビットで構成される。尚、本実施形態では、コードRAM2が供給するVLIWコードは、2ラインで同時に読み出しを行えるように、128ビット幅とされる。
尚、VLIWコードは、図3に示すように構成されているとは限らず、例えば、プログラムが、S命令をあまり使用しないようなものである場合、VLIWコードは、Sスロットを2つに限定して構成されてもよい。
コア部1は、情報処理装置の中核部であり、コントロールユニット11と、ALU(Arithmetic Logic Unit;算術論理演算ユニット)121〜124と、スタック131〜134と、レジスタファイルユニット141と、を備える。
ALU121とスタック131とは、対で用いられ、1つの演算ユニットを構成する。同様に、ALU122とスタック132、ALU123とスタック133、ALU124とスタック134が、それぞれ1つの演算ユニットを構成する。
コントロールユニット11は、コードRAM2からVLIWコードが供給され、供給されたVLIWコードを解読するものである。
コントロールユニット11は、このようなVLIWコードを解読するため、図4に示すように、フェッチ部150と、デコード部160,170と、を備える。
フェッチ部150は、コードRAM2から供給された128ビットのVLIWコードを取り出すものであり、セレクタ151と、NOP非圧縮部152と、パイプラインレジスタ153と、を備える。
セレクタ151は、コードRAM2から供給された128ビットのVLIWコードから、64ビットのVLIWコードを選択するものである。
NOP非圧縮部152は、セレクタ151が選択した64ビットのVLIWコードからNOPを取り除くためのものである。
NOP非圧縮部152は、セレクタ151が選択した64ビットのVLIWコードからNOPを取り除くためのものである。
パイプラインレジスタ153は、NOPが取り除かれたVLIWコードを一時記憶するものである。パイプラインレジスタ153は、一時記憶したコードをデコード部160,170に供給する。
デコード部160は、パイプラインレジスタ153から供給されたVLIWコードを解読して、実行可能なオペコードを生成するものであり、コード変換用RAM161,162と、オペコードROM(Read Only Memory)163,164と、を備える。
コード変換用RAM161,162は、例えば、第2の記憶手段に相当するものであり、前述のOTを備える。コード変換用RAM161は、S命令用のものであり、コード変換用RAM162は、D命令用のものである。このOTは、図5に示すように、TIのインデックスデータと、オペコードのアドレスとの対応関係を示すテーブルである。
例えば、TIのインデックスデータが「0」であると、デコード部160は、図5に示すようなOTを参照して、インデックスデータ「0」を、対応するオペコードのアドレスデータに変換する。このアドレスデータは、オペコードの格納位置を示す。
オペコードROM163,164は、図6に示すように、プログラムの実行可能な全オペコードを記憶するものである。オペコードROM163,164は、アドレスが指定されると、指定されたアドレスに対応するオペコードとして、半デコード状態のコードを出力する。
オペコードROM163,164は、それぞれ、S命令用、D命令用のものであり、それぞれ、全オペコードとして256種のオペコードを記憶する。このオペコードROM163,164は、例えば、第1の記憶手段に対応するものであり、コード変換用RAM161,162とオペコードROM163,164とは、対応関係情報記憶手段に対応する。
デコード部160は、プログラムの実行時に、コードRAM2から図2に示すようなプログラムが供給されると、このプログラムのアセンブリコード「sotset」,「dotset」を解読して、コード変換用RAM161,162のOTを書き替える。アセンブリコード「sotset」,「dotset」は、それぞれ、コード変換用RAM161,162のOTを書き替えるためのコードである。
図2のプログラムに示すsot1は、1つのレジスタを示す。図7(a)に示すように、レジスタを4つとしてレジスタsot0〜sot3は、OTの各インデックスに対応し、レジスタsot1は、図7(b)に示すように、OTのインデックス4〜7に対応する。そして、レジスタsot0〜sot3は、それぞれ、ファンクション中の各オペコードのアドレスデータを格納する。
このように、OTは、レジスタとしても捉えることもでき、「sotset sot1」は、レジスタsot1のデータをコード変換用RAM161のOTのインデックス4〜7に対応させて書き込む命令である。
デコード部160は、レジスタsot1の内容が図7(a)に示すようなものである場合、図7(b)に示すように、OTテーブルのインデックス4〜7に対応するように、OTを書き替える。このアセンブリコード「sotset」,「dotset」は、ファンクション毎に記述され、デコード部160は、このような処理をファンクション毎に行う。
オペコードは、1ファンクション中で何度も使用されるものも多く、比較的、1ファンクション中で使用されるオペコードの数は少ないものである。このため、このOTは、コードRAM2が記憶するプログラムコードのファンクション毎に書き替えられる。従って、コード変換用RAM161は、1ファンクションで用いられるオペコードとインデックスデータとを記憶可能な程度の比較的記憶容量が小さなものでよい。
尚、コード変換用RAM161,162は、スタック131〜134等の対象ブロックが使用する命令が16種を越えるような場合、OTの16エントリ以下をバンク切り替えできるように構成されることもできる。
このように構成されたデコード部160は、OTの対応関係情報に従って取得したアドレスデータを取得し、このアドレスデータに基づいてオペコードROM163,164からオペコードを取得して、プログラムの実行可能なコードに変換する。そして、デコード部160は、変換したコードをデコード部170に引き渡す。
このデコード部160は、例えば、情報書き替え手段、コード変換手段に対応するものである。
デコード部170は、デコード部160から引き渡されたコードとOSビットデータとを用いて、各種の制御信号、即値を生成するものであり、レジスタ選択信号生成部171と、レジスタ172と、信号データ生成部173と、レジスタ174と、を備える。
レジスタ選択信号生成部171は、デコード部160から引き渡されたコードを用いて、レジスタ選択信号を生成するものである。
レジスタ172は、レジスタ選択信号生成部171が生成したレジスタ選択信号を一時記憶するものである。コントロールユニット11は、レジスタ174が一時記憶したレジスタ選択信号を、図1のレジスタファイルユニット141に供給する。
信号データ生成部173は、スタック131〜134のいずれかに供給する即値と、演算器制御信号と、スタック動作制御信号と、Load/Store信号と、を生成するものである。
レジスタ174は、信号データ生成部173が生成した制御信号、即値等を一時記憶するものである。コントロールユニット11は、レジスタ174が一時記憶したこれらの制御信号、即値等を、図1のALU121〜124、スタック131〜134に供給する。
図1に戻り、ALU121〜124は、コントロールユニット11から供給された演算器制御信号に基づいて、演算を実行するものである。ALU121〜124は、それぞれ、VLIWコードのS0〜S3スロットに対応している。ALU121とALU122、ALU123とALU124は、密に結合している。そして、ALU121〜124がそれぞれ32ビット演算を行うものであれば、ALU121とALU122、ALU123とALU124は、64ビット演算を行うことができる。
スタック131〜134は、コントロールユニット11から供給された即値を格納し、供給されたスタック動作制御信号に基づいて、格納した即値に対する演算を行う。スタック131〜134は、それぞれ、DFF(D型フリップフロップ)によって構成されたTOS(Top Of Stack)、NOS(Next Of Stack)を備えている。そして、スタック131〜134は、それぞれ、TOS、NOSを用いて、レジスタファイルユニット141を介さずに加算演算等を行うことができる。
レジスタファイルユニット141は、汎用レジスタ、特殊レジスタ等を有するものであり、これらのレジスタのうちの動作対象のものが、コントロールユニット11から供給されたレジスタ選択信号に基づいて選択され、動作する。レジスタファイルユニット141は、スタック131〜134間の共有メモリとしても用いられ、D命令によるレジスタ間加減算命令の実行用にも用いられる。
また、レジスタファイルユニット141は、アドレス信号を生成し、生成したアドレス信号をコードRAM2に供給する。コードRAM2は、供給されたアドレス信号に従って、VLIWコードをコントロールユニット11に供給する。
次に本実施形態に係る情報処理装置の動作を説明する。
コードRAM2から、プログラムがVLIWコード化されてコントロールユニット11に供給される。
コードRAM2から、プログラムがVLIWコード化されてコントロールユニット11に供給される。
例えば、実際に実行するためのプログラムが、図8(a)に示すようなプログラムである場合、インデックス化しなければ、このプログラムは、図8(b)に示すように記述される。
しかし、コードRAM2には、図8(c)に示すように、インデックス化されたプログラムが記憶される。例えば、アセンブリコードが「add」であれば、そのオペコードは、図8(b)に示すように「01」になる。しかし、コードRAM2には、コード「01」をインデックス化した「0」が記述される。このインデックスデータ「0」は、SスロットのTIビットデータに組み込まれる。
同様に、アセンブリコード「move」、「sub」、「mult」、「jump」が、図8(c)に示すようにインデックス化されて、SスロットのTIビットデータに組み込まれる。
プログラム実行時、フェッチ部150は、VLIWコード化されたプログラムのfuncton1から、「sotset sot1」を取り出して、デコード部160のコード変換用RAM161に供給する。
レジスタsot0には、図9(a)に示すように、「a1」、「0」、「a5」、「a2」が書き込まれ、レジスタsot1には、「a3」、「a4」が書き込まれているものとする。
デコード部160は、コード変換用RAM161が記憶するOTの対応関係情報を、図9(b)に示すようなレジスタsot0,sot1のアドレスデータに書き替える。
次に、フェッチ部150は、VLIWコード化されたプログラムのfuncton1から、順次、「0x011」、「0x521」、「0x201」、「0x312」、「0x4DF」を取り出して、デコード部160のコード変換用RAM161に供給する。
デコード部160は、このOTを参照して、インデックスデータからアドレスデータを取得する。インデックスデータが「0」の場合、デコード部160は、このOTを参照して、アドレスデータ「a1」を取得する。
同様に、インデックスデータが「2」の場合、デコード部160は、アドレスデータ「a5」を取得する。インデックスデータが「3」の場合、デコード部160は、アドレスデータ「a2」を取得する。インデックスデータが「4」の場合、デコード部160は、アドレスデータ「a3」を取得する。インデックスデータが「5」の場合、デコード部160は、アドレスデータ「a4」を取得する。
そして、図10に示すように、デコード部161は、このアドレスデータ「a1」、「a5」、「a2」、「a3」、「a4」を用いて、オペコードROM163から、順次、アセンブリコード「add」,「move」,「sub」,「mult」,「jump」にそれぞれ対応するオペコードを取得し、取得したオペコードをデコード部170に供給する。
図8(b)に示すように、書き替え前の各オペコードの命令セットのコード量は、16ビット×5(Word)=80ビットになる。しかし、コードを図8(c)に示すように書き替えることにより、命令セットのコード量は12ビット×5(Word)=60ビットになる。従って、図8(c)に示すコードのデータ量は、図8(b)に示すコードと比較して3/4に低減される。
尚、OTが必要になるため、その分データ量は増える。しかし、ファンクションのサイズが小さい場合でも、コンパイラを最適化することにより、データ量の増加は、抑制される。
以上説明したように、本実施形態によれば、デコード部160は、デコード部160に備えられたOTデータを、ファンクション毎に書き替える。そして、デコード部160は、VLIWコードのTIビットデータのインデックスデータから、OTに基づいてオペコードのアドレスデータを取得し、オペコードを取得するようにした。
従って、すべてのオペコードについて、コード長を短縮することができ、コードRAM2におけるプログラムコード領域を縮小することができる。
RISC、VLIW方式を用いたものにおいても、長命令だけでなく、全てのオペコードを一様に短縮することができるため、特に有効である。また、命令の種類がファンクション毎に偏りがあって、ある特定の命令群(ブロック)で使用されている命令の種類が全命令の部分集合でしかない場合でも、従来と本実施形態とでのプログラム全体で比較すると、短いコードに書き替えることができる。
また、デコード部160がOTデータをファンクション毎に書き替えるため、OTデータを記憶するコード変換用RAM161、162に、比較的容量の小さなものを用いることができる。
また、本実施形態の情報処理装置は、アドレスデコードを行っているものの、特許文献1に示す従来の情報処理装置のようなコード比較を必要とせず、すべての命令について短縮されたインデックスコードへの置き換えも可能である。
尚、本発明を実施するにあたっては、種々の形態が考えられ、上記実施の形態に限られるものではない。
例えば、上記実施形態では、OTを用い、オペコードのアドレスを介して、オペコードを取得するようにしている。しかし、このような構成に限られるものではなく、インデックスから直接オペコードに変換するように構成されることもできる。
例えば、上記実施形態では、OTを用い、オペコードのアドレスを介して、オペコードを取得するようにしている。しかし、このような構成に限られるものではなく、インデックスから直接オペコードに変換するように構成されることもできる。
上記実施形態では、ファンクション毎にOTのデータを書き替えるようにした。しかし、同じようなオペコードが記述された複数のファンクションがあれば、一度書き替えたOTを次のファンクションでも用いるようにするようにしてもよい。
上記実施形態では、前記OTのインデックスを、オペコードに順次割り付けた。しかし、例えば、オペコード順にインデックスを割り付けるようにすることもでき、インデックスからオペコードを取得しやすいようにOTのデータの配列を設定することもできる。
上記実施形態では、コードRAM2には、既に、オペコードがインデックス化されたファンクション(プログラム)が記憶されているものとして説明した。しかし、各ファンクションには、インデックス化されていないオペコードを記述しておき、デコード部160が、コードRAM2を参照して、オペコードをインデックスに書き替え、各ファンクションに前記対応関係情報を記述するように構成されることもできる。
上記実施形態では、VLIWコードを用いた情報処理装置について説明した。しかし、情報処理装置は、VLIWコードを用いたものでなくてもよく、例えば、RISC(Reduced Instruction Set Computer)であってもよい。また、本実施形態の情報処理装置は、固定長命令セットを用いたものでなくてもよく、可変長命令セットを用いたものであってもよい。さらに、情報処理装置は、スタックマシンでなくてもよく、ノイマン型のものであってもよい。
1 コア部
2 コードRAM
11 コントロールユニット
153 パイプラインレジスタ
160 デコード部
161,162 コード変換用RAM
163,164 オペコードROM
2 コードRAM
11 コントロールユニット
153 パイプラインレジスタ
160 デコード部
161,162 コード変換用RAM
163,164 オペコードROM
Claims (4)
- プログラムを構築するファンクションの内容を前記プログラムの実行可能な命令コードに変換して前記プログラムを実行する情報処理装置において、
前記命令コードの代わりに前記命令コードを識別するための識別情報が記述され、さらに前記命令コードと前記識別情報との対応関係情報が記述されたファンクションを記憶するファンクション記憶手段と、
前記対応関係情報を記憶するための対応関係情報記憶手段と、
前記プログラムの実行時、前記ファンクション毎に、前記対応関係情報記憶手段に既に記憶されている対応関係情報を、前記ファンクション記憶手段が記憶する前記対応関係情報に書き替える情報書き替え手段と、
前記命令コード書き替え手段が書き替えた前記対応関係情報記憶手段の対応関係情報に従い、前記ファンクションに記述されている識別情報を前記命令コードに変換するコード変換手段と、を備えた、
ことを特徴とする情報処理装置。 - 前記対応関係情報記憶手段は、
前記プログラムに用いられる全命令コードを格納する第1の記憶手段と、
前記対応関係情報として、前記命令コードの識別情報と前記命令コードの前記第1の記憶手段における格納位置を示すアドレスデータとを対応させて記憶する第2の記憶手段と、からなり、
前記ファンクション記憶手段は、前記識別情報と前記アドレスデータとの対応関係情報が記述されたファンクションを記憶し、
前記コード変換手段は、前記第2の記憶手段に記憶された対応関係情報に従って、前記識別情報から前記アドレスデータを取得し、取得した前記アドレスデータに基づいて、前記第1の記憶手段を参照し、前記識別情報を前記命令コードに変換する、
ことを特徴とする請求項1に記載の情報処理装置。 - 前記情報書き替え手段は、前記プログラムの実行前、前記ファンクション記憶手段に記憶されている各ファンクションに記述されている命令コードを識別情報に書き替え、前記各ファンクションに前記対応関係情報を記述する、
ことを特徴とする1又は2に記載の情報処理装置。 - プログラムを構築するファンクションの内容を前記プログラムの実行可能な命令コードに変換して前記プログラムを実行する情報処理方法において、
前記ファンクションは、前記命令コードの代わりに前記命令コードを識別するための識別情報が記述され、さらに前記命令コードと前記識別情報との対応関係情報が記述されたものであって、
前記プログラムの実行時、前記ファンクション毎に、既に記憶されている対応関係情報を、前記ファンクションに記述された対応関係情報に書き替えるステップと、
書き替えた前記対応関係情報に従い、前記ファンクションに記述されている識別情報を前記命令コードに変換するステップと、を備えた、
ことを特徴とする情報処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004264425A JP2006079451A (ja) | 2004-09-10 | 2004-09-10 | 情報処理装置及び情報処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004264425A JP2006079451A (ja) | 2004-09-10 | 2004-09-10 | 情報処理装置及び情報処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006079451A true JP2006079451A (ja) | 2006-03-23 |
Family
ID=36158834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004264425A Withdrawn JP2006079451A (ja) | 2004-09-10 | 2004-09-10 | 情報処理装置及び情報処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006079451A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014523594A (ja) * | 2011-07-19 | 2014-09-11 | クアルコム,インコーポレイテッド | 頻繁にコールされる関数に対するテーブルコール命令 |
-
2004
- 2004-09-10 JP JP2004264425A patent/JP2006079451A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014523594A (ja) * | 2011-07-19 | 2014-09-11 | クアルコム,インコーポレイテッド | 頻繁にコールされる関数に対するテーブルコール命令 |
US9116685B2 (en) | 2011-07-19 | 2015-08-25 | Qualcomm Incorporated | Table call instruction for frequently called functions |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7664934B2 (en) | Data processor decoding instruction formats using operand data | |
US8161269B2 (en) | Determining length of instruction with address form field exclusive of evaluating instruction specific opcode in three byte escape opcode | |
CN102473093A (zh) | 对多个通道中的紧缩数据解压缩 | |
JP5357181B2 (ja) | コンピュータ・システム、その動作方法、及び、コンピュータ・プログラム | |
JP5424653B2 (ja) | 複数の命令セットの命令プリデコード | |
US20090282220A1 (en) | Microprocessor with Compact Instruction Set Architecture | |
JP2005332361A (ja) | プログラム命令圧縮装置および方法 | |
KR102161682B1 (ko) | 이미디에이트 핸들링 및 플래그 핸들링을 위한 프로세서 및 방법 | |
JPH04260930A (ja) | データ処理装置 | |
US5421029A (en) | Multiprocessor including system for pipeline processing of multi-functional instructions | |
US20030037085A1 (en) | Field processing unit | |
JPH04260929A (ja) | データ処理装置 | |
JP2009516254A (ja) | 命令を実行するための処理システムおよび方法 | |
JP2006079451A (ja) | 情報処理装置及び情報処理方法 | |
KR102528073B1 (ko) | 벡터 비트 수집을 수행하기 위한 방법 및 장치 | |
US11126434B2 (en) | Processor, information processing apparatus, and processing method for converting a field of an instruction | |
JPH04260926A (ja) | ビット検索回路及びそれを備えたデータ処理装置 | |
US20050015574A1 (en) | Processor and method capable of executing instruction sets with different lengths | |
JP3901670B2 (ja) | データ処理装置 | |
JPH04260928A (ja) | データ処理装置 | |
CN116339683A (zh) | 零周期存储器初始化 | |
JP2005535045A (ja) | Vliw命令を処理するためのプロセッサおよび方法 | |
JPH04152431A (ja) | 水平型プロセッサの高速化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20071204 |