JP3658101B2 - データ処理装置 - Google Patents
データ処理装置 Download PDFInfo
- Publication number
- JP3658101B2 JP3658101B2 JP24337596A JP24337596A JP3658101B2 JP 3658101 B2 JP3658101 B2 JP 3658101B2 JP 24337596 A JP24337596 A JP 24337596A JP 24337596 A JP24337596 A JP 24337596A JP 3658101 B2 JP3658101 B2 JP 3658101B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- bit
- code
- unit
- value
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
- G06F9/30152—Determining start or end of instruction; determining instruction length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
【発明の属する技術分野】
この発明は、複数の命令コードの演算を実行するためのデータ処理装置に関するものであり、具体的には、プロセッサにおける命令コードの配置技術に関する。
【0002】
【従来の技術】
通常、プロセッサにおいては、命令は、プロセッサとデータバスを介してつながっているメモリに、命令コードとして格納されている。この場合、当該メモリに格納されている命令コードのフォーマットには、▲1▼命令コードの長さが命令の種類によらずに常に一定に設定されている「固定長フォーマット」と、▲2▼命令コードの長さがそれぞれ命令の種類によって異なるように設定されている「任意長命令フォーマット」とがある。
【0003】
命令コードには、演算、転送、分岐などの、命令の機能を指定するオペレーションコード部分と、命令の実行対象データ(オペランド)を指定するオペランドコード部分とがある。オペランドの指定は、命令コード中のアドレッシングモードの指定部において当該オペランドがレジスタ内に格納されているのか、それとも外部のメモリ内に格納されているのかを指定することにより、行われる。そして、オペランドがメモリ内にある場合には、更にアドレス情報を命令コード中に付加する。
【0004】
以下に、固定長フォーマット及び任意長フォーマットの命令フォーマットを、それぞれ図18及び図19に模式的に示す。両図において、命令フォーマット100はオペランドがない場合を、命令フォーマット101はオペランドがある場合を、命令フォーマット102はオペランドがない場合の任意長フォーマットを、命令フォーマット103はオペランドがある場合の任意長フォーマットを、それぞれ表している。
【0005】
【発明が解決しようとする課題】
▲1▼命令コードが固定長命令フォーマットの場合
この場合には、命令コードのデコードが容易であるという利点がある。しかし、この命令フォーマットでは、決められた一定の命令長の範囲内で、オペレーションコードやアドレッシングモードの指定部や、さらにはアドレス情報などの付加情報を記述しなくてはならないという制約がある。従って、より多くの付加情報を記述するためには命令長を大きく設定する必要がある。その結果、命令長を大きくした固定長命令フォーマットでは、命令ビットパターンに冗長部分が増加し、コードサイズが大きくなるという問題点が生ずる。一方では、コードサイズを小さくするために命令長を小さく設定すると、命令機能に対する制限が大きくなるという問題点が生じる。
【0006】
▲2▼命令コードが任意長命令フォーマットの場合
この場合には、2種類以上の任意の命令長の命令フォーマットが使用されるので、各々の命令毎に応じて命令機能を拡張することができるという利点がある。また、オペランドのない命令の命令長を短く設定することができるので、固定長命令フォーマットの場合と比較して、コードサイズを小さくできる利点がある。
【0007】
その反面、メモリから読み込んだデータを各命令コードとして抽出し、更に、命令コード自身の各々をデコードする作業が複雑化するので、命令デコード方法が複雑にならざるを得ないという問題点がある。このため、メモリの内容から命令コードを抽出して、命令デコーダに送り込むためのH/W(ハードウェア)が大きくなる。例えば、図20に示す様に、16/32ビット長命令フォーマット105,104を任意長命令フォーマットとして導入するときには、図21に示す様に、命令フェッチ部と命令デコーダの間には、命令コードの転送のために、4つの経路を用意する必要がある。このためには、有効な命令コードをシフトして適切な命令コードの配置の下でデコードが実行されるように、複雑なシフト機能を命令デコーダに具備させなければならない。
【0008】
以上の通り、▲1▼の固定長命令フォーマット及び▲2▼の任意長命令フォーマットには、それぞれ一長一短がある。そこで、▲1▼及び▲2▼のそれぞれの利点を兼ね備えたプロセッサの実現が要望されているのである。
【0009】
この発明は、上記の懸案事項を実現するためになされたものであり、具体的には、(i)固定長命令フォーマットに比べてコードサイズを縮小化し、且つ(ii)従来の任意長命令フォーマットに比べてプロセッサのH/W量を削減して高速化を図ることができる命令フォーマットを備えたプロセッサ及びプロセッサ用の入力装置を実現することを、その主たる目的としている。
【0010】
又、この発明は、命令実行中に発生する各割り込み(外部割り込み、PCブレーク割り込み)やソフトウェア割り込みの機能を具備したプロセッサを実現することを、その副次的目的としている。
【0011】
又、この発明は、そのような命令コードをデコードするためのプロセッサの構成を具体化することを、その副次的目的としている。
【0012】
【課題を解決するための手段】
第1の発明に係るデータ処理装置は、N(Nは1以上の整数)ビット長命令を与える第1命令データ信号と2Nビット長命令を与える第2命令データ信号のみから成る2種類の命令コードを実行するデータ処理装置であって、前記第1及び第2命令コードは、(1)2個の前記第1命令データ信号を2Nビット長のワードの境界内に格納し、(2)前記第2命令データ信号の各々を2Nビット長のワードの境界内に格納するという規則の下に配置された、命令コード入力手段と、前記命令コード入力手段において配置された命令コードをフェッチする命令フェッチ手段とを備え、前記第1及び第2命令データ信号のそれぞれは、その所定のビット位置において、命令実行順序の制御情報を与える命令長識別子データを備える。
【0018】
【発明の実施の形態】
(実施の形態1)
ここでは、N=16とした場合の一例について、図面に基づき説明する。
【0019】
図1は、本発明に係る複数の演算を実行するデータ処理装置の構成を示すブロック図である。図1に示す通り、同装置は、プロセッサ10を中核として構成される。
【0020】
プロセッサ10は、演算部1、レジスタ2、プログラムカウンタ部(以下、PC部と称す)3、アドレス生成器4、命令キュー(queue)部5、命令フェッチ部6、命令デコード部7及び制御部8より構成されている。この内、制御部8は、命令デコード部7が出力するデコード結果に従って、プロセッサ10内の各部1〜7の動作を制御する。尚、図示の簡略化のために、同図中には、制御部8から出力される各制御信号の図示化は省略されている。又、演算部1は、ALU(算術論理演算器)、シフタ(shift)、Load−Storeユニット及び乗算器(Mul.)から成る。又、レジスタ2は汎用レジスタであり、32ビット幅で16本の信号線を有し、演算結果のデータ及びアドレスデータを保持する。他の構成部分の詳細については、後述する。
【0021】
尚、命令キュー部5と命令フェッチ部6とを総称して、「命令フェッチ機能部」と定義する。
【0022】
又、プロセッサ10と、外部の周辺回路11、メモリ12及びデータセレクタ14とは、データバス15とバスインタフェイス部13とによって接続されている。尚、データバス15は、命令コードを与える命令コードデータ信号を本プロセッサ10に入力する「入力手段」に該当する。
【0023】
I.命令コードの配置方法(命令セット)
次に、この発明の根幹をなす「命令コードの配置方法」について説明する。
【0024】
既述した通り、▲1▼固定長命令フォーマット及び▲2▼任意長命令フォーマットでは、それぞれに一長一短があった。特に、▲2▼の任意長命令フォーマットにおいて、16ビット長命令コードと32ビット長命令コードの2種類の命令コードを用いる場合は、命令フェッチ部(ないし命令キュー部)と命令デコード部間には、4つの転送経路が必要とされる。この内、特にハードウェアの複雑化という深刻な問題点を惹起せしめる要因となっているのは、32(2N)ビット長命令が32(2N)ビット境界を乗り越えてしまうような命令コードの配置を許していることにあると考えられる。この点を、図2に模式的に示す。
【0025】
今、命令フェッチ部が外部のメモリより同図の上段側に示す様な順序で配列された3つの命令コード106〜109をフェッチしてきたものとし、これらの内で、32ビット長の命令コード107及び108がデータ処理にとって有効であるものとする。このような場合には、同図の下段側に示すような配置として、有効命令コード107,108をデコードする必要がある。従って、同図に示す様な、交差した2つの経路110,111を実現する必要が生じるのである。このような経路となる命令コードの配置を、ここでは「2Nビット命令が2Nビット境界をまたぐ配置」と呼称している。このために、命令デコーダ側のハードウェアが複雑化せざるを得ないのである。かかる要因に着眼するならば、そのような命令コードの配置を禁止する必要がある。
【0026】
そこで、この発明では、(i)N(N≧1)ビット長の命令(第1命令データ信号)と2Nビット長の命令(第2命令データ信号)という、2種類の命令長のみから成る複数の命令コード(命令コードデータ信号)を実行することとし、(ii)命令コードの配置方法、即ち、2Nビット長で与えられる「ワード」内(これを、2Nビット長ワード境界内と称す)に各命令をどのように配置するのかという点を、以下の2種類のみに制限することとしている。即ち、
(1)2個のNビット長命令を2Nビットワード境界内に格納する。
【0027】
(2)単一の2Nビット長命令を2Nビットワード境界内に格納する。
【0028】
本実施例では、N=16の場合を扱うものとしているので、16ビット長命令と32ビット長命令(最大ビット長の命令)の2種類のみとなり、命令コードの配置方法は図3に示す通りとなる。
【0029】
このような配置制限を設けることによって、32ビット長命令が32ビット境界をまたぐような命令コードの配置が完全に禁止されることとなり、その結果として、図1の命令フェッチ部6と命令デコード部7との転送経路は、図4に示す様に、3種類に削減される。この3種類の転送経路は、次の模式的な説明図5によって、理解されうるであろう。
【0030】
同図に示す様に、命令キュー部5内に保持されている状態では、3種類の命令コードの配列がありうる。その内、同図の上段及び中段に示されるものは、それぞれ、先行する16ビット長命令コードA1及び後行する16ビット長命令コードB2のみが有効となる場合であり、いずれも上記配列方法(1)の制限の下で配列されている。この内、同図の上段の場合には、図4に示す経路RT1を経て、命令コードA1はデコーダに転送される。又、図5の中段の場合には、図4に示す交差経路RT3を経て、命令コードB2はデコーダに転送される。他方、図5の下段に示される32ビット長の命令コードC1は上記配置方法(2)に基づく制約の下で配列されているものであり、図4に示す経路RT1,RT2を経てデコーダに転送される。従って、デコード化のためには、3種類の経路RT1〜RT3のみで良いこととなる。
【0031】
このように、命令コードの配置を上記(1),(2)の制約に服させることとしているので、転送経路を従来の場合よりも1種類分だけ削減することが可能となるのであるが、上記(1),(2)の制約を受けて配置された命令コードを与える命令コードデータ信号は、図1のデータバス15上の入力データ信号として実現されて、命令キュー部5に保持される。そのためには、ここでは、上記制約ルール(1),(2)に基づいたプログラム制御によって、命令コードのデータをメモリ12内に書き込んでいる。従って、上記制約ルール(1),(2)に基づく配置で書き込まれた命令コードデータ信号を記憶する「メモリ12」と、上記配置順序に従って当該メモリ12から読み出された命令コードデータ信号をプロセッサ10内に入力する手段たる「データバス15」とを、「プロセッサ用命令コード入力装置」として総称する。
【0032】
尚、上記命令コードデータ信号の内、上記制約(1)に基づき配置された16ビット(一般的にはNビット)長命令コードを与えるものを「第1命令コードデータ信号」と、上記制約(2)に基づき配置された32ビット(一般的には2Nビット)長命令コードを与えるものを「第2命令コードデータ信号」と、それぞれ呼称する。
【0033】
プロセッサ10の命令キュー部5内の命令コードデータ信号のフォーマットを、図6に示す。同図中の記号op1,op2はオペランドコードを、記号R1,R2はレジスタを、記号Cは定数を、記号condは分岐条件の指定を表わす。
【0034】
尚、上記制限(1),(2)の下でメモリ12に命令コードのデータを書き込むのに代えて、上記制限とは無関係に命令コードのデータをメモリ12内に書き込み、新たにデータバス15上にメモリ12より読み出した命令コードデータ信号を上記制限(1),(2)の下で配置する機能部を設け、この機能部の出力データを命令キュー部5に格納するようにしても良い。
【0035】
II.分岐先の制御
更に、本プロセッサ10においては、分岐先のアドレスを32ビット境界にのみ指定ないし制限する。このように、命令コードの32ビット境界への配置を禁止したことに加えて、分岐先アドレスを32ビット境界にのみに制限したことにより、命令フェッチ部6と命令デコーダ間の転送経路は2種類にまで削減される。
【0036】
この点は、既述した図5に立ち戻って概観すれば、容易に理解されうるであろう。即ち、分岐先アドレスを32ビット境界においてのみ指定できるように制限したということは、図1の命令デコード部7では、命令フェッチ部6より出力された、32ビット長ワード境界内に配置された命令コードデータ信号を受け取った後は、当該命令コードデータ信号をその32ビット(2Nビット)境界からデコードを開始することを意味する。従って、32ビットワード境界内に2個の16ビット長命令コードが配置されている場合は、先行する命令A2をデコードした後に、同図の中段の命令コードB2を、先行する命令コードA2があるビット位置へシフトした上でデコードすればよい。
【0037】
よって、命令キュー部5から命令デコード部7への命令コードデータ信号の転送経路は、図7に模式的に示す様に、2種類のみとなるのである。即ち、転送経路は、
(イ)命令キュー部:上位16ビット→命令デコード部:上位16ビット。
【0038】
(ロ)命令キュー部:下位16ビット→命令デコード部:下位16ビット。
【0039】
分岐命令の飛び先の指定は、以下の形式で行われる。その点を、図8、図9及び図10に示す本プロセッサ10における命令コード表に基づき説明する。尚、上記命令コード表において、「Format」中の「dest」は結果収納先のレジスタの番号を示しており、「src」は演算対象であり、ここでは図6に示したレジスタR1を意味しており、当該レジスタR1中の数値がメモリのアドレス値となっている。又、「pcdisp8」は、即値が8ビットで与えられていることを示している。
【0040】
上記命令コード表において、
(a)JMP,JL命令は、命令コード内で指定したレジスタの値が分岐先アドレスとなる。(ただし、レジスタの下位2ビットの値”0”は無視する)。
(b)BRA,BL,BC,BNC命令は、8ビット又は24ビットの即値を指定する。
(c)BEQ,BNE,BEQZ,BNEZ,BLTZ,BGEZ,BLEZ,BGTZ命令は16ビットの即値を指定する。
上記(b),(c)における分岐先のアドレスは、
(分岐命令のPC値)+(符号拡張された即値を左に(最上位ビット位置側に)2ビットシフトした値)
とする。ただし、加算を行う際には、PC値の下位2ビットは”00”となる。
【0041】
以上のように、分岐先を32ビット境界のみに指定したことにより、分岐先アドレスの下位2ビットは常に”00”となる。したがって、命令コード内で分岐先アドレスを指定する場合には、その下位2ビットを指定する必要がなくなる。結果として、命令コード内から直接分岐できる範囲は22倍、従って4倍となる。本実施の形態の場合には、上記命令コード表に示されるように、命令コード内のアドレス指定部は最大で24ビットであるので、実行中の命令のアドレスから±32MByteの範囲に直接分岐できる。
【0042】
III.命令のデコード順序の制御
更に本プロセッサ10においては、命令コード内に命令フォーマット識別子を与える情報を所定のビット数として、ここでは1ビットとして設けている。そして、この命令フォーマット識別子の値いかんによって、命令のデコード及び実行順序を制御している。ここでは、各命令コードのMSB(Most Significant Bit)が命令フォーマット識別子に該当する。
【0043】
上記命令フォーマット識別子を用いた制御のルールは、次の通りに設定される。即ち、単一の32ビット長命令コードのMSBは常に1に設定されている。他方、命令コードが2個の16ビット長命令コードから成る場合においては、上位16ビット側に存在する命令コードのMSBは常に0とされる。それに続く下位16ビット側の命令コードに対しては、そのMSBの値いかんによって異なる処理を行う。
【0044】
命令の実行順序の制御方法を、図11を用いて説明する。同図において、▲1▼「命令B」のMSBが0の場合は、「命令A」と「命令B」とは連続して実行される。
【0045】
それに対して、▲2▼「命令B」のMSBが1の場合は、「命令A」のみが実行される。命令Bは実行されない。即ち、32ビット長命令の命令コード配置の制約に基づいたワードアライメント調整のための命令Bとしてワードアライメント調整用「NOP命令」を挿入したときには、アセンブラが自動的に当該「NOP命令」にあたる命令コードのMSBを1とし、これにより「命令A」のみの実行が行われる。通常の無効演算「NOP命令」は”0111000000000000”として与えられるが、アライメントという上記目的のために「NOP命令」は32ビットワード境界内の下位側16ビット位置に挿入されたのであって、それを直接実行する必要もない。従って、本プロセッサ10では、「NOP命令」は”1111000000000000”として与えられ、その結果、「NOP命令」自体は実行されない。
【0046】
このような命令実行順序の制御を行うことにより、コード配置を満たすために挿入された無効演算である「NOP命令」の実行時間ペナルティがなくなるという利点が得られる。
【0047】
V.命令デコード方法とその制御部
以下では、命令のデコード制御方法の具体例を、図12を用いて説明する。
【0048】
(命令デコード部7の構成)
命令デコード部7は、命令デコード入力ラッチ7a、命令デコーダ7c、定数生成器7d及び命令デコード部7の制御ロジック7bから構成される。これらの内で、制御ロジック7bは、命令デコード部7の各部の制御を司る。又、命令デコーダ7cは、命令デコード入力ラッチ7aに格納された32ビットのビットパターンのうちの有効な命令コードを、入力として受け取り、当該命令デコーダ7cは命令コードをデコードする。尚、命令デコード入力ラッチ7a内の命令コードの配置は、メモリ12上での命令コードの配置と同じである。デコード結果はプロセッサ10の制御部8へと出力され、制御部8は、そのデコード結果に基づき、演算部1やプロセッサ10全体を制御する。
【0049】
各部のより詳細な動作は、次の通りである。
【0050】
(命令フェッチ部6)
先ず、命令フェッチ部6は、データバス15(図1)を介してメモリ12から命令コードデータ信号を32ビット長単位でフェッチし、それらを命令キュー部5に格納する。更に命令フェッチ部6は、後述の第5制御信号CBに応じて、命令キュー部5より順次に命令コードデータ信号を読み出して命令デコード部7へ転送する。その結果、転送されてきた命令コードデータ信号は、32ビット幅の命令デコード入力ラッチ7aへ格納される。
【0051】
命令デコード入力ラッチ7aに格納された命令コードデータ信号の内で有効な命令コードを与える信号のデコードの実行は、既述した命令フォーマット識別子に基づき、制御ロジック7bにより、次の通りに制御される。その点を、以下に詳述する。
【0052】
(制御ロジック7b)
図12の第1〜第3制御信号CT1〜CT3(入力信号とも称す)と命令デコード入力ラッチ7a内の有効コード配置との関係を、図13に示す。図中の斜線部は命令フォーマット識別子を示し、梨地部は有効なコードを示す。
【0053】
図12に示すように、制御ロジック7bは、命令デコード入力ラッチ7aに納められた32ビットパターンのうちの命令長識別子を与える第1,第2制御信号CT1,CT2と、制御ロジック7b自身から出力される第3制御信号CT3とを、入力とする。即ち、命令デコード入力ラッチ7aは、命令フォーマット識別子として自ら保有する32ビットのビットパターンの0ビット目の値と16ビット目の値とを、各々第1制御信号CT1及び第2制御信号CT2として、制御ロジック7bに出力する。第3制御信号CT3は制御ロジック7b自身からの出力信号であり、それは、命令デコーダ7cが出力するデコード終了信号ESに応じて、上記ラッチ7aに納められた32ビットのビットパターン中の0ビット目から15ビット目までの部分がデコードされているのか(この場合には”0”)、それとも16ビット目から31ビット目までの部分が現在デコードされているのか(この場合には”1”)を、表わす。
【0054】
(α)第1制御信号CT1の値が”1”である時は、命令デコード入力ラッチ7aに納められている命令コードデータ信号は32ビット長命令を与えるものである。
【0055】
(β)第1制御信号CT1が”0”であるときは、命令デコード入力ラッチ7aには2個の16ビット長命令から成る命令コードデータ信号が格納されている。このとき、さらに第2制御信号CT2が”0”かつ第3制御信号CT3が”0”であれば、有効な命令コードは上位16ビット側にある。これに対して、第2制御信号2が”0”かつ第3制御信号CT3が”1”であれば、有効な命令コードは下位16ビット側にある。
【0056】
(γ)第1制御信号CT1が”0”で、しかも第2制御信号CT2が”1”である場合は、上位16ビットの命令コードのみが有効なコードであり、下位16ビットの命令コードは、上述したワードアライメント調整用「NOP命令」であり実行されない。
【0057】
制御ロジック7bは、以上の入力信号CT1〜CT3の値を基に、次コードのデコードのために、次の3種類の制御信号CA,CB,CT3を出力する。この内、第4制御信号CAは、命令デコード入力ラッチ7a内において下位16ビットの命令コードを上位16ビット位置へシフトするための制御信号、即ちシフタ制御信号であり、第5制御信号CBは命令アドレスの32ビット境界のポインタであり、命令フェッチ部6に対して命令デコード入力ラッチ7aへの命令コードの転送開始を命令する信号である。第3制御信号CT3は、既述した通り、次の有効コードが32ビットワード境界内の上位16ビット位置にあるのか、下位16ビット位置にあるのかを示す信号である。
【0058】
さらに、図12に示すように、制御ロジック7bは、第6制御信号CCとして、命令デコーダ7cにおいてデコード実行中の命令コードのアドレスが32ビットワード境界上にある場合には”1”を、ワード境界上にない場合には”0”を、後述するPCのビット30部(PC30部)に出力する。
【0059】
命令コード内の即値により分岐先アドレスを指定する分岐命令、即ち、上述した(b)BRA命令等や(c)BEQ命令等をデコードする場合は、命令デコード入力ラッチ7aの後半24ビット(8ビット目から31ビット目まで)位置に接続された定数生成器7dへ、同ラッチ7aは即値を出力する。定数生成器7dは、即値を符号拡張して得られる値を、バスS2に出力する。
【0060】
命令実行時に分岐が発生した場合には、第1〜第3制御信号(入力)CT1〜CT3の値に関わりなく、命令デコード部7の第4制御信号CA、第5制御信号CB、第6制御信号CC及び第3制御信号CT3は、すべて初期化される。
【0061】
制御信号(入力)と制御信号(出力)の関係を図14に示す。
【0062】
以上より、命令デコード部7(図1,図12)においては、いずれの場合にも、第1回目にデコードする命令コードは、必ず命令デコード入力ラッチ7aの先頭からはじまる。したがって、命令デコード入力ラッチ7aの内容が、そのまま命令デコーダ7cに転送される。命令コードデータ信号が単一の32ビット長命令コードの場合には、転送経路は図12に示す経路P2,P3である。又、上位の16ビット長命令コードの転送経路は、経路P2である。
【0063】
命令デコード入力ラッチ7aにおける命令コードの配置が16ビット長命令の逐次実行である場合のみ、命令コードの2回目の命令デコーダ7cへの出力が行われる。この際、2回目の命令デコーダ7cへの出力前に、次のような処理が行われる。デコード対象となる命令コード、即ち有効なコードは32ビットワード境界内の下位側の16ビット位置にあるので、命令デコード入力ラッチ7aの内容は左へ(32ビットのビットパターンの0ビット目方向へ)16ビット分だけシフトされ(経路P1)、入力ラッチ7aに入る。その結果が、2回目の命令デコーダ7cへの出力となる(経路P2)。
【0064】
このように、経路P1を経由するのは、有効コードが命令デコード入力ラッチ7aの下位16ビット位置にある場合に限られるので、H/W量を削減することができ、さらに高速化を図れることが可能となる。
【0065】
VI.PC部3のインクリメント動作
図15は、図1中のPC部3及びアドレス生成器4の部分を拡大したブロック図である。図15を用いてPC部3のインクリメント動作について説明する。
【0066】
アドレス生成器4は、シフタ4aと加算器4bとから構成されており、分岐命令のアドレスをアドレッシングモードに従って計算する。
【0067】
PC部3は、プログラムカウンタ(以後、PCと称す)を中核として、更に比較器3b、(+1/0)部3e、バックアップ・プログラムカウンタ(以下、BPCと称す)3f、BPC30部3g及びプログラムカウンタ・ブレークポインタ(以下、PBPと称す)より構成される。この内、PBP3aとBPC3fとは、制御レジスタである。
【0068】
上述のプログラムカウンタは32ビットのカウンタであり、現在実行中の命令のアドレス値を保持する。命令コードの配置方法を上述の通り限定しているので、本プロセッサ10(図1)の命令は偶数アドレス値からのみ始まる。よって、プログラムカウンタの31ビット目の値は、図22に例示するように、”0”固定となる。従って、ハードウェア上では、PCの31ビット目の値を実現する必要がないので、PCは、図15に示す通り、0ビット目から29ビット目までの値を与えるPC(0:29)3cと、30ビット目の値を与えるPC30部3dとによって実現されている。この内、PC30部3dは、第6制御信号CCの値”0”又は”1”を保有するレジスタである。
【0069】
又、上述のBPCは、後述する割り込み・トラップ発生時にPC3cが保持するPC値を退避する。ここで、図23に例示するように、BPCの31ビット目の値は常に”0”固定されているので、ハードウェア上では、BPCは、0ビット目から29ビット目までの値を与えるBPC(0:29)3fと、30ビット目の値を与えるBPC30より実現されている。従って、本プロセッサ10(図1)は、後述する割り込み・トラップの発生を検出すると、PC(0:29)3cの値をBPC(0:29)3fへ退避させる。他方、PBP3aは、後述するPCブレーク割り込みを制御するための32ビット幅制御レジスタであり、PBP3aは、割り込みを起動する命令実行のアドレス値を予め保有しており、制御部8(図1)から出力するバスD1上の書き込み命令信号を用いて、上記アドレス値を書き込んでいる。
【0070】
PC(0:29)3cの更新は、本プロセッサ10(図1)において分岐以外の命令が実行された時には、以下に示すように行われる。尚、ここでは、4本のバスS1,S2,S3及びD1を使用しており、信号線Dは、PC3cに接続されている。
【0071】
図12の命令デコード部7の制御ロジック7bから出力される第5制御信号CB(32ビットワード境界のアドレスを指すポインタ)が更新されると、PC(0:29)3cが保持する値は(+1/0)部3eによって”+1”だけ増加させられ、その増加後の値が信号線D上にのる。これに対して、第5制御信号CBが更新されない場合は、PC(0:29)3cの値は、(+1/0)部3eによって増加されることなく、そのまま信号線D上にのる。
【0072】
信号線D上の値はPC(0:29)3cへ書き込まれ、これにより、PC(0:29)3cのPC値は、次命令のPC(0:29)3cの値へと書き換えられる。また、信号線DはバスS1に結線されているので、このPC(0:29)3cの更新値をバスS1上に呼びだすことができる。
【0073】
PC30部3dには、命令デコード部7内の制御ロジック7b(図1)から出力される第6制御信号CCの値が、命令実行時に書き込まれる。
【0074】
他方、命令実行時に分岐が発生した場合には、次命令のPC値は、アドレス生成器4を用いて生成され、その生成値はバスS3を経由してPC(0:29)3cに書き込まれる。
【0075】
又、飛び先アドレス指定を即値でおこなう分岐命令(上述した分岐命令(b),(c))の場合には、命令デコード部7の定数生成器7d(図1)は、当該命令コードから抽出した即値を32ビットに拡張し、拡張後の即値をバスS2を介してアドレス生成器4へ出力する。そして、符号拡張された即値は、アドレス生成器4内のシフタ4aによって左に(最上位側へ)2ビットだけシフトされる。PC(0:29)3cの更新値は、信号線DからバスS1を介して、アドレス生成器4に出力される。ここで、PC(0:29)3cの更新値は、分岐命令のPC上位30ビットにあたる。加算器4bは、
(PC(0:29)3cの更新値)+(符号拡張された即値を左に2ビットシフトした値)
を計算し、これにより、分岐先アドレスの上位30ビットが得られる。この上位30ビットの値は、バスS3を介して、PC(0:29)3cに書き込まれる。
【0076】
飛び先アドレス指定をレジスタ2(図1)の値で行う分岐命令の場合(上述の分岐命令(a))には、命令コードにより指定されたレジスタ2から、バスS1を介して、レジスタに保持されている値が受け取られ、その定数値がPC3cに書き込まれる。
【0077】
分岐発生時は、命令デコード部7が第6制御信号CCを”0”に初期化することにより、PC30部3dには”0”が書き込まれる。よって、本プロセッサ10(図1)では、上述の通り、分岐先のアドレスは32ビットワード境界のみとなる。
【0078】
VII.割り込み・トラップ動作の説明
プロセッサ10(図1)が通常のプログラムを実行している途中で、ある事象が発生すると、そのプログラムの実行を中断して、別のプログラムを実行する必要が生じる。このような事象としては、大別して、割り込み及びトラップ動作がある。
【0079】
(a)割り込み(Interrupt)
上記事象の内、外部からのハードウェア信号(これを割り込み要求信号と称す)により、又は特定のアドレス実行時に生ずるPCブレーク信号により発生する事象。
【0080】
(b)トラップ(Trap)
上記事象のうち、命令により発行される事象。
【0081】
本プロセッサ10(図1)はまた、外部割り込み(EI)及びPCブレーク割り込み(PBI)から成る2種類の(a)割り込みと、1種類のトラップ(TRAP)とを実現する機能を備える。
【0082】
割り込み・トラップ発生時の処理手順を図16を用いて説明すれば、概要、次の通りとなる。
【0083】
割り込み要求信号又はPCブレーク信号が有効となった場合には、後程詳述する様に、プロセッサ10は、32ビットワード境界でのみ割込みを受け付ける。また、トラップ命令は、その命令実行後、トラップの処理を開始する。
【0084】
これにより、プロセッサ10(図1)は、プログラムの実行を中断して割り込み又はトラップの処理を行う。その際、同プロセッサ10は、後述する様に、割り込み又はトラップの事象を検出して図15のPC3cのPC値をBPC3fへ退避させることとしており、その後、各々の割り込み又はトラップに対応した処理プログラム「割り込み・トラップ処理ハンドラ」への分岐をおこなう。
【0085】
「割り込み・トラップ処理ハンドラ」での処理が完了すると、「割り込み・トラップ処理ハンドラ」からの復帰命令を実行し、続いてPC3cのPC値の復帰を行い、プロセッサ10は当該割り込み・トラップ処理から復帰する。
【0086】
本プロセッサ10における割り込み・トラップの処理は、以上の通り、ハードウェアが処理を行う部分と、プログラムが処理をする部分とから成る。即ち、本プロセッサ10では、上述の処理の内、
(1)戻り先であるPC値のBPC3fへの退避、
(2)「割り込み・トラップ処理ハンドラ」への分岐、
(3)BPC値のPC3cへの書き込み、
を、ハードウェア部分が実行する。
【0087】
前述の外部割り込み(EI)は、外部からのハードウェア信号(割込み要求信号)により発生する。割込み要求信号による割り込みの要求は、32ビットワード境界上でのみ受け付ける(この機構は、後記の検出回路の構成による)。割り込み発生時に図15のBPC3fに退避される値は、次命令のPC値である。
【0088】
他方、PCブレーク割り込み(PBI)は、特定のアドレスを実行したときに発生する。本プロセッサ10(図1)においては、指定するアドレスは32ビットワード境界のみである。各サイクル毎に、図15の比較器3bは、PBP3aが保持する値とPC3cの値とを比較し、両者の値が一致するときにPCブレーク信号18を出力する。PCブレーク信号18は、後述する割り込み・トラップ検出回路を介して、割り込み・トラップ検出信号として検出され、その信号は図15の(+1/0)部3eへ出力される。その結果、プロセッサ10に割り込みが発生し、PC値の退避が生じる。既述した通り、PBP3aへの書き込みは、データバスD1を用いて行われる。又、割り込み発生時にBPC3fに退避される値は、次命令のPC値である。
【0089】
又、トラップとは、ソフトウェアで制御する割り込みのことであり、トラップ命令の実行により発生する。この場合、トラップ命令が32ビットワード境界内の上位16ビット側にあるのか、それとも下位16ビット側にあるのかを与える情報を、BPCビット30、即ち、BPC30部3gに格納する。トラップ命令が上位16ビットにある場合は、BPC30部3gの値は”0”、下位16ビットである場合は、BPC30部3gの値は”1”である。割り込み発生時にBPCに退避される値は、(トラップ命令のPC値+4)である。
【0090】
割り込み・トラップを検出する回路を、図17に示す。同検出回路は、図1の制御部8の一部を構成しており、インバータ22、AND回路23,24及び割り込み・トラップ検出回路16より成る。
【0091】
本プロセッサ10は、当該検出回路によって、外部信号19による割り込みの要求及びPCブレーク信号18による割り込みの要求を、共に32ビットワード境界においてのみ受け付ける。即ち、32ビットワード境界においては第6制御信号CCのレベルは”0”であるので、第6制御信号CCを反転したワード境界検出信号21(そのレベルは”1”)と割込み要求信号19とが同時に有効(”1”)になったときにのみ、出力信号VEが有効(”1”)となる。また、ワード境界検出信号21とPCブレーク信号18とが同時に有効(”1”)になったときにのみ、出力信号VFが有効となる。このように、32ビットワード境界でのみ上記割込み要求が受け付けられ、割り込み・トラップ処理ハンドラへ分岐し、当該処理を行った後に、「割り込み・トラップ処理ハンドラ」からの復帰命令の実行によって、割り込み・トラップ処理から実行プログラムへの復帰が行われる。
【0092】
他方、トラップ命令では、トラップ命令による割り込みが指令されると、トラップ要求信号20が有効(”1”)になる。
【0093】
トラップ要求信号20、出力信号VE、出力信号VFの内のいずれか1つが有効(”1”)になると、割り込み・トラップ検出回路16により、割り込み・トラップ検出信号17が出力される。割り込み・トラップ検出信号17が出力されると、割り込み・トラップ処理ハンドラへ分岐し、当該処理を行った後、復帰命令を実行し、当該処理から実行プログラムへと復帰する。
【0094】
既述の通り、割り込み・トラップ発生時には、PC3c(図15)の値がBPC3fに退避される。割り込み発生時、BPC3fには次命令のPC値が書き込まれる。
【0095】
例えば、分岐命令の実行直後に割り込みが発生した場合には、図15のアドレス生成器4で生成された分岐先を与えるPC値は、制御部8の制御の下、バスS3を経由してBPC3fに書き込まれる。これに対して、分岐命令以外の命令の実行直後に割り込みが発生した場合には、(+1/0)部3eによってPC(0:29)3cの出力値に”+1”を加えられたものが、BPC(0:29)3fに書き込まれる。
【0096】
BPC30部3gには、PC30部3dの値が書き込まれる。本プロセッサ10(図1)においては、既述した通り、割り込みは32ビットワード境界においてのみ受け付けられるので、割り込み発生時にBPC30部3gに退避される値は、常に”0”である。
【0097】
トラップ発生時には、((トラップ命令のPC)+4)の値がBPC3fに書き込まれる。即ち、(+1/0)部3eによってPC(0:29)3cの出力値に”+1”が加えられたものが、BPC(0:29)3fに書き込まれ、BPC30部3gにはPC30部3dの値が書き込まれる。即ち、トラップを発生させたトラップ命令が32ビットワード境界の上位16ビットにある場合は、BPC30部3fには”0”が、32ビットワード境界の下位16ビットにある場合はBPC30部3gには”1”が、それぞれ書き込まれる。
【0098】
割り込み・トラップからの復帰は、既述の通り、リターン命令を実行することによって行う。リターン命令は、制御部8が出力する信号25を受けてBPC3fが出力する信号が与えるアドレスへ分岐する。ただし、本プロセッサ10においては、分岐先のアドレスは常に32ビット境界のみに設定されているので、BPC3fがPC3cに復帰する際、PCの下位2ビットは常に”00”となる。
【0099】
(まとめ)
以上の構成を採用したことにより、次の様な特徴点が得られる。
【0100】
本プロセッサ10は、Nビット長と2Nビット長という2種類の命令長から成る命令コードを実行することにより、固定長命令フォーマットに比べて、命令機能の制限を受けることなくコードサイズを縮小することができると共に、従来の任意長命令フォーマットに比べて命令デコード方法を簡略化できる。
【0101】
特に、命令コードの配置に一定の制限を加えて、2Nビット境界をまたぐ命令の配置を禁止すると共に、分岐先アドレスを2Nビットワード境界のみに指定することとしたことにより、命令フェッチ部6及び命令デコード部7間のデータ転送経路を格段に削減することができる。その結果、命令デコードのためのH/W量を削減でき、高速化が図れる。
【0102】
しかも、本プロセッサ10においては、分岐先アドレスを2Nビット境界に制約したことにより、分岐先アドレスの下位2ビットは常に”00”となる。したがって、命令コード内で分岐先アドレスの下位2ビットを指定する必要がない。その結果として、アドレスの全てのビットを指定する場合と比較して、22倍、即ち4倍の広範囲へ実行中の命令のアドレスから直接分岐することができる。
【0103】
そのような機能を備えた本プロセッサ10に対して、更に、各種の割り込みやトラップ処理をサポートし得る機能を備えることも可能である。
【0104】
【発明の効果】
請求項1記載の発明によれば、命令コード入力手段により2個の第1命令データ信号及び第2命令データ信号は共に2Nビットワード境界内に格納されるので、2Nビット長命令のデータが当該2Nビット境界をまたいでしまうこととなる命令コードの配置が禁止されることとなる。このため、命令フェッチ部から命令デコード部への命令コードデータ信号の転送経路を従来の4種類から3種類に削減することができるという効果がある。
【0106】
更に、請求項1記載の発明によれば、命令長識別子に基づいて各命令のデコード及びその実行順序を制御することが可能となる。そして、命令長識別子の適切な設置によっては、無効演算としての命令コードデータ信号を実行しなくて済むようにすることができ、これにより実行時間ペナルティをなくすことも可能になるという利点がある。
【図面の簡単な説明】
【図1】 データ処理装置の構成を示すブロック図である。
【図2】 命令コードの配置方法を模式的に示す図である。
【図3】 命令コードの配置方法を模式的に示す図である。
【図4】 命令フェッチ部と命令デコード部との転送経路を模式的に示す図である。
【図5】 3種類の命令コードの配列を示す図である。
【図6】 命令キュー部内の命令コードデータ信号のフォーマットを示す図である。
【図7】 命令キュー部と命令デコード部との転送経路を模式的に示す図である。
【図8】 プロセッサの命令コード表を示す図である。
【図9】 プロセッサの命令コード表を示す図である。
【図10】 プロセッサの命令コード表を示す図である。
【図11】 命令コードの実行順序の制御方法を示す図である。
【図12】 命令デコード部の構成の詳細を示すブロック図である。
【図13】 第1〜第3制御信号と命令デコード入力ラッチ内の有効コード配置との関係を示す図である。
【図14】 命令デコード部の制御ロジックの第1〜第3制御信号と第4〜第6制御信号との関係を示す図である。
【図15】 PC部及びアドレス生成器の構成の詳細を示すブロック図である。
【図16】 割り込み・トラップ発生時の処理手順を示す図である。
【図17】 割り込み・トラップを検出する回路を示すブロック図である。
【図18】 従来の固定長命令フォーマットを示す図である。
【図19】 従来の任意長命令フォーマットを示す図である。
【図20】 従来の任意長命令フォーマットの具体例を示す図である。
【図21】 従来の命令フェッチ部と命令デコーダ部間の転送経路を示す図である。
【図22】 PCがハードウェア上で実現されている態様を示す図である。
【図23】 BPCがハードウェア上で実現されている態様を示す図である。
【符号の説明】
1 演算部、2 レジスタ、3 PC部、3a プログラムカウンタ・ブレークポインタ、3b 比較器、3c プログラムカウンタ部(ビット0〜29)、3d プログラムカウンタ部(ビット30)、3e (+1/0)部、3f バックアップ・プログラムカウンタ(ビット0〜29)、3g バックアップ・プログラムカウンタ(ビット30)、4 アドレス生成器、5 命令キュー部、6命令フェッチ部、7 命令デコード部、7a 命令デコード入力ラッチ、7b制御ロジック、7c 命令デコーダ、7d 定数生成器、8 制御部、10 プロセッサ、11 周辺回路、12 メモリ、13 バスインタフェイス部、14 データセレクタ、15 データバス、16 割り込み・トラップ検出回路、17 割り込み・トラップ検出信号、18 PCブレーク信号、19 割込み要求信号、20 TRAP要求信号、21 ワード境界検出信号、22 インバータ、23,24 AND回路、25 出力信号。
Claims (1)
- N(Nは1以上の整数)ビット長命令を与える第1命令データ信号と2Nビット長命令を与える第2命令データ信号のみから成る2種類の命令コードを実行するデータ処理装置であって、
前記第1及び第2命令コードは、(1)2個の前記第1命令データ信号を2Nビット長のワードの境界内に格納し、(2)前記第2命令データ信号の各々を2Nビット長のワードの境界内に格納するという規則の下に配置された、命令コード入力手段と、
前記命令コード入力手段において配置された命令コードをフェッチする命令フェッチ手段とを備え、
前記第1及び第2命令データ信号のそれぞれは、その所定のビット位置において、命令実行順序の制御情報を与える命令長識別子データを備える、
データ処理装置。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP24337596A JP3658101B2 (ja) | 1996-09-13 | 1996-09-13 | データ処理装置 |
TW085114619A TW379305B (en) | 1996-09-13 | 1996-11-26 | Two-type command length code processor and command code input device |
KR1019970000490A KR100260353B1 (ko) | 1996-09-13 | 1997-01-10 | 2종류의 명령장 코드를 실행하는 프로세서 및 그명령 코드입력 장치 |
US08/811,005 US6463520B1 (en) | 1996-09-13 | 1997-03-04 | Processor for executing instruction codes of two different lengths and device for inputting the instruction codes |
CN97103068A CN1095116C (zh) | 1996-09-13 | 1997-03-19 | 执行两种指令长度代码的处理机及其指令码输入装置 |
US09/562,643 US6209079B1 (en) | 1996-09-13 | 2000-05-01 | Processor for executing instruction codes of two different lengths and device for inputting the instruction codes |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP24337596A JP3658101B2 (ja) | 1996-09-13 | 1996-09-13 | データ処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH1091435A JPH1091435A (ja) | 1998-04-10 |
JP3658101B2 true JP3658101B2 (ja) | 2005-06-08 |
Family
ID=17102923
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP24337596A Expired - Fee Related JP3658101B2 (ja) | 1996-09-13 | 1996-09-13 | データ処理装置 |
Country Status (5)
Country | Link |
---|---|
US (2) | US6463520B1 (ja) |
JP (1) | JP3658101B2 (ja) |
KR (1) | KR100260353B1 (ja) |
CN (1) | CN1095116C (ja) |
TW (1) | TW379305B (ja) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3490007B2 (ja) * | 1998-12-17 | 2004-01-26 | 富士通株式会社 | 命令制御装置 |
DE69934394D1 (de) * | 1999-05-03 | 2007-01-25 | St Microelectronics Sa | Vorrichtung zum Bereitstellen von Maschinenbefehlen |
EP1050798A1 (en) * | 1999-05-03 | 2000-11-08 | STMicroelectronics SA | Decoding instructions |
US20020144235A1 (en) * | 2001-03-30 | 2002-10-03 | Charles Simmers | Debugging embedded systems |
DE10120522A1 (de) * | 2001-04-26 | 2002-11-07 | Infineon Technologies Ag | Verfahren zum Erkennen einer korrekten Befehls-Einsprung-Adresse bei Verwendung unterschiedlich langer Befehlsworte |
US7493470B1 (en) | 2001-12-07 | 2009-02-17 | Arc International, Plc | Processor apparatus and methods optimized for control applications |
US7278137B1 (en) * | 2001-12-26 | 2007-10-02 | Arc International | Methods and apparatus for compiling instructions for a data processor |
WO2003065165A2 (en) * | 2002-01-31 | 2003-08-07 | Arc International | Configurable data processor with multi-length instruction set architecture |
DE10204038B4 (de) * | 2002-02-01 | 2005-03-03 | Infineon Technologies Ag | Verfahren zum Erkennen einer korrekten Befehls-Einsprung-Adresse bei Verwendung unterschiedlich langer Befehlsworte |
GB2393270B (en) | 2002-09-19 | 2005-07-27 | Advanced Risc Mach Ltd | Executing variable length instructions stored within a plurality of discrete memory address regions |
TWI230899B (en) * | 2003-03-10 | 2005-04-11 | Sunplus Technology Co Ltd | Processor and method using parity check to proceed command mode switch |
DE102004004561B4 (de) * | 2004-01-29 | 2006-09-14 | Infineon Technologies Ag | Mikroprozessor mit einer energieeinsparenden Hol- und Dekodiereinheit zum Holen und Decodieren von komprimierten Programmbefehlen und mit einer Programmbefehlsfolgesteuerung |
US8006071B2 (en) * | 2004-03-31 | 2011-08-23 | Altera Corporation | Processors operable to allow flexible instruction alignment |
US20060174089A1 (en) * | 2005-02-01 | 2006-08-03 | International Business Machines Corporation | Method and apparatus for embedding wide instruction words in a fixed-length instruction set architecture |
US7526633B2 (en) * | 2005-03-23 | 2009-04-28 | Qualcomm Incorporated | Method and system for encoding variable length packets with variable instruction sizes |
US7581082B2 (en) * | 2005-05-13 | 2009-08-25 | Texas Instruments Incorporated | Software source transfer selects instruction word sizes |
US8325768B2 (en) | 2005-08-24 | 2012-12-04 | Intel Corporation | Interleaving data packets in a packet-based communication system |
CN100346291C (zh) * | 2005-12-02 | 2007-10-31 | 浙江大学 | 多地址空间的块传输指令的控制方法及其装置 |
US7908463B2 (en) * | 2007-06-26 | 2011-03-15 | Globalfoundries Inc. | Immediate and displacement extraction and decode mechanism |
CN101344840B (zh) * | 2007-07-10 | 2011-08-31 | 苏州简约纳电子有限公司 | 一种微处理器及在微处理器中执行指令的方法 |
TW200910195A (en) | 2007-08-20 | 2009-03-01 | Sunplus Technology Co Ltd | A device of using serial bits to determine instruction length at a multi-mode processor and the method thereof |
CN101377735B (zh) * | 2007-08-28 | 2011-09-28 | 凌阳科技股份有限公司 | 于多模处理器中以串行位决定指令长度的装置及方法 |
CN101482809B (zh) * | 2008-01-11 | 2011-10-26 | 凌阳科技股份有限公司 | 在多模处理器中用指令终止位决定指令长度的装置及方法 |
US7849243B2 (en) * | 2008-01-23 | 2010-12-07 | Intel Corporation | Enabling flexibility of packet length in a communication protocol |
CN101833437B (zh) * | 2009-05-19 | 2013-06-26 | 威盛电子股份有限公司 | 适用于微处理器的装置及方法 |
US10055227B2 (en) | 2012-02-07 | 2018-08-21 | Qualcomm Incorporated | Using the least significant bits of a called function's address to switch processor modes |
GB2501299A (en) * | 2012-04-19 | 2013-10-23 | Ibm | Analysing computer program instructions to determine if an instruction can be replaced with a trap or break point. |
US9223714B2 (en) | 2013-03-15 | 2015-12-29 | Intel Corporation | Instruction boundary prediction for variable length instruction set |
US11204768B2 (en) | 2019-11-06 | 2021-12-21 | Onnivation Llc | Instruction length based parallel instruction demarcator |
US11775305B2 (en) * | 2021-12-23 | 2023-10-03 | Arm Limited | Speculative usage of parallel decode units |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3678467A (en) * | 1970-10-20 | 1972-07-18 | Bell Telephone Labor Inc | Multiprocessor with cooperative program execution |
US4447878A (en) * | 1978-05-30 | 1984-05-08 | Intel Corporation | Apparatus and method for providing byte and word compatible information transfers |
US4408271A (en) * | 1979-01-02 | 1983-10-04 | Honeywell Information Systems Inc. | Circuit for implementing a digital computer instruction |
US4250548A (en) * | 1979-01-02 | 1981-02-10 | Honeywell Information Systems Inc. | Computer apparatus |
JPS5856164A (ja) * | 1981-09-30 | 1983-04-02 | Toshiba Corp | デ−タ処理装置 |
JP2635057B2 (ja) | 1987-11-04 | 1997-07-30 | 株式会社日立製作所 | マイクロプロセッサ |
JPH0415826A (ja) | 1990-05-08 | 1992-01-21 | Rohm Co Ltd | ワンチップマイクロコンピュータ |
US5452423A (en) | 1991-06-13 | 1995-09-19 | Chips And Technologies, Inc. | Two-ROM multibyte microcode address selection method and apparatus |
JPH05313894A (ja) | 1992-05-11 | 1993-11-26 | Fuji Xerox Co Ltd | 情報処理装置 |
JPH06119253A (ja) * | 1992-10-02 | 1994-04-28 | Toshiba Corp | 二重化メモリ制御装置 |
-
1996
- 1996-09-13 JP JP24337596A patent/JP3658101B2/ja not_active Expired - Fee Related
- 1996-11-26 TW TW085114619A patent/TW379305B/zh not_active IP Right Cessation
-
1997
- 1997-01-10 KR KR1019970000490A patent/KR100260353B1/ko not_active IP Right Cessation
- 1997-03-04 US US08/811,005 patent/US6463520B1/en not_active Expired - Fee Related
- 1997-03-19 CN CN97103068A patent/CN1095116C/zh not_active Expired - Fee Related
-
2000
- 2000-05-01 US US09/562,643 patent/US6209079B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
KR19980023918A (ko) | 1998-07-06 |
US6463520B1 (en) | 2002-10-08 |
US6209079B1 (en) | 2001-03-27 |
KR100260353B1 (ko) | 2000-07-01 |
JPH1091435A (ja) | 1998-04-10 |
TW379305B (en) | 2000-01-11 |
CN1095116C (zh) | 2002-11-27 |
CN1177140A (zh) | 1998-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3658101B2 (ja) | データ処理装置 | |
EP0782071B1 (en) | Data processor | |
EP0220684B1 (en) | Data processing system | |
US5522053A (en) | Branch target and next instruction address calculation in a pipeline processor | |
JPH06332792A (ja) | データ処理装置及びそのデータ読み出し制御回路,データ書き込み制御回路 | |
US6289445B2 (en) | Circuit and method for initiating exception routines using implicit exception checking | |
KR100254008B1 (ko) | 2개의 명령을 동시에 실행할 수 있는 데이타 프로세서 | |
JPH08305568A (ja) | 情報処理装置 | |
US5313644A (en) | System having status update controller for determining which one of parallel operation results of execution units is allowed to set conditions of shared processor status word | |
US6131158A (en) | Data processing system capable of executing groups of instructions, including at least one arithmetic instruction, in parallel | |
US7546442B1 (en) | Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions | |
JP3182438B2 (ja) | データプロセッサ | |
JP3414209B2 (ja) | プロセッサ | |
US5193156A (en) | Data processor with pipeline which disables exception processing for non-taken branches | |
JPH07120278B2 (ja) | データ処理装置 | |
US6189093B1 (en) | System for initiating exception routine in response to memory access exception by storing exception information and exception bit within architectured register | |
JP3578883B2 (ja) | データ処理装置 | |
EP0140299B1 (en) | Vector mask control system | |
EP0725336B1 (en) | Information processor | |
JPH07239780A (ja) | 1クロック可変長命令実行処理型命令読み込み電子計 算機 | |
US4853889A (en) | Arrangement and method for speeding the operation of branch instructions | |
US4812974A (en) | Data processing apparatus for processing list vector instructions | |
US6339821B1 (en) | Data processor capable of handling an increased number of operation codes | |
US5463747A (en) | Microprogram data processor processing operand address calculation and instruction execution with common hardware | |
EP1050800A1 (en) | A pipelined execution unit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041221 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050204 |
|
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: 20050308 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050311 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080318 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090318 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090318 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100318 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110318 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110318 Year of fee payment: 6 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110318 Year of fee payment: 6 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110318 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120318 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130318 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130318 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140318 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |