WO2007017376A1 - Verfahren und vorrichtung 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 - Google Patents

Verfahren und vorrichtung 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 Download PDF

Info

Publication number
WO2007017376A1
WO2007017376A1 PCT/EP2006/064661 EP2006064661W WO2007017376A1 WO 2007017376 A1 WO2007017376 A1 WO 2007017376A1 EP 2006064661 W EP2006064661 W EP 2006064661W WO 2007017376 A1 WO2007017376 A1 WO 2007017376A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
data
access
commands
cache
Prior art date
Application number
PCT/EP2006/064661
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 EP06777976A priority Critical patent/EP1915695A1/de
Priority to JP2008525519A priority patent/JP2009505181A/ja
Publication of WO2007017376A1 publication Critical patent/WO2007017376A1/de

Links

Classifications

    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0853Cache with multiport tag or data arrays

Definitions

  • Computer system with at least two processing units and at least one first memory or memory area for data and / or commands
  • the present invention relates to microprocessor systems with fast cache memory and in this context describes a dual port cache.
  • Microcontrollers with at least two integrated cores are known from the state of the art. These microcontrollers are also called dual-core or multi-
  • the at least two cores execute the same programs, program segments or commands redundantly and clock-synchronously, the results of the two cores are compared, and an error will then be detected in the comparison for agreement.
  • this configuration of a multi-core system is referred to as a comparison mode.
  • Dual-core or multi-core architectures are also used in other applications to increase performance. Both cores execute different programs, program segments, and commands, which can improve performance, which is why this configuration of a multi-core system is called a performance mode or performance mode.
  • This system is also referred to as a symmetric multiprocessor system (SMP).
  • SMP symmetric multiprocessor system
  • An extension of these systems can be achieved by means of a switching, ie depending on the purpose of the multiprocessor system, this can be operated in a comparison mode or in a performance mode. In comparison mode, the output signals of the cores are compared with each other. If there is a difference, an error signal is output. In performance mode, the two cores work as a symmetric multiprocessor system
  • Microprocessors are starting from a certain clock frequency with fast buffers
  • Caches to speed access to instructions and data.
  • main memory main memory
  • main memory main memory
  • processors to speed access to instructions and data.
  • caches are implemented in such storage technologies that provide fast access to memory contents and are physically located close to the processor.
  • a subset of the data and / or instructions are cached from main memory in a cache.
  • the use of a cache memory partly avoids or reduces the slow access to a large (main) memory and then the processor does not have to wait for the delayed provision of the data by the main memory.
  • Both caches for commands and data only are known, as well as "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.
  • it is customary to equip each processor with a cache or, in the case of multi-level caches, with correspondingly more hierarchically structured caches.
  • processors each have a fixed cache, they can also be switched to different operating modes of the processor system, where they execute either different programs, program segments or commands (performance mode) or execute the same programs, program segments or commands and compare the results ( Comparison mode), the data or commands in the parallel caches of each controller must be either deleted when switching between the operating modes, or they must be provided when loading the caches with the corresponding information of the respective operating mode, preferably together with the
  • the object of the invention is to provide means and methods to optimize the size of the cache and to accelerate the process of switching between a performance mode and a comparison mode.
  • the data / instructions do not have to be fetched several times into the cache for the different execution units and / or the different operating modes and possibly maintained. - A -
  • the data / instructions in the cache do not need to be differentiated as to whether they are used in different operating modes of the multiprocessor system.
  • the data / instructions in the cache do not need to be distinguished in which operating modes of the multiprocessor system they are processed and / or in which modes of operation they have been cached or written and / or from which core they were requested or written.
  • the cache does not have to be deleted when changing the operating mode, so the cache contents have to be loaded less often and the access to the main memory is reduced. Switching can be faster than in systems that have multiple caches.
  • Two processors can simultaneously read to the same data / instructions in the cache.
  • a "write back” mode can be used for the cache, which is more time-saving, in particular because it is not always necessary to update the (main) memory but only when the data in the cache is overwritten; there are no consistency issues because the cache for both processors provides the data from the same source.
  • a method for storing data and / or commands in a computer system having at least two processing units and at least one first memory or memory area for data and / or commands, wherein switching means are provided and switched between at least two operating modes, wherein comparison means are provided and a first mode of operation corresponds to a comparison mode and a second mode of operation a performance mode, characterized in that in the device, a second memory or memory area is included, wherein the device is formed as a cache memory system and is equipped with at least two separate ports and about these Ports an access of the at least two processing units to the same or different memory cells of the second memory or memory area, wherein the data and / or commands from the first memory system are buffered in blocks and when switching.
  • a method is described, characterized in that the second memory or memory area is subdivided into at least two address areas which can be read or written independently of each other.
  • an address decoder is provided which generates enable signals which allow simultaneous access to an address range through multiple ports only one port access and prevent the access of the at least one other ports or delay , in particular by wait signals.
  • a method is described, characterized in that more than two ports are provided, selection devices being present and the access to the independent address areas being effected via the selection devices having a plurality of stages and for this purpose the enable signals being forwarded via these stages.
  • a method is described, characterized in that there is at least one mode signal which switches over the access possibilities of the different ports.
  • a method is described, characterized in that there is at least one configuration signal which switches the access possibilities of the different ports.
  • a method is described, characterized in that both processing units specify a read access.
  • a method is described, characterized in that when specifying the read access by both processing units the data and / or commands associated Kennu ⁇ - conditions or access addresses are compared and only if a read access to the cache is switched through.
  • a method is described, characterized in that, when a read access is specified, both processing units access the cache system.
  • a method is described, characterized in that the read during read access by both processing units data and / or commands are compared and in case of deviation, a signal, in particular an error signal is generated.
  • a method is described, characterized in that in a write access to the second memory or memory area to be written data and / or commands are compared and are only written if they match.
  • a method is described, characterized in that in a write access until the data and / or commands are compared, the processing units are stopped.
  • a method is described, characterized in that the data and / or commands are written to a buffer memory or buffer memory area and are taken over only after successful comparison in the second memory or memory area.
  • a method is described, characterized in that in a write access to the second memory or memory area to be written data and / or commands are written only by a processing unit and depending on a parallel comparison in discrimination the registered data and / or commands disabled or invalidated.
  • a method is described, characterized in that the blocking or invalidation is effected by setting or resetting at least one bit.
  • a method is described, characterized in that the blocking or invalidation is effected by overwriting with another, in particular old date and / or command.
  • a method is described, characterized in that the blocking or invalidation is effected by deleting a corresponding entry of a content table of the second memory or memory area.
  • Memory or memory area is included, wherein the device is designed as a cache memory system and is equipped with at least two separate ports and via these ports access the at least two processing units to the same or different memory cells of the second memory or memory area, wherein the data and / or Be - missing from the first memory system Cached blockwise.
  • a device characterized in that data and commands are stored separately in the cache memory system and so a data memory or data storage area and an instruction memory or command memory area are provided. Also advantageous is such a device, characterized in that the second
  • Memory or memory area is divided into at least two address areas that can be read or written independently.
  • an apparatus is advantageous, characterized in that an address decoder is provided which generates enable signals which, in the case of simultaneous access to one Address range through multiple ports allow only one port access and prevent the access of the at least one other ports or delay, in particular by wait signals.
  • such a device is advantageous, characterized in that more than two ports are provided, with selection devices being present and the access to the independent address areas being effected via the selection devices with multiple ports and for this purpose the enable signals being forwarded via these stages ,
  • FIG. 1 shows a multiprocessor system with two execution units, with means for comparing data of the execution units and means for switching between at least two operating modes of the multiprocessor system.
  • FIG. 2 shows a dual-port cache memory for data and / or commands, which has an internal dual-port memory, two ports for connecting one execution unit each and an interface to the data / address bus of the multiprocessor system.
  • FIG. 3 shows a dual port cache with further details.
  • FIG. 4 shows a device and a method for address transformation in a dual port cache.
  • FIG. 5 shows a division of the internal dual-port memory into two subareas which can be operated independently of one another and are accessed by two separate enable signals from each port.
  • FIG. 6 shows a realization of a dual-port memory area by a single
  • FIG. 7 shows the division of a multiple port memory with p ports into a plurality of sub-ports.
  • FIG. 7 a shows a realization of a multi-port memory area by a single-port memory by means of a port switchover.
  • FIG. 8 shows a breakdown of the RAM areas for the ports as a function of a system state or a configuration.
  • FIG. 9 shows a division of a multi-port RAM into areas as a function of one
  • FIG. 10 shows the division of a multi-port RAM into areas with multiple associative access.
  • FIG. 11/1 Ia a multiprocessor system with two execution units and a dual port cache is shown, which is preferably constructed symmetrically.
  • FIG. 12 shows a general case of a switching and comparing unit, also for use for more than two execution units.
  • FIG. 13 shows the internal switching state of the switching and comparison unit for write and read accesses to the cache memory in the performance mode.
  • FIG. 14 shows the internal switching state of the switching and comparison unit for read accesses to the cache memory in a first embodiment of the comparison mode.
  • FIG. 15 shows the internal switching state of the switching and comparison unit for read accesses to the cache memory in a second embodiment of the comparison mode.
  • FIG. 16 shows a configuration of a switching and comparison unit with write access interrupting device to the cache memory in comparison mode.
  • FIG. 17 there is shown a configuration of a switching and comparing unit with buffering means for writing access to the cache memory in the comparing mode.
  • Figure 18 shows a multiprocessor system with two execution units and with separate dual port cache memories for instructions and data.
  • a processor As an execution unit, a processor, a core, a CPU, as well as an FPU (floating point unit), a DSP (digital signal processor), a coprocessor or an ALU (arithmetic logical unit) may be referred to below.
  • FPU floating point unit
  • DSP digital signal processor
  • ALU Arimetic logical unit
  • the invention relates to a multiprocessor system (W100) shown in FIG. 1 having at least two execution units (W11a, W10b), a comparison unit (W120) and a switching unit (W150).
  • the execution units are each via signal lines or buses (Wl 12a, Wl 12b) with the comparison unit (W120) and the switching unit
  • the switching unit (W 150) has at least two outputs to two system interfaces (W130a, W130b). Memory or peripherals such as digital outputs, D / A converters and communication controllers can be controlled via these interfaces.
  • An execution unit can be implemented both as processor / core / CPU, as well as FPU (floating point unit), DSP (digital signal processor), coprocessor, ALU (Arithmetic logical Unit).
  • This multiprocessor system can be operated in at least two modes of operation, a compare mode VM and a performance mode PM.
  • the comparison unit In the performance mode PM, different commands, program segments or programs are executed in parallel in the different execution units.
  • the comparison unit is deactivated.
  • the switching unit (Wl 50) is configured in this operating mode so that each execution unit is exclusively connected to one of the system interfaces (W130a, W130b).
  • the system interfaces can be used to write a result of an execution unit into a memory (W 170) or to output it to a peripheral block (W180, W190).
  • a peripheral module may be, for example, an analog-digital converter or a communication controller of a communication system (eg SPI, LIN, CAN, FlexRay).
  • SPI serial-digital converter
  • a communication controller of a communication system eg SPI, LIN, CAN, FlexRay
  • Ignore comparator Next you can also interrupt the error signal itself. All options have in common that they create a state in the system that does not matter if two or more potentially matched data are different. If this state is reached by a measure in the comparator or its input or output signals, then the comparator is referred to as passive or deactivated.
  • comparison mode VM the same or similar commands, program segments or programs are executed in both execution units (W10a, W10b). Via the signal lines or buses (Wl 12a, Wl 12b), the output signals of the execution units are fed to the comparison unit (W 120) and to the switching unit (W 150). In the comparison unit, the two data are checked for conformity. After the comparison has been made, the changeover unit is informed via a status signal (W125) whether it is allowed to output one of the matching results to one of the system interfaces or whether it has to block the signal due to a recognized discrepancy of the results. In this case, an optional error signal (Wl 55) can be output by the comparison unit. This error signal can also be output by the switching unit instead of the comparison unit (Wl 56).
  • the comparison unit (W120) and the switchover unit (Wl 50) can also be combined into a combined switchover and comparison unit (W520).
  • n signals N140, ..., N14n go to the switching and comparison component W520. This can generate up to n output signals N160, ..., N16n from these input signals.
  • the "pure performance mode” all signals N14i are directed to the corresponding output signals N16i.
  • the "pure comparison mode” all signals N 140,..., N14n are only routed to exactly one of the output signals N16i.
  • n execution units and n> 2 more than just two operating modes are conceivable.
  • the logical component of a switching logic Nl 10 is included in this figure. This first determines how many output signals there are. Furthermore, the switching logic Nl 10 determines which of the input signals contribute to which of the output signals. An input signal can contribute to exactly one output signal. In other words, in terms of mathematical form, the circuit logic defines a function that assigns an element of the set ⁇ N160, ..., N16n ⁇ to each element of the set ⁇ N140, ..., N14n ⁇ .
  • the processing logic N 120 determines to each of the outputs N16i how the inputs contribute to that output signal.
  • the configuration of the switchover and comparison unit depends on or defines the operating mode of the multiprocessor system. In order to ensure consistent information about the operating mode within the system and, if necessary, to communicate this to external units, it is advantageous to identify the information about the operating mode in one of the system components and to make it available in one or more signals.
  • this signal can be generated in the switching and comparison unit and made available as a mode signal NI 50 to other parts of the system.
  • an error signal N 170 is shown in this figure.
  • the optional error signal is generated by fault circuit logic N130, which collects the error signals, and is either a direct forwarding of the single error signals or a bundling of the error information contained therein.
  • the mode signal Nl 50 is optional, but its use outside of this component can be used to advantage in many places.
  • the Combining the information of the switching logic NI 10 (ie the above-mentioned function) and the processing logic (ie the determination of the comparison operation per output signal, ie per function value) is the mode information and this defines or reflects the operating mode of the multiprocessor system.
  • this information is of course multi-valued, ie not representable only via a logical bit. Not all the theoretically conceivable modes are useful in a given implementation, it is preferable to restrict the number of modes allowed.
  • the mode signal then brings the relevant mode information to the outside.
  • An HW implementation is preferably shown so that the externally visible mode signal can be configured.
  • the processing logic and circuitry are also configured to be configurable. Preferably, these configurations are coordinated. Alternatively, one can give only or additionally changes of the mode signal to the outside. This has advantages especially in a two-configuration.
  • the present invention proposes the use of a dual port cache memory in a multiprocessor system having at least two execution units. Such a configuration is particularly advantageous if the multiprocessor system can switch between at least two operating modes, for example the comparison mode described above and the performance mode.
  • FIG. 2 shows a dual port cache 200, which essentially consists of a dual port
  • the dpRAM 230 is preferably provided with two independent address decoders, two data read / write stages and, in contrast to a single memory cell matrix, also with duplicated word and bit lines, so that at least the read operation for any memory cells of the dpRAMs from 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 are independent can be used by one another without considering how much time is needed to complete a request to read or write from that port, ie, how long it takes for the requested read or write operation to interact with requests from that port another port is completed.
  • the two ports of the dpRAM are via the signals 201 and 202 with the devices 210 and 220, respectively which perform an examination of the incoming addresses, data and control signals 211 and 221, respectively, of independent execution units 215 and 225 and optionally transform the addresses.
  • the execution units 215 and 225 correspond to the execution units Wl 10a and Wl 10b from FIG. 1.
  • the data are read from the cache via 201 through 210 to 211 or 202 through 220 to 221 output in the reverse direction of the execution units in the cache memory.
  • Both ports of the dpRAM are connected via the 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 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 at which the data addressed by the execution unit is searched for 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). In the case of coincidence and after the additional validation with the help of the control bits likewise stored in the cache for each block (for example valid bits, dirty bits and process bits).
  • a cache hit signal is generated indicating the validity of the date.
  • a table is preferably used which is arranged in a memory unit 214 or 224 (register or RAM, also referred to as TAGRAM) shown in FIG. 2 and is located in the units 210 and 220, respectively.
  • the table is an address transformation unit that both converts the virtual address to 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. 4, the significant address bits (index address) for the table are used as the address and the content is the access address of the dpRAM.
  • a block is the number of bytes which, in the case of a cache miss (lack of required data in the cache), are jointly fetched from the (main) memory into the cache when an address from this area is read-accessed ,
  • 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, ie it is prevented that two ports are simultaneously written.
  • This precision can also be performed dynamically, for example by the switching and comparison unit of the multiprocessor system or depending on the addressed memory area. 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. Similarly, with 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 delayed by pausing the read-to-write processor until the write operation is complete. For this purpose, an address comparator of all address bits (251) shown in FIG.
  • the output signals 213 and 223 can each occupy three signal states in an advantageous embodiment: enable, wait, equal. For a pure instruction cache, write access is not necessary; In this case, a signal state "equal" is sufficient for the output signals 213 and 223.
  • the address comparator prevents the data from being recalled from the memory if there is no hit, but a signal equal (constituent or state of 213 and 223) is indicated by the address comparator. In the case of reading via both ports, the equal signal is formed only by the significant address bits because the entire block is always fetched from the memory. Only when the
  • Block is stored in the cache, the waiting execution unit can access the cache.
  • two separate dual port caches for data and for instructions / instructions are provided, wherein in the instruction cache usually no write operations are provided.
  • the address comparator always checks in this case only
  • the simultaneous read access from both ports to the internal memory 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 has been implemented in several sub-memory areas that can be operated independently of each other. Each sub-memory enables only the processing of a port via enable signals.
  • FIG 5 such a memory 230 is shown, which includes two partial storage areas 235 and 236.
  • an address bit A becomes the two enable signals.
  • the two e- nable signals and the low-order address bits A i ... A 0 are included.
  • the 4 enable signals can be generated from two address bits, since each partial memory uniquely serves a specific address range. For example, with the 2 address bits A + i and A 1, four partial memory areas can be addressed by generating the four enable signals E 0 to E 3 corresponding to the binary significance in accordance with Table 1.
  • FIG. 5 For the partial memories 235 and 236 shown in FIG. 5, an exemplary embodiment is shown in FIG.
  • the designated there 260 part memory is executed in this particular embodiment as a single port RAM 280, the addresses, data and control signals are switched depending on the requirement. Switching is accomplished by a control circuit 270 by means of a multiplexer 275, depending on the enable 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 memory is executed in this particular embodiment as a single port RAM 280, the addresses, data and control signals are switched depending on the requirement. Switching is accomplished by a control circuit 270 by means of a multiplexer 275, depending on the enable signals and other control signals 2901
  • 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 enable 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, one becomes previously defined port first served. This preferred port remains connected to 2801 even if no read or write signal is active. Alternatively, the preferred port may be set dynamically by the processor system, 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 processing of at least one execution unit when a sub memory area is accessed simultaneously (also read).
  • This arrangement can also be expanded to accesses of more than two execution units:
  • a multi-port RAM can likewise be implemented in the same way if the switching over of the addresses, data and control signals is provided successively in succession via several multiplexers (FIG. 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 enable signals for the accesses to the individual RAMs in 281, 282 and 288.
  • Fig. 7a is an embodiment of a
  • Partial memory 28x (281 ... 288) closer shown.
  • the enable 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 a multiplexer 375 which, depending on the signal value, establishes the connections of the buses 381 or 382 to 387 or 388 with the signals 481... 488.
  • similar controllers 370 and multiplexers 375 are switched accordingly until in a last stage the signals 5901 and 5902 are used for the controller.
  • the output signal 5701 then connects either 581 or 582 to 681 connected to the single port RAM 280.
  • the multiplexers 375 of FIG. 7a connect, in addition to the address, data and control signals, also the enable signals of the next stages, which in 381, 382 ... 388 are included. Furthermore, comparison means may be included in 375 which determine the validity of the data read from the subareas in the case of a multi-associative addressing mode.
  • FIG. 8 shows an example of a configurable dual port cache for this purpose.
  • a mode or configuration signal 1000 is used in decoding the input signals for each of the two ports.
  • This configuration signal may correspond to the mode signal Nl 50 of FIG. 12, which may include portions of the information of the mode signal Nl 50 or may be formed from combination of Nl 50 with other information of the multiprocessor system.
  • each port will only have access to half of the cache, but each port will have full access to that area (without the activity on the other port).
  • the address bit A is not used to address the cache (in the direct-mapped mode), but data that differ in addressing only in this bit are stored in the same place in the cache. Only when reading the cache content can be determined by the
  • Identifier then be found out whether it is the date sought and accordingly the cach-hit signal generated.
  • the data including identifier and control bits are available via the signals 291, 292,... 297 to the ports 331, 332,... 337 and further to the signals 261, 262,. .267.
  • the various execution units do not interfere with accessing as far as possible only independent cache areas via the various ports. Since these conditions depend on the programs intended for the application, it is advantageous if there is the possibility of a different configuration depending on the application. on the other hand If the system state (comparison mode / performance mode) changes, the cache can be automatically switched over by the mode signal 1000.
  • a bivalent mode signal 1000 is not sufficient. In this case, it is advantageous to perform the mode signal in a multi-valued fashion or to introduce another mode signal 2000, not shown in FIGS. 8-10.
  • FIG. 10 Another embodiment is shown in Figure 10 when there is a multi-associative cache in which the data is read back from each sub-memory 281, 282, ... 288 along with the identifier and control bits.
  • the comparators 2811, 2812, ... 2817, 2821, 2822, ... 2827, ... 2881,2882, .. 2887 the validity is then checked and
  • FIG. 11 shows a multiprocessor system (W500) with two execution units (W510a, W510b), a switchover and comparison unit (W520) and a dual port cache memory (W550).
  • the comparison unit (W520) signals via signal path W518 if an error has occurred in comparison mode.
  • the execution units are each connected via signal lines or buses (W512a, W512b) to the switching and comparison unit (W520), which in turn has two connections (W513a, W513b) to a dual port cache memory and two connections (W514a, W514b ) to two system interfaces (W535, W545).
  • the signals (W512a, W512b) correspond to the signals 211 and 221 from FIG. 2 and have the same or similar amount of data.
  • the dual port cache memory (W550) is connected via a connection 241 and an optional memory interface (W530) with a (main)
  • the system interfaces can be used to connect additional units of the processor system (W580), such as Coprocessors or timer units and peripherals (W590) such as digital outputs, D / A converters and communication controllers.
  • An execution unit can be implemented both as processor / core / CPU, as well as FPU (floating point unit), DSP (digital signal processor), coprocessor, ALU (Arithmetic logical Unit).
  • FIG. 11a the multiprocessor system (W500) of FIG. 11 is abstracted and shown for clarity without the system interfaces (W535, W545), the connections (W514a, W514b) and the units W580 and W590.
  • This multiprocessor system can be operated in at least two modes of operation, a compare mode VM and a performance mode PM.
  • FIG. 13 shows the internal switching state of the switching and comparison unit (W520) for write and read access to the cache memory in the performance mode.
  • the comparator (W522) of the switching and comparison device (W520) is deactivated, ie no data is compared.
  • a third possibility is to ignore at system level the status or error signal (W518, shown in FIG. 14) of the comparator. Furthermore, one can also interrupt the error signal itself. All options have in common that they create a state in the system that does not matter if two or more potentially matched data are different. If this state is reached by a measure in the comparator or its input or output signals, then the comparator is referred to as passive or disabled.
  • each execution unit is connected to one port of the dual port cache
  • Port Cache memory and thus a higher priority execution unit, i. it is prevented that is written from both execution units to the same memory cell or the same memory block simultaneously.
  • This priority can also be dynamic, e.g. be determined by the switching and comparison unit of the multiprocessor system or depending on the addressed memory area. Only when the preferred port the
  • Write operation may write the other port.
  • An access conflict eg a simultaneous write access of two execution units to the same memory cell or the same memory block, can be recognized and resolved as follows:
  • the signals in the signals 211 and 221 (corresponding to the signals 512a and 512b in FIG. 11) contained addresses 212 and 222 of the processing units 215 and 225 in an address comparator 251
  • the device 250 compared with each other and tested together with the control signals also transmitted in 211 and 221 for compatibility. If these addresses are the same, and if at least one of the addresses is to be accessed in writing, then there is a conflict.
  • the access of at least one port to the dual port RAM 230 is prevented by means of the control signals contained in the signals 213 or 223.
  • a cache miss i. if, in a read access of a first execution unit to the cache memory, the requested data or instruction is not included in the cache memory, the data or instruction must be transferred via the bus system from a program or data memory, such as main memory (FIG. W570 from FIG. 11).
  • the incoming data is forwarded to the execution unit that requested that data and is written to the cache in parallel along with the identifier and control bits. If, during the transmission of a memory block from the main memory into the cache memory, an address from the same memory block is addressed, for example, by a second execution unit, this is detected by the address comparator and this prevents the memory block from being re-transmitted from the main memory.
  • the switching and comparing unit (W520) is advantageously arranged between the execution units (W510a, W510b) and the dual port cache memory W550. This allows several advantageous in comparison mode
  • each execution unit is connected via the signal connections W512a and W512b to the switching and comparison unit (W520) and thus also to the comparator (W522) contained therein according to FIGS. 15 and 16.
  • FIG. 14 and FIG. 15 the internal shading of the switching and comparison unit is shown for two embodiments of a read access in comparison mode.
  • the switch (W525) is in the same position as in the performance mode, ie each of the execution units (W510a, W510b) is connected to one port of the dual-port cache.
  • Memory (W550) connected. Since the two execution units execute the same programs, program segments or commands in comparison mode, they also access the same memory addresses. First, the addresses can be checked by the comparator (W522) and the transfer of the addresses takes place only if they match. Furthermore, it is alternatively or additionally possible to read out the data via different ports of the cache memory
  • Dual port cache memory e.g. according to FIG. 3, in which at the same time read access can be made to the same memory cell via the two ports.
  • the changeover switch here designated W526, is in a different switching position.
  • W513a connection to the dual port cache memory occurs only if the access addresses routed to the comparator via the signal connections W512a and W512b are identical. If the comparator detects a discrepancy of the addresses, the memory access via the signal W517 and the delay and interruption device W519 can be prevented.
  • a configuration of the switch and compare unit (W520) for write access to the dual port cache memory in the compare mode In this case, the access addresses guided via the signal connections W512a and W512b to the comparator and the data to be written are compared. If coincident, only the data of one execution unit, in the embodiment shown, the data obtained via the connection W512a, is written into the dual port cache memory via a connection (W513a) and a port. In the event of a discrepancy of the addresses and / or data obtained via the connections W512a and W512b, in a first exemplary embodiment the access to the cache memory is made via the signal W517 and the delay and interrupt device
  • the switch W527 sets the signal connection W512b exclusively to the comparison W522.
  • the access addresses passed through the signal links W512a and W512b to the comparator and the data to be written are compared, and at the same time, the data obtained through a link (e.g., W512a) is written in a buffer memory W529.
  • the buffer memory W529 is supplied with information representing the comparison result.
  • the information stored in the buffer memory is written into the dual port cache memory via a connection (e.g., W513a) and a port.
  • the comparator detects a discrepancy, the data in the buffer memory is not released for write access and advantageously deleted. This results in the advantage that only valid or correct data is written into the cache, but no delay of the execution units takes place.
  • one of the two execution units writes the data to the cache memory.
  • a comparison of the addresses and / or data of the two execution units obtained via the connections W512a and W512b takes place in parallel with the writing or after the writing of the data into the cache. If the comparator detects a discrepancy, the written date in the cache must subsequently be declared invalid.
  • the cache memory is provided by the switching and comparison unit with information representing a comparison result via a comparison / error signal (W518 from FIG. 11a and FIGS. 14-17 or N170 from FIG. 12).
  • the already written date is then marked as invalid by setting a bit in a status or control register of the cache or by deleting information from the HIT table, or replaced with an old date if it is still in the cache or in the system is available.
  • the advantage of this embodiment is that the execution units are not delayed by the comparison of the addresses and / or data and no buffer memory in the switching and comparison unit is necessary.
  • FIG. 18 shows a multiprocessing system (W501) with two separate dual port cache memories W550c and W550d.
  • W550c for example, is an instruction cache accessed read-only by the execution units (W510a, W510b) via W513ac or W513bc
  • W550d is a data cache to which the execution units access reading and writing via W513ad or W513bd can.
  • Each cache has access to the (main) memory via the signal connection 241c and the memory access unit W530c or the signal connection 241d and the memory access unit W530d.
  • the multiprocessor system (W501) is shown abstracted in FIG. 18 for better clarity.
  • Units W580 and W590 and memory system W570 may be wholly or partially included in the multiprocessor system (W501) of FIG.
  • the characterizing features of the invention may also be applied to multiprocessor systems having more than two execution units. Changes are necessary mainly in the switching and comparison unit.
  • the dual port cache can be extended to a multi-port cache, as described for example in the exemplary embodiments illustrated in FIG. 9 and FIG.
  • the number of execution units of the multiprocessor system and the number of ports of the multi-port cache and the number of partial storage areas of the cache memory need not be identical.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)

Abstract

Verfahren und Vorrichtung 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, 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 und über diese Ports ein Zugriff der wenigstens zwei Verarbeitungseinheiten zu gleichen oder verschiedenen Speicherzellen des zweiten Speichers oder Speicherbereichs erfolgt, wobei die Daten und/oder Befehle aus dem ersten Speichersystem Blockweise zwischengespeichert werden und bei Umschaltung.

Description

Verfahren und Vorrichtung 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
Die vorliegende Erfindung bezieht sich auf Mikroprozessorsysteme mit schnellem Zwi- schenspeicher (Cache) und beschreibt in diesem Kontext einen dual port Cache.
Stand der Technik
Aus dem Stand der Technik sind MikroController mit wenigstens zwei integrierten Cores (CPUs) bekannt. Diese MikroController sind auch unter der Bezeichnung Dual-Core oder Multi-
Core-Systeme bekannt. Dabei führen die wenigstens zwei Cores redundant und taktsynchron die gleiche Programme, Programmsegmente oder Befehle aus, die Ergebnisse der beiden Cores werden verglichen, und ein Fehler wird dann bei dem Vergleich auf Übereinstimmung erkannt werden. Im Folgenden wird diese Konfiguration eines Multi-Core Systems als Vergleichsmodus bezeichnet.
Dual-Core oder Multi-Core Architekturen werden in anderen Anwendungen auch zur Perfor- manz-Steigerung eingesetzt. Beide Cores führen unterschiedliche Programme, Programmsegmente und Befehle aus, wodurch sich eine Leistungssteigerung erzielen lässt, weshalb diese Konfiguration eines Multi-Core Systems als Leistungsmodus oder Performanzmodus bezeichnet wird. Dieses System wird auch als ein symmetrisches Multiprozessorsystem (SMP) bezeichnet. Eine Erweiterung dieser Systeme kann mittels einer Umschaltung erreicht werden, d.h. je nach Anwendungszweck des Multiprozessorsystem kann dieses in einem Vergleichsmodus oder in einem Performanzmodus betreiben werden. Im Vergleichsmodus werden die Ausgangsignale der Cores miteinander verglichen. Bei einer Differenz wird ein Fehlersignal ausgegeben. Im Performanzmodus arbeiten die beiden Cores als ein symmetrisches Mehrprozessorsystem
(SMP) und führen unterschiedliche Programme, Programmsegmente oder Befehle aus. Die Vergleichseinheit ist in diesem Modus nicht aktiv. Dieser Erweiterung liegt die Annahme zugrunde, dass nicht alle Programmsegmente sicherheitskritisch sind und für diese die vorhandenen Komponenten nicht zur Fehlerentdeckung sondern zur Performanzsteigerung eingesetzt werden können.
Zwischen diesen beiden Modi eines solchen Multiprozessorsystems mit wenigstens zwei Ausführungseinheiten kann, über Software gesteuert, dynamisch im Betrieb umgeschaltet werden.
Mikroprozessoren werden ab einer bestimmten Taktfrequenz mit schnellen Zwischenspeichern
(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. Caches sind in solchen Speichertechnologien realisiert, die einen schnellen Zugriff auf den Speicherinhalt ermöglichen und sind räumlich nahe am Prozessor angebracht. In einem Cache ist eine Teilmenge der Daten und/oder Befehle aus dem Hauptspeicher zwischengespeichert. Durch den Einsatz eines Cache-Speichers wird der langsame Zugriff auf einen großen (Haupt-) Speicher teilweise vermieden bzw. reduziert und der Prozessor muss dann nicht auf die verzögerte Bereitstellung der Daten durch den Hauptspeicher 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 den aus dem Stand der Technik bekannten Multiprozessorsystemen ist es üblich, jeden Prozessor mit einem Cache oder bei Multi-Level Caches mit entsprechend mehreren hierarchisch gegliederten Caches auszurüsten. Haben die Prozessoren jeweils einen Cache fest zugeordnet und sind sie darüber hinaus in verschiedene Betriebsmodi des Prozessorsystems schaltbar, wo sie entweder unterschiedliche Programme, Programmsegmente oder Befehle abarbeiten (Per- formanzmodus) oder gleiche Programme, Programmsegmente oder Befehle abarbeiten und die Ergebnisse einem Vergleich unterziehen (Vergleichsmodus), so müssen die Daten bzw. Befehle in den parallelen Caches eines jeden Controllers beim Umschalten zwischen den Betriebsmodi entweder gelöscht werden, oder sie müssen beim Laden der Caches mit der entsprechenden In- formation des jeweiligen Betriebsmodus versehen werden, die vorzugsweise zusammen mit den
Daten abgespeichert wird.
Aufgabe der Erfindung ist es Mittel und Verfahren zur Verfügung zu stellen, die Größe des Caches zu optimieren und den Vorgang der Umschaltung zwischen einem Performanzmodus und einem Vergleichsmodus zu beschleunigen.
Vorteile der Erfindung
In einem Multiprozessorsystem, das während des Betriebs zwischen verschiedenen Betriebsmo- di umschalten kann, ist es von besonderem Vorteil, wenn nur ein gemeinsamer (ggf. hierarchisch gegliederter) Cache vorhanden ist. Jedes Datum oder jeder Befehl ist darin nur einmal abgelegt und der Zugriff darauf ist gleichzeitig möglich.
In einem Multiprozessorsystem mit mehreren Betriebsmodi ergeben sich durch den Einsatz ei- nes Dual Port Cache folgende Vorteile:
Die Daten/Befehle müssen für die verschiedenen Ausführungseinheiten und/oder die verschiedenen Betriebsmodi nicht mehrfach in den Cache geholt und ggf. gepflegt werden. - A -
Pro Datum/Befehl muss hardwaremäßig nur ein Speicherplatz bereitgestellt werden, auch wenn dieses Datum bzw. dieser Befehl von mehreren Ausfiihrungseinheiten und/oder in mehreren Betriebsmodi benutzt wird.
Die Daten/Befehle im Cache müssen nicht dahingehend unterschieden werden, ob sie in verschiedenen Betriebsmodi des Multiprozessorsystems benutzt werden.
Die Daten/Befehle im Cache müssen nicht dahingehend unterschieden werden, in welchen Betriebsmodi des Multiprozessorsystems sie bearbeitet werden und/oder in welchen Betriebsmodi sie in den Cache geladen bzw. geschrieben wurden und/oder von welchem Core sie angefordert bzw. geschrieben wurden.
Der Cache muss bei Wechsel des Betriebsmodus nicht gelöscht werden, damit müssen die Cache-Inhalte weniger oft geladen werden und die Zugriffe auf den Hauptspeicher werden redu- ziert. Eine Umschaltung kann dadurch schneller erfolgen als in Systemen, die mehrerer Caches haben.
Zwei Prozessoren können gleichzeitig zu den gleichen Daten/Befehlen im Cache lesend zugreifen.
Anstelle des „write through" Modus kann auch ein „write back" Modus für den Cache eingesetzt werden, der insbesondere beim Schreiben zeitgünstiger ist, weil nicht ständig der (Haupt-) Speicher aktualisiert werden muss, sondern erst beim Überschreiben der Daten im Cache; es gibt keine Konsistenzprobleme, weil der Cache für beide Prozessoren die Daten aus der glei- chen Quelle liefert.
Vorteilhaft ist ein 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 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 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 undü- ber diese Ports ein Zugriff der wenigstens zwei Verarbeitungseinheiten zu gleichen oder verschiedenen Speicherzellen des zweiten Speichers oder Speicherbereichs erfolgt, wobei die Daten und/oder Befehle aus dem ersten Speichersystem Blockweise zwischengespeichert werden und bei Umschaltung .
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass der zweite Speicher o- der Speicherbereich in wenigstens zwei Adressbereiche unterteilt ist, die unabhängig voneinander gelesen oder geschrieben werden können.
Vorteilhaft ist ein Verfahren beschrieben,, dadurch gekennzeichnet, dass ein Adressdecoder vorhanden ist, der enable-Signale generiert, die bei einem gleichzeitigen Zugriff auf einen Adressbereich durch mehrere Ports nur einem Port den Zugriff ermöglichen und den Zugriff des wenigstens einen weiteren Ports unterbinden oder verzögern, insbesondere durch wait-Signale.
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass mehr als zwei Ports vorgesehen sind, wobei Auswahleinrichtungen vorhanden sind und der Zugriff zu den voneh- ander unabhängigen Adressbereichen über die Auswahleinrichtungen mit mehreren Stufen erfolgt und dazu die enable-Signale über diese Stufen weitergeleitet werden.
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass es mindestens ein Modussignal gibt, das die Zugriffsmöglichkeiten der verschiedenen Ports umschaltet.
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass es mindestens ein Konfigurationssignal gibt, das die Zugriffsmöglichkeiten der verschiedenen Ports umschaltet.
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass beide Verarbeitungseinheiten einen Lesezugriff vorgeben. Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, das bei Vorgabe des Lesezugriffs durch beide Verarbeitungseinheiten den Daten und/oder Befehle zugeordnete Kennuα- gen oder Zugriffsadressen verglichen werden und nur bei Übereinstimmung ein Lesezugriff auf den Cache durchgeschaltet wird.
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass bei Vorgabe eines Lesezugriffs beide Verarbeitungseinheiten auf das Cachespeichersystem zugreifen.
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass die beim Lesezugriff durch beide Verarbeitungseinheiten gelesenen Daten und/oder Befehle verglichen werden und bei Abweichung ein Signal, insbesondere ein Fehlersignal erzeugt wird.
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass bei einem Schreibzugriff auf den zweiten Speicher oder Speicherbereich zu schreibende Daten und/oder Befehle verglichen werden und nur dann eingeschrieben werden, wenn diese übereinstimmen.
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass bei einem Schreibzugriff bis die Daten und/oder Befehle verglichen sind die Verarbeitungseinheiten angehalten werden.
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass die Daten und /oder Befehle in einen Pufferspeicher oder Pufferspeicherbereich geschrieben werden und erst nach erfolgreichem Vergleich in den zweiten Speicher oder Speicherbereich übernommen werden.
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass bei einem Schreibzugriff auf den zweiten Speicher oder Speicherbereich zu schreibende Daten und/oder Befehle nur von einer Verarbeitungseinheit geschrieben werden und abhängig von einem parallel ausgeführten Vergleich bei Unterscheidung die eingeschriebenen Daten und/oder Befehle gesperrt oder ungültig erklärt werden.
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass die Sperrung oder Un- gültigerklärung durch Setzen oder Rücksetzen wenigstens eines Bits erfolgt. Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass die Sperrung oder Un- gültigerklärung durch Überschreiben mit einem anderen, insbesondere alten Datum und/oder Befehl erfolgt.
Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass die Sperrung oder Ungültigerklärung durch Streichen einer entsprechenden Eintragung einer Inhaltstabelle des zweiten Speichers oder Speicherbereichs erfolgt.
Vorteilhaft ist eine Vorrichtung 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, wobei Umschaltmittel enthalten sind und zwischen wenigstens zwei Betriebsmodi umgeschaltet wird, wobei Vergleichsmittel enthalten sind und ein erster Betriebsmodus einem Vergleichsmodus und ein zweiter Betriebsmodus ei- nem 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 und über diese Ports ein Zugriff der wenigstens zwei Verarbeitungseinheiten zu gleichen oder verschiedenen Speicherzellen des zweiten Speichers oder Speicherbereichs erfolgt, wobei die Daten und/oder Be- fehle aus dem ersten Speichersystem Blockweise zwischengespeichert werden.
Vorteilhaft ist weiterhin eine solche Vorrichtung, dadurch gekennzeichnet, dass im Cachespeichersystem Daten und Befehle getrennt abgespeichert werden und so ein Datenspeicher oder Datenspeicherbereich und ein Befehlsspeicher oder Befehlsspeicherbereich vorgesehen sind. Vorteilhaft ist weiterhin eine solche Vorrichtung, dadurch gekennzeichnet, dass der zweite
Speicher oder Speicherbereich in wenigstens zwei Adressbereiche unterteilt ist, die unabhängig voneinander gelesen oder geschrieben werden können.
Vorteilhaft ist weiterhin eine solche Vorrichtung, dadurch gekennzeichnet, dass ein Adressde- coder vorhanden ist, der enable-Signale generiert, die bei einem gleichzeitigen Zugriff auf einen Adressbereich durch mehrere Ports nur einem Port den Zugriff ermöglichen und den Zugriff des wenigstens einen weiteren Ports unterbinden oder verzögern, insbesondere durch wait-Signale.
Vorteilhaft ist weiterhin eine solche Vorrichtung, dadurch gekennzeichnet, dass mehr als zwei Ports vorgesehen sind, wobei Auswahleinrichtungen vorhanden sind und der Zugriff zu den voneinander unabhängigen Adressbereichen über die Auswahleinrichtungen mit mehreren Sti- fen erfolgt und dazu die enable-Signale über diese Stufen weitergeleitet werden.
Weitere Vorteile und vorteilhafte Ausgestaltungen ergeben sich aus den Merkmalen der Ansprüche sowie der Beschreibung.
Figuren und Tabellen
In Figur 1 ist ein Multiprozessorsystem mit zwei Ausführungseinheiten gezeigt, mit Mitteln zum Vergleich von Daten der Ausführungseinheiten und Mitteln zur Um- Schaltung zwischen wenigstens zwei Betriebsmodi des Multiprozessorsys- tems.
In Figur 2 ist ein Dual Port Cache Speicher für Daten und/oder Befehle gezeig, der einen internen Dual Port Speicher, zwei Ports zum Anschluss jeweils einer Ausführungseinheit und ein Interface zum Daten-/Adressbus des Multiprozessorsys- tems hat.
In Figur 3 ist ein Dual Port Cache mit weiteren Details gezeigt.
In Figur 4 ist eine Einrichtung und ein Verfahren zur Adresstransformation in einem Dual Port Cache gezeigt.
In Figur 5 ist eine Aufteilung des internen Dual Port Speichers in zwei Teilbereiche ge- zeigt, die unabhängig voneinander betrieben werden können und mit je zwei separaten enable-Signalen von jedem Port im Zugriff gesteuert werden.
In Figur 6 ist eine Realisierung eines Dual Port Speicherbereiches durch einen Single
Port Speicher mittels Portumschaltung gezeigt. In Figur 7 ist die Einteilung eines Multiple Port Speichers mit p Ports in mehrere Teil-
Adressbereiche l...q, die parallel bearbeitet werden können, gezeigt.
In Figur 7a ist eine Realisierung eines Multi Port Speicherbereiches durch einen Single Port Speicher mittels Portumschaltung gezeigt. In Figur 8 ist eine Aufteilung der RAM-Bereiche für die Ports in Abhängigkeit von einem Systemzustand oder einer Konfiguration gezeigt.
In Figur 9 ist Aufteilung eines multi port RAMs in Bereiche in Abhängigkeit von einem
Systemzustand oder einer Konfiguration durch Generierung der entsprechende Enable-Signale gezeigt. In Figur 10 ist die Aufteilung eines multi port RAMs in Bereiche mit mehrfachassoziativem Zugriff gezeigt.
In Figur 11/1 Ia ist ein Multiprozessorsystem mit zwei Ausführungseinheiten und einem Dual Port Cache gezeigt, das vorzugsweise symmetrisch aufgebaut ist.
In Figur 12 ist ein allgemeiner Fall einer Umschalt- und Vergleichseinheit, auch für die Verwendung für mehr als zwei Ausführungseinheiten, gezeigt.
In Figur 13 ist der interne Schaltzustand der Umschalt- und Vergleichseinheit für Schreibund Lesezugriffe auf den Cache-Speicher im Performanzmodus gezeigt.
In Figur 14 ist der interne Schaltzustand der Umschalt- und Vergleichseinheit für Lesezugriffe auf den Cache-Speicher in einer ersten Ausführung des Vergleichs- modus gezeigt.
In Figur 15 ist der interne Schaltzustand der Umschalt- und Vergleichseinheit für Lesezugriffe auf den Cache-Speicher in einer zweiten Ausführung des Vergleichsmodus gezeigt.
In Figur 16 ist eine Konfiguration einer Umschalt- und Vergleichseinheit mit Unterbre- chungseinrichtung für schreibenden Zugriff auf den Cache-Speicher im Vergleichsmodus gezeigt.
In Figur 17 ist eine Konfiguration einer Umschalt- und Vergleichseinheit mit Puffereinrichtung für schreibenden Zugriff auf den Cache-Speicher im Vergleichsmodus gezeigt. In Figur 18 ist ein Multiprozessorsystem mit zwei Ausfiihrungseinheiten und mit getrennten Dual Port Cache-Speichern für Befehle und Daten gezeigt.
Beschreibung der Ausfiihrungsbeispiele
Als Ausfiihrungseinheit 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.
Die Erfindung bezieht sich auf ein in Figur 1 dargestelltes Multiprozessorsystem (WlOO) mit wenigstens zwei Ausführungseinheiten (Wl 10a, Wl 10b), einer Vergleichseinheit (W120) und einer Umschalteinheit (Wl 50). Die Ausführungseinheiten sind jeweils über Signalleitungen bzw. Busse (Wl 12a, Wl 12b) mit der Vergleichseinheit (W120) und der Umschalteinheit
(W 150) verbunden. Die Umschalteinheit (W 150) hat wenigstens zwei Ausgänge zu zwei Systemschnittstellen (W130a, W130b). Über diese Schnittstellen können Speicher oder Peripherals wie Digitale Ausgänge, D/A- Wandler, Kommunikationscontroller angesteuert werden. Eine Ausführungseinheit kann dabei sowohl als Prozessor/Core/CPU, als auch als FPU (Floating Point Unit), DSP (Digitaler Signalprozessor), Coprozessor, ALU (Arithmetic logical Unit) realisiert sein.
Dieses Multiprozessorsystem kann in wenigstens zwei Betriebsmodi betrieben werden, einem Vergleichsmodus VM und einem Performanzmodus PM.
Im Performanzmodus PM werden in den unterschiedlichen Ausführungseinheiten unterschiedliche Befehle, Programmsegmente oder Programme parallel ausgeführt. In diesem Betriebsmodus ist die Vergleichseinheit deaktiviert. Die Umschalteinheit (Wl 50) ist in diesem Betriebsmodus so konfiguriert, dass jede Ausführungseinheit exklusiv mit einer der Systemschnittstellen (W130a, W130b) verbunden ist. Über die Systemschnittstellen kann ein Resultat einer Ausfih- rungseinheit in einen Speicher (W 170) geschrieben werden oder auf einen Peripheriebaustein (W180, W190) ausgegeben werden. Ein Peripheriebaustein kann z.B. ein Analog-Digital- Wandler oder ein Kommunikationscontroller eines Kommunikationssystems (z.B. SPI, LIN, CAN, FlexRay) sein. Zur Deaktivierung der Vergleichseinheit gibt es mehrere Möglichkeiten. Zum einen kann man an den Vergleicher ein Signal führen (z.B. über die Verbindung W125), mit dem dieser aktiviert oder deaktiviert wird. Dazu ist im Vergleicher eine zusätzliche Logik einzufügen, die dies durchführen kann. Eine weitere Möglichkeit ist es, dem Vergleicher keine zu vergleichenden Daten zuzuführen. Eine dritte Möglichkeit ist es, auf Systemebene das Fehlersignal (Wl 55) des
Vergleichers zu ignorieren. Weiter kann man auch das Fehlersignal selbst unterbrechen. Allen Möglichkeiten ist gemeinsam, dass sie im System einen Zustand erzeugen, bei dem es keine Rolle spielt, wenn zwei oder mehr Daten, die potenziell verglichen werden, verschieden sind. Wird dieser Zustand durch eine Maßnahme im Vergleicher oder dessen Ein- oder Ausgangssig- nalen erreicht, dann wird der Vergleicher als passiv oder deaktiviert bezeichnet.
Im Vergleichsmodus VM werden in beiden Ausführungseinheiten (Wl 10a, Wl 10b) gleiche o- der gleichartige Befehle, Programmsegmente oder Programme abgearbeitet. Über die Signalleitungen bzw. Busse (Wl 12a, Wl 12b) werden die Ausgangssignale der Ausführungseinheiten an die Vergleichseinheit (W 120) und an die Umschalteinheit (W 150) geführt. In der Vergleichseinheit werden die beiden Daten auf Übereinstimmung geprüft. Nach erfolgtem Vergleich wird der Umschalteinheit über ein Statussignal (W125) mitgeteilt, ob diese eines der übereinstimmenden Ergebnisse an eine der Systemschnittstellen ausgeben darf oder ob sie aufgrund einer erkannten Diskrepanz der Ergebnisse das Signal sperren muss. In diesem Fall kann von der Vergleichseinheit ein optionales Fehlersignal (Wl 55) ausgegeben werden. Dieses Fehlersignal kann anstatt von der Vergleichseinheit auch von der Umschalteinheit ausgegeben werden (Wl 56). Die Vergleichseinheit (W120) und die Umschalteinheit (Wl 50) können auch zu einer kombinierten Umschalt- und Vergleichseinheit (W520) zusammengefasst werden.
Ein allgemeiner Fall der Umschalt- und Vergleichskomponente, auch für die Verwendung für mehr als zwei Ausführungseinheiten, ist in Figur 12 gezeigt. Von den n zu berücksichtigenden Ausführungseinheiten gehen n Signale N 140,..., N14n an die Umschalt- und Vergleichskomponente W520. Diese kann bis zu n Ausgangssignale N160,..., N16n aus diesen Eingangssignalen erzeugen. Im einfachsten Fall, dem "reinen Performanzmodus", werden alle Signale N14i auf die entsprechenden Ausgangssignale N16i geleitet. Im entgegen gesetzten Grenzfall, dem "reinen Vergleichsmodus" werden alle Signale N 140,..., N14n nur auf genau eines der Ausgangssignale N16i geleitet. In einem System mit n Ausfiihrungseinheiten und n > 2 sind mehr als nur zwei Betriebsmodi denkbar. Anhand Fig.12 lässt sich darlegen, wie die verschiedenen denkbaren Modi entstehen können. Dazu ist in dieser Figur die logische Komponente einer Schaltlogik Nl 10 enthalten. Diese legt zunächst fest, wie viele Ausgangssignale es überhaupt gibt. Weiter legt die Schaltlogik Nl 10 fest, welche der Eingangssignale zu welchem der Ausgangssignale beitragen. Dabei kann ein Eingangssignal zu genau einem Ausgangssignal beitragen. In mathematischer Form anders formuliert ist also durch die Schaltlogik eine Funktion definiert, die jedem Element der Menge {N140,..., N14n} ein Element der Menge {N160,..., N16n} zuordnet.
Die Verarbeitungslogik N 120 legt dann zu jedem der Ausgänge N16i fest, in welcher Form die Eingänge zu diesem Ausgangsignal beitragen. Um beispielhaft die verschiedenen Variationsmöglichkeiten zu beschreiben, sei ohne Beschränkung der Allgemeinheit angenommen, dass der Ausgang N 160 durch die Signale N141, ..., N 14m erzeugt wird. Falls m = 1 entspricht dies eh- fach einer Durchschaltung des Signals, falls m= 2 dann werden die Signale N141, N142 verglichen. Dieser Vergleich kann synchron oder asynchron durchgeführt werden, er kann bitweise oder nur auf signifikante Bits oder auch mit einem Toleranzband durchgeführt werden.
Die Konfiguration der Umschalt- und Vergleichseinheit (W520) ist je nach Priorität der Sys- temkomponenten abhängig vom Betriebsmodus des Multiprozessorsystems oder definiert diesen. Um innerhalb des Systems eine konsistente Information über den Betriebsmodus sicherai- stellen und diesen ggf. externen Einheiten mitzuteilen, ist es vorteilhaft, die Information über den Betriebsmodus in einer der Systemkomponenten zu identifizieren und in einem oder mehreren Signalen zur Verfügung zu stellen.
In einer bevorzugten Ausführung kann dieses Signal in der Umschalt- und Vergleichseinheit erzeugt werden und als Modussignal Nl 50 anderen Teilen des Systems zur Verfügung gestellt werden. Darüber hinaus ist ein Fehlersignal N 170 in dieser Figur eingezeichnet. Das optionale Fehlersignal wird von der Fehlerschaltungslogik N130, die die Fehlersignale sammelt, generiert und ist entweder eine direkte Weiterleitung der Einzelfehlersignale oder eine Bündelung der darin enthaltenen Fehlerinformation. Das Modussignal Nl 50 ist optional, seine Verwendung außerhalb dieser Komponente kann aber an vielen Stellen vorteilhaft verwendet werden. Die Kombination der Information der Schaltlogik Nl 10 (d.h. die o. g. Funktion) und der Verarbeitungslogik (d.h. die Festlegung der Vergleichsoperation pro Ausgangssignal, d.h. pro Funktionswert) ist die Modusinformation und diese legt den Betriebsmodus des Multiprozessorsys- tems fest bzw. spiegelt diesen wider. Diese Information ist im allgemeinen Fall natürlich mehr- wertig, d.h. nicht nur über ein logisches Bit darstellbar. Nicht alle theoretisch denkbaren Modi sind in einer gegebenen Implementierung sinnvoll, man wird vorzugsweise die Zahl der erlaubten Modi einschränken. Das Modussignal bringt dann die relevante Modusinformation nach außen. Eine HW-Implementierung ist vorzugsweise so dargestellt, dass das extern sichtbare Modussignal konfiguriert werden kann. Vorzugsweise sind ebenfalls die Verarbeitungslogik und die Schaltlogik konfigurierbar gestaltet. Vorzugsweise sind diese Konfigurationen aufeinander abgestimmt. Alternativ kann man auch nur oder ergänzend Änderungen des Modussignals nach außen geben. Dies hat insbesondere in einer Zweierkonfiguration Vorteile.
Gemäß den kennzeichnenden Merkmalen des Anspruchs 1 wird in der vorliegenden Erfindung der Einsatz eines Dual Port Cache-Speichers in einem Multiprozessorsystem mit wenigstens zwei Ausführungseinheiten vorgeschlagen. Besonders vorteilhaft ist eine solche Konfiguration dann, wenn das Multiprozessorsystem zwischen wenigstens zwei Betriebsmodi, beispielsweise dem oben beschriebenen Vergleichsmodus und dem Performanzmodus, umschalten kann.
In Figur 2 ist ein Dual Port Cache 200 gezeigt, der zu wesentlichen Teilen aus einem Dual Port
RAM (dpRAM, 230), einer Buszugriffssteuerung 240 und einer Einheit 250, dieu. a. eine Ad- ressdecodierung enthält, besteht. Der dpRAM 230 ist vorzugsweise mit zwei voneinander unabhängigen Adressdecodern, zwei Daten Schreib-/Lese- Stufen und im Unterschied zu einer einfe- chen Speicherzellen-Matrix auch mit duplizierten Wort- und Bitleitungen versehen, so dass zu- mindest 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 zugreifbar 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 Ausführungseinheiten 215 und 225 entsprechen dabei in einem bevorzugten Ausführungsbeispiel den Ausführungseinheiten Wl 10a und Wl 10b aus Figur 1. Die Da- ten werden beim Lesen aus dem Cache-Speicher 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 verbinden ist, die die Verbindung zu einem hier nicht dargestellten (Haupt-)Speicher oder zu einem Cache der nächsten Stufe herstellen.
In Figur 3 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 Verarbeitungseinheiten 215 und 225 in einem Adresscomparator 251 der Einrichtung 250 mi- einander 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. Solche 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 Da- ten/Befehle zugegriffen werden kann. Je nach Adressierungsmodus wird eine oder werden mehrere Blockadressen ausgewählt, an denen das von der Ausführungseinheit adressierte 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ätzlichen Ü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 des Datums anzeigt. Zur Adresstransformation wird vorzugsweise eine Tabelle eingesetzt, die in einer in Figur 2 dargestellten Speichereinheit 214 bzw. 224 (Register oder RAM, auch als TAGRAM 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 umwandelt 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 4 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. Als Block bezeichnet man dabei die Anzahl der Bytes, die im Falle eines Cache Miss (Fehlen der erfordσ- lichen Daten im Cache) gemeinsam aus dem (Haupt-) Speicher in den Cache geholt werden, wenn auf eine Adresse aus diesem Bereich lesend zugegriffen wird.
Für den byte- oder Wortweisen Zugriff zum Cache werden die für den Block signifikanten Ad- ressbits 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. Diese Prfa- rität kann auch dynamisch, z.B. von der Umschalt- und Vergleichseinheit des Multiprozessor- system oder abhängig vom adressierten Speicherbereich erfolgen. 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 Speicher- zelle vom jeweils anderen Port gelesen wird, oder die Leseoperation kann verzögert werden, indem der Prozessor mit Lesewunsch solange angehalten wird, bis die Schreiboperation abgeschlossen ist. Dazu ist ein in Figur 3 dargestellter Adresscomparator aller Adressbits (251) mit einem entsprechenden Arbiter 252 vorgesehen, der auch die Steuersignaleder Prozessoren 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: enable, wait, equal. Für einen reinen Instruktionscache ist ein Schreibzugriff nicht notwendig; in diesem Fall reicht ein Signalzustand "equal" für die Ausgangssignale 213 und 223 aus.
Im Falle eines Cache Miss muss das Datum bzw. der Befehl über das Bussystem aus einem Programm- oder Datenspeicher geholt werden. Die ankommenden Daten werden zu der Ausfüh- rungseinheit weitergeleitet, die diese Daten angefordert hat und werden parallel zusammen mit der Kennung und den Controlbits in den Cache geschrieben. Auch hier verhindert der Adress- comparator 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 Lesens über beide Ports nur von den signifikanten Ad- ressbits 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/Instruktionen vorgesehen, wobei im Instruktionscache ü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 auf den internen Speicher nur dann uneingeschränkt funktionieren, 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 kam der Cache in mehreren Teilspeicherbereichen realisiert werden, die unabhängig voneinander betrieben werden kön- nen. Jeder Teilspeicher ermöglicht über enable-Signale nur die Abarbeitung eines Ports. In Figur 5 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 Enable- Signale E0 und Ei gebildet, und zwar so, dass fiir den Fall A=O gilt: E0=I und Ei=O; und fiir den Fall A1=I gilt: E0=O und Ei=I . In den Signalen 233 und 234 sind in diesem Fall die beiden e- nable-Signale und die niederwertigen Adressbits A i ... A0 enthalten.
Für ein weiteres Ausfiihrungsbeispiel mit vier Teilspeichern können die 4 enable-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 enable-Signale E0 bis E3 entsprechend der binären Wertigkeit gemäß Tabelle 1 generiert werden.
Für die in Figur 5 gezeigten Teilspeicher 235 und 236 ist in Figur 6 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 Anforderung umgeschaltet werden. Die Umschaltung wird durch eine Steuerschaltung 270 mit Hilfe el- nes Multiplexers 275 vorgenommen, abhängig von den enable-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 Cache-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 enable-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ührungseinheit, wenn auf einen Teilspeicherbereich gleichzeitig (auch lesend) zugegriffen wird. Je nach Anwendung ist es nun möglich, verschiedene Aufteilungen der RAM-Teilbereiche so vorzu- nehmen, dass zusammen mit der Gestaltung der Befehlsabläufe und der Datenzugriffe von den unterschiedlichen Ausführungseinheiten möglichst wenig gleichzeitige Zugriffe zu gleichen Teil-Speicherbereichen auftreten. Diese Anordnung ist auch erweiterbar auf Zugriffe von mehr als zwei Ausführungseinheiten: Es ist in gleicher Weise auch ein Multi-Port RAM realisierbar, wenn die Umschaltung der Adressen, Daten und Steuersignale über mehrere Multiplexer sti- fenweise nacheinander vorgesehen wird (Figur 7).
Ein solches Multi Port RAM 290 ist in Figur 7 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 enable-Signale für die Zugriffe zu den einzelnen RAMs in 281, 282 und 288. In Figur 7a ist ein Ausführungsbeispiel für einen
Teilspeicher 28x (281 ... 288) näher gezeigt. Dort werden in einer ersten Stufe der Steuereinrichtungen 370 die enable-Signale und Steuersignale 3901, 3902, ... 3908 aus den Steuersignalen 291, 292 ... 298 verarbeitet zu den Ausgangssignalen 3701,.. 3707. Diese Ausgangssignale steuern je einen 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 280 verbunden ist.
Im Gegensatz zu den Multiplexern 275 von Figur 6 verbinden die Multiplexer 375 von Figur 7a neben den Adress-, Daten- und Steuersignalen auch die enable-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 Teilbereichen gelesenen Daten ermitteln.
In einem weiteren vorteilhaften Ausfuhrungsbeispiel eines Dual Port Cache-Speichers kann die
Zuordnung 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 ein Modus- oder Konfigurationssignal 1000 bei der Decodierung der Eingangssignale für jeden der zwei Ports be- nutzt. Dieses Konfigurationssignal kann dem Modus-Signal Nl 50 aus Figur 12 entsprechen, o- der Teile der Informationen des Modus-Signals Nl 50 beinhalten oder aus Kombination von Nl 50 mit anderen Informationen des Multiprozessorsystems gebildet werden. Tabelle 2 zeigt eine Möglichkeit der Veränderung der Decodierung in Abhängigkeit von diesem Signal 1000, das hier mit M 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 A 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 an die Signale 261, 262,...267 auszugeben. Ebenso ist es möglich im Performanzmodus (M=I) nur dem Port 1 den Zugriff auf den gesamten Cache zu erlauben. Diese weitre Ausführung ist in Tabelle 3 dargestellt. Der Anwender kann auch durch mehrere Konfigurationssignale beliebige andere Aufteilungen des Caches vorndi- men. Das erlaubt bei einem größeren Cache-Bereich einerseits eine höhere Hit-Rate und verringert damit die Notwendigkeit des Holens der Daten aus dem Hauptspeicher. Andererseits be- hindern 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 (Vergleichsmodus / Performanzmodus) 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 entsprechend in den Ports generierter select-Signale gewährleistet, die in den Signalen 291, 292,...297 enthalten sind.
Sollen in einem Multiprozessorsystemen mit mehr als zwei Betriebsmodi abhängig von diesen Betriebsmodi auch mehr als zwei Konfigurationen des Cache-Speichers möglich sein, so reicht ein zweiwertiges Modussignal 1000 nicht aus. In diesem Fall ist es vorteilhaft, das Modussignal mehrwertig auszuführen oder ein weiteres, in den Figuren 8-10 nicht dargestelltes Modussignal 2000 einzuführen.
Eine weiteres Ausführungsbeispiel 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 Signale 2610, 2620,...2670 weitergeleitet.
Anstelle eines RAM-Speicher kann die erfindungsgemäße Anordnung eines Dual Port Cache- Speichers auch mit anderen Speichertechnologien wie MRAM, FERAM o. ä. dargestellt wer- den. In Figur 11 ist ein Multiprozessorsystem (W500) mit zwei Ausfiihrungseinheiten (W510a, W510b), einer Umschalt- und Vergleichseinheit (W520) und einem Dual Port Cache-Speicher (W550) gezeigt. Über den Signalpfad W518 signalisiert die Vergleichseinheit (W520), wenn im Vergleichsmodus ein Fehler aufgetreten ist. Die Ausführungseinheiten sind jeweils über Signal- leitungen bzw. Busse (W512a, W512b) mit der Umschalt- und Vergleichseinheit (W520) verbunden, die ihrerseits zwei Verbindungen (W513a, W513b) zu einem Dual Port Cache-Speicher und zwei Verbindungen (W514a, W514b) zu zwei Systemschnittstellen (W535, W545) hat. Die Signale (W512a, W512b) entsprechen dabei den Signalen 211 und 221 aus Figur 2 verfügen ü- ber den gleichen oder ähnlichen Umfang an Daten. Der Dual Port Cache-Speicher (W550) ist über eine Verbindung 241 und eine optionale Speicherschnittstelle (W530) mit einem (Haupt-)
Speichersystem (W570) verbunden. Über die Systemschnittstellen (W535, W545) können weitere Einheiten des Prozessorsystems (W580) wie z.B. Coprozessoren oder Timer-Einheiten und Peripherals (W590) wie Digitale Ausgänge, D/A-Wandler und Kommunikationscontroller angesteuert werden. Eine Ausführungseinheit kann dabei sowohl als Prozessor/Core/CPU, als auch als FPU (Floating Point Unit), DSP (Digitaler Signalprozessor), Coprozessor, ALU (Arithmetic logical Unit) realisiert sein.
In Figur 1 Ia ist das Multiprozessorsystem (W500) aus Figur 11 abstrahiert und zur besseren Übersichtlichkeit ohne die Systemschnittstellen (W535, W545), die Verbindungen (W514a, W514b) und die Einheiten W580 und W590 dargestellt.
Dieses Multiprozessorsystem kann in wenigstens zwei Betriebsmodi betrieben werden, einem Vergleichsmodus VM und einem Performanzmodus PM.
Im Performanzmodus PM werden in den unterschiedlichen Ausführungseinheiten unterschiedliche Befehle, Programmsegmente oder Programme parallel ausgeführt. In Figur 13 ist der interne Schaltzustand der Umschalt- und Vergleichseinheit (W520) für Schreib- und Lesezugriff auf den Cache-Speicher im Performanzmodus gezeigt. In diesem Betriebsmodus ist der Vergleicher (W522) der Umschalt- und Vergleichseinrichtung (W520) deaktiviert, d.h. es werden keine Da- ten verglichen. Zur Deaktivierung der Vergleichseinheit gibt es mehrere Möglichkeiten. Zum einen kann man an den Vergleicher ein Signal führen, mit dem dieser aktiviert oder deaktiviert wird. Dazu ist im Vergleicher eine zusätzliche Logik einzufügen, die dies durchführen kann. H- ne weitere Möglichkeit ist es, dem Vergleicher keine zu vergleichenden Daten zuzuführen, so wie dies in dem in Figur 13 gezeigten Ausfuhrungsbeispiel schematisch dargestellt ist. Eine dritte Möglichkeit ist es, auf Systemebene das Status- bzw. Fehlersignal (W518, dargestellt in Figur 14) des Vergleichers zu ignorieren. Weiter kann man auch das Fehlersignal selbst unter- brechen. Allen Möglichkeiten ist gemeinsam, dass sie im System einen Zustand erzeugen, bei dem es keine Rolle spielt, wenn zwei oder mehr Daten, die potenziell verglichen werden, verschieden sind. Wird dieser Zustand durch eine Maßnahme im Vergleicher oder dessen Ein- oder Ausgangssignalen erreicht, dann wird der Vergleicher als passiv oder deaktiviert bezeichnet.
Im Performanzmodus ist jede Ausführungseinheit mit einem Port des Dual Port Cache-
Speichers (W550) verbunden. Dies wird in dem in Figur 13 gezeigten Ausführungsbeispiel dadurch erreicht, dass der Umschalter (W525) der Umschalt- und Vergleichseinrichtung (W520) so konfiguriert ist, dass das Signal 512a direkt mit dem Signal 513a verbunden ist und das Signal 512b direkt mit dem Signal 513b verbunden ist. Damit kann ein Lesevorgang für beliebige Speicherzellen des Dual Port Caches, insbesondere auch ein Lesezugriff auf genau die gleiche
Speicherzelle, von beiden Ausführungseinheiten gleichzeitig erfolgen.
Ein gleichzeitiger Schreibvorgang auf die gleiche Speicherzelle- oder bei blockweisem Schreiben auf den Cache-Speicher auf den gleichen Speicherblock- eines Dual Port Cache-Speichers ist nicht möglich. Für den Schreibvorgang wird beispielsweise einem der beiden Ports des Dual
Port Cache-Speichers und damit einer Ausführungseinheit eine höhere Priorität eingerichtet, d.h. es wird verhindert, dass gleichzeitig von beiden Ausführungseinheiten auf die gleiche Speicherzelle bzw. den gleichen Speicherblock geschrieben wird. Diese Priorität kann auch dynamisch, z.B. von der Umschalt- und Vergleichseinheit des Multiprozessorsystem oder abhängig vom adressierten Speicherbereich festgelegt werden. Erst wenn der bevorzugte Port die
Schreiboperation ausgeführt hat, darf der andere Port schreiben.
Ein Zugriffskonflikt, z.B. ein gleichzeitiger Schreibzugriff von zwei Ausführungseinheiten auf die gleiche Speicherzelle bzw. den gleichen Speicherblock kann folgendermaßen erkannt und aufgelöst werden: Beim Zugriff auf den Dual Port Cache werden entsprechend Figur 3 die in den Signalen 211 und 221 (entspricht den Signalen 512a und 512b in Figur 11) enthaltenen Adressen 212 und 222 der Verarbeitungseinheiten 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. Sind diese Adressen gleich, und soll auf wenigstens eine der Adressen schreibend zugegriffen werden, liegt ein Konflikt vor. Im Falle eines Konfliktes wird mittels der Steuersignale, die in den Signalen 213 oder 223 enthalten sind, der Zugriff wenigstens eines Ports auf den dual Port RAM 230 verhindert..
Im Falle eines Cache Miss, d.h. wenn bei einem Lesezugriff einer ersten Ausführungseinheit auf den Cache-Speicher das angeforderte Datum bzw. der Befehl nicht im Cache-Speicher enthalten ist, muss das Datum bzw. der Befehl über das Bussystem aus einem Programm- oder Daten- Speicher, beispielsweise dem Hauptspeicher (W570 aus Figur 11), geholt werden. Die ankommenden Daten werden zu der Ausführungseinheit weitergeleitet, die diese Daten angefordert hat und werden parallel zusammen mit der Kennung und den Controlbits in den Cache geschrieben. Wenn während der Übertragung eines Speicherblocks vom Hauptspeicher in den Cache- Speicher eine Adresse aus dem gleichen Speicherblock beispielsweise von einer zweiten Aus- führungseinheit adressiert wird, wird dies vom Adresscomparator erkannt und dieser verhindert das nochmalige Übertragen dieses Speicherblocks vom Hauptspeicher.
Wie in den Figuren 11 und IIa gezeigt, ist die Umschalt- und Vergleichseinheit (W520) vorteilhafter weise zwischen den Ausführungseinheiten (W510a, W510b) und dem Dual Port Ca- che-Speicher W550 angeordnet. Dies ermöglicht im Vergleichsmodus mehrere vorteilhafte
Zugriffsarten der Ausführungseinheiten auf den Dual Port Cache, die im folgenden beschrieben werden.
Im Vergleichsmodus ist jede Ausführungseinheit über die Signalverbindungen W512a und W512b mit der Umschalt- und Vergleichseinheit (W520) und damit nach Figur 15 und 16 auch mit dem dort enthaltenen Vergleicher (W522) verbunden.
In Figur 14 und Figur 15 ist die interne Verschattung der Umschalt- und Vergleichseinheit für zwei Ausführungen eines Lesezugriffs im Vergleichsmodus gezeigt. In einer ersten Ausführung nach Figur 14 ist der Umschalter (W525) in der gleichen Stellung wie im Performanzmodus, d.h. jede der Ausführungseinheiten (W510a, W510b) ist mit einem Port des Dual Port Cache- Speichers (W550) verbunden. Da die beiden Ausfiihrungseinheiten im Vergleichsmodus die gleichen Programme, Programmsegmente oder Befehle abarbeiten, greifen sie auch auf die gleichen Speicheradressen zu. Zunächst können die Adressen vom Vergleicher (W522) geprüft werden und die Weitergabe der Adressen erfolgt erst bei Übereinstimmung. Weiterhin ist alter- nativ oder zusätzlich möglich, die über verschiedene Ports des Cache-Speichers ausgelesenen
Informationen einer Speicherzelle im Vergleicher (W522) zu überprüfen. Somit können auch Fehler in der Adressierungslogik des Dual Port Cache-Speichers und in der Übertragung zwischen Cache und Vergleicher entdeckt werden. Der Vergleicher kann über das Vergleichs- /Fehlersignal (W518) eine das Vergleichsergebnis repräsentierende Information an die Ausfüh- rungseinheiten signalisieren. Allerdings ist für diese Ausführungsform eine Ausführung eines
Dual Port Cache-Speichers z.B. nach Figur 3 notwendig, bei der zeitgleich über die beiden Ports auf die gleiche Speicherzelle lesend zugegriffen werden kann.
In einer zweiten Ausführung des Vergleichsmodus nach Figur 15 ist der Umschalter, hier mit W526 bezeichnet, in einer anderen Schaltstellung. In dieser Ausführung erfolgt nur ein Zugriff über die Verbindung W513a auf den Dual Port Cache-Speicher. Dieser Zugriff erfolgt allerdings nur dann, wenn die über die Signalverbindungen W512a und W512b an den Vergleicher geführten Zugriffsadressen identisch sind. Wird vom Vergleicher eine Diskrepanz der Adressen erkannt, so kann der Speicherzugriff über das Signal W517 und die Verzögerungs- und Unter- brechungseinrichtung W519 verhindert werden.
In Figur 16 ist eine Konfiguration der Umschalt- und Vergleichseinheit (W520) für einen Schreibzugriff auf den Dual Port Cache-Speicher im Vergleichsmodus gezeigt. Hierbei werden die über die Signalverbindungen W512a und W512b an den Vergleicher geführten Zugriffsad- ressen und die zu schreibenden Daten verglichen. Bei Übereinstimmung werden nur die Daten einer Ausführungseinheit, im gezeigten Ausführungsbeispiel die über die Verbindung W512a erhaltenen Daten, über eine Verbindung (W513a) und einen Port in den Dual Port Cache- Speicher geschrieben. Bei Diskrepanz der über die Verbindungen W512a und W512b erhaltenen Adressen und/oder Daten, wird in einem ersten Ausführungsbeispiel der Zugriff auf den Cache-Speicher über das Signal W517 und die Verzögerungs- und Unterbrechungseinrichtung
W519 verhindert. Dies hat den Vorteil, dass nur gültige bzw. korrekte Daten in den Cache geschrieben werden, aber den Nachteil, dass der Schreibzugriff auf den Cache erst nach abgeschlossenem Vergleich durchgeführt werden kann und die Ausführungseinheiten dadurch ggf verzögert werden. Der Schalter W527 stellt sich das die Signalverbindung W512b ausschließlich an den Vergleich W522 geht.
In einem zweiten Ausfuhrungsbeispiel nach Figur 17 werden die über die Signalverbindungen W512a und W512b an den Vergleicher geführten Zugriffsadressen und die zu schreibenden Daten verglichen und gleichzeitig die über eine Verbindung (z.B. W512a) erhaltenen Daten in einen Pufferspeicher W529 geschrieben. Über das Signal W517 wird dem Pufferspeicher W529 eine das Vergleichsergebnis repräsentierende Information zugeführt. Bei Übereinstimmung der der über die Verbindungen W512a und W512b erhaltenen Adressen und/oder Daten wird die im Pufferspeicher gespeicherte Information über eine Verbindung (z.B. W513a) und einen Port in den Dual Port Cache-Speicher geschrieben. Erkennt der Vergleicher hingegen eine Diskrepanz, so werden die Daten im Pufferspeicher nicht für einen Schreibzugriff freigegeben und vorteilhafter weise gelöscht. Daraus ergibt sich der Vorteil, dass nur gültige bzw. korrekte Daten in den Cache geschrieben werden, aber keine Verzögerung der Ausführungseinheiten erfolgt.
In einem weiteren Ausführungsbeispiel für den Schreibzugriff im Vergleichsmodus schreibt eine der beiden Ausführungseinheiten die Daten in den Cache-Speicher. Ein Vergleich der über die Verbindungen W512a und W512b erhaltenen Adressen und/oder Daten der beiden Ausführungseinheiten erfolgt parallel zum Schreiben oder nach dem Schreiben der Daten in den Cache. Erkennt der Vergleicher eine Diskrepanz, so muss das geschriebene Datum im Cache hinterher als ungültig erklärt werden. Dazu wird dem Cache-Speicher von der Umschalt- und Vergleichseinheit eine das Vergleichsergebnis repräsentierende Information über ein Vergleich- /Fehlersignal (W518 aus Fig. 1 Ia und Fig. 14-17 bzw. N170 aus Fig. 12) zur Verfügung gestellt. Das bereits geschriebene Datum wird dann durch Setzen eines Bits in einem Status- oder Controlregister des Cache-Speichers oder durch Löschen einer Information aus der HIT-Tabelle als ungültig gekennzeichnet oder durch ein altes Datum ersetzt, falls dieses im Cache-Speicher oder im System noch vorhanden ist. Der Vorteil dieses Ausführungsbeispiels liegt darin, dass die Ausführungseinheiten durch den Vergleich der Adressen und/oder Daten nicht verzögert werden und kein Pufferspeicher in der Umschalt- und Vergleichseinheit notwendig ist.
In einer weiteren vorteilhaften Ausführung eines Multiprozessorsystems werden zwei getrennte Dual Port Caches für Daten und für Befehle/Instruktionen vorgesehen, wobei im Instruktionsca- che üblicherweise keine Schreibvorgänge vorzusehen sind. In Figur 18 ist ein Multiprozesscr- system (W501) mit zwei getrennten Dual Port Cache-Speichern W550c und W550d gezeigt. Dabei ist beispielsweise W550c ein Instruktions-Cache, auf den von den Ausfuhrungseinheiten (W510a, W510b) über W513ac bzw. W513bc nur lesend zugegriffen wird und W550d ein Da- ten-Cache, auf den die Ausführungseinheiten über W513ad bzw. W513bd lesend und schreibende zugreifen können. Jeder Cache besitzt jeweils über die Signalverbindung 241c und die Speicherzugriffseinheit W530c bzw. die Signalverbindung 241d und die Speicherzugriffseinheit W530d einen Zugriff auf den (Haupt-)Speicher. Wie bereits in Figur 1 Ia ist das Multiprozessor- system (W501) in Figur 18 zur besseren Übersichtlichkeit abstrahiert dargestellt. Die in Figur 11 gezeigten Systemschnittstellen (W535, W545), die Verbindungen (W514a, W514b), die
Einheiten W580 und W590 und das Speichersystem W570 können in dem Multiprozessorsys- tem (W501) nach Figur 18 ganz oder teilweise enthalten sein.
In den vorangehenden Ausführungsbeispielen ist jeweils ein Multiprozessorsystem mit zwei Ausführungseinheiten, zwei Betriebsmodi und einem Dual Port Cache-Speicher beschrieben.
Die kennzeichnenden Merkmale der Erfindung können ebenso auf Multiprozessorsysteme mit mehr als zwei Ausführungseinheiten angewendet werden. Änderungen sind dabei hauptsächlich in der Umschalt- und Vergleichseinheit notwendig. Der Dual Port Cache kann dabei zu einem Multi Port Cache erweitert werden, wie beispielsweise in den in Figur 9 und Figur 10 darge- stellten Ausführungsbeispielen beschrieben ist. Die Anzahl der Ausführungseirheiten des MuI- tiprozessorsystems und die Anzahl der Ports des Multi Port Caches und die Anzahl der Teilspeicherbereiche des Cache-Speichers muss dabei nicht identisch sein.

Claims

Patentansprüche
1. 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, 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 wenigs- tens zwei getrennten Ports ausgestattet ist und über diese Ports ein Zugriff der wenigstens zwei Verarbeitungseinheiten zu gleichen oder verschiedenen Speicherzellen des zweiten Speichers oder Speicherbereichs erfolgt, wobei die Daten und/oder Befehle aus dem ersten Speichersystem Blockweise zwischengespeichert werden und bei Umschaltung.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der zweite Speicher oder Speicherbereich in wenigstens zwei Adressbereiche unterteilt ist, die unabhängig voneinander gelesen oder geschrieben werden können.
3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass ein Adressdecoder vorhanden ist, der enable-Signale generiert, die bei einem gleichzeitigen Zugriff auf einen Adressbereich durch mehrere Ports nur einem Port den Zugriff ermöglichen und den Zugriff des wenigstens einen weiteren Ports unterbinden oder verzögern, insbesondere durch wait-Signale.
4. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass mehr als zwei Ports vorgesehen sind, wobei Auswahleinrichtungen vorhanden sind und der Zugriff zu den voneinander unabhängigen Adressbereichen über die Auswahleinrichtungen mit meh- reren Stufen erfolgt und dazu die enable-Signale über diese Stufen weitergeleitet werden.
5. Verfahren nach Anspruch 2, 3 oder 4, dadurch gekennzeichnet, dass es mindestens ein Modussignal gibt, das die Zugriffsmöglichkeiten der verschiedenen Ports un- schaltet.
6. Verfahren nach Anspruch 2, 3 oder 4, dadurch gekennzeichnet, dass es mindestens ein Konfigurationssignal gibt, das die Zugriffsmöglichkeiten der verschiedenen Ports umschaltet.
7. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass beide Verarbeitungseinheiten einen Lesezugriff vorgeben.
8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, das bei Vorgabe des Lesezugriffs durch beide Verarbeitungseinheiten den Daten und/oder Befehle zugeordnete Kennungen oder Zugriffsadressen verglichen werden und nur bei Übereinstimmung ein Lesezugriff auf den Cache durchgeschaltet wird.
9. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass bei Vorgabe eines Lesezugriffs beide Verarbeitungseinheiten auf das Cachespeichersystem zugreifen.
10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, dass die beim Lesezugriff durch beide Verarbeitungseinheiten gelesenen Daten und/oder Befehle verglichen werden und bei Abweichung ein Signal, insbesondere ein Fehlersignal erzeugt wird.
11. Verfahren nach Anspruch 1 , dadurch gekennzeichnet, dass bei einem Schreibzugriff auf den zweiten Speicher oder Speicherbereich zu schreibende Daten und/oder Befehle verglichen werden und nur dann eingeschrieben werden, wenn diese überein- stimmen.
12. Verfahren nach Anspruch 11, dadurch gekennzeichnet, dass bei einem Schreb- zugriff bis die Daten und/oder Befehle verglichen sind die Verarbeitungseinheiten angehalten werden.
13. Verfahren nach Anspruch 11, dadurch gekennzeichnet, dass die Daten und /oder Befehle in einen Pufferspeicher oder Pufferspeicherbereich geschrieben werden und erst nach erfolgreichem Vergleich in den zweiten Speicher oder Speicherbereich über- nommen werden.
14. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass bei einem Schreibzugriff auf den zweiten Speicher oder Speicherbereich zu schreibende Daten und/oder Befehle nur von einer Verarbeitungseinheit geschrieben werden und abhängig von ei- nem parallel ausgeführten Vergleich bei Unterscheidung die eingeschriebenen Daten und/oder Befehle gesperrt oder ungültig erklärt werden.
15. Verfahren nach Anspruch 14, dadurch gekennzeichnet, dass die Sperrung oder Ungültigerklärung durch Setzen oder Rücksetzen wenigstens eines Bits erfolgt.
16. Verfahren nach Anspruch 14, dadurch gekennzeichnet, dass die Sperrung oder Ungültigerklärung durch Überschreiben mit einem anderen, insbesondere alten Datum und/oder Befehl erfolgt.
17. Verfahren nach Anspruch 14, dadurch gekennzeichnet, dass die Sperrung oder Ungültigerklärung durch Streichen einer entsprechenden Eintragung einer Inhaltstabelle des zweiten Speichers oder Speicherbereichs erfolgt.
18. Vorrichtung 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, wobei Umschaltmittel enthalten sind und zwischen wenigstens zwei Betriebsmodi umgeschaltet wird, wobei Vergleichsmittel enthalten sind und ein erster Betriebsmodus einem Vergleichsmodus und ein zweiter Betriebsmodus einem Performanzmodus entspricht, dadurch gekem- zeichnet, 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 und über diese Ports ein Zugriff der wenigstens zwei Verarbeitungseinheiten zu gleichen oder verschiedenen Speicherzellen des zweiten Speichers oder Speicherbereichs erfolgt, wobei die Daten und/oder Befehle aus dem ersten Speichersystem Blockweise zwischengespeichert werden.
19. Vorrichtung nach Anspruch 18, dadurch gekennzeichnet, dass im Cachespeichersys- tem Daten und Befehle getrennt abgespeichert werden und so ein Datenspeicher oder
Datenspeicherbereich und ein Befehlsspeicher oder Befehlsspeicherbereich vorgesehen sind.
20. Vorrichtung nach Anspruch 18, dadurch gekennzeichnet, dass der zweite Speicher oder Speicherbereich in wenigstens zwei Adressbereiche unterteilt ist, die unabhängig voneinander gelesen oder geschrieben werden können.
21. Vorrichtung nach Anspruch 18, dadurch gekennzeichnet, dass ein Adressdecoder vorhanden ist, der enable-Signale generiert, die bei einem gleichzeitigen Zugriff auf ei- nen Adressbereich durch mehrere Ports nur einem Port den Zugriff ermöglichen und den Zugriff des wenigstens einen weiteren Ports unterbinden oder verzögern, insbesondere durch wait-Signale.
22. Vorrichtung nach Anspruch 18, dadurch gekennzeichnet, dass mehr als zwei Ports vorgesehen sind, wobei Auswahleinrichtungen vorhanden sind und der Zugriff zu den voneinander unabhängigen Adressbereichen über die Auswahleinrichtungen mit mdi- reren Stufen erfolgt und dazu die enable-Signale über diese Stufen weitergeleitet werden.
PCT/EP2006/064661 2005-08-08 2006-07-26 Verfahren und vorrichtung 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 WO2007017376A1 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP06777976A EP1915695A1 (de) 2005-08-08 2006-07-26 Verfahren und vorrichtung 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
JP2008525519A JP2009505181A (ja) 2005-08-08 2006-07-26 少なくとも2つの処理ユニットと、データおよび/または指令のための少なくとも1つの第1のメモリもしくはメモリ領域とを有する計算機システム内で指令および/またはデータを記憶するための方法および装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102005037215.5 2005-08-08
DE102005037215A DE102005037215A1 (de) 2005-08-08 2005-08-08 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

Publications (1)

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

Family

ID=37192655

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2006/064661 WO2007017376A1 (de) 2005-08-08 2006-07-26 Verfahren und vorrichtung 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

Country Status (5)

Country Link
EP (1) EP1915695A1 (de)
JP (1) JP2009505181A (de)
CN (1) CN101243415A (de)
DE (1) DE102005037215A1 (de)
WO (1) WO2007017376A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103345910B (zh) * 2013-06-09 2015-11-18 苏州国芯科技有限公司 单端口调色板sram控制器及其控制方法
US11269777B2 (en) * 2019-09-25 2022-03-08 Facebook Technologies, Llc. Systems and methods for efficient data buffering

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247649A (en) 1988-05-06 1993-09-21 Hitachi, Ltd. Multi-processor system having a multi-port cache memory
US6101589A (en) * 1998-04-01 2000-08-08 International Business Machines Corporation High performance shared cache
DE10332700A1 (de) 2003-06-24 2005-01-13 Robert Bosch Gmbh Verfahren zur Umschaltung zwischen wenigstens zwei Betriebsmodi einer Prozessoreinheit sowie entsprechende Prozessoreinheit

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01280860A (ja) * 1988-05-06 1989-11-13 Hitachi Ltd マルチポートキヤツシユメモリを有するマルチプロセツサシステム
JPH0973436A (ja) * 1995-09-05 1997-03-18 Mitsubishi Electric Corp 多重化計算機における動作モード切替方式
WO2005003962A2 (de) * 2003-06-24 2005-01-13 Robert Bosch Gmbh Verfahren zur umschaltung zwischen wenigstens zwei betriebsmodi einer prozessoreinheit sowie entsprechende prozessoreinheit

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247649A (en) 1988-05-06 1993-09-21 Hitachi, Ltd. Multi-processor system having a multi-port cache memory
US6101589A (en) * 1998-04-01 2000-08-08 International Business Machines Corporation High performance shared cache
DE10332700A1 (de) 2003-06-24 2005-01-13 Robert Bosch Gmbh Verfahren zur Umschaltung zwischen wenigstens zwei Betriebsmodi einer Prozessoreinheit sowie entsprechende Prozessoreinheit

Also Published As

Publication number Publication date
CN101243415A (zh) 2008-08-13
EP1915695A1 (de) 2008-04-30
DE102005037215A1 (de) 2007-02-15
JP2009505181A (ja) 2009-02-05

Similar Documents

Publication Publication Date Title
DE3750107T2 (de) Cachespeicherkohärenzsteuerung mit einem Speicher, der ein laufendes Lesen anzeigt.
DE69732181T2 (de) Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen
DE4218003C2 (de) Cache-Steuereinrichtung für ein sekundäres Cache-Speichersystem
DE68928360T2 (de) Hochleistungsrechnersystem mit fehlertoleranter Fähigkeit; Verfahren zum Betrieb desselben
DE69029173T2 (de) Mikroprozessor
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher
DE112010004963T5 (de) Synchronisieren von SIMD Vektoren
DE112005002420T5 (de) Verfahren und Vorrichtung zum Pushen von Daten in den Cache eines Prozessors
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
DE60025788T2 (de) Flexibles Mehrzweck-Ein/Ausgabesystem
DE102007018033A1 (de) Kohärenzverzeichnisaktualisierung
DE3502147C2 (de)
DE68926761T2 (de) Mehrprozessorsystem mit einem mehranschlüssigen Cachespeicher
DE60206555T2 (de) Fehlererkennung von Austauschdaten
DE112019002336T5 (de) Speicherpoolzuordnung für ein mehrkern-system
DE3873388T2 (de) Cache-speicher.
DE68926466T2 (de) Integrierte Cachespeichereinheit
DE3650584T2 (de) Anordnung von Cachespeicherverwaltungseinheiten
EP1915695A1 (de) Verfahren und vorrichtung 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
DE19950255A1 (de) Mikroprozessor
EP1915689B1 (de) Verfahren xmd vorrichtung zur überwachung einer speichereinheit in einem mehrprozessorsystem
EP1915686B1 (de) Verfahren und vorrichtung zur festlegung eines startzustandes bei einem rechnersystem mit wenigstens zwei ausführungseinheiten durch markieren von registern
DE68924501T2 (de) Speichersubsystem mit Fehlerkorrekturcache-Speicher.
EP1917593B1 (de) Verfahren und vorrichtung zur steuerung eines speicherzugriffs bei einem rechnersystem mit wenigstens zwei ausführungseinheiten

Legal Events

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

Ref document number: 2006777976

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

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 200680029401.3

Country of ref document: CN

WWP Wipo information: published in national office

Ref document number: 2006777976

Country of ref document: EP