JP3804778B2 - プロセッサ及び命令実行方法 - Google Patents
プロセッサ及び命令実行方法 Download PDFInfo
- Publication number
- JP3804778B2 JP3804778B2 JP2002085423A JP2002085423A JP3804778B2 JP 3804778 B2 JP3804778 B2 JP 3804778B2 JP 2002085423 A JP2002085423 A JP 2002085423A JP 2002085423 A JP2002085423 A JP 2002085423A JP 3804778 B2 JP3804778 B2 JP 3804778B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- address
- byte
- configuration
- bytes
- 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
- 238000000034 method Methods 0.000 title claims description 10
- 230000001174 ascending effect Effects 0.000 claims description 32
- 239000000470 constituent Substances 0.000 claims description 14
- 230000003247 decreasing effect Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 11
- 230000000694 effects Effects 0.000 description 4
- 239000000284 extract Substances 0.000 description 2
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
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- 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
-
- 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
Description
【発明の属する技術分野】
この発明は、プロセッサに関し、特にそのアーキテクチャに関するものである。本発明は特に、各命令が互いに連続するアドレスに記憶された複数のバイトから成り、各命令がバイト毎に読み出され、一つの命令を構成する複数のバイトを記憶するレジスタで互いに組合わせられた後解読器に供給されて命令が実行される形式のプロセッサに関する。本発明はまた当該プロセッサを用いた命令実行方法に関する。
【0002】
【従来の技術】
一般にこの種のプロセッサにおいては、図13のように、各命令を構成する複数のバイトが記憶装置内の複数の相連続するアドレスに昇順にて記憶されている。例えば、命令i1を構成するバイトはアドレスj、j+1、j+2、j+3に、命令i2を構成するバイトはアドレスj+4、j+5、j+6、j+7に昇順に記憶され、各命令の読み出しに当たっては、アドレスポインタで、その命令の先頭のバイトのアドレスを指定し、以下、それに続くバイトのアドレスを順にアドレスカウンタで指定することにより、複数のバイトを順に読み出し、読み出されバイトを命令レジスタ(一つの命令を構成する複数のバイトを記憶する容量を持つ)の対応するバイト位置に順に記憶し、すべてのバイトが揃ったら解読器に供給して命令を実行する。
【0003】
一つの命令の実行が終わると、次の命令の先頭のアドレスのバイトを、アドレスポインタで指定して、以下上記と同様の処理を繰返す。
【0004】
【発明が解決しようとする課題】
上記の構成では、1つの命令を実行する度にアドレスポインタでその命令の先頭のバイトのアドレスを指定しなければならず、プログラムの実行のために必要な情報量が多いと言う問題があった。
【0005】
また、複数の命令を並列処理する場合にも、並列に実行すべき命令の数だけアドレスポインタを与えなければならず、プログラムの実行のために必要な情報量が多いと言う問題があった。
【0006】
本発明は、上記の問題を解決するためになされたものであって、プログラムの実行のために必要な情報の量を減らすことができるプロセッサを提供することにある。
【0007】
【課題を解決するための手段】
本発明は、
初期カウント値を設定された後カウントアップ又はカウントダウンを行なうアドレスカウンタと、
各々複数の命令構成バイトで構成される、複数の命令を記憶する記憶装置と、
上記アドレスカウンタ及び上記記憶装置を制御する制御器とを備え、
上記記憶装置内において、
上記命令構成バイトの各々が一つのアドレスに記憶され、
各命令を構成する命令構成バイトが相連続するアドレスから成るアドレス群に、アドレス値に対して昇順又は降順に記憶され、
第1の命令の先頭の命令構成バイトと第2の命令の先頭の命令構成バイトとが互いに隣接するアドレスに配置され、
上記第1の命令の命令構成バイトがアドレス値に対し降順に配置され、上記第2の命令の命令構成バイトがアドレス値に対して昇順に配置され、
上記第1の命令の先頭の命令構成バイト又は上記第2の命令の先頭のアドレスのアドレス値を指示するアドレスポインタを与え、
上記アドレスカウンタに、上記アドレスポインタに基づく初期カウント値を設定し、カウントダウンを行なわせることにより、上記第1の命令の命令構成バイトを順に読み出して実行し、
上記アドレスカウンタに、上記アドレスポインタに基づく初期カウント値を設定し、カウントアップを行なわせることにより、上記第2の命令の命令構成バイトを順に読み出して実行する
ことを特徴とするプロセッサを提供するものである。
【0008】
本発明はまた、
初期カウント値を設定された後カウントダウンを行なう第1のアドレスカウンタと、
初期カウント値を設定された後カウントアップを行なう第2のアドレスカウンタと、
各々複数の命令構成バイトで構成される、複数の命令を記憶する記憶装置と、
上記第1及び第2のアドレスカウンタ、並びに上記記憶装置を制御する制御器とを備え、
上記記憶装置内において、
上記命令構成バイトの各々が一つのアドレスに記憶され、
各命令を構成する命令構成バイトが相連続するアドレスから成るアドレス群に、アドレス値に対して昇順又は降順に記憶され、
第1の命令の先頭の命令構成バイトと第2の命令の先頭の命令構成バイトとが互いに隣接するアドレスに配置され、
上記第1の命令の命令構成バイトがアドレスに対し降順に配置され、上記第2の命令の命令構成バイトがアドレスに対して昇順に配置され、
上記第1の命令の先頭の命令構成バイト又は上記第2の命令の先頭の命令構成バイトのアドレスのアドレス値を指示するアドレスポインタを与え、
上記第1のアドレスカウンタに、上記アドレスポインタに基づく初期カウント値を設定し、カウントダウンを行なわせることにより、上記第1の命令の命令構成バイトを順に読み出して実行し、
上記第2のアドレスカウンタに、上記アドレスポインタに基づく初期カウント値を設定し、カウントアップを行なわせることにより、上記第2の命令の命令構成バイトを順に読み出して実行する
ことを特徴とするプロセッサを提供するものである。
【0009】
上記第1の命令のすべての命令構成バイトを格納する第1の命令レジスタと、
上記第2の命令のすべての命令構成バイトを格納する第2の命令レジスタと、
上記第1の命令レジスタに記憶された命令を解読して実行する第1の解読器と、
上記第2の命令レジスタに記憶された命令を解読して実行する第2の解読器と
をさらに備えることとしても良い。
【0010】
上記第1の命令のすべての命令構成バイトを格納する第1の命令レジスタと、
上記第2の命令のすべての命令構成バイトを格納する第2の命令レジスタと、
上記第1の命令レジスタに格納された命令、又は上記第2の命令レジスタに格納された命令のいずれかを選択する選択器と、
上記選択器で選択された命令を解読して実行する解読器と
をさらに備えることとしても良い。
【0011】
上記第1の命令及び第2の命令の読み出し及び実行を並列に行うこととしても良い。
【0012】
上記第1の命令及び第2の命令の少なくとも一方が、上記第1の命令及び第2の命令の並列処理が可能かどうかを示す並列処理可否情報を含み、
上記並列処理可否情報が並列処理が可能であることを示すときに、上記制御器が上記並列処理を行なわせることとしても良い。
【0013】
本発明はさらに、
初期カウント値を設定された後カウントダウンを行なう第1のアドレスカウンタと、
初期カウント値を設定された後カウントアップを行なう第2のアドレスカウンタと、
初期カウント値を設定された後カウントダウンを行なう第3のアドレスカウンタと、
初期カウント値を設定された後カウントアップを行なう第4のアドレスカウンタと、
各々複数の命令構成バイトで構成される、複数の命令を記憶する記憶装置と、
上記第1及び第2のアドレスカウンタ、並びに上記記憶装置を制御する制御器とを備え、
上記記憶装置内において、
上記命令構成バイトの各々が一つのアドレスに記憶され、
第1の命令を構成する命令構成バイトが相連続するアドレスから成る第1のアドレス群に、アドレス値に対して昇順に記憶され、
第2の命令を構成する命令構成バイトが相連続するアドレスから成る第2のアドレス群に、アドレス値に対して降順に記憶され、
第3の命令を構成する命令構成バイトが相連続するアドレスから成る第3のアドレス群に、アドレス値に対して昇順に記憶され、
第4の命令を構成する命令構成バイトが相連続するアドレスから成る第4のアドレス群に、アドレス値に対して降順に記憶され、
第2の命令の先頭の命令構成バイトと第3の命令の先頭の命令構成バイトとが互いに隣接するアドレスに配置され、
上記第2の命令の命令構成バイトがアドレス値に対し降順に配置され、上記第3の命令の命令構成バイトがアドレス値に対して昇順に配置され、
上記第1の命令の先頭の命令構成バイトの直前にポイント命令が配置され、
上記ポイント命令が、上記第2の命令の先頭の命令構成バイトのアドレスのアドレス値又は上記第3の命令の先頭の命令構成バイトのアドレスのアドレス値を示す第1の内部アドレスポインタ、並びに上記第4の命令の先頭の命令構成バイトのアドレスのアドレス値を示す第2の内部アドレスポインタを含み、
上記ポイント命令を指示するアドレスポインタを与え、
上記ポイント命令を実行して、上記第1及び第2の内部アドレスポインタを発生し、
上記第1のアドレスカウンタに、上記アドレスポインタに基づく初期カウント値を設定し、カウントアップを行なわせることにより、上記第1の命令の命令構成バイトを順に読み出して実行し、
上記第2のアドレスカウンタに、上記第1の内部アドレスポインタに基づく初期カウント値を設定し、カウントダウンを行なわせることにより、上記第2の命令の命令構成バイトを順に読み出して実行し、
上記第3のアドレスカウンタに、上記第1の内部アドレスポインタに基づく初期カウント値を設定し、カウントアップを行なわせることにより、上記第3の命令の命令構成バイトを順に読み出して実行し、
上記第4のアドレスカウンタに、上記第2の内部アドレスポインタに基づく初期カウント値を設定し、カウントダウンを行なわせることにより、上記第4の命令の命令構成バイトを順に読み出して実行する、
ことを特徴とするプロセッサを提供するものである。
【0014】
本発明はさらに、
上記プロセッサを用いる命令実行方法であって、
分岐命令の実行により、
上記第1の命令の先頭の命令構成バイト又は上記第2の命令の先頭の命令構成バイトのアドレスのアドレス値を指示するアドレスポインタと、
アドレスカウンタにカウントアップを行なわせるべきかカウントダウンを行なわせるべきかを示す方向情報とを発生させ、
上記方向情報に基づいて上記第1及び第2の命令のいずれかを実行させることを特徴とする方法を提供するものである。
【0015】
本発明はさらに、
上記プロセッサを用いる命令実行方法であって、
分岐命令の実行により、
上記ポイント命令のアドレスのアドレス値を示すアドレスポインタと、
上記ポイント命令からの隔たりを示す隔たり情報と、
方向を示す方向情報と発生させ、
これらに基づいて上記第1乃至第4の命令のうちの実行すべき命令を指定することを特徴とする方法を提供するものである。
【0016】
上記隔たり情報が、上記ポイント命令のアドレスから、上記第1の命令の先頭の命令構成バイトのアドレスまでの隔たりに対応するものであるときは、上記第1乃至第4の命令をすべて実行し、
上記隔たり情報が、上記ポイント命令のアドレスから、上記第2の命令の先頭の命令構成バイトのアドレス又は上記第3の命令の先頭の命令構成バイトのアドレスに対応し、上記方向情報が降順を示すものであるときは、上記第2乃至第4の命令を実行し、
上記隔たり情報が、上記ポイント命令のアドレスから、上記第2の命令の先頭の命令構成バイトのアドレス又は上記第3の命令の先頭の命令構成バイトのアドレスに対応し、上記方向情報が昇順を示すものであるときは、上記第3及び第4の命令を実行し、
上記隔たり情報が、上記ポイント命令のアドレスから、上記第4の命令の先頭の命令構成バイトのアドレスに対応するときは、第4の命令のみを実行する
こととしても良い。
【0017】
【発明の実施の形態】
実施の形態1.
図1は、本発明の実施の形態1のプロセッサの概略を示すブロック図である。図示のようにこのプロセッサは、制御器1と、アドレスポインタレジスタ(APレジスタ)2と、加算器3と、選択器4と、アドレスカウンタ5と、記憶装置7と、命令レジスタ8と、解読器9とを有する。
【0018】
制御器1は以下の説明から分かるように、種々の制御信号を発生して、プロセッサの各部を制御する。APレジスタ2は、アドレスポインタPaを受け、制御器1からラッチ信号Spを受けると、そのとき供給されているアドレスポインタPaの値をラッチする。APレジスタ2にラッチされている値、従ってAPレジスタ2の出力信号は符号Pbで表わされる。アドレスポインタPaは、例えば直前に実行された他の命令の一部として与えられるものである。
【0019】
加算器3は、APレジスタ2に保持されているアドレスポインタの値Pbに「1」を加算して、加算結果を出力する。加算を行なうタイミングは制御器1からの加算タイミング信号Saにより制御される。選択器4は、制御器1からの昇降選択信号Sudに基づき、APレジスタ2の出力Pb、又は加算器3の出力Pcのいずれかを選択して出力する。即ち、昇降選択信号Sudが「0」のときは、APレジスタ2の出力Pbを選択し、昇降選択信号Sudが「1」のときは、加算器3の出力Pcを選択する。選択器4の出力は符号Pdを表わされている。
【0020】
アドレスカウンタ5は、制御器1からのカウント値セット信号Ssを受けると、そのとき選択器4から供給されている数値(Pdの値)が初期カウント値Peとしてセットされ、その後制御器1から出力されるカウント信号Scが供給される毎にカウント値Peが1だけ増加(インクリメント)又は減少(デクリメント)される。増加されるか減少されるかは、制御器1からの昇降選択信号Sudに応じて決まる。即ち、昇降選択信号Sudが「1」のときは、増加され、昇降選択信号Sudが「0」のときは減少される。
【0021】
記憶装置7は、図2に示すように複数の命令を記憶している。図示のように、各命令は、複数の、例えば4バイトから成り、各命令を構成するバイトの各々は一つの記憶場所(アドレス)に記憶され、各命令を構成する複数のバイトは、相連続するアドレスから成るアドレス群に、アドレス値に対して昇順又は降順に記憶されている。以下の説明で、これらのバイトを命令構成バイトと呼ぶこともある。
【0022】
例えば、第1の命令i1は、アドレスj乃至j+3に先頭のバイト(MSB)から最後のバイト(LSB)まで昇順に記憶されている。即ちMSBはアドレスjに、LSBはアドレスj+3に記憶されている。第2の命令i2は、アドレスj+4乃至j+7に先頭のバイト(MSB)から最後のバイト(LSB)まで降順に記憶されている。即ちMSBはアドレスj+7に、LSBはアドレスj+4に記憶されている。
【0023】
第3の命令i3は、アドレスj+8乃至j+11に先頭のバイト(MSB)から最後のバイト(LSB)まで昇順に記憶されている。即ちMSBはアドレスj+8に、LSBはアドレスj+11に記憶されている。第4の命令i4は、アドレスj+12乃至j+15に先頭のバイト(MSB)から最後のバイト(LSB)まで降順に記憶されている。即ちMSBはアドレスj+15に、LSBはアドレスj+12に記憶されている。
【0024】
このように、構成バイトが昇順に記憶された命令と構成バイトが降順に記憶された命令とが交互に配置されており、互いに隣接するアドレス群に記憶された1対の命令は先頭の命令構成バイト(MSB)又は最後の命令構成バイト(LSB)が互いに隣接するアドレスに配置されている。例えば、命令i2と命令i3とはMSBが互いに隣接しており、命令i1とi2とはLSBが互いに隣接しており、命令i3と命令i4とはLSBが互いに隣接している。
【0025】
命令レジスタ8は複数バイト、例えば4バイト分の容量を持ち、記憶装置7から順次読み出される複数の命令バイトをMSB側から順に格納する。解読器9は、制御器1から出力される解読タイミング信号Sdを受けると、そのとき命令レジスタ8に格納されている命令を解読する。これにより、命令が実行される。
【0026】
以下、一例として、一連の命令中の命令i2と命令i3が実行される場合を例に取って説明する。図3は、そのような動作を行なう際に発生される各部の信号を示す。
【0027】
最初に、アドレスポインタPa(上記のように、例えば直前に実行された他の命令の一部として与えられる)によりアドレスj+7が供給されたとする。このアドレスポインタPa(=j+7)は、制御器1からのラッチ信号Spにより、APレジスタ2にセットされ、その結果APレジスタ2の出力Pbの値がj+7になる。
【0028】
このとき、昇降選択信号Sudは、例えば上記他の命令を実行した結果、制御器1により「0」とされている。そのため、選択器4は、APレジスタ2の出力Pbを選択してアドレスカウンタ5に供給している。この状態で、制御器1からカウント値セット信号Ssが出力される。このため、APレジスタ3の出力Pb=j+7がアドレスカウンタ5に初期カウント値Peとしてセットされる。このためアドレスカウンタ5の出力(カウント値)Peはj+7となる。アドレスカウンタ5の出力は記憶装置7に読み出しアドレス値として供給される。
【0029】
アドレスカウンタ5にアドレス値j+7がセットされた後に、制御器1から読み出しタイミング信号Srが発生されると、アドレスカウンタ5のカウント値Pe=j+7で指定される記憶装置7中のアドレスに記憶された命令構成バイトが読み出され、命令レジスタ8の第1バイト(MSB)格納位置8aに格納される。以上で、一つの命令を構成する1番目の命令構成バイトを読み出すサイクル、即ち1番目の読み出しサイクルが完了する。
【0030】
2番目の読み出しサイクルにおいては、制御器1からカウント信号Scが発生され、これによりアドレスカウンタ5のカウント値Peは1だけ減少されてj+6となり、このカウント値Peが記憶装置7に供給され、読み出しタイミング信号Srが供給されると、アドレスj+6のバイトが読み出され、命令レジスタ8の第2バイト格納位置8bに格納される。
【0031】
3番目の読み出しサイクルにおいては、制御器1からカウント信号Scが発生されると、アドレスカウンタ5のカウント値Peはさらに1だけ減少されてj+5となり、このカウント値Peが記憶装置7に供給され、読み出しタイミング信号Srが供給されると、アドレスj+5のバイトが読み出され、命令レジスタ8の第3バイト格納位置8cに格納される。
【0032】
4番目の読み出しサイクルにおいては、制御器1からカウント信号Scが発生されると、アドレスカウンタ5のカウント値Peはさらに1だけ減少されてj+4となり、このカウント値が記憶装置7に供給され、読み出しタイミング信号Srが供給されると、アドレスj+4のバイトが読み出され、命令レジスタ8の第4バイト格納位置8dに格納される。
【0033】
このように、アドレスカウンタ5のカウント値Peは1読み出しサイクルに1ずつ減少され、各命令構成バイトがMSBからLSBまで順に読み出され、命令レジスタ8に格納される。
【0034】
1つの命令(i2)を構成するすべてのバイト(j+7乃至j+4)が命令レジスタ8に格納されたら、制御器1から解読タイミング信号Sdが出力され、これに応じて解読器105で命令が解読されて、命令が実行される。
【0035】
これらの命令が実行される間に、制御器1から加算器1に加算タイミング信号Saが与えられ、加算器3は、APレジスタ2にセットされた値(j+7)に「1」を加算する。その結果、加算器3の出力Pcはj+8となる。
【0036】
上記の命令(命令レジスタ8に保持された命令)の実行の結果、制御器1の動作により、昇降選択信号Sudが「1」に切り替えられ、加算器3の出力Pc(=j+8)が選択器4で選択されて、アドレスカウンタ5に供給される。そして、カウント値セット信号Ssが再び「1」となると、そのときの選択器4の出力(即ち、加算器3の出力)j+8がアドレスカウンタ5にカウント値Peとしてセットされる。アドレスカウンタ5のカウント値Pe=j+8は記憶装置7に供給される。
【0037】
アドレスカウンタ5にアドレス値Pe=j+8がセットされた後に、制御器1から読み出しタイミング信号Srが供給されると、アドレスカウンタ5のカウント値j+8で指定されるアドレスj+8に記憶された命令構成バイトが読み出され、命令レジスタ8の第1バイト(MSB)格納位置8aに格納される。
【0038】
次の読み出しサイクルには、制御器1からカウント信号Scが供給されると、アドレスカウンタ5のカウント値Peは1だけ増加されてj+9となり、このカウント値Peが記憶装置7に供給され、読み出しタイミング信号Srが発生されると、アドレスj+9のバイトが読み出され、命令レジスタ8の第2バイト格納位置8bに格納される。
【0039】
次の読み出しサイクルには、制御器1からカウント信号Scが供給されると、アドレスカウンタ5のカウント値Peはさらに1だけ増加されてj+10となり、このカウント値Peが記憶装置7に供給され、読み出しタイミング信号Srが与えられると、アドレスj+10のバイトが読み出され、命令レジスタ8の第3バイト格納位置8cに格納される。
【0040】
次の読み出しサイクルには、制御器1からカウント信号Scが供給されると、アドレスカウンタ5のカウント値Peはさらに1だけ増加されてj+11となり、このカウント値Peが記憶装置7に供給され、読み出しタイミング信号Srが与えられると、アドレスj+11のバイトが読み出され、命令レジスタ8の第4バイト(LSB)格納位置8dに格納される。
【0041】
このように、アドレスカウンタ5のカウント値Peは1読み出しサイクルに1ずつ増加され、命令(i3)を構成するバイト(j+8乃至j+11)がMSBからLSBまで順に読み出され、命令レジスタ8に格納される。
【0042】
1つの命令(i3)を構成するすべてのバイト(j+8乃至j+11)が命令レジスタ8に格納されたら、制御器1から解読タイミング信号Sdが出力され、これに応じて解読器105で命令が解読されて、命令が実行される。
【0043】
このように、1つのアドレスポインタ(j+7)により、2つの命令(i2)及び(i3)が実行される。従来2つの命令の実行には2つのアドレスポインタが必要であったが、上記の例のように1つのアドレスポインタで2つの命令が実行できるようにすることにより、一連の命令全体乃至プログラム中の、アドレスポインタの数、従ってデータの量を減らすことができる。
【0044】
以上、命令(i2)と命令(i3)の実行について説明したが、これと同様にして、命令(i4)と、それに隣接し、より大きいアドレス値のアドレスに記憶された命令(i5)とが、同じアドレスポインタを利用して実行される。また、命令i1と、それに隣接し、より小さいアドレス値のアドレスに記憶された命令i0とが、同じアドレスポインタを利用して実行される。
【0045】
上記の実施の形態では、APレジスタ2にセットされたアドレスポインタを選択器4を介してアドレスカウンタ5に供給するとともに、加算器3及び選択器4を介してアドレスカウンタ5に供給しているが、このようにする代りに以下のように構成することもできる。即ち、加算器3の代りに「1」を減算する減算器を設け、APレジスタ2にセットされたアドレスポインタを選択器4を介してアドレスカウンタ5に供給するとともに、上記減算器及び選択器4を介してアドレスカウンタ5に供給することとしても良い。この場合、アドレスポインタPaとしては、互いに隣接して記憶されている命令(例えば命令(i2)及び命令(i3))のうち、より大きなアドレス値のアドレスに記憶されている命令(例えば命令(i3))のMSBを記憶したアドレスの値を示すものを供給する。
【0046】
実施の形態2.
図4は、本発明の実施の形態2のプロセッサの概略を示すブロック図である。図示のようにこのプロセッサは、制御器1と、APレジスタ2と、加算器3と、アドレスカウンタ5A及び5Bと、記憶装置7と、命令レジスタ8A及び8Bと、解読器9A及び9Bとを有する。図1と同一の番号は同一又は対応する部材を示す。
【0047】
アドレスカウンタ5A及び5Bは、それぞれ制御器1からのカウント値セット信号Ssを受けると、その時の入力がカウント値Pea及びPebとしてセットされる。アドレスカウンタ5Aは、その後カウント信号Scが供給される毎にカウント値Peaが1だけ減少される。アドレスカウンタ5Bは、その後カウント信号Scが供給される毎にカウント値Pcbが1だけ増加される。このように、アドレスカウンタ5Aはダウンカウンタとして動作し、アドレスカウンタ5Bはアップカウンタとして動作する。
【0048】
記憶装置7は、実施の形態1と同様、図2に示すように複数の命令を記憶している。また、この実施の形態2の記憶装置7は、2つのアドレスから2つの命令構成バイトを同時に(並行して)読み出すことができるものである。
【0049】
命令レジスタ8A及び8Bの各々は、実施の形態1の命令レジスタ8と同様であり、記憶装置7から順次読み出される複数の命令バイトをMSB側から順に格納する。解読器9A及び9Bはそれぞれ、制御器1から出力される解読タイミング信号Sda及びSdbを受けると、そのとき命令レジスタ8A及び8Bに格納されている命令を解読して、実行する。その他の点では、上記の実施の形態1と同様であり、説明を省略する。
【0050】
以下、一例として、上記と同様、一連の命令中の命令i2と命令i3が実行される場合を例に取って説明する。図5は、上記の動作を行なう場合に各部に現れる信号を示す。
【0051】
最初に、アドレスポインタPa(直前に実行された他の命令の一部として与えられる)によりアドレスj+7がAPレジスタ2に供給されるとする。制御器1からのラッチ信号Apが供給されると、アドレスポインタPaがAPレジスタ2にラッチされ、APレジスタ2の出力Pbがj+7となる。APレジスタ2にセットされた値Pbは加算器3にも供給される。制御器1から加算タイミング信号Saが発生されると、加算器3で1が加算される。その結果加算器3の出力Pcはj+8となり、この値がアドレスカウンタ5Bに供給される。
【0052】
APレジスタ2からアドレスカウンタ5Aに供給されている値Pb=j+7と、加算器3からアドレスカウンタ5Bに供給されている値Pc=j+8とは、次にカウント値セット信号Ssが制御器1から供給されると、それぞれアドレスカウンタ5A及び5Bに初期カウント値Pea及びPebとしてセットされる。これらのカウント値はアドレス値として記憶装置1に供給される。
【0053】
この状態で、制御器1から読み出しタイミング信号Srが発生されると、アドレスカウンタ5Aのカウント値j+7で指定されるアドレスに記憶された命令構成バイトが読み出され、命令レジスタ8Aの第1バイト(MSB)格納位置8aに格納され、これと並行して(同じ読み出しサイクル中に)、アドレスカウンタ5Bのカウント値j+8で指定されるアドレスに記憶された命令構成バイトが読み出され、命令レジスタ8Bの第1バイト(MSB)格納位置8Baに格納される。
【0054】
次の読み出しサイクルには、制御器1からカウント信号Scが発生されると、アドレスカウンタ5Aのカウント値Peaは1だけ減少されてj+6となり、このカウント値Peaが記憶装置7に供給され、これと並行して、アドレスカウンタ5Bのカウント値Pebは1だけ増加されてj+9となり、このカウント値Pebが記憶装置7に供給される。この状態で、制御器1から読み出しタイミング信号Srが発生されると、記憶装置7のアドレスj+6のバイトが読み出され、命令レジスタ8Aの第2バイト格納位置8Abに格納されるとともに、アドレスj+9のバイトが読み出され、命令レジスタ8Bの第2バイト格納位置8Bbに格納される。
【0055】
次の読み出しサイクルには、制御器1からカウント信号Scが発生されると、アドレスカウンタ5Aのカウント値Peaはさらに1だけ減少されてj+5となり、このカウント値Peaが記憶装置7に供給され、これと並行して、アドレスカウンタ5Bのカウント値Pebはさらに1だけ増加されてj+10となり、このカウント値Pebが記憶装置7に供給される。この状態で、制御器1から読み出しタイミング信号Srが発生されると、記憶装置7のアドレスj+5のバイトが読み出され、命令レジスタ8Aの第3バイト格納位置8Acに格納されるとともに、アドレスj+10のバイトが読み出され、命令レジスタ8Bの第3バイト格納位置8Bcに格納される。
【0056】
次の読み出しサイクルには、制御器1からカウント信号Scが発生されると、アドレスカウンタ5Aのカウント値Peaはさらに1だけ減少されてj+4となり、このカウント値が記憶装置7に供給され、これと並行して、アドレスカウンタ5Bのカウント値Pebはさらに1だけ増加されてj+11となり、このカウント値Pebが記憶装置7に供給される。この状態で、制御器1から読み出しタイミング信号Srが発生されると、記憶装置7のアドレスj+4のバイトが読み出され、命令レジスタ8Aの第4バイト(LSB)格納位置8Adに格納されるとともに、アドレスj+11のバイトが読み出され、命令レジスタ8Bの第4バイト格納位置8Bcに格納される。
【0057】
このように、アドレスカウンタ5Aのカウント値は1読み出しサイクルに1ずつ減少され、命令(i2)を構成するバイト(j+7乃至j+4)がMSBからLSBまで順に読み出され、命令レジスタ8Aに格納され、命令(i2)を構成するすべてのバイトが命令レジスタ8Aに格納される。またこれと並行して、アドレスカウンタ5Bのカウント値は1読み出しサイクルに1ずつ増加され、命令(i3)を構成するバイト(j+8乃至j+11)がMSBからLSBまで順に読み出され、命令レジスタ8Bに格納される。命令レジスタ8A及び8Bの各々に1つの命令(i2、i3)を構成するすべてのバイトが格納されたら、制御器1から解読タイミング信号Sdが出力され、これに応じて解読器9A及び9Bで命令レジスタ8A及び8Bに格納されている命令が解読されて、命令が実行される。
【0058】
このように、2つの命令が並行して実行される。また、2つの命令の実行のための必要なアドレスポインタでは一つである。従来2つの命令の実行には2つのアドレスポインタが必要であったが、上記の例のように1つのアドレスポインタで2つの命令が実行できるようにすることにより、一連の命令全体における、アドレスポインタの数、従ってデータの量を減らすことができる。
【0059】
なお、上記と同様、命令i4、それに隣接し、より大きいアドレス値のアドレスに記憶された命令i5と並行して実行される。また、命令i1は、それに隣接し、より小さいアドレス値のアドレスに記憶された命令i0と並行して実行される。
【0060】
実施の形態3.
上記の実施の形態2では、互いに隣接するアドレスに配置され、共通のアドレスポインタPaで読み出される2つの命令が互いに並列処理可能であること、即ち相互依存関係がないものであることを条件としている。並列処理可能な命令のみならず並列処理が可能でない1対の命令も、上記のように互いに隣接して、共通のアドレスポインタで読み出されるように配置しておき、並列処理可能であるかどうかを示す情報と、(並列処理が可能でない場合には)いずれの命令を先に実行すべきかを示す情報とを各命令中(又は1対の命令の一方)の所定のビットに含ませて置き、命令レジスタ8A及び8B中にこの情報が読み込まれた後、そのうちの上記の情報をまず読み出し、並列処理が可能でないときは、先に実行すべき命令のみをまず実行し、その後、他方の命令を実行することとしても良い。
【0061】
図6はこのような処理を可能にする構成を示している。図示のように、この実施の形態のプロセッサは図4のプロセッサと同様である。しかし、命令レジスタの所定のビットの値を制御器1に伝える信号線Xa及びXbを備えている。また、命令レジスタ8A及び8Bのうちの上記の信号線Xa及びXbに接続されたビット以外が解読器9A及び9Bに接続されている。さらに、制御器1から解読器9Aに供給される解読タイミング信号Sdaと、制御器1から解読器9Bに供給される解読タイミング信号Sdbとが互いに別のものである。
【0062】
動作の概要は上記の実施の形態2と同様であるが、以下の点で異なる。即ち、制御器1は、信号線Xa及びXbを介して伝えられる情報に基づいて、記憶装置7から命令レジスタ8A及び8Bに同時に読み出された2つの命令が並列処理可能かどうかの判断を行ない、並列処理可能なときは、解読タイミング信号Sda及びSdbを同時に出力する。並列可能でないときは、さらに先に実行すべき命令がどちらであるかを判断し、判断結果に応じて、先に実行すべき命令を記憶した命令レジスタ(8A又は8B)に接続された解読器(9A又は9B)にまず解読タイミング信号Sda又はSdbを与え、該解読器9A又は9Bで命令の実行が終わった後、他方の解読器9B又は9Aに解読タイミング信号Sdb又はSdaを与え、その解読器9B又は9Aに命令の解読を行なわせることとする。これにより、並列処理が可能でない命令を順次実行することができる。
【0063】
実施の形態4.
図7は、実施の形態4のプロセッサを示す。この実施の形態4のプロセッサは、実施の形態2のプロセッサと同様であるが、以下の点で異なる。即ち、2つの解読器9A及び9Bの代りに単一の解読器9が設けてあり、命令レジスタ8A及び8Bの出力を選択する選択器10の出力が解読器9に供給される。
【0064】
選択器10は、制御器1からの命令選択信号Syが「0」のときは命令レジスタ8Aの出力を選択し、制御器1からの命令選択信号Syが「1」のときは命令レジスタ8Bの出力を選択する。解読器9は、制御器1から解読タイミング信号Sdが与えられると、そのとき選択器10から供給されている命令を解読する。
【0065】
この実施の形態4における、動作のうち、命令レジスタ8A及び8Bに命令を格納するまでの部分は、実施の形態2と同じである。
【0066】
命令レジスタ8A及び8Bに命令が格納されると、制御器1は、解読器9に解読タイミング信号Sdを与えるに先立ち、選択器10に対し、命令レジスタ8A及び8Bの出力の一方を選択する信号Sy(=0又は1)を与えておく。例えば選択信号Syの値が「0」であり、命令レジスタ8Aの出力を選択すべきことを指示するものであるとする。そうすると、命令レジスタ8Aの出力が選択されて解読器9に供給される。この状態で、解読タイミング信号Sdが出力されると、選択器10の出力、即ち、その時の命令レジスタ8Aの出力が解読器9で解読され、その命令が実行される。
【0067】
その命令の実行の後、制御器1は、命令選択信号Syの値を上記とは違う値、例えば「1」に切り替える。その結果、今度は命令レジスタ8Bの出力が選択器10で選択され、解読器9に供給される。この状態で、解読タイミング信号Sdが出力されると、選択器10の出力、即ち、命令レジスタ8Bの出力が解読器9で解読され、その命令が実行される。
【0068】
なお、実施の形態3について説明したのと同様に、同じアドレスポインタを用いて読み出される2つの命令のうちいずれを先に実行すべきかを示す情報をそれら2つの命令の一方または双方に含ませておき、制御器1がこの情報に基づいて、実行順序を決め、各命令実行サイクルにおける命令選択信号Syの値を決め、これにより選択器10を制御し、もって命令の実行順序を制御するようにしても良い。
【0069】
実施の形態5.
以上の実施の形態では、同じアドレスを用いて読み出し可能な1対の命令(例えばi2とi3)がともに読み出され、実行されるが、本実施の形態5は、複数の命令を図2に示す配列で記憶した記憶装置7を用いた、分岐命令の実行に関するものである。
【0070】
従来の分岐命令は、所定の条件が満たされたときは命令中に含まれる所定のアドレスにジャンプし、満たされないときは、実行された命令が記憶されていたアドレスの次のアドレスアドレスに進むと言う構成にするか、或いは所定の条件が満たされたかどうかで、ともに命令中に含まれる2つのアドレスのうちの一方にジャンプすると言う構成が採用されていた。
【0071】
本実施の形態5では、分岐命令は、唯一つのジャンプ先のアドレスをアドレスポインタとして含み、これとともに、所定の条件が満たされたかどうかに応じてジャンプ先からアドレス値を次第に小さくして行きながら命令バイトを読む(降順に読む)べきか、ジャンプ先からアドレス値を次第に大きくして行きながら命令バイトを読む(昇順に読む)べきかを示す情報(1ビットで良い)を含む。
【0072】
以下、このような命令を用いて分岐命令を実行する際の動作を説明する。以下の説明では、図1の構成をもつプロセッサが用いられるものとする。まず、ある命令実行サイクルで、分岐命令が実行されたとする。制御器1は、この分岐命令中に含まれるアドレスポインタを読み、これをAPレジスタ2にセットし、また当該分岐命令を実行した結果発生される、アドレスの読み出し方向を示す情報を抽出する。そして、このアドレスの読み出し方向を示す情報に基づき、昇降選択信号Sudの値を決める。即ち、昇順に読み出すべきときは、信号Sudを「1」にし、降順に読み出すべきときは、信号Sudを「0」にする。
【0073】
実施の形態1では、同じアドレスポインタを用いて実行可能な2つの命令を相前後して読み出し、実行するが、本実施の形態5では、2つの命令のうち一方を実行したのち、他方を実行するとき限らない。しかし、この場合も、分岐命令中のデータの量を減らすことができると言う利点がある。
【0074】
実施の形態6.
図8は、本発明の実施の形態6のプロセッサを示す。このプロセッサは、4つの命令を並列処理することが可能なものであり、制御器1と、アドレスポインタレジスタ(APレジスタ)20、22及び24と、加算器31及び33と、アドレスカウンタ51、52、53及び54と、記憶装置7と、ポイント命令レジスタ80と、命令レジスタ81、82、83及び84と、ポイント命令解読器90と、解読器91、92、93及び94とを備えている。
【0075】
APレジスタ20、22及び24の各々は、上記の実施の形態のAPレジスタ2と同様のものである。但し、それぞれが異なるアドレスポインタを受ける。即ち、APレジスタ20はアドレスポインタPa0を受け、APレジスタ22及びAPレジスタ24はそれぞれアドレスポインタPa2及びPa4を受ける。アドレスポインタPa2及びPa4は、アドレスポインタPa0で指定されるアドレスの命令(ポイント命令)を実行したときに発生されるものであり、例えば、アドレスポインタPa0で指定されるアドレスの命令(ポイント命令)中に含まれている。アドレスポインタPa2及びPa4は、アドレスポインタPa0との区別のため「内部アドレスポインタ」とも呼ばれる。
【0076】
加算器31及び33の各々は、上記の実施の形態の加算器3と同様のものであり、アドレスカウンタ51、52、53及び54の各々は、上記の実施の形態のアドレスカウンタ5、5A又は5Bと同様のものであり、命令レジスタ81、82、83、及び84の各々は、上記の実施の形態の命令レジスタ8、8A及び8Bと同様のものであり、解読器91、92、93及び94の各々は、上記の実施の形態の解読器9、9A及び9Bと同様のものである。
【0077】
ポイント命令レジスタ80は記憶装置7から読み出される1バイトの命令(ポイント命令)を保持する。ポイント命令解読器90は、ポイント命令レジスタ80に保持されたポイント命令を解読する。これによりポイント命令が実行される。ポイント命令は、APレジスタ22及び24に供給すべきアドレスポインタを発生するものである。
【0078】
記憶装置7は、読み出しタイミング信号Sr0を受けると、APレジスタ20の出力で指定されているアドレスの命令を読み出し、読み出しタイミング信号Srを受けると、アドレスカウンタ51乃至54の出力で指定されている4つのアドレスの命令構成バイトを同時に読み出すことができるものである。
【0079】
記憶装置7は、図9及び図10に示すように複数の命令を記憶している。図9は、命令の配置に概略を示し、図10は図9の一部を詳細に示す。図9及び図10に示す命令の配置は、概して図2と同様であるが、4つの命令で一つの命令群が構成され、各命令群が配置された記憶場所(アドレス)の直前のアドレスにポイント命令が配置されている。例えば、命令i1、i2、i3及びi4で一つの命令群g1が構成され、命令i5、i6、i7及びi8で一つの命令群g2が構成され、命令i9、i10、i11及びi12で一つの命令群g3が構成され、命令i13、i14、i15及びi16で一つの命令群g4が構成されている。そしてこれらの命令群が配置されたアドレスの直前のアドレスにポイント命令k1、k2、k3、k4が配置されている。
【0080】
図10は、図9のうちの、命令群g1とその直前のポイント命令k1と、命令群g1の次の命令群g2の一部と、命令群g2の直前のポイント命令k2とを詳細に示す。
【0081】
図10に示すように、各命令(i1、i2、...)は、図2の場合と同様、4バイトから成り、ポイント命令(k1、k2)の各々は1バイトから成る。図2の場合と同様、各命令を構成する4つのバイト(命令構成バイト)は相連続するアドレスに順に記憶されている。
【0082】
例えば、命令i1は、アドレスj+1乃至j+4に先頭のバイト(MSB)から最後のバイト(LSB)まで昇順に記憶されている。即ちMSBはアドレスj+1に、LSBはアドレスj+4に記憶されている。第2の命令i2は、アドレスj+5乃至j+8に、先頭のバイト(MSB)から最後のバイト(LSB)まで降順に記憶されている。即ちMSBはアドレスj+8に、LSBはアドレスj+5に記憶されている。第3の命令i3は、アドレスj+9乃至j+12に、先頭のバイト(MSB)から最後のバイト(LSB)まで昇順に記憶されている。即ちMSBはアドレスj+9に、LSBはアドレスj+12に記憶されている。第4の命令i4は、アドレスj+13乃至j+16に、先頭のバイト(MSB)から最後のバイト(LSB)まで降順に記憶されている。即ちMSBはアドレスj+16に、LSBはアドレスj+13に記憶されている。
【0083】
このように、構成バイトが昇順に記憶された命令と構成バイトが降順に記憶された命令とが交互に配置されている。
【0084】
以下、一例として、命令群g1中の命令i1乃至i4が実行される場合を例に取って説明する。図11は、そのような動作を行なう際に発生される各部の信号を示す。
【0085】
これらの命令を実行するために、最初に、アドレスポインタPa0(上記のように、例えば直前に実行された他の命令の一部として与えられる)によりアドレスjがAPレジスタ20に供給され、制御器1からのラッチ信号SpによりAPレジスタ20にセットされる。
【0086】
この状態で、制御器1から読み出しタイミング信号Sr0が記憶装置7に与えられると、APポインタPa0で指定されるアドレスjの命令(1バイトのポイント命令)が読み出され、ポイント命令レジスタ80に保持される。次に制御器1から解読タイミング信号Sd0が解読器90に与えられる。すると、ポイント命令が実行され、APレジスタ22及び24に与えるべきアドレス(j+8及びj+16)を示す内部アドレスポインタPa2及びPa4が発生される。
【0087】
次に制御器1からアドレスポインタラッチ信号Sqが発生されると、APレジスタ22及び24は、これらの内部アドレスポインタPa2(=j+8)及びPa4(=j+16)をラッチする。アドレスポインタ22及び24の出力はそれぞれ符号Pb2及びPb4で表わされている。
【0088】
次に制御器1から加算タイミング信号Saが与えられると、加算器31及び33は、それぞれAPレジスタ20及び22に保持されているアドレス値に「1」を加算する。その結果、加算器31及び32の出力Pc1及びPc3の値は、j+1及びj+9となる。
【0089】
次にカウント値セット信号Ssが発生されると、アドレスカウンタ51、52、53及び54はそれぞれ加算器31の出力Pc1、APレジスタ22の出力Pb2、加算器33の出力Pc3及びAPレジスタ24の出力Pb4を初期カウント値としてセットされる。その結果、アドレスカウンタ51、52、53及び54のカウント値Pe1、Pe2、Pe3及びPe4はそれぞれj+1、j+8、j+9、及びj+16となる。
【0090】
その状態で、読み出しタイミング信号Srが発生されると、アドレスカウンタ51、52、53及び54のカウント値で指定されるアドレスj+1、j+8、j+9、及びj+16に記憶されている命令構成バイトが読み出され、それぞれ命令レジスタ81、82、83及び84のMSBに保持される。
【0091】
次にカウント信号Scが発生される。すると、アドレスカウンタ51及び53はそのカウント値が1だけ増加し、アドレスカウンタ52及び54はそのカウント値が1だけ減少し、アドレスカウンタ51、52、53及び54のカウント値がそれぞれj+2、j+7、j+10及びj+15になる。その状態で、読み出しタイミング信号Srが発生されると、アドレスカウンタ51、52、53及び54のカウント値で指定されるアドレスj+2、j+7、j+10、及びj+15に記憶されている命令構成バイトが読み出され、それぞれ命令レジスタ81、82、83及び84の2番目のバイト位置に保持される。
【0092】
次に再びカウント信号Scが発生される。すると、アドレスカウンタ51及び53はそのカウント値が1だけ増加し、アドレスカウンタ52及び54はそのカウント値が1だけ減少し、アドレスカウンタ51、52、53及び54のカウント値がそれぞれj+3、j+6、j+11及びj+14になる。その状態で、読み出しタイミング信号Srが発生されると、アドレスカウンタ51、52、53及び54のカウント値で指定されるアドレスj+3、j+6、j+11、及びj+14に記憶されている命令構成バイトが読み出され、それぞれ命令レジスタ81、82、83及び84の3番目のバイト位置に保持される。
【0093】
次に再びカウント信号Scが発生される。すると、アドレスカウンタ51及び53はそのカウント値が1だけ増加し、アドレスカウンタ52及び54はそのカウント値が1だけ減少し、アドレスカウンタ51、52、53及び54のカウント値がそれぞれj+4、j+5、j+12及びj+13になる。その状態で、読み出しタイミング信号Srが発生されると、アドレスカウンタ51、52、53及び54のカウント値で指定されるアドレスj+4、j+5、j+12、及びj+13に記憶されている命令構成バイトが読み出され、それぞれ命令レジスタ81、82、83及び84のLSBに保持される。
【0094】
これにより、命令レジスタ81、82、83及び84はそれぞれ4バイトの命令の全体が保持されている。次に解読タイミング信号Sd1、Sd2、Sd3及びSd4が発生される。すると解読器91、92、93及び94は、それぞれ命令レジスタ81、82、83及び84に記憶されている命令を解読する。これにより、命令が実行される。
【0095】
このようにして、4つの命令が並列に実行される。命令の実行により、次に実行すべきポイント命令を記憶したアドレスを指定するアドレスポインタが発生されると、以下、同様の動作が行なわれる。
【0096】
なお、図11では、解読タイミング信号Sd1、Sd2、Sd3及びSd4が同時に発生するものとして示してある。同時に実行することができない場合には、上記の実施の形態に関して説明したように、解読信号が異なるタイミングで発生される。例えば、図6を参照して説明したのと同様に、4つの命令が並列処理可能かどうかの情報を、4つの命令の各々、又は一つに含ませておくこととしても良い。その場合の動作は、上記とは以下の点で異なる。即ち、ポイント命令中に4つの命令が並列処理可能でない旨の情報が含まれていると、ポイント命令を解読した際、並列処理が可能でないことが分かり、制御器1は、所定の順序で解読タイミング信号Sd1乃至Sd4を発生する。
【0097】
また、4つの命令の各々、又は一つ中に解読の順序を示す情報を含ませておいても良い。その場合には、その情報に基づいて解読タイミング信号Sd1乃至Sd4が発生される。さらにまた、アドレスポインタPa0で指定されるアドレスのポイント命令の読み出しと、他の命令の一つのバイト例えばLSBの読み出しとを同時に行なうようにしても良い。
【0098】
実施の形態7.
上記の実施の形態6では、同じポイント命令で指定される2つのアドレス(j+8及びj+16)と、ポイント命令の次のアドレス(j+1)を用いて読み出し可能な4つの命令(例えばi1、i2、i3及びi4)がともに読み出され、実行されるが、本実施の形態7は、複数の命令を図10に示す配列で記憶した記憶装置7を用いた、分岐命令の実行に関するものである。
【0099】
本実施の形態では、分岐命令は、唯一つのジャンプ先のアドレス、即ちポイント命令を記憶したアドレスをアドレスポインタとして含み、また該ポイント命令の記憶アドレスから、複数の(例えば4つの)命令のうちの分岐先となる命令の記憶アドレスとの隔たりを示す情報と、そのアドレスから昇順に読み進むべきか、降順に読み進むべきかを示す情報(1ビットで良い)とが分岐命令の実行の結果発生される。そして、分岐先と読み出し方向とによって、並列処理される命令の数が異なる。例えば、図9及び図10に示す例で、上記の隔たりが「1」の場合(読み出し方向は「順方向」)、4つの命令i1、i2、i3及びi4が並列処理され、上記の隔たりが「8」で読み出し方向が「逆方向」の場合、3つの命令i2、i3及びi4が並列処理され、上記の隔たりが「8」で読み出し方向が「順方向」の場合、2つの命令i3及びi4が並列処理され、上記の隔たりが「16」の場合(読み出し方向は「逆方向」)、1つの命令i4のみが処理されるようになっている。
【0100】
以下、このような命令を用いて分岐命令を実行する際の動作を図12を参照して説明する。以下の説明では、図8の構成をもつプロセッサが用いられるものとする。
【0101】
まず、ある命令実行サイクルで、分岐命令が実行された(101)とする。
制御器1は、この分岐命令中に含まれるアドレスポインタPaを抽出するとともに、分岐命令の実行の結果発生される、アドレスポインタで示されるポイント命令の記憶アドレスから、複数の命令のうちの分岐先となる命令の記憶アドレスとの隔たりDbを示す情報(例えば、「1」、「8」或いは「16」)と、その分岐先アドレスから昇順に読み進むべきか、降順に読み進むべきかを示す情報Iud(1ビット)を抽出する(102)。
【0102】
そして、アドレスポインタPaをAPレジスタ20に供給し、APレジスタ20にセットする(103)。さらに、隔たりDbと読み出し方向Iudに応じて以下のように異なる動作を行なう(104)。
【0103】
Db=1、Iud=1のときは、命令i1、i2、i3、及びi4を並列処理する(105)。これは実施の形態6に関して説明したのと同様である。
【0104】
Db=8、Iud=0のときは、命令i2、i3、及びi4を並列処理する(106)。これは実施の形態6に関する説明のうち、加算器31、アドレスカウンタ51、命令レジスタ81、及び解読器91を動作させず、残りの部材、即ち、APポインタ20、22及び24、加算器33、アドレスカウンタ52、53及び54、命令レジスタ82、83及び84、及び解読器92、93及び94を実施の形態6と同様に動作させたのと同様である。なお、加算器31、アドレスカウンタ51、及び命令レジスタ81を動作させても、解読器91のみを動作させないようにすれば同様の効果が得られる。
【0105】
Db=8、Iud=1のときは、命令i3、及びi4を並列処理する(107)。これは実施の形態6に関する説明のうち、加算器31、アドレスカウンタ51及び52、命令レジスタ81及び82、及び解読器91及び92を動作させず、残りの部材即ち、APポインタ20、22及び24、加算器33、アドレスカウンタ53及び54、命令レジスタ83及び84、及び解読器93及び94を実施の形態6と同様に動作させたのと同様である。なお、加算器31、アドレスカウンタ51及び52、及び命令レジスタ81及び82を動作させても、解読器91及び92を動作させないようにすれば同様の効果が得られる。
【0106】
Db=16、Iud=0のときは、命令i4のみを処理する(105)。これは実施の形態6に関する説明のうち、APレジスタ22、加算器31及び33、アドレスカウンタ51、52及び53、命令レジスタ81、82及び83、及び解読器91、92及び93を動作させず、残りの部材即ち、APポインタ20及び24、アドレスカウンタ54、命令レジスタ84、及び解読器94を実施の形態6と同様に動作させたのと同様である。実際上は、加算器31及び33、アドレスカウンタ51、52及び53、及び命令レジスタ81、82及び83を動作させても、解読器91、92及び93を動作させないようにすれば同様の効果が得られる。
【0107】
実行された命令の一つが分岐命令である場合には、ステップ101に戻り同様の動作が繰返される。
【0108】
【発明の効果】
本発明によれば、アドレスポインタの数を減らすことができ、プログラムの実行のために必要な情報の量を減らすことができる。また、複数の命令を並列処理の場合にも、並列処理される命令の数に拘わらずアドレスポインタの数を一つにすることができ、プログラムの実行のために必要な情報の量を少なくすることができる。さらに、本発明のプロセッサを分岐命令の実行に用いれば、分岐先を示す情報(アドレスポインタ)と読み出し方向を示す情報とを発生させることで、分岐後の実行されるべき命令を特定することができ、プログラムの実行に必要な情報の量を少なくすることができる。
【図面の簡単な説明】
【図1】 本発明の実施の形態1のプロセッサを示すブロック図である。
【図2】 実施の形態1の記憶装置内の命令及び命令構成バイトの配置を示す図である。
【図3】 実施の形態1の動作を示すタイムチャートである。
【図4】 本発明の実施の形態2のプロセッサを示すブロック図である。
【図5】 実施の形態2の動作を示すタイムチャートである。
【図6】 本発明の実施の形態3のプロセッサを示すブロック図である。
【図7】 本発明の実施の形態4のプロセッサを示すブロック図である。
【図8】 本発明の実施の形態6のプロセッサを示すブロック図である。
【図9】 実施の形態6の記憶装置内の命令の配置を示す図である。
【図10】 実施の形態6の記憶装置内の命令構成バイトの配置を示す図である。
【図11】 実施の形態6の動作を示すタイムチャートである。
【図12】 実施の形態7の動作を示すフローチャートである。
【図13】 従来のプロセッサの記憶装置内の命令及び命令構成バイトの配置を示す図である。
【符号の説明】
1 制御器、 2 APレジスタ、 3 加算器、 4 選択器、 5,5A,5B アドレスカウンタ、 7 記憶装置、 8,8A,8B 命令レジスタ、 9,9A,9B 解読器、 10 選択器、 g1,g2,g3,...命令群、 i1,i2,i3,...命令、 j,j+1,j+2,...アドレス、 k1,k2,...アドレス、 PI ポイント命令。
Claims (11)
- アドレスポインタを保持して出力するアドレスポインタレジスタと、
上記アドレスポインタレジスタが出力するアドレスポインタに所定値を加算する加算器と、
上記アドレスポインタレジスタの出力又は上記加算器の出力を選択して出力する選択器と、
カウントアップ又はカウントダウンを行なうアドレスカウンタと、
各々複数の命令構成バイトで構成される、複数の命令を記憶する記憶装置と、
上記アドレスポインタレジスタ、上記加算器、上記選択器、上記アドレスカウンタ及び上記記憶装置を制御する制御器とを備え、
上記記憶装置内において、
上記命令構成バイトの各々が一つのアドレスに記憶され、
各命令を構成する命令構成バイトが相連続するアドレスから成るアドレス群に、アドレス値に対して昇順又は降順に記憶され、
第1の命令の先頭の命令構成バイトと第2の命令の先頭の命令構成バイトとが互いに隣接するアドレスに配置され、
上記第1の命令の命令構成バイトがアドレス値に対し降順に配置され、上記第2の命令の命令構成バイトがアドレス値に対して昇順に配置され、
上記アドレスポインタとして上記第1の命令の先頭の命令構成バイトの先頭のアドレスのアドレス値を指示するものが与えられ、
上記選択器が上記アドレスポインタレジスタの出力を選択して上記アドレスカウンタに初期カウント値として設定し、カウントダウンを行なわせることにより、上記第1の命令の命令構成バイトを順に読み出して実行し、
上記選択器が上記加算器の出力を選択して上記アドレスカウンタに初期カウント値として設定し、カウントアップを行なわせることにより、上記第2の命令の命令構成バイトを順に読み出して実行する
ことを特徴とするプロセッサ。 - アドレスポインタを保持して出力するアドレスポインタレジスタと、
上記アドレスポインタレジスタが出力するアドレスポインタから所定値を減算する減算器と、
上記アドレスポインタレジスタの出力又は上記減算器の出力を選択して出力する選択器と、
カウントアップ又はカウントダウンを行なうアドレスカウンタと、
各々複数の命令構成バイトで構成される、複数の命令を記憶する記憶装置と、
上記アドレスポインタレジスタ、上記減算器、上記選択器、上記アドレスカウンタ及び上記記憶装置を制御する制御器とを備え、
上記記憶装置内において、
上記命令構成バイトの各々が一つのアドレスに記憶され、
各命令を構成する命令構成バイトが相連続するアドレスから成るアドレス群に、アドレス値に対して昇順又は降順に記憶され、
第1の命令の先頭の命令構成バイトと第2の命令の先頭の命令構成バイトとが互いに隣接するアドレスに配置され、
上記第1の命令の命令構成バイトがアドレス値に対し降順に配置され、上記第2の命令の命令構成バイトがアドレス値に対して昇順に配置され、
上記アドレスポインタとして上記第2の命令の先頭のアドレスのアドレス値を指示するものが与えられ、
上記選択器が上記アドレスポインタレジスタの出力を選択して上記アドレスカウンタに初期カウント値として設定し、カウントアップを行なわせることにより、上記第2の命令の命令構成バイトを順に読み出して実行し、
上記選択器が上記減算器の出力を選択して上記アドレスカウンタに初期カウント値とし て設定し、カウントダウンを行なわせることにより、上記第1の命令の命令構成バイトを順に読み出して実行する
ことを特徴とするプロセッサ。 - 初期カウント値を設定された後カウントダウンを行なう第1のアドレスカウンタと、
初期カウント値を設定された後カウントアップを行なう第2のアドレスカウンタと、
各々複数の命令構成バイトで構成される、複数の命令を記憶する記憶装置と、
上記第1及び第2のアドレスカウンタ、並びに上記記憶装置を制御する制御器とを備え、
上記記憶装置内において、
上記命令構成バイトの各々が一つのアドレスに記憶され、
各命令を構成する命令構成バイトが相連続するアドレスから成るアドレス群に、アドレス値に対して昇順又は降順に記憶され、
第1の命令の先頭の命令構成バイトと第2の命令の先頭の命令構成バイトとが互いに隣接するアドレスに配置され、
上記第1の命令の命令構成バイトがアドレスに対し降順に配置され、上記第2の命令の命令構成バイトがアドレスに対して昇順に配置され、
上記第1の命令の先頭の命令構成バイト又は上記第2の命令の先頭の命令構成バイトのアドレスのアドレス値を指示するアドレスポインタを与え、
上記第1のアドレスカウンタに、上記アドレスポインタに基づく初期カウント値を設定し、カウントダウンを行なわせることにより、上記第1の命令の命令構成バイトを順に読み出して実行し、
上記第2のアドレスカウンタに、上記アドレスポインタに基づく初期カウント値を設定し、カウントアップを行なわせることにより、上記第2の命令の命令構成バイトを順に読み出して実行する
ことを特徴とするプロセッサ。 - 上記第1の命令のすべての命令構成バイトを格納する第1の命令レジスタと、
上記第2の命令のすべての命令構成バイトを格納する第2の命令レジスタと、
上記第1の命令レジスタに記憶された命令を解読して実行する第1の解読器と、
上記第2の命令レジスタに記憶された命令を解読して実行する第2の解読器と
をさらに備えたことを特徴とする請求項3に記載のプロセッサ。 - 上記第1の命令のすべての命令構成バイトを格納する第1の命令レジスタと、
上記第2の命令のすべての命令構成バイトを格納する第2の命令レジスタと、
上記第1の命令レジスタに格納された命令、又は上記第2の命令レジスタに格納された命令のいずれかを選択する選択器と、
上記選択器で選択された命令を解読して実行する解読器と
をさらに備えたことを特徴とする請求項3に記載のプロセッサ。 - 上記第1の命令及び第2の命令の読み出し及び実行を並列に行うことを特徴とする請求項3又は4に記載のプロセッサ。
- 上記第1の命令及び第2の命令の少なくとも一方が、上記第1の命令及び第2の命令の並列処理が可能かどうかを示す並列処理可否情報を含み、
上記並列処理可否情報が並列処理が可能であることを示すときに、上記制御器が上記並列処理を行なわせることを特徴とする請求項6に記載のプロセッサ。 - 初期カウント値を設定された後カウントダウンを行なう第1のアドレスカウンタと、
初期カウント値を設定された後カウントアップを行なう第2のアドレスカウンタと、
初期カウント値を設定された後カウントダウンを行なう第3のアドレスカウンタと、
初期カウント値を設定された後カウントアップを行なう第4のアドレスカウンタと、
各々複数の命令構成バイトで構成される、複数の命令を記憶する記憶装置と、
上記第1及び第2のアドレスカウンタ、並びに上記記憶装置を制御する制御器とを備え、
上記記憶装置内において、
上記命令構成バイトの各々が一つのアドレスに記憶され、
第1の命令を構成する命令構成バイトが相連続するアドレスから成る第1のアドレス群に、アドレス値に対して昇順に記憶され、
第2の命令を構成する命令構成バイトが相連続するアドレスから成る第2のアドレス群に、アドレス値に対して降順に記憶され、
第3の命令を構成する命令構成バイトが相連続するアドレスから成る第3のアドレス群に、アドレス値に対して昇順に記憶され、
第4の命令を構成する命令構成バイトが相連続するアドレスから成る第4のアドレス群に、アドレス値に対して降順に記憶され、
第2の命令の先頭の命令構成バイトと第3の命令の先頭の命令構成バイトとが互いに隣接するアドレスに配置され、
上記第2の命令の命令構成バイトがアドレス値に対し降順に配置され、上記第3の命令の命令構成バイトがアドレス値に対して昇順に配置され、
上記第1の命令の先頭の命令構成バイトの直前にポイント命令が配置され、
上記ポイント命令が、上記第2の命令の先頭の命令構成バイトのアドレスのアドレス値又は上記第3の命令の先頭の命令構成バイトのアドレスのアドレス値を示す第1の内部アドレスポインタ、並びに上記第4の命令の先頭の命令構成バイトのアドレスのアドレス値を示す第2の内部アドレスポインタを含み、
上記ポイント命令を指示するアドレスポインタを与え、
上記ポイント命令を実行して、上記第1及び第2の内部アドレスポインタを発生し、
上記第1のアドレスカウンタに、上記アドレスポインタに基づく初期カウント値を設定し、カウントアップを行なわせることにより、上記第1の命令の命令構成バイトを順に読み出して実行し、
上記第2のアドレスカウンタに、上記第1の内部アドレスポインタに基づく初期カウント値を設定し、カウントダウンを行なわせることにより、上記第2の命令の命令構成バイトを順に読み出して実行し、
上記第3のアドレスカウンタに、上記第1の内部アドレスポインタに基づく初期カウント値を設定し、カウントアップを行なわせることにより、上記第3の命令の命令構成バイトを順に読み出して実行し、
上記第4のアドレスカウンタに、上記第2の内部アドレスポインタに基づく初期カウント値を設定し、カウントダウンを行なわせることにより、上記第4の命令の命令構成バイトを順に読み出して実行する、
ことを特徴とするプロセッサ。 - 分岐命令の実行により、
上記アドレスポインタと、
アドレスカウンタにカウントアップを行なわせるべきかカウントダウンを行なわせるべきかを示す方向情報とを発生させ、
上記方向情報に基づいて上記第1及び第2の命令のいずれかを実行させることを特徴とする請求項1又は2に記載のプロセッサを用いた命令実行方法。 - 分岐命令の実行により、
上記ポイント命令のアドレスのアドレス値を示すアドレスポインタと、
上記ポイント命令からの隔たりを示す隔たり情報と、
方向を示す方向情報と発生させ、
これらに基づいて上記第1乃至第4の命令のうちの実行すべき命令を指定することを特徴とする請求項8に記載のプロセッサを用いた命令実行方法。 - 上記隔たり情報が、上記ポイント命令のアドレスから、上記第1の命令の先頭の命令構成バイトのアドレスまでの隔たりに対応するものであるときは、上記第1乃至第4の命令をすべて実行し、
上記隔たり情報が、上記ポイント命令のアドレスから、上記第2の命令の先頭の命令構成バイトのアドレス又は上記第3の命令の先頭の命令構成バイトのアドレスに対応し、上記方向情報が降順を示すものであるときは、上記第2乃至第4の命令を実行し、
上記隔たり情報が、上記ポイント命令のアドレスから、上記第2の命令の先頭の命令構成バイトのアドレス又は上記第3の命令の先頭の命令構成バイトのアドレスに対応し、上記方向情報が昇順を示すものであるときは、上記第3及び第4の命令を実行し、
上記隔たり情報が、上記ポイント命令のアドレスから、上記第4の命令の先頭の命令構成バイトのアドレスに対応するときは、第4の命令のみを実行する
ことを特徴とする請求項10に記載の命令実行方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002085423A JP3804778B2 (ja) | 2002-03-26 | 2002-03-26 | プロセッサ及び命令実行方法 |
US10/395,849 US6920544B2 (en) | 2002-03-26 | 2003-03-25 | Processor and instruction execution method with reduced address information |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002085423A JP3804778B2 (ja) | 2002-03-26 | 2002-03-26 | プロセッサ及び命令実行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003280895A JP2003280895A (ja) | 2003-10-02 |
JP3804778B2 true JP3804778B2 (ja) | 2006-08-02 |
Family
ID=29232397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002085423A Expired - Fee Related JP3804778B2 (ja) | 2002-03-26 | 2002-03-26 | プロセッサ及び命令実行方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6920544B2 (ja) |
JP (1) | JP3804778B2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005063358A (ja) * | 2003-08-20 | 2005-03-10 | Matsushita Electric Ind Co Ltd | 命令供給制御装置および半導体装置 |
US8006071B2 (en) | 2004-03-31 | 2011-08-23 | Altera Corporation | Processors operable to allow flexible instruction alignment |
US7558900B2 (en) * | 2004-09-27 | 2009-07-07 | Winbound Electronics Corporation | Serial flash semiconductor memory |
US8954803B2 (en) * | 2010-02-23 | 2015-02-10 | Mosys, Inc. | Programmable test engine (PCDTE) for emerging memory technologies |
WO2012060010A1 (ja) * | 2010-11-05 | 2012-05-10 | 富士通株式会社 | 情報処理装置,情報処理装置の時刻設定方法,及び情報処理装置の時刻設定プログラム,並びに監視装置 |
US8988956B2 (en) | 2012-09-18 | 2015-03-24 | Mosys, Inc. | Programmable memory built in self repair circuit |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5790564A (en) * | 1995-06-07 | 1998-08-04 | International Business Machines Corporation | Memory array built-in self-test circuit having a programmable pattern generator for allowing unique read/write operations to adjacent memory cells, and method therefor |
JP3181515B2 (ja) * | 1996-09-11 | 2001-07-03 | 株式会社沖データ | データ転送方法及びその方法を用いたデータ転送装置 |
US6049505A (en) * | 1998-05-22 | 2000-04-11 | Micron Technology, Inc. | Method and apparatus for generating memory addresses for testing memory devices |
-
2002
- 2002-03-26 JP JP2002085423A patent/JP3804778B2/ja not_active Expired - Fee Related
-
2003
- 2003-03-25 US US10/395,849 patent/US6920544B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6920544B2 (en) | 2005-07-19 |
JP2003280895A (ja) | 2003-10-02 |
US20040049656A1 (en) | 2004-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0138451B1 (en) | Vector data processing system for indirect address instructions | |
EP0297897A2 (en) | A microinstruction sequencer capable of instructing arithmetic, logical and data move operations in a conditional manner | |
JP3804778B2 (ja) | プロセッサ及び命令実行方法 | |
JP3454393B2 (ja) | データ処理装置 | |
JP2003196156A (ja) | 情報処理装置および情報処理方法 | |
JP2812610B2 (ja) | パイプライン制御方式 | |
JPH03288228A (ja) | 情報処理装置 | |
JP4388643B2 (ja) | マルチチャンネル信号処理装置 | |
JP2000112754A (ja) | データ処理装置 | |
JP2556083B2 (ja) | 複合演算パイプライン回路 | |
JPH0895781A (ja) | プロセッサの算術論理装置 | |
JPS63141131A (ja) | パイプライン制御方式 | |
JPH04364532A (ja) | セントラルプロセッサのデータ処理方法 | |
JPS61267162A (ja) | デ−タ転送装置 | |
JP2001084139A (ja) | 演算処理装置および演算処理方法 | |
JPH0750596A (ja) | 符号化装置及び符号化方法 | |
JPH0512009A (ja) | デイジタル信号処理装置 | |
JPH08153086A (ja) | プロセッサ | |
JPH05127892A (ja) | 命令実行方式 | |
JPH0269826A (ja) | 条件付命令制御方式 | |
JPH0218732B2 (ja) | ||
JP2001282766A (ja) | データ駆動型情報処理装置 | |
JPH03147020A (ja) | データ処理装置 | |
JPH044631B2 (ja) | ||
JP2001084130A (ja) | 選択回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050119 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060221 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060404 |
|
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: 20060502 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060502 |
|
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: 20090519 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100519 Year of fee payment: 4 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100519 Year of fee payment: 4 |
|
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: 20110519 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110519 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120519 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120519 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130519 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |