JP3619343B2 - Data processing apparatus and method - Google Patents

Data processing apparatus and method Download PDF

Info

Publication number
JP3619343B2
JP3619343B2 JP01830897A JP1830897A JP3619343B2 JP 3619343 B2 JP3619343 B2 JP 3619343B2 JP 01830897 A JP01830897 A JP 01830897A JP 1830897 A JP1830897 A JP 1830897A JP 3619343 B2 JP3619343 B2 JP 3619343B2
Authority
JP
Japan
Prior art keywords
field
shift
data processing
operations
arithmetic logic
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
Application number
JP01830897A
Other languages
Japanese (ja)
Other versions
JPH09223009A (en
Inventor
バウム アレン
Original Assignee
エイアールエム リミテッド
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 エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JPH09223009A publication Critical patent/JPH09223009A/en
Application granted granted Critical
Publication of JP3619343B2 publication Critical patent/JP3619343B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

Description

【0001】
【発明の属する技術分野】
本発明はデータ処理の分野に関するものである。特に本発明はデータ処理システム内で命令の実行に許容される処理サイクルの数を制御することに関するものである。
【0002】
【従来の技術】
異なるデータ処理命令語は、次の命令を始めることができる前に実行するのに要する処理サイクル(クロックサイクル)の数が異なることが、データ処理システムの分野では知られている。システムが実行するのに要する処理量が極めて少ない命令語もあれば(たとえばスワップレジスタデータ命令)、完了するのに非常に多くの処理サイクルを要する命令語もある(たとえば多重ロード命令)。
【0003】
シングルタイプの命令の場合、いくつかの特定の命令は他の命令よりも高速で実行することが可能であることも知られている。たとえば、命令の中の定数により直接指定される少ないビット数を動く単純なシフトは、レジスタから読出された値により指定される多くのビット数を通る複雑な演算シフトよりも少ない処理数で実行することができる。
【0004】
コンピュータに関するもうひとつの傾向は、プログラム命令語に含まれるビット数が増えていることである。8ビットまたは16ビットの命令語から32ビットまたは64ビットの命令語へと動いてきた。このような大きな命令に関して命令セットのスペースを効率よく使うために、アドバンストRISCマシーンズ社(Advanced RISC Machines Limited)製のARM6のようなマイクロプロセッサにおいて、2個以上のフィールドを有するプログラム命令語を含み、各フィールドは特定の型の演算論理装置オペレーション、またはシフトオペレーションを指定することが提案された。このようにして、符号化密度を改良することができる。この技術は特に簡略命令セットコンピュータに適しており、このコンピュータでは、多数のもっと複雑で特化された命令を提供するために、多くの命令セットビットスペースを使うという代替案は不適当なのである。
【0005】
2個以上のフィールドを有し、各フィールドがひとつの命令タイプを指定するというプログラム命令語に関しては、異なるタイプの命令が共に、たとえばシフタとか加算器とかのプロセッサ内の1個しかないハードウエア資源を使いたがるという別の問題が生じる。そのため、ハードウエア資源に対して衝突する要求をすべて満足させるために、プログラム命令語を実行するのに許容されなければならない処理サイクルの数が多くなる。このことは実行をもっと高速にするという処理システムの絶えざる狙いに逆行することである。
【0006】
【発明が解決すべき課題】
本発明の課題はデータ処理システムにおいて、命令を実行するのに許容される処理サイクルの数を制御することにより、実行の高速化を図ることである。
【0007】
【課題を解決するための手段】
一側面から見ると、本発明は、複数個の演算論理装置オペレーションのうちのひとつを指定する第1のフィールドと、該第1のフィールドからは独立していて複数個のシフトオペレーションのうちのひとつを指定する第2のフィールドとを有するデータ処理命令語に応答してデータを処理する装置を提供する。
該データ処理装置は、
該複数個の演算論理オペレーションのうちどれが該第1のフィールドにより指定されるかにより決まる処理サイクル数で、該第1のフィールドにより指定された演算論理装置オペレーションを実行する演算論理装置と、
該複数個のシフトオペレーションのうちどれが該第2のフィールドにより指定されるかにより決まる処理サイクル数で、該第2のフィールドにより指定されたシフトオペレーションを実行するシフタと、
次の処理命令語の実行を始める前に、該データ処理命令語の実行に許される処理サイクルの数を、該第1のフィールドと該第2のフィールドの両方に依存して変える命令デコーダと、
を含む。
【0008】
本発明では、演算論理装置オペレーションとシフトオペレーションとを独立に指定する複数のフィールドをデータ処理命令語が有するデータ処理システムにおいて、たとえこれらのオペレーションが共通のハードウエア資源を共有したとしても、両方のフィールドに依存して許容される処理サイクル数を選択することができる。このように、演算論理装置オペレーションとシフトオペレーションの組合せの最悪の場合のみ多くの処理数が許されるのを必要とするが、もっと一般的で単純な組合せの場合には、少ない処理数を使うことが許される。
【0009】
上述の技術は、演算論理オペレーションとシフトオペレーションとが全く独立しているが、ある組合せが他の組合せより長い作動時間を要するという環境で使うことができよう。しかしながら本発明は、演算論理オペレーションとシフトオペレーションとの1個または複数個の組合せに対して、前記演算論理装置と前記シフタとが前記演算論理オペレーションと前記シフトオペレーションとを順次実行するという実施例において、特に有用である。
【0010】
そのデータ処理命令語が必要とする処理サイクルの合計数を増やす必要があるかどうかを決定するとき、演算論理オペレーションとシフトオペレーションを順次実行すると、各々は他方が完了するのに要する時間に、より敏感になる。
【0011】
シフトオペレーションに速いのと遅いのとの違いがあるのは、シフトオペレーションが以下の一方であると考えてよい。
シフト量があらかじめ決められたレベル以上であるフルシフトオペレーションと、
シフト量があらかじめ決められたレベル未満である単純シフトオペレーション。
【0012】
あらかじめ決められたレベルよりもシフト量が少いシフトオペレーションは、他のオペレーションと共有されない自分専用のシフタにより処理することができる。このようにしてシフト量の少ないものはもっと高速で処理することができる。自分専用のシフタにより処理すべく選択されるシフトオペレーションは、典型的なデータ処理オペレーションの中で比較的一般的であるが、比較的簡単に解読して実行できるのが選ばれる。
【0013】
演算論理装置オペレーションには多くの異なる形式がある。これらのオペレーションを分けるひとつの方法として、演算論理装置オペレーションは以下のうちの一方であるとする。
1個または複数のオペランドによる論理オペレーションと、
1個または複数のオペランドによる算術オペレーション。
典型的には、算術オペレーションの方が論理オペレーションよりかなり複雑なので、処理に要する時間が長い(たとえば、一連のビット値に沿って桁上げを処理することが必要な場合)。
【0014】
演算論理装置オペレーションとシフトオペレーションとを上述のように分けることが有効な例として、
フルシフトオペレーションと論理オペレーション、または単紙シフトオペレーションと算術オペレーションを含むデータ処理命令に応答して、次の処理命令語の実行を始める前に前記命令デコーダはX処理サイクルを許容する場合と、
フルシフトオペレーションと算術オペレーションとを含むデータ処理命令に応答して、次の処理命令語の実行を始める前に、前記命令デコーダはXより大きいY処理を許容する場合と、
がある。
YがXより大きいという条件で、XとYの値は何種類もの値を取り得ることが理解されよう。しかしながら、典型的な高度に最適化された処理装置(たとえばRISCプロセッサ)では、Y=2でX=1である。
【0015】
もうひとつの側面として本発明は、複数個の演算論理装置オペレーションのうちのひとつを指定する第1のフィールドと、該第1のフィールドからは独立していて複数個のシフトオペレーションのうちのひとつを指定する第2のフィールドとを有するデータ処理命令語に応答してデータを処理する方法であって、以下のステップを含むものを提供する。
該複数個の演算論理オペレーションのうちどれが該第1のフィールドにより指定されるかにより決まるサイクル数で、該第1のフィールドにより指定された演算論理装置オペレーションを実行するステップと、
該複数個のシフトオペレーションのうちどれが該第2のフィールドにより指定されるかにより決まる処理サイクル数で、該第2のフィールドにより指定されたシフトオペレーションを実行するステップと、
次の処理命令語の実行を始める前に、該データ処理命令語の実行に許される処理サイクル数を、該第1のフィールドと該第2のフィールドの両方に依存して変えるステップ。
【0016】
【発明の実施の形態】
次に、本発明について図面を参照しながら説明する。
図1はマイクロプロセッサ回路2を示す。マイクロプロセッサ回路2には、アドレスバス(図示せず)上に現在現われているアドレスを記憶するためのアドレスレジスタ4が含まれている。アドレスインクレメンタ回路6は、アドレスレジスタ4の中に記憶されるアドレスを高速で増分する役目を果たす。このことはメモリロケーションなどに高速で逐次アクセスを行うために望ましいことである。命令パイプラインと読出しデータレジスタのユニット8は、マイクロプロセッサ回路2に加えるためにメモリから読出したデータ処理命令語を記憶する役を果たす。命令パイプライン8の上部にあるデータ処理命令語は、命令デコーダと制御論理装置のユニット10に加えられ、ここで少なくとも部分的に解読される。この解読は、そのデータ処理命令語を完全に処理するために、マイクロプロセッサ回路2の中の他の要素を命令デコーダと制御論理装置のユニット10が適切に駆動することができる程度に行われる。レジスタバンク12は処理すべきデータ語を記憶するために設けられている。所定の機能を果たすために最適化されている特別の処理ユニットとして、マイクロプロセッサ回路2の中に、乗算器14、バレルシフタ16および演算論理装置18が含まれている。これらの機能ユニットはマイクロプロセッサ回路2の中で必要とされる処理操作の大部分を扱う。デバッグ回路20は、開発中にマイクロプロセッサ回路を組込んだシステムのハードウェアのデバッグを支援するためのものである。書込みデータレジスタバンク22はマイクロプロセッサ回路2から出力されるデータ値をバッファする役を果たす。
【0017】
図2は複数個の演算論理装置のオペレーションのうちのひとつを指定する第1のフィールド32と、複数個のシフトオペレーションのうちのひとつを指定する第2のフィールド28とを有するデータ処理命令語を示す。この命令の例はアドバンストRISCマシンズ社(Advanced RISC MachinesLimited)製のARM6プロセッサの命令セットから取ったものである。以下、このデータ処理命令語が解読されて適用されるやり方に修正を加えることにより、本発明のオペレーションの一例を説明する。
【0018】
データ処理命令語の中で31ビットから28ビットまでは条件フィールド24が占めている。この条件フィールド24はデータ処理命令語全体の条件付実行を可能にするものであって、それはマイクロプロセッサ回路2の中の状態フラグが条件フィールド24の中に特定されている条件に整合しているか否かに依る。
【0019】
ビット27と26はこの特別のデータ処理命令語の場合、常に共にゼロである。
ビット25はIビットと呼ばれるもので、データ処理命令語の最下位の12ビット(すなわちビット11から0)が解読される方法、すなわち即時の値を使うのか、それともレジスタ内に記憶されている値を使うのかを指定する。
【0020】
第1のフィールド32(ビット24から21)は、演算論理装置18とマイクロプロセッサ回路2内の他の要素との組によって実行される複数個の演算論理装置のオペレーションのうちの1個を選択するオペレーションコード(オペコード)を指定する。可能な演算論理装置オペレーションは16種類あって、この形式を図2に示す。16個の演算論理装置オペレーションのうち、8個は算術オペレーション(SUB、RSB、ADD、ADC、SBC、RSC、CMP、CMN)であり、8個は論理オペレーション(AND、EOR、TST、TEQ、ORR、MOV、BIC、MVN)である。
【0021】
ビット20はSビット33と呼ばれ、条件フィールド24が応答する条件フラグが、現在のデータ処理命令語により変えられるか否かを指示する。
次の4ビット34(ビット19から16まで)は、このデータ処理命令語の第1のオペランドを提供するレジスタバンク12の中のレジスタの数を指定する。
次の4ビット36(ビット15から12まで)は、データ処理命令語の結果を書込むためのレジスタバンク12内のレジスタを指定する。
【0022】
最後の12ビット28(ビット11から0まで)は実行すべきシフトオペレーションを指定している。前述のように、最下位の12ビット28の解読方法はIビット30に依存する。もしI=0ならば、最下位の4ビット(ビット3から0まで)はレジスタバンク12内のどのレジスタから値を取ってきて、それをシフトして第2のオペランドをつくるかを指定する。最上位の8ビット40(ビット11から4まで)は実行すべきシフトの性質と量とを指定する。シフトにはフィールド40の中のビットに依存して、左論理シフト、右論理シフト、算術右シフトまたは右回転シフトがある。フィールド40はまた実行すべきシフト量の値を保持するレジスタバンク12内のレジスタを指定するか、またはこのシフト量を即時値として直接明記するかのいずれかを行う。I=1のとき、最下位の8ビット(ビット7から0まで)は実行すべきシフト量を表わす即時値を明記する。このシフトは残りの4ビット(ビット11から8まで)によって指定される。
【0023】
この実施例では、0、1、2、3ビットのいずれかの値だけ位置をシフトする左論理シフトは、専用のシフタにより敏速に実行される単純シフトとして扱われる。残りのシフトはすべて実行時間がもっと長くかかるフルシフトとして扱われる。
【0024】
図3は命令デコーダと制御論理装置10が、演算論理装置オペレーションを指定する第1のフィールド32と、シフトオペレーションを指定する第2のフィールド28とをどのような方法で解読するかを示す。これらのフィールドの関連ビットはそれぞれの組合せ論理ブロック42、44に供給され、これらのブロックは論理オペレーションと算術オペレーションのいずれが指定されているのかということを示す出力と、単純シフトとフルシフトのいずれが指定されているのかを示す出力を供給する。これらの2個の出力はアンドゲート46に供給され、ゲート46はもしフルシフトと算術オペレーションとが共に指定されていれば、1という値を出力する。その他の組合せの場合はすべてアンドゲート46の出力は0である。アンドゲート46の出力は命令パイプラインに沿って命令の進行を制御する、すなわち次の命令が命令デコードと制御論理装置10に加えられる前に、現在の命令を実行するのに許される時間を制御するのに使われる。
【0025】
表1はそれぞれのサイクルカウントを生ずる演算オペレーションとシフトオペレーションの各種組合せを示す。
【0026】
【表1】

Figure 0003619343
【0027】
簡略命令セット計算回路のような高度に最適化されたマイクロプロセッサ回路2では、ほとんどすべての命令が1サイクル内で実行可能である。算術オペレーションとフルシフトとが同時に指定される最悪の場合だけは、マイクロプロセッサが完了するのに2クロックサイクルを許容しなければならない。
【図面の簡単な説明】
【図1】マイクロプロセッサ内の機能的要素を示す図。
【図2】演算論理装置オペレーションとシフトオペレーションとを指定する独立のフィールドを有する、データ処理命令語の形式と内容を示す図。
【図3】データ処理命令語の実行を完了するのに許される処理サイクル数を決めるために、図2の命令の解読を示す図。
【符号の説明】
2 マイクロプロセッサ
18 演算論理装置
28 第2のフィールド
32 第1のフィールド[0001]
BACKGROUND OF THE INVENTION
The present invention relates to the field of data processing. In particular, the present invention relates to controlling the number of processing cycles allowed for instruction execution within a data processing system.
[0002]
[Prior art]
It is known in the field of data processing systems that different data processing instruction words differ in the number of processing cycles (clock cycles) required to execute before the next instruction can begin. Some instruction words require very little processing to be executed by the system (eg, swap register data instructions), while other instruction words require very many processing cycles to complete (eg, multiple load instructions).
[0003]
In the case of single type instructions, it is also known that some specific instructions can be executed faster than other instructions. For example, a simple shift that moves a small number of bits specified directly by a constant in an instruction performs less processing than a complex arithmetic shift through many bits specified by a value read from a register be able to.
[0004]
Another trend for computers is that the number of bits contained in program instructions is increasing. It has moved from 8-bit or 16-bit instruction words to 32-bit or 64-bit instruction words. In order to efficiently use the instruction set space for such large instructions, a microprocessor such as ARM6 from Advanced RISC Machines Limited includes a program instruction word having two or more fields, Each field has been proposed to specify a particular type of arithmetic logic unit operation, or shift operation. In this way, the coding density can be improved. This technique is particularly suitable for a simplified instruction set computer, where an alternative of using a large instruction set bit space to provide a large number of more complex and specialized instructions is inappropriate.
[0005]
With respect to program instruction words having two or more fields, each field specifying one instruction type, both different types of instructions, for example, only one hardware resource in a processor such as a shifter or an adder. Another problem is that you want to use. This increases the number of processing cycles that must be allowed to execute a program instruction word in order to satisfy all conflicting requests for hardware resources. This goes against the constant aim of processing systems to make execution faster.
[0006]
[Problems to be Solved by the Invention]
An object of the present invention is to speed up execution in a data processing system by controlling the number of processing cycles allowed to execute an instruction.
[0007]
[Means for Solving the Problems]
Viewed from one aspect, the present invention provides a first field designating one of a plurality of arithmetic logic unit operations and one of a plurality of shift operations independent of the first field. And an apparatus for processing data in response to a data processing instruction having a second field designating.
The data processing device
An arithmetic logic unit that performs the arithmetic logic unit operation specified by the first field at a number of processing cycles determined by which of the plurality of arithmetic logic operations is specified by the first field;
A shifter that performs the shift operation specified by the second field at a number of processing cycles determined by which of the plurality of shift operations is specified by the second field;
An instruction decoder that changes the number of processing cycles allowed to execute the data processing instruction word depending on both the first field and the second field before starting execution of the next processing instruction word;
including.
[0008]
In the present invention, in a data processing system in which a data processing instruction word has a plurality of fields that independently designate an arithmetic logic unit operation and a shift operation, even if these operations share a common hardware resource, Depending on the field, the number of processing cycles allowed can be selected. Thus, only the worst case of the combination of arithmetic logic unit operation and shift operation needs to allow a large number of processes, but for a more general and simple combination, use a small number of processes. Is allowed.
[0009]
The technique described above could be used in an environment where arithmetic logic operations and shift operations are completely independent, but some combinations require longer operating times than others. However, the present invention is an embodiment in which the arithmetic logic unit and the shifter sequentially execute the arithmetic logic operation and the shift operation for one or a plurality of combinations of arithmetic logic operations and shift operations. Is particularly useful.
[0010]
When deciding whether the total number of processing cycles required by the data processing instruction needs to be increased, performing arithmetic logic operations and shift operations sequentially, each increases the time it takes for the other to complete. Become sensitive.
[0011]
The difference between fast and slow shift operations can be considered that the shift operation is one of the following:
A full shift operation in which the shift amount is equal to or higher than a predetermined level;
A simple shift operation where the shift amount is less than a predetermined level.
[0012]
A shift operation with a shift amount smaller than a predetermined level can be processed by its own shifter that is not shared with other operations. In this way, a small shift amount can be processed at a higher speed. The shift operation selected for processing by its own shifter is relatively common among typical data processing operations, but is chosen to be relatively easy to decode and execute.
[0013]
There are many different forms of arithmetic logic unit operations. As one way of separating these operations, the arithmetic logic unit operation is one of the following:
Logical operation with one or more operands;
Arithmetic operations with one or more operands.
Typically, arithmetic operations are much more complex than logical operations, so processing takes longer (eg, when it is necessary to process carry along a series of bit values).
[0014]
As an effective example of dividing arithmetic logic unit operations and shift operations as described above,
In response to a data processing instruction including a full shift operation and a logical operation, or a single paper shift operation and an arithmetic operation, the instruction decoder allows X processing cycles before starting execution of the next processing instruction word;
In response to a data processing instruction including a full shift operation and an arithmetic operation, the instruction decoder allows Y processing greater than X before beginning execution of the next processing instruction word;
There is.
It will be understood that the values of X and Y can take a number of values, provided that Y is greater than X. However, in a typical highly optimized processor (eg, a RISC processor), Y = 2 and X = 1.
[0015]
In another aspect, the present invention provides a first field designating one of a plurality of arithmetic logic unit operations, and one of a plurality of shift operations independent of the first field. A method of processing data in response to a data processing instruction having a second field to specify, comprising the following steps:
Performing the arithmetic logic unit operation specified by the first field with a number of cycles determined by which of the plurality of arithmetic logic operations is specified by the first field;
Performing the shift operation specified by the second field with a number of processing cycles determined by which of the plurality of shift operations is specified by the second field;
Changing the number of processing cycles allowed to execute the data processing instruction depending on both the first field and the second field before starting execution of the next processing instruction.
[0016]
DETAILED DESCRIPTION OF THE INVENTION
Next, the present invention will be described with reference to the drawings.
FIG. 1 shows a microprocessor circuit 2. The microprocessor circuit 2 includes an address register 4 for storing an address currently appearing on an address bus (not shown). The address incrementer circuit 6 serves to increment the address stored in the address register 4 at high speed. This is desirable for high speed sequential access to memory locations and the like. The instruction pipeline and read data register unit 8 serves to store data processing instruction words read from memory for addition to the microprocessor circuit 2. The data processing instruction word at the top of the instruction pipeline 8 is added to the instruction decoder and control logic unit 10 where it is at least partially decoded. This decoding is done to such an extent that the instruction decoder and control logic unit 10 can properly drive the other elements in the microprocessor circuit 2 to fully process the data processing instruction word. Register bank 12 is provided for storing data words to be processed. The microprocessor circuit 2 includes a multiplier 14, a barrel shifter 16, and an arithmetic logic unit 18 as special processing units that are optimized to perform predetermined functions. These functional units handle most of the processing operations required in the microprocessor circuit 2. The debug circuit 20 is for supporting debugging of hardware of a system in which a microprocessor circuit is incorporated during development. The write data register bank 22 serves to buffer data values output from the microprocessor circuit 2.
[0017]
FIG. 2 shows a data processing instruction word having a first field 32 for designating one of a plurality of arithmetic logic unit operations and a second field 28 for designating one of a plurality of shift operations. Show. An example of this instruction is taken from the instruction set of an ARM6 processor made by Advanced RISC Machines Limited. Hereinafter, an example of the operation of the present invention will be described by modifying the manner in which the data processing instruction word is decoded and applied.
[0018]
The condition field 24 occupies 31 bits to 28 bits in the data processing instruction word. This condition field 24 allows conditional execution of the entire data processing instruction word, which is consistent with the conditions specified in the condition field 24 by the status flag in the microprocessor circuit 2. Depends on whether or not.
[0019]
Bits 27 and 26 are always both zero for this particular data processing instruction.
Bit 25 is called the I bit and is the way in which the least significant 12 bits (ie bits 11 to 0) of the data processing instruction word are decoded, ie whether to use an immediate value or the value stored in the register Specify whether to use.
[0020]
The first field 32 (bits 24 to 21) selects one of the operations of the plurality of arithmetic logic units performed by the combination of the arithmetic logic unit 18 and other elements in the microprocessor circuit 2. Specify the operation code (opcode). There are 16 possible arithmetic logic unit operations, and this form is shown in FIG. Of the 16 arithmetic logic unit operations, 8 are arithmetic operations (SUB, RSB, ADD, ADC, SBC, RSC, CMP, CMN), and 8 are logical operations (AND, EOR, TST, TEQ, ORR). , MOV, BIC, MVN).
[0021]
Bit 20 is called S bit 33 and indicates whether the condition flag to which condition field 24 responds can be changed by the current data processing instruction.
The next 4 bits 34 (bits 19 to 16) specify the number of registers in the register bank 12 that provide the first operand of this data processing instruction.
The next 4 bits 36 (bits 15 to 12) designate a register in the register bank 12 for writing the result of the data processing instruction word.
[0022]
The last 12 bits 28 (bits 11 to 0) specify the shift operation to be performed. As described above, the method of decoding the least significant 12 bits 28 depends on the I bit 30. If I = 0, the least significant 4 bits (bits 3 through 0) specify from which register in register bank 12 the value is taken and shifted to create the second operand. The most significant 8 bits 40 (bits 11 through 4) specify the nature and amount of shift to be performed. Depending on the bits in field 40, the shift may be a left logical shift, a right logical shift, an arithmetic right shift, or a right rotational shift. Field 40 also specifies either a register in register bank 12 that holds the value of the shift amount to be executed, or directly specifies this shift amount as an immediate value. When I = 1, the least significant 8 bits (bits 7 to 0) specify an immediate value indicating the shift amount to be executed. This shift is specified by the remaining 4 bits (bits 11 to 8).
[0023]
In this embodiment, a left logical shift that shifts the position by any one of 0, 1, 2, and 3 bits is treated as a simple shift that is quickly executed by a dedicated shifter. All remaining shifts are treated as full shifts that take longer to execute.
[0024]
FIG. 3 shows how the instruction decoder and control logic 10 decodes the first field 32 that specifies the arithmetic logic unit operation and the second field 28 that specifies the shift operation. The relevant bits of these fields are supplied to the respective combinational logic blocks 42, 44, which output indicating whether a logical operation or an arithmetic operation is specified, and whether a simple shift or a full shift. Provides output indicating whether it is specified. These two outputs are supplied to an AND gate 46 which outputs a value of 1 if both full shift and arithmetic operations are specified. In all other combinations, the output of the AND gate 46 is zero. The output of AND gate 46 controls the progress of the instruction along the instruction pipeline, ie, the time allowed to execute the current instruction before the next instruction is added to instruction decode and control logic 10. Used to do.
[0025]
Table 1 shows the various combinations of arithmetic and shift operations that produce each cycle count.
[0026]
[Table 1]
Figure 0003619343
[0027]
In a highly optimized microprocessor circuit 2 such as a simplified instruction set calculation circuit, almost all instructions can be executed in one cycle. Only the worst case where arithmetic operations and full shifts are specified at the same time must allow two clock cycles for the microprocessor to complete.
[Brief description of the drawings]
FIG. 1 illustrates functional elements within a microprocessor.
FIG. 2 is a diagram showing the format and contents of a data processing instruction word having independent fields that specify an arithmetic logic unit operation and a shift operation.
FIG. 3 is a diagram illustrating the decoding of the instruction of FIG. 2 to determine the number of processing cycles allowed to complete execution of the data processing instruction word.
[Explanation of symbols]
2 microprocessor 18 arithmetic logic unit 28 second field 32 first field

Claims (7)

複数個の演算論理装置オペレーションのうちのひとつを指定する第1のフィールドと、該第1のフィールドからは独立していて複数個のシフトオペレーションのうちのひとつを指定する第2のフィールドとを有するデータ処理命令語に応答してデータを処理する装置であって、
該複数個の演算論理オペレーションのうちどれか該第1のフィールドにより指定されるかにより決まる処理サイクル数で、該第1のフィールドにより指定された演算論理装置オペレーションを実行する演算論理装置と、
該複数個のシフトオペレーションのうちどれが該第2のフィールドにより指定されるかにより決まる処理サイクル数で、該第2のフィールドにより指定されたシフトオペレーションを実行するシフタと、
次の処理命令語の実行を始める前に、該データ処理命令語の実行に許される処理サイクルの数を、該第1のフィールドと該第2のフィールドの両方に依存して変える命令デコーダと、
を含むデータ処理装置。
A first field designating one of the plurality of arithmetic logic unit operations; and a second field designating one of the plurality of shift operations independent of the first field. A device for processing data in response to a data processing command,
An arithmetic logic unit that performs the arithmetic logic unit operation specified by the first field at a number of processing cycles determined by which of the plurality of arithmetic logic operations is specified by the first field;
A shifter that performs the shift operation specified by the second field at a number of processing cycles determined by which of the plurality of shift operations is specified by the second field;
An instruction decoder that changes the number of processing cycles allowed to execute the data processing instruction word depending on both the first field and the second field before starting execution of the next processing instruction word;
Including a data processing apparatus.
請求項1記載の装置において、演算論理オペレーションとシフトオペレーションとの1個または複数の組合せに対して、前記演算論理装置と前記シフタとが前記演算論理オペレーションと前記シフトオペレーションとを順次実行する、データ処理装置。The apparatus of claim 1, wherein the arithmetic logic unit and the shifter sequentially execute the arithmetic logic operation and the shift operation for one or more combinations of arithmetic logic operations and shift operations. Processing equipment. 請求項1、2記載の装置において、前記シフトオペレーションは、
シフト量があらかじめ決められたレベル以上であるフルシフトオペレーションと、
シフト量があらかじめ決められたレベル未満である単純シフトオペレーションと、
のうちの一方である、データ処理装置。
The apparatus according to claim 1 or 2, wherein the shift operation includes:
A full shift operation in which the shift amount is equal to or higher than a predetermined level;
A simple shift operation in which the shift amount is less than a predetermined level;
A data processing device which is one of the above.
請求項1、2、3記載の装置において、前記演算論理装置オペレーションは、
1個または複数のオペランドによる論理オペレーションと、
1個または複数のオペランドによる算術オペレーションと、
のうちの一方である、データ処理装置。
4. The apparatus of claim 1, 2, 3 wherein the arithmetic logic unit operation is:
Logical operation with one or more operands;
An arithmetic operation with one or more operands;
A data processing device which is one of the above.
請求項3、4記載の装置において、
フルシフトオペレーションと論理オペレーション、または単純シフトオペレーションと算術オペレーションを含むデータ処理命令に応答して、次の処理命令語の実行を始める前に、前記命令デコーダはX処理サイクルを許容することと、
フルシフトオペレーションと算術オペレーションとを含むデータ処理命令に応答して、次の処理命令語の実行を始める前に、前記命令デコーダはXより大きいY処理を許容することと、
を含む、データ処理装置。
The apparatus according to claims 3 and 4,
In response to a data processing instruction including a full shift operation and a logical operation, or a simple shift operation and an arithmetic operation, the instruction decoder allows X processing cycles before beginning execution of the next processing instruction word;
In response to a data processing instruction including a full shift operation and an arithmetic operation, the instruction decoder allows Y processing greater than X before starting execution of the next processing instruction word;
Including a data processing apparatus.
請求項5記載の装置において、Y=2でX=1である、データ処理装置。6. The data processing apparatus according to claim 5, wherein Y = 2 and X = 1. 複数個の演算論理装置オペレーションのうちのひとつを指定する第1のフィールドと、該第1のフィールドからは独立していて複数個のシフトオペレーションのうちのひとつを指定する第2のフィールドとを有するデータ処理命令語に応答してデータを処理する方法であって、
該複数個の演算論理オペレーションのうちどれが該第1のフィールドにより指定されるかにより決まる処理サイクル数で、該第1のフィールドにより指定された演算論理装置オペレーションを実行するステップと、
該複数個のシフトオペレーションのうちどれが該第2のフィールドにより指定されるかにより決まる処理サイクル数で、該第2のフィールドにより指定されたシフトオペレーションを実行するステップと、
次の処理命令語の実行を始める前に、該データ処理命令語の実行に許される処理サイクル数を、該第1のフィールドと該第2のフィールドの両方に依存して変えるステップと、を含む、データ処理方法。
A first field designating one of the plurality of arithmetic logic unit operations; and a second field designating one of the plurality of shift operations independent of the first field. A method of processing data in response to a data processing instruction,
Performing the arithmetic logic unit operation specified by the first field with a number of processing cycles determined by which of the plurality of arithmetic logic operations is specified by the first field;
Performing the shift operation specified by the second field with a number of processing cycles determined by which of the plurality of shift operations is specified by the second field;
Changing the number of processing cycles allowed to execute the data processing instruction depending on both the first field and the second field before starting execution of the next processing instruction. , Data processing method.
JP01830897A 1996-02-01 1997-01-31 Data processing apparatus and method Expired - Fee Related JP3619343B2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9602024A GB2309803B (en) 1996-02-01 1996-02-01 Processing cycle control in a data processing apparatus
GB96020243 1996-02-01

Publications (2)

Publication Number Publication Date
JPH09223009A JPH09223009A (en) 1997-08-26
JP3619343B2 true JP3619343B2 (en) 2005-02-09

Family

ID=10787933

Family Applications (1)

Application Number Title Priority Date Filing Date
JP01830897A Expired - Fee Related JP3619343B2 (en) 1996-02-01 1997-01-31 Data processing apparatus and method

Country Status (2)

Country Link
JP (1) JP3619343B2 (en)
GB (1) GB2309803B (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6862563B1 (en) 1998-10-14 2005-03-01 Arc International Method and apparatus for managing the configuration and functionality of a semiconductor design
AU4848100A (en) * 1999-05-13 2000-12-05 Arc International U.S. Holdings Inc. Method and apparatus for loose register encoding within a pipelined processor
AU2001243463A1 (en) 2000-03-10 2001-09-24 Arc International Plc Memory interface and method of interfacing between functional entities
US8127113B1 (en) 2006-12-01 2012-02-28 Synopsys, Inc. Generating hardware accelerators and processor offloads

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3036849C1 (en) * 1980-09-30 1981-11-26 Computer Gesellschaft Konstanz Mbh, 7750 Konstanz Circuit arrangement for controlling microinstructions with different execution times

Also Published As

Publication number Publication date
GB2309803B (en) 2000-01-26
GB2309803A (en) 1997-08-06
JPH09223009A (en) 1997-08-26
GB9602024D0 (en) 1996-04-03

Similar Documents

Publication Publication Date Title
US7366874B2 (en) Apparatus and method for dispatching very long instruction word having variable length
EP1629375B1 (en) Apparatus for instructions predication within a data processing system and method thereof
US4740893A (en) Method for reducing the time for switching between programs
US7127593B2 (en) Conditional execution with multiple destination stores
KR102413832B1 (en) vector multiply add instruction
KR100208889B1 (en) Parallel processing device amd parallel processing method
US20080082800A1 (en) Data processor for modifying and executing operation of instruction code
JP2006079652A (en) Data processing by multiple instruction sets
US6611909B1 (en) Method and apparatus for dynamically translating program instructions to microcode instructions
JPH06230969A (en) Processor
US7546442B1 (en) Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions
JPS62197830A (en) Data processing system
JPH0895804A (en) Central processor
US5761467A (en) System for committing execution results when branch conditions coincide with predetermined commit conditions specified in the instruction field
US5938759A (en) Processor instruction control mechanism capable of decoding register instructions and immediate instructions with simple configuration
JPH01137331A (en) Control word branching
EP3329363B1 (en) Vector arithmethic instruction
US20040255095A1 (en) Data access program instruction encoding
JP3619343B2 (en) Data processing apparatus and method
US4812970A (en) Microprogram control system
KR100188374B1 (en) Central processing unit and an arithmetic operation processing unit
JP7377208B2 (en) Data processing
JPS6125166B2 (en)
JP2006302324A (en) Data processor
JPH0876996A (en) Programmable controller

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041018

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: 20041105

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041112

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: 20081119

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20081119

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091119

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20091119

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20101119

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20111119

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20111119

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20121119

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20121119

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20131119

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees