JPH1040106A - Function type language processor - Google Patents

Function type language processor

Info

Publication number
JPH1040106A
JPH1040106A JP8209113A JP20911396A JPH1040106A JP H1040106 A JPH1040106 A JP H1040106A JP 8209113 A JP8209113 A JP 8209113A JP 20911396 A JP20911396 A JP 20911396A JP H1040106 A JPH1040106 A JP H1040106A
Authority
JP
Japan
Prior art keywords
instruction
function
cache
data
argument
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
Application number
JP8209113A
Other languages
Japanese (ja)
Inventor
Ryuji Kokubu
竜治 國分
Original Assignee
Nec Corp
日本電気株式会社
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 Nec Corp, 日本電気株式会社 filed Critical Nec Corp
Priority to JP8209113A priority Critical patent/JPH1040106A/en
Publication of JPH1040106A publication Critical patent/JPH1040106A/en
Application status is Pending legal-status Critical

Links

Abstract

PROBLEM TO BE SOLVED: To attain a processing in a function, and to attain an entire language processing at a high speed by preliminarily pre-loading data to be referred to by the function in a cache after the function is called. SOLUTION: This device comprises a microprocessor 1-1, cache 1-2, and memory 1-3, and they are connected through a system bus 1-4. The microprocessor 1-1 interprets and executes a pre-load instruction. The pre-load instruction is inserted before a jump instruction or into the delay slot of the jump instruction so that an argument when a function is called can be analyzed in compiling, and data indicated by a pointer can be pre-loaded in the case of the pointer. The memory 1-3 stores an instruction code to be executed by the microprocessor 1-1 and data to be referred to. Data in the memory 1-3 can be loaded through the system bus 1-4 to the cache 1-2.

Description

【発明の詳細な説明】 DETAILED DESCRIPTION OF THE INVENTION

【0001】 [0001]

【発明の属する技術分野】本発明は、関数型の言語の処理を行う処理装置に関し、特に関数呼び出し時等の処理の高速化を図る処理方式に関する。 The present invention relates to relates to a processing apparatus for processing functional language, related processing method particularly increase the speed of processing when calling a function and the like.

【0002】 [0002]

【従来の技術】一般に関数型言語では、それぞれ異なった機能を持った関数が別の関数を呼び出すことによって、複雑な処理を行っていく。 BACKGROUND OF THE INVENTION In general, functional languages, by that function with different functions each calls another function, will perform the complex processing. このため、処理を高速化するには、関数の呼び出しと呼び出し後の処理を高速に行うことが大きく影響する。 Therefore, in order to speed up the process, it has a great influence for performing processing after the call and calling function at high speed.

【0003】処理の高速化の手段として、例えばパイプラインを用いた方式や、メインメモリ(主記憶)よりも高速なメモリチップを用いたキャッシュメモリを備えた設計方式がマイクロプロセッサ等の命令処理装置に採用されている。 As a means of speeding up the process, for example, method and using the pipeline, a main memory (main memory) instruction processor design system having a cache memory such as a microprocessor which uses a high-speed memory chips than It has been adopted in.

【0004】しかしながら、上記のような設計方式のマイクロプロセッサでは、関数の呼び出し時、及び復帰時において、例えば分岐命令実行により、パイプラインが乱れ、その結果、処理速度が低下するという問題があった。 However, in the microprocessor design system as described above, when the function call, and at the time of return, for example, by a branch instruction execution pipeline is disturbed, resulting in the processing speed is lowered .

【0005】そこで、上記問題を解決するために、例えば特開平2−157939号公報には、分岐命令に先立って第1の命令を実行させることにより、複数のプリフェッチバッファのうち、通常の先取り処理では用いられないプリフェッチバッファを1つ指定し、そこに予め分岐先の命令をプリフェッチしておき、そして分岐命令として第2の命令を用いることにより、既に命令が先取りされているプリフェッチバッファを指定して、直ちに分岐先の命令を命令読解部に送出し、パイプラインの流れが分岐命令によって乱されるのを防ぐようにした方法が提案されている。 [0005] Therefore, in order to solve the above problem, Japanese Unexamined Patent Publication No. 2-157939, by executing the first instruction prior to the branch instruction, among a plurality of prefetch buffers, normal prefetch processing in use is not specified one of the prefetch buffer, which leave prefetch advance branch target instructions into and by using a second instruction as a branch instruction, already specified the prefetch buffer being prefetched instruction Te, immediately sends the branch target instruction to the instruction reading section, how the flow of pipeline so as to avoid being disturbed by the branch instruction has been proposed. すなわち、上記特開平2−15793 That is, the Japanese Patent 2-15793
9号公報に提案される命令処理方式は、キャッシュのみの改良を行うために、プリフェッチバッファを複数設け、計算機命令に従って分岐先の命令を指定されたプリフェッチバッファに格納していき、分岐命令実行時には次に読み出すプリフェッチバッファを指定することにより、連続した処理が行えるようにしたものである。 Instruction processing scheme proposed in 9 discloses, in order to perform the improvement of the cache only, a plurality of prefetch buffers, computer will be stored in the prefetch buffer specified branch destination instruction according to the instruction, when a branch instruction is executed by specifying the prefetch buffer read next, it is obtained so as to perform a continuous process.

【0006】また、例えば特開平1−118928号公報には、命令レジスタの前段に、先取りされた命令を保持する多段のプリフェッチレジスタを2つ設け、プリフェッチレジスタのいずれかに分岐命令が保持された場合に、次段以降のレジスタ、即ち命令レジスタまたはプリフェッチレジスタ並びに命令レジスタに保持されている命令をもとに命令分岐の可否を判断し、分岐可であれば次に先取りする命令のアドレスを切り替えて命令先取りを行い、先取りした命令をプリフェッチレジスタまたは命令レジスタの1つに選択的に設定することにより、パイプラインの流れが分岐命令によって乱されることを簡単に防止する命令先取り制御方式が提案されている。 Further, in the, for example, JP-A No. 1-118928, in front of the instruction register, two prefetch register of the multi-stage that holds prefetched instructions provided, the branch instruction in one of the prefetch registers are held when switching the following stages register, i.e. determines an instruction register or prefetch registers and instruction branches on the basis of the instruction held in the instruction register whether the address of the instruction to be next prefetch if branching possible performs instruction prefetch Te, by selectively setting the prefetched instructions in one of the prefetch registers or the instruction register, the instruction prefetch control method the flow of the pipeline to prevent easy to be disturbed by the branch instruction is proposed It is.

【0007】上記特開平1−118928号公報に記載されているように、分岐予測とキャッシュへのプリフェッチにより、分岐命令実行前に分岐の可否を判断し、分岐可の場合には、分岐命令をプリフェッチさせるようにしている。 [0007] As described in JP-A Hei 1-118928, by prefetching the branch prediction and caches, to determine whether the branch before execution branch instruction, in the case of branching possible in the branch instruction and so as to prefetch.

【0008】上記した従来の命令処理方式は、現在多くのマイクロプロセッサにおいて広く採用されている。 [0008] conventional instruction processing method described above is widely adopted in many current microprocessors.

【0009】しかしながら、何れの方法も、関数の呼び出しと復帰の高速化にはなるが、関数呼び出し後の高速化にはならない。 [0009] However, none of the way, becomes the speed of return to the call of the function, not a high-speed after the function call.

【0010】これらに対して、例えば文献(「MIPS [0010] For these, for example, literature ( "MIPS
IV InstructionSet,Revisi IV InstructionSet, Revisi
on3.0」、第A−115〜A−117頁、1994 on3.0 ", the A-115~A-117 pp., 1994
年、MIPS Technologies,Inc. Year, MIPS Technologies, Inc. 発行)には、プリフェッチ命令が示されている。 The issue), the prefetch instruction is shown.

【0011】図10は、このプリフェッチ命令を示す図である。 [0011] FIG. 10 is a diagram showing the prefetch instruction. 図中、第26〜31ビットのビットフィールドである「PREF」は、プリフェッチ命令を示すビットパターン(オペコード)である。 In the figure, a bit field of the 26 to 31 bit "PREF" is a bit pattern showing a prefetch command (opcode). また、第21〜25ビットの「base」は、プリフェッチを行うベースアドレスを示す一般レジスタのレジスタ番号が格納される。 Also, "base" of the 21 to 25 bits, the register number of the general register that indicates the base address to be prefetched are stored.
そして、このベースアドレスと、第0〜15の16ビットのオフセット(offset)と組み合わせて、プリフェッチを行うアドレスを生成する。 Then, the the base address, in combination with a 0-15 16-bit offset (offset), and generates an address to be prefetched. また第16〜20 The first 16 to 20
ビットの「hint」は、プリフェッチの動作モードを示すものである。 "Hint" bits are those indicating the operating mode of the prefetch.

【0012】このプリフェッチ命令を実行することにより、指定した空間のデータをキャッシュにプリロードすることができる。 [0012] By executing the prefetch instruction, it is possible to preload the data for a specified space in the cache.

【0013】図11に、従来のマイクロプロセッサにおける、関数の呼び出し処理の命令列の例を示す。 [0013] Figure 11, in the conventional microprocessor, an example of the instruction sequence of call processing functions.

【0014】これは、第1引数に文字列へのポインタを格納し関数を呼び出す場合である。 [0014] This is the case to call a function to store a pointer to a string in the first argument.

【0015】図11において、11−1の「lui」命令は、第1引数を格納するa0レジスタの上位16ビットをセットするロード命令であり、11−3の「add [0015] In FIG. 11, the "lui" instruction 11-1, a load instruction that sets the upper 16 bits of a0 register for storing a first argument, 11-3 "add
iu」命令は、ジャンプ命令11−2のディレイスロットにある第1引数を格納するa0レジスタの下位16ビットをセットする加算命令である。 iu "instruction is an addition instruction that sets the lower 16 bits of a0 register for storing a first argument in the delay slot of a jump instruction 11-2. 11−1及び11− 11-1 and 11-
3によって、第1引数を格納するa0レジスタに文字列へのポインタがセットされる。 By 3, a pointer to a character string is set in the a0 register for storing a first argument.

【0016】11−2の「jal」命令は、オフセットアドレスZへのジャンプ命令である。 [0016] "jal" instruction of 11-2, it is a jump instruction to the offset address Z. これにより関数を呼び出すことができる。 This makes it possible to call the function.

【0017】図7は、呼び出された側の関数の処理の命令列の例を示す。 [0017] FIG. 7 shows an example of the instruction sequence of processing of the function of the called side. これは、第1引数で渡された文字列を1文字ずつ読み込み、文字列の終わりを示す「0」であるかどうかをみる命令列である。 It reads a string that has been passed in the first argument one character at a time, is an instruction column to see whether it is indicating the end of the character string "0".

【0018】7−1の「lbu」命令は、第1引数の指すアドレスから1バイトリードするロード命令である。 [0018] "lbu" instruction of 7-1, is a load instruction to 1 byte read from the address pointed to by the first argument.

【0019】7−2の「beq」命令は、ロード命令7 [0019] "beq" instruction of 7-2, the load instruction 7
−1で読み込んだデータが「0」であるか否かを判定し、「0」ならアドレスWに分岐する条件分岐命令である。 Read data at -1, it is determined whether or not it is "0", is a conditional branch instruction for branching to address W if "0".

【0020】図12は、図7に示す命令列を実行した時のパイプラインのステージの移動を示す図である。 [0020] FIG. 12 is a diagram illustrating the movement of the pipeline stages when executing the instruction sequence shown in FIG. パイプラインステージは、IF,ID,IS,EX,WBの各ステージからなる。 Pipeline stage consists of IF, ID, IS, EX, each stage of the WB. IFは命令のフェッチを行うステージ、IDは命令のデコードを行うステージ、ISは命令を発効するテージ、EXは、命令を実行するステージ、WBは結果をキャッシュに書き戻すステージを示している。 IF the stage for fetching instructions, stage ID is for decoding the instruction, stage IS is to take effect instructions, EX is a stage for executing an instruction, WB denotes the stage to write back the result to the cache.

【0021】図12に示すように、必要なデータがキャッシュに無いため(ミスヒット)に、ロード命令(lb [0021] As shown in FIG. 12, for the required data is not in the cache (a miss hit), the load instruction (lb
u)の直後にノーオペレーション(NOP)が挿入され、条件分岐命令(beq)の実行が遅れている。 Is no-operation (NOP) is inserted immediately after the u), the execution of the conditional branch instruction (beq) is delayed.

【0022】 [0022]

【発明が解決しようとする課題】このように、上記従来の技術においては、プリフェッチバッファの複数化や、 BRIEF Problem to be Solved] Thus, the above conventional art, and a plurality of prefetch buffers,
分岐予測によるプリフェッチによって関数の呼び出し自体は高速化されているが、関数の呼び出し後に、呼び出された関数が参照するデータがキャッシュ上にないため、パイプラインに乱れが生じ、その結果処理に遅延が生じる、という問題点を有している。 Although call itself functions by prefetching the branch prediction is faster, after calling function, for data called function refers is not in the cache, it is disturbed pipeline delay as a result processing occurs, there is a problem that.

【0023】その理由は、従来、処理の高速化を、分岐処理の分岐先の命令コードのプリフェッチのみによって行っている、ことによる。 [0023] The reason is that the conventional, high-speed processing is performed only by the prefetch of the branch target instruction code of the branch processing, due to.

【0024】これは、関数呼び出し時の引数として、構造体または文字列へのポインタが指定されることが多く、関数が参照するメモリ空間は、殆どの場合、スタックと、この引数によって渡されたポインタが指す空間とされるからである。 [0024] This, as an argument of a function call, often pointer to a structure or string is specified, the memory space that functions to see, in most cases, and the stack was passed by this argument This is because is the space in which the pointer points.

【0025】そして、関数が実際に引数で指定された構造体または文字列にアクセスした時に、キャッシュミスが発生するのである。 [0025] Then, when the function is actually access to the specified structure or string in the argument, is the cache miss occurs.

【0026】したがって、本発明は、上記事情に鑑みてなされたものであって、その目的は、関数の呼び出し後に、関数が参照するデータを予めキャッシュにプリロードすることにより、関数内の処理を高速化し、これにより言語処理全体を高速化する関数型言語処理装置を提供することにある。 [0026] Accordingly, the present invention was made in view of the above circumstances, high-speed and its object is after calling function, by preloading in advance cache data function references, the processing of the function However, thereby to provide a functional language processor to speed up the entire language processing.

【0027】 [0027]

【課題を解決するための手段】前記目的を達成するため、本発明の関数型言語処理装置は、キャッシュへのプリフェッチを行う命令を有し、関数呼び出し時の引数の幾つかを一般レジスタに格納し関数を呼び出す処理装置において、関数の呼び出し時の引数として与えられた、 Means for Solving the Problems] To achieve the above object, functional language processing apparatus of the present invention is stored, comprising instructions for performing a prefetch of the cache, the number of arguments in a function call to the general register in the processing apparatus for calling was function, given as arguments when the function call,
メモリ空間へのポインタを格納した一般レジスタの値の指すメモリ空間のデータを、関数呼び出し時にキャッシュにプリロードする命令を実行させる手段を備えたことを特徴とする。 The data memory space indicated by the value of the general register which stores a pointer to the memory space, characterized by comprising means for executing instructions to preload the cache when a function call.

【0028】また、本発明の言語処理方式は、キャッシュメモリへのプリフェッチを行う命令を命令セットとして有する演算処理装置で実行される関数呼び出し命令の処理方式において、関数の呼び出しにおける引数として、メモリ空間へのポインタが指定されている場合、前記ポインタが指すメモリ空間のデータを、関数呼び出し時に、前記キャッシュメモリにプリロードするように、 Further, the language processing method of the present invention is the processing method of a function call instruction executed by the arithmetic processing unit having an instruction prefetching into the cache memory as instruction set, as an argument in the function call, the memory space If the pointer is specified to the data of the memory space in which the pointer points, at the time of a function call, so as to preload the cache memory,
プリロード命令を生成して、これを関数呼び出し命令列内に挿入し、命令実行時において、呼び出された関数側で前記引数のポインタの指すデータを参照する時に、前記データが前記キャッシュメモリに格納されている、ようにすることを特徴とする。 Generates a preload instruction, and insert it in the function call instruction in the sequence, at the time of instruction execution, when referring to data pointed to the argument called subroutine, the data is stored in the cache memory and which, as characterized by the.

【0029】 [0029]

【発明の実施の形態】本発明の好ましい実施の形態を以下に説明する。 DESCRIPTION OF THE PREFERRED EMBODIMENTS The preferred embodiments of the present invention will be described below. 本発明は、その好ましい実施の形態において、プリロード命令により明示的に指定された空間のデータをプリロードする手段を有するマイクロプロセッサ(図1の1−1)において、コンパイラが、関数を呼び出すためのジャンプ命令実行時に、引数であるポインタで指定されたデータをプリロードするためにプリロード命令を実行するようにコードを生成するようにしたものである。 The invention, in its preferred embodiment, in the microprocessor having means for preloading the data explicitly specified space by the preload instruction (1-1 in FIG. 1), the compiler, jump to call the function when the instruction is executed, in which so as to generate the code to perform the preload instruction to preload the data specified by the pointer is an argument.

【0030】このように、本発明の実施の形態においては、関数型言語で記述されたソースプログラムをコンパイラがコンパイルする際に、関数の呼び出し時の引数を解析し、ポインタならばそのポインタの指すデータをプリロードするように、プリロード命令をジャンプ命令前もしくはジャンプ命令のディレイスロットに挿入し、関数呼び出し前に、マイクロプロセッサがメモリ上のデータをプリロードすることにより、関数呼び出し後の遅延の発生をなくし、これにより言語処理全体の高速化を実現する。 [0030] Thus, in the embodiment of the present invention, a source program written in a functional language when the compiler compiles, analyzes the argument when calling the function, refers if the pointer of the pointer to preload the data, inserting the preload instruction delay slot of a jump instruction before or jump instruction, before the function call, by the microprocessor preloading the data in the memory, eliminating the occurrence of delay after the function call , thereby to realize high speed of the entire language processing.

【0031】 [0031]

【実施例】上記した本発明の実施の形態をさらに詳細に説明すべく、本発明の実施例について図面を参照して以下に説明する。 EXAMPLES In order to explain the embodiment in more detail of the present invention described above will be described below with reference to the accompanying drawings embodiments of the present invention.

【0032】図1は、本発明を適用した関数型言語処理装置の実施例に係るシステム構成を示すブロック図である。 [0032] Figure 1 is a block diagram showing a system configuration according to the embodiment of the applied functional language processing apparatus of the present invention.

【0033】図1を参照して、本実施例は、マイクロプロセッサ1−1及びキャッシュ1−2とメモリ1−3とからなり、システムバス1−4によって接続されている。 [0033] Referring to FIG. 1, the present embodiment is made of a microprocessor 1-1 and cache 1-2 and memory 1-3, which are connected by a system bus 1-4.

【0034】マイクロプロセッサ1−1は、上記したプリロード命令(すなわちコンパイル時に、関数の呼び出し時の引数を解析し、ポインタならばそのポインタの指すデータをプリロードするようにジャンプ命令前もしくはジャンプ命令のディレイスロットに挿入されるプリロード命令)を解釈、実行する手段を有する。 [0034] Microprocessor 1-1, preload instruction described above (i.e. at compile time to analyze the argument when calling the function, the delay of the jump instruction before or jump instruction to preload the data pointed to the pointer if the pointer interpreting preload instruction) to be inserted into the slot, having means for executing.

【0035】メモリ1−3は、マイクロプロセッサ1− [0035] memory 1-3, microprocessor 1
1が実行する命令コードと参照するデータとが記憶格納されている。 A data referring the instruction code 1 executes are stored stored.

【0036】プリロード命令を実行することにより、メモリ1−3にあるデータをシステムバス1−4を介してキャッシュ1−2にロードすることができる。 [0036] By executing the preload instruction, it is possible to load the data in the memory 1-3 to the cache 1-2 via the system bus 1-4.

【0037】図2は、本発明の一実施例として、マイクロプロセッサ1の一般レジスタの具体例を示す。 [0037] Figure 2 is an embodiment of the present invention, a specific example of the general registers of the microprocessor 1.

【0038】図2を参照して、レジスタ番号4から7のレジスタa0〜a3は、引数の最初の4ワードの受け渡しに用いられ、関数呼び出し時には、レジスタa0(レジスタ番号4)、a1(レジスタ番号5)、a2(レジスタ番号6)、a3(レジスタ番号7)にそれぞれ第1、第2、第3、第4引数が格納されている。 [0038] With reference to FIG. 2, the register a0~a3 from register number 4 7 is used to pass the first four words of the argument, the function call, register a0 (register number 4), a1 (register number 5), a2 (register number 6), a3 (first, respectively the register number 7), second, third, fourth argument is stored.

【0039】図3は、マイクロプロセッサ1のパイプラインのステージの例を示す。 [0039] Figure 3 shows an example of pipeline stages of the microprocessor 1. 図3において、3−1は、 3, 3-1,
命令のフェッチを行うIFステージ、3−2は、命令のデコードを行うIDステージ、3−3は、命令を発効するISステージ、3−4、3−5、3−6は、命令を実行するEXステージ、3−7は、結果をキャッシュに書き戻すWBステージである。 IF stage for fetching instructions, is 3-2, ID stage for decoding the instruction, is 3-3, IS stage into effect instructions, 3-4,3-5,3-6 executes instructions EX stage, 3-7 is a WB stage to write back the results to the cache.

【0040】図4は、関数呼び出し処理のソースプログラムの一例を示す。 [0040] Figure 4 shows an example of a source program of the function call processing. これは、C言語において、文字列を表示するprintf関数を呼び出した場合である。 This is the case in C language, calling the printf function that displays the character string. この関数は、引数として文字列(“Hello World”)を持つ。 This function, with a string ( "Hello World") as an argument.

【0041】このとき、図5に示すように、一般レジスタa0には第1引数で示されたメモリ上にある文字列へのポインタが格納される。 [0041] At this time, as shown in FIG. 5, in general register a0 a pointer to a string in the memory indicated by the first argument is stored.

【0042】図6は、図4に示したC言語をコンパイラでコンパイルした結果生成されたアセンブラ命令列の一例を示す。 [0042] Figure 6 shows an example of an assembler instruction sequence generated as a result of compiling the C language compiler shown in FIG.

【0043】図6において、6−1の「lui」命令は、第1引数を格納するa0レジスタの上位16ビットをセットするロード命令であり、6−2の「addi [0043] In FIG. 6, "lui" instruction 6-1 is a load instruction which sets the upper 16 bits of a0 register for storing a first argument, 6-2 "addi
u」命令は、第1引数を格納するa0レジスタの下位1 u "instruction, the lower a0 register for storing a first argument 1
6ビットをセットする加算命令である。 6-bit is an addition instruction for setting. 命令6−1及び6−2によって第1引数を格納するa0レジスタに文字列へのポインタがセットされる。 A pointer to a character string is set by the instruction 6-1 and 6-2 a0 register for storing a first argument.

【0044】6−3の「jal」命令は、オフセットアドレスZへのジャンプ命令である。 [0044] "jal" instruction of 6-3, it is a jump instruction to the offset address Z. これにより関数を呼び出すことができる。 This makes it possible to call the function.

【0045】6−4の「pref」命令は、ジャンプ命令6−3のディレイスロットにある、プリロード命令である。 [0045] "pref" instruction of 6-4, in the delay slot of the jump instruction 6-3, is a preload instruction. これにより、第1引数を格納するa0レジスタで指定された文字列がキャッシュにプリロードされる。 Thus, the character string specified by a0 register for storing a first argument is preloaded into the cache.

【0046】図7は、呼び出された側の関数の処理の命令列の一例を示す。 [0046] Figure 7 shows an example of the instruction sequence of processing of the function of the called side.

【0047】これは、第1引数で渡された文字列を1文字ずつ読み込む命令と、文字列の終わりを示す「0」であるかを見る条件分岐命令からなる。 [0047] It consists of a conditional branch instruction to see instructions for the string read one letter that was passed in the first argument, indicating the end of a string or a "0".

【0048】7−1の「lbu」命令は、第1引数の指すアドレスから1バイトリードするロード命令である。 [0048] "lbu" instruction of 7-1, is a load instruction to 1 byte read from the address pointed to by the first argument.

【0049】7−2の「beq」命令は、ロード命令7 [0049] "beq" instruction of 7-2, the load instruction 7
−1で読み込んだデータが「0」か否かを判定し、 Read data at -1, it is determined whether or not "0",
「0」である場合、アドレスWに分岐する条件分岐命令である。 If it is "0", it is a conditional branch instruction for branching to address W.

【0050】図8は、本実施例により、図7に示す命令列を実行した時のパイプラインのステージの移動を示す図である。 [0050] Figure 8, the present embodiment, and shows the movement of the pipeline stages when executing the instruction sequence shown in FIG.

【0051】図8から、本実施例においては、プリロードにより、既に必要なデータがキャッシュにあるために、ロード命令の直後に条件分岐命令を実行することが可能とされていることがわかる。 [0051] From FIG. 8, in this embodiment, the preload, in order that already required data is in the cache, it can be seen that there is a can execute the conditional branch instruction immediately following the load instruction.

【0052】図9は、本発明の実施例におけるコンパイラの処理の流れを示すフローチャートである。 [0052] Figure 9 is a flowchart showing a flow of processing of the compiler in the embodiment of the present invention.

【0053】コンパイラは、ソースプログラムを読み込み順次解析していく。 [0053] The compiler, sequentially analysis reads the source program. そして、関数の呼び出しに掛かると(ステップS1)、その関数の全ての引数の型を順に調べる(ステップS2〜S6)。 When applied to the function call (step S1), and sequentially checks the type of all arguments of the function (Step S2 to S6). なお、ステップS6 It should be noted that the step S6
は、ステップS2の引数の個数分のループ開始処理に対応したループエンドを示している。 Shows the loop end corresponding to the loop start processing of the number of arguments fraction of step S2.

【0054】引数の型が、構造体または文字列へのポインタである場合(ステップS4)、引数のレジスタのレジスタ番号を保存し(ステップS5)、図10に示すプリロード命令をジャンプ命令の前もしくはディレイスロットに挿入する(ステップS8)。 [0054] The type of argument, if a pointer to a structure or a string (step S4), and saves the register number of the argument registers (step S5), and before or jump instructions preload instruction shown in FIG. 10 inserting the delay slot (step S8). その際、図10に示すプリロード命令のベースレジスタを示すビットフィールド「base」に、ステップS5に保存されたレジスタ番号がセットされ、プリロード命令が生成されて、関数呼び出し用のジャンプ命令の前もしくはディレイスロットに挿入する。 At that time, the bit field "base" indicating the base register preload instruction shown in FIG. 10, is to register number is set stored in step S5, and preload instruction is generated, before or delay jump instructions for function calls It is inserted into the slot.

【0055】このとき、引数として構造体または、文字列等へのポインタをセットした全てのレジスタに対して、プリロード命令を挿入する。 [0055] At this time, the structure as an argument or, for all registers set a pointer to a string or the like, inserting the preload instruction.

【0056】このように、コンパイル時に適切なプリロード命令を挿入しておくことにより、関数呼び出し後の処理において、呼び出された関数がアクセスする構造体や文字列がキャッシュにプリロードされているので、キャッシュミスによるパイプラインの乱れと処理の遅れを防ぎ、これにより関数型言語処理の全般の高速化を実現する。 [0056] Thus, by previously inserting the appropriate preload instruction during compilation, the processing after the function call, the structure and character string called function accesses are preloaded into the cache, the cache prevent delay of turbulence and processing of the pipeline by mistake, thereby realizing a high-speed general functional language processing.

【0057】 [0057]

【発明の効果】以上説明したように、本発明によれば、 As described in the foregoing, according to the present invention,
関数型言語の処理を特段に高速化するという効果を奏する。 The process of functional language is an effect that the speed of the particular.

【0058】その理由は、本発明においては、関数呼び出し時に、引数で渡されるメモリ空間が、関数が呼び出された時点でキャッシュにプリロードされるように構成されているので、引数で渡されたメモリ空間へのアクセス時のキャッシュミスによるパイプラインの乱れと処理の遅れが無い、ことによる。 [0058] Memory The reason for this is that in the present invention, when the function call, the memory space that is passed in argument, which is configured to be preloaded into the cache at the time the function is called, which is passed as an argument there is no delay of the disturbance and the processing of the pipeline due to a cache miss at the time of access to space, due to the fact.

【図面の簡単な説明】 BRIEF DESCRIPTION OF THE DRAWINGS

【図1】本発明の実施例を説明するための図であり、システムの全体構成を示すブロック図である。 Figure 1 is a view for explaining an embodiment of the present invention, is a block diagram showing the overall configuration of a system.

【図2】本発明の一実施例を説明するための図であり、 Are views for explaining an embodiment of the present invention; FIG,
マイクロプロセッサの一般レジスタの具体例を示す図である。 It is a diagram showing a specific example of the general registers of the microprocessor.

【図3】本発明の一実施例を説明するための図であり、 [Figure 3] is a diagram for explaining an embodiment of the present invention,
マイクロプロセッサのパイプラインの構成の具体例を示す図である。 It is a diagram showing a specific example of the pipeline structure of the microprocessor.

【図4】本発明の一実施例を説明するための図であり、 Are views for explaining an embodiment of the present invention; FIG,
関数呼び出し処理のソースプログラムの一例を示す図である。 Is a diagram illustrating an example of a source program of the function call processing.

【図5】本発明の一実施例を説明するための図であり、 [Figure 5] is a diagram for explaining an embodiment of the present invention,
図4に示した関数の呼び出し時の第1引数を格納するレジスタa0とメモリ上にある文字列との関係を示す図である。 It is a diagram showing the relationship between the strings in the memory and registers a0 for storing a first argument when calling the function shown in FIG.

【図6】本発明の一実施例を説明するための図であり、 [Figure 6] is a diagram for explaining an embodiment of the present invention,
図10のプリロード命令を使用した、第1引数にポインタを使用した命令列の例を示す図である。 Using preload instruction of FIG. 10 is a diagram showing an example of a sequence of instructions using a pointer to the first argument.

【図7】本発明の一実施例を説明するための図であり、 Are views for explaining an embodiment of the present invention; FIG,
図6の命令列を受ける関数の、引数を参照する命令列の例を示す図である。 Function receiving the instruction sequence of FIG. 6 is a diagram showing an example of the instruction sequence which refers to an argument.

【図8】本発明の一実施例を説明するための図であり、 Figure 8 is a view for explaining an embodiment of the present invention,
図7に示した命令列実行時のパイプラインのステージの移動を示す図である。 Is a diagram illustrating the movement of the pipeline stages during instruction sequence execution shown in FIG.

【図9】本発明の一実施例におけるコンパイラにおけるプリロード命令挿入の手順を示すフローチャートである。 9 is a flowchart showing a procedure of a preload instruction insertion in a compiler in an embodiment of the present invention.

【図10】プリロード命令の構成の一例を示す図である。 10 is a diagram showing an example of the configuration of a preload instruction.

【図11】従来技術を説明するための図であり、の第1 [Figure 11] is a diagram for explaining a conventional technology, the first
引数にポインタを使用した命令列の例を示す図である。 Is a diagram showing an example of the instruction sequence using the pointer as an argument.

【図12】従来技術を説明するための図であり、図11 [Figure 12] is a diagram for explaining a conventional technology, FIG. 11
に示した命令列を受ける図7の命令列実行時のパイプラインのステージの移動を示す図である。 Is a diagram illustrating the movement of the pipeline stages during instruction sequence executing in FIG receiving an instruction sequence shown in.

【符号の説明】 DESCRIPTION OF SYMBOLS

1−1 マイクロプロセッサ 1−2 キャッシュ 1−3 メモリ 1−4 システムバス 3−1 命令のフェッチを行うIFステージ 3−2 命令のデコードを行うIDステージ 3−3 命令を発効するISステージ 3−4、3−5、3−6 命令を実行するEXステージ 3−7 結果をキャッシュに書き戻すWBステージ 6−1 第1引数を格納するa0レジスタの上位16ビットにXをセットするロード命令 6−2 第1引数を格納するa0レジスタの下位16ビットにYを加える加算命令 6−3 オフセットアドレスZへのジャンプ命令 6−4 プリロード命令 7−1 a0レジスタの指すアドレスからt0に1バイトリードするロード命令 7−2 t0が0ならWへ分岐する条件分岐命令 11−1 第1引数を格納するa0レジスタの上位16 1-1 microprocessor 1-2 cache 1-3 memory 1-4 IS stage 3-4 to take effect ID stage 3-3 instructions to perform decoding of IF stage 3-2 instructions that a fetch of the system bus 3-1 Instruction load instruction 6-2 for setting the X in the upper 16 bits of a0 register for storing the WB stage 6-1 first argument written back to the cache EX stage 3-7 results for executing 3-5, 3-6 instructions load instruction for one byte read from the address t0 indicated by the jump instruction 6-4 preload instruction 7-1 a0 register to add instruction 6-3 offset address Z adding Y to the lower 16 bits of a0 register for storing a first argument 7-2 t0 of a0 register for storing a conditional branch instruction 11-1 first argument branching to 0 if W upper 16
ビットにXをセットするロード命令 11−2 オフセットアドレスZへのジャンプ命令 11−3 第1引数を格納するa0レジスタの下位16 Lower a0 register for storing the jump instruction 11-3 first argument to the load instruction 11-2 offset address Z to set the X bit 16
ビットにYを加える加算命令 Add instruction to add a Y bit

Claims (3)

    【特許請求の範囲】 [The claims]
  1. 【請求項1】キャッシュへのプリフェッチを行う命令を有し、関数呼び出し時の引数の幾つかを一般レジスタに格納して関数を呼び出す演算処理装置において、 関数の呼び出し時の引数として与えられた、メモリ空間へのポインタを格納した一般レジスタの値の指すメモリ空間のデータを、関数呼び出し時に、前記キャッシュにプリロードする命令を実行させる手段を備えたことを特徴とする関数型言語処理装置。 [Claim 1, further comprising an instruction prefetching into the cache, the processing unit stores the number of arguments during function calls generally register call a function, given as arguments when the function call, the data memory space indicated by the value of the general register which stores a pointer to the memory space, when the function call, functional language processing apparatus characterized by comprising means for executing instructions to preload the cache.
  2. 【請求項2】キャッシュメモリへのプリフェッチを行う命令を命令セットとして有する演算処理装置で実行される関数呼び出し命令の処理方式において、 関数の呼び出しにおける引数として、メモリ空間へのポインタが指定されている場合、前記ポインタが指すメモリ空間のデータを、関数呼び出し時に、前記キャッシュメモリにプリロードするように、プリロード命令を生成して、これを関数呼び出し命令列内に挿入し、 命令実行時において、呼び出された関数側で前記引数のポインタの指すデータを参照する時に、前記データが前記キャッシュメモリに格納されている、ようにすることを特徴とする言語処理方式。 2. A processing method of a function call instruction executed by the arithmetic processing unit having a set of instructions to instruction prefetching into the cache memory as an argument in the function call, a pointer to the memory space is designated If the data of the memory space in which the pointer points, at the time of a function call, so as to preload the cache memory, generates a preload instruction, and insert it in the function call instruction in the sequence, at the time of instruction execution, called and when referring to data pointed to the argument in the function side, the language processing method in which the data is characterized by the way, is stored in the cache memory.
  3. 【請求項3】前記プリロード命令を関数呼び出しを行う分岐命令の前または該分岐命令のディレイスロットに挿入することを特徴とする請求項2記載の言語処理方式。 3. A language processing method according to claim 2, wherein the inserting the delay slot before or the branch instruction of the branch instruction to perform the preload instruction function call.
JP8209113A 1996-07-19 1996-07-19 Function type language processor Pending JPH1040106A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP8209113A JPH1040106A (en) 1996-07-19 1996-07-19 Function type language processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8209113A JPH1040106A (en) 1996-07-19 1996-07-19 Function type language processor

Publications (1)

Publication Number Publication Date
JPH1040106A true JPH1040106A (en) 1998-02-13

Family

ID=16567509

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8209113A Pending JPH1040106A (en) 1996-07-19 1996-07-19 Function type language processor

Country Status (1)

Country Link
JP (1) JPH1040106A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005100034A (en) * 2003-09-24 2005-04-14 Matsushita Electric Ind Co Ltd Information processing control system
US7363621B2 (en) 2002-12-26 2008-04-22 International Business Machines Corporation Program converting apparatus, method, and program

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7363621B2 (en) 2002-12-26 2008-04-22 International Business Machines Corporation Program converting apparatus, method, and program
US8225299B2 (en) 2002-12-26 2012-07-17 International Business Machines Corporation Program converting apparatus, method, and program
JP2005100034A (en) * 2003-09-24 2005-04-14 Matsushita Electric Ind Co Ltd Information processing control system

Similar Documents

Publication Publication Date Title
US5235686A (en) Computer system having mixed macrocode and microcode
US5442756A (en) Branch prediction and resolution apparatus for a superscalar computer processor
KR100212204B1 (en) Apparatus for processing instruction in computer system
US5193205A (en) Pipeline processor, with return address stack storing only pre-return processed address for judging validity and correction of unprocessed address
EP0689131B1 (en) A computer system for executing branch instructions
US7076638B2 (en) Processor, compiler and compilation method
EP1012705B1 (en) Data processing device
KR0149658B1 (en) Method and apparatus for data processing
EP1010064B1 (en) Method and apparatus for restoring a predicate register set
US8365151B2 (en) Multiple stage program recompiler using information flow determination
JP3173793B2 (en) Data processing apparatus and data processing method according to multiple instruction set
US5515519A (en) Data processor and method utilizing coded no-operation instructions
JP3816961B2 (en) Data processing apparatus for processing a virtual machine instructions
JP3093624B2 (en) Method and apparatus for processing a speculative exception
US5678032A (en) Method of optimizing the execution of program instuctions by an emulator using a plurality of execution units
CN103262027B (en) Branch instruction is used to store reliably predictable sequence of SEQ buffer
JP3442225B2 (en) Processor
US5809294A (en) Parallel processing unit which processes branch instructions without decreased performance when a branch is taken
US6021489A (en) Apparatus and method for sharing a branch prediction unit in a microprocessor implementing a two instruction set architecture
US5461722A (en) Parallel processing apparatus suitable for executing in parallel a plurality of instructions including at least two branch instructions
US5617550A (en) Data processor generating jump target address of a jump instruction in parallel with decoding of the instruction
US6338136B1 (en) Pairing of load-ALU-store with conditional branch
US7836287B2 (en) Reducing the fetch time of target instructions of a predicted taken branch instruction
US7685404B2 (en) Program subgraph identification
US5996060A (en) System and method for concurrent processing

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 19991005