WO2007017367A1 - Vorrichtung und verfahren zur speicherung von daten und/oder befehlen in einem rechnersystem mit wenigstens zwei ausführungseinheiten und wenigstens einem ersten speicher oder speicherbereich für daten und/oder befehle - Google Patents

Vorrichtung und verfahren zur speicherung von daten und/oder befehlen in einem rechnersystem mit wenigstens zwei ausführungseinheiten und wenigstens einem ersten speicher oder speicherbereich für daten und/oder befehle Download PDF

Info

Publication number
WO2007017367A1
WO2007017367A1 PCT/EP2006/064588 EP2006064588W WO2007017367A1 WO 2007017367 A1 WO2007017367 A1 WO 2007017367A1 EP 2006064588 W EP2006064588 W EP 2006064588W WO 2007017367 A1 WO2007017367 A1 WO 2007017367A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
memory
cache
counter
comparison
Prior art date
Application number
PCT/EP2006/064588
Other languages
English (en)
French (fr)
Inventor
Reinhard Weiberle
Bernd Mueller
Eberhard Boehl
Yorck Collani
Rainer Gmehlich
Original Assignee
Robert Bosch Gmbh
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 Robert Bosch Gmbh filed Critical Robert Bosch Gmbh
Priority to JP2008525516A priority Critical patent/JP2009505178A/ja
Priority to EP06777936A priority patent/EP1915684A1/de
Publication of WO2007017367A1 publication Critical patent/WO2007017367A1/de

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • 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
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1683Temporal synchronisation or re-synchronisation of redundant processing components at instruction level
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/845Systems in which the redundancy can be transformed in increased performance

Definitions

  • Computer system with at least two execution units and at least one first memory or memory area for data and / or commands
  • the present invention relates to microprocessor systems with a cache, and in this context describes a dual-port cache, and more particularly its application to an application in a data processing system having at least two execution units that selectively operate independently or handle the same tasks.
  • processors are cached to speed access to instructions and data. On the other hand, this is necessary with the constantly growing amount of data on the one hand and the increasing complexity of data processing with ever faster processors on the other hand.
  • a cache partially avoids slow access to large (main) memory, and the processor then does not have to wait for the data to be provided.
  • Both caches for commands and data only are known, but also "unified caches" where both data and instructions are stored in the same cache.
  • Systems with several levels (hierarchy levels) of caches are also known. Such multi-level caches are used to optimally adjust the speeds between the processor and the (main) memory using graduated memory sizes and various addressing strategies of the caches at the different levels.
  • the unit for comparison generated data (the comparator) is arranged after the caches in a possible embodiment.
  • the result is that the data can not be compared until it is written back from the cache to the main memory, which can lead to a delayed evaluation of the validity of data.
  • the comparator between the execution units and the cache, then the data transfer between the execution unit and cache Slowed down by the higher electrical load on the signals.
  • the object of the invention is to ensure that a comparison of the data can take place in real time with the storage in the cache and independently of the time of writing back into the main memory.
  • the data transfer between at least one execution unit and the cache should not be affected by higher electrical bus load.
  • a realization of a dual port cache memory is not obvious because of the increased hardware complexity in known processor systems with one or more execution units (single or multiple cores).
  • a dual port cache architecture can advantageously be used.
  • the main advantage over multi-cache multi-processor systems is that when switching between The operating modes of the multiprocessor system, the content of the cache must not be deleted or invalidated because the data is stored only once and therefore remain consistent even after a switch.
  • a dual-port cache in a multiprocessor system with multiple operating modes has the distribution that the data / instructions do not need to be cached several times and possibly maintained. Furthermore, only one memory space per datum / command has to be provided in hardware, even if this datum or instruction is used by several execution units. Moreover, in different modes of operation of the multiprocessor system, the data need not be distinguished as to the mode in which they were processed or fetched. A particular advantage is that the cache does not have to be deleted when changing the operating mode. With a dual port cache, two processors can read simultaneously to the same data / instructions. A particular advantage is further that instead of the "write through" mode, a "write back" mode for the cache can be used.
  • This method does not require constantly updating the (main) memory, but only when overwriting the data in the cache. There are no consistency problems because the cache for both processors provides the data from the same source and also the comparison time of the data is not affected because the comparison is independent of the write back to main memory.
  • An asymmetrical dual port cache structure as proposed here according to the invention, has the particular advantage that the writing of the data into the cache is not hindered, at least for one execution unit, but on the other hand, it is not necessary to wait until the data from the Cache be written in the skin memory. This makes it possible for the data to be written back to main memory in blocks only if the block in the cache is replaced by another block ("write back" mode).
  • the execution units In a "write back" mode, the execution units only work with the cache as long as the data is available there.When writing an execution unit in the cache, the dirty bit is set to indicate that the block's data is no longer with the cache If the participating execution units work with the shared cache, the data in the main memory need not be updated as long as the block in question remains in the cache, but multiple data words can be changed several times without affecting the data consistency of the execution units.
  • a device for storing data and / or commands in a computer system having at least two execution units and at least a first memory or memory area for data and / or commands, switching means are provided and is switched between at least two operating modes, wherein comparison means are provided and a first operating mode corresponds to a comparison mode and a second operating mode corresponds to a performance mode, characterized in that a second memory or memory area is contained in the device, wherein the device is designed as a cache memory system and is equipped with at least two separate ports, one port directly with one first execution unit is connected and between the second port and the at least second execution unit, a third device is included, which is designed such that an access of the second execution unit to the second memory o the memory area is via the third device.
  • a device is advantageous, characterized in that at least one memory means is present in the switching means and / or the comparison means and the switching takes place by at least one bit in the memory means.
  • switchover takes place by at least one external or internal signal to the computer system.
  • such a device is advantageous, characterized in that, in the performance mode, the third device of the directly connected execution unit ensures read and write access to the second memory device via the connected port.
  • such a device is advantageous, characterized in that there is at least one counter in the cache memory system which is incremented or decremented by the first execution unit via the first port of this memory of the counter upon each comparison of comparable data being stored.
  • a second counter is provided in the third device and the counter value of the counter is used to set the second counter of the third unit.
  • a method for storing data and / or commands in a computer system having at least two execution units and at least one first memory or memory area for data and / or commands is described, wherein switching means are provided and switched between at least two operating modes, wherein comparison means are provided and a first operating mode corresponds to a comparison mode and a second operating mode corresponds to a performance mode, characterized in that a second operating mode corresponds to a comparison mode
  • Memory or memory area is provided, which contain in a cache system and is equipped with at least two separate ports, wherein the first execution unit accesses the second memory or memory area directly via a first port and the second execution unit accesses the second memory or memory area via a third device.
  • the third device contains memory means, in which data and / or signals can be stored by the connected execution unit and, wherein the third unit, independently of the state of said execution unit data with the second memory or memory area can exchange
  • a method is described, characterized in that the third device receives data and / or addresses and / or control signals from the second processing device and then accesses the corresponding data in the second memory or memory area read or write.
  • a method is described, characterized in that the cache memory system decides on the presence of the data and in the case of non-presence sends a signal to the third device.
  • a method is described, characterized in that the data and / or commands in the third unit are checked for their validity and forwarded in the case of validity.
  • a method is described, characterized in that the validity is checked on the basis of additional information stored with the data and / or commands.
  • a method is described, characterized in that synchronization signals are sent to the respective execution units when switching to the comparison mode.
  • a method is described, characterized in that an error is signaled in the case of a comparison and a deviation of the data to be compared.
  • a method is described, characterized in that in the case of voting and a deviation of at least one date from the data to be voted the status and / or an error is signaled.
  • a method is described, characterized in that in the cache memory system, a counter is provided and the counter outputs when switching to the comparison mode on the corresponding connected port, the counter value and this in the third
  • a method is described, characterized in that a second counter is provided in the third device and the counter value of the counter is used to set the second counter of the third unit.
  • a method is advantageously described, characterized in that the counter present in the cache memory system is assigned to a port and is set to a fixed value when the comparison mode is switched on in the processing device connected to the respective port.
  • FIG. 1 shows a dual port cache for data and / or commands.
  • Figure 2 shows a dual port cache with details.
  • FIG. 3 shows a transformation table of 214 and 224, respectively.
  • FIG. 4 shows a division of the dpRAM into two subareas which can be operated independently of one another and are accessed with two separate select signals from each port in the access.
  • Table 1 describes the generation of 4 select signals from 2 address bits by means of decoding
  • Figure 5 shows a realization of a dual port RAM area by a single port RAM by means of port switching.
  • FIG. 6 shows a division of a multiple port RAM with p ports into a plurality of sub-ports.
  • Figure 7 shows a realization of a multi-port RAM area by a single port RAM by means of port switching.
  • FIG. 8 shows a division of the RAM areas for the ports as a function of a system state or a configuration.
  • Table 2 describes the generation of two select signals on each port from one
  • Table 3 describes the generation of two select signals on each port from one
  • FIG. 9 shows a division of a multi-port RAM into areas as a function of a system state or a configuration by generation of the corresponding select signals.
  • FIG. 10 shows a division of a multi-port RAM into areas with multiple associative access.
  • Figure Bl shows the basic principle of asymmetric DCSL architecture with dual port
  • FIG. B2 shows the basic principle of a switching and comparison unit for two execution units.
  • FIG. B3 shows a read request unit B 106 in the inactive state
  • FIG. B4 shows an alternative access of an execution unit to the memory without
  • Figure B5 shows a read request to a cache by a unit if a compare bit is set and data is output from an execution unit BI 10.
  • Table 4 describes the structure of a cache.
  • Table 5 explains one possible design of a control bit.
  • Figure B7 shows a dual port cache through single port RAM and access control.
  • FIG. B8 shows the basic structure of an asymmetrical data processing unit with the possibility of switching between several modes and a multi-port cache.
  • execution unit can in the following both a processor, a core, a CPU, as well as an FPU (Floating Point Unit), a DSP (Digital Signal Processor), a coprocessor or a
  • ALU Arimetic logical Unit
  • the dual port cache 200 essentially consists of a dual port RAM (dpRAM, 230).
  • This dpRAM 230 is preferably provided with two mutually independent address decoders, two data read / write stages and, in contrast to a simple memory cell matrix, also with duplicated word and bit lines, so that at least the read operation for any memory cells of the dpRAMs of Both ports can be done simultaneously.
  • a dual port RAM is therefore understood to mean any RAM which has two ports 231 and 232 which can be used independently, without considering how much time is needed to complete a request to read or write from that port, ie How long does it take for the requested read or write to complete, possibly interacting with requests from the other port?
  • the two ports of the dpRAM are via the signals 201 and 202 with the devices 210 and
  • the data is output via 201 through 210 to 211 or via 202 by 220 to 221 or written in the reverse direction by the execution units into the cache memory.
  • Both ports of the dpRAM are connected via signals 201 and 202 to a bus access controller 240 which is connected to signals 241 which connect to a main memory (not shown) or to a next level cache.
  • the units 210, 220 and 250 are described in more detail.
  • the addresses 212 and 222 of the execution units 215 and 225 contained in the signals 211 and 221 are compared in an address comparator 251 of the device 250 and checked for compatibility together with the control signals also transmitted in 211 and 221.
  • access to the dual port RAM 230 is prevented by means of the control signals contained in the signals 213 or 223.
  • the cache may be partially or fully associative, i.
  • the data can be stored in several or even arbitrary locations of the cache.
  • the address In order to enable access to the dpRAM, the address must first be determined by means of which the desired data / commands can be accessed. Depending on the addressing mode, one or more block addresses are selected where the date is searched in the cache. All these blocks are read and the identifier stored in the cache with the data is compared with the index address (part of the original address). If there is a match and after the additional validation by means of the control bits also stored in the cache for each block (e.g., valid bits, dirty bits and process ID), a cache hit signal is generated indicating the validity.
  • a table is preferably used which is arranged in a memory unit 214 or 224 (register or RAM, also referred to as TAG RAM) shown in FIG. 2 and is located in units 210 and 220, respectively.
  • the table is an address transformation unit which converts both the virtual address into a physical address. and, in the case of a direct-mapped cache, provides the exact (unique) cache access address; in a multi-associative cache organization, multiple blocks are addressed, and in a fully associative cache, all blocks of the cache must be read and compared.
  • Such an address transformation unit is described, for example, in US Pat. No. 4,669,043.
  • Table stores the access address of the dpRAM for each address or address group of a block.
  • the significant address bits (index address) for the table are used as the address and the content is the access address of the dpRAM (FIG. 3).
  • a block is the number of bytes which, in the case of a cache miss (lack of the required data in the cache), are jointly fetched from the memory into the cache when an address from this area is read-accessed.
  • this bbck transfer can take place consecutively in several parts, or it can also be carried out in parallel.
  • the address bits significant for the block are transformed with the table and the remaining (low-order) address bits are adopted unchanged.
  • one of the two ports is set to a higher priority, i. it prevents that is written from both ports simultaneously. Only when the preferred port has performed the write operation may the other port write; if necessary, only one processor has write access for correspondingly allocated memory areas.
  • any write operation to a memory cell one can prevent the same memory cell from being read from the other port, or the read operation can be stored by pausing the read-to-write processor until the write operation is completed.
  • an address comparator of all address bits (251) shown in FIG. 2 is provided with a corresponding arbiter 252 which also evaluates the control signals of the processors and forms the output signals 213 and 223 which control these sequences.
  • Output signals 213 and 223 can each occupy three signal states in an advantageous embodiment: select, wait, equal.
  • select For a pure instruction cache is a Scrap access unnecessary; In this case, a signal state "equal" is sufficient for the output signals 213 and 223.
  • the date or command In the case of a cache miss, the date or command must be fetched from a program or data memory via the bus system.
  • the incoming data is forwarded to the execution unit and written to the cache in parallel with the identifier and control bits.
  • the address comparator prevents retrieving the date from the memory if there is no hit but a signal equal (constituent or state of 213 and 223) is displayed by the address comparator.
  • the signal equal is formed in the case of two-sided reading only of the significant address bits, because always the whole
  • Block is fetched from memory. Only when the block is cached can the waiting execution unit access the cache.
  • two separate dual port caches for data and for commands are provided, wherein in the latter usually no write operations are provided.
  • the address comparator only checks for equality of the significant address bits and provides the corresponding control signal "equal" in the signals 213 and 223, respectively.
  • the concurrent read access from both ports will only work fully if the requested data is in different address ranges that allow concurrent access. This can be saved in the hardware implementation expenses, because not all access mechanisms must be duplicated in memory.
  • the cache can be implemented in several sub-memory areas that can be operated independently of one another. Each partial memory allows only the execution of a port via select signals. In Figure 4, such a memory 230 is shown, which includes two partial storage areas 235 and 236.
  • the two select signals and the low-order address bits A 1-I ... A 0 are included.
  • the 4 select signals can be generated from two address bits, since each partial memory uniquely serves a specific address range.
  • the 2 address bits A + i and A 1 four partial memory areas can be addressed by generating the four select signals E 0 to E 3 corresponding to the binary significance in accordance with Table 1.
  • the partial memory designated by 260 in this particular embodiment is designed as a single-port RAM 280, the addresses, data and control signals of which are switched as required. Switching is accomplished by a control circuit 270 having floats of a multiplexer 275, depending on the select signals and other control signals 2901 and 2902 (e.g., read, write) from the respective ports. These signals are included together with the data and addresses in the signals 233 and 234, respectively, and are fed to the multiplexer 275 via 5281 and 5282, respectively, depending on the decision of the control circuit 270 corresponding to the output signal 2701 either 5281 or 5282 with the signals 2801 connects.
  • a direct addressing of the cache is assumed (direct-mapped) without limiting the generality. If there is a multi-associative cache organization, then either in units 275 the comparison must be valid and the cache-hit signal forwarded to the port or all data is sent via port 5331 and signal 233 to 231 and port 5332, respectively and forward signal 234 to 232 where the validity is checked.
  • the control circuit can make the forwarding of the signals 5281 or 5282 to 2801 and thus to the single port RAM 280 and also forward the data and other signals from 280 in the opposite direction. This is done in response to a valid select signal and the signals 233 and 234 and / or the order in which the ports cause a read or write operation to the memory 280 via these signals. If the read or write signals become active in the signals 233 and 234 at the same time, a previously defined port is first operated. This preferred port remains connected to 2801 even if no read or write signal is active. Alternatively, the preferred port can also be accessed dynamically by
  • Processor system are set, preferably depending on state information of the processor system.
  • This arrangement with a single port RAM is less expensive than a dual port RAM with parallel access, but delays the execution of at least one execution unit if a partial memory (also reading) is accessed at the same time.
  • This arrangement can also be extended to accesses of more than two processors:
  • a multi-port RAM can also be realized in the same way if the switching over of the addresses, data and control signals is provided step by step over several multiplexers (FIGS. 6 and 7). ,
  • Such a multi-port RAM 290 is shown in FIG. There, the port input signals 261, 262, ... 267 are decoded in the decoding devices 331, 332, ..337 to the signals 291, 292 ... 297. This decoding generates the select signals for the accesses to the individual RAMs in 281, 282 and 288.
  • FIG. 7 an embodiment for a sub-memory 28x (281 ... 288) is shown in more detail.
  • the select signals and control signals 3901, 3902, ... 3908 are processed from the control signals 291, 292 ... 298 to the output signals 3701, .. 3707.
  • These output signals each control one Multiplexer 375, depending on the signal value, the connections of the buses 381 or 382, to
  • the multiplexers 375 of Figure 7 in addition to the address, data and control signals, also connect the select signals of the next stages contained in 381, 382 ... 388. Furthermore, comparators can be included in 375, which determine the validity of the data read from the subareas in a multi-associative addressing mode. In a further advantageous embodiment, the connection of RAM areas to different execution units can be made dependent on one or more system states or configurations.
  • FIG. 8 shows an example of a configurable dual port cache for this purpose. To do this, the system or configuration signal 1000 is used in decoding the input signals for each of the two ports. Table 2 shows one way of changing the decoding in response to this signal 1000, designated M here.
  • FIG. 10 A further embodiment is shown in FIG. 10 when there is a multi-associative cache in which, from each sub-memory 281, 282,... 288, the data together with the identifier and the
  • Figure Bl shows a structure using the dual port cache for an asymmetric system structure with two execution units.
  • Bl 10 and Bl I l are the two execution units with their data / address and control signals B 120 and B 121.
  • BlOO is a switching and comparison unit (UVE).
  • This switching and comparison unit is shown in Figure B2 in its basic function for the application in conjunction with two execution units BIO and BI l.
  • Various output signals, such as data, control and address signals B20 and B21 of the execution units BIO and BI l are connected to the switching unit.
  • both output signals B40 and B41 which are each connected to one of the compensation units.
  • the switching unit contains at least one control register B 15 which has at least one binary symbol (bit) B 16 memory element which deactivates the mode of the comparison unit.
  • This bit B 16 can assume the two values 0 and 1 and can be set or reset by the signals B20 or B21 of the execution units or by internal processes of the switching unit.
  • the Umschalbit B 16 can be omitted if a permanent comparison mode is to be set.
  • this bit B 16 is set to the value 1, then the switching unit operates in comparison mode. In this mode, all incoming data signals from B20 will turn off with the data signals
  • switching unit of Figure B2 can be on one of the signals
  • B40 or B41 are waived if it is always ensured that the associated execution unit does not provide comparative data rather than the other execution unit. If the bit B 16 is not set, then the synchronization signals B40 and B41 and the error signal B 17 are always set to the value 0. There is no comparison and both execution units work independently in performance mode.
  • both execution units of FIG. 1 independently process programs, program parts or program segments.
  • Execution unit Bl 11 accesses cache B 105 via B 121, and the cache is connected to main memory or other memory devices via B 161.
  • the execution unit BI10 preferably also accesses the dual port cache via the device 106 (deactivated by the control signal Bl0l in this mode) and uses the second port of this cache for this purpose (see FIG. B3).
  • the switchover and comparison unit (UVE) B100 is inactive, i. no data is compared (B 16 not set).
  • the access of the execution unit BI10 via the cache can also be provided in a further embodiment via B160 directly to the main memory or other memory devices (see FIG. B4).
  • this further embodiment has the disadvantage that then the data in the cache are no longer consistent.
  • the corresponding block must then be invalidated in cache by resetting the valid bit, either by the processing unit BI10 itself, or independently by the cache, which detects by observing the bus B161 whether in one
  • Block that is present in the cache This process is also called bus snooping.
  • the further embodiment of Figure B3 is preferable because of the lower cost.
  • the comparison mode of the structure of Figure Bl is shown in detail in Figure B5. If this mode is activated by setting B 16 in the UVE B100, then both execution units start to execute the same program, which if necessary proceeds diversitively on the two execution units, ie uses different algorithms and / or commands for generating the data to be compared.
  • the BIlO execution unit outputs data that is to be compared with each other, with a corresponding identifier to the switching and comparison unit (UVE) BlOO.
  • This action causes the read request unit B 106 to store the control signals (e.g., write) and possibly additional tags (status or process information, processing cycle) to the memory element B 1061 and the associated address to a memory element B1062.
  • the unit B106 thereby triggers a read operation by means of the control signals (e.g., read) generated from B1061 in the control unit B 1064 and identifiers in B 1021 and the address signals B 1022 output from B 1062 at the port 2 of the dual port cache B 105.
  • the control signals e.g., read
  • the data value received is written to B 1063 via B 1023.
  • the validity of the data is indicated in the received control signals B 1024 (evaluation of the cache hit signal and the valid bit, and if valid, the data, addresses and appropriate control signals are provided via B1003, B1002 and BlOOl for comparison in B100
  • the identifier (control bits) returned with the data from the cache is compared with the current identifier. If the identifiers do not match, a read again is initiated at the same address in the cache Identifier together with the addresses, which may possibly also be used as an additional identifier, are released for comparison by means of suitable control signals B 1001.
  • a FIFO first in, first out refers to a memory unit which can store a plurality of data words and which also outputs the first stored data again first.
  • a synchronization of the two execution units can take place in that the execution unit Bl 11 stores the comparison data together with an identifier (address and additional control bits - for example valid bit, dirty bit, process ID) in the cache and before the comparison Validity is checked accordingly.
  • the stored address data and the valid bit are used to generate the cache hit signal.
  • the dirty bit only indicates whether the data of that block has been cached and not yet written back to main memory.
  • the process ID is understood to be an identification of the program execution, which is changed into the cache with each new write of valid data from Bl 11. This ensures that the timeliness of the data can be checked if the process ID, e.g. is set to a known value with the start of the comparison mode and then changed in a known manner, for example incremented.
  • Table 4 shows the internal structure of a cache. Each line corresponds to a data block.
  • the address tag is the part of the address that is relevant to access for a block and is compared to the address index on the current access. If there is a match and valid valid bit (part of the control bits), a cache hit signal is generated.
  • the data block can contain a few bytes to several KBytes of data.
  • the control bits are shown as an example in Table 5.
  • this value may be the hexadecimal value 0x0000 when the first comparison cycle begins.
  • This counter can then be incrementally incremented with each write of comparative data from Bl I l. be done. Comparative relevant means that you can specify based on the address and / or other control signals, whether the data is provided for comparison.
  • the counter B 1069 is to set with the activation of BlOl preferably to the same start value as the counter B 1059 and to increment with each Schreb- signal relevant data from Bl 10. If the process ID bits in the read block have the same or a higher value than the count of B 1069, then the
  • a further embodiment of the counter is also the storage of the low-order address bits (the address bits 0,..., K-1 according to FIG. 3 that are not relevant for the block addressing) as part of the process ID, while other process-ID bits are the cycle mark. If the word width is greater than one byte, the corresponding least significant bits are omitted. This makes it possible to recognize which word in the block was last written. For this purpose, in the program sequence, for example, either the data is always written with a continuous address, or one can make a unique assignment of the last written value of BlI l to the current comparison value of BI 10 using a look-up table with linear continuous program execution.
  • a further embodiment of the synchronization without the use of the counters B 1059 and B1069 consists in the transmission of a control signal B141 (eg interrupt) to the execution unit Bl 11 for requesting the comparison mode.
  • the execution unit B1 I l then begins after a known maximum time T with the execution of the program part in comparison mode.
  • the execution unit BI 10 is initialized accordingly and to the
  • the execution unit Bl 11 is to prevent the overwriting of the data not yet compared, if the data is e.g. be updated cyclically.
  • the resetting of the bit B16 may be e.g. also a
  • B 106 no further data for comparison are requested and the previous comparison operations are completed. As long as then B 141 is not set again, the execution unit Bl 11 operates in the performance mode. Overwriting of the data in the cache is thus possible again, but only after the renewed activation of B 141 is the comparison mode again initiated.
  • the signal B 141 is always active only for a short time in order to prepare the comparison mode by means of an interrupt. An overwriting of the data is then prevented until B 141 is set short again and is jumped by the thus triggered interrupt to the relevant program location, which provides the comparison data again.
  • All synchronization measures can be dispensed with after a start of the comparison, if it can be ensured by suitable measures that the time duration between the provision of comparison data by the execution unit B1 is always greater than that to compare the data with those required by BI 10, the data from Bl I l always at least at the same time or more than that of BI 10 and by temporarily storing the data from Bl 10 in B100 in a simple memory or FIFO the execution unit BI10 not the signal B140 must be stopped for synchronization purposes.
  • suitable measures that the time duration between the provision of comparison data by the execution unit B1 is always greater than that to compare the data with those required by BI 10, the data from Bl I l always at least at the same time or more than that of BI 10 and by temporarily storing the data from Bl 10 in B100 in a simple memory or FIFO the execution unit BI10 not the signal B140 must be stopped for synchronization purposes.
  • the dual port cache is not necessarily implemented with a dual port RAM, but a single port RAM B 1056 is used (see FIG. B7).
  • the two ports are serviced one after the other, depending on the request, by means of an access control B 1057 of which, however, only one access to the RAM has the signals B 1058.
  • readback by B 106 may be additionally delayed by one or more clocks in the case of access conflicts, but since the data are not supplied synchronously by both execution units in any case, this is not a nadir in various applications. It is only important that the execution unit Bl I l is equipped with higher prioritization and is thus not hindered in access.
  • the unit B 106 is not necessarily a separate unit, but may be in the UVE
  • BlOO or be integrated with the cache or execution unit together on a chip.
  • a cache with more than two ports according to FIG. 6 is available, i. a multi-port cache B205 can also be more than two processors, the data in one
  • Compare comparison mode or vote ie determine by majority vote the valid value. For each additional execution unit Bl 12,..., An additional read request unit B 107,... According to FIG. B8 is then also to be provided, and the UVE B200 must have a corresponding number of inputs for it.
  • comparison or voting mode The execution unit directly connected to the cache writes the date directly into the cache for comparison or voting. That of the other execution units Bl 10, Bl 12,..., Which first provides a date for comparison / voting, then requests the corresponding data via the connected read request unit B 106, B 107,... Via the connected port of the cache B205 , This execution unit transmits this status to the others
  • Execution units and the UVE by means of the signals B8105. After providing the data through the cache via B 102, B 104, ..., these are provided via B8105 to UVE B200 for comparison.
  • the comparison / voting takes place when all participating execution units have provided the corresponding data. If necessary, the other execution units must be stopped by this time via the control signals B 140, B 142, .... Time monitoring ensures that the comparison takes place within a tolerated time window, or an error is signaled.
  • RAM random access memory
  • FERAM programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable read-only memory
  • MRAM magnetic resonance RAM
  • FERAM programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable programmable

Landscapes

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

Abstract

Vorrichtung und Verfahren zur Speicherung von Daten und/oder Befehlen in einem Rechnersystem mit wenigstens zwei Ausführungseinheiten und wenigstens einem ersten Speicher oder Speicherbereich für Daten und/oder Befehle, wobei Umschaltmittel vorgesehen sind und zwischen wenigstens zwei Betriebsmodi umgeschaltet wird, wobei Vergleichsmittel vorgesehen sind und ein erster Betriebsmodus einem Vergleichsmodus und ein zweiter Betriebsmodus einem Performanzmodus entspricht, dadurch gekennzeichnet, dass in der Vorrichtung ein zweiter Speicher oder Speicherbereich enthalten ist, wobei die Vorrichtung als Cachespeichersystem ausgebildet ist und mit wenigstens zwei getrennten Ports ausgestattet ist, wobei ein Port direkt mit einer ersten Ausführungseinheit verbunden ist und zwischen dem zweiten Port und der wenigstens zweiten Ausführungseinheit eine dritte Einrichtung enthalten ist, die derart ausgestaltet ist, dass ein Zugriff der zweiten Ausführungseinheit auf den zweiten Speicher oder Speicherbereich über die dritte Einrichtung erfolgt.

Description

Vorrichtung und Verfahren zur Speicherung von Daten und/oder Befehlen in einem
Rechnersystem mit wenigstens zwei Ausführungseinheiten und wenigstens einem ersten Speicher oder Speicherbereich für Daten und/oder Befehle
Die vorliegende Erfindung bezieht sich auf Mikroprozessorsysteme mit schnellem Zwi- schenspeicher (Cache) und beschreibt in diesem Kontext einen dual port Cache und insbesondere seine Anwendung für eine Anwendung in einem Datenverarbeitungssystem mit mindestens zwei Ausführungseinheiten, die wahlweise voneinander unabhängig arbeiten oder die gleichen Aufgaben bearbeiten.
Stand der Technik
Bei einer Multiprozessorarchitektur, in der mehrere Ausführungseinheiten (Cores, Prozessoren) in variabler Weise, d.h. in verschiedenen Betriebsmodi miteinander zusammenarbeiten (wie z.B. in der DE 103 32 700 Al beschrieben), soll die Umschaltung zwischen den mindestens zwei verschiedenen Modi durch Befehle erfolgen können und bei der Bearbeitung gleicher Aufgaben soll es möglich sein, die erzeugten Daten miteinander zu vergleichen.
Prozessoren werden mit Caches ausgerüstet, um den Zugriff zu Instruktionen und Daten zu beschleunigen. Das ist bei der ständig wachsenden Datenmenge einerseits und der zunehmenden Komplexität der Datenverarbeitung mit immer schneller arbeitenden Prozessoren andererseits notwendig. Durch einen Cache wird der langsame Zugriff auf einen großen (Haupt-) Speicher teilweise vermieden und der Prozessor muss dann nicht auf die Bereitstellung der Daten warten. Es sind sowohl Caches ausschließlich für Befehle als auch ausschließlich für Daten bekannt, aber auch "Unified Caches", bei denen sowohl Daten als auch Instruktionen in demselben Cache abgelegt werden. Bekannt sind auch Systeme mit mehreren Levels (Hierarchiestufen) von Caches. Solche mehrstufigen Caches werden eingesetzt, um mit abgestuften Speichergrößen und verschiedenartigen Adressierungsstrategien der Caches auf den verschiedenen Levels eine optimale Anpassung der Geschwindigkeiten zwischen Prozessor und dem (Haupt-) Speicher vorzunehmen. Bei einem Multiprozessorsystem ist es üblich, jeden Prozessor mit einem Cache o- der bei Multi-Level Caches mit entsprechend mehreren Caches auszurüsten. Es sind aber auch Systeme bekannt, in denen mehrere Caches existieren, die von verschiedenen Prozessoren adressierbar sind, wie zum Beispiel im US Patent 4345309 beschrieben.
In so einem System, ohne die hier beschriebene Erfindung, ist die Einheit zum Vergleich erzeugten Daten (der Vergleicher) in einer möglichen Ausführung nach den Caches angeordnet. Das führt dazu, dass die Daten erst beim Rückschreiben vom Cache in den Hauptspeicher verglichen werden können, was zu verzögerter Bewertung der Gültigkeit von Daten führen kann Ordnet man andererseits den Vergleicher zwischen den Ausführungseinheiten und dem Cache an, so wird der Datentransfer zwischen Ausführungseinheit und Cache durch die höhere elektrische Belastung der Signale verlangsamt.
Aufgabe der Erfindung ist sicherzustellen, dass ein Vergleich der Daten zeitnah mit der Abspei- cherung in den Cache und unabhängig vom Zeitpunkt des Rückschreibens in den Hauptspeicher stattfinden kann. Dabei soll der Datentransfer zwischen mindestens einer Ausführungseinheit und dem Cache nicht durch höhere elektrische Busbelastung beeinträchtigt werden.
Vorteile der Erfindung
Eine Realisierung eines Dual Port Cache-Speichers ist wegen des erhöhten Hardwareaufwandes in bekannten Prozessorsystemen mit einer oder mehreren Ausführungseinheiten (Single- oder Mehrfachcores) nicht nahe liegend. Bei einer Multiprozessorarchitektur, in der mehrere Ausführungseinheiten (Cores, Prozessoren) in variabler Weise, d.h. in verschiedenen Betriebsmodi mi- einander zusammenarbeiten (wie z.B. in der DE 10332 700 Al beschrieben), kann eine dual port Cache Architektur vorteilhaft eingesetzt werden. Der wesentliche Vorteil gegenüber Multi- prozessorsystemen mit mehreren Caches besteht darin, dass bei einer Umschaltung zwischen den Betriebsmodi des Multiprozessorsystems der Inhalt des Caches nicht gelöscht oder fiir ungültig erklärt werden muss, weil die Daten nur einmal abgelegt werden und deshalb auch nach einer Umschaltung konsistent bleiben.
Von Vorteile wäre deshalb eine Ausführung, bei der zumindest fiir eine Ausfiihrungseinheit durch eine direkte Verbindung mit dem Cache der Datentransfer in diesem Hochgeschwindg- keitsbereich mit hoher Datenrate ungehindert erfolgt und trotzdem ein unverzögerter Vergleich direkt nach dem Ablegen der Daten im Cache erfolgen kann. Dazu dient der zweite Port dieses Caches, an dem die Daten zu einem Vergleich zurückgelesen werden.
Ein Dual Port Cache in einem Multiprozessorsystem mit mehreren Betriebsmodi hat den Verteil, dass die Daten/Befehle nicht mehrfach in den Cache geholt und ggf. gepflegt werden müssen. Weiterhin muss nur ein Speicherplatz pro Datum/Befehl hardwaremäßig bereitgestellt wσ- den, auch wenn dieses Datum bzw. dieser Befehl von mehreren Ausführungseinheiten benutzt wird. Darüber hinaus müssen die Daten bei verschiedenen Betriebsmodi des Multiprozessorsystems nicht dahingehend unterschieden werden, in welchem Modus sie bearbeitet oder geholt wurden. Ein besonderer Vorteil ist, dass der Cache bei Wechsel des Betriebsmodus nicht gelöscht werden muss. Bei einem Dual Port Cache können zwei Prozessoren gleichzeitig zu den gleichen Daten/Befehlen lesend zugreifen. Ein besonderer Vorteil ist weiterhin, dass anstelle des „write through" Modus auch ein „write back" Modus für den Cache eingesetzt werden kann.
Durch diese Methode muss nicht ständig der (Haupt-) Speicher aktualisiert werden, sondern erst beim Überschreiben der Daten im Cache. Es gibt dabei keine Konsistenzprobleme, weil der Cache fiir beide Prozessoren die Daten aus der gleichen Quelle liefert und auch der Vergleichszeitpunkt der Daten ist davon nicht betroffen, weil der Vergleich unabhängig von dem Rück- schreiben in den Hauptspeicher erfolgt.
Eine asymmetrische Dual Port Cache Struktur, wie hier erfindungsgemäß vorgeschlagen, hat insbesondere den Vorteil, dass das Schreiben der Daten in den Cache zumindest für eine Ausfiihrungseinheit nicht behindert wird, aber andererseits mit dem Vergleich nicht gewartet wer- den muss, bis die Daten aus dem Cache in den Haut-Speicher geschrieben werden. Dadurch ist es möglich, dass die Daten erst dann Blockweise in den Hauptspeicher zurückgeschrieben werden, wenn der Block im Cache durch einen anderen Block ersetzt wird („write back" modus). - A -
Das verringert die Datenrate auf dem Bus zwischen Cache und Hauptspeicher im Vergleich zu dem „write through" Modus, bei dem fiir jede Aktualisierung eines Datums im Cache auch gleich das
entsprechende Datum im Hauptspeicher geändert wird. Die Aktualisierung erfolgt hier zwar nicht Blockweise, sondern nur das geänderte Datum wird parallel in den Hauptspeicher übertragen. Trotzdem ist die Busbelastung zum Hauptspeicher (im Sinne des Datentransfers) höher, weil mit jedem Schreibbefehl auch dieser Bus belegt wird.
Bei einem „write back" Modus arbeiten die Ausführungseinheiten nur mit dem Cache zusammen, solange die Daten dort verfügbar sind. Beim Schreiben einer Ausführungseinheit in dem Cache wird dazu das Dirty-Bit gesetzt, das anzeigt, dass die Daten des Blocks nicht mehr mit dem Hauptspeicher übereinstimmen. Sofern die beteiligten Ausführungseinheiten mit dem gemeinsamen Cache arbeiten, braucht das Datum im Hauptspeicher aber nicht aktualisiert werden, solange der betreffende Block im Cache bleibt. Es können dazu mehrere Datenworte auch mehrfach geändert werden, ohne die Datenkonsistenz der Ausführungseinheiten zu beeinträchtigen.
Vorteilhaft ist eine Vorrichtung zur Speicherung von Daten und/oder Befehlen in einem Rechnersystem mit wenigstens zwei Ausführungseinheiten und wenigstens einem ersten Speicher oder Speicherbereich für Daten und/oder Befehle, wobei Umschaltmittel vorgesehen sind und zwischen wenigstens zwei Betriebsmodi umgeschaltet wird, wobei Vergleichsmittel vorgesehen sind und ein erster Betriebsmodus einem Vergleichsmodus und ein zweiter Betriebsmodus einem Performanzmodus entspricht, dadurch gekennzeichnet, dass in der Vorrichtung ein zweiter Speicher oder Speicherbereich enthalten ist, wobei die Vorrichtung als Cachespeichersystem ausgebildet ist und mit wenigstens zwei getrennten Ports ausgestattet ist, wobei ein Port direkt mit einer ersten Ausführungseinheit verbunden ist und zwischen dem zweiten Port und der wenigstens zweiten Ausführungseinheit eine dritte Einrichtung enthalten ist, die derart ausgestaltet ist, dass ein Zugriff der zweiten Ausführungseinheit auf den zweiten Speicher oder Speicherbereich über die dritte Einrichtung erfolgt. Vorteilhaft ist weiterhin eine solche Vorrichtung, dadurch gekennzeichnet, dass in den Um- schaltmitteln und/oder den Vergleichsmitteln wenigstens ein Speichermittel vorhanden ist und die Umschaltung durch wenigstens ein Bit in den Speichermitteln erfolgt.
Vorteilhaft ist weiterhin eine solche Vorrichtung, dadurch gekennzeichnet, dass die Umschaltung durch wenigstens ein zum Rechnersystem externes oder internes Signal erfolgt.
Vorteilhaft ist weiterhin eine solche Vorrichtung, dadurch gekennzeichnet, dass im Perfor- manzmodus die dritte Einrichtung der direkt angeschlossenen Ausführungseinheit einen Lese- und Schreibzugriff zu der zweiten Speichereinrichtung über den angeschlossen Port gewährleistet.
Vorteilhaft ist weiterhin eine solche Vorrichtung, dadurch gekennzeichnet, dass in dem Cachespeichersystem mindestens ein Zähler vorhanden ist, der bei jedem Abspeichern vergleichsreb- vanter Daten von der ersten Ausführungseinheit über den ersten Port dieses Speichers der Zäh- ler inkrementiert oder dekrementiert wird.
Vorteilhaft ist weiterhin eine solche Vorrichtung, dadurch gekennzeichnet, dass der Zähler bei dem Umschalten in den Vergleichsmodus auf dem entsprechenden angeschlossenen Port den Zählerwert ausgibt und dieser in der dritten Einheit gespeichert wird.
Vorteilhaft ist weiterhin eine solche Vorrichtung, dadurch gekennzeichnet, dass ein zweiter Zähler in der dritten Einrichtung vorgesehen ist und der Zählerwert des Zählers zum Setzen des zweiten Zählers der dritten Einheit benutzt wird.
Vorteilhaft ist ein Verfahren zur Speicherung von Daten und/oder Befehlen in einem Rechnersystem mit wenigstens zwei Ausführungseinheiten und wenigstens einem ersten Speicher oder Speicherbereich für Daten und/oder Befehle beschrieben, wobei Umschaltmittel vorgesehen sind und zwischen wenigstens zwei Betriebsmodi umgeschaltet wird, wobei Vergleichsmittel vorgesehen sind und ein erster Betriebsmodus einem Vergleichsmodus und ein zweiter Be- triebsmodus einem Performanzmodus entspricht, dadurch gekennzeichnet, dass ein zweiter
Speicher oder Speicherbereich vorgesehen ist, welcher in einem Cachespeichersystem enthalten ist und mit wenigstens zwei getrennten Ports ausgestattet ist, wobei die erste Ausführungsein- heit direkt auf den zweiten Speicher oder Speicherbereich über einen ersten Port zugreift und die zweite Ausfiihrungseinheit über eine dritte Einrichtung auf den zweiten Speicher oder Speicherbereich zugreift.
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass die dritte Einrichtung Speichermittel enthält, in denen Daten und/oder Signale von der angeschlossenen Ausführungseinheit gespeichert werden können und, wobei die dritte Einheit unabhängig von dem Zustand dieser besagten Ausführungseinheit Daten mit dem zweiten Speicher oder Speicherbereich aus- tauschen kann
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass die dritte Einrichtung Daten und/oder Adressen und/oder Steuersignale von der zweiten Verarbeitungseinrichtung erhält und daraufhin auf die entsprechenden Daten in des zweiten Speichers oder Speicherberei- ches lesend oder schreibend zugreift.
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass das Cachespeichersystem über das Vorhandensein der Daten entscheidet und im Falle des NichtVorhandenseins ein Signal an die dritte Einrichtung sendet.
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass die Daten und/oder Befehle in der dritten Einheit auf ihre Gültigkeit geprüft werden und im Falle der Gültigkeit weitergeleitet werden.
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass die Gültigkeit anhand von mit den Daten und/oder Befehlen abgespeicherten Zusatzinformationen geprüft wird.
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass mit dem Umschalten in den Vergleichsmodus Synchronisationssignale an die betreffenden Ausführungseinheiten aus- gesendet werden. Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass im Falle eines Vergleichs und einer Abweichung der zu vergleichenden Daten ein Fehler signalisiert wird.
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass im Falle eines Votings und einer Abweichung mindestens eines Datums aus der zu votenden Daten der Status und/oder ein Fehler signalisiert wird.
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass in dem Cachespeichersystem ein Zähler vorgesehen ist und der Zähler bei dem Umschalten in den Vergleichsmodus auf dem entsprechenden angeschlossenen Port den Zählerwert ausgibt und dieser in der dritten
Einheit gespeichert wird.
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass ein zweiter Zähler in der dritten Einrichtung vorgesehen ist und der Zählerwert des Zählers zum Setzen des zweiten Zählers der dritten Einheit benutzt wird.
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass die im Cachespeichersystem vorhandenen Zähler einem Port zugeordnet ist und beim Einschalten des Vergleichsmodus in der dem jeweiligen Port angeschlossenen Verarbeitungseinrichtung auf einen festen Wert gesetzt wird.
Weitere Vorteile und vorteilhafte Ausgestaltungen ergeben sich aus den Merkmalen der Ansprüche sowie der Beschreibung.
Figuren und Tabellen
Figur 1 zeigt einen Dual Port Cache für Daten und/oder Befehle.
Figur 2 zeigt einen Dual Port Cache mit Details.
Figur 3 zeigt eine Transformationstabelle von 214 bzw. 224. Figur 4 zeigt eine Aufteilung des dpRAM in zwei Teilbereiche, die unabhängig voneinander betrieben werden können und mit je zwei separaten select-Signalen von jedem Port im Zugriff gesteuert werden.
Tabelle 1 beschreibt die Erzeugung von 4 select-Signalen aus 2 Adressbits mittels De- codierung
Figur 5 zeigt eine Realisierung eines dual port RAM-Bereiches durch einen single port RAM mittels Portumschaltung.
Figur 6 zeigt eine Einteilung eines Multiple port RAM mit p Ports in mehrere Teil-
Adressbereiche l...q, die parallel bearbeitet werden können.
Figur 7 zeigt eine Realisierung eines multi port RAM-Bereiches durch einen single port RAM mittels Portumschaltung.
Figur 8 zeigt eine Aufteilung der RAM-Bereiche für die Ports in Abhängigkeit von einem Systemzustand oder einer Konfiguration.
Tabelle 2 beschreibt die Erzeugung von je zwei select-Signalen an jedem Port aus einem
Adressbit unter Berücksichtigung von einem Systemzustands- oder Konfigurationssignal.
Tabelle 3 beschreibt die Erzeugung von je zwei select-Signalen an jedem Port aus einem
Adressbit unter Berücksichtigung von einem Systemzustands- oder Konfigurationssignal in einer anderen Ausfuhrungsform.
Figur 9 zeigt eine Aufteilung eines multi port RAMs in Bereiche in Abhängigkeit von einem Systemzustand oder einer Konfiguration durch Generierung der entsprechende Select-Signale.
Figur 10 zeigt eine Aufteilung eines multi port RAMs in Bereiche mit mehrfachassoziativem Zugriff.
Figur Bl zeigt das Grundprinzip der asymmetrischen DCSL Architektur mit dual port
Cache.
Figur B2 zeigt das Grundprinzip einer Umschalt- und Vergleichseinheit für zwei Ausführungseinheiten.
Figur B3 zeigt eine Leseanforderungseinheit B 106 im inaktiven Zustand
Figur B4 zeigt einen alternativen Zugriff einer Ausführungseinheit zum Speicher ohne
Cache durch eine Umschalt- und Vergleichseinheit falls ein Vergleichsbit nicht gesetzt ist. Figur B5 zeigt eine Leseanforderung an einen Cache durch eine Einheit falls ein Vergleichsbit gesetzt und Daten von einer Ausführungseinheit BI lO ausgegeben werden.
Tabelle 4 beschreibt den Aufbau eines Caches. Tabelle 5 erläutert eine mögliche Gestaltung eines Control-Bits.
Figur B7 zeigt einen Dual Port Cache durch Single Port RAM und einer Zugriffssteuerung.
Figur B8 zeigt die Grundstruktur einer asymmetrischen Datenverarbeitungseinheit mit der Umschaltmöglichkeit zwischen mehreren Modi und einem multi-Port Ca- che.
Beschreibung der Ausführungsbeispiele
Als Ausführungseinheit kann im Folgenden sowohl ein Prozessor, ein Core, eine CPU, als auch eine FPU (Floating Point Unit), ein DSP (Digitaler Signalprozessor), ein Coprozessor oder eine
ALU (Arithmetic logical Unit) bezeichnet werden.
Der Dual Port Cache 200 gemäß Figur 1 besteht zu einem wesentlichen Teil aus einem Dual Port RAM (dpRAM, 230). Dieser dpRAM 230 ist vorzugsweise mit zwei voneinander unäb- hängigen Adressdecodern, zwei Daten Schreib-/Lese - Stufen und im Unterschied zu einer einfachen Speicherzellen-Matrix auch mit duplizierten Wort- und Bitleitungen versehen, so dass zumindest der Lesevorgang für beliebige Speicherzellen des dpRAMs von beiden Ports gleichzeitig erfolgen kann. (Sinngemäß gilt aber die Anordnung auch, wenn nicht alle Zugriffselemente dupliziert sind und der dpRAM deshalb nur bedingt gleichzeitig über beide Ports zugreif bar ist.) Unter einem dual Port RAM wird deshalb jeder RAM verstanden, der über zwei Ports 231 und 232 verfügt, die unabhängig voneinander benutzt werden können, ohne in Betracht zu ziehen, wie viel Zeit zur Abarbeitung einer Anforderung zum Lesen oder Schreiben von diesem Port benötigt wird, d.h. wie lange es dauert, bis der angeforderte Lese- oder Schreibvorgang auch ggf. in Wechselwirkung mit Anforderungen von dem anderen Port abgeschlossen ist. Die beiden Ports des dpRAM sind über die Signale 201 bzw. 202 mit den Einrichtungen 210 bzw.
220 verbunden, die eine Prüfung der ankommenden Adressen, Daten und Steuersignale 211 bzw. 221 von unabhängigen Ausführungseinheiten 215 und 225 vornehmen und optional die Adressen transformieren. Die Daten werden beim Lesen je nach Port über 201 durch 210 auf 211 oder über 202 durch 220 auf 221 ausgegeben bzw. in jeweils umgekehrter Richtung von den Ausführungseinheiten in den Cache-Speicher geschrieben. Beide Ports des dpRAM sind über die Signale 201 und 202 mit einer Buszugriffssteuerung 240 verbunden, die mit Signalen 241 verbunden ist, die die Verbindung zu einem hier nicht dargestellten (Haupt-)Speicher oder zu einem Cache der nächsten Stufe herstellen.
In Figur 2 sind die Einheiten 210, 220 und 250 detaillierter beschrieben. Beim Zugriff auf den Dual Port Cache werden die in den Signalen 211 und 221 enthaltenen Adressen 212 und 222 der Ausführungseinheiten 215 und 225 in einem Adresscomparator 251 der Einrichtung 250 miteinander verglichen und zusammen mit den in 211 und 221 ebenfalls übermittelten Steuersignalen auf Verträglichkeit geprüft. Im Falle eines Konfliktes wird mittels der Steuersignale, die in den Signalen 213 oder 223 enthalten sind, der Zugriff auf den dual Port RAM 230 verhindert. Sd- che Konflikte können sein, dass beide Ausführungseinheiten auf die gleiche Adresse schreiben wollen oder dass eine Ausführungseinheit schreibt während die andere von der gleichen Adresse lesen will.
Der Cache kann teilweise oder vollständig assoziativ ausgeführt sein, d.h. die Daten können an mehreren oder gar beliebigen Stellen des Caches abgelegt sein. Um den Zugriff auf den dpRAM zu ermöglichen, muss dazu erst die Adresse ermittelt werden, über die auf die gewünschten Daten/Befehle zugegriffen werden kann. Je nach Adressierungsmodus wird eine oder werden mdi- rere Blockadressen ausgewählt, an denen das Datum im Cache gesucht wird. Alle diese Blöcke werden gelesen und die mit den Daten im Cache abgespeicherte Kennung wird mit der Index- Adresse (Teil der Original- Adresse) verglichen. Bei Übereinstimmung und nach der zusätzϊ- chen Überprüfung der Gültigkeit mit Hilfe der ebenfalls im Cache zu jedem Block abgespeicherten Controlbits (z.B. Valid-Bits, Dirty-Bits und Prozess-ID) wird ein Cache Hit Signal erzeugt, das die Gültigkeit anzeigt.
Zur Adresstransformation wird vorzugsweise eine Tabelle eingesetzt, die in einer in Figur 2 dar- gestellten Speichereinheit 214 bzw. 224 (Register oder RAM, auch als TAG-RAM bezeichnet) angeordnet ist und sich in den Einheiten 210 bzw. 220 befindet. Die Tabelle ist eine Adress- transformationseinheit, die sowohl die virtuelle Adresse in eine physikalische Adresse umwan- delt als auch im Falle eines direct-mapped Cache die genaue (eindeutige) Cache-Zugriffsadresse liefert; bei einer mehrfach assoziativen Cacheorganisation werden mehrere Blöcke angesprochen und bei einem vollständig assoziativen Cache müssen alle Blöcke des Caches gelesen und verglichen werden. Eine solche Adresstransformationseinheit ist z.B. im US Patent 4669043 beschrieben.
Zum Beispiel wird in der o. g. Tabelle zu jeder Adresse bzw. Adressgruppe eines Blocks die Zugriffsadresse des dpRAMs hinterlegt. In der in Figur 3 dargestellten Adressierungsart werden dazu entsprechend der Blockgröße des Caches die signifikanten Adressbits (Index- Adresse) für die Tabelle als Adresse benutzt und der Inhalt ist die Zugriffsadresse des dpRAMs (Figur 3).
Als Block bezeichnet man dabei die Anzahl der Bytes, die im Falle eines Cache Miss (Fehlen der erforderlichen Daten im Cache) gemeinsam aus dem Speicher in den Cache geholt werden, wenn auf eine Adresse aus diesem Bereich lesend zugegriffen wird. Dieser Bbcktransfer kann je nach Hardwarerealisierung in mehreren Teilen zeitlich nacheinander passieren, oder auch pa- rallel durchgeführt werden.
Für den byte- oder Wortweisen Zugriff zum Cache werden die für den Block signifikanten Adressbits mit der Tabelle transformiert und die restlichen (niederwertigen) Adressbits unverändert übernommen.
Für den Schreibvorgang wird beispielsweise einem der beiden Ports eine höhere Priorität eingerichtet, d.h. es wird verhindert, dass gleichzeitig von beiden Ports geschrieben wird. Erst wenn der bevorzugte Port die Schreiboperation ausgeführt hat, darf der andere Port schreiben; ggf. hat auch nur ein Prozessor Schreibrechte für entsprechend zugeordnete Speicherbereiche. Ebenso kann man bei einer beliebigen Schreiboperation auf eine Speicherzelle verhindern, dass die gleiche Speicherzelle vom jeweils anderen Port gelesen wird, oder die Leseoperation kann verä- gert werden, indem der Prozessor mit Lesewunsch solange angehalten wird, bis die Schreiboperation abgeschlossen ist. Dazu ist ein in Figur 2 dargestellter Adresscomparator aller Adressbits (251) mit einem entsprechenden Arbiter 252 vorgesehen, der auch die Steuersignale der Prozes- soren auswertet und die Ausgangssignale 213 und 223 bildet, die diese Abläufe steuern. Die
Ausgangssignale 213 und 223 können in einer vorteilhaften Ausführung jeweils drei Signalzustände einnehmen: select, wait, equal. Für einen reinen Instruktionscache ist ein Schrebzugriff nicht notwendig; in diesem Fall reicht ein Signalzustand "equal" fiir die Ausgangssignale 213 und 223 aus.
Im Falle eines Cache Miss muss das Datum bzw. der Befehl über das Bussystem aus einem Pio- gramm- oder Datenspeicher geholt werden. Die ankommenden Daten werden zur Ausführungs- einheit weitergeleitet und werden parallel zusammen mit der Kennung und den Controlbits in den Cache geschrieben. Auch hier verhindert der Adresscomparator das nochmalige Holen des Datums vom Speicher, wenn kein Hit vorliegt aber ein Signal equal (Bestandteil oder Zustand von 213 und 223) vom Adresscomparator angezeigt wird. Das Signal equal wird im Falle des beidseitigen Lesens nur von den signifikanten Adressbits gebildet, weil immer der gesamte
Block aus dem Speicher geholt wird. Erst wenn der Block im Cache gespeichert ist, kann die wartende Ausführungseinheit auf den Cache zugreifen.
In einer weiteren vorteilhaften Ausführung werden zwei getrennte Dual Port Caches für Daten und für Befehle vorgesehen, wobei im letzteren üblicherweise keine Schreibvorgänge vorzusehen sind. Der Adress-Comparator prüft in diesem Fall immer nur auf Gleichheit der signifikanten Adressbits und stellt das entsprechende Steuersignal "equal" in den Signalen 213 bzw. 223 bereit.
In einem weiteren Ausführungsbeispiel wird der gleichzeitige Lese-Zugriff von beiden Ports nur dann uneingeschränkt funktioniert, wenn die angeforderten Daten in verschiedenen Adressbereichen vorliegen, die den gleichzeitigen Zugriff ermöglichen. Dadurch können bei der Hardware-Realisierung Aufwendungen gespart werden, weil nicht alle Zugriffs-Mechanismen im Speicher dupliziert werden müssen. Beispielsweise kann der Cache in mehreren Teilspeicherbe- reichen realisiert werden, die unabhängig voneinander betrieben werden können. Jeder Teilspeicher ermöglicht über select-Signale nur die Abarbeitung eines Ports. In Figur 4 ist ein solcher Speicher 230 gezeigt, der zwei Teilspeicherbereiche 235 und 236 beinhaltet. In dem hier gezeigten Ausführungsbeispiel werden aus einem Adressbit A die zwei Select-Signale E0 und Ei derart gebildet, dass für den Fall A
Figure imgf000014_0002
=O E0=I und gilt und für den Fall A=I E0=O und
Figure imgf000014_0001
gilt. In den Signalen 233 und 234 sind dann die beiden select-Signale und die niederwertigen Adressbits A1-I ... A0 enthalten. Für ein weiteres Ausfiihrungsbeispiel mit vier Teilspeichern können die 4 select-Signale aus zwei Adressbits generiert werden, da jeder Teilspeicher eindeutig einen bestimmten Adressbereich bedient. So können beispielsweise mit den 2 Adressbits A+i und A1 vier Teilspeicherbereiche angesprochen werden, indem die vier select-Signale E0 bis E3 entsprechend der binären Wertigkeit gemäß Tabelle 1 generiert werden.
Für die in Figur 4 gezeigten Teilspeicher 235 und 236 ist in Figur 5 ein Ausfiihrungsbeispiel dargestellt. Der dort mit 260 bezeichnete Teilspeicher ist in dieser besonderen Ausführung als Single Port RAM 280 ausgeführt, dessen Adressen, Daten und Steuersignale je nach Anforde- rung umgeschaltet werden. Die Umschaltung wird durch eine Steuerschaltung 270 mit Hufe eines Multiplexers 275 vorgenommen, abhängig von den select-Signalen und anderer Steuersignale 2901 bzw. 2902 (z.B. read, write) von den entsprechenden Ports. Diese Signale sind ai- sammen mit den Daten und Adressen in den Signalen 233 bzw. 234 enthalten und werden über 5281 bzw. 5282 an den Multiplexer 275 geführt, der je nach Entscheidung der Steuerschaltung 270 entsprechend dem Ausgangssignal 2701 entweder 5281 oder 5282 mit den Signalen 2801 verbindet. In diesem Beispiel wird ohne Einschränkung der Allgemeinheit von einer direkten Adressierung des Caches ausgegangen (direct-mapped). Falls eine mehrfach-assoziative Cacheorganisation vorliegt, muss entweder in den Einheiten 275 noch der Vergleich auf Gültigkeit stattfinden und das Cach-hit Signal zum Port weitergeleitet werden oder alle Daten werden über den Port 5331 und das Signal 233 zu 231 bzw. über den Port 5332 und das Signal 234 zu 232 weitergeleitet, wo die Gültigkeit geprüft wird.
Die Steuerschaltung kann dabei die Weiterschaltung der Signale 5281 bzw. 5282 auf 2801 und damit zum Single Port RAM 280 vornehmen und auch die Daten und anderen Signale von 280 in die entgegengesetzte Richtung weiterleiten . Dies geschieht in Abhängigkeit eines gültigen select-Signals und der Signale 233 und 234 und/oder der Reihenfolge, in welcher die Ports über diese Signale eine Lese- oder Schreib-Operation mit dem Speicher 280 veranlassen. Werden in den Signalen 233 und 234 gleichzeitig die Lese- oder Schreibsignale aktiv, so wird ein zuvor definierter Port zuerst bedient. Dieser Vorzugsport bleibt auch dann mit 2801 verbunden, wenn kein Lese- oder Schreibsignal aktiv ist. Der Vorzugsport kann alternativ auch dynamisch vom
Prozessorsystem festgelegt werden, vorzugsweise abhängig von Zustandsinformationen des Prozessorsystems. Diese Anordnung mit einem Single Port RAM ist kostengünstiger als ein Dual Port RAM mit paralleler Zugriffsmöglichkeit, verzögert aber die Abarbeitung mindestens einer Ausführungs- einheit, wenn gleichzeitig zu einem Teilspeicher (auch lesend) zugegriffen wird. Je nach An- wendung ist es nun möglich, verschiedene Aufteilungen der RAM-Teilbereiche so vorzunehmen, dass zusammen mit der Gestaltung der Befehlsabläufe und der Datenzugriffe von den ui- terschiedlichen Ausführungseinheiten möglichst wenig gleichzeitige Zugriffe zu gleichen Teil- RAM-Bereichen auftreten. Diese Anordnung ist auch erweiterbar auf Zugriffe von mehr als zwei Prozessoren: Es ist in gleicher Weise auch ein Multi-Port RAM realisierbar, wenn die Um- Schaltung der Adressen, Daten und Steuersignale über mehrere Multiplexer stufenweise nacheinander vorgesehen wird (Figuren 6 und 7).
Ein solches Multi Port RAM 290 ist in Figur 6 dargestellt. Dort werden die Port- Eingangssignale 261, 262,...267 in den Decodiereinrichtungen 331, 332, ..337 zu den Signalen 291, 292 ...297 decodiert. Diese Decodierung erzeugt die select-Signale für die Zugriffe zu den einzelnen RAMs in 281, 282 und 288. In Figur 7 ist ein Ausführungsbeispiel für einen Teilspeicher 28x (281 ... 288) näher gezeigt. Dort werden in einer ersten Stufe der Steuereinrichtungen 370 die select-Signale und Steuersignale 3901, 3902, ... 3908 aus den Steuersignalen 291, 292 ... 298 verarbeitet zu den Ausgangssignalen 3701,.. 3707. Diese Ausgangssignale steuern je ei- nen Multiplexer 375 an, der je nach Signalwert die Verbindungen der Busse 381 oder 382, bis
387 oder 388 mit den Signalen 481 ...488 herstellt. In weiteren Stufen sind ähnliche Steuereinrichtungen 370 und Multiplexer 375 entsprechend geschaltet bis in einer letzten Stufe die Signale 5901 und 5902 für die Steuereinrichtung benutzt werden. Das Ausgangssignal 5701 verbindet dann entweder 581 oder 582 mit 681, das mit dem Single Port RAM verbunden ist.
Im Gegensatz zu den Multiplexern 275 von Figur 5 verbinden die Multiplexer 375 von Figur 7 neben den Adress-, Daten- und Steuersignalen auch die select-Signale der nächsten Stufen, die in 381, 382 ... 388 enthalten sind. Weiterhin können in 375 Vergleichseinrichtungen enthalten sein, die bei einer mehrfach-assoziativen Adressierungsart die Gültigkeit der aus den Teilberei- chen gelesenen Daten ermitteln. In einer weiteren vorteilhaften Ausführung kann die Zuschaltung von RAM-Bereichen zu verschiedenen Ausfuhrungseinheiten von einem oder mehreren Systemzuständen oder Konfigurationen abhängig gemacht werden. In Figur 8 ist dazu ein Beispiel für einen konfigurierbaren Dual Port Cache gezeigt. Dazu wird das System- oder Konfigurationssignal 1000 bei der Deco- dierung der Eingangssignale für jeden der zwei Ports benutzt. Tabelle 2 zeigt eine Möglichkeit der Veränderung der Decodierung in Abhängigkeit von diesem Signal 1000, das hier mitM bezeichnet ist. Ist M=O, so liegt zum Beispiel ein Vergleichsmodus vor, in dem beide Ports Zugriff auf den gesamten Cache haben. Wird aber M=I (z.B. Performanz-Modus), so hat jeder Port nur noch den Zugriff auf die Hälfte des Cache, aber jeder Port kann uneingeschränkt (ohne Einfluss der Aktivitäten am anderen Port) auf diesen Bereich zugreifen. In diesem Modus wird das Adressbit A1 nicht zur Adressierung des Caches (im direct-mapped mode) verwendet, sondern Daten, die sich in der Adressierung nur in diesem Bit unterscheiden, werden an der gleichen Stelle im Cache abgelegt. Erst beim Lesen des Cache-Inhalts kann anhand der Kennung dann herausgefunden werden, ob es sich um das gesuchte Datum handelt und entsprechend das Cach-hit Signal generiert werden. Je nachdem, wo der entsprechende Vergleicher angeordnet ist, sind die
Daten einschließlich Kennung und Controlbits über die Signale 291, 292,...297 an die Ports 331, 332, ...337 und weiter and die Signale 261, 262,...267 auszugeben. Ebenso ist es möglich im Performanz-Modus (M=I) nur dem Port 1 den Zugriff auf den gesamten Cache zu erlauben. Diese weitere Ausführungsform ist in Tabelle 3 dargestellt. Der Anwender kann auch durch mehrere Konfigurationssignale beliebige andere Aufteilungen des Caches vornehmen. Das erlaubt bei einem größeren Cache-Bereich einmal eine höhere Hit-Rate und verringert damit die Notwendigkeit des Holens der Daten aus dem Hauptspeicher. Andererseits behindern sich die verschiedenen Ausführungseinheiten nicht, wenn über die verschiedenen Ports möglichst nur auf voneinander unabhängige Cache-Bereiche zugegriffen wird. Da diese Bedingungen von den zur Anwendung vorgesehenen Programmen abhängig sind ist es vorteilhaft, wenn je nach Anwendung die Möglichkeit einer anderen Konfiguration besteht. Andererseits kann direkt bei einem Wechsel des Systemzustandes (Vergleichs-Modus / Performanz-Modus) automatisch der Cache durch das Modussignal 1000 umgeschaltet werden.
Diese Möglichkeit der Umschaltung der Ports in Abhängigkeit von einem Modus- oder Konfigurationssignal wird in Figur 9 auf einen Multi-Port Cache 290 erweitert. Dabei sind 331, 332, ... 337 die Ports, die mit Hilfe dieses Modus- oder Konfigurationssignals die Zuschaltung verschiedener Teil-RAM-Bereiche 281,282,... 288 steuern. Diese Steuerung wird mittels entspre- chend in den Ports generierter select-Signale gewährleistet, die in den Signalen 291, 292,...297 enthalten sind.
Eine weitere Ausführung ist in Figur 10 gezeigt, wenn ein mehrfach-assoziativer Cache vorliegt, bei dem aus jedem Teilspeicher 281, 282,...288 die Daten zusammen mit der Kennung und den
Controlbits zurückgelesen werden. In den Vergleichseinrichtungen 2811, 2812,...2817, 2821, 2822,...2827, ...2881,2882,..2887 wird dann die Gültigkeit geprüft und in Abhängigkeit davon das Datum auf den Signalen 2910, 2920...2970 zusammen mit den Gültigkeitssignalen weitergeleitet. Eine Umschaltung mit Modus- oder Konfigurationssignalen ist dabei optional genauso möglich, wie schon in Figur 9 gezeigt und erläutert. In den Ports 3310, 3320,.. 3370 werden die
Gültigkeitssignale und ggf. die Modus- und Konfigurationssignale 1000 ausgewertet und das entsprechende gültige Datum mit dem Cache Hit Signal bzw. das Cache Miss Signal an die Sg- nale 2610, 2620,...2670 weitergeleitet.
Im Figur Bl ist eine Struktur dargestellt, die den Dual Port Cache für eine asymmetrische Systemstruktur mit zwei Ausführungseinheiten benutzt. Dabei sind Bl 10 und Bl I l die zwei Ausführungseinheiten mit ihren Daten/Adress- und Steuersignalen B 120 bzw. B 121. BlOO ist eine Umschalt- und Vergleichseinheit (UVE).
Diese Umschalt- und Vergleichseinheit ist im Bild B2 in ihrer Grundfunktion für die Anwendung in Verbindung mit zwei Ausführungseinheiten BIO und BI l gezeigt. Verschiedene Ausgangssignale, wie Daten, Steuer- und Adresssignale B20 bzw. B21 der Ausführungseinheiten BIO und BI l sind mit der Umschalteinheit verbunden.
Darüber hinaus gibt es mindestens ein Synchronisationssignal, in Ausgestaltung der erfindungsgemäßen Anordnung beide Ausgangssignale B40 und B41, die mit jeweils einer der Vergleidis- einheiten verbunden sind.
Die Umschalteinheit enthält mindestens ein Steuerregister B 15, das mindestens ein Speichσ- element für ein binäres Zeichen (Bit) B 16 besitzt, das den Modus der Vergleichseinheit un- schaltet. Dieses Bit B 16 kann die zwei Werte 0 und 1 annehmen und kann sowohl durch die Signale B20 oder B21 der Ausführungseinheiten oder durch interne Prozesse der Umschaltein- heit gesetzt oder rückgesetzt werden. Auf die Umschalteinheit und damit auf das Steuerregister B15 und damit auch das Umschalbit B 16 kann verzichtet werden, wenn ein permanenter Vergleichsmodus eingestellt sein soll. Die Umschalt- und Vergleichseinheit wird dabei zur permanenten Vergleichseinheit und das Signal BlOl ist ständig Eins. Die in den Figuren B3 und B4 dargestellten Zustände entfallen damit. Alle nachfolgenden Betrachtungen gelten damit so, als wenn das Bit B 16 gesetzt wäre und damit das Signal BlOl =I.
Ist dieses Bit B 16 auf den Wert 1 gesetzt, so arbeitet die Umschalteinheit im Vergleichsmodus. In diesem Modus werden alle ankommenden Datensignale aus B20 mit den Datensignalen aus
B21 verglichen, sofern bestimmte vorgebbare Vergleichs-Bedingungen der Steuer- und/oder Adresssignale aus den Signalen B20 und B21 erfüllt sind, die die Gültigkeit der Daten und den vorgesehenen Vergleich für diese Daten signalisieren .
Sind diese Vergleichsbedingungen an beiden Signalen B20 und B21 gleichzeitig erfüllt, so werden die Daten aus diesen Signalen unmittelbar verglichen und bei Ungleichheit wird ein Fehlersignal B17 gesetzt. Ist nur die Vergleichsbedingung aus entweder den Signalen B20 bzw. B21 erfüllt, so wird das entsprechende Synchronisationssignal B40 bzw. B41 gesetzt. Dieses Signal bewirkt in der entsprechenden Ausführungseinheit BIO bzw. BI l ein Anhalten der Verarbei- tung. Und damit eine Verhinderung der Weiterschaltung der entsprechenden Signale, die bisher nicht miteinander verglichen werden konnten. Das Signal B40 bzw. B41 bleibt solange gesetzt, bis die entsprechende Vergleichs-Bedingung der jeweils anderen Ausführungseinheit B21 bzw. B20 erfüllt ist. In diesem Fall wird der Vergleich ausgeführt und das entsprechende Synchrori- sationssignal zurückgesetzt.
Um den Vergleich bei der beschriebenen ungleichzeitigen Bereitstellung der zu vergleichenden Daten durch die beiden Ausführungseinheiten sicherzustellen ist es entweder notwendig, dass die Daten und Vergleichs-Bedingungen der entsprechenden Ausführungseinheit solange auf den entsprechenden Werten gehalten werden, bis das entsprechende Synchronisationssignal B40 bzw. B41 zurückgesetzt wurde, oder die zuerst bereitgestellten Daten müssen in der Umschalteinheit bis zum Vergleich gespeichert werden. Je nachdem, welche Ausfiihrungseinheit zuerst Daten bereitstellt, muss diese mit der Weiterabarbeitung ihres Programms oder ihrer Prozesse solange warten, bis die andere Ausfuhrungseinheit die entsprechenden Vergleichsdaten bereitstellt.
In einer speziellen Ausführung der Umschalteinheit nach Figur B2 kann auf eines der Signale
B40 bzw. B41 verzichtet werden, wenn immer gewährleistet ist, dass die zugehörige Ausfuhrungseinheit nicht eher Vergleichsdaten bereitstellt, als die andere Ausfuhrungseinheit. Ist das Bit B 16 nicht gesetzt, so sind die Synchronisationssignale B40 und B41 sowie das Fehlersignal B 17 immer auf den Wert 0 gesetzt. Es findet auch kein Vergleich statt und beide Aus- führungseinheiten arbeiten voneinander unabhängig im Performanzmodus.
In einem Performanzmodus verarbeiten beide Ausfuhrungseinheiten aus Figur Bl unabhängig Programme, Programmteile oder Programmsegmente Die Ausfuhrungseinheit Bl I l greift über B 121 zum Cache B 105 zu und der Cache steht über B 161 mit dem Hauptspeicher oder anderen Speichereinrichtungen in Verbindung. Die Ausführungseinheit BIlO greift vorzugsweise über die Einrichtung 106 (durch das Steuersignal BlOl in diesem Modus inaktiv geschaltet) ebenfalls zum dual Port Cache zu und benutzt dafür den zweiten Port dieses Caches (siehe Figur B3). Die Umschalt- und Vergleichseinheit (UVE) B100 ist inaktiv, d.h. es werden keine Daten verglichen (B 16 nicht gesetzt). In einer weiteren Ausführung kann zu dem Zugriff der Ausführungseinheit BIlO über den Cache hier in einer weiteren Ausführungsform aber auch der Zugriff über B 160 direkt zum Hauptspeicher oder anderen Speichereinrichtungen vorgesehen werden (siehe Figur B4). Diese weitere Ausführungsform hat jedoch den Nachteil, dass dann die Daten im Cache nicht mehr konsistent sind. Der entsprechende Block muss dann im Cache durch Rücksetzen des Valid-Bits ungültig gemacht werden, entweder durch die Bearbeitungseinheit BI lO selbst, oder eigenständig durch den Cache, der durch Beobachten des Busses B161 erkennt, ob in einen
Block geschrieben wird, der im Cache vorhanden ist. Dieser Vorgang wird auch als bus- snooping bezeichnet. Die weitere Ausführung von Figur B3 ist demgegenüber wegen des geringeren Aufwandes vorzuziehen.
Der Vergleichsmodus der Struktur von Figur Bl ist in Figur B5 im Detail dargestellt. Wird durch Setzen von B 16 in der UVE B100 dieser Modus aktiviert, so beginnen beide Ausführungseinheiten mit der Abarbeitung des gleichen Programms, das ggf. diversitär auf den beiden Ausführungseinheiten abläuft, d.h. unterschiedliche Algorithmen und/oder Befehle zur Erzeugung der zu vergleichenden Daten benutzt. Die Ausführungseinheit BIlO gibt Daten, die mit- einander verglichen werden sollen, mit einer entsprechenden Kennung an die Umschalt- und Vergleichseinheit (UVE) BlOO aus.
Diese Aktion bewirkt in der Leseanforderungseinheit B 106 das Abspeichern der Steuersignale (z.B. write) und ggf. zusätzliche Kennungen (Status- oder Prozessinformation, Bearbeitungszyklus) in das Speicherelement B 1061 und die zugehörige Adresse in ein Speicherelement B1062. Die Einheit B106 löst dadurch einen Lesevorgang mittels der aus B1061 in der Steuereinheit B 1064 generierten Steuersignale (z.B. read) und Kennungen in B 1021 und den von B 1062 ausgegebenen Adresssignalen B 1022 an dem Port 2 des Dual Port Cache B 105 aus. Bei einem Lesevorgang im Cache zu Zwecke des Vergleichs wird immer vorausgesetzt, dass die an dem Cache direkt angeschlossene Ausführungseinheit bereits die Daten in den Cache geschrieben hat. Das wird dadurch gewährleistet, dass die Ausführungseinheiten mit dem Schalten in den Vergleichsmodus entsprechend zeitlich zueinander mit der Verarbeitung des Programms starten (siehe auch nachfolgende Kapitel über die Synchronisation). Für den Fall, dass im Ver- gleichsmodus die zu vergleichenden Daten noch nicht im Cache verfügbar sind (Cache Miss), so darf der Cache diese Daten jedoch nicht im Hauptspeicher anfordern, sondern muss den Lesevorgang solange wiederholen, bis die Daten von der unmittelbar mit dem Cache verbundenen Ausführungseinheit geschrieben wurden und somit im Cache vorliegen. Eine zeitliche Überwachung oder ein Zähler der misslungenen Versuche garantiert die Erzeugung eines Fehlersignals, falls die Daten nicht in einem toleriertem Zeitbereich oder mit einer bestimmten Anzahl von
Versuchen erledigt wurde.
Der daraufhin empfangene Datenwert wird über B 1023 in B 1063 geschrieben. Die Gültigkeit der Daten wird in den empfangenen Steuersignalen B 1024 angezeigt (Auswertung des Cache Hit Signals und des Valid-Bits, und im Falle der Gültigkeit werden die Daten, Adressen und geeignete Steuersignale über B1003, B1002 und BlOOl zum Vergleich in B100 bereitgestellt. Dabei wird in der Leseanforderungseinheit B 106 die mit den Daten aus dem Cache zurück gelieferte Kennung (Control-Bits) mit der aktuellen Kennung verglichen. Bei Nichtübereinstimmung der Kennungen wird ein erneuter Lesevorgang an der gleichen Adresse im Cache ausgelöst. Die Daten werden erst bei einer gültigen Kennung zusammen mit den Adressen, die ggf. auch als eine zusätzliche Kennung benutzt werden können, mittels geeigneter Steuersignale B 1001 für den Vergleich freigegeben. Bis zur Freigabe des Vergleichswertes (oder ggf. sogar bis zum Ab- schluss des Vergleichs, falls die Signale B 120 in B100 nicht zwischengespeichert werden) wird die Ausführungseinheit BI lO über das Steuersignal B140 (z.B. Wait, Interrupt) angehalten. Da- durch wird gewährleistet, dass die Vergleichsdaten von B110 an B120 noch anliegen. Werden die Signale B 120 in einem in BlOO enthaltenen FIFO gespeichert, braucht die Ausfuhrungseinheit Bl 10 nicht angehalten werden, solange der FIFO nicht vollständig gefüllt ist. Als FIFO (first in, first out) bezeichnet man dabei eine Speichereinheit, die mehrere Datenworte speichern kann und die die zuerst eingespeicherten Daten auch zuerst wieder ausgibt.
Eine Synchronisation der beiden Ausfuhrungseinheiten kann dadurch erfolgen, dass die Ausfuhrungseinheit Bl 11 die Vergleichsdaten zusammen mit einer Kennung (Adresse und zusätzliche Control-Bits - zum Beispiel Valid-bit, Dirty-Bit, Prozess-ID) im Cache abspeichert und vor dem Vergleich die Gültigkeit entsprechend geprüft wird. Dazu werden die gespeicherten Adressdaten und das Valid-Bit zur Generierung des Cache-Hit Signals benutzt. Das Dirty-Bit zeigt nur an, ob die Daten des betreffenden Blocks im Cache verändert wurden und noch nicht in den Hauptspeicher zurückgeschrieben wurden. Unter der Prozess-ID wird dabei eine Kennzeichnung der Programmabarbeitung verstanden, die mit jedem neuen Schreiben gültiger Daten von Bl 11 in den Cache verändert wird. Dadurch ist gewährleistet, dass die Aktualität der Daten geprüft werden kann, wenn die Prozess-ID z.B. mit dem Start des Vergleichsmodus auf einen bekannten Wert gesetzt und dann in einer bekannten Weise verändert, zum Beispiel inkrementiert wird.
Tabelle 4 zeigt den internen Aufbau eines Caches. Jede Zeile entspricht dabei einem Datenblock.
Der Adress-Tag ist der Teil der Adresse, die für den Zugriff für einen Block relevant ist und mit dem Adress-Index beim aktuellen Zugriff verglichen wird. Bei Übereinstimmung und gültigem Valid-Bit (Teil der Control-Bits) wird ein Cache-Hit Signal erzeugt. Der Datenblock kann einige Bytes bis mehrere KBytes Daten enthalten. Die Controlbits sind als ein Beispiel in Tabelle 5 gezeigt.
Um z.B. das Inkrementieren der Prozess-ID zu gewährleisten, wird in dem Cache B 105 ein Zäh- ler B1059 vorgesehen (Figur 6), der mit Beginn des Vergleichsmodus (BlOl=I) über die Signale B 1021 und B 1022 auf einen definierten Wert gesetzt wird. Dieser Wert kann zum Beispiel der hexadezimale Wert 0x0000 sein, wenn der erste Vergleichszyklus beginnt. Dieser Zähler kann dann kontinuierlich mit jedem Schreiben vergleichsrelevanter Daten von Bl I l inkremen- tiert werden. Vergleichsrelevant heißt, dass man anhand der Adresse und/oder anderer Steuersignale vorgeben kann, ob die Daten für einen Vergleich vorgesehen sind.
Speichert man mit jedem Datum im Cache den Zählerwert als Prozess-ID mit ab, so ist der Da- tenstand eindeutig gekennzeichnet. Anhand eines gleichartigen Zählers B 1069 in der Einheit
B 106 lässt sich dann durch einen einfachen Vergleich entscheiden, ob die entsprechenden Daten schon im Cache vorliegen. Der Zähler B 1069 ist dazu mit dem Aktivwerden von BlOl vorzugsweise auf den gleichen Startwert wie der Zähler B 1059 zu setzen und mit jedem Schreb- signal relevanter Daten von Bl 10 zu inkrementieren. Haben dann die Prozess-ID Bits im gele- senen Block den gleichen oder einen höheren Wert als der Zählerstand von B 1069, so sind die
Daten gültig. Höher kann der Zahlenwert deshalb sein, weil in einen Block auch mehrfach auf unterschiedliche Daten geschrieben werden kann. Der Zähler braucht mit Beginn eines neuen Zyklus nicht rückgesetzt werden. Es muss nur verhindert werden, dass in einem neuen Zyklus nicht Daten überschrieben werde, die noch nicht verglichen wurden.
Eine weitere Ausführung zu dem Zähler ist auch die Abspeicherung der niederwertigen Adressbits (die für die Blockadressierung nicht relevanten Adressbits 0,..., k-1 gemäß Figur 3) als einen Teil der Prozess-ID, während andere Prozess-ID Bits den Zyklus kennzeichnen. Ist die Wortbreite größer als ein Byte, entfallen die entsprechenden niederwertigsten Bits davon Hier- durch ist es möglich zu erkennen, welches Wort im Block zuletzt geschrieben wurde. Dazu werden im Programmablauf beispielsweise entweder die Daten immer mit fortlaufender Adresse geschrieben, oder man kann mit Hilfe einer Transformationstabelle bei linear fortlaufender Programmabarbeitung eine eindeutige Zuordnung des zuletzt geschriebenen Wertes von BlI l zum aktuellen Vergleichswert von BI lO vornehmen.
Eine weitere Möglichkeit besteht darin, den Zählerstand nicht mit dem Datenblock als Prozess- ID im Cache abzuspeichern, sondern den aktuellen Zählerzustand bei jedem Lesezugriff von B 106 über die Steuersignale B 1064 an B 106 zu übermitteln. Als Prozess-ID wird dann nur der laufende Zyklus in entsprechend weniger Speicherbits abgespeichert. Die Speichergωße wird dadurch jedoch nicht wesentlich verringert, weil ein Datenblock im Cache heutzutage üblicherweise schon bis zu 64 KByte enthalten kann. Da sind zum Beispiel 16 zusätzliche Prozess-ID Bits weniger als 0,0031 %. Eine weitere Ausfiihrungsform der Synchronisation ohne Benutzung der Zähler B 1059 und B1069 besteht in der Aussendung eines Steuersignals B141 (z.B. Interrupt) an die Ausfuhrungseinheit Bl 11 zur Anforderung des Vergleichsmodus. Die Ausfuhrungseinheit Bl I l beginnt dann nach einer bekannten maximalen Zeitspanne T mit der Abarbeitung des Programmteils im Vergleichsmodus. Die Ausfuhrungseinheit BI lO wird entsprechend initialisiert und auf den
Vergleichsmodus vorbereitet, aber gleichzeitig um die maximale Zeitspanne T verzögert gestartet. Dadurch ist gewährleistet, dass die Vergleichdaten im Dual Port Cache B 106 immer vorher bereitstehen, bevor die Ausfuhrungseinheit Bl 10 die entsprechenden Daten ausgibt. Dabei ist in dem Wert T ggf. auch zu berücksichtigen, dass die Daten diversitär berechnet werden, d.h. die Zeitdauer, die durch die Diversität in der Ausführungseinheit BlI l länger gebraucht wird als in
BIlO, ist zu T noch zu addieren.
Unabhängig davon, wie die Aktualität der Vergleichsdaten abgesichert wird, ist die Ausführungseinheit Bl 11 am Überschreiben der noch nicht verglichenen Daten zu hindern, falls die Daten z.B. zyklisch aktualisiert werden. Dazu kann das Rücksetzen des Bits B16 z.B. auch ein
Rücksetzen des Steuersignals B141 an die Ausführungseinheit Bl I l bewirken. Solange B141 gesetzt ist, kann bei einer zyklischen Aktualisierung der Daten die Ausführungseinheit B 111 am Überschreiben der Daten vom letzten Zyklus gehindert werden. Die Ausführungseinheit Bl I l durchläuft dann entweder eine Warteschleife oder führt Operationen aus, die ohne Vergleich von Daten auskommen. Mit dem Rücksetzen von B 141 wird signalisiert, dass von der Einheit
B 106 keine weiteren Daten zum Vergleich angefordert werden und die bisherigen Vergleichsoperationen abgeschlossen sind. Solange dann B 141 nicht erneut gesetzt wird, arbeitet die Ausführungseinheit Bl 11 im Performanz-Modus. Ein Überschreiben der Daten im Cache wird damit wieder möglich, aber erst nach der erneuten Aktivierung von B 141 wird wieder der Ver- gleichsmodus eingeleitet.
In einer weiteren Ausführung wird das Signal B 141 immer nur kurzzeitiger aktiv, um den Vergleichsmodus mittels eines Interrupts vorzubereiten. Ein Überschreiben der Daten wird dann verhindert, bis B 141 wieder kurz gesetzt wird und durch den dadurch ausgelösten Interrupt an die betreffende Programmstelle gesprungen wird, die erneut die Vergleichsdaten bereitstellt.
Auf alle Synchronitätsmaßnahmen kann nach einem Start des Vergleichs verzichtet werden, wenn durch geeignete Maßnahmen gewährleistet werden kann, dass die Zeitdauer zwischen der Bereitstellung von Vergleichsdaten durch die Ausführungseinheit BlI l immer größer ist als die zum Vergleich der Daten mit denen von BI lO benötigte Zeit, die Daten von Bl I l immer mindestens gleichzeitig oder eher als die von BI lO bereitstehen und durch Zwischenspeicherung der Daten von Bl 10 in B100 in einem einfachen Speicher oder FIFO die Ausfiihrungseinheit BIlO nicht durch das Signal B140 zu Synchronisationszwecken angehalten werden muss. Von den hier vorgeschlagenen Methoden sind fiir jede Anwendung nur die jeweils notwendigen
Maßnahmen zu treffen.
In einer weiteren vorteilhaften Ausführungsform ist der Dual Port Cache nicht notwendig mit einem Dual Port RAM realisiert, sondern es wird ein single port RAM B 1056 benutzt (siehe Fi- gur B7) Mittels einer Zugriffsteuerung B 1057 werden nacheinander je nach Anforderung die beiden Ports bedient, von denen aber immer nur einer Zugriff zum RAM über die Signale B 1058 hat. Dadurch kann das Rücklesen durch B 106 bei Zugriffskonflikten ggf. um einen oder mehrere Takte zusätzlich verzögert werden, aber da die Daten ohnehin nicht synchron von beiden Ausführungseinheiten geliefert werden, ist das in verschiedenen Anwendungen kein Nadi- teil. Wesentlich ist nur, dass die Ausführungseinheit Bl I l mit höherer Priorisierung ausgestattet ist und dadurch nicht im Zugriff behindert wird. Weiterhin ist wichtig, dass in der Gesamtbilanz genügende Zugriffsmöglichkeiten für den zweiten Port zur Verfügung stehen, auch wenn die erwähnten Verzögerungen auftreten können. Der Vorteil liegt bei dieser Ausführung in der deutlichen Hardwareeinsparung für den zweiten Port. Sofern in Figur B7 das Signal B 1058 d- rekt mit dem Signal B 121 verbunden ist und sowohl B 1057 als auch B 102 eiifallen liegt ein
Single Port Cache vor, wie er gemäß dem Stand der Technik üblich ist. Die Erweiterung durch die Ablaufsteuerung B 1057 und dem damit möglichen Anschluss von B 102 ist ein deutlich geringerer Zusatzaufwand, als einen Dual Port RAM mit echter Parallelität einzusetzen.
Die Einheit B 106 ist nicht notwendigerweise eine separate Einheit, sondern kann in der UVE
BlOO integriert sein, oder mit dem Cache oder einer Ausführungseinheit zusammen auf einem Chip integriert sein.
Wenn ein Cache mit mehr als zwei Ports gemäß Figur 6 zur Verfügung stehl, d.h. ein Multi-Port Cache B205 können entsprechend Figur B8 auch mehr als zwei Prozessoren die Daten in einem
Vergleichsmodus vergleichen oder voten, d.h. durch Mehrheitsentscheid den gültigen Wert bestimmen. Für jede zusätzlichen Ausführungseinheit Bl 12, ... ist dann auch eine zusätzliche Leseanforderungseinheit B 107, ...gemäß Figur B8 vorzusehen und die UVE B200 muss eine entsprechende Anzahl von Eingängen dafür besitzen. Im Vergleichs- oder Voting-modus schreibt die direkt am Cache angeschlossene Ausfiihrungseinheit das Datum zum Vergleich o- der Voting direkt in den Cache. Diejenige der übrigen Ausfuhrungseinheiten Bl 10, Bl 12,..., die zuerst ein Datum zum Vergleich/Voting bereitstellt, fordert dann über die angeschlossene Leseanforderungseinheit B 106, B 107,... über den angeschlossenen Port des Cache B205 die entsprechenden Daten an. Diesen Zustand übermittelt diese Ausführungseinheit den anderen
Ausführungseinheiten und der UVE mittels der Signale B8105. Nach dem Bereitstellen der Daten durch den Cache über B 102, B 104, ... werden diese über B8105 der UVE B200 zum Vergleich bereitgestellt. Der Vergleich/das Voting findet statt, wenn alle beteiligten Ausführungseinheiten die entsprechenden Daten zur Verfügung gestellt haben. Gegebenenfalls müssen die anderen Ausführungseinheiten bis zu diesem Zeitpunkt über die Steuersignale B 140, B 142,... angehalten werden. Eine Zeitüberwachung gewährleistet dabei, dass innerhalb eines tolerierten Zeitfensters der Vergleich stattfindet, oder ein Fehler signalisiert wird.
Anstelle eines RAM-Speicher kann die erfindungsgemäße Anordnung auch mit anderen Spei- chertechnologien wie MRAM, FERAM o. ä. dargestellt werden.

Claims

Patentansprüche
1. Vorrichtung zur Speicherung von Daten und/oder Befehlen in einem Rechnersystem mit wenigstens zwei Ausfiihrungseinheiten und wenigstens einem ersten Speicher oder Speicherbereich fiir Daten und/oder Befehle, wobei Umschaltmittel vorgesehen sind und zwischen wenigstens zwei Betriebsmodi umgeschaltet wird, wobei Vergleichsmittel vorgesehen sind und ein erster Betriebsmodus einem Vergleichsmodus und ein zweiter Betriebsmodus einem Performanzmodus entspricht, dadurch gekennzeichnet, dass in der Vorrichtung ein zweiter Speicher oder Speicherbereich enthalten isl, wobei die Vorrichtung als Cachespeichersystem ausgebildet ist und mit wenigstens zwei ge- trennten Ports ausgestattet ist, wobei ein Port direkt mit einer ersten Ausführungseinheit verbunden ist und zwischen dem zweiten Port und der wenigstens zweiten Ausführungseinheit eine dritte Einrichtung enthalten ist, die derart ausgestaltet ist, dass ein Zugriff der zweiten Ausführungseinheit auf den zweiten Speicher oder Speicherbereich über die dritte Einrichtung erfolgt.
2. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, dass in den Umschaltmitteln und/oder den Vergleichsmitteln wenigstens ein Speichermittel vorhanden ist und die Umschaltung durch wenigstens ein Bit in den Speichermitteln erfolgt.
3. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, dass die Umschaltung durch wenigstens ein zum Rechnersystem externes oder internes Signal erfolgt.
4. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, dass im Performanzmodus die dritte Einrichtung der direkt angeschlossenen Ausführungseinheit einen Lese- und Schreibzugriff zu der zweiten Speichereinrichtung über den angeschlossen Port gewährleistet.
5. Vorrichtung nach Anspruch 1 dadurch gekennzeichnet, dass in dem Cachespeichersystem mindestens ein Zähler vorhanden ist, der bei jedem Abspeichern vergleichsrelevan- ter Daten von der ersten Ausfiihrungseinheit über den ersten Port dieses Speichers der Zähler inkrementiert oder dekrementiert wird.
6. Vorrichtung nach Anspruch 5 dadurch gekennzeichnet, dass der Zähler bei dem Um- schalten in den Vergleichsmodus auf dem entsprechenden angeschlossenen Port den
Zählerwert ausgibt und dieser in der dritten Einheit gespeichert wird.
7. Vorrichtung nach Anspruch 5, dadurch gekennzeichnet, dass ein zweiter Zähler in der dritten Einrichtung vorgesehen ist und der Zählerwert des Zählers zum Setzen des zwei- ten Zählers der dritten Einheit benutzt wird.
8. Verfahren zur Speicherung von Daten und/oder Befehlen in einem Rechner System mit wenigstens zwei Ausführungseinheiten und wenigstens einem ersten Speicher oder Speicherbereich für Daten und/oder Befehle, wobei Umschaltmittel vorgesehen sind und zwischen wenigstens zwei Betriebsmodi umgeschaltet wird, wobei Vergleichsmittel vorgesehen sind und ein erster Betriebsmodus einem Vergleichsmodus und ein zweiter Betriebsmodus einem Performanzmodus entspricht, dadurch gekennzeichnet, dass ein zweiter Speicher oder Speicherbereich vorgesehen ist, welcher in einem Cachespeichersystem enthalten ist und mit wenigstens zwei getrennten Ports ausgestattet ist, wobei die erste Ausführungseinheit direkt auf den zweiten Speicher oder Speicherbereich über einen ersten Port zugreift und die zweite Ausführungseinheit über eine dritte Einrichtung auf den zweiten Speicher oder Speicherbereich zugreift.
9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass die dritte Einrichtung Spei- chermittel enthält, in denen Daten und/oder Signale von der angeschlossenen Ausführungseinheit gespeichert werden können und, wobei die dritte Einheit unabhängig von dem Zustand dieser besagten Ausführungseinheit Daten mit dem zweiten Speicher oder Speicherbereich austauschen kann.
10. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass die dritte Einrichtung Daten und/oder Adressen und/oder Steuersignale von der zweiten Verarbeitungseinrichtung erhält und daraufhin auf die entsprechenden Daten in des zweiten Speichers oder Speicherbereiches lesend oder schreibend zugreift.
11. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass das Cachespeichersystem über das Vorhandensein der Daten entscheidet und im Falle des NichtVorhandenseins ein Signal an die dritte Einrichtung sendet.
12. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass die Daten und/oder Befehle in der dritten Einheit auf ihre Gültigkeit geprüft werden und im Falle der Gültigkeit weitergeleitet werden.
13. Verfahren nach Anspruch 12, dadurch gekennzeichnet, dass die Gültigkeit anhand von mit den Daten und/oder Befehlen abgespeicherten Zusatzinformationen geprüft wird.
14. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass mit dem Umschalten in den Vergleichsmodus Synchronisationssignale an die betreffenden Ausführungseinheiten ausgesendet werden.
15. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass im Falle eines Vergleichs und einer Abweichung der zu vergleichenden Daten ein Fehler signalisiert wird.
16. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass im Falle eines Votings und einer Abweichung mindestens eines Datums aus der zu votenden Daten der Status und/oder ein Fehler signalisiert wird.
17. Verfahren nach Anspruch 8 dadurch gekennzeichnet, dass in dem Cachespeichersystem ein Zähler vorgesehen ist und der Zähler bei dem Umschalten in den Vergleichsmodus auf dem entsprechenden angeschlossenen Port den Zählerwert ausgibt und dieser in der dritten Einheit gespeichert wird.
18. Verfahren nach Anspruch 17, dadurch gekennzeichnet, dass ein zweiter Zähler in der dritten Einrichtung vorgesehen ist und der Zählerwert des Zählers zum Setzen des zwei- ten Zählers der dritten Einheit benutzt wird.
19. Verfahren nach Anspruch 17, dadurch gekennzeichnet, dass die im Cachespeichersystem vorhandenen Zähler einem Port zugeordnet ist und beim Einschalten des Vergleichsmodus in der dem jeweiligen Port angeschlossenen Verarbeitungseinrichtung auf einen festen Wert gesetzt wird.
PCT/EP2006/064588 2005-08-08 2006-07-24 Vorrichtung und verfahren zur speicherung von daten und/oder befehlen in einem rechnersystem mit wenigstens zwei ausführungseinheiten und wenigstens einem ersten speicher oder speicherbereich für daten und/oder befehle WO2007017367A1 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008525516A JP2009505178A (ja) 2005-08-08 2006-07-24 少なくとも2つの命令実行部と少なくともデータ及び/または命令のための第1記憶装置または記憶領域とを備えたコンピュータシステムにおいて、データ及び/または命令を格納する装置及び方法
EP06777936A EP1915684A1 (de) 2005-08-08 2006-07-24 Vorrichtung und verfahren zur speicherung von daten und/oder befehlen in einem rechnersystem mit wenigstens zwei ausführungseinheiten und wenigstens einem ersten speicher oder speicherbereich für daten und/oder befehle

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102005037234A DE102005037234A1 (de) 2005-08-08 2005-08-08 Vorrichtung und Verfahren zur Speicherung von Daten und/oder Befehlen in einem Rechnersystem mit wenigstens zwei Ausführungseinheiten und wenigstens einem ersten Speicher oder Speicherbereich für Daten und/oder Befehle
DE102005037234.1 2005-08-08

Publications (1)

Publication Number Publication Date
WO2007017367A1 true WO2007017367A1 (de) 2007-02-15

Family

ID=36926336

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2006/064588 WO2007017367A1 (de) 2005-08-08 2006-07-24 Vorrichtung und verfahren zur speicherung von daten und/oder befehlen in einem rechnersystem mit wenigstens zwei ausführungseinheiten und wenigstens einem ersten speicher oder speicherbereich für daten und/oder befehle

Country Status (6)

Country Link
EP (1) EP1915684A1 (de)
JP (1) JP2009505178A (de)
KR (1) KR20080033338A (de)
CN (1) CN101243404A (de)
DE (1) DE102005037234A1 (de)
WO (1) WO2007017367A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102073565B (zh) * 2010-12-31 2014-02-19 华为技术有限公司 触发操作方法、多核分组调试方法、装置及系统
KR101432274B1 (ko) 2013-12-12 2014-08-21 (주)이건산전 백업모듈을 포함하는 철도 차량용 제어기
CN112416609A (zh) * 2021-01-22 2021-02-26 南京芯驰半导体科技有限公司 双核模式的模式配置方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4823256A (en) * 1984-06-22 1989-04-18 American Telephone And Telegraph Company, At&T Bell Laboratories Reconfigurable dual processor system
EP0439952A2 (de) * 1990-01-31 1991-08-07 STMicroelectronics, Inc. Doppeltor-Cache-Etikettenspeicher
US5751932A (en) * 1992-12-17 1998-05-12 Tandem Computers Incorporated Fail-fast, fail-functional, fault-tolerant multiprocessor system
US20020073357A1 (en) * 2000-12-11 2002-06-13 International Business Machines Corporation Multiprocessor with pair-wise high reliability mode, and method therefore
WO2003010638A1 (de) * 2001-07-26 2003-02-06 Infineon Technologies Ag Prozessor mit mehreren rechenwerken
US6615366B1 (en) * 1999-12-21 2003-09-02 Intel Corporation Microprocessor with dual execution core operable in high reliability mode
US20040123201A1 (en) * 2002-12-19 2004-06-24 Nguyen Hang T. On-die mechanism for high-reliability processor

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05128080A (ja) * 1991-10-14 1993-05-25 Mitsubishi Electric Corp 情報処理装置
CA2178440A1 (en) * 1995-06-07 1996-12-08 Robert W. Horst Fail-fast, fail-functional, fault-tolerant multiprocessor system

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4823256A (en) * 1984-06-22 1989-04-18 American Telephone And Telegraph Company, At&T Bell Laboratories Reconfigurable dual processor system
EP0439952A2 (de) * 1990-01-31 1991-08-07 STMicroelectronics, Inc. Doppeltor-Cache-Etikettenspeicher
US5751932A (en) * 1992-12-17 1998-05-12 Tandem Computers Incorporated Fail-fast, fail-functional, fault-tolerant multiprocessor system
US6615366B1 (en) * 1999-12-21 2003-09-02 Intel Corporation Microprocessor with dual execution core operable in high reliability mode
US20020073357A1 (en) * 2000-12-11 2002-06-13 International Business Machines Corporation Multiprocessor with pair-wise high reliability mode, and method therefore
WO2003010638A1 (de) * 2001-07-26 2003-02-06 Infineon Technologies Ag Prozessor mit mehreren rechenwerken
US20040123201A1 (en) * 2002-12-19 2004-06-24 Nguyen Hang T. On-die mechanism for high-reliability processor

Also Published As

Publication number Publication date
EP1915684A1 (de) 2008-04-30
CN101243404A (zh) 2008-08-13
KR20080033338A (ko) 2008-04-16
JP2009505178A (ja) 2009-02-05
DE102005037234A1 (de) 2007-02-15

Similar Documents

Publication Publication Date Title
DE10353268B3 (de) Paralleler Multithread-Prozessor (PMT) mit geteilten Kontexten
EP1057117B1 (de) VERFAHREN ZUM HIERARCHISCHEN CACHEN VON KONFIGURATIONSDATEN VON DATENFLUSSPROZESSOREN UND BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALER PROGRAMMIERBARER ZELLSTRUKTUR (FPGAs, DPGAs, o.dgl.)
DE69233655T2 (de) Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedenartiger Prozessoren
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
EP1329816B1 (de) Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.)
EP1915694A1 (de) Vorrichtung und verfahren zur speicherung von daten und/oder befehlen in einem rechnersystem mit wenigstens zwei verarbeitungseinheiten und wenigstens einem ersten speicher oder speicherbereich für daten und/oder befehle
DE2547488C2 (de) Mikroprogrammierte Datenverarbeitungsanlage
DE102006030879B4 (de) System zum Reduzieren der Latenzzeit von exklusiven Leseanforderungen in einem symmetrischen Multiprozessorsystem
DE112015005597T5 (de) Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher
DE112006003453T5 (de) Per-Satz-Relaxation der Cache-Inklusion
DE112005002432B4 (de) Verfahren und Vorrichtung zum Bereitstellen eines Quellenoperanden für eine Instruktion in einem Prozessor
DE112008001679T5 (de) Cache-Speicher mit konfigurierbarer Assoziativität
DE3502147C2 (de)
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE19908618A1 (de) Gemeinsam genutzter Hochleistungscachespeicher
WO2007017367A1 (de) Vorrichtung und verfahren zur speicherung von daten und/oder befehlen in einem rechnersystem mit wenigstens zwei ausführungseinheiten und wenigstens einem ersten speicher oder speicherbereich für daten und/oder befehle
DE102004009610B4 (de) Heterogener paralleler Multithread-Prozessor (HPMT) mit geteilten Kontexten
DE19950255A1 (de) Mikroprozessor
DE102007055138B4 (de) System zum Zugreifen auf einen Einzelport-Mehrwege-Cache
DE102009032071A1 (de) Technik für das Disponieren von Threads
DE102014012155A1 (de) Verbesserte verwendung von speicherressourcen
DE102005037215A1 (de) Verfahren zur Speicherung von Daten und/oder Befehlen in einem Rechnersystem mit wenigstens zwei Verarbeitungseinheiten und wenigstens einem ersten Speicher oder Speicherbereich für Daten und/oder Befehle
EP1917593B1 (de) Verfahren und vorrichtung zur steuerung eines speicherzugriffs bei einem rechnersystem mit wenigstens zwei ausführungseinheiten
DE112016007298T5 (de) Informationsverarbeitungsgerät

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 2006777936

Country of ref document: EP

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 1020087002749

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 2008525516

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 200680029435.2

Country of ref document: CN

WWP Wipo information: published in national office

Ref document number: 2006777936

Country of ref document: EP