US20020040422A1 - Resource access control for a processor - Google Patents

Resource access control for a processor Download PDF

Info

Publication number
US20020040422A1
US20020040422A1 US09/783,121 US78312101A US2002040422A1 US 20020040422 A1 US20020040422 A1 US 20020040422A1 US 78312101 A US78312101 A US 78312101A US 2002040422 A1 US2002040422 A1 US 2002040422A1
Authority
US
United States
Prior art keywords
response
processor
address
faked
address control
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.)
Granted
Application number
US09/783,121
Other versions
US6795939B2 (en
Inventor
Jeremy Harris
Paul Durrant
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.)
Oracle America Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Assigned to SUN MICROSYSTEMS, INC. reassignment SUN MICROSYSTEMS, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: DURRANT, PAUL, HARRIS, JEREMY GRAHAM, SUN MICROSYSTEMS LIMITED
Publication of US20020040422A1 publication Critical patent/US20020040422A1/en
Application granted granted Critical
Publication of US6795939B2 publication Critical patent/US6795939B2/en
Assigned to Oracle America, Inc. reassignment Oracle America, Inc. MERGER AND CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: Oracle America, Inc., ORACLE USA, INC., SUN MICROSYSTEMS, INC.
Adjusted expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0745Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an input/output transactions management context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]

Definitions

  • the invention relates to the control of access to system resources by a processor of a computer system.
  • a problem that the present invention addresses is the control of access to resources in a computer system in the event of an error related to the resource to be accessed.
  • the resource can be, for example, a memory location or a block of memory, a memory device, a peripheral device, etc.
  • the error can be as a result of a failure of the resource itself, or a failure along the communication path from the processor to the resource or faulty programming of an application program or of an operating system.
  • U.S. Pat. No. 5,627,965 describes a fault tolerant computer system including a central processor sub-system and a plurality of other subsystems, the subsystems being connected via a main data transfer bus.
  • the central processor subsystem comprises three central processor modules.
  • Each central processor module (or CPUset) includes a central processing unit (CPU) connected to a private bus, a first bus interface connecting the private bus to a shared bus, and a second bus interface connecting the shared bus to the main bus.
  • the CPUsets are connected over respective private buses to a shared bus.
  • Connected to the shared bus is a slot response memory.
  • the slot response memory includes locations corresponding to respective slots for subsystems on the main bus. Accordingly to column 15 of U.S. Pat. No.
  • PCT application PCT/US99/12605 is directed to a bridge for a fault tolerant computer system, which bridge connects I/O buses of first and second processing sets to a common I/O device bus.
  • a resource control mechanism in the bridge provides an interface for exchanging signals with one or more resource slots of the device bus, each of the resource slots being capable of communicating with a system resource.
  • the resource control mechanism in the bridge also includes a register associated with each system resource, the register having switchable indicia that indicate an operating state of the associated system resource.
  • the control mechanism is operable in use to direct signals to and/or from respective system resources of the computer system.
  • the known systems provide for control of the access to a system resource in a slot on a bus by means of a control mechanism external to the processor.
  • Such access control mechanisms can provide for the trapping of accesses to a faulty resource in a slot on a bus.
  • bus traffic is generated on the processor I/O bus that does not provide useful results. This reduces effective bus bandwidth and increases response times in the event of a fault subsystem in a slot.
  • This is a growing problem as the internal clock speeds of processors are much higher than the external clock speeds. For example, processor clock speeds of the order of 500 MHz to 1 GHz are already or are soon to be available, whereas the clock speeds external to the processors on the system motherboard are typically of the order of 100 MHz.
  • An aim of the present invention is to provide a more generally applicable and effective approach to resource access control.
  • the invention provides a processor for a computer system.
  • the processor includes at least one central processing unit and a resource access mechanism controlling access to resources addressed by a central processing unit.
  • the resource access mechanism comprises an address control mechanism for receiving addresses.
  • the address control mechanism has a plurality of address control entries. Each address control entry is associated with one or more addresses and provides a fake response identification as to whether or not a response for a received address associated therewith is to be faked.
  • the resource access mechanism also comprises a fake response generator.
  • the fake response generator is configured to generate a faked response where a fake response identification of an address control entry for a received address indicates that a response is to be faked.
  • a resource access mechanism in the processor is able to associate fake response indications with a resource and to generate a fake response when an attempt is made to access a resource labeled such that a faked response should be returned.
  • An embodiment of the invention is able to halt an attempt to access a faulty resource and to fake a response to such an access attempt in a rapid manner without requiring any external bus transfers.
  • the address control mechanism provides an address translation mechanism with an address control entry forming an address translation entry.
  • Each translation entry can be configured to provide an indication as to whether a faked response should be returned or not when use is made of the translation entry.
  • a memory management unit provides the address translation mechanism.
  • the fake response generator functionality can also be provided by functions of the memory management unit.
  • an embodiment of the invention can provide a memory management unit with the necessary additional functions defined above.
  • the address translation mechanism can be configured using an associative memory containing the plurality of translation entries.
  • the address translation mechanism can, moreover, be configured using a translation look-aside buffer.
  • each translation entry includes a plurality of translation status indicators.
  • a first buffer can be provided for translation entries for translations not to be faked and a second buffer can be provided for translation entries for translations to be faked.
  • the indication of whether a faked response is to be generated or not can be derived from the buffer in which the translation entry is located.
  • a buffer can be provided for translation entries for both translations not to be faked and translations to be faked, each translation entry including a fake response status identifier indicating whether or not a response for the corresponding address translation is to be faked.
  • an access can be halted where the fake response identification of the translation entry for an address translation for the access indicates that a response is to be faked.
  • the fake response generator can then be operable to return a faked response to the processor.
  • a processor incorporating the invention can be implemented in a single integrated circuit, whereby accesses on a bus external to the chip are not needed where an access attempt is to be prevented and a fake response is to be returned.
  • the invention provides a computer system comprising the processor as set out above, memory and at least one peripheral device, the resource access mechanism controlling access by the processor to the memory and the peripheral device.
  • the invention provides a method of managing processor access to resources in a computer system.
  • the method includes steps of: holding in an address control mechanism in the processor, a plurality of address control entries with each address control entry providing a fake response identification as to whether or not a response for the corresponding address is to be faked; the address control mechanism receiving an address from a central processing unit in the processor; and selectively generating in a fake response generator in the processor a faked response for an address in response to the fake response identification of the corresponding address control entry indicating that a response is to be faked.
  • the method can also include halting an access where the fake response identification of the translation entry for an address translation for the access indicates that a response is to be faked, and returning a faked response to the processor.
  • FIG. 1 is a schematic overview of a computer system
  • FIG. 2 is a schematic overview of a processor of the computer system of FIG. 1;
  • FIG. 3 is a schematic block diagram of a known type of processor
  • FIG. 4 is a schematic overview of a subsystem including the processor of FIG. 3;
  • FIG. 5 illustrates virtual to physical address translation for the processor of FIG. 3
  • FIG. 6 illustrates an example of the relationship between virtual and physical address space for the processor of FIG. 3;
  • FIG. 7 is a schematic block diagram illustrating a software view of an example of the memory management unit of the processor of FIG. 3;
  • FIG. 8 illustrates a translation table entry for the memory management unit referred to with reference to FIG. 7;
  • FIG. 9 is a schematic block diagram of parts of a memory management unit of a first exemplary implementation of the invention.
  • FIG. 10 is a schematic block diagram of parts of a memory management unit of a second exemplary implementation of the invention.
  • FIG. 11 illustrates a translation table entry for the memory management unit of FIG. 10
  • FIG. 12 is an alternative configuration of an embodiment of the invention with a resource access mechanism separate from a memory management unit.
  • FIG. 1 is an overview of a computer system 10 that includes a processor 12 , a processor bus 14 to which are attached a plurality of subsystems including memory 16 and an I/O bridge 18 .
  • the processor 12 can typically be integrated in a single integrated circuit.
  • the I/O bridge 18 provides an interface between the processor bus 14 and an I/O bus 20 to which a plurality of I/O devices 22 can be connected.
  • FIG. 2 is a schematic overview of a processor such as the processor 12 of FIG. 1.
  • This includes a central processing unit (CPU) 24 connected via an internal bus 26 to a memory management unit (MMU) 28 .
  • the CPU 24 is operable to output virtual addresses on the internal bus 26 that are then converted by the MMU 28 into physical addresses for accessing system resources including the memory 16 and the I/O devices 22 .
  • FIG. 3 is a schematic block diagram of one type of processor 12 , namely an UltraSPARCTM processor marketed by Sun Microsystems, Inc. Further details of the UltraSPARCTM processor can be found, for example, in the UltraSPARCTM I&II User's Manual, January 1997, available from Sun Microsystems, Inc, the content of which is incorporated herein by reference.
  • the present invention can be implemented in a processor having the general overall structure of FIG. 3, although it should be appreciated that the invention could equally be implemented in processors having other structures.
  • the UltraSPARCTM processor is a high-performance, highly integrated superscalar processor implementing a 64-bit architecture.
  • the processor pipeline is able to execute up to four instructions in parallel.
  • a Prefetch and Dispatch Unit (PDU) 30 fetches instructions before they are actually needed in the pipeline, so the execution units do not starve for instructions. Prefetched instructions are stored in the Instruction Buffer 32 until they are sent to the rest of the pipeline.
  • An instruction cache (I-cache) 33 is a 16 Kbyte two-way set associative cache with 32 byte blocks.
  • An Integer Execution Unit (IEU) 34 includes two arithmetic logic units (ALUs), a multi-cycle integer multiplier, a multi-cycle integer divider, eight register windows, four sets of global registers (normal, alternate, MMU, and interrupt globals) and trap registers.
  • ALUs arithmetic logic units
  • MMU multi-cycle integer multiplier
  • MMU multi-cycle integer divider
  • register windows eight register windows
  • four sets of global registers normal, alternate, MMU, and interrupt globals
  • a Floating-Point Unit (FPU) 36 is partitioned into separate execution units, which allow two floating-point instructions to be issued and executed per cycle.
  • Source and result data are stored in a 32-entry Floating Point (FP) register file (FP Reg) 38 .
  • FP Multiply 40 , FP Add 42 and FP Divide 44 are all catered for.
  • a Graphics Unit (GRU) 45 provides a comprehensive set of graphics instructions.
  • the Memory Management Unit (MMU) 28 provides mapping between a 44-bit virtual address and a 41-bit physical address. This is accomplished through a 64-entry instructions translation look-aside buffer (iTLB) 46 for instructions and a 64-entry data translation look-aside buffer (dTLB) 48 for data under the control of MMU control logic 50 . Both TLBs are fully associative.
  • the control logic 50 also provides hardware support for a software-based TLB miss strategy.
  • a separate set of global registers 52 is available to process MMU traps.
  • a Load/Store Unit (LSU) 54 is responsible for generating the virtual address of all loads and stores for accessing a data cache (D-Cache) 56 , for decoupling load misses from the pipeline through a load buffer 58 , and for decoupling stores through a store buffer 59 .
  • D-Cache data cache
  • An External Cache Unit (ECU) 60 handles I-Cache 33 and D-Cache 56 misses efficiently.
  • the ECU 60 can handle one access per cycle to an External Cache (E-Cache) 62 .
  • the ECU 60 provides overlap processing during load and store misses. For instance, stores that hit the E-Cache 62 can proceed while a load miss is being processed.
  • the ECU 60 can process reads and writes and also handle snoops. Block loads and block stores, which load/store a 64-byte line of data from memory to the floating-point register file, are also processed by the ECU 60 to provide high transfer bandwidth without polluting the E-Cache 62 .
  • a Memory Interface Unit (MIU) 64 handles all transactions to the system controller, for example, external cache misses, interrupts, snoops, writebacks, and so on.
  • FIG. 4 is a schematic overview of the UltraSPARCTM processor subsystem 66 , which comprises the UltraSPARCTM processor 12 , synchronous SRAM components for E-Cache tags and data 621 and 622 , and two UltraSPARCTM data buffer (UDB) 68 chips.
  • the processor 12 will be integrated in a single integrated circuit.
  • the UDBs 68 isolate the E-Cache 62 from the system, provide data buffers for incoming and outgoing system transactions, and provide error correction code (ECC) generation and checking.
  • ECC error correction code
  • MMU Memory Management Unit
  • a 44-bit virtual address space is supported with 41 bits of physical address.
  • the MMU 28 provides one instruction and one data virtual-to-physical address translation.
  • the virtual page number is replaced by a physical page number, which is concatenated with the page offset to form the full physical address, as illustrated in FIG. 5 for each of four page sizes, namely 8 Kb, 64 Kb, 512 Kb, and 4 Mb.
  • this Figure shows a full 64-bit virtual address, even though only 44 bits of Virtual Address (VA) are supported, as mentioned above.
  • VA Virtual Address
  • 44-bit virtual address space is implemented in two equal halves at the extreme lower and upper portions of the full 64-bit virtual address space.
  • Virtual addresses between 0000 0800 0000 0000 16 and FFFF F 7 FF FFFF FF 16 , inclusive, are termed “out of range” and are illegal for the UltraSPARCTM virtual address space.
  • FIG. 6 illustrates the UltraSPARCTM virtual address space.
  • FIG. 7 is a block diagram illustrating the software view of the MMU 28 .
  • the operating system maintains translation information in a data structure called the Software Translation Table (STT) 70 .
  • the MMU 28 is effectively divided into an instruction MMU (I-MMU) 281 and a data MMU (D-MMU) 282 .
  • the I-MMU 281 includes the hardware instructions Translation Lookaside Buffer (iTLB) 46 and the D-MMU 282 includes the hardware data Translation Lookaside Buffer (dTLB) 48 .
  • iTLB hardware instructions Translation Lookaside Buffer
  • dTLB hardware data Translation Lookaside Buffer
  • the STT 70 which is kept in memory, is typically large and complex compared to the relatively small hardware TLBs 46 and 48 .
  • a Translation Storage Buffer (TSB) 72 which acts like a direct-mapped cache, provides an interface between the STT 70 and the TLBs 46 and 48 .
  • the TSB 72 can be shared by all processes running on a processor, or it can be process specific.
  • a “TLB hit” occurs when a desired translation is present in the MMU's on-chip TLBs 46 / 48 .
  • a “TLB miss” occurs when a desired translation is not present in the MMU's on-chip TLBs 46 / 48 .
  • the MMU 28 On a TLB miss the MMU 28 immediately traps to software for TLB miss processing.
  • a software TLB miss handler has the option of filling the TLB by any means available, but it is likely to take advantage of TLB miss hardware support features provided by the MMU controller 50 , since the TLB miss handler is time critical code.
  • TTE UltraSPARCTM Translation Table Entry
  • FIG. 8 An example of an UltraSPARCTM Translation Table Entry (TTE) of the TSB 72 is shown in FIG. 8. This provides a translation entry that holds information for a single page mapping.
  • the TTE is broken into two 64-bit words, representing the tag and data of the translation.
  • the tag is used to determine whether there is a hit in the TSB 72 . If there is a hit, the data is fetched by software. The functions of fields of the tag and data words are described below.
  • G This is a Global bit. If the Global bit is set, the Context field of the TTE is ignored during hit detection. This allows any page to be shared among all (user or supervisor) contexts running in the same processor. The Global bit is duplicated in the TTE tag and data to optimize the software miss handler.
  • Context This is a 13-bit context identifier associated with the TTE.
  • V This is a Valid bit. If the Valid bit is set, the remaining fields of the TTE are meaningful.
  • NFO This is No-Fault-Only bit. If this bit is set, selected specific loads are translated, but all other accesses will trap with a data_access_exception trap.
  • IE This is an Invert Endianness bit. If this bit is set, accesses to the associated page are processed with inverse endianness from what is specified by the instruction (big-for-little and little-for-big).
  • the Soft and Soft 2 fields may be written with any value.
  • PA ⁇ 40 : 13 > This is the physical page number. Page offset bits for larger page sizes in the TTE (PA ⁇ 15 : 13 >, PA ⁇ 18 : 13 >, and PA ⁇ 21 : 13 >for 64 Kb, 512 Kb, and 4 Mb pages, respectively) are stored in the TLB and returned for a Data Access read, but are ignored during normal translation.
  • L This is a Lock bit. If this bit is set, the TTE entry will be “locked down” when it is loaded into the TLB; that is, if this entry is valid, it will not be replaced by the automatic replacement algorithm invoked by an ASI store to the Data-In register.
  • CP, CV These form cacheable-in-physically-indexed-cache and cacheable-invirtually-indexed cache bits to determine the placement of data in UltraSPARCTM caches.
  • the MMU does not operate on the cacheable bits, but merely passes them through to the cache subsystem.
  • E This is a Side-effect bit. If this bit is set, speculative loads and FLUSHes will trap for addresses within the page, noncacheable memory accesses other than block loads and stores are strongly ordered against other E-bit accesses, and noncacheable stores are not merged.
  • W This is a Writable bit. If the W bit is set, the page mapped by this TTE has write permission granted. Otherwise, write permission is not granted and the MMU will cause a data_access_protection trap if a write is attempted. The W-bit in the I-MMU is read as zero and ignored when written.
  • G This is identical to the Global bit in the TTE tag word.
  • the Global bit in the TTE tag word is used for the TSB hit comparison, while the Global bit in the TTE data word facilitates the loading of a TLB entry.
  • UltraSPARCTM processor represents an example of a prior art processor.
  • application of an embodiment of the invention in the context of such a processor is to be described, it being understood that the invention can equally be applied to processors of alternative designs and configurations.
  • an indication is provided as to whether the address translations represented by the translation entries relate to physical addresses from which a valid response is to be expected, or whether the physical address relates to an address for which a response should be faked. The latter case can occur, for example, where the physical address falls within an address range for a faulty resource.
  • this is achieved by providing a fake response identification through the translation entries as to whether or not a response for the corresponding address translation is to be faked.
  • the fake response indication can be given in different ways.
  • the instruction and/or data translation look-aside buffers can be split into, for example, a first (non-faked) portion and a second (faked) portion.
  • the format of the translation entries need not be changed with respect to the prior art, with this organization of the translation entries providing a fake response indication for the translations associated with the translation entries.
  • the format of the translation entries can be changed with respect to the prior art to include at least one faked response indicator bit, the setting of which indicates whether a response to is to be faked or not.
  • FIG. 9 is a schematic block diagram of the data address translation part 282 of the memory management unit 28 for illustrating a first exemplary implementation of the invention. It is to be understood that an equivalent arrangement having the same basic structure is also provided for the instruction address translation part 281 of the memory management unit 28 shown in FIG. 7. In this implementation, each translation table is split into two sub-tables. Thus, for example, the dTLB 48 of FIG. 7 is split into first and second sub-tables 48 A and 48 B. In the equivalent instruction address translation portion (not shown), the iTLB 46 of FIG. 7 is also split into first and second sub-tables.
  • the first sub-table 48 A of the dTLB 48 contains translation entries corresponding to data address translations for which responses are to be faked.
  • the second sub-table 48 B contains translation entries corresponding to data address translations for which responses are not to be faked.
  • Each of the entries could, for example, have the format described above with reference to FIG. 8, although in other embodiments, the format of the translation entries and the information represented thereby could be different.
  • the MMU controller 50 is responsive to a virtual address 82 relating to an intended resource access to look up both of the sub-tables 48 A and 48 B in parallel.
  • the subtable 48 A/ 48 B in which a match (a hit) occurs determines whether a normal memory access is made or not.
  • a match occurs in the first sub-table 48 A, then a resource access is made at 84 using the result of the address translation in a conventional manner.
  • a match occurs in the second sub-table 48 B, then the resource access is terminated and a fake response generator (FRG) 86 is activated to return a faked response 88 to the CPU in place of the results of a normal access.
  • FSG fake response generator
  • the faked response generator 86 is implemented in hardware in the memory management unit.
  • the fake response generator can include storage (FR storage) 89 containing fake responses to be returned as a faked response.
  • the placement of a translation entry in the second sub-table 48 B can occur in response, for example, to failure of a previous access to the resource concerned. During normal operation in which access to a resource is effected, a valid response will be received within a predetermined time.
  • the handling of a single exception in response to a faulty access need not have a significant impact on system performance. Accordingly, the identification of a first faulty access for a given address translation can be left to conventional trap handling. However, the MMU 28 is arranged to be responsive to a faulty access being indicated at 90 to change the faked response indication for the translation entry for the translation concerned to indicate that future accesses for that translation should be faked.
  • the MMU controller 50 is operable to move the translation entry from the first sub-table 48 A to the second sub-table 48 B.
  • the response generator being operable to return a faked response.
  • the actual read could be stopped from occurring and a faked read result (e.g., all zeros) could be generated.
  • a subsequent processor write is intended, the actual write operation could be stopped from occurring and a faked acknowledgement could be generated.
  • each sub-table could contain a complete set of entries, with the Valid bit ‘V’ being set in one of the tables, only, at any one time.
  • the transfer of an entry from one table to another then being effected by swapping the valid bits in the two sub-tables rather than actually moving the entry between sub-tables.
  • the faked response that is provided includes the faking of any status signals, and in the case of a read operation faked data.
  • the actual data returned by the faked response generator does not in fact matter.
  • the values provided as a faked read response could include all zeros, or random data, or the content of any register, buffer, or any other response. The reason why this does not matter is that any such accesses to a resource for which a faked response is to be generated will follow an initial access which lead to the initial faulty access for which a trap was taken. Exception handling will already be operative to address the initial fault, and the information returned with the subsequent faked response(s) will never be used by the program that generated the initial faulty access.
  • FIG. 10 is a schematic block diagram of the data address translation part 282 of the memory management unit 28 for illustrating a second exemplary implementation of the invention. It is to be understood that an equivalent arrangement having the same basic structure is also provided for the instruction address translation part 281 of the memory management unit 28 shown in FIG. 7. In this implementation, a translation table 48 is not split as described with reference to FIG. 9. In this implementation the table 48 contains translation entries corresponding to all address translations. In the equivalent instruction address translation portion (not shown), the iTLB 46 of
  • FIG. 7 also contains all relevant translation entries.
  • each of the entries could, for example, have the format illustrated in FIG. 11. This format corresponds to that described above with reference to FIG. 8, with the exception that a new faked response (FR) indicator is provided in a previously unused portion of the tag word.
  • the FR indicator is one bit, although as described above, it could comprise multiple bits.
  • the FR indicator is in the tag word as shown in FIG. 11 to take advantage of free space, it could equally be provided in the data word where space is available. Indeed, as will be apparent, the invention is not limited to systems with table entries of the format shown, and in other embodiments, the table entry format and the rest of the information represented thereby could be different.
  • the FR indicator provides a bit indicating whether or not an access should be carried out for the translation concerned, or whether the access should be prevented and instead a fake response be returned.
  • a zero indicates that the access should be carried out and a one indicates that the access should be stopped and the response faked.
  • the values could be reversed in other embodiments.
  • the MMU controller 50 is responsive to a virtual address 92 relating to an intended resource access to look up the table 48 .
  • the setting of the FR bit in the table entry that provides a match (a hit) determines whether a normal memory access is made or not. Thus, if the FR bit has a first value (e.g. 0 ) in the table entry in the table 48 that provides a match, then a resource access is made at 94 using the result of the address translation in a conventional manner. If the FR bit has a second value (e.g.
  • Logic 95 is responsive to the setting of the FR bit in the table entry in which a match occurs to block the normal resource access from proceeding and to activate the fake response generator 96 .
  • the setting of the FR indicator in the table entry corresponding to a given translation entry in the table 48 can occur in response, for example, to failure of a previous access to the resource concerned.
  • the handling of a single exception in response to a faulty access need not have a significant impact on system performance. Accordingly, the identification of a first faulty access for a given address translation can be left to conventional trap handling.
  • the MMU controller 50 is operable to change the value of the FR bit for the table entry concerned in the table 48 .
  • the faked response indicator is changed from 0 to 1.
  • the faked read response can be in the form of all zeros, or any other content of a register, or buffer, a random number, or any other response.
  • the response could be generated from storage for values in the FR storage 99 .
  • the resource can be a memory location, a peripheral or any other addressable system component.
  • a resource access mechanism in a processor controls access to resources.
  • the resource access mechanism includes an address control mechanism having a plurality of address control entries, each address control entry providing fake response identification indicating whether or not a response for the corresponding address is to be faked.
  • the resource access mechanism also includes a fake response generator for selectively generating a faked response for an address in response to the fake response identification of the corresponding address control entry indicating that a response is to be faked.
  • translation entries need not be stored in tabular form, but could be held in any other suitable form, for example in a linked list.
  • this could be replaced by a reference to a list, or sub-list.
  • the invention is not limited to any particular technology for looking up translation entries.
  • these could be fully or set associative as appropriate.
  • multiple faked response indications may be provided for each translation entry.
  • the resource access mechanism could be separate from the address translation mechanism and/or a memory management unit.
  • FIG. 12 illustrates a resource access mechanism 100 separate from a memory management unit 28 .
  • the resource access mechanism 100 can include an address control mechanism having a plurality of address control entries, each address control entry providing a fake response identification as to whether or not a response for the corresponding address is to be faked; and a fake response generator for selectively generating a faked response for an address in response to the fake response identification of the corresponding address control entry indicating that a response is to be faked.
  • the faked response generator can be arranged to be operable to substitute a known good address for the received address for the access.
  • the faked response generator can be operable to output a translated address to perform the access, or can be configured to supply the alternative, good address to the address control mechanism.
  • the good address can be held in one or more registers in the fake response generator.
  • processor according to the invention could be used in both single processor and multiple processor systems.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Resource access control is provided in a manner that avoids unnecessary resource accesses where a resource is already known to be faulty. The resource can be a memory location, a peripheral or any other addressable system component. A resource access mechanism in a processor controls access to resources. The resource access mechanism includes an address control mechanism having a plurality of address control entries, each address control entry providing fake response identification indicating whether or not a response for the corresponding address is to be faked. The resource access mechanism also includes a fake response generator for selectively generating a faked response for an address in response to the fake response identification of the corresponding address control entry indicating that a response is to be faked.

Description

    BACKGROUND OF THE INVENTION
  • The invention relates to the control of access to system resources by a processor of a computer system. [0001]
  • A problem that the present invention addresses is the control of access to resources in a computer system in the event of an error related to the resource to be accessed. The resource can be, for example, a memory location or a block of memory, a memory device, a peripheral device, etc. The error can be as a result of a failure of the resource itself, or a failure along the communication path from the processor to the resource or faulty programming of an application program or of an operating system. [0002]
  • U.S. Pat. No. 5,627,965 describes a fault tolerant computer system including a central processor sub-system and a plurality of other subsystems, the subsystems being connected via a main data transfer bus. The central processor subsystem comprises three central processor modules. Each central processor module (or CPUset) includes a central processing unit (CPU) connected to a private bus, a first bus interface connecting the private bus to a shared bus, and a second bus interface connecting the shared bus to the main bus. The CPUsets are connected over respective private buses to a shared bus. Connected to the shared bus is a slot response memory. The slot response memory includes locations corresponding to respective slots for subsystems on the main bus. Accordingly to [0003] column 15 of U.S. Pat. No. 5,627,965, where a subsystem in a slot is functioning correctly, a location in the slot response memory corresponding to that slot will contain ‘0’ data and the slot response register will not interfere with data transfers on the main bus. Where the subsystem in a slot becomes defective or absent from the system, then the location in the slot response memory corresponding to that slot is set to ‘1’ and all subsequent attempts to access the defective or absent subsystem will result in artificial termination of the data transfer attempt.
  • PCT application PCT/US99/12605 is directed to a bridge for a fault tolerant computer system, which bridge connects I/O buses of first and second processing sets to a common I/O device bus. A resource control mechanism in the bridge provides an interface for exchanging signals with one or more resource slots of the device bus, each of the resource slots being capable of communicating with a system resource. The resource control mechanism in the bridge also includes a register associated with each system resource, the register having switchable indicia that indicate an operating state of the associated system resource. The control mechanism is operable in use to direct signals to and/or from respective system resources of the computer system. [0004]
  • The known systems provide for control of the access to a system resource in a slot on a bus by means of a control mechanism external to the processor. Such access control mechanisms can provide for the trapping of accesses to a faulty resource in a slot on a bus. As such access control mechanisms trap the accesses to the faulty resources external to the processor, bus traffic is generated on the processor I/O bus that does not provide useful results. This reduces effective bus bandwidth and increases response times in the event of a fault subsystem in a slot. This is a growing problem as the internal clock speeds of processors are much higher than the external clock speeds. For example, processor clock speeds of the order of 500 MHz to 1 GHz are already or are soon to be available, whereas the clock speeds external to the processors on the system motherboard are typically of the order of 100 MHz. [0005]
  • An aim of the present invention is to provide a more generally applicable and effective approach to resource access control. [0006]
  • SUMMARY OF THE INVENTION
  • Particular and preferred aspects of the invention are set out in the accompanying independent and dependent claims. Combinations of features from the dependent claims may be combined with features of the independent claims as appropriate and not merely as explicitly set out in the claims. [0007]
  • In one aspect, the invention provides a processor for a computer system. The processor includes at least one central processing unit and a resource access mechanism controlling access to resources addressed by a central processing unit. The resource access mechanism comprises an address control mechanism for receiving addresses. The address control mechanism has a plurality of address control entries. Each address control entry is associated with one or more addresses and provides a fake response identification as to whether or not a response for a received address associated therewith is to be faked. The resource access mechanism also comprises a fake response generator. The fake response generator is configured to generate a faked response where a fake response identification of an address control entry for a received address indicates that a response is to be faked. [0008]
  • In accordance with an embodiment of the invention, therefore, a resource access mechanism in the processor is able to associate fake response indications with a resource and to generate a fake response when an attempt is made to access a resource labeled such that a faked response should be returned. An embodiment of the invention is able to halt an attempt to access a faulty resource and to fake a response to such an access attempt in a rapid manner without requiring any external bus transfers. [0009]
  • In one embodiment of the invention, the address control mechanism provides an address translation mechanism with an address control entry forming an address translation entry. [0010]
  • The labeling as to whether or not a faked response is to be generated can then be achieved by means of an address translation mechanism. Each translation entry can be configured to provide an indication as to whether a faked response should be returned or not when use is made of the translation entry. [0011]
  • In an embodiment of the invention, a memory management unit provides the address translation mechanism. The fake response generator functionality can also be provided by functions of the memory management unit. Thus, an embodiment of the invention can provide a memory management unit with the necessary additional functions defined above. [0012]
  • The address translation mechanism can be configured using an associative memory containing the plurality of translation entries. The address translation mechanism can, moreover, be configured using a translation look-aside buffer. [0013]
  • In an embodiment of the invention, each translation entry includes a plurality of translation status indicators. [0014]
  • In one embodiment, a first buffer can be provided for translation entries for translations not to be faked and a second buffer can be provided for translation entries for translations to be faked. The indication of whether a faked response is to be generated or not can be derived from the buffer in which the translation entry is located. [0015]
  • In another embodiment, a buffer can be provided for translation entries for both translations not to be faked and translations to be faked, each translation entry including a fake response status identifier indicating whether or not a response for the corresponding address translation is to be faked. [0016]
  • In operation of an embodiment of the invention, an access can be halted where the fake response identification of the translation entry for an address translation for the access indicates that a response is to be faked. The fake response generator can then be operable to return a faked response to the processor. [0017]
  • A processor incorporating the invention can be implemented in a single integrated circuit, whereby accesses on a bus external to the chip are not needed where an access attempt is to be prevented and a fake response is to be returned. [0018]
  • In another aspect, the invention provides a computer system comprising the processor as set out above, memory and at least one peripheral device, the resource access mechanism controlling access by the processor to the memory and the peripheral device. [0019]
  • In a further aspect, the invention provides a method of managing processor access to resources in a computer system. The method includes steps of: holding in an address control mechanism in the processor, a plurality of address control entries with each address control entry providing a fake response identification as to whether or not a response for the corresponding address is to be faked; the address control mechanism receiving an address from a central processing unit in the processor; and selectively generating in a fake response generator in the processor a faked response for an address in response to the fake response identification of the corresponding address control entry indicating that a response is to be faked. [0020]
  • The method can also include halting an access where the fake response identification of the translation entry for an address translation for the access indicates that a response is to be faked, and returning a faked response to the processor. [0021]
  • DESCRIPTION OF THE PREFERRED EMBODIMENTS
  • Exemplary embodiments of the present invention will be described hereinafter, by way of example only, with reference to the accompanying drawings in which like reference signs relate to like elements and in which: [0022]
  • FIG. 1 is a schematic overview of a computer system; [0023]
  • FIG. 2 is a schematic overview of a processor of the computer system of FIG. 1; [0024]
  • FIG. 3 is a schematic block diagram of a known type of processor; [0025]
  • FIG. 4 is a schematic overview of a subsystem including the processor of FIG. 3; [0026]
  • FIG. 5 illustrates virtual to physical address translation for the processor of FIG. 3; [0027]
  • FIG. 6 illustrates an example of the relationship between virtual and physical address space for the processor of FIG. 3; [0028]
  • FIG. 7 is a schematic block diagram illustrating a software view of an example of the memory management unit of the processor of FIG. 3; [0029]
  • FIG. 8 illustrates a translation table entry for the memory management unit referred to with reference to FIG. 7; [0030]
  • FIG. 9 is a schematic block diagram of parts of a memory management unit of a first exemplary implementation of the invention; [0031]
  • FIG. 10 is a schematic block diagram of parts of a memory management unit of a second exemplary implementation of the invention; [0032]
  • FIG. 11 illustrates a translation table entry for the memory management unit of FIG. 10; [0033]
  • FIG. 12 is an alternative configuration of an embodiment of the invention with a resource access mechanism separate from a memory management unit. [0034]
  • DESCRIPTION OF PARTICULAR EMBODIMENTS
  • Exemplary embodiments of the present invention are described in the following with reference to the accompanying drawings. [0035]
  • FIG. 1 is an overview of a [0036] computer system 10 that includes a processor 12, a processor bus 14 to which are attached a plurality of subsystems including memory 16 and an I/O bridge 18. The processor 12 can typically be integrated in a single integrated circuit. The I/O bridge 18 provides an interface between the processor bus 14 and an I/O bus 20 to which a plurality of I/O devices 22 can be connected.
  • FIG. 2 is a schematic overview of a processor such as the [0037] processor 12 of FIG. 1. This includes a central processing unit (CPU) 24 connected via an internal bus 26 to a memory management unit (MMU) 28. The CPU 24 is operable to output virtual addresses on the internal bus 26 that are then converted by the MMU 28 into physical addresses for accessing system resources including the memory 16 and the I/O devices 22.
  • FIG. 3 is a schematic block diagram of one type of [0038] processor 12, namely an UltraSPARC™ processor marketed by Sun Microsystems, Inc. Further details of the UltraSPARC™ processor can be found, for example, in the UltraSPARC™ I&II User's Manual, January 1997, available from Sun Microsystems, Inc, the content of which is incorporated herein by reference. The present invention can be implemented in a processor having the general overall structure of FIG. 3, although it should be appreciated that the invention could equally be implemented in processors having other structures.
  • In order to explain the present invention, there follows a description of the processor shown in FIG. 3. [0039]
  • The UltraSPARC™ processor is a high-performance, highly integrated superscalar processor implementing a 64-bit architecture. The processor pipeline is able to execute up to four instructions in parallel. [0040]
  • A Prefetch and Dispatch Unit (PDU) [0041] 30 fetches instructions before they are actually needed in the pipeline, so the execution units do not starve for instructions. Prefetched instructions are stored in the Instruction Buffer 32 until they are sent to the rest of the pipeline. An instruction cache (I-cache) 33 is a 16 Kbyte two-way set associative cache with 32 byte blocks.
  • An Integer Execution Unit (IEU) [0042] 34 includes two arithmetic logic units (ALUs), a multi-cycle integer multiplier, a multi-cycle integer divider, eight register windows, four sets of global registers (normal, alternate, MMU, and interrupt globals) and trap registers.
  • A Floating-Point Unit (FPU) [0043] 36 is partitioned into separate execution units, which allow two floating-point instructions to be issued and executed per cycle. Source and result data are stored in a 32-entry Floating Point (FP) register file (FP Reg) 38. FP Multiply 40, FP Add 42 and FP Divide 44, are all catered for. A Graphics Unit (GRU) 45 provides a comprehensive set of graphics instructions.
  • The Memory Management Unit (MMU) [0044] 28 provides mapping between a 44-bit virtual address and a 41-bit physical address. This is accomplished through a 64-entry instructions translation look-aside buffer (iTLB) 46 for instructions and a 64-entry data translation look-aside buffer (dTLB) 48 for data under the control of MMU control logic 50. Both TLBs are fully associative. The control logic 50 also provides hardware support for a software-based TLB miss strategy. A separate set of global registers 52 is available to process MMU traps.
  • A Load/Store Unit (LSU) [0045] 54 is responsible for generating the virtual address of all loads and stores for accessing a data cache (D-Cache) 56, for decoupling load misses from the pipeline through a load buffer 58, and for decoupling stores through a store buffer 59.
  • An External Cache Unit (ECU) [0046] 60 handles I-Cache 33 and D-Cache 56 misses efficiently. The ECU 60 can handle one access per cycle to an External Cache (E-Cache) 62. The ECU 60 provides overlap processing during load and store misses. For instance, stores that hit the E-Cache 62 can proceed while a load miss is being processed. The ECU 60 can process reads and writes and also handle snoops. Block loads and block stores, which load/store a 64-byte line of data from memory to the floating-point register file, are also processed by the ECU 60 to provide high transfer bandwidth without polluting the E-Cache 62.
  • A Memory Interface Unit (MIU) [0047] 64 handles all transactions to the system controller, for example, external cache misses, interrupts, snoops, writebacks, and so on.
  • FIG. 4 is a schematic overview of the UltraSPARC[0048] ™ processor subsystem 66, which comprises the UltraSPARC™ processor 12, synchronous SRAM components for E-Cache tags and data 621 and 622, and two UltraSPARC™ data buffer (UDB) 68 chips. Typically, the processor 12 will be integrated in a single integrated circuit. The UDBs 68 isolate the E-Cache 62 from the system, provide data buffers for incoming and outgoing system transactions, and provide error correction code (ECC) generation and checking.
  • There now follows a description of the Memory Management Unit (MMU) [0049] 28 as it is seen by operating system software. In this example, a 44-bit virtual address space is supported with 41 bits of physical address. During each processor cycle the MMU 28 provides one instruction and one data virtual-to-physical address translation. In each translation, the virtual page number is replaced by a physical page number, which is concatenated with the page offset to form the full physical address, as illustrated in FIG. 5 for each of four page sizes, namely 8 Kb, 64 Kb, 512 Kb, and 4 Mb. It should be noted that this Figure shows a full 64-bit virtual address, even though only 44 bits of Virtual Address (VA) are supported, as mentioned above.
  • 44-bit virtual address space is implemented in two equal halves at the extreme lower and upper portions of the full 64-bit virtual address space. Virtual addresses between [0050] 0000 0800 0000 0000 16 and FFFF F7FF FFFF FFFF16, inclusive, are termed “out of range” and are illegal for the UltraSPARC™ virtual address space. In other words, virtual address bits VA<63:44>must be either all zeros or all ones. FIG. 6 illustrates the UltraSPARC™ virtual address space.
  • FIG. 7 is a block diagram illustrating the software view of the [0051] MMU 28. The operating system maintains translation information in a data structure called the Software Translation Table (STT) 70. The MMU 28 is effectively divided into an instruction MMU (I-MMU) 281 and a data MMU (D-MMU) 282. The I-MMU 281 includes the hardware instructions Translation Lookaside Buffer (iTLB) 46 and the D-MMU 282 includes the hardware data Translation Lookaside Buffer (dTLB) 48. These TLBs 46 and 48 act as independent caches of the Software Translation Table 70, providing one-cycle translation for the more frequently accessed virtual pages.
  • The [0052] STT 70, which is kept in memory, is typically large and complex compared to the relatively small hardware TLBs 46 and 48. A Translation Storage Buffer (TSB) 72, which acts like a direct-mapped cache, provides an interface between the STT 70 and the TLBs 46 and 48. The TSB 72 can be shared by all processes running on a processor, or it can be process specific.
  • When performing an address translation, a “TLB hit” occurs when a desired translation is present in the MMU's on-[0053] chip TLBs 46/48. A “TLB miss” occurs when a desired translation is not present in the MMU's on-chip TLBs 46/48. On a TLB miss the MMU 28 immediately traps to software for TLB miss processing. A software TLB miss handler has the option of filling the TLB by any means available, but it is likely to take advantage of TLB miss hardware support features provided by the MMU controller 50, since the TLB miss handler is time critical code.
  • There now follows more information on the UltraSPARC™ Memory Management Unit (MMU) [0054] 28.
  • An example of an UltraSPARC™ Translation Table Entry (TTE) of the [0055] TSB 72 is shown in FIG. 8. This provides a translation entry that holds information for a single page mapping. The TTE is broken into two 64-bit words, representing the tag and data of the translation. Just as in a hardware cache, the tag is used to determine whether there is a hit in the TSB 72. If there is a hit, the data is fetched by software. The functions of fields of the tag and data words are described below.
  • Tag Word [0056]
  • G—This is a Global bit. If the Global bit is set, the Context field of the TTE is ignored during hit detection. This allows any page to be shared among all (user or supervisor) contexts running in the same processor. The Global bit is duplicated in the TTE tag and data to optimize the software miss handler. [0057]
  • Context—This is a 13-bit context identifier associated with the TTE. [0058]
  • VA-tag<[0059] 63:22>—The Virtual Address tag is the virtual page number.
  • Data Word [0060]
  • V—This is a Valid bit. If the Valid bit is set, the remaining fields of the TTE are meaningful. [0061]
  • Size—This is the page size for this entry. [0062]
  • NFO—This is No-Fault-Only bit. If this bit is set, selected specific loads are translated, but all other accesses will trap with a data_access_exception trap. [0063]
  • IE—This is an Invert Endianness bit. If this bit is set, accesses to the associated page are processed with inverse endianness from what is specified by the instruction (big-for-little and little-for-big). [0064]
  • Soft<[0065] 5:0>, Soft2<8:0>—These are software-defined fields provided for use by the operating system. The Soft and Soft2 fields may be written with any value.
  • Diag—This is a field used by diagnostics to access the redundant information held in the TLB structure. Diag<O>=Used bit, Diag<[0066] 3:1>=RAM size bits, Diag<6:4>=CAM size bits.
  • PA<[0067] 40:13>—This is the physical page number. Page offset bits for larger page sizes in the TTE (PA<15:13>, PA<18:13>, and PA<21:13>for 64 Kb, 512 Kb, and 4 Mb pages, respectively) are stored in the TLB and returned for a Data Access read, but are ignored during normal translation.
  • L—This is a Lock bit. If this bit is set, the TTE entry will be “locked down” when it is loaded into the TLB; that is, if this entry is valid, it will not be replaced by the automatic replacement algorithm invoked by an ASI store to the Data-In register. [0068]
  • CP, CV—These form cacheable-in-physically-indexed-cache and cacheable-invirtually-indexed cache bits to determine the placement of data in UltraSPARC™ caches. The MMU does not operate on the cacheable bits, but merely passes them through to the cache subsystem. [0069]
  • E—This is a Side-effect bit. If this bit is set, speculative loads and FLUSHes will trap for addresses within the page, noncacheable memory accesses other than block loads and stores are strongly ordered against other E-bit accesses, and noncacheable stores are not merged. [0070]
  • P—This is a Privileged bit. If this bit is set, only the supervisor can access the page mapped by the TTE. If the P bit is set and an access to the page is attempted when PSTATE.PRIV=O, the MMU will signal an instruction_access_exception or data_access_exception trap (FT=1[0071] 16).
  • W—This is a Writable bit. If the W bit is set, the page mapped by this TTE has write permission granted. Otherwise, write permission is not granted and the MMU will cause a data_access_protection trap if a write is attempted. The W-bit in the I-MMU is read as zero and ignored when written. [0072]
  • G—This is identical to the Global bit in the TTE tag word. The Global bit in the TTE tag word is used for the TSB hit comparison, while the Global bit in the TTE data word facilitates the loading of a TLB entry. [0073]
  • The above description of the UltraSPARC™ processor represents an example of a prior art processor. In the following, the application of an embodiment of the invention in the context of such a processor is to be described, it being understood that the invention can equally be applied to processors of alternative designs and configurations. [0074]
  • In an embodiment of the invention, an indication is provided as to whether the address translations represented by the translation entries relate to physical addresses from which a valid response is to be expected, or whether the physical address relates to an address for which a response should be faked. The latter case can occur, for example, where the physical address falls within an address range for a faulty resource. [0075]
  • In preferred embodiments of the invention, this is achieved by providing a fake response identification through the translation entries as to whether or not a response for the corresponding address translation is to be faked. In different embodiments, the fake response indication can be given in different ways. [0076]
  • Where a faulty resource access, as effected for example by a mis-configured or badly written program (or portion of an operating system), is identified by a processor, this is conventionally dealt with by taking a trap. Likewise where accesses are made to faulty or missing peripheral devices, it is conventional for this to be dealt with by a hardware trap or interrupts. These exceptions take time to handle. If exception handling is required for a single faulty access, then this can normally be accommodated without a significant impact on system performance. However, where such faulty accesses are performed repeatedly, this can lead to a significant reduction in performance. Accordingly, by providing a mechanism whereby accesses may be dropped and instead access responses may be faked, the requirement for taking repeated traps and handling repeated exceptions with the consequential logging of exception data in response to repeated faulty accesses to the same resource address can be avoided. [0077]
  • In one embodiment, the instruction and/or data translation look-aside buffers can be split into, for example, a first (non-faked) portion and a second (faked) portion. In this way, the format of the translation entries need not be changed with respect to the prior art, with this organization of the translation entries providing a fake response indication for the translations associated with the translation entries. [0078]
  • In another embodiment, the format of the translation entries can be changed with respect to the prior art to include at least one faked response indicator bit, the setting of which indicates whether a response to is to be faked or not. [0079]
  • In the following description, it is assumed that a single fake response indication is provided for any translation. A response to any access, whether of a read or write or indeed of any other type, will be faked if the faked response indication is that a faked response should be returned. However, it should be understood that the invention can also be extended to provide separate faked response indications for read, write and any other types of access that may be required. Alternatively, or in addition different types of accesses depending on the type of access requester (e.g. user accesses or supervisor accesses) could be identified. More generally, different processes could be provided with separate fake response handling. For example, where a faked response indication is provided by separate portions of the translation look aside buffers, any appropriate number of portions may be provided. Also, for example, where a faked response indication is provided by faked response bits, any appropriate number of faked response bits may be provided. A combination of both approaches can be used where appropriate. [0080]
  • FIG. 9 is a schematic block diagram of the data address [0081] translation part 282 of the memory management unit 28 for illustrating a first exemplary implementation of the invention. It is to be understood that an equivalent arrangement having the same basic structure is also provided for the instruction address translation part 281 of the memory management unit 28 shown in FIG. 7. In this implementation, each translation table is split into two sub-tables. Thus, for example, the dTLB 48 of FIG. 7 is split into first and second sub-tables 48A and 48B. In the equivalent instruction address translation portion (not shown), the iTLB 46 of FIG. 7 is also split into first and second sub-tables.
  • The first sub-table [0082] 48A of the dTLB 48 contains translation entries corresponding to data address translations for which responses are to be faked. The second sub-table 48B contains translation entries corresponding to data address translations for which responses are not to be faked. Each of the entries could, for example, have the format described above with reference to FIG. 8, although in other embodiments, the format of the translation entries and the information represented thereby could be different.
  • The [0083] MMU controller 50 is responsive to a virtual address 82 relating to an intended resource access to look up both of the sub-tables 48A and 48B in parallel. The subtable 48A/48B in which a match (a hit) occurs determines whether a normal memory access is made or not. Thus, if a match occurs in the first sub-table 48A, then a resource access is made at 84 using the result of the address translation in a conventional manner. However, if a match occurs in the second sub-table 48B, then the resource access is terminated and a fake response generator (FRG) 86 is activated to return a faked response 88 to the CPU in place of the results of a normal access.
  • Preferably the faked [0084] response generator 86 is implemented in hardware in the memory management unit. The fake response generator can include storage (FR storage) 89 containing fake responses to be returned as a faked response.
  • The placement of a translation entry in the second sub-table [0085] 48B can occur in response, for example, to failure of a previous access to the resource concerned. During normal operation in which access to a resource is effected, a valid response will be received within a predetermined time.
  • As mentioned above, the handling of a single exception in response to a faulty access need not have a significant impact on system performance. Accordingly, the identification of a first faulty access for a given address translation can be left to conventional trap handling. However, the [0086] MMU 28 is arranged to be responsive to a faulty access being indicated at 90 to change the faked response indication for the translation entry for the translation concerned to indicate that future accesses for that translation should be faked.
  • In the arrangement shown in FIG. 9, therefore, where the [0087] MMU 28 is notified at 90 of a faulty access for an address translation, the MMU controller 50 is operable to move the translation entry from the first sub-table 48A to the second sub-table 48B. As a result, subsequent resource access attempts that require the use of that translation will result in the access being terminated and the response generator being operable to return a faked response. Where a subsequent processor read operation is intended, the actual read could be stopped from occurring and a faked read result (e.g., all zeros) could be generated. Where a subsequent processor write is intended, the actual write operation could be stopped from occurring and a faked acknowledgement could be generated.
  • As an alternative to an approach where entries are moved from one table to the other, each sub-table could contain a complete set of entries, with the Valid bit ‘V’ being set in one of the tables, only, at any one time. The transfer of an entry from one table to another then being effected by swapping the valid bits in the two sub-tables rather than actually moving the entry between sub-tables. [0088]
  • The faked response that is provided includes the faking of any status signals, and in the case of a read operation faked data. The actual data returned by the faked response generator does not in fact matter. The values provided as a faked read response could include all zeros, or random data, or the content of any register, buffer, or any other response. The reason why this does not matter is that any such accesses to a resource for which a faked response is to be generated will follow an initial access which lead to the initial faulty access for which a trap was taken. Exception handling will already be operative to address the initial fault, and the information returned with the subsequent faked response(s) will never be used by the program that generated the initial faulty access. [0089]
  • FIG. 10 is a schematic block diagram of the data address [0090] translation part 282 of the memory management unit 28 for illustrating a second exemplary implementation of the invention. It is to be understood that an equivalent arrangement having the same basic structure is also provided for the instruction address translation part 281 of the memory management unit 28 shown in FIG. 7. In this implementation, a translation table 48 is not split as described with reference to FIG. 9. In this implementation the table 48 contains translation entries corresponding to all address translations. In the equivalent instruction address translation portion (not shown), the iTLB 46 of
  • FIG. 7 also contains all relevant translation entries. In this example, each of the entries could, for example, have the format illustrated in FIG. 11. This format corresponds to that described above with reference to FIG. 8, with the exception that a new faked response (FR) indicator is provided in a previously unused portion of the tag word. In the present instance, the FR indicator is one bit, although as described above, it could comprise multiple bits. Also, although the FR indicator is in the tag word as shown in FIG. 11 to take advantage of free space, it could equally be provided in the data word where space is available. Indeed, as will be apparent, the invention is not limited to systems with table entries of the format shown, and in other embodiments, the table entry format and the rest of the information represented thereby could be different. [0091]
  • Thus the FR indicator provides a bit indicating whether or not an access should be carried out for the translation concerned, or whether the access should be prevented and instead a fake response be returned. In the present example a zero indicates that the access should be carried out and a one indicates that the access should be stopped and the response faked. Of course, the values could be reversed in other embodiments. [0092]
  • The [0093] MMU controller 50 is responsive to a virtual address 92 relating to an intended resource access to look up the table 48. The setting of the FR bit in the table entry that provides a match (a hit) determines whether a normal memory access is made or not. Thus, if the FR bit has a first value (e.g. 0) in the table entry in the table 48 that provides a match, then a resource access is made at 94 using the result of the address translation in a conventional manner. If the FR bit has a second value (e.g. 1) in the table entry in the table 48 that provides a match, then the resource access is terminated and a fake response generator 86 is activated to return a faked response at 98 to the CPU in place of the results of a normal access. Logic 95 is responsive to the setting of the FR bit in the table entry in which a match occurs to block the normal resource access from proceeding and to activate the fake response generator 96.
  • The setting of the FR indicator in the table entry corresponding to a given translation entry in the table [0094] 48 can occur in response, for example, to failure of a previous access to the resource concerned. As mentioned above, the handling of a single exception in response to a faulty access need not have a significant impact on system performance. Accordingly, the identification of a first faulty access for a given address translation can be left to conventional trap handling. However, in the arrangement shown in FIG. 10, where the MMU 28 is notified at 90 of a faulty access for an address translation, the MMU controller 50 is operable to change the value of the FR bit for the table entry concerned in the table 48. Thus, where a requirement for a faked response is one, the faked response indicator is changed from 0 to 1. As a result, subsequent resource access attempts that require the use of that translation will result in the access being terminated and the response generator being operable to return a faked response. Where a subsequent processor read operation is intended, the actual read could be stopped from occurring and a faked read result (e.g., all zeros) could be generated. Where a subsequent processor write is intended, the actual write operation could be stopped from occurring and a faked acknowledgement could be generated.
  • As with the arrangement described with reference to FIG. 9, the actual response returned by the faked response generator does not in fact matter, and for the same reasons. Accordingly, the faked read response can be in the form of all zeros, or any other content of a register, or buffer, a random number, or any other response. For example the response could be generated from storage for values in the [0095] FR storage 99.
  • Accordingly, there has been described an apparatus and a method of providing resource access control in a manner that avoids unnecessary resource accesses where a resource is already known to be faulty. The resource can be a memory location, a peripheral or any other addressable system component. A resource access mechanism in a processor controls access to resources. The resource access mechanism includes an address control mechanism having a plurality of address control entries, each address control entry providing fake response identification indicating whether or not a response for the corresponding address is to be faked. The resource access mechanism also includes a fake response generator for selectively generating a faked response for an address in response to the fake response identification of the corresponding address control entry indicating that a response is to be faked. [0096]
  • Although particular embodiments of the invention have been described, it will be appreciated that many modifications/additions and/or substitutions may be made within the scope of the invention. [0097]
  • Thus, for example, although the described embodiments employ translation tables, it will be appreciated that the translation entries need not be stored in tabular form, but could be held in any other suitable form, for example in a linked list. Thus for example, where reference is made to a table or sub-table above, this could be replaced by a reference to a list, or sub-list. [0098]
  • Moreover, the invention is not limited to any particular technology for looking up translation entries. For example, where tables are used, these could be fully or set associative as appropriate. As mentioned above, multiple faked response indications may be provided for each translation entry. [0099]
  • Also, for example, the resource access mechanism could be separate from the address translation mechanism and/or a memory management unit. FIG. 12 illustrates a [0100] resource access mechanism 100 separate from a memory management unit 28. The resource access mechanism 100 can include an address control mechanism having a plurality of address control entries, each address control entry providing a fake response identification as to whether or not a response for the corresponding address is to be faked; and a fake response generator for selectively generating a faked response for an address in response to the fake response identification of the corresponding address control entry indicating that a response is to be faked.
  • Also, rather than simply preventing an access when a fake response identification indicates that a response for a received address associated therewith is to be faked, the faked response generator can be arranged to be operable to substitute a known good address for the received address for the access. The faked response generator can be operable to output a translated address to perform the access, or can be configured to supply the alternative, good address to the address control mechanism. The good address can be held in one or more registers in the fake response generator. [0101]
  • An embodiment of processor according to the invention could be used in both single processor and multiple processor systems. [0102]

Claims (27)

1. A processor for a computer system, the processor including at least one central processing unit and a resource access mechanism controlling access to resources addressed by at least one said central processing unit, the resource access mechanism including:
an address control mechanism for receiving addresses, the address control mechanism having a plurality of address control entries, each address control entry being associated with one or more addresses and providing a fake response identification as to whether or not a response for a received address associated therewith is to be faked; and
a fake response generator configured to generate a faked response where a fake response identification of an address control entry for a received address indicates that a response is to be faked.
2. The processor of claim 1, wherein the address control mechanism provides an address translation mechanism with an address control entry forming an address translation entry.
3. The processor of claim 2, wherein the address translation mechanism comprises a translation look-aside buffer.
4. The processor of any one of claims 1 to 3, wherein the address control mechanism forms part of a memory management unit.
5. The processor of any preceding claim, wherein the fake response register forms part of a memory management unit.
6. The processor of any preceding claim, wherein the address control mechanism comprises an associative memory containing the plurality of address control entries.
7. The processor of any preceding claim, wherein each address control entry includes a plurality of translation status indicators.
8. The processor of any preceding claim, wherein the address control mechanism comprises a first buffer containing address control entries for addresses for which responses are not to be faked and a second buffer containing address control entries for addresses for which responses are to be faked, the indication of whether a faked response is to be generated or not being derived from the buffer in which the address control entry is located.
9. The processor of any one of claims 1 to 7, comprising a buffer containing address control entries for both addresses for which translations are not to be faked and for addresses for which responses are to be faked, each address control entry including a fake response status identifier indicating whether or not a response for the corresponding address translation is to be faked.
10. The processor of any preceding claim, wherein an access is prevented where the fake response identification of an address control entry corresponding to received address indicates that a response is to be faked, the fake response generator then being operable to return a faked response.
11. The processor of any one of claims 1 to 9, wherein an access is modified where the fake response identification of an address control entry corresponding to a received address indicates that a response is to be faked, the fake response generator then being operable to substitute a known good address for the received address for the access.
12. The processor of any preceding claim integrated in an integrated circuit.
13. The processor of any preceding claim, wherein the resource is at least one memory location.
14. The processor of any preceding claim, wherein the resource is a peripheral device.
15. A computer system comprising the processor of any preceding claim, memory and at least one peripheral device, the resource access mechanism controlling access by the processor to the memory and said at least one peripheral device.
16. The computer system of claim 15, operable to identify an initial faulty access to a resource.
17. The computer system of claim 16, further operable in response to the initial indication of a faulty resource access to cause the resource access mechanism to set a fake response indication for a corresponding translation entry for an address translation for said faulty resource access.
18. A method of managing processor access to resources in a computer system, the method comprising:
holding in an address control mechanism in the processor, a plurality of address control entries with each address control entry providing a fake response identification as to whether or not a response for the corresponding address is to be faked;
the address control mechanism receiving an address from a central processing unit in the processor; and
selectively generating in a fake response generator in the processor a faked response for an address in response to the fake response identification of the corresponding address control entry indicating that a response is to be faked.
19. The method of claim 18, comprising preventing an access where the fake response identification of the address control entry for an address corresponding to the access indicates that a response is to be faked, and returning a faked response to the processor.
20. The method of claim 18 or claim 19, further comprising setting a fake response indication for an address control entry on detecting an error in a resource relating to an access using the address control entry.
21. The method of any of claims 18 to 20, wherein the address control mechanism comprises a first buffer containing address control entries for addresses for which responses are not to be faked and a second buffer containing address control entries for addresses for which responses are to be faked, the method including deriving an indication of whether a faked response is to be generated or not from the buffer in which the address control entry is located.
22. The method of any one of claims 18 to 21, wherein the address control entry is an address translation entry.
23. The method of any one of claims 18 to 22, wherein the resource is at least one memory location.
24. The method of any one of claims 18 to 23, wherein the resource is a peripheral device.
25. A processor according to claim 1, substantially as hereinbefore described with reference to the accompanying drawings.
26. A computer system according to claim 15, substantially as hereinbefore described with reference to the accompanying drawings.
27. A method of managing processor access to resources in a computer system according to claim 18, substantially as hereinbefore described with reference to the accompanying drawings.
US09/783,121 2000-10-03 2001-02-13 Processor resource access control with response faking Expired - Lifetime US6795939B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0024191A GB2367647B (en) 2000-10-03 2000-10-03 Resource access control for a processor
GB0024191.9 2000-10-03
GB0024191 2000-10-03

Publications (2)

Publication Number Publication Date
US20020040422A1 true US20020040422A1 (en) 2002-04-04
US6795939B2 US6795939B2 (en) 2004-09-21

Family

ID=9900587

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/783,121 Expired - Lifetime US6795939B2 (en) 2000-10-03 2001-02-13 Processor resource access control with response faking

Country Status (2)

Country Link
US (1) US6795939B2 (en)
GB (1) GB2367647B (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6869881B2 (en) 2001-05-17 2005-03-22 Sioptical, Inc. Method for forming passive optical coupling device
US20050144408A1 (en) * 2003-12-24 2005-06-30 Kenji Ejima Memory protection unit, memory protection method, and computer-readable record medium in which memory protection program is recorded
EP2829986A4 (en) * 2013-05-20 2015-07-08 Huawei Tech Co Ltd Computer system, access method and apparatus for peripheral component interconnect express endpoint devices
US20220385677A1 (en) * 2021-06-01 2022-12-01 International Business Machines Corporation Cloud-based security for identity imposter

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10081643D2 (en) 1999-06-10 2002-05-29 Pact Inf Tech Gmbh Sequence partitioning on cell structures
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US9436631B2 (en) 2001-03-05 2016-09-06 Pact Xpp Technologies Ag Chip including memory element storing higher level memory data on a page by page basis
US9411532B2 (en) 2001-09-07 2016-08-09 Pact Xpp Technologies Ag Methods and systems for transferring data between a processing device and external devices
US9250908B2 (en) * 2001-03-05 2016-02-02 Pact Xpp Technologies Ag Multi-processor bus and cache interconnection system
US9552047B2 (en) 2001-03-05 2017-01-24 Pact Xpp Technologies Ag Multiprocessor having runtime adjustable clock and clock dependent power supply
US9141390B2 (en) 2001-03-05 2015-09-22 Pact Xpp Technologies Ag Method of processing data with an array of data processors according to application ID
US10031733B2 (en) 2001-06-20 2018-07-24 Scientia Sol Mentis Ag Method for processing data
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
US7394284B2 (en) 2002-09-06 2008-07-01 Pact Xpp Technologies Ag Reconfigurable sequencer structure

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4188670A (en) * 1978-01-11 1980-02-12 Mcdonnell Douglas Corporation Associative interconnection circuit
US4719626A (en) * 1983-12-30 1988-01-12 Fujitsu Limited Diagnostic method and apparatus for channel control apparatus
US4972345A (en) * 1988-01-22 1990-11-20 International Business Machines Corp. Apparatus for error detection and reporting on a synchronous bus
US5455834A (en) * 1993-06-14 1995-10-03 Hal Computer Systems, Inc. Fault tolerant address translation method and system
US5627965A (en) * 1992-07-17 1997-05-06 Integrated Micro Products, Ltd. Method and apparatus for reducing the effects of hardware faults in a computer system employing multiple central processing modules
US5819027A (en) * 1996-02-28 1998-10-06 Intel Corporation Bus patcher
US5881282A (en) * 1996-12-10 1999-03-09 Intel Corporation Controlling ill-behaved computer add-on device through a virtual execution mode
US6067634A (en) * 1995-12-01 2000-05-23 Silicon Graphics, Inc. System and method for resource recovery in a distributed system
US6145055A (en) * 1997-05-27 2000-11-07 Kabushiki Kaisha Toshiba Cache memory having flags for inhibiting rewrite of replacement algorithm area corresponding to fault cell and information processing system having such a cache memory
US6353898B1 (en) * 1997-02-21 2002-03-05 Novell, Inc. Resource management in a clustered computer system
US6560724B1 (en) * 1999-09-29 2003-05-06 Unisys Corporation Random message verification technique

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02196355A (en) * 1989-01-26 1990-08-02 Nec Corp Memory processing system
WO1992003785A1 (en) 1990-08-14 1992-03-05 Siemens Aktiengesellschaft Device for monitoring the functions of external synchronisation units in a multi-computer system
US5493660A (en) 1992-10-06 1996-02-20 Hewlett-Packard Company Software assisted hardware TLB miss handler
US6532505B1 (en) 1999-11-12 2003-03-11 Infineon Technologies Ag Universal resource access controller
WO2000060462A1 (en) 1999-04-07 2000-10-12 Cradle Technologies Global bus synchronous transaction acknowledge with nonresponse detection
US6651182B1 (en) 2000-08-03 2003-11-18 International Business Machines Corporation Method for optimal system availability via resource recovery

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4188670A (en) * 1978-01-11 1980-02-12 Mcdonnell Douglas Corporation Associative interconnection circuit
US4719626A (en) * 1983-12-30 1988-01-12 Fujitsu Limited Diagnostic method and apparatus for channel control apparatus
US4972345A (en) * 1988-01-22 1990-11-20 International Business Machines Corp. Apparatus for error detection and reporting on a synchronous bus
US5627965A (en) * 1992-07-17 1997-05-06 Integrated Micro Products, Ltd. Method and apparatus for reducing the effects of hardware faults in a computer system employing multiple central processing modules
US5455834A (en) * 1993-06-14 1995-10-03 Hal Computer Systems, Inc. Fault tolerant address translation method and system
US6067634A (en) * 1995-12-01 2000-05-23 Silicon Graphics, Inc. System and method for resource recovery in a distributed system
US5819027A (en) * 1996-02-28 1998-10-06 Intel Corporation Bus patcher
US5881282A (en) * 1996-12-10 1999-03-09 Intel Corporation Controlling ill-behaved computer add-on device through a virtual execution mode
US6353898B1 (en) * 1997-02-21 2002-03-05 Novell, Inc. Resource management in a clustered computer system
US6145055A (en) * 1997-05-27 2000-11-07 Kabushiki Kaisha Toshiba Cache memory having flags for inhibiting rewrite of replacement algorithm area corresponding to fault cell and information processing system having such a cache memory
US6560724B1 (en) * 1999-09-29 2003-05-06 Unisys Corporation Random message verification technique

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6869881B2 (en) 2001-05-17 2005-03-22 Sioptical, Inc. Method for forming passive optical coupling device
US20050144408A1 (en) * 2003-12-24 2005-06-30 Kenji Ejima Memory protection unit, memory protection method, and computer-readable record medium in which memory protection program is recorded
EP2829986A4 (en) * 2013-05-20 2015-07-08 Huawei Tech Co Ltd Computer system, access method and apparatus for peripheral component interconnect express endpoint devices
US9323635B2 (en) 2013-05-20 2016-04-26 Huawei Technologies Co., Ltd. Method, computer system, and apparatus for accessing peripheral component interconnect express endpoint device
US9384110B2 (en) 2013-05-20 2016-07-05 Huawei Technologies Co., Ltd. Method, computer system, and apparatus for accessing peripheral component interconnect express endpoint device
US20220385677A1 (en) * 2021-06-01 2022-12-01 International Business Machines Corporation Cloud-based security for identity imposter

Also Published As

Publication number Publication date
US6795939B2 (en) 2004-09-21
GB2367647B (en) 2002-11-20
GB2367647A (en) 2002-04-10
GB0024191D0 (en) 2000-11-15

Similar Documents

Publication Publication Date Title
US6795937B2 (en) Multiple traps after faulty access to a resource
US6732250B2 (en) Multiple address translations
US7873776B2 (en) Multiple-core processor with support for multiple virtual processors
US6775747B2 (en) System and method for performing page table walks on speculative software prefetch operations
US7240160B1 (en) Multiple-core processor with flexible cache directory scheme
CA1323701C (en) Processing of memory access exceptions with pre-fetched instructions within the instruction pipeline of a virtual memory system-based digital computer
US7685354B1 (en) Multiple-core processor with flexible mapping of processor cores to cache banks
US6425075B1 (en) Branch prediction device with two levels of branch prediction cache
US7366829B1 (en) TLB tag parity checking without CAM read
US7406581B2 (en) Speculative instruction load control
US6138208A (en) Multiple level cache memory with overlapped L1 and L2 memory access
US5265227A (en) Parallel protection checking in an address translation look-aside buffer
US7840845B2 (en) Method and system for setting a breakpoint
US9009445B2 (en) Memory management unit speculative hardware table walk scheme
US9131899B2 (en) Efficient handling of misaligned loads and stores
US6795939B2 (en) Processor resource access control with response faking
US7100006B2 (en) Method and mechanism for generating a live snapshot in a computing system
US5675763A (en) Cache memory system and method for selectively removing stale aliased entries
US6901540B1 (en) TLB parity error recovery
US8046538B1 (en) Method and mechanism for cache compaction and bandwidth reduction
US6865651B2 (en) Method and system for optimizing translation buffer recovery after a miss operation within a multi-processor environment
US6519684B1 (en) Low overhead method for selecting and updating an entry in a cache memory
US6795936B2 (en) Bus bridge resource access controller
US6338128B1 (en) System and method for invalidating an entry in a translation unit
KR100218616B1 (en) Protocol and system for performing line-fill addressing during copy-back operation

Legal Events

Date Code Title Description
AS Assignment

Owner name: SUN MICROSYSTEMS, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HARRIS, JEREMY GRAHAM;DURRANT, PAUL;SUN MICROSYSTEMS LIMITED;REEL/FRAME:011559/0505

Effective date: 20000928

STCF Information on status: patent grant

Free format text: PATENTED CASE

CC Certificate of correction
FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

AS Assignment

Owner name: ORACLE AMERICA, INC., CALIFORNIA

Free format text: MERGER AND CHANGE OF NAME;ASSIGNORS:ORACLE USA, INC.;SUN MICROSYSTEMS, INC.;ORACLE AMERICA, INC.;REEL/FRAME:037278/0801

Effective date: 20100212

FPAY Fee payment

Year of fee payment: 12