JP3681740B2 - コンピュータの命令実行システム及び方法 - Google Patents

コンピュータの命令実行システム及び方法 Download PDF

Info

Publication number
JP3681740B2
JP3681740B2 JP2003523350A JP2003523350A JP3681740B2 JP 3681740 B2 JP3681740 B2 JP 3681740B2 JP 2003523350 A JP2003523350 A JP 2003523350A JP 2003523350 A JP2003523350 A JP 2003523350A JP 3681740 B2 JP3681740 B2 JP 3681740B2
Authority
JP
Japan
Prior art keywords
instruction
address
jump
computer
processor
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 - Lifetime
Application number
JP2003523350A
Other languages
English (en)
Other versions
JP2005501330A (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.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
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 Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Publication of JP2005501330A publication Critical patent/JP2005501330A/ja
Application granted granted Critical
Publication of JP3681740B2 publication Critical patent/JP3681740B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/328Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for runtime instruction patching
    • 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding

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)
  • Advance Control (AREA)

Description

コンピュータは、通常、単一の複雑なタスクを、コンピュータが理解可能でより単純な一連の命令に分解することによって実行する。これらの命令は一般的にコンピュータプロセッサチップが理解可能であるという意味で「機械語命令(machine instructions)」と称される。事実、人間にとって最も単純なタスクでさえも種々の機械語命令の複雑なセットを包含している。例えば、典型的なコンピュータプロセッサチップは、2から10まで数えるだけでも種々のステップの実行が必要である。プロセッサは、2という数を二進法に基づいて1と0とを用いた値に変換し、レジスタとして知られるメモリ領域に結果を記録し、インクリメントにより増加する分の数、つまり1、を二進数に変換して得た結果を他のレジスタに記録する。また、10という値を二進数に変換して得た結果をさらにもう一つのレジスタに記録する。最初の2つのレジスタに記録された二進数の値を、これらの値を加算する回路に流し、その和を最初のレジスタに戻して記録し、最初のレジスタの新しい値を上述の更にもう一つのレジスタの値と照合する。照合結果に応じて、上述の加算及び記録のプロセスを繰り返す。
実際、機械語命令はさらに細かい機械語命令に分解される。例えば、多くのチップは、CISC(complex instruction set computer:複合命令セットコンピュータ)アーキテクチャに基づき構成されている。CISCにおいて、機械語命令は、比較的単純なものから、より複雑なものまで範囲が及ぶことが可能である。演算している期間、個々の機械語命令は、まず1又は複数の「マイクロ命令」に変換されてから、コンピュータチップが、個々のマイクロ命令を実行する。機械語命令からマイクロ命令に変換することは、処理時間を消費する。
従って、多くのコンピュータチップは現在、処理時間速度を上げるために変換ステップをなくすようにしている。例えば、RISC(Reduced Instruction Set Computer:命令セットが簡略化されたコンピュータ )に基づくコンピュータシステムは、その名称が意味するように1サイクルスループット(RISCプロセッサはパイプライン中に命令を実行するために多サイクルを必要とするが、該実行のスループットは1クロックサイクルである。)で、プロセッサによって、瞬時に実行可能である命令セットに機械語命令を限定する傾向がある。従って、機械語命令を変換する遅れは回避される。
しかし、命令が限定され、簡略化されているにもかかわらず、多くのプロセッサチップでは、さらに複雑な命令をエミュレート(emulate)する必要がでてくる。システムの一例において、チップは、単一ステップで実行不可能な複雑な命令である複合命令を個々の機械語命令に分解するチップ領域にジャンプさせる。例えば、プログラムは一般的に機械語命令リストとして記録され、個々の機械語命令はそれぞれ固有のアドレスに記録される。このプロセッサは、別のアドレスにジャンプするように命令がなされない限り、通常は命令を順に実行する。プロセッサが複合命令に出会うと、複合命令をエミュレートする機械語命令を包含するチップ領域にジャンプ及びリンクする命令を実行する。具体的には、このジャンプ及びリンク命令は、プロセッサに当該命令のアドレスを記録させて、新しいアドレスにジャンプする。それからプロセッサは、前述の新しいアドレスで機械語命令を実行する。このプロセッサは、ジャンプした場所に戻れという命令に出会うまで、命令を順に実行していく。ジャンプした場所に戻るに際し、プロセッサは、処理を中断した場所、即ち、元のジャンプ及びリンク命令を行った箇所の次のアドレスにおける命令をピックアップする。
複合命令は、ソフトウェアもしくはハードウェアを用いてエミュレートされる。例えば、例えば、複合命令を実行するために特別なハードウェアを用いず、そのオプコードとも呼ばれる演算コード(opcode)を、例外割り込みを発生させる予約命令演算コードとして処理するシステムもある。この割り込み処理では、該複合命令演算コードが不正な命令演算コードであるか又は複合命令としてエミュレートされるべきかの照合がなされる。他のシステムでは、CPUは複合命令を、マイクロコードのような、多数の実装された単純な命令に変換するハードウェアを有する。このシステムにおけるハードウェアの変換は極めて複雑となりうる。
そこで複合命令を、迅速にエミュレート可能にするシステム及び方法が要求されている。
本発明は、このような要求を満たすことを目的としている。
本発明の一形態によれば、コンピュータ命令に実装されているアドレスからのジャンプ及びリンク命令を生成するステップと、本来の命令が複雑であればジャンプ命令を、そうでなければ本来の命令を、選択するステップと、を有する複合命令を実行するシステム及び方法が提供される。
本発明の他の形態によれば、コンピュータ命令を、この命令のソース(source)から処理するシステムが提供される。このシステムは、コンピュータ命令のソースからのコンピュータ命令を処理するシステムであって、入力部と出力部とを有する複合命令検出部を有し、前記入力部は、前記ソースからのコンピュータ命令を受信し、前記出力部の出力は、前記命令が命令セットの一部であるか否かを表すものであり、入力部と出力部とを有するアドレス生成部を有し、前記入力部は、前記ソースからのコンピュータ命令を受信し、前記出力部の出力には、前記命令に基づくアドレスが含まれ、入力部と出力部とを有するジャンプ命令生成部を有し、前記入力部は、前記アドレス生成部の出力と通信可能で、前記出力部の出力は、前記アドレス生成部からの前記アドレスへのジャンプ命令を含み、入力部と出力部とを行う命令セレクタを有し、前記入力部は、前記ジャンプ命令生成部と、前記ソース、及び前記複合命令検出部と通信可能で、前記出力部の出力には、前記複合命令検出部の出力次第で前記ソースプログラムの命令もしくは前記ジャンプ命令の命令のいずれかを包含するものである。
さらに他の実施形態によれば、コンピュータ命令実行方法が提供される。この方法は、コンピュータ命令の処理方法であって、コンピュータ命令と関連するアドレスを生成するステップと、前記アドレスに基いてジャンプ命令を生成するステップと、前記コンピュータ命令が複合命令であるか否かを判定するステップと、前記ステップの判定結果に基づき、前記ジャンプ命令もしくは前記コンピュータ命令のいずれかを選択するステップと、を有する。
図1に従来の処理システムを示す。本発明は、このようなシステムを使用することに限定されるものではなく、このシステムは、例示のためのみに使用されるものである。メモリ51は、プロセッサによって実行される機械語命令の供給元、あるいはソース(source)である。メモリ51は、異なる位置にいくつ物理的に配置しても良く、一例として、プロセッサの回路を包含するチップ内に実装されたL1キャッシュ、チップ外部に配置されたL2キャッシュ、又は他の記録デバイスもしくは記録媒体に配置することができる。前述の機械語命令(「命令コード」とも称される)はメモリ51から受信され、命令コードキャッシュ52に配置される。メモリ51から命令を入手するのは時間がかかるので、命令コードキャッシュは、瞬時にプロセッサによってアクセスされ、実行されるように、所定の命令数を保持するために実行される。
本発明に従ったシステム100が、図2に示される。命令コードは、メモリ51から直接、命令キャッシュメモリ52に伝送されるのではなく、システム100に伝送される。システム100は、アドレス生成器102、ジャンプ命令生成器104、複合命令検出器106、及び命令セレクタ108を有し、それぞれ相互に直接的もしくは間接的に通信している。
複合命令検出器106が実行する機能の一つは、命令が複合命令であるか否かの判定である。複合命令検出器106は、メモリ51から入力として命令コードを受信し、該命令が複合命令であるか否か、すなわちプロセッサが実行可能な命令セットの一部である否かを判定する。言い換えれば、前述の命令が、多数の命令を実行することによって実行する必要はなく、CPUハードウェアによって直接実行可能か否かを判定する。複合命令検出器の出力は、好適には該命令が複合命令であるか否かを示す1ビットであるが、必ずしも1ビットとする必要はない。
機械語命令は、概して、オペレーションコード(operation code, opcode:操作符号とも称する)とオペランドの2つの構成要素を有する。これら2つの構成要素は、単一デジタル値を形成するために結合される。演算コードは、基本的には、実行すべき演算、例えばアドレスへジャンプ、2つの数を加算、又は値の記録といった演算を、コンピュータに伝達するものである。個々の演算コードは、それぞれ異なるバイナリ値と関連する。例えば、ジャンプ及びリンクする演算コードは、「0000 11」値により表記され、その記録関数は「1010 00」値により表記される。オペランドには、演算に実行されるデータが含まれる。例えば、オペランドは、「10 1111 0000 1010 1111 0000 0001」という値を有する目標アドレスを表す。従って、前述のアドレスに対するジャンプ及びリンク命令は、演算コードとオペランド値の結合である「0000 1110 1111 0000 1010 1111 0000 0001」によって表記される。
本発明の他の実施形態によれば、複合命令検出器106は、演算コードが複合命令を表すか否かを判定するために予約命令例外(reserved instruction exception)を用いる。一般的なCPUにおいて、予約命令例外は、CPUハードウェアに実装されていない命令もしくは不正命令の実行を阻止するために用いられる。この予約命令例外は、通常、プロセッサが誤ってデータを命令として実行してしまったときに発生する。従って、複合命令検出器106は、複合命令を表す信号を発生させるために、予約命令例外の生成に関するロジックを用いてもよいが、このロジックを用いることが必須であるというわけではない。
本発明では、命令が複合命令である場合は、複合命令を個々の機械語命令によってエミュレートするチップ領域(メモリがチップに設けられていない場合にはメモリ51)にジャンプ及びリンクさせる命令によって、この複合命令を置き換える。
アドレス生成器102の目的の一つは、特定の複合命令に関するエミュレーションコードのアドレスがどこにあるかを判定することである。アドレス生成器102は、メモリ51から入力として命令コードを受信する。その後、アドレス生成器102は、この命令が複合命令である場合は、エミュレーションコードのアドレスを決定する。この出力は、ジャンプ命令生成器104に供給される。
前述のアドレス生成器は、演算コードをメモリアドレスに翻訳する方法のいずれにも限定されるものではない。例えば、プログラマブルロジックアレイ(PLA:Programmable Logic Array)を用いることで、入力が演算コードを含み、かつ、出力がアドレスに等しくなるようにしてもよい。例えば、このPLAは、複合命令の演算コード101010が常にアドレスOx1234567等のエミュレーションコードにジャンプすることを指定するようにしてもよい。それぞれ異なる複合命令に対しては、それぞれ異なるアドレスのコードにジャンプするようにできる。これらのアドレスは、メモリ空間、チップ上、又はチップ外のいずれにあってもよい。このエミュレーションコードがチップ上において記録された場合、迅速にアクセス可能となり得るが、その規模はより限定されたものとなり、必ずしも再プログラム可能である必要はない。該エミュレーションコードがメインメモリに記録された場合、比較的速度は遅くなるが、よりフレキシブルとなる。
ジャンプ命令生成器104は、アドレス生成器102によって生成されたアドレスを用いてジャンプ命令を生成する。例えば、元の命令が複合命令であったか否かに係わらず、アドレス生成器102からの前述のアドレスにジャンプ及びリンクする演算コードを付加する。
命令セレクタ108は、該命令がメモリ51から変換されていない命令、又はジャンプ命令生成器104によって生成されたジャンプ及びリンク命令、のいずれであるかを選択する。前述の命令セレクタは複合命令検出器106の出力値に基づき、前述の選択を実行する。例えば、複合命令検出器106の出力値が1である場合、命令セレクタ108は、ジャンプ命令生成器104から受信した命令を命令キャッシュメモリ52に出力する。一方、複合命令検出器の出力値が0の場合、命令セレクタ108は、メモリ51から受信した命令を命令キャッシュメモリ52に出力する。言い換えれば、命令は変換されずに命令キャッシュメモリ52に伝送される。好適には、命令が複合命令ではないが不正なものである場合、セレクタ108の出力は、該命令が複合命令ではないことを示す。従って、不正な命令は、エミュレートされるのではなく、実行パイプラインに伝送されて例外を発生させる。
説明の都合上、以下に例示する演算は以下のステップを有してもよい。メモリ51は下記の3つの機械語命令を包含するとみなされる。
Inst#0
DMULTU rs,rt
Inst#2
「Inst#0」と「Inst#2」はいずれの命令を表すものでもよく、「DMULTU rs,rt」は、レジスタrsとrtに記録された64ビットサイズのオペランド値を乗算して128ビットサイズの結果を得るための命令を表す(このDMULTU関数は、2001年版MIPS64 5KTMプロセッサコアファミリソフトウェアユーザマニュアル記載のMIPS64 5KTMプロセッサによりサポートされる)。本発明に従ったプロセッサは、プロセッサを具備する大規模な乗算ハードウェア(large-value multiplier hardware)へのコストを発生させるより、元の命令を変更することなく費用が安価でスタンダードな32ビット乗算機を使用することによって、DMULTU命令をエミュレートすることが可能である。
DMULTU命令は、メモリ51から命令キャッシュメモリ52に伝送されると、まずシステム100(図2、ステップ201参照)に伝送される。説明のために、システムすべての演算コードは6ビット長を有し、DMULTUは二進数「011101」によって表記されるものとする。
この命令は、アドレス生成器102と、命令セレクタ108の入力の一つと、複合命令検出器106とに同時に伝送される。
それからアドレス生成器102は、命令語「DMULTU」(ステップ202)の演算コード(オペランドのいくつか又はすべてからの場合もある)に基づき、命令アドレスを決定する。
従って、以下emu_DMULTUとして指定された値を有するアドレスが決定されて、ジャンプ命令生成器104(ステップ203)に伝送される。それからジャンプ命令生成器104は、ジャンプ及びリンク演算コード値をアドレス生成器102から生成されたアドレスに加えて、「JAL emu_DMULTU」命令(ステップ204)を生成する。
元の命令「DMULTU rs,rt」は、複合命令検出器106にも伝送される。検出器106は、この命令が複合命令であるか否か(ステップ205)をテストする。「DMULTU」は複合命令であるとみなされて、1ビット値が検出器106によって命令セレクタ108に供給される。
命令セレクタ108は、様々な入力を受信すると、検出器の106のビット値が0であれば(ステップ208)、メモリから直接前述の命令を選択し、検出器106のビット値が1であれば(ステップ206)、ジャンプ命令生成器104からの命令を選択する。前述の例を用いると、ビット値が1であるので、「DMULTU rs,rt」ではなくて命令「JAL emu_DMULTU」が命令キャッシュメモリへ送信される(ステップ207,209)。これにより、プロセッサは、アドレスemu_DMULTUのコードにジャンプ及びリンクを行い、このコードでは、128ビット乗算器用のコードをエミュレートするための64ビット乗算器のための下記のコードが用いられる。このコードは64ビットの部分積(partial products)を生成し、それを加算して128ビットの積(product)を得る。演算は、HI(63:0)|LO(63:0)<_rs(63:0)*rt(63:0)である。
Emu_DMULTU:
MULTU rs,rt ;HI|LO<-rs(31:0)* rt(31:0)
MOV tls,rs ;tls<-rs
MOV tls,rt ;tls<-rt
DSRL32 ths,rs,0 ;ths(31:0)<-rs(63:32)
DSRL32 tht,rt,0 ;tht(31:0)<-rt(63:32)
MFLO xl ;x1<-LO
MFHI xh ;x2<-HI
DSLL32 xh,xh,0 ;xh(63:32)<-xh(31:0)
OR xl,xh,xl ;xl<-result of rs(31:0) * rt(31:0)
MULTU ths,rt ;HI|LO<-rs(63:32)<*rt(31:0)
MFLO xl ;x1<-LO
MFHI xh ;x2<-HI
DSLL32 xh,xh,0 ;xh(63:32)<-xh(31:0)
OR x2,xh,xl ;x2<-result of rs(63:32) * rt(31:0)
MULTU rs,tht ;HI|LO<-rs(31:0) *rt(63:32)
MFLO x1 ;x1<-LO
MFHI xh ;x2<-HI
DSLL32 xh,xh,0 ;xh(63:32)<-xh(31:0)
OR x3,xh,xl ;x3<-result of rs(31:0) *rt(63:32)
MULTU ths,tht ;HI|LO<-rs(63:32) *rt(63:32)
MFLO x1 ;x1<-LO
MFHI xh ;x2<-HI
DSLL32 xh,xh,0 ;xh(63:32)<-xh(31:0)
OR x4,xh,x1 ;x4<-result of rs(31:0) *rt(63:32)
ADD xm,x2,x3 ;xm<-x2+x3
DSLL32 xmx,xm,0 ; xmx(63:32)<-xm(31:0)
ADD x1,xmx,x1 ;x1<-xmx+x1
MTLO xl ;LO<-x1
ADD x4,xmx,x4 ;x4<-xmx=x4
MTHI x4 ;JO<-x4
JR r31 ;Link Return
従って、前述の例は、複合命令「DMULTU」が、どのように他の命令によって迅速にエミュレートされ得るのかを示したものである。
本発明は、多くの利点を提供する。複合命令は、複雑にデコードされることなく素早い方法で、より単純な命令セットにジャンプすることによってエミュレートされる。命令が複雑であるか否かの判定を待たずに、アドレスが抽出されてジャンプ命令が生成される。この命令は、複合命令であるか否かも同時にテストされる。命令が複合命令である場合には、エミュレーションコードへのジャンプ命令が上述のように既に生成されている。複合命令ではない場合、命令はいずれにしても複雑性がテスト済みであるので時間を消費することはない。
本発明は、様々な応用の需要に応じた構築が可能であるという利点も有する。例えば、アドレス生成器102は、エミュレートされたコードのアドレスを判定するために演算コードのみを用いるわけではない。演算コードのいくつか又はすべてに関して、オペランドも用いられ、命令によって実行される引数に応じて、同じ複合命令コードであっても、別のアドレスと別のエミュレーションコードにジャンプする場合もある。他の形態においては、アドレス生成器102は、同じアドレスにすべての複合命令をジャンプさせ、これにより、複合命令のデコード及びオプコードやオペランド(存在する場合は)の詳細の決定を、エミュレーションコードに任せるようにする。従って、これら両手法のそれぞれにより、あるいはこれらの手法を組み合わせることで、チップからの要求及びチップのアプリケーションによる要求に応えることができる。複合命令数が限定されている場合、個々の命令を、それぞれ固有のアドレスに向かうようにしてもよい。複合命令数が多い場合、殆どすべての複合命令を同じアドレスへジャンプするようにしてもよい。
例えば、上記の命令DMULTUに関連して、アドレス生成器102は、好適には、幾つかの又はすべてのオペランドをデコードし、前述のオペランドに従ってアドレスを好適に生成する。これにより、命令JALが、ソース及び宛先のレジスタの判定が可能なエミュレーションコードへ確実にジャンプするようになる。より具体的には、出力アドレスの上位ビットの幾つかを演算コードによって生成し、最下位ビットをオペランドに基づき生成するようにしても良い。他の形態においては、該命令は、アドレス生成器102がアドレスを生成した後にソフトウェアにより完全にデコードされるようにしてもよい(例えば、リンクレジスタから4を減算する)。
本発明のもう一つの利点は、予約命令例外を複合命令検出器106に関連して実行することにより得られる。これにより、複合命令検出器106が、2つの機能を実行可能となる。つまり、命令が実際に不正コードであるか、又は復号コードであるかを判定する。もし復号コードであれば、エミュレートがなされる。そうでなければ、実際にエラーであるとして処理される。予約命令例外は、演算コードのが復号コードであるかだけでなく、有効なコードであるかをもチェックすることによって、アドレス生成器102に実装することが可能である。
更に、前述の複合命令のすべて又は一部のデコードは、複合命令がメモリシステムと実行パイプライン外部のキャッシュメモリ間にジャンプ及びリンク命令でデコードされ、置き換えられることができるので、命令実行パイプラインの実行効率を低下させることなく、ハードウェアによって命令を実行する。予約命令例外を実行する場合、命令はソフトウェアのみでデコードされる。この場合であっても、本発明は、複合命令を、ジャンプ及びリンク命令に置き換えるのでハードウェアの実装は比較的簡単であり、実行パイプラインに変更を要することはない。
特に記載がない限り、「含む(including)」「備える(containing)」「有する(comprising)」のような用語は、「含み、かつ、それらのみに限るものではない」ことを意味し、次に続く特定もしくは同様の要素や要件を限定するものではない。また、「複数(plurality)」とは、少なくとも2つであることを意味し、特に記載がない限り、「一つ(a)」もしくは「一つ(one)」のものとは、そのようなものを複数用いるという可能性を除外することを意図する。
上述の他の形態の殆どは、相互に排他的なものではなく、種々の組み合わせによって特有の利点が得られるよう実装することが可能である。これらの形態及びその他の変形例及びその組み合わせは、本発明の請求項で規定された範囲から逸脱することなしに実行可能である。従って、上述の実施形態、請求項に係る発明を限定するものではなく、例示的なものとして扱われるべきである。
本発明は、複雑なコンピュータ命令を、単純な命令によってエミュレートするために用いられる。
従来技術の一部の概略図である。 本発明の一実施形態の概略図である。 本発明の一実施形態のフロー図である。

Claims (34)

  1. コンピュータ命令のソースからのコンピュータ命令を処理するシステムであって、
    入力部と出力部とを有する複合命令検出部を有し、前記入力部は、前記ソースからのコンピュータ命令を受信し、前記出力部の出力は、前記命令が命令セットの一部であるか否かを表すものであり、
    入力部と出力部とを有するアドレス生成部を有し、前記入力部は、前記ソースからのコンピュータ命令を受信し、前記出力部の出力には、前記命令に基づくアドレスが含まれ、
    入力部と出力部とを有するジャンプ命令生成部を有し、前記入力部は、前記アドレス生成部の出力と通信可能で、前記出力部の出力は、前記アドレス生成部からの前記アドレスへのジャンプ命令を含み、
    入力部と出力部とを行う命令セレクタを有し、前記入力部は、前記ジャンプ命令生成部と、前記ソース、及び前記複合命令検出部と通信可能で、前記出力部の出力には、前記複合命令検出部の出力次第で前記ソースプログラムの命令もしくは前記ジャンプ命令の命令のいずれかを包含する、システム。
  2. 更に前記命令セレクタの出力と通信可能なプロセッサを有する、請求項1記載のシステム。
  3. 更に前記命令セレクタ及び前記プロセッサと通信可能な命令キャッシュを有する、請求項2記載のシステム。
  4. 前記ソースはメモリを有する、請求項1記載のシステム。
  5. 前記メモリは機械語命令を有する、請求項4記載のシステム。
  6. 前記複合命令検出部と前記アドレス生成部と前記ジャンプ命令生成部と前記命令セレクタは、単一のコンピュータチップに記録される、請求項1記載のシステム。
  7. 前記アドレスは、チップ上に配置されたメモリのアドレスである、請求項6記載のシステム。
  8. 前記アドレスは、チップ外部に配置されたメモリのアドレスである、請求項6記載のシステム。
  9. 前記命令セットは、1サイクルのスループットでプロセッサによって実行可能である命令を有する、請求項1記載のシステム。
  10. 前記複合命令検出部は、予約命令例外ハンドラーを有する、請求項1記載のシステム。
  11. 前記システムは、RISCコンピュータチップを有する、
    請求項1記載のシステム。
  12. 前記アドレス生成部は、プログラマブルロジックアレイを有する、請求項1記載のシステム。
  13. 前記プログラム可能なロジックアレイの出力は、前記入力された命令の演算コードに応じて出力されるものである、請求項12記載のシステム。
  14. 前記プログラム可能なロジックアレイの出力は、前記入力された命令のオペランドに応じて出力されるものである請求項13記載のシステム。
  15. コンピュータ命令の処理方法であって、
    コンピュータ命令と関連するアドレスを生成するステップと、
    前記アドレスに基いてジャンプ命令を生成するステップと、
    前記コンピュータ命令が複合命令であるか否かを判定するステップと、
    前記ステップの判定結果に基づき、前記ジャンプ命令もしくは前記コンピュータ命令のいずれかを選択するステップと、を有する方法。
  16. 前記コンピュータ命令は、
    演算コードと、オペランドと、を有する請求項15記載の方法。
  17. 前記アドレスを生成するステップは、前記命令の演算コードに基づいて行われる、請求項16記載の方法。
  18. 前記コンピュータ命令が複合命令であるか否かを判定する前記ステップは、前記コンピュータ命令が、予約命令例外を生成したか否かを判定するステップを有する、請求項15記載の方法。
  19. 前記アドレスは、前記複合命令をエミュレートするためにコンピュータ命令を識別する、請求項15記載の方法。
  20. ジャンプ命令を生成する前記ステップは、前記アドレスにジャンプ及びリンク命令を付加するステップを有する、請求項15記載の方法。
  21. ジャンプ命令を生成する前記ステップ及び前記コンピュータ命令が複合命令であるか否かを判定する前記ステップは、前記選択するステップの前に実行される、請求項15記載の方法。
  22. 前記アドレスは、すべての複合命令に関して同じアドレスである、請求項15記載の方法。
  23. プロセッサでプログラムを実行する方法であって、前記プロセッサは命令セットを実行可能であり、
    メモリに記録されたプログラムを有する一連の命令から、本来の命令を実行するステップを有し、
    前記本来の命令でアドレスを生成するステップを有し、
    前記アドレスへのジャンプ及びリンク命令を生成するステップを有し、このステップには、前記プロセッサに前記アドレスで命令を実行させてから前記プログラムにおける前記本来の命令の次の命令に戻る命令を有し、
    前記本来の命令が前記命令セットの一部であるか否かを判定するステップを有し、
    前記判定するステップの結果に基づいて、前記ジャンプ及びリンク命令もしくは前記本来の命令のいずれかを選択するステップを有し、及び
    前記選択された命令を、前記プロセッサに提供するステップを有する、
    方法。
  24. 前記選択された命令を、前記プロセッサの命令キャッシュに供給するステップを更に有する、請求項23記載の方法。
  25. 前記本来の命令を実行するステップは、メモリから前記命令を読み出すステップを有する、請求項24記載の方法。
  26. メモリとプロセッサとの間でコンピュータ命令を処理するシステムであって、
    前記メモリからコンピュータ命令を受信して前記命令が命令セットの一部であるか否かを示す値を出力するように前記メモリに結合された複合命令検出部を有し、
    前記メモリからコンピュータ命令を受信するように前記メモリに結合されたアドレス生成部を有し、
    前記アドレス生成部に結合されたジャンプ命令生成部を有し、
    前記ジャンプ命令生成部からジャンプ命令を受信し、前記メモリからコンピュータ命令を受信し、前記複合命令セレクタからその値を受信するように、前記ジャンプ命令生成部、前記メモリ、前記複合命令検出部、及び前記プロセッサに結合された命令セレクタを有し、
    これにより、前記複合命令検出部から得た前記値に基づいて、前記ジャンプ命令もしくは前記コンピュータ命令のいずれかが、前記命令セレクタによって前記プロセッサに供給される、システム。
  27. 前記命令セットは、デコードを追加することなく前記プロセッサによって実行可能である命令を有する、請求項26記載のシステム。
  28. 前記命令セットは、1スループットサイクルで、前記プロセッサによって実行可能である命令を有する、請求項26記載のシステム。
  29. 前記アドレスは、前記プロセッサにより実行可能であるとともに前記コンピュータ命令をエミュレートする他の命令のアドレスを示す、請求項26記載のシステム。
  30. 前記ジャンプ命令生成部は、前記アドレスにジャンプ及びリンク命令を付加する、請求項26記載のシステム。
  31. コンピュータ命令実行システムであって、
    複合命令と単純な命令のソースを有し、前記単純な命令は前記プロセッサによって実行可能であり、前記複雑な命令は前記プロセッサによって実行不可能であり、
    前記ソースと命令セレクタとに結合された複合命令検出部を有し、前記複合命令検出部は、前記ソースからコンピュータ命令を受信し、受信した命令が複合命令である単純命令であるを示す値を供給し、
    前記ソースとジャンプ命令生成部とに結合されたアドレス生成部を有し、前記アドレス生成部は、前記ソースからコンピュータ命令を受信し、受信した命令が複合命令である場合、エミュレーション命令を有するメモリのアドレスを供給し、これにより、前記エミュレーション命令が単純命令であって、前記複合命令の機能をエミュレートするものであり、
    前記アドレス生成部と前記命令セレクタに結合された前記ジャンプ命令生成部を有し、前記ジャンプ命令生成部は、前記アドレス生成部からアドレスを受信して前記アドレスへのジャンプ及びリンク命令を供給し、
    前記ジャンプ命令生成部及び前記アドレス生成部に結合されて、前記ソースから受信した前記命令が複合命令である場合は前記ジャンプ命令生成部からジャンプ及びリンク命令を供給し、前記ソースプログラムから受信した前記命令が単純命令である場合は当該命令を供給する命令セレクタを有し、
    前記命令セレクタから前記命令を受信するためのプロセッサを有する、
    システム。
  32. 更に、前記命令セレクタと前記プロセッサとの間に配置された命令キャッシュを有する、請求項31記載のシステム。
  33. 前記アドレス生成部は、第一の複合命令に応じて第一アドレスを送信し、第二命令に応じて第二アドレスを送信し、第一アドレスと第二アドレスは異なるものである、請求項31記載のシステム。
  34. 前記複合命令検出部は、予約命令例外に関連付けられたルーチンを実行する、請求項31記載のシステム。
JP2003523350A 2001-08-23 2002-08-21 コンピュータの命令実行システム及び方法 Expired - Lifetime JP3681740B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/935,878 US7100023B2 (en) 2001-08-23 2001-08-23 System and method for processing complex computer instructions
PCT/US2002/026654 WO2003019353A1 (en) 2001-08-23 2002-08-21 System and method for processing computer instructions

Publications (2)

Publication Number Publication Date
JP2005501330A JP2005501330A (ja) 2005-01-13
JP3681740B2 true JP3681740B2 (ja) 2005-08-10

Family

ID=25467828

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003523350A Expired - Lifetime JP3681740B2 (ja) 2001-08-23 2002-08-21 コンピュータの命令実行システム及び方法

Country Status (4)

Country Link
US (2) US7100023B2 (ja)
EP (2) EP2365433B1 (ja)
JP (1) JP3681740B2 (ja)
WO (1) WO2003019353A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7219337B2 (en) * 2003-03-06 2007-05-15 Northrop Grumman Corporation Direct instructions rendering emulation computer technique
US8161162B1 (en) * 2004-06-30 2012-04-17 Kaseya International Limited Remote computer management using network communications protocol that enables communication through a firewall and/or gateway
US8504665B1 (en) * 2004-06-30 2013-08-06 Kaseya International Limited Management of a device connected to a remote computer using the remote computer to effect management actions
FR2910144A1 (fr) * 2006-12-18 2008-06-20 St Microelectronics Sa Procede et dispositif de detection errones au cours de l'execution d'un programme.
US8245202B2 (en) 2007-04-18 2012-08-14 Sony Computer Entertainment Inc. Processor emulation using speculative forward translation
US8060356B2 (en) * 2007-12-19 2011-11-15 Sony Computer Entertainment Inc. Processor emulation using fragment level translation
US8489865B1 (en) * 2010-04-15 2013-07-16 Lockheed Martin Corporation Device, system, and method for single thread command chaining instructions from multiple processor elements
US9703562B2 (en) 2013-03-16 2017-07-11 Intel Corporation Instruction emulation processors, methods, and systems
US20140281398A1 (en) * 2013-03-16 2014-09-18 William C. Rash Instruction emulation processors, methods, and systems
FR3047585B1 (fr) * 2016-02-09 2018-03-09 Stmicroelectronics (Rousset) Sas Procede et dispositif de surveillance de l'execution d'un code programme

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5781750A (en) * 1994-01-11 1998-07-14 Exponential Technology, Inc. Dual-instruction-set architecture CPU with hidden software emulation mode
US5826089A (en) * 1996-01-04 1998-10-20 Advanced Micro Devices, Inc. Instruction translation unit configured to translate from a first instruction set to a second instruction set
US5961632A (en) * 1996-07-25 1999-10-05 Texas Instruments Incorporated Microprocessor with circuits, systems, and methods for selecting alternative pipeline instruction paths based on instruction leading codes
US5890006A (en) * 1997-12-12 1999-03-30 Advanced Micro Devices, Inc. Apparatus for extracting instruction specific bytes from an instruction
GB9822191D0 (en) 1998-10-13 1998-12-02 Kubiczek Maciej High performance low cost microprocessor

Also Published As

Publication number Publication date
EP1419435B1 (en) 2018-03-21
EP1419435A4 (en) 2007-06-06
US20060212690A1 (en) 2006-09-21
EP2365433B1 (en) 2019-03-06
JP2005501330A (ja) 2005-01-13
EP2365433A3 (en) 2013-01-02
US7100023B2 (en) 2006-08-29
EP1419435A1 (en) 2004-05-19
WO2003019353A1 (en) 2003-03-06
US20030046515A1 (en) 2003-03-06
EP2365433A2 (en) 2011-09-14
US7398373B2 (en) 2008-07-08

Similar Documents

Publication Publication Date Title
US7398373B2 (en) System and method for processing complex computer instructions
JP4511461B2 (ja) データ処理システムでの処理動作マスキング
EP1157329B1 (en) Methods and apparatus for branch prediction using hybrid history with index sharing
EP0464494B1 (en) A high performance pipelined emulator
US5727194A (en) Repeat-bit based, compact system and method for implementing zero-overhead loops
US5598546A (en) Dual-architecture super-scalar pipeline
US7473293B2 (en) Processor for executing instructions containing either single operation or packed plurality of operations dependent upon instruction status indicator
US7543134B2 (en) Apparatus and method for extending a microprocessor instruction set
US5129068A (en) Operand address calculation in a pipeline processor by decomposing the operand specifier into sequential step codes
US5321821A (en) System for processing parameters in instructions of different format to execute the instructions using same microinstructions
JP2003510682A5 (ja)
US6611909B1 (en) Method and apparatus for dynamically translating program instructions to microcode instructions
US20010005882A1 (en) Circuit and method for initiating exception routines using implicit exception checking
JP3781519B2 (ja) プロセッサの命令制御機構
US6189093B1 (en) System for initiating exception routine in response to memory access exception by storing exception information and exception bit within architectured register
GB2402764A (en) Instruction endcoding within a data processing apparatus having multiple instruction sets
US20040003209A1 (en) Data processor
US5742801A (en) Microprocessor to which additional instructions are added and instructions addition method thereof
US7707389B2 (en) Multi-ISA instruction fetch unit for a processor, and applications thereof
CN112182999B (zh) 一种基于mips32指令系统的三级流水线cpu设计方法
US5771365A (en) Condensed microaddress generation in a complex instruction set computer
CN106775587B (zh) 计算机指令的执行方法以及使用此方法的装置
US6209080B1 (en) Constant reconstruction processor that supports reductions in code size and processing time
Barriga RISC-V processors design: a methodology for cores development
JP3534987B2 (ja) 情報処理装置

Legal Events

Date Code Title Description
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: 20050517

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050518

R150 Certificate of patent or registration of utility model

Ref document number: 3681740

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090527

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090527

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100527

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110527

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120527

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130527

Year of fee payment: 8

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term