JP3772907B2 - Computer system - Google Patents

Computer system Download PDF

Info

Publication number
JP3772907B2
JP3772907B2 JP2005181820A JP2005181820A JP3772907B2 JP 3772907 B2 JP3772907 B2 JP 3772907B2 JP 2005181820 A JP2005181820 A JP 2005181820A JP 2005181820 A JP2005181820 A JP 2005181820A JP 3772907 B2 JP3772907 B2 JP 3772907B2
Authority
JP
Japan
Prior art keywords
data
instruction
address
load
store
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.)
Active
Application number
JP2005181820A
Other languages
Japanese (ja)
Other versions
JP2005322269A (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
Priority to US95408492A priority Critical
Application filed by セイコーエプソン株式会社 filed Critical セイコーエプソン株式会社
Publication of JP2005322269A publication Critical patent/JP2005322269A/en
Application granted granted Critical
Publication of JP3772907B2 publication Critical patent/JP3772907B2/en
Application status is Active legal-status Critical
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/3824Operand accessing
    • G06F9/3826Data result bypassing, e.g. locally between pipeline stages, within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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; 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/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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, out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling, out of order instruction execution of compound instructions

Description

本発明は一般的にはスーパースカラ・マイクロプロセサの設計に関し、より具体的には、命令をアウト・オブ・オーダで実行するマイクロプロセサに於けるロード及びストア動作を扱うシステム並びに方法に関する。 The present invention relates generally to the design of the superscalar microprocessor, and more particularly to systems and methods dealing with in load and store operations to the microprocessor that executes instructions out of order.
本出願は、本出願の代理人に譲渡されている下記の出願に関連するものである。 This application is related to application of the following, which is assigned to the agent of the present application. すなわち、ニューエン(Nguyen)その他による1991年7月8日出願の米国特許出願香号 07/727,058(代理人整理番号SP021)、「拡張可能RISCマイクロプロセサ・アーキテクチャ」(EXTENSIBLE RISC MICROPROCESSOR ARCHITECTURE )、及び′058 出願の継続出願である、1992年1月8日出願の出願番号07/817,809に関連する。 In other words, Nguyen (Nguyen) US patent application Ser. Incense issue of filed Jul. 8, 1991 According to the other 07 / 727,058 (Attorney Docket No. SP021), "Extensible RISC microprocessor architecture" (EXTENSIBLE RISC MICROPROCESSOR ARCHITECTURE), and ' 058 is a continuation application of application, related to application Ser. No. 07 / 817,809, filed Jan. 8, 1992. 上記出願の開示を参照することによって当該特許出願の明細書の記載内容が本明細書に組み込まれているものとする。 The contents of the specification of the patent application and which is incorporated herein by reference to disclose the application.

スーパースカラ縮小命令セット・コンピュータ(RISC)に於ける大きな課題は如何にして斯かる命令実行の本質的な問題である依存性によるデータ・エラーの発生を回避しつつ、複数の命令を平行処理的に、アウト・オブ・オーダで実行できるか、という点に関する。 Major challenge in the superscalar reduced instruction set computer (RISC) is while avoiding the occurrence of data errors due to inherent problems in which dependence of such instruction execution in the how parallel processing manner a plurality of instructions to, you can run out-of-order, on that. RISCプロセサに於ける最も簡単な命令発行方針は命令をプログラムでの順序と同じ順序で発行し(イン・オーダ発行)、結果をまた同じ順序で書き出すことである(イン・オーダ完了)。 The simplest instruction issue policy in the RISC processor issues in the same order in the program instruction (in-order issue) is to write the result also in the same order (in-order completion). アウト・オブ・オーダ完了はイン・オーダ完了に比して複雑であるが、同じ種類の動作に対してスーパースカラ・プロセサの性能向上に効果がある。 Out-of-order completion is complex as compared with the complete in-order, is effective in improving the performance of superscalar processors for the same types of operations. 例えば、アウト・オブ・オーダ完了はロード又は浮動小数点演算等の長い待ち時間動作の性能改善のために使用される。 For example, is used for out-of-order completion is loaded or floating point performance improvement of the long latency operation with such. 機能ユニット内で実行中の命令の数に制限はないが、その最大数は全ての機能ユニット内のパイプライン段階の数である。 No limit on the number of instructions executing within a functional unit, but the maximum number of which is the number of pipeline stages in all functional units. この場合、命令はアウト・オブ・オーダで完了でき、その理由は結果の計算にひとつの機能ユニットが1サイクル以上のサイクルを費やした場合でも命令の発行に停止がないからである。 In this case, the instruction can be completed out of order, because there is no stop to the issuance of the instruction even if one of the functional units in the calculation of the result is spending more cycles 1 cycle. 従って、後続の命令が終了した後、機能ユニットが一つの命令を完了しても構わない。 Accordingly, after the subsequent instruction is completed, the functional units may be completed one instruction.

下記のコードシーケンスを考えて見る。 View consider the following code sequence. ただし″op″はオペレーション、″Rn″は番号つきレジスタ、″: =″は代入を表わす。 However "op" Operations, "Rn" is numbered register, ": =" represents the assignment.

R3:=R3 op R5 (1) R3: = R3 op R5 (1)
R4:=R3 +1 (2) R4: = R3 +1 (2)
R3:=R5 +1 (3) R3: = R5 +1 (3)
R7:=R3 op R4 (4) R7: = R3 op R4 (4)
この場合、一般的にアウト・オブ・オーダの命令了が可能であっても、第1命令の代入は第3命令の代入の後には完了できない。 In this case, generally be capable of instruction completion of out-of-order, assignment of the first instruction can not be completed after the assignment of the third instruction. 第1命令と第3命令がアウト・オブ・オーダで実行された場合、異常且つ不正な値がR3レジスタに残り、例えば第4命令が不正なオペレランド値を受け取るような事態が生じる。 If the first instruction and the third instruction is executed out of order, the remaining abnormal and invalid value R3 register, for instance a situation such as the fourth instruction receives an incorrect Opererando value occurs. 第3命令の結果は第1命令に対して「出力依存性」を有し、このコードシーケンスに於いて正しい出力値を得るためには第3命令は第1命令の後に完了しなければならない。 Result of the third instruction has an "output dependency" on the first instruction, the third instruction in order to obtain a correct output value In this code sequence must be completed after the first instruction. 従って、第3命令の結果が、計算にもっと時間の掛かるより古い命令によって上書きされる場合、第3命令の発行は待たなければならない。 Therefore, the third instruction result, when it is overwritten by older instructions more time-consuming to compute, issuance of the third instruction must wait.

アウト・オブ・オーダの完了は性能の向上をもたらすものであるが、より多くのハードウェア、つまりデータ依存性論理、を必要とする。 Complete out-of-order are those resulting in improved performance, and requires more hardware, namely data dependency logic. アウト・オブ・オーダの完了の場合、データ依存性論理は複雑になる。 In the case of the completion of the out-of-order, data dependency logic is complicated. その理由は、この論理ではデコードされた命令と、全てのパイプライン段階の全ての命令の間に於けるデータ依存性の検査が行なわれるからである。 This is because, in this logic is because the decoded instruction, the check in data dependency between all the instructions in all pipeline stages are performed. 結果が正しい順序で書き出されることを保証するのもハードウェアの役割である。 The result is the role of also hardware to ensure that the written in the correct order. これに対して、イン・オーダ実行に於いては、データ依存性論理はデコードされた命令と、現在実行中の幾つかの命令の間に於けるデータ依存性のみを検査すればよいから、結果は当然正しい順序で書き出される。 In contrast, at the in-order execution, data dependency logic and the decoded instruction, since it is sufficient only examine in data dependency between the number of the currently executing instruction, the result It is written in the course the correct order. アウト・オブ・オーダ完了に於いてはまた、機能ユニットは結果バス及びレジスタ・ファイル書き込みポート間での調停を行なわなければならない。 Further, according to the out-of-order completion, functional unit result must perform arbitration between bus and the register file write port. その理由は、同時に完了する全ての命令の必要を満たすために十分な数のバス及びポートが存在しないであろうからである。 This is because there will be no sufficient number of buses and ports in order to meet the needs of all instructions to be simultaneously completed.

更に、アウト・オブ・オーダの完了では命令例外の処理がより困難になる。 In addition, the processing of the instruction exception is made more difficult with the completion of the out-of-order. ある条件下で命令が例外を生成した場合、その命令はハードウェアだけでは正しく実行できない。 If the instruction under certain conditions has generated an exception, the instruction can not be executed correctly only hardware.
デコードされた命令が資源競合を生じた場合、真の依存性を有する場合、あるいは未完了の命令に対して出力依存性を有する場合、イン・オーダ命令発行プロセサは命令のデコードを中止する。 If the decoded instruction is generated a resource conflict, if having a true dependence, or if an output dependency on instruction uncompleted, in-order instruction issue processor stops the decoding of the instruction. 従って、後続する一つ又は複数の命令が実行可能であっても、プロセサは競合又は依存性を生じた命令の後に来るものを先読み(lookahead )処理できない。 Therefore, even in the subsequent one or more instructions executable, the processor can not look-ahead (lookahead) handle what comes after the instruction that caused the conflict or dependency. 従来の解決策はデコーダを実行段階から分離して、命令が直ちに実行可能であるか否かにかかわらず命令のデコードを継続して行なえるようにすることである。 Prior solutions to separate decoder from the execution stage, is to so enable instruction to continue the decoding of the instruction irrespective within whether immediately feasible. この分離はデコード段階と命令段階の間に「命令ウィンドウ」と呼ばれるバッファを配置することによって実施される。 This separation is carried out by placing a buffer called "instruction window" during the decode stage and the instruction step. 先読みのために、プロセサは命令をデコードし、ウィンドウ中に場所がある限りデコードされた命令を命令ウィンドウに入れ、それと同時に、実行可能な命令(すなわち、資源競合又は依存性を持たない命令)を見出すためにウィンドウ中の命令を検査する。 For read-ahead, the processor decodes the instruction, put the decoded instruction as long as there is place in the window in the instruction window, at the same time, executable instructions (i.e., instructions that do not have resource conflicts or dependencies) to check the instructions in the window to find. 命令ウインドウは命令のプールとしての機能があり、この機能によってプロセサは先読みの能力を得る。 Instruction window has functions as a pool of instructions, the processor obtaining the read-ahead capabilities by this feature. この能力はウィンドウのサイズとプロセサの命令フェッチ・ユニット(IFU )の性能によって制約されるものである。 This capability is intended to be limited by the performance of the instruction fetch unit size and processor of the window (IFU). これによって、各命令の最初のプログラム順序と無関係にウィンドウから発行できるので、命令のアウト・オブ・オーダ発行が可能となる。 Thus, since it issued from the first program order and independent windows each instruction, it is possible to out-of-order instruction issue. この場合、命令発行元に対する唯一の制約はプログラムが正常に動作することを保証するのに必要な制約である。 In this case, the only constraint on the instruction publisher program is necessary to ensure that it works correctly constraints.

如何なる特定の命令に於いても、発行に関する制約はイン・オーダ発行の場合と殆ど同じである。 Even in to any particular instruction, restrictions on the issue is almost the same as in the case of in-order issue. すなわち、命令は資源競合又は依存性を持たない場合発行されるのである。 That is, instructions are being issued if no resource conflict or dependency. アウト・オブ・オーダの発行によって、プロセサは発行可能なより大きな命令集合を得ることになり、それによって、同時に実行可能な命令をプロセサが見つけ得る確率が高まる。 By the issuance of out-of-order, the processor will get the issue can be larger instruction set, thereby, increasing the probability that the processor can find the executable instructions at the same time. しかし、命令をアウト・オブ・オーダで発行する能力によって他の発行制約が生じる。 However, the other issue constraints caused by the ability to issue instructions out-of-order. これは命令をアウト・オブ・オーダで実行する能力に於いて出力依存性の制約が導入されるのに類似している。 This output dependent constraints at the ability to execute instructions out of order is similar to being introduced.

これを理解するために上記のコードシーケンスの例を振り返って見る。 Looking back to the above example code sequence to understand this. 第2命令の実行が始まる前には第3命令の代入は完了できない。 Before the execution of the second instruction begins can not be completed an assignment of the third instruction. さもなければ、第3命令が第2命令の第1オペランドを不正に上書きすることがあり得る。 Otherwise, it is possible that the third instruction is illegally overwriting the first operand of the second instruction. 第3命令の結果は第2命令の第1入力オペランドに対して「反依存性」を有するといわれる。 Result of the third instruction is said to have "anti-dependency" on the first input operand of the second instruction. 「反依存性」という用語は、反依存性制約はそれが逆になった以外には真の依存性に関する制約と同様であることを意味する。 The term "anti-dependency" is anti-dependent constraints mean that in addition it has reversed the same as the constraint on the true dependence. 第2命令が使用する値を第1命令が生成するかわりに、第2命令は第1命令が使用する値を破壊する値を生成する。 A value second instruction uses instead of the first instruction is generated, the second instruction produces a value that destroys a value that the first instruction uses. これを防止するためには、第2命令が始まるまでプロセサは第3命令を発行してはならない。 To prevent this, processor until the second instruction begins must not issue the third instruction. 第2命令は第1命令に依存するから、第3命令は他の点では独立していても第1命令が完了するまで待たなければならない。 Since the second instruction is dependent on the first instruction, the third instruction must wait until otherwise to the first instruction be independent completion.

反依存性が重要なのは主に命令がアウト・オブ・オーダで発行可能な場合である。 The anti-dependence is important is primarily If the instruction is available for issuance in the out-of-order. 正常なオペレーション中、停止した命令の入力オペランドは後続する命令によって破壊されることがある。 During normal operation, the input operands of the instruction that has stopped may be destroyed by subsequent instructions. しかし、スカラ・プロセサに於いては、往々にして命令例外は例外条件を修正し、そして問題を生じた命令を再試行することによって処理される。 However, in the scalar processor, the Often instruction exception is handled by retrying the instruction to correct the exception condition, and that caused the problem. この命令がアウト・オブ・オーダで完了した場合、その命令の再試行が行なわれた時、後続する命令によってその再試行中の命令の入力オペランドが上書きされることがあり得る。 If the instruction is completed out of order, when the retry of the instruction is performed, it is possible that the input operands of the instruction of the retry during the subsequent instruction is overwritten. この問題は正確な割り込みをサポートするプロセサでは起こり得ない。 This problem does not occur in the processor that supports the exact interrupt. この問題の解決には、再起動を可能にするためにプロセサが命令オペランドのコピーを維持する必要があるかもしれない。 To solve this problem, the processor in order to allow the restart may need to keep a copy of the instruction operands.

プログラム命令によって行われるオペレーションの代表的な二つのオペレーションはロード及びストアのオペレーションである。 Two typical operation of the operation to be performed by the program instructions are load and store operations. 一般的に、ロード及びストア・オペレーションはそれぞれ記憶場所を読み出し、変更する。 In general, read out each of the load and store operations storage location, to change. 他のプログラム命令と同様に、ロード及びストアはアウト・オブ・オーダで実行できる。 As with other program instructions, load and store can be performed in out-of-order. ロード及びストアは同時にデコード可能であるが、従来的には1サイクル当たり一つのロード又はストアのみが発行される。 While loads and stores can be decoded at the same time, the conventionally only one load or store per cycle is issued. データ・キャッシュの使用に於いては、通常、ロードはストアに優先される。 In the use of the data cache, usually, the load is priority to the store. その理由は多くの場合ロードはプロセサが演算を行うのに必要な値を生成するからである。 The reason is often loaded because processor generates a value required to perform the operation. データ・キャッシュの使用に於いて、ストアがロードと競合する場合、ストアの実行が可能になるまで、通常ストアはストア・バッファに保持される。 In use of the data cache, if the store is to compete with the load, until it can perform a store, usually stored is held in the store buffer. 更に、従来的には、ストアは他のストアに対してプログラム順序で実行され、ロードも含めて全ての他の先行の命令が実行された後にのみ実行される。 Furthermore, the conventional, stores are performed in program order with respect to other stores, it is executed only after instruction of all other prior, including loading was performed. これによって、データ・キャッシュ使用に於いてのプロセサのイン・オーダ状態が保存される。 Thus, in-order state of the processor in at the data cache use is saved. その理由はキャッシュの更新はそれが絶対に正しく行なわれ得るまで行なわれないからである。 The reason is because no updating of the cache is performed until it can absolutely correctly. ストア・バッファの使用によってストアが正しい順序で保持され、先行の命令が完了するまでストアの完了が延期されるのである。 Held by the use of the store buffer store correct order, than is the completion of the store is deferred until the preceding instruction is completed.

ストアは他の先行の命令が実行されるまで保持され、そしてロードはプロセサ中での計算に必要な値を生成するから、ストアに対してロードをプログラム順序に保持することは性能に対して重大な悪影響を及ぼす。 Stores are held until instruction other prior runs, and the load is significant because to generate values ​​necessary for the calculation in a processor, against the performance of holding the load to the store in program order exert an adverse effect. 全ての先行のストアが完了するまでロードが待たなければならない場合、そしてそのために最も新しいストアに先行する全ての命令が完了するまでロードが待つ場合、ロード・データに依存した、ロードに後続する全ての命令も待つことになる。 If the store of all of the preceding must wait a load to complete, and if the wait is loaded until all of the instruction is completed preceding the most new store for them, depending on the load data, all subsequent to the load to wait even of instruction. この性能上の問題を回避するために、ロードはストア・バッファで待機している、先行のストアをバイパスすることができ、ロード・データは後続の計算に於いて使用できる。 To avoid this performance problem, the load is waiting in the store buffer, can bypass the preceding store, load data may be used at the subsequent calculations.

ロードが先行のストアをバイパスすることができる場合、ロードは未だ実行されていない先行のストアからデータを得る必要があるかも知れない。 If you can load bypasses the preceding store, it may be necessary to obtain the data from the previous store load has not yet been executed. プロセサはロードが先行のストアに対して有する真の依存性を、ロードの仮想記憶アドレスと、全ての未完了の先行ストアの仮想記憶アドレスとを比較することによって検査する(仮想アドレスとは記憶管理ユニットによるアドレス変換が適用される前に、命令によって直接計算されるアドレスである)。 True dependency processor is to load with respect to previous store, the storage management and inspected (virtual address by comparing the virtual memory address of the load, and a virtual memory address of the preceding store of all uncompleted before the address conversion by the unit applies an address to be calculated directly by the instruction). ここに於いて、各仮想アドレスに対して一意的なマッピングの存在が仮定される。 In this case, the presence of unique mapping for each virtual address is assumed. その理由は2個の異なる仮想アドレスが同じ物理的なアドレスへアクセスすることがないようにするためである。 The reason is in order to avoid that the two different virtual addresses to access the same physical address. この仮定に基づき、仮想アドレス比較は物理的記憶場所間の全ての依存性を検出する。 Based on this assumption, virtual address comparison detects all dependencies between physical memory locations. ロード・アドレスが先行のストアのアドレスと一致する場合、又は先行のストアのアドレスのいずれも未だ計算されていない場合(この場合、依存性は検出不可能なので、依存性の存在が仮定される)、一つのロードは一つのストアに対して真の依存性を有する。 If the load address matches the address of the previous store, or if none of the addresses of the preceding store is not yet computed (in this case, dependent since undetectable, the presence of dependency is assumed) , one of the load has a true dependence on one of the store. ロードがストアに依存する場合、データ・キャッシュは正しい値を持たないので、そのロードはデータ・キャッシュによって満たされない。 If the load is dependent on the store, because the data cache does not have the correct value, the load is not met by the data cache. ストアの有効アドレスが後続するロードのアドレスと一致する場合、そのロードはストアが完了するのを待つ代わりに、ストア・データが有効な場合、ストア・バッファによって直接満たされる。 If the valid address of a store matches the address of a load that follows, the load instead of waiting for the store to complete, if the store data is valid, filled directly by the store buffer.

上述の如く、ロード及びストアは記憶場所に対する反依存性及び出力依存性を回避するような方法で実行される。 As described above, loads and stores are performed in a manner that avoids anti dependence and output dependence on memory locations. ロードは先行のストアをバイパスできるが、ストアは先行のロードをバイパスできない。 Load can bypass the preceding of the store, the store can not bypass the preceding load of. 従って、ロードとストアの間には反依存性は存在し得ない。 Thus, anti-dependencies can not exist between the load and store. 一つのストアは従来他のストアに対して通常プログラム順に発行されるので、ストア間には出力依存性は存在し得ない。 Since one of the store is issued in the normal program order with respect to conventional other stores, not exist the output dependency between the store.

従来的には、データ・キャッシュに於いてロードは他のロードに対してプログラム順に実行される。 Conventionally, the load at the data cache is performed in program order with respect to other load. 当業者の意見ではロードをアウト・オブ・オーダで実行することにより性能の点で得られる利点はないとのことである。 The advantage obtained in terms of performance by executing the load is in the opinion of one of ordinary skill in the art in out-of-order is that of the no. その理由は、古いロードによってプロセサに供給されるデータは新しいロードによって供給されるデータよりも計算に必要とされることが多いからである。 This is because the data supplied to the processor by older loads are often required to calculate than the data supplied by new loads.

上記の概念の詳細は幾つかの刊行物で論じられている。 The details of the above concepts are discussed in several publications. 例えば、John L. For example, John L. Hennessyその他著、「Computer Architecture ‐A Quantitative Approach 」(Morgan Kaufmann Publishers,Inc.,San Mateo ,California,1990年発行)及びMike Johnson著「Supcrscalar Microprocessor Design 」(Prentice-Hall ,Inc.,Englewood Cliffs, New Jersey ,1991年発行)(特に第8章、この章の一部分は上に転載されている)。 Hennessy and other al., "Computer Architecture -A Quantitative Approach" (Morgan Kaufmann Publishers, Inc., San Mateo, California, 1990 Issued) and Mike Johnson et al., "Supcrscalar Microprocessor Design" (Prentice-Hall, Inc., Englewood Cliffs, New Jersey, 1991) (especially chapter 8, part of this chapter has been reprinted on). 両書とも参照することによって全文が本明細書に組み込まれているものとする。 Entirety and which is incorporated herein by reference with Ryosho.

本発明はスーパースカラRISC型マイクロプロセサ・アーキテクチャ環境に於いてメモリからの読み出し及びメモリへの書き込み、或いは入出力に必要なロード及びストア・オペレーションを管理するシステムを提供するものである。 The present invention provides a system for managing write to read and the memory from the memory at the superscalar RISC-type microprocessor architecture environment, or the load and store operations necessary for input and output.

本発明はプログラム・ストリームを実行するマイクロプロセサ・システムを提供するもので、このシステムには命令を命令ストアより取り出し、且つ予め決められた複数の命令を命令バッファに供給する命令フェッチ・ユニットが含まれている。 The present invention provides a microprocessor system for executing a program stream, removed from the instruction store instructions to the system, and includes an instruction fetch unit for supplying a plurality of instructions predetermined for the instruction buffer It has been. 更に、命令フェッチ・ユニットと結合している実行ユニットが含まれ、実行ユニットは命令バッファからの複数の命令をアウト・オブ・オーダで実行するためにある。 Furthermore, include execution units which joins the instruction fetch unit, an execution unit is to execute the plurality of instructions from the instruction buffer in an out-of-order. 実行ユニットにはロード・ストア・ユニットが含まれ、ユニットはアウト・オブ・オーダなロード要求とイン・オーダのストア要求をメモリ・システムに対して行なうように適性化されている。 The execution unit includes a load store unit, unit is suitability of to perform store requests out-of-order load requirements and in-order with respect to the memory system. 従って、本発明のロード/ストア・ユニットの主な目的は、可能な限り、アウト・オブ・オーダなロード要求を行ない、なるべく速やかにロード・データを命令実行ユニットに返すことである。 Accordingly, a primary object of the load / store unit of the present invention, as far as possible, performs out-of-order load request is to return as soon as possible to load data to the instruction execution unit. ロード・オペレーションはアドレス衝突がなく、実行待ちの書き込みオペレーションが存在しない時のみアウト・オブ・オーダで実行できる。 The load operation there is no address collision, can be performed in real out-of-order at the time of execution waiting write operation does not exist. アドレス衝突が発生するのは、古い命令がこれから書き込まれる記憶場所に於いて読み出しが要求された時である。 It is the address collision occurs, is when the read is requested at a memory location where the old instruction is now written. 実行待ちの書き込みオペレーションとは、古い命令がストア・オペレーションを要求したがストア・アドレスの計算がまだ行なわれていないことである。 The execution waiting write operation, is that although old instruction requests a store operation is store-address calculations have not yet been carried out. データ・キャッシュ・ユニットは位置合わせされていない8バイトのデータを返す。 Data cache unit returns the data of 8 bytes that are not aligned. ロード/ ストア・ユニットはデータが命令実行ユニット(IEU)に返される前にデータの正しい位置合せを行う。 Load / store unit performs the correct alignment of the data before the data is returned to the instruction execution unit (IEU). 従って、ロード/ストア・バッファの三つの主要なタスクは(1) アウト・オブ・オーダのキャッシュ要求の処理、(2) アドレス衝突の検出、及び(3) データの位置合わせである。 Thus, the process of the three main tasks of the load / store buffer (1) out of order cache requests, is (2) Detection of address collision, and (3) alignment of data.

ロード・ストア・ユニットには現在実行中の複数の命令に対応する複数のアドレスを管理するために適性化されたアドレス・パス、現在実行中の複数の命令の各命令間にアドレス衝突及び実行待ちの書き込みオペレーションが存在するかどうかを検出して知らせるアドレス衝突手段が含まれ、そうすることによって、ロード・ストア・ユニットはアドレス衝突も実行待ちの書き込みオペレーションも検出されなかった場合、ロード要求を実行する。 Suitability of the address path for the load store unit that manages a plurality of addresses corresponding to a plurality of the currently executing instruction, address collisions and execution wait between each instruction of the plurality of the current instruction contains the whether address collisions means for notifying to detect whether a write operation is present, by doing so, if the load store unit may write operation waiting for execution even address conflict was detected, executing a load request to. ロード・ストア・ユニットは更にデータ・パスで構成され、データ・パスはロード及び1又はストア・データをメモリ・システム及び命令実行ユニットの間で転送する。 Load store unit is configured further in the data path, the data path for transferring load and 1 or store data between the memory system and the instruction execution unit. データ・パスは記憶システムより返されたデータの位置合わせをし、斯くしてキャッシュの4ワード境界と一致しないデータがメモリ・システムから命令実行ユニットに正しいアライメントで返されるようにする。 Data path is the alignment of the data returned from the memory system, thus does not match the 4 word boundary of cache data to be returned in the correct alignment to the instruction execution unit from the memory system.

本発明は添付の特許請求の範囲に具体的に提示されている。 The present invention has been specifically presented in the appended claims. 本発明の上記の、そして後述の利点の理解を深めるために、次に図面を参照して説明する。 Of the invention described above, and for understanding the later-described advantages, it will now be described with reference to the accompanying drawings. すなわち、図1において、本発明の好適な実施例に基づいて、一般的に100 で表わされるマイクロプロセサ・アーキテクチャが配置されている。 That is, in FIG. 1, with reference to preferred embodiments of the present invention, microprocessor architecture is arranged to be generally represented by 100. システム・アーキテクチャ100 にはホスト・プロセサ105 、キャッシュ制御ユニット及びメモリ(CCU )110 、仮想メモリ・ユニット(VMU )115 、入出力サブシステム190 、メモリ制御及びインタフェース・ユニツト120 、及びインタリーブ・オペレーション用に構成されたインタリーブド・メモリ・バンク(160a、160b、160C)(以降、主メモリ160と称す)が含まれている。 System architecture 100 host processor 105, the cache control unit and memory (CCU) 110, a virtual memory unit (VMU) 115, input-output subsystem 190, a memory control and interface Yunitsuto 120, and for interleaving operations configured interleaved memory bank (160a, 160b, 160C) (hereinafter, referred to as main memory 160) are included. 主メモリ160 は外部データバス162 を介してMCUl20に接続されている。 The main memory 160 is connected to MCUl20 via the external data bus 162. 本発明はマルチプロセサ環境で動作すると予想されるので、その場合、他のプロセサもメモリバス162 に接続される。 Since the present invention is expected to operate in a multiprocessor environment, in which case, is also connected another processor to the memory bus 162. ホストプロセサ105 は主メモリ160 に於いて各アドレス又は記憶場所に格納されているソフトウェア命令を実行する。 Host processor 105 executes software instructions stored at the main memory 160 to the address or memory location. これらのソフトウェア命令はホスト・プロセサ105 にプログラム・カウンタの制御の下にイン・オーダで転送される。 These software instructions are transferred in-order under the control of a program counter in the host processor 105. しばしば、命令のうちあるものはホストプロセサ105 が一つ又は複数の周辺入出力装置135 をアクセスすることを必要とする。 Often, certain of the instruction requires that the host processor 105 to access one or more peripheral input-output device 135.

MCU120は一つの回路であり、この回路によってデータ及び命令はCCU110(D_キャッシュ119 とI_キャッシュ118 (読み出し専用))、IOU150、及び主メモリ160 の間を転送される(読み出されるか書き込まれる)。 MCU120 is one circuit, the data and instructions by the circuit (I_ cache 118 (read-only and D_ cache 119)) CCU110, IOU150, and (or written are read out) by the transfer between the main memory 160. MCU120にはスイッチ・ネットワーク145 が含まれ、それにはスイッチ・アービトレーション・ユニット132 、データ・キャッシュ・インタフェース・ユニット117 、命令キャッシュ・インタフェース回路112 、I/O インタフエース回路155 、及びポートとして知られる一つ又は複数のメモリポート・インタフェース回路148 が含まれる。 The MCU120 includes switch network 145, the switch arbitration unit 132 it is data cache interface unit 117, instruction cache interface circuit 112, I / O in tough Ace circuit 155, and single, known as port One or more memory port interface circuits 148 are included. 各ポート・インタフェース回路148 にはポート・アービトレーション・ユニット134 が含まれている。 Each port interface circuit 148 includes a port arbitration unit 134.

スイツチ・ネツトワーク145 はマスタ装置とスレーブ装置間の通信の手段である。 Switch - the net work 145 is a means of communication between the master and slave devices. スイッチ・ネットワーク120 に対するマスタ装置になり得るのはD- キャッシュ119 とI- キャッシュ118 、叉はI/O コントローラ・ユニット(IOU )150 である。 Can become the master device to the switch network 120 is D- cache 119 and I- cache 118, or is I / O controller unit (IOU) 0.99. スレーブ装置として機能し得るものは、例えば、メモリ・ポート148 叉はIOU150である。 Which can function as a slave device, for example, a memory port 148 or is IOU150. スイッチ・ネットワーク145 の機能はCCU 110 (I_キャッシュ118 及びD_キャッシュ119 )とIOU150から様々な命令及びデータ要求を受け取ることである。 Function of the switch network 145 is to receive various instructions and data requests from CCU 110 (I_ cache 118 and D_ cache 119) and IOU150. これらのユニットをバス要求者と呼ぶ。 These units is referred to as a bus requester. これらの要求を受け取った後、スイッチ・アービトレーション・ユニット132 及びポート・アービトレーション・ユニット134 は要求を優先度に応じて並べ、適切なメモリポートに渡す(命令アドレスによる)。 After receiving these requests, the switch arbitration unit 132 and the port arbitration unit 134 arranges in response to a request to the priority, and passes into the appropriate memory port (depending on the instruction address). ポート148 、或いは場合によっては複数のポート、は次に必要なタイミング信号を生成し、データを外部バス162 に送り、あるいはデータを外部バス162 から受け取る。 Port 148 or multiple ports in some cases, and generates the required next timing signal, receives send data to the external bus 162, or data from the external bus 162.

命令フェッチ・ユニット(IFU )106 及び命令実行ユニット(IEU )107 はホスト・プロセサ105 の主要な動作構成要素である。 Instruction Fetch Unit (IFU) 106 and an instruction execution unit (IEU) 107 are the principal operating components of the host processor 105. IFU106及びIEU107の機能を直接サポートするためにVMU115、CCU110、及びMCU120が配置されている。 IFU106 and VMU115 to directly support the function of IEU107, CCU110, and MCU120 are arranged. IFU106の主要な機能は命令の取り出し、IEU107による実行を待つ命令のバッファリング、そして、一般的に、次の命令の取り出しに使用される次の仮想アドレスの計算、である。 Primary function of IFU106 fetches instructions buffering of instructions waiting for execution by IEU107, and, generally, the calculation of the next virtual address to be used to retrieve the next instruction is. 各命令は命令バス101 を介してI_キャッシュ118 からIFU106によって同時に取り出される。 Each instruction is fetched simultaneously by IFU106 from I_ cache 118 via instruction bus 101. 命令は「バケット」或いは4個の命令の集合に入れられる。 Instructions are put into a set of "buckets" or four instructions. 命令集合の転送は制御バス102 を介して供給される制御信号によって、IFU106及びCCU110の間で調整される。 The control signal transfer instruction set is supplied via the control bus 102, it is adjusted between IFU106 and CCU 110. 取り出される命令の仮想アドレスはIFU 制御及びアドレス・バス103 を介してIFU106によってVMU115に供給される。 Virtual address of the instruction to be fetched is supplied to the IFU106 by VMU115 through the IFU control and address bus 103. VMU115へのアクセスに関する調停の必要性は、IFU106及びIEU107の両者ともVMU115を共通の、共有の資源として使用することから生じる。 The need for arbitration for access to VMU115 results from using VMU115 both of IFU106 and IEU107 common, as resource sharing. アーキテクチャ100 の好適な実施例に於いて、仮想アドレスの物理ページ内のアドレスを定義する下位ビットはIFU106によって、制御線102 を介してCCU 110 に直接転送される。 In a preferred embodiment of the architecture 100, the low-order bits IFU106 defining an address within a physical page of the virtual address, directly transferred to the CCU 110 via the control line 102. IFU106によって供給される仮想アドレスの仮想化上位ビットはバス103 、104 のアドレス部分によってVMU115に供給され、そこで対応する物理ページ・アドレスに変換される。 Virtualization upper bits of the virtual address supplied by IFU106 is supplied to VMU115 by the bus 103, 104 address portion of, where it is converted into a corresponding physical page address. IFU106にとっては、この物理アドレスは変換要求がVMU115に出された1/2 内部プロセサ・サイクル後、制御線111 を介してVMU115からCCU110に直接転送される。 For IFU106, this physical address conversion request after half internal processor cycle issued to VMU115, are transferred directly from VMU115 to CCU110 via a control line 111.

一方、IFU106によって取り出された命令ストリームは命令ストリーム・バス108 を介してIEU107に供給される。 On the other hand, the instruction stream fetched by IFU106 is supplied to IEU107 via an instruction stream bus 108. 制御信号は制御線109 を介してIFU106とIEU107の間でやり取りされる。 Control signals are exchanged between IFU106 the IEU107 via a control line 109. IEU107はデータを双方向データ・バス112 を介してD_キャッシュ215 に格納し、またそれから検索する。 IEU107 stores the data in D_ cache 215 via a bidirectional data bus 112, also retrieved from it. IEU107によるデータ・アクセスの場合、物理アドレス全体が制御バス113 のアドレス部分によってCCU110に供給される。 If IEU107 data access by the entire physical address is supplied to CCU110 by the address portion of the control bus 113. IEU107はVMU115を、仮想データ・アドレスを、CCU115への送り出しに適切な物理データ・アドレスに変換する資源として利用する。 IEU107 is a VMU115, the virtual data address is utilized as a resource for converting the appropriate physical data address to delivery to CCU115. IFU106に対するオペレーションとは異なり、VMU115は対応する物理アドレスをバス104 を介してIEU107に返す。 Unlike operations for IFU106, VMU115 returns to IEU107 the corresponding physical address via the bus 104.

CCU110はホスト・プロセサ105 と主メモリ160 との間のバッファとして使用される。 CCU110 is used as a buffer between the main memory 160 and host processor 105. 一般的に、CCU110は小型の、高速メモリで、ホスト・プロセサ105 の近傍に位置し、最も最近アクサスされたコード又はデータを保持する。 Generally, CCU 110 is a small, fast memory, located in the vicinity of the host processor 105, to hold the most recently Akusasu code or data. CCU110は、適切であれば物理アドレスで定義されたデータ要求が命令及びデータ・キャッシュ118 、119 から満たされるか否かを決定するという一般的に従来的な高レベルの機能を行なう。 CCU110, if appropriate defined data requested by the physical address is performed the function of generally conventional high-level of determining whether satisfied from the instruction and data caches 118, 119. 命令キャッシュあるいはデータ・キャッシュ118 、119 へのアクセスによってアクセス要求が満たせる場合、CCU110はデータ・バス101 、113 を通じてデータ転送を調整し実行する。 If an access request be satisfied by access to the instruction cache or data cache 118, 119, CCU 110 performs adjusts the data transfer via the data bus 101, 113. 命令キャッシュ或いはデータ・キャッシュ118 、119 へのアクセスによってアクセス要求が満たせない場合、CCU110は対応する物理アドレスをMCU120に供給する。 If the access to the instruction cache or data cache 118, 119 does not satisfy the access request, CCU 110 provides the corresponding physical address to the MCU 120. この場合、物理アドレスの他に、主メモリ160 への読み出し又は書き込みアクセスが必要であるかを識別するために十分な制御情報、各要求のソース又は行き先キャッシュ118 、119 、更に要求されたオペレーションがIFU106又はIEU107によって発行された最終的なデータ要求と関連付けられるための追加の識別情報がCCU110によってMCU120に供給される。 In this case, in addition to the physical address, sufficient control information to identify whether it is necessary to read or write access to main memory 160, the source or destination cache 118, 119 for each request, it is further requested operation IFU106 or additional identification information to be associated with the issued final data requested by IEU107 is supplied to MCU120 by CCU 110.

図2にIEU107のデータ・パスの代表的な高レベルのブロック図を示す。 Figure 2 shows a block diagram of a representative high-level data path IEU107. IEU107の目的は最小限の時間で最大数の命令を実行することである。 The purpose of IEU107 is to perform a maximum number of instructions in a minimum amount of time. IEU107にはレジスタ・ファイル250 、ロード/ ストア・ユニツト(LSU )205 、命令バス(IBUS)225 、一式の機能ユニット260 、262 、230 、イミディエト変位バッファ255 、セグメント・ベース・ジェネレータ257 、及び書き込みバス270 が含まれている。 Register file 250 in IEU107, load / store Yunitsuto (LSU) 205, an instruction bus (IBUS) 225, a set of functional units 260, 262, 230, Imidieto displacement buffer 255, the segment base generator 257 and write bus, 270 are included. LSU205はLSU アドレス・パス220 及びLSU データ・パス210 の二つの部分に分かれている。 LSU205 is divided into two parts of LSU address path 220 and LSU data path 210.

スーパースカラ制御ブロック(図示せず)はデータ依存性検査を行い、必要な機能ユニット260 、262 、及び230 が使用可能であるかどうかを検査することによって、ある命令が発行可能であるか否かを決定する。 Superscalar control block (not shown) performs data dependency checking, by checking whether the required functional unit 260, 262, and 230 can be used, whether an instruction is issuable to determine. 一旦スーパースカラ制御ブロックが一つの命令を発行するように決定すると、IBUS225 は発行される命令が必要とするデータを検索する(検索はレジスタ・ファイル250 )バイパス・データ280 、282 、或いはイミディエト・データ258 、259 から行われる)。 Once the superscalar control block decides to issue one instruction, IBUS225 the instructions issued to search for data required (search register file 250) bypass data 280, 282, or Imidieto data 258, is made from 259). IBUS225 は複数のマルチプレクサによって構成され、これらのマルチプレクサが、どのデータが機能ユニット260 、262 、230 に転送されるかを選択する。 IBUS225 is constituted by a plurality of multiplexers, these multiplexers select which data is transferred to the functional units 260, 262, 230. IBUS225 はAバスとBバスと呼ばれる一対のバスにデータの転送を行なう。 IBUS225 performs the transfer of data to a pair of bus called the A bus and the B bus. 選択されたデータは、諸機能ユニット260 、262 、230 のうちどの機能ユニットがその命令によって使用されるか、或いは現在実行中の命令のオペレーションによって必要とされているか、を決定することによって、AバスかBバスのどちらかのバスに入れられる。 The selected data, or various functional units 260, 262, 230 which functional units of the is used by the instruction, or whether it is required by the currently executing instruction operations, by determining, A It is placed in either of the bus of the bus or B bus.

ほとんどの命令の入力及び出力は複数のレジスタ・ファイルのうち一つのレジスタ・ファイルから送られる、つまり格納されている。 Input and output of most instructions are sent from one of the register file of the plurality of register files, that is stored. 好適な実施例では、各レジスタ・ファイル250 (例えば、別個の整数、浮動小数点、或いはブール・レジスタ・ファイル)は32個の実数エントリ254 及び8 個の一時バッファ252 のグループを有する。 In a preferred embodiment, each register file 250 (e.g., separate integer, floating point or boolean register files) has a group of 32 real entries 254 and eight temporary buffer 252. 一つの命令が完了すると(「完了」とはオペレーションが終了し、オペランドはその行き先レジスタに書き込める状態にあることをいう)、その結果は一時バッファ252 中の事前に割り当てられた場所に格納される。 When one instruction is completed (operation is complete the "Done", the operand refers to a state that can be written to its destination register) is stored in a location the results of pre-allocated in the temporary buffer 252 . これらの結果は後に実レジスタ254 中の適切な場所に移される。 These results are transferred to the appropriate location in the real register 254 after. このような結果の一時バッファ252 から実レジスタ254 への移動は「リタイアメント」(retirement)と呼ばれる。 Transfer from temporary buffer 252 for such a result to the real register 254 is referred to as a "retirement" (retirement). 一度に複数の命令がリタイアできる。 A plurality of instructions can be retired at a time. リタイアメントにより、コンピュータのプログラムカウンタを含めて、マシンの「公式な状態」の更新が行なわれる。 By retirement, including the program counter of the computer, the update of the "official status" of the machine is carried out.

命令は「バケット」と呼ばれる4個のグループ毎に命令デコードFIFO(first-in-first-out)先入れ先出し方式)レジスタ・スタック記憶装置(図示せず)(本明細書では命令ウィンドウと呼ぶ)を介してIFU106からIEU107へ送られる。 Instruction via the instruction decode FIFO every four groups called "buckets" (first-in-first-out) first-in first-out) register stack storage device (not shown) (referred to herein as an instruction window) It sent from the IFU106 to IEU107 Te. バケツトはロード、ストア、及び2個の実行ユニットで構成される4個のユニットに分解される。 Baketsuto is broken load, store, and four units consisting of two execution units. バケットがこれら4個のユニットに分解された理由はシステム100 はロード、ストア、実行の各オペレーション又はそれら全ての組み合わせを実行できる命令を使用して動作するからである。 Why the bucket is decomposed into these four units since system 100 is loaded, the store can perform each operation or all of combinations of run operate using instructions. 従って、本発明はこれら三つの場合の全てを処理できるバケットを供給するものである。 Accordingly, the present invention is to provide a bucket that can handle all cases of these three.

IEU107は一度に4個のバケットの命令までデコードしスケジュールできる。 IEU107 can decode schedule until the instruction of the four buckets at a time. 命令ウィンドウは全部で16個の命令を4個のバケツトに格納する。 The instruction window stores 16 commands a total of four Baketsuto. IEU107は命令ウィンドウを検査し、各サイクルごとにIEU107は命令ウィンドウから最大数の命令を発行しようとする。 IEU107 examines the instruction window, IEU107 tries to issue a maximum number of instructions from the instruction window for each cycle. 一旦1個のバケット中の全ての命令が実行され、それらの結果がプロセサのレジスタ・ファイル250 に格納されると、そのバケットは命令ウィンドウからフラッシュされ、次に新しいバケットが命令ウィンドウに格納される。 Are all instructions execution once in one bucket, as they result is stored in the register file 250 of the processor, the bucket is flushed from the instruction window, then a new bucket is stored in the instruction window . 一旦その命令が発行されると、レジスタ・ファイル250 中の諸レジスタがアクセス可能となる。 Once the command is issued, various registers in the register file 250 is accessible. 一時レジスタ252 は先行の命令によって生成されたデータに対してデータ依存性を持っていた命令が実行されるとアクセスされる。 Temporary register 252 instructions have data dependency on generated by the preceding instruction data is when executed accessed. レジスタ・ファイル250 からのデータはデータ線254 を介してIBUS225 に転送される。 Data from the register file 250 are transferred to IBUS225 via the data line 254.

DAFU230 はLSU205によって使用される32ビットのリニア・アドレスを計算する。 DAFU230 calculates a 32-bit linear address used by LSU205. DAFU230 では多数の異なったアドレス指定モードがサポートされている。 A number of different addressing modes are supported in DAFU230. 2サイクルを必要とするデータが4ワード境界を越える場合、そのデータの最初と最後のアドレスはDAFU230 によって計算される。 If the data that requires two cycles exceeds 4 word boundary, the first and last address of the data is calculated by DAFU230. アドレスを形成するために4個までのコンポーネントが加算される。 Components of up to four to form the address is added. すなわち、セグメント・ベース、ベース・レジスタ、スケールド・インデックス・レジスタ、及び変位値、の4個のコンポーネントである。 That is, segment base, a base register, a scaled index register, and a displacement value, which is four components. セグメント・ベースには目的のメモリ・セグメントの開始アドレスが含まれている。 The segment base contains the starting address of the memory segment of interest. ベース及びインデックス・レジスタはレジスタ・ファイル250 中のどの32ビットレジスタであっても構わない。 Base and index registers may be any 32 bit register in the register file 250. インデックス・レジスタはそれを1、2、4、又は8で乗算することによってスケールされる。 Index register is scaled by multiplying it 1,2,4, or 8. 変位値は命令中に存在する定数値(イミディエート値)である。 Displacement value is a constant value that is present in the instruction (an immediate value). これらのフィールドのうちどのフィールドも省略可能であり、斯くしてアドレス演算に於ける最大限の自由度が得られる。 Which fields of these fields may be omitted, the degree of freedom of at maximum is obtained at the address calculated by thus.

セグメント・ベースはセグメント・レジスタ・ブロック257 から得られる。 Segment base is obtained from the segment register block 257. セグメント・ベース・ジェネレータ257 はデータが如何にしてメモリ中で分割されているかを示す一つの値を生成し、この値をデータ線266 を介してDAFU230 に転送する。 Segment base generator 257 in the how the data to generate one value indicating whether it is divided in memory, and transfers this value to DAFU230 via the data line 266. 変位はイミディエート変位バッファ255 から得られる。 Displacement is obtained from the immediate displacement buffer 255. イミディエート変位バッファ255 はイミディエート・データを線265 を介してDAFU230 に転送し、またそれぞれデータ線258 及び259 を介してIBUS225 に転送する。 Immediate displacement buffer 255 transfers the DAFU230 over line 265 the immediate data and transfers the IBUS225 via respective data lines 258 and 259. DAFU230 及びVMU115はLSU205に全てのロード及び/ 叉はストア要求を供給する。 DAFU230 and VMU115 all of the load and / or to LSU205 supplies store request. LSU205はこれらの要求を処理し、後に全ての要求されたデータを書き込みバス270 に返す。 LSU205 processes these requests and returns to the bus 270 writes all of the requested data after. 書き込みバス270 はマルチプレクサの集合で成り、マルチプレクサは優先度スキームの基づいてどのデータがレジスタ・ファイル250 にラッチするかを選択する(例えば、LSU205によって供給されるデータ又は機能ユニット260 或いは262 によって供給されるデータ)。 Write bus 270 comprises a set of multiplexers, the multiplexer is supplied by the priority which the data is to choose to latch into register file 250 based a scheme (e.g., data or functional units 260 or 262 supplied by LSU205 that data). そのデータは線275 、276 を介して書き込みバス270 からレジスタ・ファイル250 に転送される。 The data is transferred from write bus 270 to register file 250 via line 275, 276. ロード及び/ 叉はストアからのデータは常に最高の優先度を与えられる。 Load and / or the data from the store is always given the highest priority. 時折、2個の命令が連続して発行され、それらが相互に依存している場合、IEU107はそのデータをレジスタ・ファイル250 に格納することをバイパスし、それを直ちにIBUS225 にラッチしようとする。 Occasionally, two instructions are issued in succession, if they are interdependent, IEU107 bypasses storing the data in the register file 250 attempts to latch it immediately into IBUS225. これはデータ線280 、281 を介して達成できる。 This can be accomplished via data lines 280, 281. 従って、データを待つ資源は、そのデータがレジスタ・ファイル250 の中を通過するまで待ってサイクルを浪費しなくてすむ。 Thus, resources waiting for the data, do not have to waste cycles waiting until that data passes through the register file 250.

データ線275 、276 からのデータも又、一つの命令が実行オペレーション及びストア・オペレーションを伴う場合、LSU データ・パス210 に直接供給される。 Data from the data lines 275, 276 also when one instruction is accompanied by a run operation and store operation, is directly supplied to the LSU data path 210. ロード及び実行オペレーションが行なわれた後、ストアを行うためにデータはLSU データ・パス210 に直接供給できる。 After loading and execution operation was performed, the data in order to perform the store can be supplied directly to LSU data path 210. 斯くしてストア・データを得るために一時レジスタ・ファイル252 をアクセスする手間が省け、従って命令の実行時間の増大につながる。 Thus was it eliminates the need to access the temporary register file 252 in order to obtain the store data, thus leading to increased execution time of the instruction. LSU205の主な目的は可能な限りCCU110にロード要求をアウト・オブ・オーダで行い、ロード・データをなるべく速くIEU107に返すことである。 The main purpose of LSU205 the CCU110 as possible to load required by the out-of-order, is to return to IEU107 as fast as possible to load data. ロード・オペレーションはアドレス衝突がなく、書き込み実行待ちが存在しない時のみ実行できる。 Load operation has no address collision, it can be performed only when the write execution waiting does not exist. アドレス衝突が発生するのは、古い命令がまだ書き込み中の記憶場所に於いて読み出しが要求された時である。 Is the address collision occurs is when reading at the old memory location of the instruction is still being written is required. 書き込み実行待ちとは、古い命令が格納オペレーションを要求したがストア・アドレス計算がまだ行なわれていないことである。 The writing waiting to be executed, is that although old instruction requests a store operation is store address calculation has not yet been carried out. LSU205はデータ・パス210 とアドレス・パス220 という二つの部分に分割されている。 LSU205 is divided into two parts: data path 210 and address path 220. アドレス・パス220 はDAFU230 、VMU232、及びCCU110とインタフェースし、データ・パス210 は書き込みバス270 、CCU110、DAFU230 、及びIBUS225 とインタフェースする。 Address path 220 interfaces with DAFU230, VMU232, and CCU 110, data path 210 is a write bus 270, CCU110, DAFU230, and IBUS225 and interfaces. LSU の三つの主要なタスクは(1) アウト・オブ・オーダのキャッシュ要求の処理、(2) アドレス衝突の検出、及び(3) データの位置合わせである。 LSU is three main tasks: (1) treatment of the out-of-order cache requests, is (2) Detection of address collision, and (3) alignment of data.

各命令バケットは同一のアドレスに対するロード及びストア(その間に他のオペレーションが含まれることもある)、ロードのみ、ストアのみ含むことができる。 Each instruction bucket (sometimes includes other operations in the meantime) loads and stores to the same address, only loaded may include only store. 或いはロードもストアも含まないこともある。 Or sometimes the load also does not contain the store. 従って、LSU205は最大4 個のロードと最大4 個のストアから選択することができる。 Therefore, LSU205 can be selected from up to four of the load and up to four of the store. 本発明の好適な実施例で使用される命令セットはCISC型命令セットで、それによって次のような複雑なオペレーションが可能となる。 Instruction set used in the preferred embodiment of the present invention is a CISC type instructions, thereby allowing complex operations such as the following.

a) R1<-R1+[R2+(R3*2)+3] a) R1 <-R1 + [R2 + (R3 * 2) +3]
b) [R2]<-[R2]OR R4 b) [R2] <- [R2] OR R4
但し、[x] はアドレスxに存在するメモリ・オペランドである。 However, [x] is a memory operand present in the address x. 好適な実施例に於ける命令デコード・ユニット(図示せず)はこれらのCISC型命令を次のようにRISC型シーケンスに分解する。 Instruction decode unit (not shown) in a preferred embodiment decomposes these CISC type instructions to RISC-type sequence as follows.

a) LOAD[R2+(R3*2)+3]->Temp Register a) LOAD [R2 + (R3 * 2) +3] -> Temp Register
Execute R1+Te mp ->R1 Execute R1 + Te mp -> R1
b) LOAD[R2]->Temp Register b) LOAD [R2] -> Temp Register
Execute Temp OR R4->Te mp Register Execute Temp OR R4-> Te mp Register
STORE Temp Register to addrcss[R2] STORE Temp Register to addrcss [R2]
このどちらの場合でも、DAFU230 はメモリ・オペランドのアドレスを計算するが、ロード及びストアは同じアドレスを共有しているので1個の命令バケット当たり一つのアドレス計算だけが必要である。 Even in the case of this one, DAFU230 is to calculate the address of the memory operand, load and store is required only one instruction address calculation of one per bucket because they share the same address. CISC型命令をRISC型命令にデコーディングすることについての説明に関しては1992年3 月31日出願の米国特許出願番号07/857,599(代理人整理香号SP032 )「CISC型からRISC型命令への変換のためのアライメント並びにデコーディング」(CISC to RISC Instruction Translation Alignment and Decoding)を参照されたい。 Conversion of CISC-type instructions from the US patent application Ser. No. 07 / 857,599 (Attorney Docket incense No. SP032) "CISC type of application March 31, 1992 for a description of about decoding in RISC type instructions to RISC-type instruction see alignment and decoding "(CISC to RISC Instruction Translation alignment and decoding) for. 当該出願の開示を参照することによって本出願に含まれているものとする。 It assumed to be included in this application by reference to the disclosure of the application.

図3にLSU205のアドレス・パス220 の詳細なブロック図を示す。 Figure 3 shows a detailed block diagram of the address path 220 of LSU205. ロード命令は命令ウインドウから発行され、IEU107によってアウト・オブ・オーダで実行されるが、ストアは常にイン・オーダで発行される。 Load instruction is issued from the instruction window, but is running in out-of-order by IEU107, stores are always issued in-order. ロード及び/ 叉はストア用のアドレスは、全てのオペランドが有効で且つDAFU230 がアドレス計算に使用可能になりしだい計算される。 Load and / or the address for the store, and is effective all operands DAFU230 are calculated as they become available in the address calculation. DAFU230 から物理アドレスを受け取る前にLSU205はキャッシュ要求を行うことができるが、次のクロックサイクルまでに物理アドレスがDAFU230 からもVMU115からも来ない場合、キャッシュ要求は取り消される。 LSU205 before receiving a physical address from DAFU230 can make a cache request, but if the physical address before the next clock cycle does not come from VMU115 from DAFU230, the cache request is canceled. その場合、キャッシュ要求は後に再発行されねばならない。 In that case, it must be re-issued after the cache request.

各命令バケット当たり1個のアドレスのみが必要で、そのアドレスはロード・アドレスとストア・アドレスの両方として機能する。 Only one address per each instruction bucket is required, the address is to function as both a load address and a store address. 各命令バケット当たり、2個の32ビット・アドレスはアドレス・バッファ310 〜313 のうち一つに格納される。 Per each instruction bucket, two 32-bit addresses are stored in one of the address buffers 310-313. すなわち、アクセスの最初のバイトが一つのバッファに格納され、アクセスの最後のバイトが別のバッファに格納される。 That is, the first byte of the access is stored in one buffer, the last byte of the access is stored in a separate buffer. 下位12ビットがDAFU130 で準備されると、これらのビットは一時バッファ305 にラッチされる。 When the lower 12 bits are prepared in DAFU130, these bits are latched in the temporary buffer 305. 上位20ビットがVMU115で準備されると、次のサイクルで全ての32ビットは適切なアドレス・バッファにラッチされる(すなわち、Address 1叉はAddrcss 2)。 When the upper 20 bits are prepared in VMU115, all 32 bits in the next cycle is latched into the appropriate address buffer (i.e., Address 1 or Addrcss 2). アドレス計算は命令の順序で行なわれず、レジスタ依存性が解消した時行なわれる。 Address calculation is not performed in the order of the instruction, register dependencies is performed when solved. アドレス変換の後、有効ビット(図示せず)が命令のアドレス・バッファ310 〜313 に設定され、アドレスが有効であることを示す。 After the address conversion, the valid bit (not shown) is set in the address buffer 310-313 of instruction, indicating that the address is valid. 両方のアドレスは二つの理由で保持される。 Both addresses are held for two reasons. すなわち、アドレス衝突の検出とページ交差用のキャッシュ要求である。 That is, the cache requests for detecting a page crossing of address collisions.

IFU106によって使用されるアドレスが仮想アドレスであるのに対し、LSU205によって使用されるアドレスは物理アドレスである。 To the address to be used is a virtual address by IFU106, addresses used by LSU205 is a physical address. IFU106は、CCU110とVMU115間の調整によって物理アドレスが生成されるのに依存しつつ、仮想アドレスに対して動作するのに対し、IEU107ではLSU205が物理アドレス・モードで直接動作することが必要である。 IFU106, while dependent on the physical address is generated by the adjustment between CCU110 and VMU115, while operating on a virtual address, it is necessary to work directly with the IEU107 LSU205 physical address mode . この条件が必要である理由はオーバラップする物理アドレスのデータ・ロード及びストア・オペレーションを伴う、アウト・オブ・オーダで実行される命令が存在する場合、データの保全を保証するためである。 For reason this condition is necessary with the data load and store operations of physical addresses overlap, there are instructions to be executed out of order, in order to ensure the integrity of the data. データ保全を保証するために、データがストア命令によって供給された場合、LSU205はストア命令がIEU107によってリタイアされるまでそのデータをバッファリングする。 To ensure data integrity, when the data is supplied by the store instruction, LSU205 the store instruction to buffer the data until it is retired by IEU107. 従って、LSU205によってバッファリングされたストア・データはLSU205にのみ一意的に存在することがある。 Thus, store data buffered by LSU205 may exist uniquely only LSU205. 同一の物理アドレスを実行済みではあるが未だリタイアされていないストア命令として参照する複数のロード命令は、ストア命令が実際にリタイアされるまで遅らされる。 A plurality of load instructions with the already running the same physical address will be referred to as a store instruction which has not yet been retired is delayed until the store instruction is actually retired. その時点で、ストア・データはLSU205によってCCU110に転送可能となり、次に、CCU のデータ・ロード・オペレーションの実行によって直ちに再びロードされる。 At that time, the store data becomes available transfer CCU110 by LSU205, then immediately loaded again by the execution of the data load operation CCU.

上述の如く、DAFU230 によるアドレス計算は1クロック・サイクルで起こり、VMU132によるアドレス変換は次のクロック・サイクルで起こる。 As described above, the address calculation by DAFU230 occurs in one clock cycle, the address conversion by VMU132 occurs in the next clock cycle. アドレスがロード用のアドレスであるならば、キャッシュ要求が行われる。 If the address is an address for the load, cache request is made. 一方、アドレスがストア用のアドレスであるならば、格納を行う前にLSU205はリタイアメント信号が送られて来るのを待つ。 On the other hand, if the address is the address for the store, LSU205 before performing the store is waiting for sent the retirement signal. ロード要求はCCU110に対してアドレス計算の最初のサイクルでも行なえる。 Load request can be done even in the first cycle of the address calculated for CCU110. この時点で該アドレスの下位12ビットがCCU110に送られ、上位20ビット(ページ番号を表わす)はアドレス変換の後、次のサイクルでCCU110に送られる。 Lower 12 bits of the address at this time is sent to the CCU 110, (representing the page number) upper 20 bits after the address conversion, it is sent to the CCU 110 in the next cycle. ロード・ストア・アドレス・パス220 が使用可能な場合、線330 を介してイミディエト要求をキャッシュ110 に対して行なうことができる。 When the load store address path 220 is available, it is possible to perform Imidieto request via line 330 to the cache 110. 現在、ロード・ストア・アドレス・パス220 には実行待ちのロード及び/ 又はストア・アドレスは存在しないので、アドレス衝突の可能性も書き込み実行待ちの可能性も全く存在しない。 Currently, because there is no load and / or store the address of the execution waiting to load store address path 220, it does not exist at all could be the possibility of writing waiting for execution of address collision. 従って、直ちにキャッシュ110 に対して要求を行なえる。 Therefore, immediately perform a request to the cache 110.

ブロック340 には複数のマルチプレクサが含まれているが、このブロックはアドレス・バッファ310 〜313 からキャッシュ要求用のアドレスを選択するために使用される。 While the block 340 contains multiple multiplexers, this block is used from address buffer 310 to 313 to select the address for the cache request. LSU205はキャッシュ110 に対して要求を行なうためにアドレス・バッファ310-313 (即ち、予約ステーション)を使用する。 LSU205 uses address buffers 310-313 to perform the request to the cache 110 (i.e., reservation stations). 4個のアドレス・バッファ310 〜313 (予約ステーションとも呼ばれる)は中央命令ウィンドウ(図示せず)に含まれる4個のバケットに対応する。 Four address buffers 310-313 (reservation station also called) corresponds to the four buckets contained in the central instruction window (not shown). IEU107がデコード・ユニット(図示せず)から新しいバケットを要求すると、アドレス・バッファ310 〜313 のうち一つが予約される。 IEU107 is when requests a new bucket from the decode unit (not shown), one of the address buffers 310-313 is reserved. アドレス・バッファ310 〜313 は命令番号に従って割り当てられる。 Address buffer 310-313 is assigned according to instruction number. 最も若い(最新の)命令を示すための履歴ポインタが更新される。 Most young (most recent) history pointer to indicate the instruction is updated. この時点に於いて、命令がロード、ストア、その両方を伴うものであるか、あるいはそのどちらも伴わないものであるかが判明する。 In this point, the instruction load, store, or those with both of them, or is or is one that does not involve both of which turn out. また、ロード及び/ 又はストアオペレーションで使用されるデータのサイズも判明する。 It also turns out the size of the data to be used in load and / or store operation. 対応する命令がIEU107によってリタイアされた時に、アドレス・バッファ310 〜313 は割り当て解除される。 When the corresponding instruction is retired by IEU107, address buffers 310-313 are deallocated. 割り当て解除の後、新しい命令バケットがデコードユニット(図示せず)から受け取られる。 After deallocation, a new instruction bucket is received from the decode unit (not shown). ロード・バイパス及びアウト・オブ・オーダ・ロード実行を使用するためには、ストアに対するロード依存性(アドレス衝突)を検出する必要がある。 To use the load bypass and out-of-order load execution, it is necessary to detect the load dependency on the store (address collision). ロード依存性はアドレス衝突または実行待ちのストア・アドレスのよって示される。 Load dependence is shown by the store address of address collision or waiting to be executed. ロード依存性が発生するのは、古い命令がストア・オペレーションを要求した記憶場所と同じ記憶場所でロード・オペレーションが要求された時である。 The load dependency occurs, is when the load operation is requested at the same memory location as the memory location where the old instruction requests a store operation. アドレス衝突の検出には、ロードの最初のアドレスが各先行ストアの2個のアドレス(最初と最後)と比較される必要がある。 The detection of the address conflict, it is necessary to first address of the load is compared to the two addresses of each preceding store (first and last). アドレスの最後のバイトとのこのような比較が必要なのは、ストアが4ワード・ページ境界を越えたり、位置合わせがなされていなかったりするからである。 Such a comparison is necessary because of the last byte of the address, store or beyond the 4-word page boundary, because the alignment or may not have been made. アドレス・ビットのマスキングは偽の依存性検出を最低限に抑えるためにデータのサイズに応じて行なわれる。 Masking of the address bits is done depending on the size of the data to minimize false dependency detection. ロード・データが4ワード(64ビット)境界からはみだすと、好適な実施例ではそのロード・データにはロード依存性があると仮定される。 When the load data is protruded from the four words (64-bit) boundaries, in a preferred embodiment it is assumed to its load data is loaded dependency. その理由は、ロードの第2アドレスを各ストアの二つのアドレスと比較するコンパレータが存在しないからである。 This is because there is no comparator for comparing the second address of the load and the two addresses of each store. 一つの衝突が検出されると、ロード・オペレーションはその衝突しているストア・オペレーションがCCU110に送られるまで待たなければならない。 When one of the collision is detected, the load operation must wait until the store operation that is the collision is sent to the CCU110. 実行待ちのストア・アドレスとはストアのアドレスが未だ有効でないということを意味する。 With the store address of the execution waiting means that the address of the store is not yet valid. 従って、そのアドレスが判明するまでロード依存性の存在が仮定されるのである。 Therefore, it is the presence of a load dependency is assumed until the address is found.

図4にLSU205によって使用されるアドレス衝突ブロック400 の概略図を示す。 Figure 4 shows a schematic diagram of an address collision block 400 used by LSU205. アドレス比較論理による二つのアドレスの比較は最下位ビットのビット0 〜4 がマスクされた後行なわれる。 Comparison of the two addresses by the address comparison logic is performed after the bit 0-4 of the least significant bit is masked. マスキングの後、アドレスが全く一致するならば、これら二つのアドレスの間に衝突が存在することになる。 After masking, if the addresses at all matches, there will be a collision between these two addresses. 各比較ごとに、二つのオペレーションの内最大のオペランドがマスキング制御のために使用される。 For each comparison, the inner maximum operand of the two operations is used for the masking control. 各アドレスから、0 〜4 個の最下位ビットがマスクされる。 From each address zero to four least significant bits are masked. その際、回路400 はアドレス・バッファ410 〜413 の各バッファごとに1回、つまり合計4回複写される(図4にアドレス・バッファ310 のアドレス衝突検出ブロックを示す)。 At that time, circuit 400 (indicating an address collision detection block for address buffer 310 in FIG. 4) once, i.e. a total of 4 times duplicated by a respective buffer of the address buffer 410-413.

各ロードの最初のアドレス405 、406 がアドレス407 〜418 のうち1対おきに比較される。 First address 405, 406 for each load is compared to a pair every of the address 407-418. 2個の比較の結果とその有効ビット419 〜424 間でAND がとられ、その後全部でORがとられ、その結果アドレス・マッチ430a,430b,430cが生成される。 AND is taken between the two results of the comparison and its valid bit 419 ~424, OR is taken subsequently total, the result address match 430a, 430b, is 430c is generated. アドレス・マッチ430 は次に命令番号比較425 〜427 及びストア・ビット431 〜433 とAND がとられ、その結果衝突チェック450a、450b、450cが生成される。 Address match 430 is then AND the instruction number compare 425-427 and the store bit 431-433 is taken, as a result the collision check 450a, 450b, is 450c is generated. 命令番号比較425 〜427 は二つの命令間の比較的新しさを示す。 Instruction number compare 425-427 indicates the relatively freshness between two instructions. 例えば、命令番号比較425 はアドレス・バッファ310 中の最初の命令と、アドレス・バッファ311 中の最後の命令との間の比較的新しさを示す。 For example, instruction number compare 425 denotes a first instruction in address buffer 310, a relatively freshness between the last instruction in address buffer 311. 第2命令が第1命令よりも古ければ、衝突は存在しない。 If the second instruction is older than the first instruction, the collision does not exist. これら3個の衝突検査はORがとられて、検査を受けている特定のロードのアドレス衝突信号460 を生成する。 These three collision test is taken OR generates an address conflict signal 460 for a particular load undergoing inspection.

アドレス衝突の検出に於いては、各ロードの開始(第1)アドレスが各ストアの第1及び第2アドレスと比較される。 It is at the detection of address conflict, the start of each load (first) address is compared with the first and second address of each store. 一つのロード又はストア・オペレーションは1〜10バイトまでのどこかをアクセスするので、衝突が検出されることを保証するためにそれらのアドレスのうち幾つかがマスクされる。 Since one load or store operations to access anywhere from 1 to 10 bytes, some of which are masked in their addresses to ensure that a collision is detected. このようなマスキングは信号470 〜475 で行なわれる。 Such masking is performed in the signal 470-475. 二つのアドレスが相互に比較される前に、最下位ビットのうちビット0、2、3、又は4がマスクされる。 Before the two addresses are compared to each other, of the least significant bit bits 0,2,3, or 4 is masked. マスクされたアドレスが全く一致する場合(等しい比較)、アドレス衝突の可能性がある。 If the mask address is exactly match (equal comparison), the possibility of address conflict. マスクされるビットの数(0、2、3、4)はアドレスが比較されているその二つのアドレスのオペランドのサイズ、そして第1アドレスの最下位の2ビットによって異なる。 The number of bits to be masked (0, 2, 3, 4) differ by two least significant bits of the size of the two address operands and first address, the address is compared. 第1アドレスの最下位2ビットが使用されるのは、間違って検出される衝突の数を制限するためである。 The two least significant bits of the first address is used, in order to limit the number of collisions detected incorrectly. マスキングに於いて、最大のオペランド・サイズは次のように使用される。 In masking, the largest of the operand size is used in the following manner.

オペランドサイズ マスクするビット数 1バイト 0ビットマスク 2バイト アドレスが0で終わる場合、1ビットマスク If several bits operand size mask 1 byte 0 bit mask 2 bytes address ending in 0, 1 bit mask
アドレスが01で終わる場合、2ビットマスク If the address ends in 01, 2-bit mask
アドレスが11で終わる場合、3ビットマスク 4バイト アドレスが00で終わる場合、2ビットマスク If the address ends in 11, if the 3 bit mask 4 byte address ends in 00, 2-bit mask
アドレスが1又は10で終わる場合、3ビットマスク 8バイト 3ビットマスク If the address ends in 1 or 10, 3-bit mask 8 byte 3 bitmask
10バイト 4ビットマスク 更に、ロード・オペレーションが4ワード境界を越えるたびに、アドレス衝突が発生していることが仮定される。 10 bytes 4-bit mask Additionally, each time a load operation exceeds 4 word boundary, it is assumed that the address collision has occurred. その理由は、ロードの最初のアドレスだけがストア・アドレスと比較されるので、アドレス衝突が検出されないことがあるからである。 The reason for this is that, since only the first address of the load is compared with the store address, is because there is an address conflict is not detected. ハードウェア中で使用されるコンパレータの数を二倍に増やすことにより、この制約は削除できる。 By increasing the number of comparators used in hardware doubled, this constraint can be removed. ストア・アドレスが4ワード境界を越えることがあれば、アドレス衝突は検出される。 If that store address exceeds 4 word boundary address conflict is detected.

マスキングの必要性を次の幾つかの例で示す。 The need for masking shown in the following some examples. (下記の全ての数字は二進数である)。 (All of the following numbers is a binary number). ロードのアドレス2は衝突検査の目的で使用されないので、アドレス2は省略する。 Since the address 2 of the load are not used for the purposes of conflict checking, address 2 will be omitted.
例1: Example 1:
オペレーション アドレス1 アドレス2 サイズ マスク LOAD …1001 … 2バイト 2ビット STORE …1000 …1011 4バイト 2ビット ロード・アドレス1001がマスクなしに1000及び1011と比較された場合、ストアがバイト1000,1001、1010、及び1011に書き込んだとしても衝突は検出されない。 If the operation address 1 address 2 size mask LOAD ... 1001 ... 2 byte 2 bit STORE ... 1000 ... 1011 4 bytes 2-bit load address 1001 has been compared to the 1000 and 1011 without a mask, store byte 1000,1001,1010, and also collision as written in 1011 is not detected. 2個のLSB がマスクされていれば、結果は次のようになる。 If the two LSB is if masked, the result is as follows.

オペレーション アドレス1 アドレス2 Operations address 1 address 2
LOAD …1000 … LOAD ... 1000 ...
STORE …1000 …1000 STORE ... 1000 ... 1000
例2: Example 2:
オペレーション アドレス1 アドレス2 サイズ マスク LOAD …0100 … 4バイト 2ビット STORE …0001 …1000 8バイト 3ビット 3個のMSB がマスクされていれば、下記のアドレスが生成され、アドレス衝突が検出される。 If so Operation Address 1 Address 2 size mask LOAD ... 0100 ... 4 bytes 2 bits STORE ... 0001 ... 1000 8 bytes 3 bits three MSB is a mask, the following address is generated, the address collision is detected.

オペレーション アドレス1 アドレス2 Operations address 1 address 2
LOAD …0000 … LOAD ... 0000 ...
STORE …0000 …1000 STORE ... 0000 ... 1000
2個のLSB だけがマスクされているならば、下記のアドレスが生成され、アドレス衝突は検出されない。 If only two LSB are masked, the following address is generated, the address collision is not detected.

オペレーション アドレス1 アドレス2 Operations address 1 address 2
LOAD …0100 … LOAD ... 0100 ...
STORE …0000 …1000 STORE ... 0000 ... 1000
前述の如く、LSU205はキャッシュ要求を必要とする最大4個のロード命令と最大4個のストア命令のウィンドウから選択を行なうことができる。 As previously mentioned, LSU205 can make a selection from up to four load instructions and window up to four store instructions requiring a cache request. これらのロード及びストアはCCU110に対して互いに競合し、競合するロード及びストア間の選択は下記の如く行なわれる。 These load and store conflict with each other with respect to CCU 110, select between competing loads and stores are performed as follows.

ストア命令は、単に他のロード及びストアだけではなく、全ての命令に対してプログラム順序で行なわれなければならない。 Store instruction, not just other load and store must be performed in program order with respect to all instructions. ストア要求はストア命令をリタイアする信号がIEU107から送られた段階でCCU110に発行される。 Store request signal to retire the store instruction is issued to CCU110 in step sent from IEU107. この信号は、全ての先行命令が終了し、それらの命令では例外も、誤って予測された分岐も無かったことを知らせる。 This signal is all the preceding instruction is finished, exceptions in those instructions, incorrectly indicating that was no predicted branch. ストア命令をこの信号よりも早く行なうことは不可能である。 It is impossible to carry out earlier than this signal a store instruction. その理由は、ストアはマシンの状態を非可逆的に変更するので、例外も分岐も発生しなかったことを確認することが重要であるからである。 The reason is, the store because it changes the state of the machine irreversibly, exception is because the branch is also important to make sure that did not occur. データ・キャッシュ119 の使用の目的ではストアはロードに優先する。 Store for the purpose of use of the data cache 119 takes precedence over load. その理由は、ストアの遅延はバケットのリタイアメントの遅延をもたらし、従って命令デコード・ユニット(図示せず)からの次のデコード済みバケットの受理を遅らせるからである。 This is because the delay in the store results in a delay of retirement of the bucket, thus delaying the acceptance of the next decoded bucket from the instruction decode unit (not shown).

ロードが先行ストアに依存しない限り、ほとんどのロード命令はアウト・オブ・オーダで発行できる。 As long as the load does not depend on the preceding store, most of the load instructions can be issued out-of-order. これの例外は、メモリ・マップされたI/O からの読み出しのような、副作用を持つロードである。 An exception to this, such as read from the I / O memory-mapped, is a load with the side effects. 本発明の好適な実施例ではメモリ・マップ入出力(I/O )サブシステムが使用される。 In a preferred embodiment of the present invention the memory-mapped input-output (I / O) subsystem is used. ある種のI/O デバイスは読み出しによってアクセスされるとその状態が変化する。 Certain I / O devices when accessed by a read its state changes. 例えば、ある種のFIFOバッファは次のデータ項目に順香を付けて、その結果ある種のデバイス状態レジスタは自動的にクリアされる。 For example, some FIFO buffers with the Junko the next data item, so that some devices status register is cleared automatically. このようなシステムに於いては、ロード・バイパスは危険なオペレーションである。 Is In such a system, the load bypass is a dangerous operation. 誤って予測された分岐、或いは例外のために、バイパスされたロードが誤って発行されることがある。 Incorrectly predicted branches, or due to an exception, it may be bypassed loaded issued by mistake. そのようにバイパスされたロードがシステム状態を不正に変更するような事態が生じてはならない。 So bypassed load shall occur a situation, such as unauthorized changes to the system state.

この問題を解決する方法はこれらの要求がイン・オーダで行なわれるようにロード/ ストア・ユニットを構成することである。 How to solve this problem is that these requirements constitute a load / store unit as carried out in-order. ロード/ ストア・ユニットでは、キャッシュ要求で要求されたデータがキャッシュ可能であるか否かにかかわらずキャッシュ110 に通知を行なう機構が用意されている。 The load / store unit, the requested data is mechanism ready to notify cache 110 regardless of whether it is cacheable in cache request. この機構によって、プロセサはこのデータがライト・スルーである、つまりキャッシュ可能である、とキャッシュ110 に通知することができ、また直ちにメモリはライト・スルーを行なうべきであると通知する。 This mechanism, the processor the data is a write-through, that is cacheable, and can notify the cache 110, also immediately memory informs that it should perform a write through. システムの状態を変更する外部読みだしアクセスはこれらのキャッシュ不能アクセスのサブセットであるが、上記の問題は、このデータはキャッシュ不可能であるとのキャッシュ110 への通知に関連してイン・オーダの要求を行なうことによって解決される。 Although access read outside to change the state of the system is a subset of these non-cacheable accesses, the above problem is that this data is for in-order with respect to the notification of the cache 110 to be cacheable It is solved by performing the request. 従って、ロードバイパスを完全に回避するかわりに、プロセサはキャッシュ不可能なロードのバイパスを防止できる。 Thus, instead of completely avoiding load bypassing, the processor can prevent the bypassing of noncacheable loads. このようにして、ほとんどのロード・オペレーションが、まれに発生するキャッシュ不可能なロードでの不正なオペレーションを生成することなく、バイパスを利用できるようになる。 In this way, most of the load operation, rarely without generating an illegal operation in the non-cacheable loads that occur, will be able to use the bypass. このような機構はまたメモリ変更以前に例外が発生しないことを保証するためにも必要である。 Such mechanisms also necessary for an exception before the memory changes to ensure that does not occur. 一つのロードが一つのストアに対して依存性を持たない場合、「ストアのロード・バイパス」が発生する。 If one of the load does not have a dependency on one of the store, "store load bypass" occurs. 各ロードはページ・キャッシュ使用不可(page-cache-disable)及びページ・ライト・スルー(pagc-write-through)という2個のビットと対応している。 Each load corresponds to the two bits of a page cache disable (page-cache-disable) and page write-through (pagc-write-through). これらのビットはVMU115又はIEU107から得られるビットである。 These bits are bits resulting from VMU115 or IEU107.

ストア・データは二ケ所のうちの一つから生成される。 Store data is generated from one of the two Kesho. 第1に、それは64ビット整数ストア中に整数データ・バス上でLSU205に直接発行できる。 First, it can be issued directly on integer data bus during 64-bit integer store LSU205. 第2の方法は整数及び浮動小数点機能ユニットによる結果を監視(スヌーピング)することによって行なわれる。 The second method is performed by monitoring (snooping), the results of integer and floating point functional units. これは通常の「実行後格納」シーケンスをサポートするために行なわれる。 This is done to support normal "after executing stored" sequence. このシーケンスでは一つの命令の実行の結果はその命令のストア・データである。 A result of the execution of one of the instructions in this sequence is the store data of the instruction. そうすることによって、”[R2]<[R2]OR R4”のようなCISC型命令の結果が、その命令が明示的にLSU205に発行されなくても格納されるようになる。 By doing so, "[R2] <[R2] OR R4" results of CISC-type instructions, such as is, the instruction is to be stored without issued to explicitly LSU205.

LSU205はサイクルごとに一つの要求だけをCCU110に対して行なうことができ、その場合ストア・オペレーションが優先される。 LSU205 can be made to CCU110 one request only per cycle, in which case the store operation has priority. 書き込み制御がLSU205に対し、この命令はリタイアメント可能であると通知すると直ちにストア・オペレーションはCCU110に送信される。 Write control to LSU205, the instruction immediately store operations when notified that it is possible retirement is sent to the CCU 110. 次の優先度はアドレス・バッファ310 〜313 に有効なアドレスを持ち、アドレス衝突も実行待ちの書き込みも持たない、最も古いロード・オペレーションに与えられる。 The next priority has a valid address in the address buffer 310-313, also address conflict without also writing execution waiting, given to the oldest load operation. 命令間の比較的な新しさはバッファの位置とバッファ・ポインタの値で決定される。 Relatively freshness between instructions is determined by the value of the position and the buffer pointers in the buffer. 最後に、DAFU230 から送信された新しいロードが優先度を持つ。 Finally, a new load that has been transmitted from DAFU230 have a priority. この最後の場合、アドレス衝突及び実行待ち書き込みは要求が行なわれるまで検査されず、そして必要ならばロード要求は取り消される。 In this last case, address collision and execute a wait for writing will not be inspected until the request is made, and load request if necessary is canceled.

時折、キャッシュ・ミスが起こる。 Occasionally, it occurs cache miss. ストアの場合、CCU110はこのような事態を処理し、その結果LSU205はキャッシュ・ミスの影響を全然受けずに済む。 In the case of the store, CCU110 processes such a situation, the result LSU205 is need without being at all the effects of cache misses. ロードの場合、LSU205はキャッシュ・ミスについて通知を受け、データが返される前に遅延が起こる。 In the case of load, LSU205 is notified of cache misses, delay before the data is returned to occur. LSU205は次にキャッシュ・ミスの発生をIEU107に通知し、その結果このデータを待っている命令は取り消される。 LSU205 is then notified of the occurrence of a cache miss in IEU107, the result instructions that are waiting for this data is canceled. 目的のデータがキャッシュ・ライン境界を越えると、ロード・オペレーションに対して2個叉は3個のキャッシュ・アクセスが必要になります。 If the purpose of the data is more than a cache line boundary, 2 Komata for the load operation it will happen to need 3 cache access. これらの要求は連続して行なわれ、1サイクル当たり一つの要求が行なわれる。 These requests are performed continuously, one request per cycle. 好適な実施例に於いて、一つのキャッシュ・ラインの幅は8バイトで、000 で終了するアドレスに位置合わせされている。 In the preferred embodiment, the width of one cache line is 8 bytes, aligned to the address ending in 000. 3個のキャッシュ要求が必要とされるのは111 で終了するアドレスで始まる80ビット・データの場合だけである。 Three cache requests that are needed only if the 80-bit data starting at the address ending with 111. このデータがデータ・キャッシュ119 から返される場合、ロード・アライナ550 (図5、図6を参照して下記に説明する)が配置され、このデータのシフトとラッチが行なわれる。 If this data is returned from the data cache 119, load aligner 550 (FIG. 5, with reference to FIG. 6 described below) is disposed, shift and latch this data.

ほとんどのロード/ ストア・ユニットはデータが行き先レジスタに入るようにそのデータをゼロまたはサインで拡張するが、本発明の好適な実施例では、行き先レジスタの初期値が保持され、その一部のみが変更される。 While most of the load / store unit to extend the data so that the data enters the destination register with zero or sign, in the preferred embodiment of the present invention, it retained the initial value of the destination register, only a part Be changed. 勿論、これは8又は16ビット長の整数ロード・データの場合のみ意味がある。 Of course, this makes sense only for integer load data of 8 or 16 bits long. レジスタの初期の内容はアドレス計算の時点でLSU 205 に送られ、次にデータ・キャッシュ119 からのロード・データは初期値データとマージされる。 The initial contents of the register are sent to LSU 205 at the time of address calculation, then load data from data cache 119 is merged with the initial value data.

図5、図6にLSU 整数データ・パス210 の概略図を示す。 Figure 5 shows a schematic diagram of LSU integer data path 210 in FIG. 6. LSU データ・パス210 はロード及び/ 叉はストア・データをCCU110及びIEU107間で転送する。 LSU data path 210 is loaded and / or to transfer store data between CCU110 and IEU107. ロード・オペレーション中に、データは線290 を介してデータ・キャッシュ119 からLSU データ・パス210 に入り、ストア・オペレーション中には線275 、276 、277 を介してIEU107から入る。 During the load operation, data is entered from the data cache 119 to LSU data path 210 through the line 290, during the store operation enters from IEU107 via lines 275, 276, 277. データ線275 及び276 は32ビット・データを書き込みバス270 を介して機能ユニット260 及び262 からLSU データ・パス210 に供給し、線282 は有効アドレス叉ははマージされたデータを供給する。 Data lines 275 and 276 via the bus 270 to write the 32-bit data supplied from the functional units 260 and 262 to the LSU data path 210, the line 282 is the effective address or the supplies merged data. 有効データがLSU データ・パス210 へ供給されるのは一つの命令の結果が、そのアドレス・ロケーションに存在するデータではなく、アドレスそのものである場合である。 Valid data for one instruction being supplied to the LSU data path 210 results, rather than the data present at that address location is where the address itself. ストア・データ線516 は64ビット・データをLSU データ・パス210 に供給する。 Store data line 516 supplies a 64 bit data to LSU data path 210. データはデータ線290 または292 を介してデータ・キャッシュ119 又はIEU107のいずれかにそれぞれ返される。 Data is returned respectively to one of the data cache 119 or IEU107 through the data line 290 or 292.

データ・バッファ520 〜526 は、データ・キャッシュ119 への或いはデータ・キャッシュ119 からのデータ転送中、ロード及び/ 叉はストア・データを保持するために配置されている。 Data buffer 520-526 during data transfer from or data cache 119 to the data cache 119, load and / or is arranged to hold the store data. 各データ・バッファ520 〜526 及びアドレス・バッファ310 〜313 の間に1対1の対応が存在する(そしてこれらのアドレス・バッファ及び4個の命令バケットとの間にも1対1の対応が存在する)。 Correspondence between the data buffer 520-526 and address buffers 310-313 pair during one exists (and there is also a one-to-one correspondence between these address buffers and four instructions buckets to). 各アドレス・バッファ310 〜313 にはLSU データ・パス210 中に2個の対応するデータ・バッファが存在する。 Each address buffer 310-313 are two corresponding data buffers present in LSU data path 210. すなわち、整数ロード及び整数ストア・データ(8バイト)520 〜526 に対して一つのデータ・バッファと、浮動小数点ロード及びストアのデータ(10バイト)540 〜546 に対して一つのデータ・バッファである。 That is one of the data buffer with respect to the one data buffer, the data of the floating point load and store (10 bytes) 540-546 for integer load and integer store data (8 bytes) 520-526 . 本発明に於いては、浮動小数点演算用に一つの別個のLSU データ・パスが存在する。 In the present invention, one of the separate LSU data path exists for floating-point operations. 浮動小数点データ・バッファ540 〜546 の動作は整数データ・パスに関して説明された動作と同一である。 Operation of floating point data buffers 540-546 is the same as the operation described with respect to the integer data path. 一つの命令は整数命令或いは浮動小数点命令のいずれかであるので、この二つのユニットは物理的に接続されていなくても構わない。 Since one instruction is either integer instruction or a floating-point instruction, these two units may be not physically connected. 以下に、整数データ・バッファ520 〜526 の動作のみを詳しく説明する。 The following describes in detail only the operation of integer data buffers 520-526.

制御線581 及び587 はデータ・フローをそれぞれマルチプレクサ560 及び565 を介して制御するために配置されている。 Control lines 581 and 587 are arranged to control via the multiplexer 560 and 565 respectively the data flow. 又、制御線582 及び586 はデータ・バッファ520 、522 、524 、及び526 へのデータ・フロー、そしてデータ・バッファ520 、522 、524 、及び526 からのデータ・フローを制御するために配置されている。 The control lines 582 and 586 are arranged to control the flow of data from the data buffer 520, 522, 524, and data flow to 526 and data buffer 520, 522, 524, and 526, there. ロード・オペレーションに於いては、データは線290 を介してデータ・キャッシュ119 からLSU データ・パス210 に入る。 Is In load operation, data enters from the data cache 119 to the LSU data path 210 via line 290. ロード・データはアライン・ブロック550 に入り、アライン・ブロックはデータの位置合わせを行ない(下記の説明を参照されたい)、位置合わせされたロード・データをマルチプレクサ530 〜536 に転送する。 Load data enters align block 550, align the block (see description below) performs alignment of the data, and transfers the load data that is aligned to the multiplexer 530-536. 位置合わせされたロード・データは次に、どの命令がデータを要求したかにより、データ・バッファ520 〜526 の一つにラッチされる。 Load data that is aligned then which instruction depending on whether requested data is latched in a data buffer 520-526. ストア・オペレーション中、ストア・データはデータ線275 、276 、277 を介してIEU107からLSU データ・パス210 へ入り、その後、データ・バッファ520 〜526 のうち適切なデータ・バッファにラッチされる。 During store operations, the store data enters from IEU107 via data lines 275, 276, 277 to LSU data path 210 and is then latched into the appropriate data buffer of the data buffer 520-526.

ロード及び/ 叉はストア・データのうちのどちらかがデータ・バッファ520 〜526 にラッチされると、そのデータは線290 を介してデータ・キャッシュ119 へ、或いは線292 を介してIEU へのいずれかに送られる。 If the load and / or either of the store data is latched in the data buffer 520-526, the data to data cache 119 via line 290, or any of the IEU via line 292 It is sent to or. 4個のデータ・バッファ520 〜526 はデータをマルチプレクサ560 、565 に供給し、次にこれらのマルチプレクサはLSU データ・パス210 から転送されるべき適切なデータを選択する。 Four data buffers 520-526 will provide data to the multiplexer 560, 565, then these multiplexer selects the appropriate data to be transferred from the LSU data path 210. しばしば、ストアを含む命令の結果は主メモリ260 に格納されなければならない。 Often, the result of the instruction includes a store must be stored in the main memory 260. 従って、命令の実行の後、その結果はデータ線275 、276 を介してLSU データ・パス210 に直接書き込まれる(最初に結果をレジスタ・ファイル250 に格納するのではなしに)。 Thus, after execution of the instruction, the result is (without than storing first result to register file 250) that directly written to the LSU data path 210 via data line 275, 276. LSU データ・パス210 は命令のリタイアメント信号を受け取るまでデータを適切なデータ・バッファ520 〜526 に保持する。 LSU data path 210 holds the data until it receives a retirement signal for the instruction to the appropriate data buffer 520-526.

定期的に、一つの特定な命令は一つの行き先レジスタ全体に格納を行なわないようになっている。 Periodically, one of the specific instruction is adapted not to perform storing the entire single destination register. この場合、「マージ・データ」がデータ線282 を介してLSU データ・パス210 に供給される。 In this case, "merge data" is provided to LSU data path 210 via data line 282. 例えば、一つの命令が8ビットだけを行き先レジスタに格納したいが、残りの24ビットをレジスタに保存したい場合、マージ・オぺレーションが行なわれる。 For example, you want to store one instruction is 8 bits only to the destination register, if you want to save the remaining 24 bits in the register, merge the Operation is performed. 従って、データ線282 は行き先レジスタの初期値(すなわち、マージ・データ)をLSU データ・パス210 に供給する。 Accordingly, the data line 282 supplies the initial value of the destination register (i.e., merge data) to LSU data path 210. マージ・データ(すなわち、行き先レジスタの内容)は適切なデータ・バッファ520-526 にラツチされる。 Merge data (i.e., the contents of the destination register) is latched into the appropriate data buffer 520-526. 次に、新しい(ロード)データが線290(a)を介してキャッシュから戻され、アライン・ブロック550 に入る。 Next, the new (load) data returns from the cache via line 290 (a), enters align block 550. アライン・ブロック550 はデータの位置合わせを行ない、それをマルチプレクサ530 〜536 に供給する。 Align block 550 performs alignment of the data, and supplies it to the multiplexer 530-536. ロード・データは次に、マージ・データを保持している同じデータ・バッファ520 〜526 にラッチされる。 Load data is then latched into the same data buffer 520-526 which is holding the merge data. 一旦全てのデータがアセンブルされると、それは適宜な記憶場所(すなわち、データ・キャッシュ119 又はレジスタ・ファイル250 )に転送可能となる。 Once all the data is assembled, it is appropriate storage locations (i.e., data cache 119 or register file 250) enables transfer.

従来のロード・ストア・ユニットでは普通、アドレスが特定の境界に位置合わせされなければならない。 In the conventional load-store unit usually, the address must be aligned to a specific boundary. 例えば、32ビット・データ・アクセスでは000 で終わるアドレスがなければならない。 For example, in the 32-bit data access must have an address ending in 000. しかしながら、好適な実施例のコンピュータ・アーキテクチャによって8 、16、32、64、叉は80ビット・データの位置合わせされていないアクセスが可能になる。 However, 8 by the computer architecture of the preferred embodiment, 16, 32, 64, or will have access not aligned 80-bit data. 位置合わせされていないアドレスを有することは次のような影響を及ぼす。 Having an address that is not aligned as follows affects. つまり、(1) ストアに対するロード依存性検出のためにさらに別のハードウェアが必要である。 In other words, it is necessary to still another hardware for load-dependent detection for (1) store. (2) データがページ境界を越えるとアドレス変換が2回必要になる。 (2) data exceeds a page boundary when the address conversion is necessary twice. (3) 1回のロードに対して複数のキャッシュ・アクセスが必要になる。 (3) require multiple cache access for a single load.

CCU110によって返されたロード・データの長さは8バイトであり、それはデータ・バッファ520 〜526 中の適切な位置に位置合せして格納される必要がある。 The length of the load data returned by CCU110 is 8 bytes, it needs to be stored in aligned in the proper position in the data buffer 520-526. 時には、完全なロードができあがるまでに2叉は3のデータ集合が返されねばならない(例えば、二つ以上のキャッシュ・アクセスが必要な時)。 Sometimes, 2 or up to Build a complete load data set of 3 must be returned (for example, when you need more than one cache access). 更に、これらのデータ集合がアウト・オブ・オーダで返される場合があるので、特別な措置が必要である。 In addition, since there is a case in which a collection of these data is returned in the out-of-order, there is a need for special measures. 整数データの位置合わせは8個の8入力マルチプレクサ(8ビット幅)を使用して処理される。 Alignment of the integer data is processed using eight 8-input multiplexers (8 bits wide). 各マルチプレクサはデータ要求の1バイトに対応する。 Each multiplexer corresponds to 1 byte of data request. CCU110からロードされた8バイトのデータのうちどのデータが適切なデータ・バッファ520 〜526 にラツチされるべきかを決定するために8ビットの選択線が使用される。 8-bit selection line to which data of 8 bytes of data loaded to determine whether to be latched into the appropriate data buffer 520-526 from CCU110 is used. 更に、データ・バッファ520 〜526 はどのバイトが上書きされるべきかを制御するためにバイト・イネーブルになる。 Additionally, data buffer 520-526 will byte enable to control should which bytes are overwritten.

図7にキャッシュ線交差を持つ位置合わせされていない整数ロードの1例を示す。 It shows an example of integer load not aligned with the cross cache line in FIG. この例では、アドレスXXXXXXX5から4バイトのロードが要求されているが、このロード要求はキャッシュ線からはみだすので、その結果2個のロード要求が必要とされる。 In this example, loaded from the address XXXXXXX5 4 bytes is required, since the load request is protruded from the cache line, it is required as a result of two load request. 最初のキャッシュ要求がデータを返した後、データはロード・アライナ550 に転送される。 After the first cache request returns the data, the data is transferred to the load aligner 550. ロード・アライナ550 は最後の3バイトをバイト0までシフトし、その後、最後の3バイトは適切なデータ・バッファ520 〜526 にラッチされる。 Load aligner 550 shifts the last three bytes to byte 0, then, the last three bytes are latched into the appropriate data buffer 520-526. データ・バッファの最後のバイトはストアによって上書きされない。 The last byte of the data buffer is not overwritten by the store. 一旦第2のキャッシュ要求のデータが返されると、図示されているようにキャッシュ線の最初のバイトがデータ・バッファの最後のバイトにラッチされる。 Once the data of the second cache request returns, the first byte of the cache line as is shown, is latched into the last byte of the data buffer. 更に、この例ではキャッシュ線はイン・オーダで返されるが、それはどの順序で返されても構わない。 Furthermore, although the cache line in this example is returned in-order, it may be returned in any order.

浮動小数点データ位置合わせは整数位置合わせと同じ働きをするが、浮動小数点データ位置合わせの場合、10個の8入力マルチプレクサが使用される。 Floating point data alignment is the same function as alignment integer positions, if floating point data alignment, ten 8-input multiplexers are used. LSU205ではロード・フォワーディングはサポートされていない。 In LSU205 load forwarding it is not supported. ロードがストアに依存する場合、そのロードはロード要求を行なう前に、ストア・データがキャッシュに書き込まれるまで待たなければならない。 If the load is dependent on the store, the load prior to performing the load request, store data must wait until it is written to the cache. しかし、本発明の設計では、本質的にロード・フォワーディング機構の実現を阻止するような制約はない。 However, the design of the present invention, there is no restriction as to prevent the realization of essentially load forwarding mechanism. 当業者にとって、ロード・フォワーディングを実現するために必要なハードウェア変更を行なうことは容易であろう。 Those skilled in the art, to perform the hardware changes required to implement the load forwarding will readily.

LSU205の好適な実施例では多重処理環境がサポートされている。 Multiprocessing environment is supported in the preferred embodiment of LSU205. 各命令はロード及び/ 又はストア以外に、ロック或いはアンロック・コマンドを含むことができる。 Each instruction in addition to the load and / or store, can include a lock or unlock command. これらの信号はキャッシュに送られ、キャッシュはデータをロックし、メモリ及び入出力サブシステムに同じことをするように通知を送る。 These signals are sent to the cache, the cache lock data, sending a notification to the same to the memory and input-output subsystem. ロック又はアンロック・コマンドが命令ウィンドウに存在する場合、ロードはそれらの命令の順序と同じ順序で行なわれなければならない。 If the lock or unlock command is present in the instruction window, the load must be carried out in the same order as the order of their instruction. すなわち、後続のロードは最初にロック/ アンロック・コマンドを伴うロードを先ず行なわないと実行できない。 That is, subsequent load can not be executed with the first not performed first load with the lock / unlock command.
LSU205のオペレーション例 表AにLSU205のオペレーションを示すサンプル・プログラムを示す。 The operation Example Table A of LSU205 shows a sample program that illustrates the operation of LSU205. プログラムはインテル486 (Intel 486 )の表記法で記述されている。 The program is written in notation of Intel 486 (Intel 486). 3個のレジスタが使用され、それらはeax 、ebx 、そしてecx とラベルされている。 Three registers are used, they eax, are ebx and ecx and labels. ロードされ、ロード及び/ 又はストアされるデータは32ビット幅のデータであると仮定される。 Loaded, the data to be loaded and / or stored is assumed to be 32-bit wide data. ブラケットにアドレス・ロケーションを示す。 Bracket to show the address location.

表A Table A
(1)mov ebx,[ecx] (1) mov ebx, [ecx]
(2)dec ebx (2) dec ebx
(3)or[eax],ebx (3) or [eax], ebx
(4)(size (4) (size 16)mov ebx,[eax+3] 16) mov ebx, [eax + 3]
このコードの最初の行では、アドレスecx に格納されたデータがebx に移される。 The first line of code, data stored in the address ecx is transferred to ebx. 従って、この命令は一つのロード・オペレーションである。 Therefore, this instruction is one of the load operation. 第2の命令ではレジスタebx にある値が減少され、この命令ではロードもストアも行なわれない。 The second instruction is reduced value in register ebx, also not be performed store loading in this instruction. 第3の命令はアドレスeax に格納されたデータ及びデータebx に対して論理和をとり、結果を[eax] に格納する。 Third instruction takes a logical sum on the stored data and the data ebx to address eax, stores the result in [eax]. 従って、このオペレーションではロードとストアの両方が行なわれる。 Thus, both in the operation loads and stores are performed. 最後に第4命令ではアドレスeax+3 に格納された16ビットのデータがebx に移動される。 Finally the fourth in the order of 16 bits stored in the address eax + 3 data is moved to ebx. 従って、この命令ではロード・オペレーションが行なわれる。 Therefore, in this instruction load operation is carried out.

このコードが実行される前に、下記の値(全て16進法で表記)がレジスタ及びメモリに含まれていると仮定する。 Before this code is executed, it assumes that the following values ​​(all written in hexadecimal) is included in the registers and memory.

表B Table B
eax=0000 eax = 0000 0100[0100]=0000 0100 [0100] = 0000 4321 4321
[0104]=FFFF [0104] = FFFF FFFF FFFF
ecx=0000 ecx = 0000 1201[1200]=6500 1201 [1200] = 6500 01FF 01FF
[1204]=FFFF [1204] = FFFF FF87 FF87
表Aの命令の実行の結果を表Cに示す。 The results of the execution of instructions in Table A shown in Table C.

表C Table C
mov ebx,[ecx ] EBX <…[1201]=8765 mov ebx, [ecx] EBX <... [1201] = 8765 0001 0001
dec ebx EBX <…8765 dec ebx EBX <... 8765 0001-1=8765 0001-1 = 8765 0000 0000
or[eax ], ebx EAX <…0000 or [eax], ebx EAX <... 0000 4321or8765 4321or8765 0000=876 5 4321 0000 = 876 5 4321
(SIZ E 16)mov ebx,[eax+3 ] EBX <…[0100+3]= [0103] (SIZ E 16) mov ebx, [eax + 3] EBX <... [0100 + 3] = [0103]
=FF87 …>8765 = FF87 ...> 8765 FF87 FF87
次に、表Aの命令の実行の結果の詳細を説明する。 Next, details of the results of execution of instructions in Table A.

図8から図15において、LSU205の代表的な例を示す。 15 from FIG. 8 shows a representative example of LSU205. 各図は一つのサイクルを表わす(例えば、図8はサイクル1を表わし、図9はサイクル2を表わす)。 Each figure represents a single cycle (e.g., Figure 8 represents the cycle 1, FIG. 9 represents cycle 2). 4個のアドレス・バッファ310 〜313 、及びロード701 、ストア702 、及び有効ビット717 が図示されている。 Four address buffers 310-313, and load 701, store 702, and valid bit 717 is illustrated. 更に、衝突ビット710 、実行待ちビット715 、及び要求されたデータのサイズ指定705 が図示されている。 Furthermore, the collision bit 710, execution wait bits 715 and sizing of the requested data 705, is shown. アドレス0100から0107及びアドレス1200から1207のカレント・メモリ内容は参照香号780 として示されている。 The current memory contents of the address 0100 from 0107 and address 1200 1207 is shown as a reference incense No. 780. ブロック730 にカレント・キャッシュ要求を示す。 The block 730 shows the current cache request. ブロック740 はデータが(そのようなデータが存在するならば)CCU110から最近返されたことを示す。 Block 740 indicates that the returned recently from CCU110 data (if it is present such data). ブロツク760 はVMU115から返されているアドレスを示し、ブロック770 はDAFU230 から返されているアドレスを示す。 Block 760 indicates the address being returned from VMU115, block 770 indicates the address being returned from DAFU230. ロード及びストア・ビットはイン・オーダで設定されるが、各アドレスはLSU205にアウト・オブ・オーダで供給されても構わない。 Although the load and store bit is set in the in-order, each address may be supplied in an out-of-order to LSU205. ブロック750 に、返されたデータが如何にして物理的に位置合わせされるかを示す。 In block 750, indicating whether the returned data is physically aligned with the how.

図8に於いて、最初の命令は「mov ebx,[ecx ]」である。 In FIG. 8, the first instruction is "mov ebx, [ecx]". 最初に、ecx に格納されているデータはLSU アドレス・パス220 に転送されなければならない。 First, data stored in ecx must be transferred to LSU address path 220. ecx に格納されているアドレス、つまり1201はDAFU230 から一時アドレス・バッファ305 に転送されるが、このアドレス全体は必要でない。 Address stored in ecx, i.e. 1201 but is transferred to the temporary address buffer 305 from DAFU230, the entire address is not required. 最初の12ビットと最下位の3ビットが一時バッファ305 に転送される。 3 bits of the first 12 bits and the least significant is transferred to the temporary buffer 305. その理由は、上位20ビットはDAFU230 からVMU115に転送されるからである。 The reason is that the upper 20 bits is because transferred from DAFU230 to VMU115. mov オペレーションにはロードが伴うので、バケット0に於けるロード・ビットは1に設定される。 mov Since the operation involves load, in the load bit in the bucket 0 is set to 1. 要求されたデータは32ビットである(ブロック705 の011 によって示されている)。 The requested data is 32 bits (indicated by 011 in block 705). これはLSU205中のアドレスの第1集合だから、ブロック730 に示すように、アドレス情報は識別子(id)と共に直ちにCCU110に送られる。 This because the first set of addresses in LSU205, as shown in block 730, the address information is sent immediately CCU110 together with an identifier (id). LSU205は識別子に基づいて、返されたデータがどの命令と対応しているかを決定する。 LSU205 is based on the identifier to determine whether the returned data corresponds which instruction and. LSU205に転送されるためにアドレスがVMU115によって変換されるのをLSU205が待っている間、一時レジスタ305 が使用される。 While LSU205 address to be forwarded to the waiting is LSU205 from being transformed by VMU115, temporary register 305 is used. 第2命令の「dec ebx 」は アドレス・バッファ・キューに入れられる。 "Dec ebx" of the second instruction is placed in the address buffer queue. dec オペレーションにはロードもストアも伴わないので、アドレス・バッファ311 に対応するロード・ビット701 とストア・ビット702 の両方が0に設定される。 Since the dec operation without even load also store both the load bit 701 and store bit 702 corresponding to the address buffer 311 is set to 0. ロードもストアも必要でないので、この命令ではアドレス計算は必要でない。 Since the load is not even the store also necessary, address calculation is not required for this instruction.

図9に於いて、ecx に格納されたアドレスの第1バイトはレジスタ・アドレス1(address1)に入れられ、そのアドレスの最後のバイトはアドレス2(addrcss2)に入れられる。 In FIG. 9, the first byte of the address stored in ecx is placed in register address 1 (address1), the last byte of the address is placed in the address 2 (addrcss2). これらのアドレスは両方とも勿論アドレス・バッファ310 中に存在する。 Both of these addresses are present, of course in the address buffer 310. 両方のレジスタ(addressl及び address2 )は有効なアドレスを含んでいるので、両方の有効ビットが設定される。 Since both registers (Addressl and address2) of contains a valid address, both valid bits are set. address1及びaddress2が異なった時点でアドレス・バッファ310 〜313 にラッチされることも可能である。 It is also possible to address1 and address2 to be latched into the address buffers 310-313 at different times. これが発生するのは、VMU115からの変換を2回必要とするページ・クロシングが起こった時である。 This occurs, is when that occurred a page Crossing to convert the necessary twice from VMU115. 第3の命令は「or[eax ],ebx 」である。 The third instruction is "or [eax], ebx". 第3命令に関する(IEU107から送られる)情報はアドレス・バッファ312 に対応する適切なブロックに入れられている。 Information (sent by the IEU107) third instructions for being placed in the appropriate blocks corresponding to address buffer 312. OR命令はロード及びストア・オペレーションを必要とするので、両方のビットとも適宜に1に設定されている。 Since OR instruction requires load and store operations, both bits are set appropriately to 1. 要求されたデータの長さは32ビットで、ブロック705 に示されている。 The length of the requested data is 32 bits, shown in block 705. 更に、第3命令に対応するロード/ ストアのアドレスはブロック770 に示すようにDAFU230 から供給される。 Furthermore, address of the load / store corresponding to the third instruction is supplied from DAFU230 as shown in block 770. そして、ブロック730 に示すように、このデータに対してキャッシュ要求が行なわれる。 Then, as shown in block 730, the cache request is made for this data. 更に、第2サイクル中に、第1命令用に要求されたデータはキャッシュから検索され、データ・レジスタ520 に格納されている。 Furthermore, during the second cycle, the data requested in the first for instruction is retrieved from the cache and stored in the data register 520. しかし、ブロック730 に示される、返されたデータは位置合わせされていないデータである。 However, as shown in block 730, the returned data is data that is not aligned. CCU120はアドレス1200で始まるデータのブロックを返したが、命令が要求したデータは1201で始まる32ビットのデータである。 CCU120 is returned block of data starting at address 1200, data instruction requested is 32 bits of data starting at 1201. 従って、ブロック750 に示すように、データは位置合わせされなければならない。 Accordingly, as shown in block 750, the data must be aligned. 返されたデータはLD-ALIGNを00000010に設定することによって2ビット分シフトされ、最初の32ビットのデータはBYTE-SELによって選択される。 The returned data is 2 bits shift by setting the LD-ALIGN to 00000010, the data of the first 32 bits are selected by the BYTE-SEL.

図10に於いて、ブロック770 に示すように、次のアドレスがDAFU230 によってLSU205に供給される。 In FIG. 10, as shown in block 770, the next address is supplied to LSU205 by DAFU230. 第3命令に対応するアドレスはアドレス・バッファ312 にラッチされる。 Address corresponding to the third instruction are latched into address buffer 312. 有効ビット717 の両方のビットが設定される。 Both bits of the valid bit 717 is set. 第1命令がそのオペレーションを完了したので(すなわち、データがCCU110から返され、IEU107に送られたので)、今や有効ビットがリセットされている。 Since the first instruction has completed its operation (i.e., the data is returned from the CCU 110, because it was sent to IEU107), now valid bit is reset. (バケット番号が4にリセットされているのは例示の目的のためである。好適な実施例に於いては、ポインタが命令の比較的新しさを管理するために使用される)。 (The bucket number has been reset to 4 are for illustrative purposes. In a preferred embodiment, the pointer is used to manage the relatively freshness of instructions). 第3命令ではeax に格納されたアドレスの取り出しが必要である。 The third instruction is required removal of the address stored in eax. アドレスが一旦LSU205に入ると、キャッシュ要求が実行可能となる。 When the address Once in LSU205, a cache request can be executed. 更に、第4命令に関する情報、すなわち、その命令はロードで要求されているデータの幅は16ビットである(010 によって示されている)が、アドレス・バッファ313 に対応する適切なブロックで示されているように、この情報がIEU107から送られて来ている。 Furthermore, information about the fourth instruction, namely, the instruction is the width of the data requested by the load is 16 bits (indicated by 010) is shown at the right block corresponding to the address buffer 313 and as, this information is sent from IEU107. しかし、第4命令より古いストア(すなわち、第3命令)が存在する。 However, the fourth older than instruction store (i.e., the third instruction) is present. LSU205はポインタを使用して、どのアドレス・バッファが最も古い命令情報を含んでいるかを決定する。 LSU205 uses pointers, which address buffer to determine if it contains the oldest instruction information. このストアが存在するので、アドレス・バッファ313 に対応する書き込み実行待ちビット715 が設定される。 Since this store exists, the write execution waiting bit 715 corresponding to the address buffer 313 is set. 従って、この場合、第4命令用のキャッシュ要求は生成できない。 Therefore, in this case, cache request of the fourth for instruction can not be generated. ブロック740 に示すように、CCU110は第3命令用にデータをLSU205に戻す。 As shown in block 740, CCU 110 returns data for the third instruction to LSU205. 要求データはアドレス100 で始まっているので、戻されたデータは位置合わせされる必要がない。 Since the requested data is started at address 100, the returned data does not need to be aligned. 最初の32ビットだけがBYTE-SELで選択され、そしてデータはデータ・バッファ526 にラッチされる。 Only the first 32 bits are selected by the BYTE-SEL, and the data is latched into data buffer 526.

図11に於いて、第4命令に対応するアドレスはアドレス・バッファ313 にラッチされ、対応する有効ビットが設定されている。 In FIG. 11, the address corresponding to the fourth instruction is latched in the address buffer 313, the corresponding valid bit is set. 次に、アドレス衝突オペレーションが行なわれる。 Next, the address collision operation is performed. 第4命令からのaddress1が第3命令のaddress1及びaddress2と比較され、その結果アドレス衝突の存在が決定される。 address1 from the fourth instruction is compared with address1 and address2 of the third instruction, the presence of the resulting address collision is determined. 従って、アドレス・バッファ313 に対応する衝突ビット710 が設定される。 Therefore, the collision bit 710 corresponding to the address buffer 313 is set. 衝突が存在するために、サイクル4の期間中キャッシュ要求は生成できない。 For collision is present, a period in cache request cycle 4 can not be generated. しかし、キャッシュ要求の実行が不可能であっても、ブロックで示されているように第4命令用のマージ・データがIEU107から到着する。 However, even if it is impossible to perform a cache request, merge data for the fourth instruction as indicated by block arrives from IEU107. マージ・データとはレジスタebx からのデータである。 The merge data is the data from the register ebx. マージ・データが必要なのは、第4命令が単に16ビット・オペレーションであるからである。 Merge data is needed is because the fourth instruction is simply a 16-bit operations. このマージ・データはデータ・バッファ526 にラッチされる。 The merge data is latched into data buffer 526.

図12に於いて、書き込みAデータ(WRA-DATA)がIEU107から到着する。 In FIG. 12, the write A data (WRA-DATA) arrives from IEU107. WRA-DATAは第3命令に於けるOR演算の結果である。 WRA-DATA is the result of in OR operation on the third instruction. このデータはデータ・バッファ524 にラツチされる。 This data is latched into data buffer 524. 更に、ブロック780 に示すように、サイクル5の期間中次のバケット、即ちバケット1、がリタイアされる。 Furthermore, as shown in block 780, the next bucket during the cycle 5, i.e. the bucket 1, but is retired. 具体的には、retire next ビットが1に設定され、次の命令がリタイアメント可能であることを示し、retire nu mビットが1に設定され、バケット1 にある命令をリタイアすべきであることを示す。 Specifically, retire next bit is set to 1, indicates that the next instruction can be retirement, indicating that the retire nu m bit is set to 1, it should be retired instructions in bucket 1 . この場合、第3命令と4命令の間にアドレス衝突がまだ存在する。 In this case, address collision between the third instruction and 4 instructions are still present.

図13に於いて、データ・バッファ524 中のデータはebx 中のデータとORがとられ、その結果値87654321が生成される。 In FIG. 13, the data in the data buffer 524 is taken data and OR in ebx, the resulting value 87654321 is generated. ブロック785 に示すように、サイクル6の期間中、第3命令がリタイアされる。 As shown in block 785, during the cycle 6, the third instruction is retired. 第3命令のリタイアメントによって、LSU205は第4命令に対応する衝突ビット710 をリセットできるようになる。 The retirement of the third instruction, LSU205 will be able to reset the collision bit 710 corresponding to the fourth instruction. ブロック730 に示すように、OR演算によって生成された値を記憶場所00000100(レジスタeax に格納されているアドレス)に格納するためのキャッシュ要求が行なわれる。 As shown in block 730, the cache request to store values ​​generated by the OR operation to the memory location 00000100 (the address stored in register eax) is performed. ブロック780 に示すように、データはこのデータ・ロケーションに格納されている。 As shown in block 780, data is stored in the data location.

図14に於いて、第4命令は記憶場所0103(レジスタeax+3 の最初の16ビット)に格納されているデータをロードする。 In FIG 14, the fourth instruction loads the data stored in memory location 0103 (the first 16 bits of register eax + 3). 従って、ブロック730 に示すように、第4命令に対応するロード・オペレーション用にキャッシュ要求が行なわれる。 Accordingly, as shown in block 730, the cache request is made for the load operation corresponding to the fourth instruction.

図15に於いて、ブロック740 に示すように、要求された(位置合わせされていない)ロード・データがキャッシュから返される。 In FIG. 15, as shown in block 740, the requested (unaligned) load data returns from the cache. ブロック750 に示すように、次にデータは3バイト分シフトすることによって位置合わせされる。 As shown in block 750, then the data is aligned by 3 bytes shift. その理由は、要求されたデータはアドレス0100でなくアドレス0103で始まるからである。 The reason is that the requested data is because starting at address 0103 instead of the address 0100. 最初の16ビットだけが要求されたので、最初の2バイトだけが位置合わせされたデータから選択される。 Since only the first 16 bits are requested only the first two bytes are selected from the aligned data. これら16ビットは次にデータ・バッファ526 にラッチされ、このデータ・バッファはIEU107に逆方向に転送されて、レジスタebx に格納される。 These 16 bits are then latched into data buffer 526, the data buffer is transferred in the reverse direction to IEU107, it is stored in the register ebx. 上記に本発明を実施例を参照しつつ説明したが、本発明の精神及び特許請求の範囲から逸脱することなく、形状並びに詳細において様々な変更が可能なことが当業者には理解されるであろう。 In has been explained with reference to the embodiments present invention to the above without departing from the spirit and scope of present invention, it possible that various changes in form and details may be appreciated by those skilled in the art It will allo.

本発明が動作するマイクロプロセサ・アーキテクチャのブロック図である。 The present invention is a block diagram of a microprocessor architecture that works. ロード・ストア・ユニットを含む命令実行ユニットを示す一般的なブロック図である。 It is a general block diagram showing an instruction execution unit including a load store unit. LSUアドレス・パス220を示すブロック図である。 It is a block diagram showing a LSU address path 220. LSUに位置するアドレス衝突ブロックを示す概略図である。 It is a schematic diagram showing an address collision block located LSU. LSUデータ・パスを示す概略図である。 LSU is a schematic diagram showing the data path. LSUデータ・パスを示す概略図である。 LSU is a schematic diagram showing the data path. キャッシュ線交差を持つ位置合わせされてない整数ロードの例を示す図である。 Is a diagram showing an example of integer load not aligned with the cross cache line. LSUの動作の一例を示す図である。 Is a diagram illustrating an example of the operation of the LSU. LSUの動作の一例を示す図である。 Is a diagram illustrating an example of the operation of the LSU. LSUの動作の一例を示す図である。 Is a diagram illustrating an example of the operation of the LSU. LSUの動作の一例を示す図である。 Is a diagram illustrating an example of the operation of the LSU. LSUの動作の一例を示す図である。 Is a diagram illustrating an example of the operation of the LSU. LSUの動作の一例を示す図である。 Is a diagram illustrating an example of the operation of the LSU. LSUの動作の一例を示す図である。 Is a diagram illustrating an example of the operation of the LSU. LSUの動作の一例を示す図である。 Is a diagram illustrating an example of the operation of the LSU.

符号の説明 DESCRIPTION OF SYMBOLS

100 …マイクロプロセサ・アーキテクチャ、105 …ホスト・プロセサ、110 …キャッシュ制御ユニット及びメモリ(CCU )、115 …仮想メモリ・ユニット、120 …メモリ制御及びインタフェース・ユニツト、135 …周辺入出力装置、160 …主メモリ、160a、160b、160C…インタリーブド・メモリ・バンク、190 …入出力サブシステム。 100 ... microprocessor architecture, 105 ... host processor, 110 ... cache control unit and memory (CCU), 115 ... virtual memory unit, 120 ... memory controller and interface Yunitsuto, 135 ... peripheral input-output device, 160 ... main memory, 160a, 160b, 160C ... interleaved memory banks, 190 ... input and output sub-system.

Claims (1)

  1. プログラムストリームを実行するためのマイクロコンピュータシステムであって、前記マイクロコンピュータシステムが、 A microcomputer system for executing a program stream, the microcomputer system,
    (a)メモリシステムから命令をフェッチし、所定の複数の命令を命令バッファへ提供するための命令フェッチ・ユニットと、 (A) fetching instructions from the memory system, an instruction fetch unit for providing a predetermined plurality of instructions to the instruction buffer,
    (b)前記命令バッファからの前記複数の前記命令をアウト・オブ・オーダで実行するための実行ユニットであって、前記命令バッファ内の命令に関しては、アウト・オブ・オーダでメモリシステムにロード要求を行い、前記命令バッファ内の命令に関しては、イン・オーダでストア要求を行うように適応させたロードストア・ユニットを含む実行ユニットと、 (B) an execution unit for said performing a plurality of said instructions out of order from the instruction buffer, for instruction pre-Symbol instruction buffer, the memory system out of order do load request, with respect to instructions in said instruction buffer, an execution unit including a load store unit which is adapted to perform a store request in-order,
    を含み、 It includes,
    前記ロードストア・ユニットは、前記命令バッファからの前記命令がロード命令である場合、前記メモリシステムとの間に配置されたキャッシュからラインに応じたデータを読み込み、これらデータからアラインしたデータを取り出すことを特徴とするマイクロコンピュータシステム。 The load store unit, if the instruction from the instruction buffer is a load instruction, reads the data corresponding to the line from the configured cache between the memory system, to retrieve the data aligned from these data microcomputer system according to claim.

JP2005181820A 1992-09-29 2005-06-22 Computer system Active JP3772907B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US95408492A true 1992-09-29 1992-09-29

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2005148862 Division

Publications (2)

Publication Number Publication Date
JP2005322269A JP2005322269A (en) 2005-11-17
JP3772907B2 true JP3772907B2 (en) 2006-05-10

Family

ID=25494898

Family Applications (28)

Application Number Title Priority Date Filing Date
JP50906394A Expired - Lifetime JP3644959B2 (en) 1992-09-29 1993-09-03 Microprocessor system
JP2000008269A Pending JP2000148492A (en) 1992-09-29 2000-01-17 Computer system
JP2000008267A Withdrawn JP2000148483A (en) 1992-09-29 2000-01-17 Computer system
JP2000008263A Withdrawn JP2000148480A (en) 1992-09-29 2000-01-17 Request management method
JP2000008268A Pending JP2000148491A (en) 1992-09-29 2000-01-17 Microcomputer system
JP2000008266A Withdrawn JP2000181708A (en) 1992-09-29 2000-01-17 Computer system
JP2000008265A Withdrawn JP2000148490A (en) 1992-09-29 2000-01-17 Computer system
JP2000008264A Pending JP2000148481A (en) 1992-09-29 2000-01-17 Computer system
JP2000008270A Pending JP2000148493A (en) 1992-09-29 2000-01-17 Computer system
JP2000008271A Pending JP2000148494A (en) 1992-09-29 2000-01-17 Computer system
JP2002312520A Active JP3620530B2 (en) 1992-09-29 2002-10-28 Computer system
JP2002312517A Withdrawn JP2003131870A (en) 1992-09-29 2002-10-28 Computer system
JP2002312519A Active JP3588755B2 (en) 1992-09-29 2002-10-28 Computer system
JP2002312518A Active JP3627737B2 (en) 1992-09-29 2002-10-28 Computer system
JP2004273803A Active JP3772899B2 (en) 1992-09-29 2004-09-21 Computer system
JP2004306379A Active JP3772900B2 (en) 1992-09-29 2004-10-21 Computer system
JP2004337022A Active JP3772901B2 (en) 1992-09-29 2004-11-22 Computer system
JP2004370411A Active JP3772902B2 (en) 1992-09-29 2004-12-22 Computer system
JP2005013797A Active JP3772903B2 (en) 1992-09-29 2005-01-21 Computer system
JP2005043359A Active JP3741144B2 (en) 1992-09-29 2005-02-21 Computer system
JP2005083005A Active JP3741146B2 (en) 1992-09-29 2005-03-23 Computer system
JP2005124391A Active JP3772905B2 (en) 1992-09-29 2005-04-22 Computer system
JP2005148862A Active JP3741149B2 (en) 1992-09-29 2005-05-23 Computer system
JP2005181820A Active JP3772907B2 (en) 1992-09-29 2005-06-22 Computer system
JP2005212306A Active JP3852474B2 (en) 1992-09-29 2005-07-22 Computer system
JP2005239264A Active JP3852475B2 (en) 1992-09-29 2005-08-22 Computer system
JP2005274178A Active JP3815507B2 (en) 1992-09-29 2005-09-21 Computer system
JP2006195680A Active JP3874022B2 (en) 1992-09-29 2006-07-18 Computer system

Family Applications Before (23)

Application Number Title Priority Date Filing Date
JP50906394A Expired - Lifetime JP3644959B2 (en) 1992-09-29 1993-09-03 Microprocessor system
JP2000008269A Pending JP2000148492A (en) 1992-09-29 2000-01-17 Computer system
JP2000008267A Withdrawn JP2000148483A (en) 1992-09-29 2000-01-17 Computer system
JP2000008263A Withdrawn JP2000148480A (en) 1992-09-29 2000-01-17 Request management method
JP2000008268A Pending JP2000148491A (en) 1992-09-29 2000-01-17 Microcomputer system
JP2000008266A Withdrawn JP2000181708A (en) 1992-09-29 2000-01-17 Computer system
JP2000008265A Withdrawn JP2000148490A (en) 1992-09-29 2000-01-17 Computer system
JP2000008264A Pending JP2000148481A (en) 1992-09-29 2000-01-17 Computer system
JP2000008270A Pending JP2000148493A (en) 1992-09-29 2000-01-17 Computer system
JP2000008271A Pending JP2000148494A (en) 1992-09-29 2000-01-17 Computer system
JP2002312520A Active JP3620530B2 (en) 1992-09-29 2002-10-28 Computer system
JP2002312517A Withdrawn JP2003131870A (en) 1992-09-29 2002-10-28 Computer system
JP2002312519A Active JP3588755B2 (en) 1992-09-29 2002-10-28 Computer system
JP2002312518A Active JP3627737B2 (en) 1992-09-29 2002-10-28 Computer system
JP2004273803A Active JP3772899B2 (en) 1992-09-29 2004-09-21 Computer system
JP2004306379A Active JP3772900B2 (en) 1992-09-29 2004-10-21 Computer system
JP2004337022A Active JP3772901B2 (en) 1992-09-29 2004-11-22 Computer system
JP2004370411A Active JP3772902B2 (en) 1992-09-29 2004-12-22 Computer system
JP2005013797A Active JP3772903B2 (en) 1992-09-29 2005-01-21 Computer system
JP2005043359A Active JP3741144B2 (en) 1992-09-29 2005-02-21 Computer system
JP2005083005A Active JP3741146B2 (en) 1992-09-29 2005-03-23 Computer system
JP2005124391A Active JP3772905B2 (en) 1992-09-29 2005-04-22 Computer system
JP2005148862A Active JP3741149B2 (en) 1992-09-29 2005-05-23 Computer system

Family Applications After (4)

Application Number Title Priority Date Filing Date
JP2005212306A Active JP3852474B2 (en) 1992-09-29 2005-07-22 Computer system
JP2005239264A Active JP3852475B2 (en) 1992-09-29 2005-08-22 Computer system
JP2005274178A Active JP3815507B2 (en) 1992-09-29 2005-09-21 Computer system
JP2006195680A Active JP3874022B2 (en) 1992-09-29 2006-07-18 Computer system

Country Status (7)

Country Link
US (5) US5659782A (en)
EP (1) EP0663083B1 (en)
JP (28) JP3644959B2 (en)
KR (1) KR100248903B1 (en)
DE (2) DE69329778D1 (en)
HK (1) HK1014780A1 (en)
WO (1) WO1994008287A1 (en)

Families Citing this family (147)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4237417C2 (en) * 1992-03-25 1997-01-30 Hewlett Packard Co Data processing system
US6735685B1 (en) * 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
WO1994008287A1 (en) * 1992-09-29 1994-04-14 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5721857A (en) * 1993-12-30 1998-02-24 Intel Corporation Method and apparatus for saving the effective address of floating point memory operations in an out-of-order microprocessor
US6378062B1 (en) * 1994-01-04 2002-04-23 Intel Corporation Method and apparatus for performing a store operation
US5694574A (en) * 1994-01-04 1997-12-02 Intel Corporation Method and apparatus for performing load operations in a computer system
US5717882A (en) * 1994-01-04 1998-02-10 Intel Corporation Method and apparatus for dispatching and executing a load operation to memory
US6279099B1 (en) * 1994-04-29 2001-08-21 Sun Microsystems, Inc. Central processing unit with integrated graphics functions
US5734874A (en) * 1994-04-29 1998-03-31 Sun Microsystems, Inc. Central processing unit with integrated graphics functions
JP3164732B2 (en) 1994-07-04 2001-05-08 富士通株式会社 Data processing equipment
US6021471A (en) * 1994-11-15 2000-02-01 Advanced Micro Devices, Inc. Multiple level cache control system with address and data pipelines
US5761475A (en) * 1994-12-15 1998-06-02 Sun Microsystems, Inc. Computer processor having a register file with reduced read and/or write port bandwidth
US5784586A (en) * 1995-02-14 1998-07-21 Fujitsu Limited Addressing method for executing load instructions out of order with respect to store instructions
TW448403B (en) * 1995-03-03 2001-08-01 Matsushita Electric Ind Co Ltd Pipeline data processing device and method for executing multiple data processing data dependent relationship
US5638312A (en) * 1995-03-03 1997-06-10 Hal Computer Systems, Inc. Method and apparatus for generating a zero bit status flag in a microprocessor
US5802588A (en) * 1995-04-12 1998-09-01 Advanced Micro Devices, Inc. Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer
US5887152A (en) * 1995-04-12 1999-03-23 Advanced Micro Devices, Inc. Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions
US5625835A (en) * 1995-05-10 1997-04-29 International Business Machines Corporation Method and apparatus for reordering memory operations in a superscalar or very long instruction word processor
US5778434A (en) 1995-06-07 1998-07-07 Seiko Epson Corporation System and method for processing multiple requests and out of order returns
US5761712A (en) * 1995-06-07 1998-06-02 Advanced Micro Devices Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array
US5694565A (en) * 1995-09-11 1997-12-02 International Business Machines Corporation Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions
US5835747A (en) * 1996-01-26 1998-11-10 Advanced Micro Devices, Inc. Hierarchical scan logic for out-of-order load/store execution control
US5754812A (en) * 1995-10-06 1998-05-19 Advanced Micro Devices, Inc. Out-of-order load/store execution control
EP0853787B1 (en) * 1995-10-06 2003-07-02 Advanced Micro Devices Inc. Scan chain for rapidly identifying first or second objects of selected types in a sequential list
US6038657A (en) * 1995-10-06 2000-03-14 Advanced Micro Devices, Inc. Scan chains for out-of-order load/store execution control
US6092184A (en) * 1995-12-28 2000-07-18 Intel Corporation Parallel processing of pipelined instructions having register dependencies
US5764943A (en) * 1995-12-28 1998-06-09 Intel Corporation Data path circuitry for processor having multiple instruction pipelines
US5781790A (en) * 1995-12-29 1998-07-14 Intel Corporation Method and apparatus for performing floating point to integer transfers and vice versa
US5778210A (en) * 1996-01-11 1998-07-07 Intel Corporation Method and apparatus for recovering the state of a speculatively scheduled operation in a processor which cannot be executed at the speculated time
US5751946A (en) * 1996-01-18 1998-05-12 International Business Machines Corporation Method and system for detecting bypass error conditions in a load/store unit of a superscalar processor
US5745724A (en) * 1996-01-26 1998-04-28 Advanced Micro Devices, Inc. Scan chain for rapidly identifying first or second objects of selected types in a sequential list
US5930489A (en) * 1996-02-09 1999-07-27 Advanced Micro Devices, Inc. Microprocessor configured to detect memory operations having data addresses indicative of a boundary between instructions sets
US5809275A (en) * 1996-03-01 1998-09-15 Hewlett-Packard Company Store-to-load hazard resolution system and method for a processor that executes instructions out of order
US5838942A (en) * 1996-03-01 1998-11-17 Hewlett-Packard Company Panic trap system and method
US5813033A (en) * 1996-03-08 1998-09-22 Advanced Micro Devices, Inc. Superscalar microprocessor including a cache configured to detect dependencies between accesses to the cache and another cache
US5968166A (en) * 1996-03-22 1999-10-19 Matsushita Electric Industrial Co., Ltd. Information processing apparatus and method, and scheduling device for reducing inactivity due to wait state
US5737749A (en) * 1996-05-20 1998-04-07 International Business Machines Corporation Method and system for dynamically sharing cache capacity in a microprocessor
US5860158A (en) * 1996-11-15 1999-01-12 Samsung Electronics Company, Ltd. Cache control unit with a cache request transaction-oriented protocol
US5890219A (en) * 1996-11-27 1999-03-30 Emc Corporation Redundant writing of data to cached storage system
US5890207A (en) * 1996-11-27 1999-03-30 Emc Corporation High performance integrated cached storage device
US5884055A (en) * 1996-11-27 1999-03-16 Emc Corporation Method and apparatus including a shared resource and multiple processors running a common control program accessing the shared resource
US5897666A (en) * 1996-12-09 1999-04-27 International Business Machines Corporation Generation of unique address alias for memory disambiguation buffer to avoid false collisions
US5841998A (en) * 1996-12-31 1998-11-24 Metaflow Technologies, Inc. System and method of processing instructions for a processor
US6230245B1 (en) 1997-02-11 2001-05-08 Micron Technology, Inc. Method and apparatus for generating a variable sequence of memory device command signals
US6175894B1 (en) 1997-03-05 2001-01-16 Micron Technology, Inc. Memory device command buffer apparatus and method and memory devices and computer systems using same
US5931957A (en) * 1997-03-31 1999-08-03 International Business Machines Corporation Support for out-of-order execution of loads and stores in a processor
US6021485A (en) * 1997-04-10 2000-02-01 International Business Machines Corporation Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching
US5987574A (en) * 1997-04-30 1999-11-16 Sony Corporation Bank arbitration for SDRAM memory control
US5996043A (en) 1997-06-13 1999-11-30 Micron Technology, Inc. Two step memory device command buffer apparatus and method and memory devices and computer systems using same
US6484244B1 (en) 1997-06-17 2002-11-19 Micron Technology, Inc. Method and system for storing and processing multiple memory commands
US6058472A (en) * 1997-06-25 2000-05-02 Sun Microsystems, Inc. Apparatus for maintaining program correctness while allowing loads to be boosted past stores in an out-of-order machine
US6085289A (en) * 1997-07-18 2000-07-04 International Business Machines Corporation Method and system for load data formatting and improved method for cache line organization
US6070238A (en) * 1997-09-11 2000-05-30 International Business Machines Corporation Method and apparatus for detecting overlap condition between a storage instruction and previously executed storage reference instruction
US6112293A (en) * 1997-11-17 2000-08-29 Advanced Micro Devices, Inc. Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result
US6202119B1 (en) 1997-12-19 2001-03-13 Micron Technology, Inc. Method and system for processing pipelined memory commands
US6112297A (en) * 1998-02-10 2000-08-29 International Business Machines Corporation Apparatus and method for processing misaligned load instructions in a processor supporting out of order execution
US6360314B1 (en) * 1998-07-14 2002-03-19 Compaq Information Technologies Group, L.P. Data cache having store queue bypass for out-of-order instruction execution and method for same
US6175905B1 (en) 1998-07-30 2001-01-16 Micron Technology, Inc. Method and system for bypassing pipelines in a pipelined memory command generator
US7779236B1 (en) * 1998-12-31 2010-08-17 Stmicroelectronics, Inc. Symbolic store-load bypass
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US6978462B1 (en) * 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US6549959B1 (en) 1999-08-30 2003-04-15 Ati International Srl Detecting modification to computer memory by a DMA device
US8065504B2 (en) 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US6336183B1 (en) * 1999-02-26 2002-01-01 International Business Machines Corporation System and method for executing store instructions
US6237066B1 (en) * 1999-03-22 2001-05-22 Sun Microsystems, Inc. Supporting multiple outstanding requests to multiple targets in a pipelined memory system
US6473837B1 (en) 1999-05-18 2002-10-29 Advanced Micro Devices, Inc. Snoop resynchronization mechanism to preserve read ordering
US6427193B1 (en) 1999-05-18 2002-07-30 Advanced Micro Devices, Inc. Deadlock avoidance using exponential backoff
US6266744B1 (en) * 1999-05-18 2001-07-24 Advanced Micro Devices, Inc. Store to load forwarding using a dependency link file
US6473832B1 (en) 1999-05-18 2002-10-29 Advanced Micro Devices, Inc. Load/store unit having pre-cache and post-cache queues for low latency load memory operations
US6415360B1 (en) 1999-05-18 2002-07-02 Advanced Micro Devices, Inc. Minimizing self-modifying code checks for uncacheable memory types
US6393536B1 (en) 1999-05-18 2002-05-21 Advanced Micro Devices, Inc. Load/store unit employing last-in-buffer indication for rapid load-hit-store
US7089404B1 (en) 1999-06-14 2006-08-08 Transmeta Corporation Method and apparatus for enhancing scheduling in an advanced microprocessor
US6134646A (en) * 1999-07-29 2000-10-17 International Business Machines Corp. System and method for executing and completing store instructions
US6915385B1 (en) * 1999-07-30 2005-07-05 International Business Machines Corporation Apparatus for unaligned cache reads and methods therefor
US6662280B1 (en) 1999-11-10 2003-12-09 Advanced Micro Devices, Inc. Store buffer which forwards data based on index and optional way match
US6539467B1 (en) * 1999-11-15 2003-03-25 Texas Instruments Incorporated Microprocessor with non-aligned memory access
US6970996B1 (en) * 2000-01-04 2005-11-29 National Semiconductor Corporation Operand queue for use in a floating point unit to reduce read-after-write latency and method of operation
DE10121792C2 (en) * 2000-05-26 2003-09-25 Ibm Universal load address / value prediction scheme
US6848024B1 (en) * 2000-08-07 2005-01-25 Broadcom Corporation Programmably disabling one or more cache entries
US6732234B1 (en) 2000-08-07 2004-05-04 Broadcom Corporation Direct access mode for a cache
US6748492B1 (en) * 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
JP4025493B2 (en) * 2000-08-08 2007-12-19 富士通株式会社 Instruction issuing device for issuing instructions to the appropriate issue destination
US7757066B2 (en) 2000-12-29 2010-07-13 Stmicroelectronics, Inc. System and method for executing variable latency load operations in a date processor
JP3776732B2 (en) * 2001-02-02 2006-05-17 株式会社東芝 The processor unit
FR2821449B1 (en) * 2001-02-27 2003-07-04 St Microelectronics Sa Instruction Management Method in a processor has decoupled architecture, particularly a digital signal processor, and corresponding processor
US6748495B2 (en) 2001-05-15 2004-06-08 Broadcom Corporation Random generator
US6959348B1 (en) * 2001-07-30 2005-10-25 Vixs Systems, Inc. Method and system for accessing data
US20030065909A1 (en) * 2001-09-28 2003-04-03 Jourdan Stephan J. Deferral of dependent loads until after execution of colliding stores
US7181596B2 (en) * 2002-02-12 2007-02-20 Ip-First, Llc Apparatus and method for extending a microprocessor instruction set
US7529912B2 (en) * 2002-02-12 2009-05-05 Via Technologies, Inc. Apparatus and method for instruction-level specification of floating point format
US7328328B2 (en) 2002-02-19 2008-02-05 Ip-First, Llc Non-temporal memory reference control mechanism
US7315921B2 (en) * 2002-02-19 2008-01-01 Ip-First, Llc Apparatus and method for selective memory attribute control
US7395412B2 (en) * 2002-03-08 2008-07-01 Ip-First, Llc Apparatus and method for extending data modes in a microprocessor
US7546446B2 (en) * 2002-03-08 2009-06-09 Ip-First, Llc Selective interrupt suppression
US6963964B2 (en) 2002-03-14 2005-11-08 International Business Machines Corporation Method and apparatus for detecting pipeline address conflict using parallel compares of multiple real addresses
US6804759B2 (en) * 2002-03-14 2004-10-12 International Business Machines Corporation Method and apparatus for detecting pipeline address conflict using compare of byte addresses
US7380103B2 (en) 2002-04-02 2008-05-27 Ip-First, Llc Apparatus and method for selective control of results write back
US7155598B2 (en) * 2002-04-02 2006-12-26 Ip-First, Llc Apparatus and method for conditional instruction execution
US7373483B2 (en) 2002-04-02 2008-05-13 Ip-First, Llc Mechanism for extending the number of registers in a microprocessor
US7302551B2 (en) * 2002-04-02 2007-11-27 Ip-First, Llc Suppression of store checking
US7185180B2 (en) * 2002-04-02 2007-02-27 Ip-First, Llc Apparatus and method for selective control of condition code write back
US7380109B2 (en) * 2002-04-15 2008-05-27 Ip-First, Llc Apparatus and method for providing extended address modes in an existing instruction set for a microprocessor
US7266587B2 (en) * 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
US7181598B2 (en) * 2002-05-17 2007-02-20 Intel Corporation Prediction of load-store dependencies in a processing agent
US7218647B2 (en) * 2002-06-27 2007-05-15 International Business Machines Corporation Method and apparatus for implementing frame header alterations
JP3808013B2 (en) * 2002-07-05 2006-08-09 富士通株式会社 The instruction execution unit
US7062636B2 (en) * 2002-09-19 2006-06-13 Intel Corporation Ordering scheme with architectural operation decomposed into result producing speculative micro-operation and exception producing architectural micro-operation
US7145567B2 (en) * 2003-04-03 2006-12-05 Avid Technology, Inc. Bitstream format and reading and writing methods and apparatus therefor
US7321964B2 (en) * 2003-07-08 2008-01-22 Advanced Micro Devices, Inc. Store-to-load forwarding buffer using indexed lookup
US6925928B2 (en) * 2003-09-18 2005-08-09 Anthony Fox Trash compactor for fast food restaurant waste
US7721069B2 (en) * 2004-07-13 2010-05-18 3Plus1 Technology, Inc Low power, high performance, heterogeneous, scalable processor architecture
US7376817B2 (en) * 2005-08-10 2008-05-20 P.A. Semi, Inc. Partial load/store forward prediction
US8275976B2 (en) * 2005-08-29 2012-09-25 The Invention Science Fund I, Llc Hierarchical instruction scheduler facilitating instruction replay
US8296550B2 (en) * 2005-08-29 2012-10-23 The Invention Science Fund I, Llc Hierarchical register file with operand capture ports
US7644258B2 (en) * 2005-08-29 2010-01-05 Searete, Llc Hybrid branch predictor using component predictors each having confidence and override signals
US20070083735A1 (en) * 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US9176741B2 (en) * 2005-08-29 2015-11-03 Invention Science Fund I, Llc Method and apparatus for segmented sequential storage
US7461239B2 (en) * 2006-02-02 2008-12-02 International Business Machines Corporation Apparatus and method for handling data cache misses out-of-order for asynchronous pipelines
JP4189436B2 (en) * 2006-11-07 2008-12-03 日立ソフトウエアエンジニアリング株式会社 Data processing control method
US7600099B2 (en) * 2007-03-08 2009-10-06 International Business Machines Corporation System and method for predictive early allocation of stores in a microprocessor
JP5145929B2 (en) * 2007-03-08 2013-02-20 株式会社リコー The semiconductor integrated circuit and an image processing apparatus
US20090006712A1 (en) * 2007-06-29 2009-01-01 Fatma Ehsan Data ordering in a multi-node system
JP5315748B2 (en) * 2008-03-28 2013-10-16 富士通株式会社 Microprocessors and signature generation method and a multiplexing system and multiplexing execution verification method
JP5206385B2 (en) * 2008-12-12 2013-06-12 日本電気株式会社 Boundary execution control system, boundary execution control method, and boundary execution control program
US8266411B2 (en) * 2009-02-05 2012-09-11 International Business Machines Corporation Instruction set architecture with instruction characteristic bit indicating a result is not of architectural importance
US7895381B2 (en) * 2009-02-16 2011-02-22 Himax Media Solutions, Inc. Data accessing system
GB2469299B (en) * 2009-04-07 2011-02-16 Imagination Tech Ltd Ensuring consistency between a data cache and a main memory
US8078796B2 (en) * 2009-04-14 2011-12-13 Micron Technology, Inc. Method for writing to and erasing a non-volatile memory
US8392666B2 (en) * 2009-05-21 2013-03-05 Via Technologies, Inc. Low power high speed load-store collision detector
US8977819B2 (en) * 2010-09-21 2015-03-10 Texas Instruments Incorporated Prefetch stream filter with FIFO allocation and stream direction prediction
EP2440016B1 (en) * 2010-10-08 2019-01-23 Lantiq Beteiligungs-GmbH & Co.KG Laser diode control device
US9128725B2 (en) 2012-05-04 2015-09-08 Apple Inc. Load-store dependency predictor content management
US9600289B2 (en) 2012-05-30 2017-03-21 Apple Inc. Load-store dependency predictor PC hashing
JP6344022B2 (en) * 2014-04-08 2018-06-20 富士通株式会社 Control method for an arithmetic processing device and a processing unit
US9710268B2 (en) 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads
US10241800B2 (en) 2015-06-16 2019-03-26 International Business Machines Corporation Split-level history buffer in a computer processing unit
US20170109165A1 (en) * 2015-10-19 2017-04-20 Arm Limited Apparatus and method for accessing data in a data store
US10191748B2 (en) * 2015-11-30 2019-01-29 Intel IP Corporation Instruction and logic for in-order handling in an out-of-order processor
DE102015224300A1 (en) * 2015-12-04 2017-06-08 Siemens Aktiengesellschaft Programmable memory device and method for secure transmission of data to a programmable logic block
US20190018681A1 (en) 2017-07-12 2019-01-17 International Business Machines Corporation Efficient pointer load and format

Family Cites Families (125)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3346851A (en) 1964-07-08 1967-10-10 Control Data Corp Simultaneous multiprocessing computer system
US3541528A (en) * 1969-01-06 1970-11-17 Ibm Implicit load and store mechanism
US3789365A (en) 1971-06-03 1974-01-29 Bunker Ramo Processor interrupt system
US3771138A (en) 1971-08-31 1973-11-06 Ibm Apparatus and method for serializing instructions from two independent instruction streams
US3916388A (en) 1974-05-30 1975-10-28 Ibm Shifting apparatus for automatic data alignment
US4084235A (en) 1975-04-14 1978-04-11 Honeywell Information Systems Inc. Emulation apparatus
US4034349A (en) 1976-01-29 1977-07-05 Sperry Rand Corporation Apparatus for processing interrupts in microprocessing systems
AU529675B2 (en) 1977-12-07 1983-06-16 Honeywell Information Systems Incorp. Cache memory unit
US4315314A (en) 1977-12-30 1982-02-09 Rca Corporation Priority vectored interrupt having means to supply branch address directly
US4200927A (en) 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4189772A (en) 1978-03-16 1980-02-19 International Business Machines Corporation Operand alignment controls for VFL instructions
US4189768A (en) 1978-03-16 1980-02-19 International Business Machines Corporation Operand fetch control improvement
US4236206A (en) 1978-10-25 1980-11-25 Digital Equipment Corporation Central processor unit for executing instructions of variable length
US4228495A (en) 1978-12-19 1980-10-14 Allen-Bradley Company Multiprocessor numerical control system
JPS6041768B2 (en) 1979-01-19 1985-09-18 Hitachi Ltd
US4296470A (en) 1979-06-21 1981-10-20 International Business Machines Corp. Link register storage and restore system for use in an instruction pre-fetch micro-processor interrupt system
JPS5616248A (en) 1979-07-17 1981-02-17 Matsushita Electric Ind Co Ltd Processing system for interruption
JPS5847053B2 (en) * 1979-11-19 1983-10-20 Hitachi Ltd
CA1174370A (en) 1980-05-19 1984-09-11 Hidekazu Matsumoto Data processing unit with pipelined operands
JPH028327B2 (en) 1980-08-27 1990-02-23 Hitachi Ltd
JPS6028015B2 (en) 1980-08-28 1985-07-02 Nippon Electric Co
US4434461A (en) 1980-09-15 1984-02-28 Motorola, Inc. Microprocessor with duplicate registers for processing interrupts
JPS5757345A (en) 1980-09-24 1982-04-06 Toshiba Corp Data controller
US4654781A (en) 1981-10-02 1987-03-31 Raytheon Company Byte addressable memory for variable length instructions and data
JPS58151655A (en) 1982-03-03 1983-09-08 Fujitsu Ltd Information processing device
US4514803A (en) 1982-04-26 1985-04-30 International Business Machines Corporation Methods for partitioning mainframe instruction sets to implement microprocessor based emulation thereof
JPS5932045A (en) 1982-08-16 1984-02-21 Hitachi Ltd Information processor
EP0124517A1 (en) 1982-10-22 1984-11-14 International Business Machines Corporation Accelerated instruction mapping external to source and target instruction streams for near realtime injection into the latter
JPS59165143A (en) * 1983-03-11 1984-09-18 Hitachi Ltd Data processor
US4569016A (en) 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
EP0150177A1 (en) * 1983-07-11 1985-08-07 Prime Computer, Inc. Data processing system
US4800486A (en) 1983-09-29 1989-01-24 Tandem Computers Incorporated Multiple data patch CPU architecture
US4807115A (en) 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
GB8329509D0 (en) 1983-11-04 1983-12-07 Inmos Ltd Computer
JPH063584B2 (en) * 1983-12-19 1994-01-12 株式会社日立製作所 The information processing apparatus
JPS60225943A (en) 1984-04-25 1985-11-11 Hitachi Ltd Exceptional interruption processing system
US4720779A (en) 1984-06-28 1988-01-19 Burroughs Corporation Stored logic program scanner for a data processor having internal plural data and instruction streams
JPH0412853B2 (en) 1984-07-25 1992-03-05 Nippon Electric Co
US4766564A (en) 1984-08-13 1988-08-23 International Business Machines Corporation Dual putaway/bypass busses for multiple arithmetic units
US4739472A (en) * 1984-12-07 1988-04-19 Nec Corporation Information processing device capable of rapidly processing instructions of different groups
NL193475C (en) 1984-12-27 1999-11-02 Sony Corp Microprocessor device.
US4794517A (en) * 1985-04-15 1988-12-27 International Business Machines Corporation Three phased pipelined signal processor
US4679141A (en) * 1985-04-29 1987-07-07 International Business Machines Corporation Pageable branch history table
US4714994A (en) 1985-04-30 1987-12-22 International Business Machines Corp. Instruction prefetch buffer control
JPH0762823B2 (en) 1985-05-22 1995-07-05 日立超エル・エス・アイ・エンジニアリング株式会社 De - data processing apparatus
DE3650578T2 (en) * 1985-06-17 1997-03-06 Nec Corp Information processing system comprising a control circuit for a register renewal waiting and receiving means of the renewal register
US4739471A (en) 1985-06-28 1988-04-19 Hewlett-Packard Company Method and means for moving bytes in a reduced instruction set computer
US4734852A (en) * 1985-08-30 1988-03-29 Advanced Micro Devices, Inc. Mechanism for performing data references to storage in parallel with instruction execution on a reduced instruction-set processor
US4722049A (en) * 1985-10-11 1988-01-26 Unisys Corporation Apparatus for out-of-order program execution
JPS62152043A (en) 1985-12-26 1987-07-07 Nec Corp Control system for instruction code access
JPS62165242A (en) 1986-01-17 1987-07-21 Toshiba Corp Processor
DE3603240C2 (en) * 1986-02-03 1988-05-26 Siemens Ag, 1000 Berlin Und 8000 Muenchen, De
DE3751503D1 (en) 1986-03-26 1995-10-12 Hitachi Ltd to decode data processor in a pipelined structure with the ability to execute multiple instructions in parallel and.
US4903196A (en) 1986-05-02 1990-02-20 International Business Machines Corporation Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor
JPS6324428A (en) 1986-07-17 1988-02-01 Mitsubishi Electric Corp Cache memory
US4766566A (en) 1986-08-18 1988-08-23 International Business Machines Corp. Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing
CA1286784C (en) * 1986-08-27 1991-07-23 Joseph A. Petolino, Jr. Cache storage queue
US5133072A (en) 1986-11-13 1992-07-21 Hewlett-Packard Company Method for improved code generation in reduced instruction set computers
JPS63131230A (en) 1986-11-21 1988-06-03 Hitachi Ltd Information processor
EP0272198A3 (en) * 1986-12-15 1991-10-16 United Technologies Corporation Reduced instruction set computing apparatus and methods
US4992934A (en) 1986-12-15 1991-02-12 United Technologies Corporation Reduced instruction set computing apparatus and methods
US4814976C1 (en) * 1986-12-23 2002-06-04 Mips Tech Inc Risc computer with unaligned reference handling and method for the same
JPS63163930A (en) 1986-12-26 1988-07-07 Toshiba Corp Alignment correction system
US4991090A (en) * 1987-05-18 1991-02-05 International Business Machines Corporation Posting out-of-sequence fetches
US4992938A (en) 1987-07-01 1991-02-12 International Business Machines Corporation Instruction control mechanism for a computing system with register renaming, map table and queues indicating available registers
US4901233A (en) * 1987-07-20 1990-02-13 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
US5134561A (en) * 1987-07-20 1992-07-28 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
US4942520A (en) * 1987-07-31 1990-07-17 Prime Computer, Inc. Method and apparatus for indexing, accessing and updating a memory
US4916652A (en) 1987-09-30 1990-04-10 International Business Machines Corporation Dynamic multiple instruction stream multiple data multiple pipeline apparatus for floating-point single instruction stream single data architectures
EP0312764A3 (en) * 1987-10-19 1991-04-10 International Business Machines Corporation A data processor having multiple execution units for processing plural classes of instructions in parallel
US5247628A (en) * 1987-11-30 1993-09-21 International Business Machines Corporation Parallel processor instruction dispatch apparatus with interrupt handler
JP2667849B2 (en) * 1988-01-06 1997-10-27 株式会社日立製作所 The information processing apparatus
US4926323A (en) 1988-03-03 1990-05-15 Advanced Micro Devices, Inc. Streamlined instruction processor
US5003462A (en) 1988-05-31 1991-03-26 International Business Machines Corporation Apparatus and method for implementing precise interrupts on a pipelined processor with multiple functional units with separate address translation interrupt means
US4897810A (en) 1988-06-13 1990-01-30 Advanced Micro Devices, Inc. Asynchronous interrupt status bit circuit
EP0348628A3 (en) * 1988-06-28 1991-01-02 International Business Machines Corporation Cache storage system
US5148536A (en) * 1988-07-25 1992-09-15 Digital Equipment Corporation Pipeline having an integral cache which processes cache misses and loads data in parallel
JPH0673105B2 (en) 1988-08-11 1994-09-14 株式会社東芝 The microprocessor of the instruction pipeline system
US5101341A (en) 1988-08-25 1992-03-31 Edgcore Technology, Inc. Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO
JP2810068B2 (en) 1988-11-11 1998-10-15 株式会社日立製作所 Processor system, computer system and instruction processing method
JPH02151930A (en) * 1988-12-05 1990-06-11 Nec Corp Storage buffer managing system
GB8828817D0 (en) 1988-12-09 1989-01-18 Int Computers Ltd Data processing apparatus
US5075840A (en) 1989-01-13 1991-12-24 International Business Machines Corporation Tightly coupled multiprocessor instruction synchronization
US4961162A (en) * 1989-01-13 1990-10-02 International Business Machines Corporation Multiprocessing system for performing floating point arithmetic operations
US5127091A (en) 1989-01-13 1992-06-30 International Business Machines Corporation System for reducing delay in instruction execution by executing branch instructions in separate processor while dispatching subsequent instructions to primary processor
US5249273A (en) 1989-01-17 1993-09-28 Fujitsu Limited Microprocessor having a variable length instruction format
US5148528A (en) 1989-02-03 1992-09-15 Digital Equipment Corporation Method and apparatus for simultaneously decoding three operands in a variable length instruction when one of the operands is also of variable length
US4985825A (en) 1989-02-03 1991-01-15 Digital Equipment Corporation System for delaying processing of memory access exceptions until the execution stage of an instruction pipeline of a virtual memory system based digital computer
US5113515A (en) 1989-02-03 1992-05-12 Digital Equipment Corporation Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer
US5226126A (en) 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5768575A (en) 1989-02-24 1998-06-16 Advanced Micro Devices, Inc. Semi-Autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for sepculative and out-of-order execution of complex instructions
GB2230116B (en) 1989-04-07 1993-02-17 Intel Corp An improvement for pipelined decoding of instructions in a pipelined processor
CA2016068C (en) 1989-05-24 2000-04-04 Robert W. Horst Multiple instruction issue computer architecture
JPH0314025A (en) 1989-06-13 1991-01-22 Nec Corp Instruction execution control system
EP0419105B1 (en) 1989-09-21 1997-08-13 Texas Instruments Incorporated Integrated circuit formed on a surface of a semiconductor substrate and method for constructing such an integrated circuit
JP2835103B2 (en) 1989-11-01 1998-12-14 富士通株式会社 Instruction how to specify and instruction execution method
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
US5185871A (en) * 1989-12-26 1993-02-09 International Business Machines Corporation Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions
US5193206A (en) 1989-12-27 1993-03-09 Motorola, Inc. Reduce instruction set microprocessor
US5185868A (en) * 1990-01-16 1993-02-09 Advanced Micro Devices, Inc. Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy
US5251306A (en) * 1990-01-16 1993-10-05 Advanced Micro Devices, Inc. Apparatus for controlling execution of a program in a computing device
US5168571A (en) 1990-01-24 1992-12-01 International Business Machines Corporation System for aligning bytes of variable multi-bytes length operand based on alu byte length and a number of unprocessed byte data
US5230068A (en) 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
US5051940A (en) * 1990-04-04 1991-09-24 International Business Machines Corporation Data dependency collapsing hardware apparatus
CA2038264C (en) 1990-06-26 1995-06-27 Richard James Eickemeyer In-memory preprocessor for a scalable compound instruction set machine processor
US5155843A (en) * 1990-06-29 1992-10-13 Digital Equipment Corporation Error transition mode for multi-processor system
US5193167A (en) * 1990-06-29 1993-03-09 Digital Equipment Corporation Ensuring data integrity by locked-load and conditional-store operations in a multiprocessor system
US5163139A (en) 1990-08-29 1992-11-10 Hitachi America, Ltd. Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions
DE69130723D1 (en) 1990-10-05 1999-02-18 Koninkl Philips Electronics Nv Processing unit with memory circuit and a group of functional units
JP2532300B2 (en) * 1990-10-17 1996-09-11 三菱電機株式会社 Instruction supply device in a parallel processor
US5317740A (en) * 1991-03-07 1994-05-31 Digital Equipment Corporation Alternate and iterative analysis of computer programs for locating translatable code by resolving callbacks and other conflicting mutual dependencies
US5261071A (en) 1991-03-21 1993-11-09 Control Data System, Inc. Dual pipe cache memory with out-of-order issue capability
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5345569A (en) * 1991-09-20 1994-09-06 Advanced Micro Devices, Inc. Apparatus and method for resolving dependencies among a plurality of instructions within a storage device
US5323489A (en) * 1991-11-14 1994-06-21 Bird Peter L Method and apparatus employing lookahead to reduce memory bank contention for decoupled operand references
US5371684A (en) * 1992-03-31 1994-12-06 Seiko Epson Corporation Semiconductor floor plan for a register renaming circuit
US5418973A (en) * 1992-06-22 1995-05-23 Digital Equipment Corporation Digital computer system with cache controller coordinating both vector and scalar operations
US5442756A (en) 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
US5619668A (en) 1992-08-10 1997-04-08 Intel Corporation Apparatus for register bypassing in a microprocessor
WO1994008287A1 (en) 1992-09-29 1994-04-14 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
DE69429061T2 (en) 1993-10-29 2002-07-18 Advanced Micro Devices Inc Superskalarmikroprozessoren
US5574927A (en) * 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer
US5778210A (en) * 1996-01-11 1998-07-07 Intel Corporation Method and apparatus for recovering the state of a speculatively scheduled operation in a processor which cannot be executed at the speculated time
US5832205A (en) * 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed

Also Published As

Publication number Publication date
JP2006277776A (en) 2006-10-12
US5659782A (en) 1997-08-19
JP2005235233A (en) 2005-09-02
KR100248903B1 (en) 2000-03-15
JP2000148493A (en) 2000-05-30
JP2000181708A (en) 2000-06-30
JP2006048713A (en) 2006-02-16
JP2005353091A (en) 2005-12-22
JP3772899B2 (en) 2006-05-10
JPH08504977A (en) 1996-05-28
EP0663083B1 (en) 2000-12-20
JP2000148491A (en) 2000-05-30
JP2000148494A (en) 2000-05-30
JP2003131872A (en) 2003-05-09
JP3741146B2 (en) 2006-02-01
JP2005322269A (en) 2005-11-17
JP2003177913A (en) 2003-06-27
JP3588755B2 (en) 2004-11-17
HK1014780A1 (en) 2002-01-25
JP3874022B2 (en) 2007-01-31
JP2003131870A (en) 2003-05-09
JP2005174364A (en) 2005-06-30
JP2005166046A (en) 2005-06-23
DE69329778D1 (en) 2001-01-25
JP2005050371A (en) 2005-02-24
JP3627737B2 (en) 2005-03-09
JP3741149B2 (en) 2006-02-01
JP3772901B2 (en) 2006-05-10
JP2006073025A (en) 2006-03-16
JP3772902B2 (en) 2006-05-10
US5987593A (en) 1999-11-16
JP2005141780A (en) 2005-06-02
JP2005216326A (en) 2005-08-11
JP2005243050A (en) 2005-09-08
WO1994008287A1 (en) 1994-04-14
JP3644959B2 (en) 2005-05-11
JP2005149525A (en) 2005-06-09
JP2000148492A (en) 2000-05-30
JP3741144B2 (en) 2006-02-01
JP2003131871A (en) 2003-05-09
JP3852475B2 (en) 2006-11-29
DE69329778T2 (en) 2001-04-26
US5557763A (en) 1996-09-17
EP0663083A1 (en) 1995-07-19
JP3852474B2 (en) 2006-11-29
JP3620530B2 (en) 2005-02-16
US6434693B1 (en) 2002-08-13
JP2000148481A (en) 2000-05-30
JP3772905B2 (en) 2006-05-10
JP3772900B2 (en) 2006-05-10
US20030056089A1 (en) 2003-03-20
JP3772903B2 (en) 2006-05-10
JP2005025788A (en) 2005-01-27
JP2000148480A (en) 2000-05-30
JP2000148490A (en) 2000-05-30
JP3815507B2 (en) 2006-08-30
US7000097B2 (en) 2006-02-14
JP2000148483A (en) 2000-05-30

Similar Documents

Publication Publication Date Title
EP0463975B1 (en) Byte-compare operation for high-performance processor
US5142634A (en) Branch prediction
US5519841A (en) Multi instruction register mapper
US5724536A (en) Method and apparatus for blocking execution of and storing load operations during their execution
Hunt Advanced performance features of the 64-bit PA-8000
EP0895163B1 (en) A data processor having a cache memory
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
US5404467A (en) CPU having pipelined instruction unit and effective address calculation unit with retained virtual address capability
JP2939003B2 (en) Method for improving the performance multiprocessor and its performance has a floating point unit
US6021485A (en) Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching
US6065103A (en) Speculative store buffer
US5125083A (en) Method and apparatus for resolving a variable number of potential memory access conflicts in a pipelined computer system
JP2962876B2 (en) Conversion to the i / o space address of the internal processor register command
US5953512A (en) Microprocessor circuits, systems, and methods implementing a loop and/or stride predicting load target buffer
US5327547A (en) Two-level branch prediction cache
EP0465321B1 (en) Ensuring data integrity in multiprocessor or pipelined processor system
US6230260B1 (en) Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
US6141747A (en) System for store to load forwarding of individual bytes from separate store buffer entries to form a single load word
US5623628A (en) Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue
JP3441070B2 (en) High-performance risc microprocessor and the data processing device
US5226126A (en) Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
JP3105960B2 (en) Method of performing register data manipulation in a simplified instruction set processor
US6141734A (en) Method and apparatus for optimizing the performance of LDxL and STxC interlock instructions in the context of a write invalidate protocol
EP0463978A2 (en) Granularity hint for translation buffer in high performance processor
KR100783828B1 (en) A multithreaded processor capable of implicit multithreaded execution of a single-thread program

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051018

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060206

R150 Certificate of patent (=grant) or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20090224

Year of fee payment: 3

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

Year of fee payment: 4

Free format text: PAYMENT UNTIL: 20100224

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

Year of fee payment: 5

Free format text: PAYMENT UNTIL: 20110224

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

Free format text: PAYMENT UNTIL: 20110224

Year of fee payment: 5

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

Year of fee payment: 6

Free format text: PAYMENT UNTIL: 20120224

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

Free format text: PAYMENT UNTIL: 20130224

Year of fee payment: 7

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

Year of fee payment: 7

Free format text: PAYMENT UNTIL: 20130224