CA1228170A - Architecture for small instruction caches - Google Patents

Architecture for small instruction caches

Info

Publication number
CA1228170A
CA1228170A CA000482001A CA482001A CA1228170A CA 1228170 A CA1228170 A CA 1228170A CA 000482001 A CA000482001 A CA 000482001A CA 482001 A CA482001 A CA 482001A CA 1228170 A CA1228170 A CA 1228170A
Authority
CA
Canada
Prior art keywords
address
instruction
target
line
branch
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired
Application number
CA000482001A
Other languages
French (fr)
Inventor
Eric P. Kronstadt
Tushar R. Gheewala
Sharad P. Gandhi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of CA1228170A publication Critical patent/CA1228170A/en
Expired legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer

Abstract

ABSTRACT
ARCHITECTURE FOR SMALL INSTRUCTION CACHES
A branch target table (10) is used as an instruction memory which is referenced by the addresses of instructions which are targets of branches. The branch target table consists of a target address table (12), a next fetch address table (14), a valid entries table (16) and an instruction table (18). whenever a branch is taken, some of the bits in the untranslated part of the address of the target instruction , i.e. the instruction being branched to, are used to address a line of the branch target table (10).
In parallel with address translation, all entries of the branch target table line are accessed, and the translated address is compared to the target address table (12) entry on that line. If the target address table entry matches the target address, the instruction prefetch unit (32) fetches the instruction addressed by the next fetch address table (14) entry for the given line and the line of instructions associated with the branch address table entry is read into an instruction queue (38) having a length set by the valid entry table (16) entry which indicates how many of these instructions are valid. Otherwise, the instruction prefetch unit (32) fetches the target and subsequent instructions as it would if there were no branch target table, and the target address table entry is set to the real address of the target instruction. The next fetch address table (14) is updated so that it always contains the address of the instruction which follows the last valid instruction in the line, and the valid entries table (16) is updated so that it always counts the number of valid instructions in the line.

Description

Yo-yo lZ28~7~

- ARCHITECTURE FOR SMALL INSTRUCTION Khakis Background of the Invention The invention describe herein generally relates to micro-processors having an on-chip instruction cane and, 5 more specifically, to a unique architecture for such an instruction memory which is particularly suited for enhancing the performance of instruction prefetch.
Current advances in very large scale integrated (VLSI) circuit technology permits design of high performance lo micro-processors with cycle times well under 100 nanoseconds Simultaneously, the performance of dynamic memories are improving to the point where random access memory (RAM) access times can very nearly match processor cycle times. However, the time it takes to drive addresses 15 and data off chip, generate appropriate memory chip selects, do the memory access, perform error detection, and drive back to the CPU can add several (CPU) cycles to the "system"
access time of a memory. As long as the CPU is fetching data sequentially, as in sequential instruction fetches, it 20 can prefetch far enough in advance so that it sees a constant stream of data arriving at intervals equivalent to the RAM cycle time, which, as noted above, is comparable to the CPU cycle time. However, as soon as a branch instruction occurs, the "prefetch pipeline" is broken, and 25 the CPU must wait for several cycles for the next instruction. With current VSLI chip densities, it is possible to add a fair amount of circuitry to the "CPU"
chip, some of which may be devoted to decreasing this idle time. A standard approach is to put a small instruction 30 memory, usually an instruction cache (I-cache), on the CPU
chip.
An example of a single-chip micro-processor having an instruction register with associated control decode or micro-control generator circuitry is disclosed in Use Yo~3-13s ~22~7~ ' Patent lo. 4,4~,042 issued to Karl M. Gut tag In this patent, the micro-processor communicates with external millionaire by a bidirectional multiplexed address/data bus.
Each instruction produces a sequence of microcode which are 5 generated by selecting an entry point for the first address of the control read only memory (ROM) then executing a series of jumps depending upon the instruction. Operating speed is increased by fetching the next instruction and starting to generate operand addresses before the current 10 result has been calculated and stored.
US. Patent Jo. 4,39~,946 to Thomas A. Lane discloses a pipeline processor wherein micro-instructions are held in a Control store that is partitioned into two microcode memory banks. This system can support three modes of sequencing:
15 single micro-instruction, sequential multiple micro-instructions, and multiple micro-instructions with conditional branching. When a conditional branch is performed, the branch not taken path is assumed and if true, the micro-instruction following the branch is executed with 20 no delay. If the branch is taken, the guess is purged and following a one clock delay, the branched to microinstruction is executed. The Lane system supports these sequencing modes at the maximum pipeline rate.
US. Patent No. 4,384,342 to Tokyo Immure et at 25 discloses a Lockwood prefetching technique wherein a first memory address register stores the column address and module designation portions of the current effective address, a second memory address register stores the row address portion of the current effective address, and a third memory 30 address register stores the module designation portion of the prior effective address. Since the same module is frequently accessed many times in succession the average access time is reduced by starting an access based on the contexts of the second and third memory address registers 35 without waiting until the column address and module YO-YO ~2~7~

designation portions of the current effective address are ; available from storage in the first Emory address register.
the access is completed, after the column address and module designation portions of the current effective address are S determined, if a comparator which is connected to the first and third memory address registers confirms that tune save memory module is being successively accessed. If not, the modules are accessed again based upon the contents of the first and second memory address registers.

10 Summary of the Invention It is an object of the present invention to provide a new architecture for an on-chip instruction cache which is more effective than the prior art.
It is another object of this invention to rove an 15 instruction memory architecture which uses an associative addressing scheme to provide better performance of instruction prefetch.
The objects of the invention are accomplished by providing a branch target table (BUT) as an instruction 20 memory which is referenced by the addresses of instructions which are targets of branches. The BUT consists of a target address table (TAT), a next fetch address table FIAT a valid entries table (VET) and an instruction table (IT).
whenever a branch is taken, some of the bits in the 25 untranslated part of the address of the target instruction, i.e. the instruction being branched to, are used to address a line of the BUT. In parallel with address translation, all entries of the BUT line are accessed, and the translated address is compared to the TAT entry on that line. If the 30 TAT entry matches the target address, the instruction prefetch unit fetches the instruction addressed by the NEAT
entry for the given line and the line of instructions associated with the BUT entry is read into an instruction queue having a pointer length set to the TV entry Nash -I 2~7~) , YO-YO

indicates how many of these instructions are valid.
Otherwise, the instruction prewash unit fetches tune target and subsequent instruction as it would if there were no BUT, and the TAT entry is set to the real address of the target 5 instruction. The FAT is updated so that it always contains the address of the instruction which follows the last valid instruction in tune line, and the VET is updated so that it always counts the number of valid instructions in the line.

Brief Description of the Drawing _ The foregoing and other objects, aspects and advantages of the invention will be better understood from the following detailed description of the invention with reference to the drawings, in which:
Figure 1 is a block diagram of the basic instruction 15 memory architecture according to the invention; and Figure 2 is a bloc diagram of the additional logic required for the example of a two-way set associative OTT
configuration.

Detailed Description of the Invention . _ _ . _ The branch target table (BUT) is an instruction memory which is referenced by the addresses of instructions which are targets of branches. The following discussion describes a one-way associative addressing scheme; as indicated later, greater associativity provides better performance.
With reference to the drawing, the BUT 10 consists of a target address table (TAT) 12, a next feign address table (FAT) 14, a valid entries table (VET) 16 and an instruction table (IT) 18. The CPU generated branch target instruction address is supplied to a first address register I This 30 address includes a virtual part and a fixed part. The virtual Hart of the address is supplied to an address translation unit 22 which generates the real address for storing in a second address register 24. The fixed part of 28~t~3 YO-YO

the address stored in register I is directly read into corresponding locations of register I An address comparator 26 compares entries in TAT 12 with the ranch target real address generated by the address translation 5 unit 22 and store in register 24. next feign address register 28 communicates with the FAT 14 and supplies a branch address to address multiplexer I Tune other input to multiplexer I is supplied from register 24 and, depending on the output of comparator 26, tune contents of id register 24 or of register 28 are swilled to the Cups instruction prefetch unit 32. The instruction prefetch unit 32 also communicates directly with register 28 which in turn provides addresses for reading into tune NUT 14.
A portion of the fixed address store in register I is 15 also supplied to a decoder 34 winch addresses a line on the ; BUT I In addition, there is provided an incremented 36 for incrementing entries in the VET 16. An instruction queue 38 is fed by the instruction table (IT) 18 of the BUT
I and is addressed by queue pointers in register I
20 supplied by the VET 16. Instructions to be delivered to the CPU are selected by an instruction multiplexer 42.
Whenever a branch is taken, some of the bits in the untranslated part of the address of the target instruction (the instruction being branched to) are used to address a 25 line of the BUT 10. In parallel with the address translation, all entries of the BUT line are accessed. The translated address is compared to the TAT entry on that line. If the TAT entry matches the target address, the instruction prefetch unit 32 fetches the instruction 30 addressed by the NAT 14 entry for the given line, and the line of instructions associate wit the branch address table entry is read into the instruction queue 38 having a length set by the VET 16 entry which indicates how zany of these instructions are valid. Otherwise, the instruction 35 raffish unit 32 fetches the target and subsequent I
YO-YO

instructions as it would if there were no BUT and tune TAT
entry is set to the real address of the target instruction.
The NEAT 14 is updated so that it always contains the address of the instruction which hollows the last valid 5 instruction in the line, and Tao VET 16 is updated so that it always counts the number of valid instructions in tune line.
The operation will be better understood from a consideration of the following examples.
Case 1: The TAT entry does not match the target address. This would happen, for example, the first time the branch is taken. In this case, the instruction raffish unit 32 fetches the target and subsequent instruction us it wound if there were no BUT, and the TAT entry is set to the 15 real address of the target instruction. As the target and subsequent instructions arrive on the CPU chip, they are ; delivered to the CPU for processing and simultaneously entered into the instruction table part of the OTT in the line associated with the target address. he target ; 20 instruction occupies tune first instruction location on this line, and subsequent instructions are placed in subsequent instruction locations on the line until either the line is filled, or another branch is taken. The NEAT entry for the line is updated so that it always contains the address of 25 the instruction which follows the last valid instruction in tune line. The VET 16 is updated so that it always counts the number of valid instructions in the line.
Case 2: The TAT entry matches the target address. In this case, the instruction prefetch unit fetches the 30 instruction addressed by the NEAT entry for the given line.
Simultaneously, the line of instructions associated with tune OTT entry is read into instruction queue 38, with queue length set to the VET entry which indicates how many or these instructions are valid. The instructions in tune queue 35 are immediately available to the CPU so that it is not Yule ~2~7~

sitting idle during the time required to refill the prefetch pipeline. Note that the prefetch unit 32 will fetch the instruction following the last valid instruction in the queue. As that and subsequent instructions arrive on the 5 CPU chip, they are placed at the end of the queue or delivered to the CPU for processing, and if there is room in the BUT line, simultaneously entered into the instruction table part of the BUT. The NEAT 14 is updated so that it always contains the address of the instruction weaken follows 10 the last valid instruction in the BUT line. The VET 16 is updated so that it always counts the number of valid instructions in the OTT line.
As described above, the scheme for indexing into the BUT is one-way associative; in owner words, there is only 15 one BUT line for each different value that can be taken on by that portion of the target address that is used to index into tune BUT. This is the simplest scheme. One can easily construct an n-way associative BUT. In this case, n lines of the BUT would be simultaneously addressed by a portion of Thea target instruction address, and the TAT entries for each of these lines would be compared to determine which line of the BUT contained the information for that target ; instruction. -If no match were found, then one of the entries in the "associativity class" would have to be 25 discarded (using a standard least recently used LO
algorithm) to make room for the information on the current branch. This technique is very effective in improving performance at the expense of some additional logic.
An example of the logic required for a two-way set 30 associative BUT configuration is shown in Figure 2. Two To lull and 1~2 wit corresponding Tats 12 and 12 , fats 141 and 142, Vets 161 and 162, and Its 181 and 1~2 are provided. The fixed address bits from register MU are supplied to associated decoders 34 and 342 to address lines 35 on By 1~1 and 1~2, respectively. 'he translated address ~L~2~3~7~
YO-YO

bits from register 24 are compared in comparators 261 and 262 with target addresses from Tats 121 and 122. The outputs of these comparators are provided as control inputs to multiplexes I I and I The output of multiplexer 3 5 is supplied to the instruction prefetch unit 32 as before.
multiplexer 44 receives as inputs the outputs of Vets 161 and 16 and provides an output to the queue pointer resister 40. Multiplexer 46 receives as inputs the outputs o.
instruction tables 18 and 18 and provides outputs to tune lo instruction queue 38.
In the above discussion, it was also assumed that when a branch was taken to a target instruction corresponding to an entry in the BTl, prefetching of tune instruction addressed by the FAT entry begins immediately.
15 This may not be necessary if the number of valid instructions in the BUT line is greater than the number of CUP cycles required to obtain that instruction. One could have some additional logic associated with the instruction queue, so that if the length of the queue is greater than a 20 certain constant (equal, for example, to the number of CPU
cycles required to complete a memory access, including all system access overhead), then no prefetching is done. this causes less traffic on the memory bus and reduces contention for instruction and data accesses.
There is no prefetching in a standard I-cache. when a cache miss occurs, an entire cache line is read from Cain memory. the penalty for a cache miss is at least as large as the full memory system access time plus the CPU cycle time multiplied by tune number of words in tune cache. In 30 some cache implementations, instructions are made available to the CPU as they are loaded into the cache (as in the present invention) so this last component of the miss penalty may be reduced. Ivory, it is frequently the case that in filling a cache line, one fetches and caches 35 instructions that are never used.

YO-YO ~22~

On a standard I-cache, a miss can occur on any instruction access. BUT misses can only occur on "taken"
branches, i.e. the execution of conditional branches for which the condition does not hold does not involve toe BUT.
5 Thus, if roughly 16% of all instructions are taken ranches, a 40% hit ratio in the BUT would be roughly equivalent to a 93g~ hit ratio on a standard I-cache. It is apparent that in Situations where only a small amount of memory is available for on chip instructions storage, a BUT according to the 10 present invention has advantages over a standard I-cache.
The table below contains comparative performance figures for a micro-processor system using a BUT and an I-cache of differing sizes.
¦ Relative Hit ¦ Performance Ratio _____________________________________________ 1/2-K I-Cache ¦ 1.~0 79%
(4 way associative) j I

20l-K I-Cache I 1.06 83%
(4 way associative) I
I
1/2-K BUT ¦ 1.15 40%
(1 way associative) l-K Bit ¦ 1.17 guy I way associative) I
The system consists of a CPU and a BTT/I-cache management unit on one chip and a separate memory system.
30 The memory system is composed of ripple mode memories which are configured so that over 90% of all CPU accesses to memory instruction and data) involve a DOW cycle time which is less than or equal to the CUP cycle time, while system access time adds three additional CPU cycles. The 35 system contains one address bus and one bus for instruction 28~
Yo-yo and data. The results are based on a single set of trace taxes, representing a high level language compilation. rlhe I-cache was 4-way set associative with either or 16 associativity classes, each containing four sixteen byte 5 lines. (Eight classes corresponds to a 1/2-~ cache size, 16 classes to a lo cache.) The BUT was only one-way associative and had either 16 or 32 lines (corresponding to 1/2-K or I BUT sizes) with room for seven instructions on each line. System modeling includes loads and stores as 10 well as instruction fetches, so that contention for the single data bus is included in these figures. The performance numbers in the table are normalized to tune performance of the l/2-K I-cache configuration. Note that the difference between I-cache performance and BUT
15 performance would be more pronounced if the associativity of the two were the same.

Claims (6)

The embodiments of the invention in which an exclusive property or privilege is claimed are defined as follows:
1. An instruction memory architecture for a microprocessor comprising:
a branch target table including a target address table, a next fetch address table, a valid entries table and an instruction table;
instruction address register means for storing a target address generated by said microprocessor;
decoder means responsive to said instruction address register means for addressing all entries of a line of said branch target table whenever a branch is taken;
comparator means connected to the outputs of said instruction register means and said target address table for providing an output indicative of a match between the target address and the accessed target address table entry on said addressed line; and instruction prefetch means connected to said instruction address register means and said next fetch address table and responsive to the output of said comparator means for fetching the instruction in the accessed next fetch address table if said target address table entry matches the target address, otherwise for fetching the target and subsequent instructions from main memory, said next fetch address table entry for the line being updated so that it always contains the address of the instruction which follows the last valid instruction in the line and said valid entries table being updated so that it always counts the number of valid instructions in the addressed branch target table line.
2. The instruction memory architecture as recited in claim 1 wherein said instruction address register means comprises:
a first register for storing an address having a virtual part and a fixed part, said address being the target address generated by said microprocessor, at least some of the bits in the fixed part of said address being supplied to said decoder means;
address translation means connected to said first register and responsive to the virtual part of said target address for generating a corresponding real address; and a second register connected to receive the real address from said address translation means and the fixed part of said target address stored in said first register, said comparator means receiving said real address stored in said second register for comparison with the accessed target address table entry.
3. The instruction memory architecture as recited in claim 1 further comprising:
instruction queue means connected to said instruction table for receiving instructions to be supplied to said microporcessor; and queue pointer register means connected to said valid entry table for storing pointers which address said instruction queue means.
4. The instruction memory architecture as recited in claim 1, said architecture being n-way set associative further comprising:
at least a second branch target table having a target address table, a next fetch address table, a valid address table and an instruction table;
at least a second decoder means responsive to said instruction register means for addressing all entries of a line of said branch target table whenever a branch is taken;
at least a second comparator means connected to the outputs of said instruction address register means and said target address table of said second branch target table for providing an output indicative of a match between the target address and the accessed target address table entry on said accessed line; and selection means controlled by the outputs of said comparators for providing the outputs of one of said instruction tables to said microprocessor.
5. A method of operating an instruction memory architecture for a microprocessor, said instruction memory architecture comprising a branch target table having a target address table, a next fetch address table, a valid entries table and an instruction table, said method comprising the steps of referencing said branch target table by the addresses of instructions which are targets of branches, all entries of an addressed line of said branch target table being accessed whenever a branch is taken, comparing the target address with the target address table entry on said addressed line and, if said target address table entry matches the target address, fetching the instruction addressed by said next fetch address table entry, otherwise fetching the target and subsequent instructions from main memory.
6. The method according to claim 5 further comprising the additional steps performed when an instruction is fetched of updating the next fetch address table entry for the addressed branch target table line so that it always contains the address of the instruction which follows the last valid instruction in the line, and updating the valid entries table so that it always counts the number of valid instructions in the addressed branch target table line.
CA000482001A 1984-10-24 1985-05-21 Architecture for small instruction caches Expired CA1228170A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US664,275 1976-03-05
US06/664,275 US4691277A (en) 1984-10-24 1984-10-24 Small instruction cache using branch target table to effect instruction prefetch

Publications (1)

Publication Number Publication Date
CA1228170A true CA1228170A (en) 1987-10-13

Family

ID=24665347

Family Applications (1)

Application Number Title Priority Date Filing Date
CA000482001A Expired CA1228170A (en) 1984-10-24 1985-05-21 Architecture for small instruction caches

Country Status (5)

Country Link
US (1) US4691277A (en)
EP (1) EP0179245B1 (en)
JP (1) JPS61100837A (en)
CA (1) CA1228170A (en)
DE (1) DE3582777D1 (en)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61148551A (en) * 1984-12-24 1986-07-07 Hitachi Ltd Address converting system
US4763245A (en) * 1985-10-30 1988-08-09 International Business Machines Corporation Branch prediction mechanism in which a branch history table is updated using an operand sensitive branch table
US4755935A (en) * 1986-01-27 1988-07-05 Schlumberger Technology Corporation Prefetch memory system having next-instruction buffer which stores target tracks of jumps prior to CPU access of instruction
EP0258453B1 (en) * 1986-02-28 1993-05-19 Nec Corporation Instruction prefetch control apparatus
US4991080A (en) * 1986-03-13 1991-02-05 International Business Machines Corporation Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions
JPS6356731A (en) * 1986-08-27 1988-03-11 Mitsubishi Electric Corp Data processor
JPS6393041A (en) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp Computer
JPS6393038A (en) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp Computer
JPS6398737A (en) * 1986-10-15 1988-04-30 Mitsubishi Electric Corp Data processor
JPS63317828A (en) * 1987-06-19 1988-12-26 Fujitsu Ltd Reading control system for microcode
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
US4894772A (en) * 1987-07-31 1990-01-16 Prime Computer, Inc. Method and apparatus for qualifying branch cache entries
US4943908A (en) * 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines
JPH01154261A (en) * 1987-12-11 1989-06-16 Toshiba Corp Information processor
JPH01271838A (en) * 1988-04-22 1989-10-30 Fujitsu Ltd Microprogram branching method
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
JP2722523B2 (en) * 1988-09-21 1998-03-04 日本電気株式会社 Instruction prefetch device
JPH0778735B2 (en) * 1988-12-05 1995-08-23 松下電器産業株式会社 Cache device and instruction read device
US5034880A (en) * 1988-12-22 1991-07-23 Wang Laboratories, Inc. Apparatus and method for executing a conditional branch instruction
US5099415A (en) * 1989-02-15 1992-03-24 International Business Machines Guess mechanism for virtual address translation
US5689670A (en) * 1989-03-17 1997-11-18 Luk; Fong Data transferring system with multiple port bus connecting the low speed data storage unit and the high speed data storage unit and the method for transferring data
DE69030931T2 (en) * 1989-04-24 1998-01-15 Ibm Multiple sequence processor system
US5146578A (en) * 1989-05-01 1992-09-08 Zenith Data Systems Corporation Method of varying the amount of data prefetched to a cache memory in dependence on the history of data requests
WO1991004536A1 (en) * 1989-09-20 1991-04-04 Dolphin Server Technology A/S Instruction cache architecture for parallel issuing of multiple instructions
JPH03139726A (en) * 1989-10-26 1991-06-13 Hitachi Ltd Instruction readout control system
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
EP0449369B1 (en) * 1990-03-27 1998-07-29 Koninklijke Philips Electronics N.V. A data processing system provided with a performance enhancing instruction cache
EP0457403B1 (en) * 1990-05-18 1998-01-21 Koninklijke Philips Electronics N.V. Multilevel instruction cache and method for using said cache
JPH0460720A (en) * 1990-06-29 1992-02-26 Hitachi Ltd Control system for condition branching instruction
JP2773471B2 (en) * 1991-07-24 1998-07-09 日本電気株式会社 Information processing device
US5386526A (en) * 1991-10-18 1995-01-31 Sun Microsystems, Inc. Cache memory controller and method for reducing CPU idle time by fetching data during a cache fill
US5434985A (en) * 1992-08-11 1995-07-18 International Business Machines Corporation Simultaneous prediction of multiple branches for superscalar processing
DE69431737T2 (en) * 1993-02-24 2003-04-24 Matsushita Electric Ind Co Ltd High speed memory read access apparatus and method
JP2596712B2 (en) * 1993-07-01 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション System and method for managing execution of instructions, including adjacent branch instructions
JP2801135B2 (en) * 1993-11-26 1998-09-21 富士通株式会社 Instruction reading method and instruction reading device for pipeline processor
US5471597A (en) * 1993-12-23 1995-11-28 Unisys Corporation System and method for executing branch instructions wherein branch target addresses are dynamically selectable under programmer control from writable branch address tables
GB2293670A (en) * 1994-08-31 1996-04-03 Hewlett Packard Co Instruction cache
US5634119A (en) * 1995-01-06 1997-05-27 International Business Machines Corporation Computer processing unit employing a separate millicode branch history table
US5625808A (en) * 1995-03-31 1997-04-29 International Business Machines Corporation Read only store as part of cache store for storing frequently used millicode instructions
US6356918B1 (en) 1995-07-26 2002-03-12 International Business Machines Corporation Method and system for managing registers in a data processing system supports out-of-order and speculative instruction execution
US5794024A (en) * 1996-03-25 1998-08-11 International Business Machines Corporation Method and system for dynamically recovering a register-address-table upon occurrence of an interrupt or branch misprediction
FR2757306B1 (en) * 1996-12-17 1999-01-15 Sgs Thomson Microelectronics METHOD AND DEVICE FOR READING WITH PREDICTION OF A MEMORY
US5774712A (en) * 1996-12-19 1998-06-30 International Business Machines Corporation Instruction dispatch unit and method for mapping a sending order of operations to a receiving order
US6119222A (en) * 1996-12-23 2000-09-12 Texas Instruments Incorporated Combined branch prediction and cache prefetch in a microprocessor
US6230260B1 (en) 1998-09-01 2001-05-08 International Business Machines Corporation Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
US20110107314A1 (en) * 2008-06-27 2011-05-05 Boris Artashesovich Babayan Static code recognition for binary translation
US9654483B1 (en) * 2014-12-23 2017-05-16 Amazon Technologies, Inc. Network communication rate limiter
US9569613B2 (en) * 2014-12-23 2017-02-14 Intel Corporation Techniques for enforcing control flow integrity using binary translation
US9438412B2 (en) * 2014-12-23 2016-09-06 Palo Alto Research Center Incorporated Computer-implemented system and method for multi-party data function computing using discriminative dimensionality-reducing mappings
US9984004B1 (en) * 2016-07-19 2018-05-29 Nutanix, Inc. Dynamic cache balancing
CN107038125B (en) * 2017-04-25 2020-11-24 上海兆芯集成电路有限公司 Processor cache with independent pipeline to speed prefetch requests

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3466613A (en) * 1967-01-13 1969-09-09 Ibm Instruction buffering system
FR2226079A5 (en) * 1973-04-13 1974-11-08 Honeywell Bull Soc Ind
JPS529342A (en) * 1975-07-11 1977-01-24 Hitachi Ltd Air pollution density forecasting system
JPS5539222A (en) * 1978-09-11 1980-03-19 Mitsubishi Heavy Ind Ltd Multistage flash evaporator
JPS5567850A (en) * 1978-11-14 1980-05-22 Nec Corp Information processor
US4371924A (en) * 1979-11-09 1983-02-01 Rockwell International Corp. Computer system apparatus for prefetching data requested by a peripheral device from memory
US4442488A (en) * 1980-05-05 1984-04-10 Floating Point Systems, Inc. Instruction cache memory system
JPS57185545A (en) * 1981-05-11 1982-11-15 Hitachi Ltd Information processor
US4594659A (en) * 1982-10-13 1986-06-10 Honeywell Information Systems Inc. Method and apparatus for prefetching instructions for a central execution pipeline unit
US4626988A (en) * 1983-03-07 1986-12-02 International Business Machines Corporation Instruction fetch look-aside buffer with loop mode control

Also Published As

Publication number Publication date
EP0179245B1 (en) 1991-05-08
DE3582777D1 (en) 1991-06-13
US4691277A (en) 1987-09-01
JPS6323586B2 (en) 1988-05-17
JPS61100837A (en) 1986-05-19
EP0179245A3 (en) 1988-04-20
EP0179245A2 (en) 1986-04-30

Similar Documents

Publication Publication Date Title
CA1228170A (en) Architecture for small instruction caches
US6453385B1 (en) Cache system
US8825958B2 (en) High-performance cache system and method
US6212603B1 (en) Processor with apparatus for tracking prefetch and demand fetch instructions serviced by cache memory
US4888679A (en) Method and apparatus using a cache and main memory for both vector processing and scalar processing by prefetching cache blocks including vector data elements
US5737750A (en) Partitioned single array cache memory having first and second storage regions for storing non-branch and branch instructions
US5623627A (en) Computer memory architecture including a replacement cache
US5680631A (en) Data processor with on-chip cache memory and purge controller responsive to external signal for controlling access to the cache memory
US6012134A (en) High-performance processor with streaming buffer that facilitates prefetching of instructions
US20080034187A1 (en) Method and Apparatus for Prefetching Non-Sequential Instruction Addresses
US9569219B2 (en) Low-miss-rate and low-miss-penalty cache system and method
US6658534B1 (en) Mechanism to reduce instruction cache miss penalties and methods therefor
JPH09120374A (en) Full-associative address converter
US5740418A (en) Pipelined processor carrying out branch prediction by BTB
JP3763579B2 (en) Apparatus and method for reducing read miss latency by predicting instruction read first
JPH08221324A (en) Access to cache memory
US5206945A (en) Single-chip pipeline processor for fetching/flushing instruction/data caches in response to first/second hit/mishit signal respectively detected in corresponding to their logical addresses
US5428759A (en) Associative memory system having segment and page descriptor content-addressable memories
US5649232A (en) Structure and method for multiple-level read buffer supporting optimal throttled read operations by regulating transfer rate
US5845308A (en) Wrapped-line cache for microprocessor system
US7028142B2 (en) System and method for reducing access latency to shared program memory
JP3068935B2 (en) Entry replacement control method
JPS623354A (en) Cache memory access system
US6912640B2 (en) Method to partition large code across multiple e-caches
Weiss et al. United States Patent po

Legal Events

Date Code Title Description
MKEX Expiry