WO2003048955A1 - Multi-processor system - Google Patents

Multi-processor system Download PDF

Info

Publication number
WO2003048955A1
WO2003048955A1 PCT/JP2002/012523 JP0212523W WO03048955A1 WO 2003048955 A1 WO2003048955 A1 WO 2003048955A1 JP 0212523 W JP0212523 W JP 0212523W WO 03048955 A1 WO03048955 A1 WO 03048955A1
Authority
WO
WIPO (PCT)
Prior art keywords
processor
data
data cache
cache
multiprocessor system
Prior art date
Application number
PCT/JP2002/012523
Other languages
French (fr)
Japanese (ja)
Inventor
Koji Hosogi
Kiyokazu Nishioka
Toru Nojiri
Kazuhiko Tanaka
Original Assignee
Hitachi, Ltd.
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 Hitachi, Ltd. filed Critical Hitachi, Ltd.
Priority to JP2003550079A priority Critical patent/JPWO2003048955A1/en
Publication of WO2003048955A1 publication Critical patent/WO2003048955A1/en

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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data 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
    • G06F12/0851Cache with interleaved addressing

Definitions

  • the present invention relates to a multiprocessor system, and more particularly to a technique for performing high-speed communication between processors.
  • a shared data cache among multiple processors and broadcast Access method Japanese Patent Laid-Open No. 10-254 779
  • a method of maintaining data consistency by cache memory of store-through method and snoop control Japanese Patent Application Laid-Open No. 8-2976464
  • a method using an interleaved cache with a fixed address for the shared data cache Japanese Patent Laid-Open No. 3-172690.
  • a first object of the present invention is to eliminate useless data transfer between processors in data communication between processors and prevent performance degradation.
  • a second object of the present invention is to prevent a decrease in the use efficiency of a cache memory due to a fixed interleave configuration in a system that uses a shared interleave cache between processors.
  • a multi-port processor system in which a plurality of processors having a data cache and a main memory are connected by a bus. Area for storing information for specifying cache or main memory, information for specifying addresses to be accessed, and information for fingering access types And a data transfer engine for issuing a load instruction and a store instruction to a data cache or a main memory in accordance with information recorded in the area. Is provided. .
  • a multiprocessor system in which a plurality of processors each having a data cache are connected by a path. An area for setting whether or not to share the data cache (including the case where sharing is not performed) and an area for setting the size of the data cache to be shared.
  • a multiprocessor system is provided which includes a determination unit that determines which processor should be accessed with reference to two regions.
  • FIG. 1 is a block diagram for explaining the configuration of the first exemplary embodiment of the present invention.
  • FIG. 2 is a block diagram for explaining the configuration of the second embodiment of the present invention.
  • FIG. 3 is a block diagram for explaining the mapping control unit 22 according to the second embodiment of the present invention.
  • FIG. 4 is a diagram for explaining a boundary register 41 and a shared processor 'register 33 according to the second embodiment of the present invention.
  • FIG. 5 is a diagram for explaining the sharing of the data cache of the processor 1 ′ in the second embodiment of the present invention.
  • FIG. 6 is a block diagram for explaining the configuration of the third exemplary embodiment of the present invention.
  • FIG. 1 is a block diagram for explaining a configuration of a multiprocessor system according to the present embodiment.
  • NP processors 1 each having a data cache 2 therein are connected to an internal bus 10 and share a main memory 13.
  • the main memory 13 is connected to the internal bus 10 via a main memory control unit 12 including a main memory control circuit and an interface.
  • a data transfer engine 11 which is a characteristic part of the present embodiment is connected to the internal bus 10.
  • the data transfer engine 11 issues a command / store instruction to the data cache 2 in the processor 1 or the main memory 13 connected to the internal bus 10 to execute the processor la and the other processor lb. It has a function to control the data transfer between processor 1 and la and lb, or processor 1 and main memory 13.
  • each processor 1 includes a data cache 2, a load / store control unit 3, a CPU 4, and an internal bus control unit 5.
  • the data cache 2 can be a general data cache including a data memory for storing a part of the data in the main memory 13 and a tag memory for storing address data.
  • the load / store control unit 3 is a control circuit for accessing the data cache 2.
  • the exchange of control signals, memory addresses, store data, load data, and the like between the load / store control unit 3 and the data cache 2 is performed via a path 6.
  • the CPU 4 can be, for example, a general-purpose CPU, a dedicated coprocessor for a specific use, or the like.
  • the data cache for the load / store control unit 3 is There are two routes for issuing access requests to (2). One is a normal load / store request notified by the CPU 4 as an issuer to the portal store controller 3 via a path 7, and the other is an internal path controller 5 as an issuer. This is a store request sent to the load / store control unit 3 via the path 8.
  • the load / store request that is issued by the internal path control unit 5 is not issued by the internal path control unit 5 as a request / master, but is issued by the data transfer engine 11 request / master. This is issued to the internal bus control unit 5 in each port processor 1 via the internal path 10. At this time, the internal bus control unit 5 operates as a slave module on the internal bus 1.0.
  • the load / store control unit 3 arbitrates these two types of load / store requests, and accesses the data cache 2 via the path 6. 'That is, in the present embodiment, communication between the processor 1a and the processor 1b (for example, when transferring the contents of the data cache 2a of one processor 1a to the data cache 2b of another processor 1b) Alternatively, when data communication between the data cache 2 of the processor 1 and the main memory 13 is required (for example, when prefetching data), the data transfer engine 11 Controls the process of reading data and writing to the destination.
  • the data transfer engine 11 sends a load instruction for reading data from the data cache 2 to the processor 1 in the multiprocessor system via the internal path 10 and a data instruction to the data cache 2 via the internal path 10. It is an engine that can issue store instructions to be written. Similarly, a load instruction and a store instruction can be issued to the main memory 13 via the main memory control unit 12.
  • the slave processor 1 or the main memory control unit 12 has identification information in response to this access, and the data transfer engine 11 uses the identification information and It is possible to access the mouth processor 1 or the main memory controller 12.
  • the data transfer engine 11 can be configured to include, for example, an 'internal bus interface 11', an address generator 112, and a buffer 113.
  • the address generator 112 is used to read / write data to / from the modules (data cache 2 and main memory 13 in the processor 1) connected to the internal path 10. Generate an address.
  • the address generator 112 also generates a selection signal for specifying which module is to be accessed.
  • the address generation unit 112 In order to perform these processes, the address generation unit 112 generates the start address, width, pitch, number of repetitions, module identification information, buffer 113 entry number (information for specifying the storage location), and access.
  • a register group that indicates the read Z write as a seed is provided.
  • the address generation unit 112 can hold a plurality of sets with these register evenings as one set.
  • the value of each registry can be set by software, for example, via the operating system.
  • the address generator 1 1 2 generates an address based on the start address, width ′, pitch, and number of repetitions (these are referred to as “address generation information”) set in the register. An address that specifies the two-dimensional area 1 2 1 can be generated. Then, it is possible to determine which processor 1 or main memory 13 to access based on the identification information. The generated address and the selection signal are transmitted to the internal bus interface 111.
  • the address generation information generated by the address generator is not limited to this. '
  • the data transfer engine 11 reads data from the buffer according to the entry number and transfers it to the internal bus interface 11 1 at the time of write access (when the write is indicated by the register). .
  • Internal bus interface The device 11 specifies the output destination based on the input address and the selection signal, and outputs the data read from the buffer 113 via the internal bus 10.
  • the data read via the internal bus 10 is transferred to the buffer 113, and the buffer 113 stores the entry number set by the register. Store the night for
  • Address generation information AO
  • recognition information processor 0, entry number: B0, read-only write: Read 2
  • recognition information Processor 1, entry number: B0, read / write: Write. This is because the data in the address area specified by the address generation information A0 is read from the processor 0, stored in the buffer entry number B0, and stored in the address area specified by the address generation information A1 of the processor 1. This indicates that data stored in the entry number B 0 of the buffer is to be written, that is, data is transferred from the processor 0 to the processor 1.
  • the data transfer engine 11 performs the data transfer between the processor 1 a and the processor 1 or the data transfer between the processor 1 and the main memory 13 by the CPU of the processor 1. This can be realized in parallel with the processing in (4). At this time, since the data transfer engine 11 transfers only necessary data from a specific transfer source to a specific transfer destination, traffic due to unnecessary data transfer does not occur.
  • the data transfer engine 11 is started by interrupt or polling, thereby synchronizing the processors.
  • the load / store control unit 3 performs a write process on the data cache 2 via the path 6.
  • the cache 2 is a cache hit, read the data from the data cache 2 and return the load data via the path 7 or 8 to the CPU 4 or the internal bus control unit 5 that requested access. .
  • a data cache miss the same sequence as for a cache miss at the time of store is performed. 4 or returned to the internal bus control unit 5.
  • the target data can be reliably stored in the data cache 2. That is, for example, it can operate as a prefetch to the data cache 2.
  • the multiprocessor system includes an interface for sharing a data cache among a plurality of processors having a data cache and a sosh.
  • the data cache is shared with which processor in the system, and the size of the data cache to be allocated can be set.
  • FIG. 2 is a block diagram illustrating a configuration of a multiprocessor system according to the second embodiment.
  • the multiprocessor system is configured by NP processors 20 having a single data cache 26 connected by a global bus 23. '
  • Each processor 20 includes a data cache 26, a CPU 4, a load storage controller 21, and a mapping controller 22.
  • the global bus 28 has an arbiter 25 for arbitrating paths.
  • the load / store control unit 21 loads the data cache 26 issued from the CPU 4 of the local CPU 4 (or the own processor) or the CPU 4 of another processor 20 sharing the data cache 26. Process instructions and store instructions.
  • the mapping control unit 22 determines which processor 20 on the global bus 28 should access the data cache 26 when loading or storing the data cache 26.
  • mapping control unit 22 determines that the mapping control unit 22 accesses the data cache 26 in its own processor 20 (oral processor 20)
  • the load / store control unit 21 executes the local bus operation. Access local data cache 26 through 27.
  • mapping control unit 22 determines that the data cache 26 in the other processor 20 (the other processor 20 connected by the global bus 28) is to be accessed, the global bus 28 Access the data cache 26 in the other target processor 20 via.
  • the mapping control unit 22 will be described in more detail with reference to FIG. '
  • the mapping control unit 22 includes a shared processor 'register 33 indicating which processor 20 is to share the data cache, a boundary register 30 indicating the size of the data cache to be allocated, and a boundary register 30. And a shifter 31 for shifting an address 23 input from the load / store control unit 21 in accordance with the value of the register.
  • each processor 20 in the multiprocessor is provided with a processor ID for identifying the processor, and the mapping control unit 22 holds a processor ID 36 indicating the processor 20 itself.
  • mapping control unit 22 outputs a processor selection signal 24 to the aviator 25 based on the output of the shifter 31, the processor ID 36, and the value of the shared processor 'register 33. It has 3 4.
  • the values of the shared processor register 33 and the pandary register 30 can be set, for example, via an operating system that controls the multiprocessor system.
  • the application software executed in the multiprocessor system uses the values of the shared processor register 33 and the pandary register 30 so that the data cache suitable for executing the application software can be shared. Make settings.
  • the shared processor register 33 determines which processor 20 among the plurality of processors 20 connected to the global bus 28 should share the data cache. This is a register to specify. '
  • the m bits from the lower side of the shared processor / register 33 are set to "1". That is, sharing is performed between 2, 4, 8,... Processors, and data cache sharing is performed between a maximum of 2 ⁇ processors 20.
  • the processor 20 performs data cache sharing with all other processors 20, all bits of the shared processor register 33 are set to "1".
  • the processors 20 sharing the cache with each other have the same value in the shared processor / register 33.
  • boundary register S0 which is a register indicating the allocation of the size of the data cache 26
  • the boundary register S0 which is a register indicating the allocation of the size of the data cache 26
  • the minimum address pane C (byte), which is the minimum unit of the allocation size of the data cache, is determined in advance. For the lowest address and foundry C, for example, it can be set via the operating system. You can make it. 'At this time, if a puncture / interleave configuration is adopted with the minimum address boundary in the data cache sharing, all bits of the boundary register '30 are set to "0". Then, each time the size of the cache overnight 26 is set to twice the minimum address boundary C, it is set to "1" sequentially from the lower bits of the boundary register 30. For example, the size of the data cache 26 of the processor 20 in which only the lower 2 bits of the boundary register 30 are "1" is set to four times the minimum address boundary C.
  • the format of the boundary register 30 and the shared processor register 33 is not limited to the above example.
  • mapping control unit 22 Next, the processing of the mapping control unit 22 will be described.
  • the address 23 input to the matching control unit 22 is shifted in the shifter 31 based on the value of the boundary register 30 and the like, and becomes a shift address 35.
  • the shift address 35 is ⁇ 1 og 2 (minimum address boundary C) + ⁇ ⁇ boundary register 30 ⁇ +1 og 2 (NP) —1: 1 og 2 (minimum address boundary C) + ⁇ ⁇ Boundary register 3 0 ⁇ >.
  • ⁇ Boundary Register 30 ⁇ specifies the address space to interleave.
  • ⁇ ⁇ Boundary register 30 ⁇ indicates, for example, ⁇ ⁇ Bit 0, Bit 1,. Bit 2 ⁇ when the boundary register is represented by 3 bits.
  • the shift address 35 when the minimum address' boundary C is 1 KB is as follows.
  • Boundary register 0 0 0: N 1 2: 1 0>
  • Boundary register 0 0 1: ⁇ 1 3: 1 1>
  • Boundary Regis evening 0 1 1: ⁇ 1 4: 1 2>
  • Boundary register 1 1 1: 1 5: 1 3>
  • the value of the boundary register 30 is 0 X 0 1 1 and the minimum address boundary C is 1 KB, and the input and input addresses are ⁇ 31: 0>
  • Shift address 35 is ⁇ 1 og 2 (1 KB) + ⁇ ⁇ 0 1, 1 ⁇ + 1 og 2 (8)-1: 1 og 2 (1 KB) + ⁇ ⁇ 0 ; 1, 1 ⁇ >, That is, the address becomes ⁇ 14:12>.
  • the shift addresses 3, 5 and the processor ID 36 are input to the selector 34.
  • the selector 34 generates a processor selection signal 24 indicating a processor ID to be accessed, based on the value of the shared processor 'register 33, and transmits the processor selection signal 24 to the aviator 25.
  • the value of the shared processor 'register 33' is adjusted for each bit. If the value of the shared processor ⁇ register 33 is “1”, the value of the shift address 35 is selected, and the value of the shared processor ⁇ register 33 is selected. Is "0", the processor selection signal 24 is generated by selecting the value of the processor ID 36.
  • the load / store control unit 21 uses the local bus 27 to execute the local data cache 2. Load against 6 Execute instructions or store instructions.
  • mapping control unit 22 determines that the data cache 26 in the other processor 20 is to be accessed, the load / store control unit 21 requests the arbiter 25 for a path right, and if the path right is obtained, The global bus 28 is used to execute a read instruction or a store instruction to the data cache 26 in another processor 20.
  • the data cache 26 to be accessed actually accesses the data memory and tag memory in the data cache 26 after arbitrating access from the oral path 27 or access from the global bus 28. .
  • a further specific example of a multiprocessor system using this method will be described with reference to FIGS.
  • the multiprocessor system is a system composed of eight processors (processor IDs are assumed to be from 0x0000 to 0x111), and the minimum address' boundary C is set to 1 KB. .
  • FIG. 5 is a diagram showing an image of data cache sharing of the multiprocessor system shown in FIG.
  • processor 0 (0x00) and processor 1 (0x001) are defined as distributed distributed caches (codes 45, 46).
  • Processor 2 (0 0 1 0) and processor 3 (0 x 0 1 1) operate as a multiprocessor connected by a shared data cache, and transfer addresses 0 to 4 KB—address 1 to processor 2 ( 0 X 0 10) Allocation, interleave configuration in which 4 KB to 8 KB-1 are allocated to processor 3 (reference numeral 47).
  • Processor 4 (0x100) to processor 7 (0111) operate as multiprocessors connected by a shared data cache, and the interleave address boundary is 1 KB (code 48). .
  • the application software executed in this multiprocessor system can share the data cache suitable for the execution, and prevent the cache memory usage efficiency from decreasing due to the fixed interleaving configuration. it can.
  • each processor 20 may be located at a physically remote location, and bus arbitration is also added. Therefore, the latency for accessing the local data cache 26 is limited. In general, the latency to access the data cache 26 of another processor increases. Also, The cause of the increase in the number of storage cycles of the processor 20 is mainly a load instruction. Therefore, with respect to non-local accesses, it is possible to reduce the logical scale of the arbiter 25 and the global bus 28 by having a constraint that only the store instruction can be executed.
  • FIG. 6 shows a third embodiment of the present invention.
  • the basic configuration is a combination of the above-described two embodiments, and is a multiprocessor system in which NP processors 50 are connected by an internal bus 10 and a global bus 28. 'The same parts as those in the first embodiment and the second embodiment are denoted by the same reference numerals.
  • the load / store control unit 51 has the functions of both the load / store control unit 3 in the first embodiment and the portal / storage control unit 21 in the second embodiment. ,
  • the data transfer by the data transfer engine 11 of the first embodiment is executed by interruption or polling, overhead until the start is generated.
  • data can be transferred independently of the processor 50, large-capacity data can be transferred at high speed.
  • the shared data cache system in which the global bus 28 and the arbiter 25 according to the second embodiment are connected large-capacity data transfer and small-capacity data transfer are also possible, but the data cache 26 of other processors is used. Latency is high for the ⁇ instruction.
  • the present embodiment has a configuration in which these two features are taken into consideration and can be properly used by the application software.
  • the present invention relates to a data communication between a plurality of processors provided with a data cache, which eliminates useless data transfer between the processors, and a method of using an interleaved cache of a multiprocessor to fix an interleave structure. It can be applied to data communication of a multiprocessor system for the purpose of preventing a decrease in the use efficiency of the cache memory due to the development.

Abstract

In data communication between processors, it is possible to remove unnecessary data transfer between the processors, thereby eliminating lowering of performance. Moreover, in a multi-processor using an interleave cache, it is possible to prevent use efficiency lowering of the cache memory due to fixation of the interleave configuration. A multi-processor system includes a plurality of processors (50) having a data cache (26) and a main memory (13) which are connected to each other via a bus (10). The system has data transfer engine (11) having a region for storing information on data access and issuing a load instruction and a store instruction to the data cache (26) according to the information. Each of the processors (50) has judgment means (22) for storing information on sharing of the data cache and referencing this information upon reception of an address to be accessed, so as to judge which processor is to be accessed.

Description

明 細  Details
マルチプ口セッサシステム 技術分野 Multiplex mouth processor system
本発明は、 マルチプロセッサシステムにかかり、 特に、 プロセッサ間通信 を高速に行なうための技術に関する。 背景技術  The present invention relates to a multiprocessor system, and more particularly to a technique for performing high-speed communication between processors. Background art
実時間処理という高い処理能力が 要なメディア処理などでは、 複数のプ 口セッサ、 コ · プロセッサ等を備えたマルチプロセッサ環境において、 その 処理を分割し、 分割した処理を各プロセッサに割り当てて並列実行させるソ フトウエア ·パイプラインを用いることが主流になりつつある。  For media processing that requires high processing power, such as real-time processing, in a multiprocessor environment with multiple processors, coprocessors, etc., the processing is divided, and the divided processing is assigned to each processor and executed in parallel. Software and pipelines are becoming mainstream.
このようなマルチプロセッサ環境で、 分割された処理を協調して並列実行 する場合、 プロセッサ間で.のデータの受渡しが必要となる。 そこで、 従来は、 複数のプロセッサでメモリを共有し、 そのメモリに対してアクセスする等の 方式を用いて、 プロセッサ間でのデータの受渡しを.実現している。  In such a multiprocessor environment, when cooperating and executing the divided processing in parallel, it is necessary to transfer data between processors. Therefore, conventionally, data has been transferred between processors by using a method in which a memory is shared by a plurality of processors and the memory is accessed.
一般的には、 一つのメインメモリや 2 次レベルキヤッシュメモリを、 複数 のプロセッサが ft有するこ により、 これを実現している。 しかしながら、 このような 2 次レベル以下に共有メモリを有する構造におけるアクセス · レ ィテンシは、 1次レベルのキャッシュメモリに対するそれに比べ、 数倍から数 1 0倍大きく、 これに伴い、 プロセッサの性能も著しく低下する。'  Generally, this is achieved by having multiple processors ft with one main memory or second level cache memory. However, the access latency in such a structure with shared memory below the secondary level is several times to several ten times greater than that for the primary level cache memory, and the processor performance is remarkable accordingly. descend. '
これを回避するため、 様々なアプローチがなされている。 例えば、 複数の プロセッサ間で共有型のデータキャッシュを持ち、 ブロードキャス卜のァク セス方式を用いる方式 (特開平 1 0— 2 5 4 7 7 9 ) 、 ストア · スルー方式 のキヤッシュメモリとスヌ一プ制御によりデータ整合性を保つ方式 (特開平 8 - 2 9 7 6 4 2 ) 、 共有型データキャッシュに固定アドレスによるインタ リ ブ型キャッシュを使用する方式 (特開平 3— 1 7 2 9 6 0 ) 等である。 ところで、 ブロードキャスト方式、 あるいは、 ストア · スルー型キヤッシ ュメモリとスヌープ制御を用いる方式では、 データ転送が必要のないプロセ ッサに対して無駄なアクセスが発生し、 冗長な転送によって性能が 2分の 1 から 1 0分の 1程度、低下するという問題がある。更にスヌープ方式の場合、 スヌ一プ専用のァドレスタグをもつことにより、 チップ面積の増加にもつな がる。 また、 固定アドレスによるインタリーブ方式では、 インタリーブ構成 が固定化されているため、 データ転送が効率'よく分散されるとは限らず、 一 つのインタリーブ.キャッシュにアクセスが集中することにより、 逆にキヤッ シュメモリの使用効率が.落ち、 平均で. 2 分の 1の性能しか得ることが出来な い。 , 発明の開示 Various approaches have been taken to avoid this. For example, a shared data cache among multiple processors and broadcast Access method (Japanese Patent Laid-Open No. 10-254 779), a method of maintaining data consistency by cache memory of store-through method and snoop control (Japanese Patent Application Laid-Open No. 8-2976464) And a method using an interleaved cache with a fixed address for the shared data cache (Japanese Patent Laid-Open No. 3-172690). By the way, in the broadcast method, or the method using the store-through type cache memory and snoop control, useless access occurs to the processor that does not need data transfer, and the performance is reduced by half by redundant transfer. There is a problem that it is reduced by about one tenth. Furthermore, in the case of the snoop method, having a dedicated address tag for snooping leads to an increase in chip area. In the interleaving method using fixed addresses, the data transfer is not always efficiently distributed because the interleaving configuration is fixed, and one interleave is used. The use efficiency of the device is reduced, and only half the performance can be obtained on average. , Disclosure of the invention
本発明の第 1の目的は、 プロセッサ間のデータ通信において、 プロセッサ 間の無駄なデータ転送を排除し、 性能低下を防ぐことにある。  A first object of the present invention is to eliminate useless data transfer between processors in data communication between processors and prevent performance degradation.
また、 本発明の第 2の目的は、 プロセッサ間で、 共有のインタリーブ型キ ャッシュを使用する方式において、 インタリーブ構成の固定化に起因するキ ャッシュメモリの使用効率低下を防ぐことにある。  A second object of the present invention is to prevent a decrease in the use efficiency of a cache memory due to a fixed interleave configuration in a system that uses a shared interleave cache between processors.
上記課題を解決するため、 本発明の第 1の態様によれば、 データキヤッシ ュを備えた複数のプロセッサとメインメモリとがバスにより接続きれだマル チプ口'セッサシステムにおいて、 アクセスすべきデ一タキャッシュまたはメ インメモリを特定するための情報と、 アクセスすべきアドレスを特定するた めの情報と、 アクセス種を指走するための情報とを関連付けて記憶する領域 を複数備え、 前記領域に言 録された情報にしたがって、 データキャッシュま たはメインメモリに対して、 ロード命令おょぴストァ命令を発行するデータ 転送エンジンを備えたことを特徴とするマルチプロセッサシステムが提供さ れる。 . According to a first aspect of the present invention, there is provided a multi-port processor system in which a plurality of processors having a data cache and a main memory are connected by a bus. Area for storing information for specifying cache or main memory, information for specifying addresses to be accessed, and information for fingering access types And a data transfer engine for issuing a load instruction and a store instruction to a data cache or a main memory in accordance with information recorded in the area. Is provided. .
また、 上記課題を解決するため、 本発明の第 2の態様によれば、 データキ ャッシュを備えた複数のプロセッサがパスにより接続されたマルチプロセッ サシステムにおいて、 '各プロセッサは、 他のいずれのプロセッサとデータキ ャッシュの共有を行なうか (共有を行なわない場合も含む) を設定するため の領域と、 共有するデータキヤッシュのサイズを設定するための領域とを備 え、 アクセスすべきアドレスを受け付けると上記 2つの領域を参照して、 ど のプロセッサにアクセスすべきかを判断する判断手段を備えることを特徴と するマルチプロセッサシステムが提供される。 図面の簡単な説明  According to a second aspect of the present invention, there is provided a multiprocessor system in which a plurality of processors each having a data cache are connected by a path. An area for setting whether or not to share the data cache (including the case where sharing is not performed) and an area for setting the size of the data cache to be shared. A multiprocessor system is provided which includes a determination unit that determines which processor should be accessed with reference to two regions. BRIEF DESCRIPTION OF THE FIGURES
図 1は、 本発明の第 1の実施形態の構成を説明するためのブロック図である。 図 2は、 本発明の第 2の実施形態の構成 説明するためのブロック図である。 図 3は、 本発明の第 2の実施形態におけるマツピング制御部 2 2を説明する ためのブロック図である。 FIG. 1 is a block diagram for explaining the configuration of the first exemplary embodiment of the present invention. FIG. 2 is a block diagram for explaining the configuration of the second embodiment of the present invention. FIG. 3 is a block diagram for explaining the mapping control unit 22 according to the second embodiment of the present invention.
図 4は、 本発明の第 2の実施形態におけるバウンダリ · レジス夕 4 1および 共有プロセッサ ' レジスタ 3 3を説明するための図である。 FIG. 4 is a diagram for explaining a boundary register 41 and a shared processor 'register 33 according to the second embodiment of the present invention.
図 5は、 本発明の第 2の実施形態におけるプロセッサ 1 'のデ一夕キヤッシュ を共有について説明するための図である。 FIG. 5 is a diagram for explaining the sharing of the data cache of the processor 1 ′ in the second embodiment of the present invention.
図 6は、 本発明の第 3の実施形態の構成を説明するためのブロック図である。. 発明を実施するための最良の形態 FIG. 6 is a block diagram for explaining the configuration of the third exemplary embodiment of the present invention. BEST MODE FOR CARRYING OUT THE INVENTION
本発明の実施の形態について図面を参照して詳細に説明する。 まず、本発明の第 1の実施形態について図 1を参照して説明する。図 1は、 本実施形態におけるマルチプロセッサシステムの構成を説明するためのブロ ック図である。 Embodiments of the present invention will be described in detail with reference to the drawings. First, a first embodiment of the present invention will be described with reference to FIG. FIG. 1 is a block diagram for explaining a configuration of a multiprocessor system according to the present embodiment.
本図に示すように、 本マルチプロセッサシステムは、 内部にデ一タキャッ シュ 2を備えるプロセッサ 1が、 内部バス 1 0に N P個接続され、 主メモリ 1 3を共有している。 このとき、 主メモリ 1 3は、 主メモリの制御回路とィ ンタフエースとを備える主メモリ制御部 1 2を介して、 内部バス 1 0に接続 されている。 さら,に、 内部バス 1 0には、 本実施形態の特徴部分であるデー 夕転送エンジン 1 1が接続されている。  As shown in the figure, in this multiprocessor system, NP processors 1 each having a data cache 2 therein are connected to an internal bus 10 and share a main memory 13. At this time, the main memory 13 is connected to the internal bus 10 via a main memory control unit 12 including a main memory control circuit and an interface. Further, a data transfer engine 11 which is a characteristic part of the present embodiment is connected to the internal bus 10.
データ転送エンジン 1 1は、 内部バス 1 0に接続されたプロセッサ 1内の データキヤッシュ 2、 あるいは、 主メモリ 1 3に対して口一ド /ストァ命令 を発行し、 プロセッサ l aと他のプロセッサ l bとの間 ( l aと l bとは異 なるプロセッサ 1 を表す) 、 あるいは、 プロセッサ 1 と主メモリ 1 3との間 のデータ転送を制御する機能を有している。  The data transfer engine 11 issues a command / store instruction to the data cache 2 in the processor 1 or the main memory 13 connected to the internal bus 10 to execute the processor la and the other processor lb. It has a function to control the data transfer between processor 1 and la and lb, or processor 1 and main memory 13.
' 図 1において、 各プロセッサ 1は、 データキャッシュ. 2と、 ロード · スト ァ制御部 3と C P U 4と、 内部バス制御部 5とを備えている。 'In FIG. 1, each processor 1 includes a data cache 2, a load / store control unit 3, a CPU 4, and an internal bus control unit 5.
データキヤッシュ 2は、 主メモリ 1 3のデ一夕の一部を格納するデ一タメ モリ とァドレスデータを格納するタグメモリとを備えて構成される一般的な データキャッシュとすることができる。  The data cache 2 can be a general data cache including a data memory for storing a part of the data in the main memory 13 and a tag memory for storing address data.
ロード · ストア制御部 3は、 データキャッシュ 2にアクセスするための制 御回路である。 ロードストア制御部 3とデ一タキャッシュ 2との間における 制御信号、 メモリアドレス、 ストアデータ、 ロードデ一夕等のやり取りはパ ス 6を介して行なわれる。  The load / store control unit 3 is a control circuit for accessing the data cache 2. The exchange of control signals, memory addresses, store data, load data, and the like between the load / store control unit 3 and the data cache 2 is performed via a path 6.
C P U 4は、 例えば、 汎用 C P U、 特定用途の専用コ · プロセッサ等とす ることができる。  The CPU 4 can be, for example, a general-purpose CPU, a dedicated coprocessor for a specific use, or the like.
本実施形態において、 ロード · ストァ制御部 3に対するデータキヤッシュ 2へのアクセス要求の発行経路は 2通りある。 一方は、 C P U 4が発行元と なり、 パス 7を介して口一ド · ストァ制御部 3に通知される通常のロード、 ストア要求であり、 他方は、 内部パス制御部 5が発行元となり、 パス 8を介 してロード · ストァ制御部 3に通知される口一ド ストァ要求である。 In the present embodiment, the data cache for the load / store control unit 3 is There are two routes for issuing access requests to (2). One is a normal load / store request notified by the CPU 4 as an issuer to the portal store controller 3 via a path 7, and the other is an internal path controller 5 as an issuer. This is a store request sent to the load / store control unit 3 via the path 8.
ただし、 内部パ'ス制御部 5が発行元となるロード/ストア要求は、 内部パ ス制御部 5がリクエス卜 · マスターとなって発行するめではなく、 データ転 送エンジン 1 1がリクエスト · マスタ一となり、 内部パス 1 0を介して各プ 口セッサ 1内の内部バス制御部 5に発行するものである。 このとき、 内部バ ス制御部 5は内部バス 1 . 0上のスレーブ ' モジュールとして動作する。  However, the load / store request that is issued by the internal path control unit 5 is not issued by the internal path control unit 5 as a request / master, but is issued by the data transfer engine 11 request / master. This is issued to the internal bus control unit 5 in each port processor 1 via the internal path 10. At this time, the internal bus control unit 5 operates as a slave module on the internal bus 1.0.
ロード · ス トア制御部 3はこれら 2種のロード/ストア要求を調停し、 パ ス 6を介してデータキャッシュ 2にアクセスする。 ' すなわち、 本実施形態において、 プロセッサ 1 aとプロセッサ 1 bと間の 通信 (例えば、 あるプロセッサ 1 aのデータキャッシュ 2 aの内容を、 他の プロセッサ 1 bのデータキャッシュ 2 bに転送する場合) 、 あるいは、 プロ セッサ 1のデータキャッシュ 2と主メモリ 1 3との間のデータ通信 (例えば、 データのプリフェッチを行なう場合) が必要になった場合には、 データ転送 エンジン 1 1が、 転送元のデータをリードし、 転送先にライ トする処理を制 御する。  The load / store control unit 3 arbitrates these two types of load / store requests, and accesses the data cache 2 via the path 6. 'That is, in the present embodiment, communication between the processor 1a and the processor 1b (for example, when transferring the contents of the data cache 2a of one processor 1a to the data cache 2b of another processor 1b) Alternatively, when data communication between the data cache 2 of the processor 1 and the main memory 13 is required (for example, when prefetching data), the data transfer engine 11 Controls the process of reading data and writing to the destination.
ここで、 データ転送エンジン 1 1について説明する。 デ タ転送エンジン 1 1は、 マルチプロセッサシステム内の各プロセッサ 1に対して、 内部パス 1 0を介して、 デ一夕キャッシュ 2のデータをリードするロード命令と、 デ 一夕キャッシュ 2にデータをライ トするストア命令とを発行可能なエンジン である。 また、 主メモリ制御部 1 2を介して主メモリ 1 3に対しても同様に ロード命令とストァ命令とを発行可能である。 ここで、本アクセスに対して、 スレーブとなるプロセッサ 1あるいは主メモリ制御部 1 2は、 識別情報を持 つているものとし、 データ転送エンジン 1 1は、 その識別情報を用い、 各プ 口セッサ 1ある.いは主メモリ制御部 1 2に対して、 アクセスすることが可能 である。 Here, the data transfer engine 11 will be described. The data transfer engine 11 sends a load instruction for reading data from the data cache 2 to the processor 1 in the multiprocessor system via the internal path 10 and a data instruction to the data cache 2 via the internal path 10. It is an engine that can issue store instructions to be written. Similarly, a load instruction and a store instruction can be issued to the main memory 13 via the main memory control unit 12. Here, it is assumed that the slave processor 1 or the main memory control unit 12 has identification information in response to this access, and the data transfer engine 11 uses the identification information and It is possible to access the mouth processor 1 or the main memory controller 12.
図 1に示すように、 データ転送エンジン 1 1は、 例えば、'内部バスインタ フェース 1 1 1.と、 アドレス発生部 1 1 2と、 ゾ ッファ 1 1 3とを備えて構 成することができる。  As shown in FIG. 1, the data transfer engine 11 can be configured to include, for example, an 'internal bus interface 11', an address generator 112, and a buffer 113.
アドレス発生部 1 1 2は、 内部パス 1 0に接続,されたモジュール (プロセ ッサ 1内のデ一夕キャッシュ 2、 主メモリ 1 3 ) に対して、 データのリード /ライ トを行なうためのアドレスを生成する。 また、 アドレス発生部 1 1 2 は、 どのモジュールに対してアクセスするかを指定する選択信号も生成する。 これらの処理を行なうため、 ァドレス発生部 1 1 2は、 開始ァドレス、 幅、 ピッチ、 繰り返し数、 モジュールの識別情報、 バッファ 1 1 3のエントリ番 号 (格納場所を特定するための情報) 、 アクセス種としてリード Zライ トを 示すレジスタ群 ¾備えている。 これらのレジス夕を 1セッ トとして、 ァドレ ス発生部 1 1 2は、 複数のセットを保持することができる。 各レジス夕の値 は、 例えば、 オペレーティングシステムを介して、 ソフトウェアで設定でき るようにすることができる。  The address generator 112 is used to read / write data to / from the modules (data cache 2 and main memory 13 in the processor 1) connected to the internal path 10. Generate an address. The address generator 112 also generates a selection signal for specifying which module is to be accessed. In order to perform these processes, the address generation unit 112 generates the start address, width, pitch, number of repetitions, module identification information, buffer 113 entry number (information for specifying the storage location), and access. A register group that indicates the read Z write as a seed is provided. The address generation unit 112 can hold a plurality of sets with these register evenings as one set. The value of each registry can be set by software, for example, via the operating system.
アドレス発生部 1 1 2は、 図 1に示すように、 レジスタに設定された開始 アドレス、 幅'、 ピッチ、 繰り返し数 (これらを 「アドレス生成情報」 と称す) を元にアドレスを生成して、 2次元の領域 1 2 1 を特定するアドレスを生成 することができる。 そして、 識別情報でどのプロセッサ 1あるいは主メモリ 1 3に対してアクセスするか判定することができる。 生成したアドレスと選 択信号とは、 内部バスインタフェース 1 1 1に送信する。 もちろん、 ァドレ ス発生部が生成するアドレス生成情報はこれに限られない。 '  As shown in FIG. 1, the address generator 1 1 2 generates an address based on the start address, width ′, pitch, and number of repetitions (these are referred to as “address generation information”) set in the register. An address that specifies the two-dimensional area 1 2 1 can be generated. Then, it is possible to determine which processor 1 or main memory 13 to access based on the identification information. The generated address and the selection signal are transmitted to the internal bus interface 111. Of course, the address generation information generated by the address generator is not limited to this. '
データ転送エンジン 1 1は、 ライ トアクセス時 (レジスタによりライ トが 示されている'とき) には、 エントリ番号に^じてバッファからデータをリー ドし、 内部バスインタフェース 1 1 1に転送する。 内部バスインタフエ一ス 1 1 1は、 入力されたアドレスと選択信号とを基に出力先を特定し、 パッフ ァ 1 1 3からリードしたデータを内部バス 1 0を介して出力する。 The data transfer engine 11 reads data from the buffer according to the entry number and transfers it to the internal bus interface 11 1 at the time of write access (when the write is indicated by the register). . Internal bus interface The device 11 specifies the output destination based on the input address and the selection signal, and outputs the data read from the buffer 113 via the internal bus 10.
リードアクセス時 (レジスタによりリードが示されているとき) は、 内部 バス 1 0を介して読みだしたデータをバッファ 1 1 3に転送し、 ゾ ッファ 1 1 3は、 レジスタで設定されたエントリ番号に対してデ一夕を格納する。  At the time of read access (when the read is indicated by the register), the data read via the internal bus 10 is transferred to the buffer 113, and the buffer 113 stores the entry number set by the register. Store the night for
例えば、 アドレス発生器 1 1 2のレジスタに 2つのセッ トが設定されてお り、 それぞれ、 1 ) アドレス生成情報: A O , 認識情報 : プロセッサ 0, ェ ントリ番号 : B 0, リ一ドノライ ト : リード 2 ) アドレス生成情報 : A 1 , 認識情報 : プロセッサ 1, エントリ番号: B 0, リード/ライ ト : ライ トで あつたとする。 これは、 プロセッサ 0からアドレス生成情報 A 0で特定され るアドレス領域のデータをリ一ドしてバッファのエントリ番号 B 0に格納し、 プロセッサ 1のアドレス生成情報 A 1で特定されるアドレス領域にバッファ のエントリ番号 B 0に格納してあるデータをライ トすること、 すなわち、 プ 口セッサ 0からプロセッサ 1にデータを転送することを示している。  For example, two sets are set in the registers of the address generators 112, respectively. 1) Address generation information: AO, recognition information: processor 0, entry number: B0, read-only write: Read 2) Address generation information: A1, recognition information: Processor 1, entry number: B0, read / write: Write. This is because the data in the address area specified by the address generation information A0 is read from the processor 0, stored in the buffer entry number B0, and stored in the address area specified by the address generation information A1 of the processor 1. This indicates that data stored in the entry number B 0 of the buffer is to be written, that is, data is transferred from the processor 0 to the processor 1.
このようにすることで、 デ一夕転送エンジン 1 1は、 プロセッサ 1 aとプ 口セッサ 1 との間のデータ転送あるいはプロセッサ 1 と主メモリ 1 3との 間のデータ転送を、 プロセッサ 1の C P U 4における処理と並列に実現する ことが可能となる。 このとき、 データ転送エンジン 1 1は、 特定の転送元か ら特定の転送先に、 必要とするデータのみを転送するため、 余分なデー^転 送によるトラヒックは発生しないことになる。  By doing so, the data transfer engine 11 performs the data transfer between the processor 1 a and the processor 1 or the data transfer between the processor 1 and the main memory 13 by the CPU of the processor 1. This can be realized in parallel with the processing in (4). At this time, since the data transfer engine 11 transfers only necessary data from a specific transfer source to a specific transfer destination, traffic due to unnecessary data transfer does not occur.
なお、 データ転送エンジン 1 1の起動方法は、 割込みやポーリングにより 行い、 これによりプロセッサ間の同期をとる。  The data transfer engine 11 is started by interrupt or polling, thereby synchronizing the processors.
ところで、 C P U 4あるいは内部バス制御部 5が発行する要求がス トア命 令の場合、 ロード · ストァ制御部 3はデータキヤッシュ 2に対しパス 6を介 してライ ト処理を行う。  If the request issued by the CPU 4 or the internal bus control unit 5 is a store instruction, the load / store control unit 3 performs a write process on the data cache 2 via the path 6.
データキャッシュ 2がキャッシュヒッ トした場合、 ストアデータを直接デ —夕キャッシュ 2に書き込む。 データキヤッシュ 2がキヤッシユミスした場 合、 ロード ' ストア制御部 3は、 パス 9を介してそのキャッシュミス ' アド ' レスを内部バス制御部 5に転送し、 内部パス制御部 5は、 内部バス 1 0を介 して、 主メモリ制御部 1 2にそのァドレスに対するリ一ド要求を発行する。 主メモリ制御部 1 2は、 一般的な主メモリ ' インタフェースを持ち、 パス 1 4を経由して要求ァドレスに対するデータを主メモリ— 1 3から読出し、 再 ぴ、 内部バス 1 0を経由してプロセッサ 1内の内部バス制御部 5に転送する。 転送されたデータは、パス 9を経由して口一ド ·ストァ制御部 3に転送され、 データキヤッシュ 2に対してキャッシュ · フィル処理を実行する。 この一連 のシ'一ケンスは一般のデータキャッシュのフィル方式と同様である。 If data cache 2 hits the cache, store data is directly downloaded. — Write to Evening Cache 2. When the data cache 2 makes a cache miss, the load / store control unit 3 transfers the cache miss / address to the internal bus control unit 5 via the path 9 and the internal path control unit 5 sends the internal bus 10 A read request for the address is issued to the main memory controller 12 via the interface. The main memory control unit 12 has a general main memory interface, reads data corresponding to the requested address from the main memory 13 via the path 14, and reproduces the data via the internal bus 10. Transfer to the internal bus control unit 5 in 1. The transferred data is transferred to the password store control unit 3 via the path 9 and executes the cache fill process for the data cache 2. This sequence is similar to the general data cache fill method.
データキヤッシュ 2へのアクセス要求が口一ド命令の場合も、 一般的なデ —タキャッシュの制御と同様である ό この場合、 口一ド 'ストア制御部 5は パス 6を介してデータキヤッシュ 2に対してロードアクセスを行う。 Even if the access request to the data key Yasshu 2 mouth one de instruction, generic de - O is similar to the control of data cache in this case, the data mouth one de 'store controller 5 via a path 6 key Yasshu 2 Perform load access to.
デ一夕キヤッシュ 2がキヤッシュヒットの場合、 データキャッシュ 2から データを読出し、 アクセスの要求元である C P U 4若しくは内部バス制御部 5に対してパス 7もしくはパス 8を介してロードデ一夕を返送する。 データ キャッシュミスの場合、 ストア時のキャッシュミスと同様のシーケンスをと り、 データキャッシュ 2に対してフィルを終了した時点、 あるいはキヤッシ ュ · フィルと词時に、 ロード要求に対応するァドレスのデータを C P U 4も しくは内部バス制御部 5に返送 る。  If the cache 2 is a cache hit, read the data from the data cache 2 and return the load data via the path 7 or 8 to the CPU 4 or the internal bus control unit 5 that requested access. . In the case of a data cache miss, the same sequence as for a cache miss at the time of store is performed. 4 or returned to the internal bus control unit 5.
このような処理により、 確実に、 対象とするデ一夕をデ一タキャッシュ 2 内に留めておく ことができる。 すなわち、 例えば、 データキャッシュ 2への プリフェッチとして動作することができる。  By such processing, the target data can be reliably stored in the data cache 2. That is, for example, it can operate as a prefetch to the data cache 2.
次に、 本発明の第 2の実施形態について説明する。  Next, a second embodiment of the present invention will be described.
本実施形態におけるマルチプロセッサシステムは、. 口一カルのデータキヤ 、ソシュを備える複数のプロセッサ間でデータキャッシュを共有するインタリ 一ブ,方式.を採用するが、 システム内のどのプロセッサとデータキャッシュ共 有をするか、 および、 共有に際し、 どのようなサイズでデータキャッシュを 割り振るかを設定することができる。 ' 図 2は、 第 2の実施形態におけるマルチプロセッサシステムの構成を説明 するためのブロック図である。 The multiprocessor system according to the present embodiment includes an interface for sharing a data cache among a plurality of processors having a data cache and a sosh. The data cache is shared with which processor in the system, and the size of the data cache to be allocated can be set. FIG. 2 is a block diagram illustrating a configuration of a multiprocessor system according to the second embodiment.
本図において、 マルチプロセッサシステムは、 口一カルなデータキヤッシ ュ 2 6を備えた N P個のプロセッサ 2 0がグローバルバス 2 3によりバス接 続されて構成される。 '  In the figure, the multiprocessor system is configured by NP processors 20 having a single data cache 26 connected by a global bus 23. '
各プロセッサ 2 0は、 デ一タキャッシュ 2 6 と、 C P U 4と、 ロード ' ス トァ制御部 2 1 と、 マッピング制御部 2 2とを備えている。 また、 グロ一バ ルバス 2 8には、 パス調停を行なうためのアービタ 2 5が設けられている。  Each processor 20 includes a data cache 26, a CPU 4, a load storage controller 21, and a mapping controller 22. The global bus 28 has an arbiter 25 for arbitrating paths.
ここで、 ロード · ストア制御部 2 1は、 口一カル (自プロセッサ内) の C P U 4またはデータキャッシュ 2 6を共有する他のプロセッサ 2 0の C P U 4から発行されるデータキャッシュ 2 6へのロード命令おょぴストァ命令を 処理する。  Here, the load / store control unit 21 loads the data cache 26 issued from the CPU 4 of the local CPU 4 (or the own processor) or the CPU 4 of another processor 20 sharing the data cache 26. Process instructions and store instructions.
マツピング制御部 2 2は、 デ一夕キヤッシュ 2 6に対するロードあるいは ストァ 1こ際し、 グロ一バルバス 2 8上のどのプロセッサ 2 0のデータキヤッ シュ 2 6をアクセスするかの判定を行う。  The mapping control unit 22 determines which processor 20 on the global bus 28 should access the data cache 26 when loading or storing the data cache 26.
ロード · ストア制御部 2 1は、 マツピング制御部 2 2が自身のプロセッサ 2 0 (口一カルのプロセッサ 2 0 ) 内のデ一夕-キャッシュ 2 6をアクセスす ると判定したときは、 ローカルバス 2 7を介して、 ローカルのデータキヤッ シュ 2 6にアクセスする。  When the mapping control unit 22 determines that the mapping control unit 22 accesses the data cache 26 in its own processor 20 (oral processor 20), the load / store control unit 21 executes the local bus operation. Access local data cache 26 through 27.
一方、 マッピング制御部 2 2が、 他のプロセッサ 2 0 (グロ一バルバス 2 8により接続された他のプロセッサ 2 0 ) 内のデータキャッシュ 2 6をァク セスすると判定したときは、 グローバルバス 2 8を経由して、. 対象となる他 のプロセッサ 2 0内のデ一夕キャッシュ 2 6にアクセスする。 次に、 図 3を参照して、 マッピング制御部 2 2についてさらに詳細に説明 する。 ' On the other hand, when the mapping control unit 22 determines that the data cache 26 in the other processor 20 (the other processor 20 connected by the global bus 28) is to be accessed, the global bus 28 Access the data cache 26 in the other target processor 20 via. Next, the mapping control unit 22 will be described in more detail with reference to FIG. '
マッビング制御部 2 2は、 どのプロセッサ 2 0とデータキヤッシュ共有す るかを示す共有プロセッサ ' レジスタ 3 3と、 どのようなサイズでデータキ ャッシュを割り振るかを示すバウンダリ · レジスタ 3 0と、 バウンダリ · レ ジス夕.3 0の値に応じて、 ロード 'ストア制御部 2 1から入力されたァドレ ス 2 3をシフトさせるシフタ 3 1 とを備えている。  The mapping control unit 22 includes a shared processor 'register 33 indicating which processor 20 is to share the data cache, a boundary register 30 indicating the size of the data cache to be allocated, and a boundary register 30. And a shifter 31 for shifting an address 23 input from the load / store control unit 21 in accordance with the value of the register.
また、 マルチプロセッサ内の各プロセッサ 2 0には、 プロセッサを識別す るためのプロセッサ I Dが付されており、 マッピング制御部 2 2は、 自身の プロセッサ 2 0を示すプロセッサ I D 3 6を保持する。  Further, each processor 20 in the multiprocessor is provided with a processor ID for identifying the processor, and the mapping control unit 22 holds a processor ID 36 indicating the processor 20 itself.
さらに、 マヅピング制御部 2 2は、 シフタ 3 1の出力と、 プロセッサ I D 3 6 と、 共有プロセッサ ' レジスタ 3 3の値とに基づいてプロセッサ選択信 号 2 4をアビ一夕 2 5に出力するセレクタ 3 4を備えている。  Further, the mapping control unit 22 outputs a processor selection signal 24 to the aviator 25 based on the output of the shifter 31, the processor ID 36, and the value of the shared processor 'register 33. It has 3 4.
なお、 共有プロセッサ · レジスタ 3 3およびパゥンダリ · レジスタ 3 0の 値は、 例えば、 本マルチプロセッサシステムを制御するオペレーティングシ ステムを介して設定するようにすることができる。 例えば、 本マルチプロセ ッサシステムで実行されるアプリケーションソフトウエアは、 そのアプリケ ーシヨンソフトウエアの実行に適したデータキヤッシュ共有が可能なように、 共有プロセッサ · レジスタ 3 3およびパゥンダリ · レジスタ 3 0の値を設定 するようにする。  The values of the shared processor register 33 and the pandary register 30 can be set, for example, via an operating system that controls the multiprocessor system. For example, the application software executed in the multiprocessor system uses the values of the shared processor register 33 and the pandary register 30 so that the data cache suitable for executing the application software can be shared. Make settings.
ここで、 本実施形態において、 共有プロセッサ ' レジス夕 3 3で用いるフ ォ一マッ トの一例について説明する。 上述のように、 共有プロセッサ · レジ ス夕 3 3は、 プロセッサ 2 0が、 グローバルバス 2 8に接続された複数のプ 口セッサ 2 0のうちどのプロセッサ 2 0とデータキャッシュ共有を行なうか , を指定するためのレジスタである。 '  Here, in the present embodiment, an example of a format used in the shared processor 'Register 33' will be described. As described above, the shared processor register 33 determines which processor 20 among the plurality of processors 20 connected to the global bus 28 should share the data cache. This is a register to specify. '
N P個のプロセッサ 2 0から構成されるマルチプロセッサシステムの場合、 共有プロセッサ · レジスタ 3 3のビット幅は l o g 2 ( N P ) とする。 そし て、 共有プロセッサ ' レジスタ 3 3の全ビットが " 0 " の時、 他のプロセッ サ 2 0とはデータキャッシュを共有しないものとし、 共有プロセッサ · レジ スタ 3 3の下位 1 ビッ トのみを " 1 " とする時、 下位 1 ビッ トを除いたプロ セッサ I D 3 6が等しいプロセッサ 2 0 とデ一夕キヤッシュ共有を行うもの とする。 この場合、 2つのプロセッサ 2 0でデータキャッシュ共有を行うこ とになる。 なお、 各プロセッサ 2 0には 0 X 0から昇順のプロセッサ I D 3 6が与えられているものとする。 For a multiprocessor system consisting of NP processors 20: Shared processor · Register 33 The bit width of register 3 is log 2 (NP). Then, when all bits of the shared processor 'register 33' are "0", the data cache is not shared with other processors 20, and only the lower 1 bit of the shared processor register 33 is set to " When "1" is set, the cache is shared with the processor 20 having the same processor ID 36 excluding the lower 1 bit. In this case, two processors 20 share the data cache. It is assumed that each processor 20 is given a processor ID 36 in ascending order from 0X0.
同様に、 下位 mビッ トを除いたプロセッサ I D 3 6が等しいプロセッサ 2 0群とデータキヤッシュ共有する場合には、 共有プロセッサ · レジスタ 3 3 の下位側から mビッ トを " 1 " とする。 すなわち、 共有は 2、 4、 8…個の プロセッサ間で行なわれることになり、最大 2 π個のプロセッサ 2 0間でデー 夕キャッシュ共有を行なうことになる。 プロセッサ 2 0が他の全プロセッサ 2 0とデータキヤッシュ共有を行う場合には、 共有プロセッサ · レジスタ 3 3の全ビッ トを " 1 " とする。 なお、 互いにデ一夕キャッシュ共有を行なう プロセッサ 2 0同士は、 それぞれの共有プロセッサ · レジスタ 3 3に同じ値 が設定されることになる。 Similarly, when the data cache is shared with the group of processors 20 having the same processor ID 36 excluding the lower m bits, the m bits from the lower side of the shared processor / register 33 are set to "1". That is, sharing is performed between 2, 4, 8,... Processors, and data cache sharing is performed between a maximum of processors 20. When the processor 20 performs data cache sharing with all other processors 20, all bits of the shared processor register 33 are set to "1". In addition, the processors 20 sharing the cache with each other have the same value in the shared processor / register 33.
次に、 本実施形態において、 データキャッシュ 2 6のサイズの割り振りを 示すレジスタであるバウンダリ ·レジスタ S 0で用いるフォ一マツ 卜の一例 について説明する。 なお、 各データキャッシュ 2 6のサイズが定まれば、 各 データキャッシュ 2 6のアドレスの境界が求められる (データキャッシュ 2 6のアドレスは、 共有を行なうプロセッサ 2 0のプロセッサ I Dの順に割り 当てるものとする。 ) ,  Next, in the present embodiment, an example of a format used in the boundary register S0 which is a register indicating the allocation of the size of the data cache 26 will be described. When the size of each data cache 26 is determined, the boundary of the address of each data cache 26 is obtained. (The addresses of the data cache 26 should be assigned in the order of the processor ID of the processor 20 to be shared. Yes,),
こ こでは、 データキャッシュの割り振りサイズの最小単位である最小アド ' レス · パゥンダリ C (バイ ト) をあらかじめ定めておく。 最小アドレス · ノ ゥンダリ Cについても、 例えば、 オペレーティングシステ.ムを介して設定で きるようにすることができる。 ' このとき、 データキヤッシュ共有において最小ァドレス ·パゥンダリ で パンク · インタリーブ構成をとる場合、 バウンダリ ' レジス夕 3 0の全ピッ トを " 0 " とする。 そして、.、 デ一夕キャッシュ 2 6のサイズを最小アド'レ ス · バウンダリ Cの 2倍とするたびに、 パゥンダリ · レジスタ 3 0の下位ピ ッ トから順に " 1 " としていく。 例えば、 バウンダリ · レジスタ 3 0の下位 2ビッ トのみが " 1 " のプロセッサ 2 0のデータキャッシュ 2 6は、 最小ァ ドレス ·バウンダリ Cの 4倍のサイズが設定されていることになる。 Here, the minimum address pane C (byte), which is the minimum unit of the allocation size of the data cache, is determined in advance. For the lowest address and foundry C, for example, it can be set via the operating system. You can make it. 'At this time, if a puncture / interleave configuration is adopted with the minimum address boundary in the data cache sharing, all bits of the boundary register '30 are set to "0". Then, each time the size of the cache overnight 26 is set to twice the minimum address boundary C, it is set to "1" sequentially from the lower bits of the boundary register 30. For example, the size of the data cache 26 of the processor 20 in which only the lower 2 bits of the boundary register 30 are "1" is set to four times the minimum address boundary C.
なお、 バウンダリ · レジスタ 3 0および共有プロセッサ · レジスタ 3 3の フォーマットは上記の例に限られない。  The format of the boundary register 30 and the shared processor register 33 is not limited to the above example.
次に、 マッビング制御部 2 2の処理について説明する。  Next, the processing of the mapping control unit 22 will be described.
マツビング制御部 2 2に入力されたァドレス 2 3は、 シフタ 3 1において、 バウンダリ · レジスタ 3 0の値等に基づいてシフ 卜され、 シフトアドレス 3 5となる。  The address 23 input to the matching control unit 22 is shifted in the shifter 31 based on the value of the boundary register 30 and the like, and becomes a shift address 35.
ここで、 シフ トアドレス 3 5は、 < 1 o g 2 (最小ァドレス ·バウンダリ C ) +∑ {バゥンダリ · レジスタ 3 0 } + 1 o g 2 ( N P ) — 1 : 1 o g 2 (最小ァドレス · パゥンダリ C ) +∑ {バゥンダリ · レジスタ 3 0 } >とな る。 '  Here, the shift address 35 is <1 og 2 (minimum address boundary C) + ∑ {boundary register 30} +1 og 2 (NP) —1: 1 og 2 (minimum address boundary C) + ∑ {Boundary register 3 0}>. '
ここで、 ∑ {バゥンダリ · レジスタ 3 0 } は、 インタリーブするアドレス 空間を指定している。 ∑ {バウンダリ · レジスタ 3 0 } は、 例えば、 バウン ダリ · レジス夕が 3ビッ トで表現されている場合、 ∑ {ビッ ト 0、 ビッ ト 1、 . ビッ ト 2 } を示す。 最小ァドレス 'バウンダリ Cを 1 K Bとした場合のシフ トアドレス 3 5は、 以下のようになる。  Here, the {Boundary Register 30} specifies the address space to interleave. ∑ {Boundary register 30} indicates, for example, ∑ {Bit 0, Bit 1,. Bit 2} when the boundary register is represented by 3 bits. The shift address 35 when the minimum address' boundary C is 1 KB is as follows.
バウンダリ レジスタ = 0 0 0 : く 1 2 : 1 0 >  Boundary register = 0 0 0: N 1 2: 1 0>
バウンダリ レジスタ = 0 0 1 : < 1 3 : 1 1 >  Boundary register = 0 0 1: <1 3: 1 1>
バウンダリ レジス夕 = 0 1 1 : < 1 4 : 1 2 > バウンダリ レジスタ = 1 1 1 : く 1 5 : 1 3 > Boundary Regis evening = 0 1 1: <1 4: 1 2> Boundary register = 1 1 1: 1 5: 1 3>
例えば、 プロセッサ数 N Pが 8、 バウンダリ · レジスタ 3 0の値が 0 X 0 1 1、 最小ァドレス境界 Cが 1 K Bの場合に、 入力,されたァドレスが < 3 1 : 0>であるとすると、シフトアドレス 3 5は、 < 1 o g 2 ( 1 KB) +∑ { 0 1 , 1 } + 1 o g 2 (8) - 1 : 1 o g 2 ( 1 KB) +∑ ί 0 ; 1 , 1 } >、 すなわちアドレス < 1 4 : 1 2 >となる。 For example, if the number of processors NP is 8, the value of the boundary register 30 is 0 X 0 1 1 and the minimum address boundary C is 1 KB, and the input and input addresses are <31: 0>, Shift address 35 is <1 og 2 (1 KB) + ∑ {0 1, 1} + 1 og 2 (8)-1: 1 og 2 (1 KB) + ∑ ί 0 ; 1, 1}>, That is, the address becomes <14:12>.
シフトアドレス 3, 5およびプロセッサ I D 3 6は、 セレクタ 3 4に入力さ れる。 セレクタ 3 4は、 共有プロセッサ ' レジスタ 3 3の値を元に、 ァクセ スすべきプロセッサ I Dを示すプロセッサ選択信号 2 4を生成し、 アビ一夕 2 5に送信する。  The shift addresses 3, 5 and the processor ID 36 are input to the selector 34. The selector 34 generates a processor selection signal 24 indicating a processor ID to be accessed, based on the value of the shared processor 'register 33, and transmits the processor selection signal 24 to the aviator 25.
セレクタ 34では、 ビッ ト毎に共有プロセッサ 'レジスタ 3 3の値を調ぺ、 共有プロセッサ · レジスタ 3 3の値が " 1 " ならばシフトアドレス 3 5の値 を選択し、 共有プロセッサ · レジスタ 3 3の値が " 0 " ならばプロセッサ I D 3 6の値を選択することによりプロセッサ選択信号 2 4生成を生成してい く。  In the selector 34, the value of the shared processor 'register 33' is adjusted for each bit. If the value of the shared processor · register 33 is “1”, the value of the shift address 35 is selected, and the value of the shared processor · register 33 is selected. Is "0", the processor selection signal 24 is generated by selecting the value of the processor ID 36.
例えば、 プロセッサ I D 3 6が 0 X 1 0 1のプロセッサ 2 0が、 4つのプ 口セッサ 2 0でデータキャッシュ共有し (共有プロセッサ · レジスタ 3 3 = 0 x 0 1 1 ) 、 シフ トアドレス 3 5が 0 x 0 1 0の場合、 1 ビッ ト目はシフ トアドレス 3 5の " 0 " が選択され、 2 ビッ ト目もシフ トアドレス 3 5の " 1 " が選択され、 3ピッ ト目は、 プロセッサ I D 3 6の 1が選択される結 果、 アクセス ' プロセッサ I D 2 4は 0 X 1 1 0 となる。 これは、 プロセッ サ I Dが 0 X 1 1 0のプロセッサ 2 0のデ一タキャッシュ 2 6に対してァク セスすべきことを示している。  For example, a processor 20 having a processor ID 36 of 0 X 101 shares a data cache with four processors 20 (shared processor register 3 3 = 0 x 0 1 1) and shift address 35 Is 0x010, the first bit is "0" of shift address 35, the second bit is also "1" of shift address 35, and the third bit is As a result, 1 of the processor ID 36 is selected, and as a result, the access 'processor ID 24' becomes 0 × 110. This indicates that the processor ID should access the data cache 26 of the processor 20 at 0X110.
マッピング制御部 2 2が、 ローカルのプロセッサ 2 0内のデ一タキャッシ ュ 2 6をアクセスすると判定した場合、 ロード ' ストア制御部 2 1は、 ロー カルバス 2 7を使用して、 ローカルのデータキャッシュ 2 6に対してロード 命令あるいはストァ命令を実行する。 When the mapping control unit 22 determines that the data cache 26 in the local processor 20 is to be accessed, the load / store control unit 21 uses the local bus 27 to execute the local data cache 2. Load against 6 Execute instructions or store instructions.
マッピング制御部 2 2が、 他のプロセッサ 2 0内のデータキヤッシュ 2 6 をアクセスすると判定した場合、 ロード ' ストア制御部 2 1は、 アービタ 2 5 に対しパス権を求め、 パス権が得られると、 グローバルバス 2 8を使用し て、 他のプロセッサ 2 0内のデ一タキャッシュ 2 6に対してに対して口一ド 命令あるいはストア命令を実行する。  If the mapping control unit 22 determines that the data cache 26 in the other processor 20 is to be accessed, the load / store control unit 21 requests the arbiter 25 for a path right, and if the path right is obtained, The global bus 28 is used to execute a read instruction or a store instruction to the data cache 26 in another processor 20.
アクセス対象となったデータキャッシュ 2 6は、 口一カルパス 2 7からの アクセスあるいはグローバルバス 2 8からのアクセスの調停後、 実際にデー 夕キャッシュ 2 6内のデータメモリおよびタグメモリへのアクセスを行う。 本方式を用いたマルチプロセッサシステムのさらなる具体例を図 4と図 5 とを参照して説明する。  The data cache 26 to be accessed actually accesses the data memory and tag memory in the data cache 26 after arbitrating access from the oral path 27 or access from the global bus 28. . A further specific example of a multiprocessor system using this method will be described with reference to FIGS.
本例において、 マルチプロセッサシステムは、 8つのプロセッサ (プロセ ッサ I Dは、 0 x 0 0 0から 0 x 1 1 1であるとする)からなるシステムで、 最小アドレス 'バウンダリ Cを 1 K Bとする。  In this example, the multiprocessor system is a system composed of eight processors (processor IDs are assumed to be from 0x0000 to 0x111), and the minimum address' boundary C is set to 1 KB. .
図 4において、 プロセッサ 0 ( 0 x 0 0 0) およびプロセッサ 1 ( 0 x 0 0 1 ) は、 シェアド ' レジスタ 4 2が、 0 x 0 0 0であり、 データキヤッシ ュ共有を行なわないことを示している。 このとき、 バウンダリ · レジスタ 4 1の値は意味を持たない。 また、 プロセッサ 2 ( O x 0 1 0 ) およびプロセ ッサ 3 ( 0 0 1 1 ) は、 シェアド · レジスタ 4 2が、 0 0 0 1 (プロセ ッサ I Dの上位 2ビッ トが等しいプロセッサ) であり、 互いに 2つのプロセ ッサでデ一タキャッシュ共有を行なうことを示している。 そして、 バウンダ リ · レジスタ 4 1は、 いずれも 0 x 0 1 1 ( C X 4 = 4 K B ) である。 さら にプロセッサ 4 ( 0 x 1 0 0 ) とプロセッサ 5 ( 0 x 1 0 1 ) とプロセッサ 6 ( 0 x 1 1 0 ) とプロセッサ 7 ( 0 x 1 1 1 ) とは、 、 シェアド · レジス 夕 4 2が、 0 x 0 1 1 (プロセッサ I Dの上位 i ビッ トが等しいプロセッサ) であり、 互いに 4つのプロセッサでデータキャッシュ共有を行なうごとを示 している。 そして、 バウンダリ ' レジスタ 4 1は、 いずれも 0 x 0 0 0 ( C X 1 = 1 KB) である。 In FIG. 4, processor 0 (0x0000) and processor 1 (0x001) indicate that shared 'register 42 is 0x0000 and does not perform data cache sharing. I have. At this time, the value of the boundary register 41 has no meaning. Also, processor 2 (O x 0 1 0) and processor 3 (0 0 1 1) have shared register 42 with 0 0 1 (the processor with the same high-order 2 bits of processor ID). Yes, indicating that two processors share the data cache with each other. Each of the boundary registers 41 is 0x011 (CX4 = 4 KB). In addition, processor 4 (0x100), processor 5 (0x101), processor 6 (0x110), and processor 7 (0x111) are shared registers. 2 is 0x0 1 1 (processors with the same high-order i-bit of the processor ID), which indicate each time the four processors share the data cache. are doing. The boundary register 41 is both 0x00 (CX1 = 1KB).
図 5は、 図 4で示されるマルチプロセッサシステムのデータキャッシュ共 有のイメージを示す図である。  FIG. 5 is a diagram showing an image of data cache sharing of the multiprocessor system shown in FIG.
本図に示すように、 プロセッサ 0 ( 0 x 0 0 0 ) とプロセッサ 1 ( 0 x 0 0 1 ) とは、' それぞれ分散型のデ一夕キャッシュとして定義される (符号 4 5、 4 6 ) 。 プロセッサ 2 ( 0 0 1 0 ) とプロセッサ 3 ( 0 x 0 1 1 ) と は、 共有型データキヤッシュにて接続されたマルチプロセッサとして動作し、 0番地から 4 KB— 1番地までをプロセッサー 2に( 0 X 0 1 0 )割り当て、 4 K Bから 8 K B— 1までをプロセッサ 3に割り当てたインタリーブ構成を とる (符号 4 7 ) 。 プロセッサ 4 (0 x 1 0 0 ) 〜プロセッサ 7 ( 0 1 1 1 ) は、 共有型データキャッシュにて接続されたマルチプロセッサとして動 作し、 そのインタリーブアドレス境界は 1 KBとなる (符号 4 8) 。  As shown in the figure, processor 0 (0x00) and processor 1 (0x001) are defined as distributed distributed caches (codes 45, 46). . Processor 2 (0 0 1 0) and processor 3 (0 x 0 1 1) operate as a multiprocessor connected by a shared data cache, and transfer addresses 0 to 4 KB—address 1 to processor 2 ( 0 X 0 10) Allocation, interleave configuration in which 4 KB to 8 KB-1 are allocated to processor 3 (reference numeral 47). Processor 4 (0x100) to processor 7 (0111) operate as multiprocessors connected by a shared data cache, and the interleave address boundary is 1 KB (code 48). .
このように、 本'実施形態によれば、 口一カルのデータキャッシュを備える 複数のプロセッサ間でデータキヤッシュを共有するィンタリーブ方式におい て、 システム内のどのプロセッサとデータキヤッシュ共有をするか、および、 共有に際し、 どのようなサイズでデータキャッシュ.を割り振るかを設定する ことができる。  As described above, according to the present embodiment, in the interleaving method in which a data cache is shared among a plurality of processors including a local data cache, which processor in the system shares the data cache, and When sharing, you can set the size of the data cache to be allocated.
これにより、 本マルチプロセッサシステムで実行されるアプリケ一ション ソフ トウェアは、 その実行に適したデータキャッシュ共有が可能になり、 ィ ンタリーブ構成の固定化に起因するキヤッシュメモリの使用効率低下を防ぐ ことができる。  As a result, the application software executed in this multiprocessor system can share the data cache suitable for the execution, and prevent the cache memory usage efficiency from decreasing due to the fixed interleaving configuration. it can.
ここで、 フロアプランの制約から、 各プロセッサ 2 0は、 物理的に遠い位 置に配置されることがあり、 さらにバス調停も加わるため、 ローカルのデ一 夕キャッシュ 2 6をアクセスするレイテンシに対して、 一般に、 他のプロセ ッサのデ一夕キャッシュ 2 6にアクセスするレイテンシは大きくなる。 また、 プロセッサ 2 0のスト一ルサイクル数を増大させる原因は、 主としてロード 命令である。 したがって、 ローカル以外のアクセスに関しては、 ストア命令 のみを実行可能とする制約を持つことにより、 アービタ 2 5 とグローバルバ ス 2 8の論理規模を削減することも可能である。 Here, due to floor plan constraints, each processor 20 may be located at a physically remote location, and bus arbitration is also added. Therefore, the latency for accessing the local data cache 26 is limited. In general, the latency to access the data cache 26 of another processor increases. Also, The cause of the increase in the number of storage cycles of the processor 20 is mainly a load instruction. Therefore, with respect to non-local accesses, it is possible to reduce the logical scale of the arbiter 25 and the global bus 28 by having a constraint that only the store instruction can be executed.
図 6に本発明の第 3の実施形態について示す。 基本構成は、 先に述べた 2 つの実施例を組み合わせた構成であり、 N P個のプロセッサ 5 0が、 内部バ ス 1 0とグロ一パルバス 2 8により接続されたマルチプロセッサシステムで ある。'第 1の実施形態および第 2の実施形態と同じ部位には同じ符号を付し ている。 ロード · ストァ制御部 5 1は、 第 1の実施形態におけるロード · ス トァ制御部 3と第 2の実施形態における口一ド · ストァ制御部 2 1 との両方 の機能を備えている。 ,  FIG. 6 shows a third embodiment of the present invention. The basic configuration is a combination of the above-described two embodiments, and is a multiprocessor system in which NP processors 50 are connected by an internal bus 10 and a global bus 28. 'The same parts as those in the first embodiment and the second embodiment are denoted by the same reference numerals. The load / store control unit 51 has the functions of both the load / store control unit 3 in the first embodiment and the portal / storage control unit 21 in the second embodiment. ,
第 1の実施形態のデータ転送エンジン 1 1によるデータ転送は、 割込みや ポ一リングによって実行されるため、 起動までのオーバへッ ドが発生する。 しかしながら、 プロセッサ 5 0とは独立にデータ転送が可能なため、 大容量 なデータの高速転送が可能である。 第 2の実施形態のグロ一バルバス 2 8と アービタ 2 5 を角いた共有型データキヤッシュ方式では、 大容量のデータ 転送、 および小容量データ転送も可能であるが、 他のプロセッサのデータキ ャッシュ 2 6に対する Π—ド命令に関しては、 レイテンシが大きい。 本実施 形態は、 これらの 2つの特徴を考慮し、 アプリケーションソフ トゥァァによ り使い分けが実現可能な構成である。  Since the data transfer by the data transfer engine 11 of the first embodiment is executed by interruption or polling, overhead until the start is generated. However, since data can be transferred independently of the processor 50, large-capacity data can be transferred at high speed. In the shared data cache system in which the global bus 28 and the arbiter 25 according to the second embodiment are connected, large-capacity data transfer and small-capacity data transfer are also possible, but the data cache 26 of other processors is used. Latency is high for the 命令 instruction. The present embodiment has a configuration in which these two features are taken into consideration and can be properly used by the application software.
上述のように、 本発明の第 1の実施形態によれば、 プロセッサ間のデ一タ 通信において、 プロセッサ間の無駄なデータ転送を排除し、 性能低下を'防ぐ ことができる。  As described above, according to the first embodiment of the present invention, in data communication between processors, useless data transfer between processors can be eliminated, and performance degradation can be prevented.
また、 本発明の第 2の実施形態によれば、 マルチプロセッサのインタリ一 ブ型キャッシュを使用する方式において、 インタリーブ構成の固定化に起因 するキヤッシュ'メモリの使用効率低下を防ぐことができる。 ' . 産業上の利用可能性 Further, according to the second embodiment of the present invention, in a method using an interleaved cache of a multiprocessor, it is possible to prevent a decrease in the use efficiency of the cache memory due to the fixed interleave configuration. '. Industrial applicability
本発明は、 データキヤッシュを備えた複数のプロセッサ間のデータ通信で あって、 プロセッサ間の無駄なデータ転送を排除し、 また、 マルチプロセッ サのインタリーブ型キヤッシュを使用する方式において、 インタリーブ構成 の固定化に起因するキャッシュメモリの使用効率低下を防ぐことを目的とす るマルチプロセッサシステムのデータ通信に適用可能である。  The present invention relates to a data communication between a plurality of processors provided with a data cache, which eliminates useless data transfer between the processors, and a method of using an interleaved cache of a multiprocessor to fix an interleave structure. It can be applied to data communication of a multiprocessor system for the purpose of preventing a decrease in the use efficiency of the cache memory due to the development.

Claims

請 求 の 範 囲 The scope of the claims
1 . 1.
データキャッシュを備えた複数のプロセッサとメインメモリとがバスによ り接辕されたマルチプロセッサシステムにおいて、  In a multiprocessor system in which a plurality of processors having a data cache and a main memory are connected by a bus,
アクセスすべきデータ.キヤッシュまたはメインメモリを特定するための情 報と、 'アクセスすべきアドレスを特定するための情報と、 アクセス種を指定 するための情報とを関連付けて記憶する領域を複数備え、  Data to be accessed, comprising a plurality of areas for storing information for specifying cache or main memory, information for specifying an address to be accessed, and information for specifying an access type.
前記領域に記録された情報にしたがって、 データキャッシュまたはメイン メモリに対して、 ロード命令およびストァ命令を発行するデータ転送ェンジ ンを'備えたことを特徴とするマルチプロセッサシステム。  A multiprocessor system comprising a data transfer engine for issuing a load instruction and a store instruction to a data cache or a main memory according to information recorded in the area.
2 .  2.
請求項 1に記載のマルチプロセッサシステムにおいて、 , 前記データ転送エンジンは、 データを一時的に格納するバッファ領域を備 え、.  2. The multiprocessor system according to claim 1, wherein the data transfer engine includes a buffer area for temporarily storing data.
前記発行した口一ド命令に基 いてデータキヤッシュまたはメインメモリ から読み出したデータを前記バッファ領域に格納し、  Storing data read from the data cache or main memory in the buffer area based on the issued command;
前記バッファ領域 ^に格納したデ一 を前記発行したストァ命令とともにデ ータキャッシュまたはメインメモリに送信することを特徴とするマルチプロ セッサシステム。  A multiprocessor system characterized by transmitting data stored in the buffer area ^ to a data cache or a main memory together with the issued store instruction.
3 .  3.
データキヤッシュを備えた複数のプロセッサがバスにより接続されたマル チプロセッサシステムにおいて、  In a multiprocessor system in which multiple processors with data caches are connected by a bus,
各プロセッサは、  Each processor:
他のいずれのプロセッサとデータキャッシュの共有を行なうか否かの設定 をするための領域と、 共有するデータキヤ .ッシュのサイズを設定するための 領域と、 Setting whether to share the data cache with any other processor Area for setting the size of the data cache to be shared, and
アクセスすべきアドレスを受け付けると上記 2つの領域を参照して、 どの プロセッサにアクセスすべきかを判断する判断手段とを備えることを特徴と するマルチプロセッサシステム。  A multiprocessor system comprising: a determination unit that determines which processor to access by referring to the above two areas when an address to be accessed is received.
4 . ' : .  Four . ' : .
請求項 3'に記載のマルチプロセッサシステムにおいて、  In the multiprocessor system according to claim 3 ′,
' 前記データキャッシュの共有は、 バンク ·インタリーブ方式により行なう ことを特徴とするマルチプロセッサシステム。 'The multiprocessor system is characterized in that the data cache is shared by a bank interleave method.
5 .  Five .
請求項 3または 4に記載のマルチプロセッサシステムにおいて、  In the multiprocessor system according to claim 3 or 4,
判断手段は、 アクセス種がロードの場合、 他のプロセッサへのアクセスを 行なわないように判断することを特徴とするマルチプロセッサシステム。 A multiprocessor system characterized in that when the access type is load, the determination means determines not to access another processor.
6 . 6.
データキャッシュを備えた複数のプロセッサとメインメモリとがバスによ り接続されたマルチプロセッサシステムにおいて、  In a multiprocessor system in which a plurality of processors having a data cache and a main memory are connected by a bus,
アクセスすべきデータキャッシュまたはメインメモリを特定するための情 報と、 アクセスすべきアドレスを特定するための情報と、 アクセス種を指 するための情報とを関連付けて記憶する領域を複数備え、 前記領域に記録さ れた情報にしたがって、 デ一タキャッシュまたはメインメモリに対して、 口 A plurality of areas for storing information for specifying a data cache or a main memory to be accessed, information for specifying an address to be accessed, and information for indicating an access type in association with each other; According to the information recorded in the data cache or main memory.
―ド命令およびストァ命令を発行するデータ転送エンジンを備え、 -It has a data transfer engine that issues hardware and store instructions,
各プ Dセッサは、 他のいずれのプロセッサとデータキヤッシュの共有を行 なうか否かの設定をするための領域と、 共有するデ一夕キャッシュのサイズ を設定するための領域と、 アクセスすべきアドレスを受け付けると上記 2つ の領域を参照して、 どのプロセッサにアクセスすべきかを判断する判断手段 とを備えたことを特徴とするマルチプロセッサシステム。  Each processor should have access to an area for setting whether to share the data cache with any other processor and an area for setting the size of the shared data cache. A multiprocessor system comprising: a determination unit that determines which processor should be accessed by referring to the two areas when an address is received.
PCT/JP2002/012523 2001-12-03 2002-11-29 Multi-processor system WO2003048955A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003550079A JPWO2003048955A1 (en) 2001-12-03 2002-11-29 Multiprocessor system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2001369009 2001-12-03
JP2001/369009 2001-12-03

Publications (1)

Publication Number Publication Date
WO2003048955A1 true WO2003048955A1 (en) 2003-06-12

Family

ID=19178486

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2002/012523 WO2003048955A1 (en) 2001-12-03 2002-11-29 Multi-processor system

Country Status (2)

Country Link
JP (1) JPWO2003048955A1 (en)
WO (1) WO2003048955A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012008774A (en) * 2010-06-24 2012-01-12 Fujitsu Ltd Cache device and information processing device
CN113222115A (en) * 2021-04-30 2021-08-06 西安邮电大学 Convolutional neural network-oriented shared cache array

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5710907A (en) * 1995-12-22 1998-01-20 Sun Microsystems, Inc. Hybrid NUMA COMA caching system and methods for selecting between the caching modes
WO2000022538A1 (en) * 1998-10-14 2000-04-20 Hitachi, Ltd. A data streamer
US6314491B1 (en) * 1999-03-01 2001-11-06 International Business Machines Corporation Peer-to-peer cache moves in a multiprocessor data processing system
US20020174301A1 (en) * 2001-05-17 2002-11-21 Conway Patrick N. Method and system for logical partitioning of cache memory structures in a partitioned computer system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5710907A (en) * 1995-12-22 1998-01-20 Sun Microsystems, Inc. Hybrid NUMA COMA caching system and methods for selecting between the caching modes
WO2000022538A1 (en) * 1998-10-14 2000-04-20 Hitachi, Ltd. A data streamer
US6314491B1 (en) * 1999-03-01 2001-11-06 International Business Machines Corporation Peer-to-peer cache moves in a multiprocessor data processing system
US20020174301A1 (en) * 2001-05-17 2002-11-21 Conway Patrick N. Method and system for logical partitioning of cache memory structures in a partitioned computer system

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
HIKARU SAMUKAWA: "Heiretsusei no tsuikyu -programmer kara mita RISC keisanki no uchigawa-", TUTORIALS SHIRYO, 5 June 2001 (2001-06-05), pages 1 - 32, XP002967002 *
KEIJI KOJIMA, KIYOKAZU NISHIOKA, TORU NOJIRI: "Media processor(MAP) no vision to architecture", INFORMATION PROCESSING SOCIETY OF JAPAN DAI 59 KAI (HEISEI 11 NEN KOKI) ZENKOKU TAIKAI TOKUBETSU SESSION (1) KOEN RONBUNSHU, 28 September 1999 (1999-09-28), pages 87 - 92, XP002967001 *
KOJI HOSOKI ET AL.: "Media processor MAPCA no data tenso hoshiki", vol. 2002, no. 9, 1 February 2002 (2002-02-01), pages 91 - 95, XP002965888 *
MASAO ISHIGURO ET AL.: "VLIW-gata media processor o mochiita MPEG-4 video decoder", THE INSTITUTE OF ELECTRONICS, INFORMATION AND COMMUNICATION ENGINEERS KENKYU HOKOKU, vol. 101, no. 456, 15 November 2001 (2001-11-15), pages 31 - 36, XP002965887 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012008774A (en) * 2010-06-24 2012-01-12 Fujitsu Ltd Cache device and information processing device
CN113222115A (en) * 2021-04-30 2021-08-06 西安邮电大学 Convolutional neural network-oriented shared cache array
CN113222115B (en) * 2021-04-30 2024-03-01 西安邮电大学 Convolutional neural network-oriented shared cache array

Also Published As

Publication number Publication date
JPWO2003048955A1 (en) 2005-08-11

Similar Documents

Publication Publication Date Title
US7120755B2 (en) Transfer of cache lines on-chip between processing cores in a multi-core system
US5754800A (en) Multi processor system having dynamic priority based on row match of previously serviced address, number of times denied service and number of times serviced without interruption
JP2512651B2 (en) Memory sharing multiprocessor
JP3722415B2 (en) Scalable shared memory multiprocessor computer system with repetitive chip structure with efficient bus mechanism and coherence control
US7668997B2 (en) High speed bus system that incorporates uni-directional point-to-point buses
JP2010191638A (en) Cache device
US6996693B2 (en) High speed memory cloning facility via a source/destination switching mechanism
US7069394B2 (en) Dynamic data routing mechanism for a high speed memory cloner
US6892283B2 (en) High speed memory cloner with extended cache coherency protocols and responses
JPH0810447B2 (en) How to maintain data compatibility of all physical addresses used by memory sharing multiprocessors
JP5439808B2 (en) System LSI with multiple buses
US6898677B2 (en) Dynamic software accessibility to a microprocessor system with a high speed memory cloner
US7502917B2 (en) High speed memory cloning facility via a lockless multiprocessor mechanism
WO2003048955A1 (en) Multi-processor system
JPS6237752A (en) Multiple bus system possessing microprocessor having separate instruction, data interface and cash
JP2005128963A (en) Storage control device and control system capable of dma transfer
US7356649B2 (en) Semiconductor data processor
US6928524B2 (en) Data processing system with naked cache line write operations
US8015326B2 (en) Central processing apparatus, control method therefor and information processing system
WO2001050267A2 (en) Dual cache with multiple interconnection operation
Dixon Page associative caches on Futurebus
JP2003216566A (en) Microcomputer
JPH06195263A (en) Cache memory system
JP2000057053A (en) Cache memory device
JP2009042992A (en) Bus controller

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): CN JP KR US

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR IE IT LU MC NL PT SE SK TR

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
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: 2003550079

Country of ref document: JP

122 Ep: pct application non-entry in european phase