JPH01307829A - Information processor - Google Patents
Information processorInfo
- Publication number
- JPH01307829A JPH01307829A JP63139864A JP13986488A JPH01307829A JP H01307829 A JPH01307829 A JP H01307829A JP 63139864 A JP63139864 A JP 63139864A JP 13986488 A JP13986488 A JP 13986488A JP H01307829 A JPH01307829 A JP H01307829A
- Authority
- JP
- Japan
- Prior art keywords
- register
- branch
- operand
- instruction
- data
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明は情報処理装置に関し、特に演算結果またはオペ
ランドのロードに応答して内容が変化するコンディショ
ンレジスタを備えて、引数のデータタイプを示すタグを
データ自身あるいはデータを示すポインタに付加し、そ
の付加されたタグフィールドの値に応じて処理ルーチン
を定める情報処理装置に関する。[Detailed Description of the Invention] [Field of Industrial Application] The present invention relates to an information processing device, and in particular includes a condition register whose contents change in response to an operation result or the loading of an operand, and a tag indicating the data type of an argument. The present invention relates to an information processing apparatus that adds a tag field to data itself or a pointer indicating the data, and determines a processing routine according to the value of the tag field added.
従来、この種の情報処理装置では、オペランドの、予め
定められたフィールドの値を比較命令で比較してその結
果で分岐するようなソフトウェア処理を行なっていた。Conventionally, this type of information processing apparatus has performed software processing in which the values of predetermined fields of operands are compared using a comparison instruction and branching is performed based on the result.
また、定められたフィールドの値により直接分岐するよ
うな専用命令を備えるものく情報処理学会研究報告CA
63−5 )、さらに、同様にフィールドの値により
マイクロ命令レベルで分岐するもの(情報処即学会第3
4回全国大会6P−5)がある。In addition, Information Processing Society of Japan Research Report CA has a dedicated instruction that branches directly depending on the value of a specified field.
63-5), and those that similarly branch at the microinstruction level depending on field values (Information Processing Soku Gakkai Vol. 3).
There are 4 national conventions (6P-5).
ソフトウェアの分野において汎関数という考え方がある
。従来の関数処理は、オペランドのデータタイプに依っ
て使用する関数が異なっていた。In the field of software, there is an idea called functional functions. In conventional function processing, different functions are used depending on the data type of the operand.
例えばFORTRANでは引数のデータタイプが整数、
浮動小数点数、良精度浮動小数点数の3種類とすると、
それに対応してABS関数でもIΔBS。For example, in FORTRAN, the data type of the argument is an integer,
Assuming there are three types: floating point numbers and high-precision floating point numbers,
Correspondingly, the ABS function is also IΔBS.
ABS、DABSというように関数名が異なっていた。The function names were different, such as ABS and DABS.
すなわち、関数処理の入口番地も異なっていてそのデー
タタイプ専用の処理を行なえば十分であった。この汎関
数の考え方は、引数のデータタイプが何であっても同じ
関数が使用できるということであり、汎関数の処理ルー
チンでは引数として渡されたデータのタイプを判定して
処理を分けなければならず、そのような引数にはデータ
タイプを判定するための情報が付加されている。このデ
ータタイプ情報を付加する方法にはいくつか存在するが
、その1つにデータ自身か、またはデータを指すポイン
タにタグというデータタイプを付加する方法がある。こ
のタグを付加する方法は、L I S Pの処理系では
良く使用され、第3図(a)に示すように、関数処理の
最初に付加された引数のタグを判定して引数のデータタ
イプ(第3図(b))に応じた処理ルーチンに分岐する
といった処理が必要になる。従来の情報処理装置におい
ては、ソフトウェアでこの処理をおこなっているが、タ
グ部以外のマスク処理、比較処理、分岐処理が何度も出
現して命令数も増加し効率がわるかった。情報処理学会
研究報告CA 63、−5に示された情報処理装置は、
タグをインデックスとして分岐する命令を備えてデータ
タイプの切分けには対応しているが、各処理ルーチンへ
分岐する際、さらにもう−度分岐命令が必要となる。こ
のように分岐命令の処理が連続することになり、特にパ
イプライン処理方式を採用した情報処理装置においては
分岐命令処理のオーバーヘッドが大きくスルーブツトが
低下する。情報処理学会筒34口金国大会6P−5に示
された情報処理装置ではマイクロ命令レベルで分岐する
ため分岐命令処理のオーバーヘッドはないが、組込み関
数以外のユーザ一定義関数はマイクロ命令では処理でき
ないという欠点がある。In other words, it was sufficient to have different entry addresses for function processing and to perform processing dedicated to that data type. The idea of this functional is that the same function can be used regardless of the data type of the argument, and the functional processing routine must separate processing by determining the type of data passed as an argument. First, information for determining the data type is attached to such arguments. There are several ways to add this data type information, one of which is to add a data type called a tag to the data itself or to a pointer pointing to the data. This method of adding tags is often used in LISP processing systems, and as shown in Figure 3 (a), the tag of the argument added at the beginning of function processing is determined and the data type of the argument is determined. Processing such as branching to a processing routine corresponding to (FIG. 3(b)) is required. In conventional information processing devices, this processing is performed by software, but mask processing, comparison processing, and branch processing other than the tag part appear many times, the number of instructions increases, and efficiency decreases. The information processing device shown in Information Processing Society of Japan Research Report CA 63,-5 is
Although it is possible to separate data types by providing an instruction to branch using a tag as an index, an additional branch instruction is required when branching to each processing routine. In this way, branch instructions are processed continuously, and the overhead of branch instruction processing is large, reducing throughput, especially in an information processing apparatus that employs a pipeline processing method. The information processing device shown in Information Processing Society of Japan's National Conference 6P-5 branches at the microinstruction level, so there is no branch instruction processing overhead, but it is said that user-defined functions other than built-in functions cannot be processed with microinstructions. There are drawbacks.
本発明の情報処理装置は、
コンディションレジスタに演算結果またはロードされる
オペランドの予め定められたタグフィールドの内容が格
納され、
コンディションレジスタへ格納されたデータに応じて分
岐方向を定める分岐判定手段とを有している。The information processing device of the present invention includes a branch determination means in which a calculation result or the content of a predetermined tag field of an operand to be loaded is stored in a condition register, and a branch direction is determined according to the data stored in the condition register. have.
演算結果またはロードされたオペランドの予め定められ
たタグフィールドの内容をコンディションレジスタに格
納し、そのデータに基づいて処理ルーチンを定めるので
、従来行なっていた、処理ルーチンへの分岐の際の、引
数に付加されているタグ部以外の情報のマスク処理、比
較処理、分岐処理が不要になる。The operation result or the content of the predetermined tag field of the loaded operand is stored in the condition register, and the processing routine is determined based on that data. Mask processing, comparison processing, and branch processing for information other than the added tag part are no longer necessary.
次に、本発明の実施例について図面を参照して説明する
。Next, embodiments of the present invention will be described with reference to the drawings.
第1図は本発明の情報処理装置一実施例の要部構成を示
すブロック図、第2図は汎関数のプログラムの一例を示
す図である。FIG. 1 is a block diagram showing a main part configuration of an embodiment of an information processing apparatus of the present invention, and FIG. 2 is a diagram showing an example of a functional program.
本実施例の情報処理装置は、命令制m装置1と記憶制御
装置2と演算器@3とを備えており、引数には、従来と
同様第3図に示すように、タグすなわちデータタイプ情
報が付加されている。The information processing device of this embodiment includes an instruction-based m device 1, a storage control device 2, and an arithmetic unit @3, and the arguments include tags, that is, data type information, as shown in FIG. is added.
命令制御装@1は、命令を記憶制御袋@2より読出して
解読し、必要ならばアドレス計算により論理アドレスを
求めて操作コード、オペランド、操作情報等を演算装置
3に転送する。演算装置3は、命令制御装@1から転送
された情報により演算を行ない各種レジスタやステータ
ス、または、記憶制御装置2を通して不図示の主記憶装
置の更新を行なう。演算装置3は、演算器37とコンデ
ィションレジスタ39と分岐判定回路42とを含んでい
る。演算器37は、演算またはオペランドのロードに際
して、演算結果またはロードされるオペランドの上位2
ビツトを他のキャリー出力等とともにコンディションレ
ジスタ39へ格納する。分岐判定回路42は、命令制御
装置1のデコード情報キュー19からデコード情報レジ
スタ31、レジスタ40.41を介して入力されるデコ
ード情報とコンディションレジスタ39が記憶している
データとを基にして分岐ルーチンを決定する。The instruction control unit @1 reads the instruction from the storage control bag @2, decodes it, calculates an address to obtain a logical address if necessary, and transfers the operation code, operand, operation information, etc. to the arithmetic unit 3. The arithmetic device 3 performs arithmetic operations based on the information transferred from the instruction control device @1, and updates various registers and statuses, or a main storage device (not shown) through the storage control device 2. The arithmetic unit 3 includes an arithmetic unit 37, a condition register 39, and a branch determination circuit 42. When performing an operation or loading an operand, the arithmetic unit 37 calculates the operation result or the upper two operands to be loaded.
The bit is stored in the condition register 39 along with other carry outputs, etc. The branch determination circuit 42 executes a branch routine based on the decode information input from the decode information queue 19 of the instruction control device 1 via the decode information register 31 and registers 40.41 and the data stored in the condition register 39. Determine.
次に、本実施例の動作について説明する。Next, the operation of this embodiment will be explained.
命令制御装置1において、命令レジスタ11のビットフ
ィールドにより汎用レジスタファイル13からデータを
読出す。この時、命令レジスタ11の内容がRXタイプ
の命令であれば、オペランドの実行アドレスの生成のた
め汎用レジスタファイル13からインデックス値および
ベース値が読出される。このインデックス値とベース値
は、命令で直接指定されるディスプレイスメント値とと
もに、それぞれインデックスレジスタ15、ベースレジ
スタ16、ディスプレイスメントレジスタ14に設定さ
机る。そして、これら3つの値をもとにしてアドレス加
算器17がオペランドアドレスを生成し、記憶制御装置
2へ転送する。このオペランドアドレスは、レジスタ2
1を介してアドレス変換部22へ送られてアドレス変換
機構221によりアドレス変換される。さらに、アドレ
スアレイ222から読出されるディレクトリ情報ととも
に、レジスタ23を介してデータアレイ24へ送られて
データアレイ24の読出しアドレスとなってデータアレ
イ24からオペランドが読出され、そのオペランドは演
II装置3に転送される。一方、RXタイプ命令の第1
オペランドと、RRタイプ命令の場合の第1、第2オペ
ランドが格納されているレジスタのレジスタ番号は、命
令制御袋@1のレジスタ18とデコード情報キュー19
を経て、演算装置3へ転送される。オペランドおよびレ
ジスタ番号を受けた演算装置3は、演算に先立って、命
令制御装置1から送られたレジスタ番号をもとに、汎用
レジスタファイル32からオペランドを読出す。読出さ
れたオペランドのうち一方は第1オペランドとして演算
レジスタ35に格納され、もう一方のオペランドは記憶
制御装置2から直接、またデータバッファ34を介して
転送されたオペランドとともにセレクタ33へ入力され
た選択され、第2オペランドとして演算レジスタ36に
格納される。演算レジスタ35゜36に格納されたオペ
ランドは演算器37により所望の演算が行なわれ、その
演算結果が結果レジスタ38を経て汎用レジスタ13.
32に格納される。さらに、この演算結果はコンディシ
ョンレジスタ3つへも反映される。また、命令がロード
命令であれば、オペランドは記憶制御装置2から読出さ
れ、そのオペランドは′e4算器37、結果レジスタ3
8を経て、同様に汎用レジスタ13.32に格納され、
コンディションレジスタ39も変化する。この時、演算
器37の出力の上位2ビツトが他のキャリー出力等とと
もにコンディションレジスタ39に格納され、デコード
情報レジスタ31からレジスタ40.41を経て送られ
るデコード情報とともに分岐判定回路42へ送られて、
そこでそれらの情報をもとに分岐方向の判定が行なわれ
る。In the instruction control device 1, data is read from the general-purpose register file 13 using the bit field of the instruction register 11. At this time, if the contents of the instruction register 11 are RX type instructions, the index value and base value are read from the general-purpose register file 13 in order to generate the execution address of the operand. The index value and base value are set in the index register 15, base register 16, and displacement register 14, respectively, along with the displacement value directly specified by the instruction. Then, the address adder 17 generates an operand address based on these three values and transfers it to the storage control device 2. This operand address is register 2
1 to the address conversion unit 22, and the address is converted by the address conversion mechanism 221. Further, along with the directory information read from the address array 222, an operand is read from the data array 24 by being sent to the data array 24 via the register 23 and serving as a read address of the data array 24. will be forwarded to. On the other hand, the first RX type instruction
The register numbers of the registers storing the operands and the first and second operands in the case of RR type instructions are the register 18 of the instruction control bag @1 and the decode information queue 19.
The data is then transferred to the arithmetic unit 3. The arithmetic device 3 that has received the operand and register number reads the operand from the general-purpose register file 32 based on the register number sent from the instruction control device 1 prior to the operation. One of the read operands is stored in the calculation register 35 as the first operand, and the other operand is the selection input to the selector 33 together with the operand transferred directly from the storage control device 2 or via the data buffer 34. and stored in the arithmetic register 36 as the second operand. A desired operation is performed on the operands stored in the operation registers 35 and 36 by the operation unit 37, and the result of the operation is sent to the general-purpose register 13.
32. Furthermore, this calculation result is also reflected in three condition registers. Further, if the instruction is a load instruction, the operand is read from the storage controller 2, and the operand is sent to the 'e4 calculator 37 and the result register 3.
8 and is similarly stored in general-purpose register 13.32,
Condition register 39 also changes. At this time, the upper two bits of the output of the arithmetic unit 37 are stored in the condition register 39 along with other carry outputs, etc., and are sent to the branch judgment circuit 42 along with the decode information sent from the decode information register 31 via registers 40 and 41. ,
Then, the branch direction is determined based on this information.
なお、演算器37の出力の上位2ビツトは前述したよう
にタグの一部を示しているため、この2ビツトのデータ
により分岐方向を定めるということは、従来と同様にタ
グに応じた処理ルーチンへ分岐することになる。Note that the upper two bits of the output of the arithmetic unit 37 indicate a part of the tag as described above, so determining the branch direction based on these two bits of data means that the processing routine according to the tag is used as in the past. It will branch to.
次に、第2図に示すプログラムを参照して、分岐方向の
判定処理を説明する。Next, the branch direction determination process will be explained with reference to the program shown in FIG.
$ADD1番地は汎関数の入口アドレスであり、ロード
命令により’ ARGUHENT”で指定される引数を
ROにロードする。このとき引数の上位2ビツトがコン
ディションレジスタ39に格納される。Address $ADD1 is the entry address of the functional, and the argument specified by 'ARGUHENT' is loaded into RO by the load instruction.At this time, the upper two bits of the argument are stored in the condition register 39.
次のBRAO命令はコンディションレジスタ39の2ビ
ツトの値が“00”のとき分岐する分岐命令である。2
ビツトの値が“00”であれば引数が整数であると判断
して整数処理ルーチン($INTEGER)に分岐する
。同様に、BRA1命令はコンディションレジスタ39
の2ビツト値が“01”のとき分岐する分岐命令で、2
ビツトの値がパ01”であれば引数が浮動小数点数であ
ると判断して浮動小数点数処理ルーチン($ FLOA
T )に分岐する。BRA2命令も同様に、2ビツトの
値が10″のとき$ DELOATに分岐する。したが
って、引数をレジスタにロードした後すぐに分岐命令で
各データタイプごとの処理ルーチンに分岐できることに
なる。The next BRAO instruction is a branch instruction that branches when the value of 2 bits in the condition register 39 is "00". 2
If the bit value is "00", it is determined that the argument is an integer, and the program branches to an integer processing routine ($INTEGER). Similarly, the BRA1 instruction
A branch instruction that branches when the 2-bit value of
If the value of the bit is "01", it is determined that the argument is a floating point number, and the floating point number processing routine ($ FLOA
Branch to T). Similarly, the BRA2 instruction branches to $DELOAT when the value of 2 bits is 10''. Therefore, immediately after loading the argument into the register, the branch instruction can be used to branch to the processing routine for each data type.
なお、本実施例では演算器37の出力のうち上位2ビツ
トをコンディションレジスタ3つへ格納したが、コンデ
ィションレジスタ39に格納されるフィールドはどのビ
ット位置から何ビットでも良いし長さも2ビツトに限ら
ない。さらに、そのビット長に応じて分岐ルーチンを増
設することもできる。Note that in this embodiment, the upper two bits of the output of the arithmetic unit 37 are stored in three condition registers, but the field stored in the condition register 39 can be any number of bits from any bit position, and the length is limited to 2 bits. do not have. Furthermore, branch routines can be added depending on the bit length.
以上説明したように本発明は、演算結果またはロードさ
れるオペランドの予め定められたタグフィールドをコン
ディションレジスタに格納し、その結果に基づいて分岐
ルーチンを定めることにより、演算終了後またはオペラ
ンドのロード後、そのデータタイプに応じた処理ルーチ
ンへ分岐することができ、特に、LISP等のように汎
関数の出現頻度の高いプログラムにおいては引数処理の
オーバーヘッドを低減するという効果がある。As explained above, the present invention stores a predetermined tag field of an operation result or an operand to be loaded in a condition register, and determines a branch routine based on the result. , it is possible to branch to a processing routine according to the data type, which is particularly effective in reducing the overhead of argument processing in programs such as LISP where functionals appear frequently.
第1図は本発明の情報処理装置の一実施例の要部構成を
示すブロック図、第2図は汎関数のプロダラムの一例を
示す図、第3図はタグによるデータタイプの指定の一例
を示す図である。
1・・・命令制御装置、 2・・・記憶制御装置、3
・・・演算装置、 11・・・命令レジスタ、1
2・・・デコーダ、
13.32・・・汎用レジスタファイル、14・・・デ
ィスプレイスメントレジスタ、15・・・インデックス
レジスタ、
16・・・ペースレジスタ、17・・・アドレス加算器
、18.21.23,40.41・・・レジスタ、19
・・・デコード情報キュー、
22・・・アドレス変換部、24・・・データアレイ、
31・・・デコード情報レジスタ、
33・・・セレクタ、 34・・・データバッファ
、35.36・・・演算レジスタ、
37・・・演算器、 38・・・結果レジスタ、
39・・・コンディションレジスタ、
42・・・分岐判定回路。
$ADD1 : LD RO,ARGIJME
NTBRAO$ t NTEGER
BRAI $ FLOAT
BRA 2 $ DFLOAT
第2図
10−DFLOATFIG. 1 is a block diagram showing the main part configuration of an embodiment of the information processing apparatus of the present invention, FIG. 2 is a diagram showing an example of a functional program, and FIG. 3 is an example of specifying data type by tag. FIG. 1... Command control device, 2... Storage control device, 3
...Arithmetic unit, 11...Instruction register, 1
2... Decoder, 13.32... General purpose register file, 14... Displacement register, 15... Index register, 16... Pace register, 17... Address adder, 18.21. 23,40.41...Register, 19
. . . decode information queue, 22 . . . address conversion unit, 24 . . . data array,
31... Decode information register, 33... Selector, 34... Data buffer, 35.36... Arithmetic register, 37... Arithmetic unit, 38... Result register,
39...Condition register, 42...Branch judgment circuit. $ADD1: LD RO, ARGIJME
NTBRAO$ t NTEGER BRAI $ FLOAT BRA 2 $ DFLOAT Figure 2 10-DFLOAT
Claims (1)
が変化するコンディションレジスタを備えて、引数のデ
ータタイプを示すタグをデータ自身あるいはデータを示
すポインタに付加し、その付加されたタグフィールドの
値に応じて処理ルーチンを定める情報処理装置において
、 前記コンディションレジスタに演算結果またはロードさ
れるオペランドの予め定められたタグフィールドの内容
が格納され、 該コンディションレジスタに格納されたタグの内容に応
じて分岐方向を定める分岐判定手段とを有することを特
徴とする情報処理装置。[Claims] 1. A condition register whose contents change in response to the load of an operation result or an operand is provided, a tag indicating the data type of the argument is added to the data itself or a pointer indicating the data, and the added tag is provided. In an information processing device that determines a processing routine according to a value of a tag field, the condition register stores an operation result or the contents of a predetermined tag field of an operand to be loaded, and 1. An information processing device comprising: a branch determination unit that determines a branch direction according to content.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP63139864A JPH01307829A (en) | 1988-06-06 | 1988-06-06 | Information processor |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP63139864A JPH01307829A (en) | 1988-06-06 | 1988-06-06 | Information processor |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH01307829A true JPH01307829A (en) | 1989-12-12 |
Family
ID=15255324
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP63139864A Pending JPH01307829A (en) | 1988-06-06 | 1988-06-06 | Information processor |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH01307829A (en) |
-
1988
- 1988-06-06 JP JP63139864A patent/JPH01307829A/en active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5051896A (en) | Apparatus and method for nullifying delayed slot instructions in a pipelined computer system | |
| US5075840A (en) | Tightly coupled multiprocessor instruction synchronization | |
| US5812868A (en) | Method and apparatus for selecting a register file in a data processing system | |
| JP3983857B2 (en) | Single instruction multiple data processing using multiple banks of vector registers | |
| US6233670B1 (en) | Superscalar processor with direct result bypass between execution units having comparators in execution units for comparing operand and result addresses and activating result bypassing | |
| US4745547A (en) | Vector processing | |
| US4679140A (en) | Data processor with control of the significant bit lengths of general purpose registers | |
| US20010021970A1 (en) | Data processor | |
| EP0211152A2 (en) | Program switching with vector registers | |
| JPS6313215B2 (en) | ||
| US4954947A (en) | Instruction processor for processing branch instruction at high speed | |
| EP0378415A2 (en) | Multiple instruction dispatch mechanism | |
| US6026486A (en) | General purpose processor having a variable bitwidth | |
| JPH09152973A (en) | Method and device for support of speculative execution of count / link register change instruction | |
| KR100974401B1 (en) | Method and apparatus for swapping the contents of an address register | |
| JPH0461390B2 (en) | ||
| US6904515B1 (en) | Multi-instruction set flag preservation apparatus and method | |
| JPH01307829A (en) | Information processor | |
| JPH01307831A (en) | Information processor | |
| JPS6314239A (en) | Instruction generating unit for computer system | |
| JPH01307830A (en) | Information processor | |
| JPH07110769A (en) | Vliw type computer | |
| JPH04316127A (en) | Information processor | |
| JP2920968B2 (en) | Instruction processing order control method | |
| JPS62150435A (en) | Data processing system |