WO2011033862A1 - Information processing device and data transfer method - Google Patents

Information processing device and data transfer method Download PDF

Info

Publication number
WO2011033862A1
WO2011033862A1 PCT/JP2010/062664 JP2010062664W WO2011033862A1 WO 2011033862 A1 WO2011033862 A1 WO 2011033862A1 JP 2010062664 W JP2010062664 W JP 2010062664W WO 2011033862 A1 WO2011033862 A1 WO 2011033862A1
Authority
WO
WIPO (PCT)
Prior art keywords
read
data
address
elements
data elements
Prior art date
Application number
PCT/JP2010/062664
Other languages
French (fr)
Japanese (ja)
Inventor
健 加納
Original Assignee
日本電気株式会社
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 日本電気株式会社 filed Critical 日本電気株式会社
Priority to JP2011531841A priority Critical patent/JP5423801B2/en
Publication of WO2011033862A1 publication Critical patent/WO2011033862A1/en

Links

Images

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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0851Cache with interleaved addressing
    • 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/0877Cache access modes
    • G06F12/0879Burst mode
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Definitions

  • the present invention relates to an information processing apparatus and a data transfer method, and more particularly, to an information processing apparatus and a data transfer method for transferring data to a cache memory having a plurality of banks (memory banks).
  • a vector computer which is an information processing apparatus has a plurality of vector pipelines in order to simultaneously process a plurality of data for each machine clock (hereinafter simply referred to as “one clock”).
  • the vector computer stores a plurality of elements in vector data processed by one vector instruction in any of a plurality of vector pipelines.
  • Each vector pipeline processes each element stored in it.
  • page 214 of Non-Patent Document 1 shows a parallel pipeline and a multiple parallel pipeline.
  • the vector data is interleaved and held in each vector pipeline for each element so that the processing time in each vector pipeline is equalized.
  • vector pipeline 0 processes element 0, element N, element 2N,...
  • vector pipeline 1 includes element 1, element N + 1, element 2N + 1,. , ...
  • the vector pipeline N-1 processes the element N-1, the element 2N-1, the element 3N-1,.
  • the method of simultaneously processing a plurality of data for each clock is used not only when data is calculated, but also when data is loaded or stored.
  • the same number of input / output ports as the vector pipeline are provided in the cache memory or memory, and by using these input / output ports, data can be loaded or stored in the cache memory or memory. It has been known.
  • a data storage unit is provided for each input / output port corresponding one-to-one with the input / output port of the vector pipeline.
  • the input / output port in the main storage device and the data storage unit in the main storage device are uniquely determined.
  • a main storage device generally used in a vector computer data is interleaved and stored for each element. This is because, when the vector computer accesses a plurality of data stored at consecutive addresses in the main storage device, the maximum data access performance can be achieved by accessing a plurality of data storage units in parallel. It is to make it.
  • Patent Document 1 discloses a vector computer as described above, specifically, a vector processor having a plurality of vector pipelines and a plurality of input / output ports.
  • Patent Document 2 discloses a method of storing a large number of elements stored in a vector register by interleaving into a data storage unit of a main storage device for each of a plurality of consecutive elements.
  • This vector register has a plurality of banks. Each bank has a one-to-one correspondence with the vector pipeline. Each bank is included in a vector pipeline corresponding to itself, and stores elements (specifically, data constituting the elements). A serial number is assigned to each bank. The elements in each bank are transferred to the main storage device via the crossbar switch.
  • Patent Literature 2 uses the serial number assigned to each bank as the position at which reading of the element is started in each bank, so that the element read from each bank is output from the crossbar switch. The problem of conflicting ports is avoided.
  • the cache memory stores a plurality of data with consecutive memory addresses as block data.
  • a storage area defined by a memory address of block data that is, a storage area in which block data is stored is referred to as a “block”.
  • the cache memory includes an address array that stores the memory address of the block and the state of the block, and a data array that stores the block data.
  • the cache memory operates by determining whether the requested memory address is stored in the address array, thereby determining a process to be performed by the cache memory.
  • vector store When a cache memory is used, in a process of writing a plurality of data having consecutive memory addresses, such as a process of storing vector data (hereinafter referred to as “vector store”), a plurality of write requests for a certain block are received. , Will arrive continuously in the cache memory.
  • the cache memory may determine the operation of the cache memory without searching the address array. Is possible.
  • the vector computer operates so that data write requests having consecutive memory addresses continuously arrive at the cache memory, the time and power consumption for the cache memory to search the address array can be reduced.
  • Patent Document 2 The vector store method disclosed in Patent Document 2 has the following problems.
  • FIG. 1 shows a case where the technique disclosed in Patent Document 2 is executed when the number of vector pipelines is 8, the block size of the cache memory is 64 B (bytes), and the number of data storage units of the cache memory is 8. It is a figure for demonstrating the problem which arises.
  • the arrangement of 128 elements in eight vector pipelines (vector pipelines 0 to 7), more specifically, banks in the eight vector pipelines.
  • the lower half of FIG. 1 shows elements output from the crossbar switch 111 to eight data storage units (data storage units 0 to 7) in the cache memory every clock.
  • a bold frame 811 indicates a block boundary of the cache memory.
  • each block in each data storage unit stores eight elements having consecutive memory addresses, that is, eight elements having consecutive element numbers. Is done.
  • a bold vertical line 801 shown in the upper half of FIG. 1 indicates a block boundary of the cache memory. For example, elements 0 to 7 are stored in the same block of the cache memory.
  • Each vector pipeline has a read pointer.
  • Each read pointer designates a position at which an element is read from a bank in the vector pipeline using read positions 0 to 15 shown in the upper half of FIG.
  • Each element 802 shown in the upper half of FIG. 1 is an element read out first from a bank in each vector pipeline.
  • the read pointer of the vector pipeline 0 outputs “0” as the read position.
  • the read pointer of the vector pipeline 1 outputs “1” as the read position.
  • the read pointer of the vector pipeline 2 outputs “2” as the read position.
  • the read pointer of the vector pipeline 3 outputs “3” as the read position.
  • the read pointer of the vector pipeline 4 outputs “4” as the read position.
  • the read pointer of the vector pipeline 5 outputs “5” as the read position.
  • the read pointer of the vector pipeline 6 outputs “6” as the read position.
  • the read pointer of the vector pipeline 7 outputs “7” as the read position.
  • the element 0 corresponding to the read position “0” is read from the bank in the vector pipeline 0 and the element 0 is input to the crossbar switch 111.
  • the element 9 corresponding to the read position “1” is read from the bank in the vector pipeline 1, and the element 9 is input to the crossbar switch 111.
  • the element 18 corresponding to the read position “2” is read from the bank in the vector pipeline 2, and the element 18 is input to the crossbar switch 111.
  • the element 27 corresponding to the read position “3” is read from the bank in the vector pipeline 3, and the element 27 is input to the crossbar switch 111.
  • the element 36 corresponding to the read position “4” is read from the bank in the vector pipeline 4, and the element 36 is input to the crossbar switch 111.
  • the element 45 corresponding to the read position “5” is read from the bank in the vector pipeline 5, and the element 45 is input to the crossbar switch 111.
  • the element 54 corresponding to the read position “6” is read from the bank in the vector pipeline 6, and the element 54 is input to the crossbar switch 111.
  • the element 63 corresponding to the read position “7” is read from the bank in the vector pipeline 7, and the element 63 is input to the crossbar switch 111.
  • the element 0, the element 9, the element 18, the element 27, the element 36, the element 45, the element 54, and the element 63 are respectively stored in the cache memory by the data storage unit 0, the data storage unit 1, and the data storage unit by the crossbar switch 111. 2, the data storage unit 3, the data storage unit 4, the data storage unit 5, the data storage unit 6, and the data storage unit 7 (see time 1 in FIG. 1). For this reason, output conflict does not occur in the crossbar switch 111.
  • the read pointer of the vector pipeline 0 outputs “1” as the read position.
  • the read pointer of the vector pipeline 1 outputs “2” as the read position.
  • the read pointer of the vector pipeline 2 outputs “3” as the read position.
  • the read pointer of the vector pipeline 3 outputs “4” as the read position.
  • the read pointer of the vector pipeline 4 outputs “5” as the read position.
  • the read pointer of the vector pipeline 5 outputs “6” as the read position.
  • the read pointer of the vector pipeline 6 outputs “7” as the read position.
  • the read pointer of the vector pipeline 7 outputs “8” as the read position.
  • the element 8 is read from the bank in the vector pipeline 0, and the element 8 is input to the crossbar switch 111.
  • the element 17 is read from the bank in the vector pipeline 1, and the element 17 is input to the crossbar switch 111.
  • the element 26 is read from the bank in the vector pipeline 2, and the element 26 is input to the crossbar switch 111.
  • the element 35 is read from the bank in the vector pipeline 3, and the element 35 is input to the crossbar switch 111.
  • the element 44 is read from the bank in the vector pipeline 4, and the element 44 is input to the crossbar switch 111.
  • the element 53 is read from the bank in the vector pipeline 5, and the element 53 is input to the crossbar switch 111.
  • the element 62 is read from the bank in the vector pipeline 6, and the element 62 is input to the crossbar switch 111.
  • the element 71 is read from the bank in the vector pipeline 7, and the element 71 is input to the crossbar switch 111.
  • the element 8, the element 17, the element 26, the element 35, the element 44, the element 53, the element 62, and the element 71 are respectively stored in the cache memory by the data storage unit 1, the data storage unit 2, and the data storage unit by the crossbar switch 111. 3, the data storage unit 4, the data storage unit 5, the data storage unit 6, the data storage unit 7, and the data storage unit 0 (see time 2 in FIG. 1). For this reason, output conflict does not occur in the crossbar switch 111.
  • each element is read from each vector pipeline as shown in FIG.
  • a plurality of elements stored in the same block in the data storage unit of the cache memory may not arrive at the data storage unit having the block continuously.
  • the element 0 and the elements 1 to 7 stored in the same block arrive at a distance of 8 clocks from each other.
  • Elements 71 to 64 stored in other blocks are inserted between element 0 and elements 1 to 7.
  • Patent Document 2 shows only an example in which element 0 is the first element among a plurality of elements stored in the same block in the order of memory addresses. Normally, however, element 0 is an arbitrary element. It is possible to write to a memory address.
  • FIG. 2 shows a problem that occurs when the technique disclosed in Patent Document 2 is executed when the number of vector pipelines is 8, the block size of the cache memory is 64B, and the number of data storage units of the cache memory is 8. It is a figure for demonstrating.
  • the arrangement of 128 elements (elements 0 to 127) in the eight vector pipelines (vector pipelines 0 to 7), more specifically, the banks in the eight vector pipelines.
  • the lower half of FIG. 2 shows elements output from the crossbar switch 111 to eight data storage units (data storage units 0 to 7) in the cache memory every clock.
  • each block in each data storage unit stores eight elements having consecutive memory addresses, that is, eight elements having consecutive element numbers. Is possible.
  • bold vertical lines 901 shown in the upper half of FIG. 2 indicate the boundaries of the cache memory blocks. For example, elements 7 to 14 are stored in the same block of the cache memory.
  • Each element 902 shown in the upper half of FIG. 2 is an element read out first from a bank in each vector pipeline.
  • the read pointer of the vector pipeline 0 outputs “0” as the read position.
  • the read pointer of the vector pipeline 1 outputs “1” as the read position.
  • the read pointer of the vector pipeline 2 outputs “2” as the read position.
  • the read pointer of the vector pipeline 3 outputs “3” as the read position.
  • the read pointer of the vector pipeline 4 outputs “4” as the read position.
  • the read pointer of the vector pipeline 5 outputs “5” as the read position.
  • the read pointer of the vector pipeline 6 outputs “6” as the read position.
  • the read pointer of the vector pipeline 7 outputs “7” as the read position.
  • element 0 is read from the bank in vector pipeline 0, and element 0 is input to crossbar switch 111.
  • the element 9 is read from the bank in the vector pipeline 1, and the element 9 is input to the crossbar switch 111.
  • the element 18 is read from the bank in the vector pipeline 2, and the element 18 is input to the crossbar switch 111.
  • the element 27 is read from the bank in the vector pipeline 3, and the element 27 is input to the crossbar switch 111.
  • the element 36 is read from the bank in the vector pipeline 4, and the element 36 is input to the crossbar switch 111.
  • the element 45 is read from the bank in the vector pipeline 5, and the element 45 is input to the crossbar switch 111.
  • the element 54 is read from the bank in the vector pipeline 6, and the element 54 is input to the crossbar switch 111.
  • the element 63 is read from the bank in the vector pipeline 7, and the element 63 is input to the crossbar switch 111.
  • the element 0, the element 9, the element 18, the element 27, the element 36, the element 45, the element 54, and the element 63 are respectively stored in the cache memory by the data storage unit 0, the data storage unit 1, and the data storage unit by the crossbar switch 111. 2, data storage unit 3, data storage unit 4, data storage unit 5, data storage unit 6, and data storage unit 0. For this reason, in the crossbar switch 111, contention between the element 0 and the element 63 occurs in the output to the data storage unit 0. For this reason, the crossbar switch 111 reduces the performance of the vector store.
  • the element 0 arrives at the data storage unit 0 before the element 63, but the arrival order of the element 0 and the element 63 depends on the contention arbitration method in the crossbar switch 111. Therefore, it cannot be guaranteed that the elements stored in the same block arrive at the data storage unit continuously.
  • An object of the present invention is to provide an information processing apparatus and a data transfer method that can solve the above-described problem that elements stored in the same block do not continuously arrive at a data storage unit.
  • m is arranged in a cache memory having n (n is an integer of 2 or more) memory banks having memory blocks of a predetermined size associated with different addresses.
  • the processing size is calculated by dividing the predetermined size by the stride, and the start Control means for determining whether the address matches the start address of any of the memory blocks;
  • the m data elements are divided into processing groups each including the number of data elements in which the arrangement order is continuous and the processing size is multiplied by n, and the start address is the top of any memory block. If it is determined that the address matches the address, each time the m data elements are divided into the processing groups, the data elements in the processing group are divided into the number of processing sizes in the arrangement order. From each of the n register banks, the data elements are read in parallel to the cache memory so that each of the data elements is read in parallel and all the data elements in the processing group are read. Processing means for transferring.
  • the order of arrangement is determined in a cache memory having n (n is an integer of 2 or more) memory banks having memory blocks of a predetermined size associated with different addresses.
  • a data transfer method in an information processing apparatus for transferring individual data elements The m data elements are interleaved in units of the data elements in the arrangement order, and sequentially stored in n register banks,
  • the processing size is calculated by dividing the predetermined size by the stride, and the start Determine whether the address matches the start address of any memory block
  • the m data elements are divided into processing groups each including the number of data elements in which the arrangement order is continuous and the processing size is multiplied by n, and the start address is the top of any memory block.
  • the data elements in the processing group are divided into the number of processing sizes in the arrangement order. From each of the n register banks, the data elements are read in parallel to the cache memory so that each of the data elements is read in parallel and all the data elements in the processing group are read. Forward.
  • FIG. It is a figure explaining the problem of the technique of patent document 2.
  • FIG. It is a figure explaining the problem of the technique of patent document 2.
  • FIG. It is a figure which shows the vector processor of 1st Embodiment of this invention. It is a figure which shows a vector store control part and a reading position control part. It is a flowchart showing the operation
  • the information processing apparatus is not limited to a vector processor, and has a plurality of calculation pipelines. Data stored in each calculation pipeline is stored in a plurality of banks (memory banks) in the cache memory. Any information processing device to be transferred may be used.
  • FIG. 3 is a block diagram showing a configuration example of the vector processor of the present embodiment.
  • the vector processor includes a CPU (Central Processing Unit) 101.
  • CPU Central Processing Unit
  • the CPU 101 includes an instruction issue control unit 102, a vector processing unit 103, and an address calculation unit 104.
  • the CPU 101 is connected to the main storage device 106 via the cache memory 105.
  • the cache memory 105 includes a plurality of data storage units 107-0 to 107-7.
  • Each data storage unit 107-0 to 107-7 is a memory bank.
  • Each of the data storage units 107-0 to 107-7 includes a storage area (memory block, hereinafter referred to as “block”) for storing a plurality of elements having consecutive memory addresses or one element.
  • Each of the data storage units 107-0 to 107-7 has a plurality of blocks.
  • the size (predetermined size) of each block is 64B.
  • the element size is 8B.
  • the memory address is 64 bits.
  • the data storage unit 107-0 has a block for caching data at memory addresses 0 to 56 and a block for caching data at memory addresses 512 to 568.
  • the data storage unit 107-1 has a block for caching data at memory addresses 64-120 and a block for caching data at memory addresses 576-632.
  • the data storage unit 107-2 has a block for caching data at memory addresses 128 to 184 and a block for caching data at memory addresses 640 to 696.
  • the data storage unit 107-3 has a block for caching data at memory addresses 192 to 248 and a block for caching data at memory addresses 704 to 760.
  • the data storage unit 107-7 includes a block for caching data at memory addresses 448 to 504 and a block for caching data at memory addresses 960 to 1016.
  • blocks having a predetermined storage area are set in the data storage units 107-0 to 107-7 in a state where they are interleaved in the order of memory addresses.
  • the number of memory banks (n) is “8”, but the number of banks may be an integer of 2 or more, more specifically, an arbitrary power of 2.
  • the vector processing unit 103 includes a plurality of vector pipelines 109-0 to 109-7, a vector store control unit 110, and a crossbar switch 111.
  • the suffix of the vector pipeline 109 means the “number” assigned to the vector pipeline.
  • the number of vector pipelines (n) is “8”, but the number of vector pipelines may be an integer of 2 or more, more specifically, an arbitrary power of two.
  • the vector pipelines 109-0 to 109-7 have the same configuration. Therefore, the vector pipeline 109-0 among the vector pipelines 109-0 to 109-7 will be described.
  • the vector pipeline 109-0 includes a vector calculator 112-0 and a vector register 113-0.
  • the vector register 113-0 includes a read position control unit 114-0 and a bank 113A-0.
  • Each suffix of the vector calculator 112, the vector register 113, the read position control unit 114, and the bank 113A means a “number” assigned to the vector pipeline 109 in which they are included.
  • elements 0 to 255 are stored in any one of the banks 113A-0 to 113A-7. Elements can be generally referred to as data elements. Each of banks 113-0 to 113A-7 can generally be referred to as a register bank.
  • the order of the 256 elements is determined.
  • the arrangement order of 256 elements is the order of element 0 to element 255. Therefore, element 0 is the first element in the arrangement order among 256 elements (elements 0 to 255).
  • 256 is used as the number m of elements, but m is not limited to 256.
  • the crossbar switch 111 has 8 input ports and 8 output ports.
  • the number of input ports of the crossbar switch 111 is the same as the number of vector pipelines 109.
  • the number of output ports of the crossbar switch 111 is the same as the number of data storage units 107.
  • the memory address from the address calculation unit 104 and the element (write data) from the vector register 113 are input to the input port of the crossbar switch 111.
  • the crossbar switch 111 outputs a memory address and an element (write data) to an output port connected to the data storage unit 107 determined by the memory address.
  • the instruction issue control unit 102 includes stride information (hereinafter simply referred to as “start address”) indicating the stride between the start address (hereinafter simply referred to as “start address”), which is the address of the first element 0 in the arrangement order, and between elements (between data elements). (Referred to as “stride”) is provided to the vector store control unit 110 and the address calculation unit 104.
  • start address the stride between the start address
  • start address which is the address of the first element 0 in the arrangement order
  • stride is provided to the vector store control unit 110 and the address calculation unit 104.
  • the vector store control unit 110 can be generally called control means.
  • the vector store control unit 110 When the vector store control unit 110 receives the stride and the start address from the instruction issuance control unit 102, the vector store control unit 110 divides the block size (64B) by the stride to calculate a processing size (hereinafter referred to as a “processing group size”). Further, the vector store control unit 110 determines whether the start address matches the head address of any block.
  • the vector store control unit 110 determines whether or not to correct the position where the reading of the element is started in each vector register 113 based on the start address and the stride.
  • the vector store control unit 110 includes a block size (64 B), a stride from the instruction issue control unit 102 (for example, 8 B), the number of banks in the cache memory 105 (eight), and the number of vector pipelines (8 ) And the size of the processing group is determined.
  • the vector store control unit 110 determines the determination result (hereinafter, simply referred to as “determination result”) as to whether or not to correct the position at which reading of an element is started in each vector register 113 and the size of the processing group. This is transmitted to the read position control unit 114 in 113.
  • determination result hereinafter, simply referred to as “determination result”
  • Each readout position control unit 114 is included in the processing unit 114A.
  • Processing unit 114A can be generally referred to as processing means.
  • the processing unit 114A divides 256 elements into processing groups.
  • the processing group is composed of data elements having the number of values obtained by multiplying the size of the processing group and the number of vector registers 113 in the arrangement order.
  • the processing unit 114 ⁇ / b> A performs the following operation when it is determined that the start address matches the head address of any block in the cache memory 105.
  • processing unit 114A Each time the processing unit 114A divides 256 elements into processing groups, one element from each of the block data generated when the elements in the processing group are divided into processing group sizes in the order of arrangement, Are read from the eight banks 113A and transferred to the cache memory 105 so that all the elements in the processing group are read out in parallel.
  • processing unit 114A performs the following operation when the start address does not match the head address in any block in the cache memory 105.
  • the processing unit 114A divides 256 elements into processing groups, the data elements in the processing group are assigned addresses based on the start address and stride, and the data elements in the processing group are assigned based on the addresses.
  • the data elements in the processing group are assigned addresses based on the start address and stride, and the data elements in the processing group are assigned based on the addresses.
  • the eight blocks other than the first block data out of the nine block data From each piece of data, one unread element is read in parallel and Elements in the group such that all read and transferred to the cache memory 105 reads out the element in parallel from eight banks 113A.
  • Each read position control unit 114 is an element (vector data) transferred from the bank 113A to the cache memory 105 based on the determination result of the vector store control unit 110, the size of the processing group, and the number of the bank 113A. The reading position of is calculated.
  • Each read position control unit 114 provides the read position to the address calculation unit 104.
  • each read position control unit 114 reads an element (data) from the read position in the bank 113A, and inputs the element as write data to the input port of the crossbar switch 111.
  • the read position control unit 114 will be described in detail later.
  • the address calculation unit 104 calculates a write memory address in which write data is stored based on the start address and stride from the instruction issue control unit 102 and the read position from each read position control unit 114.
  • the address calculation unit 104 inputs the write memory address to the input port of the crossbar switch 111 together with the write data from each vector pipeline 109.
  • the address calculation unit 104 will be described in detail later.
  • FIG. 4 is a diagram showing the vector store control unit 110 and the read position control unit 114.
  • the vector store control unit 110 includes a lower 6 to 4 bit register (hereinafter simply referred to as “start address register”) 201 for storing lower 6 to 4 bit data of a start address, a stride register 202, , A read start position correction calculation circuit (hereinafter simply referred to as “calculation circuit”) 203 and a processing group size determination circuit 204.
  • start address register a lower 6 to 4 bit register
  • stride register a stride register
  • calculation circuit hereinafter simply referred to as “calculation circuit”
  • the start address register 201 stores lower 6 to 4 bit data of the start address from the instruction issue control unit 102.
  • the lower 6 to 4 bits of data of the start address indicate the position of element 0 in the block.
  • the stride register 202 stores a stride from the instruction issue control unit 102.
  • the calculation circuit 203 performs the calculation shown in Table 1 based on the lower 6 to 4 bit data of the start address in the start address register 201 and the stride in the stride register 202, and the read start position is corrected.
  • the vector pipeline 109 to be executed is determined.
  • the calculation circuit 203 supplies a correction signal of “0” or “1” to the read position control unit 114 of each vector pipeline 109.
  • that the correction signal is “1” indicates that the reading start position is corrected.
  • the correction signal “0” indicates that the reading start position is not corrected.
  • the calculation circuit 203 determines that the start address matches the head address of any block in the cache memory 105, the calculation circuit 203 supplies a correction signal of “0” to all the read position control units 114. If the calculation circuit 203 determines that the start address does not match the head address of any block in the cache memory 105, the calculation circuit 203 supplies a correction signal of “1” to at least one read position control unit 114.
  • the processing group size determination circuit 204 performs the calculation shown in Table 2 based on the stride in the stride register 202 to determine the size of the processing group.
  • Table 2 shows the embodiment in which the number of vector pipelines is 8, the number of elements stored in one block in the cache memory 105 is 8, the number of banks in the cache memory 105, that is, the number of data storage units 107 is 8. Shows the size of the processing group for each stride.
  • the processing group size determination circuit 204 supplies the processing group size to the read position control unit 114 in each vector pipeline 109.
  • the read position control unit 114 is provided in each vector pipeline 109.
  • the read position control unit 114 includes a read start position determination circuit 205, a pipeline number register 206, a read position offset register 207, a read position base register 208, a decrementer 209, a modulo calculator 210, and a multiplexer (MUX). 211, an adder 212, a multiplexer (MUX) 213, an adder 214, a decrementer 215, a counter 216, an effective read position register 218, a comparator 219, and a control circuit 217 for controlling them. Including.
  • the pipeline number register 206 stores the number of the vector pipeline 109 including the pipeline number register 206.
  • any one of “0” to “7” is stored in the pipeline number register 206.
  • “2” is stored in the pipeline number register 206 in the vector pipeline 109-2.
  • “3” is stored in the pipeline number register 206 in the vector pipeline 109-3.
  • the read start position determination circuit 205 determines the read start position based on the correction signal from the calculation circuit 203 and the pipeline number from the pipeline number register 206.
  • the read start position determining circuit 205 When the correction signal is “0”, the read start position determining circuit 205 outputs “pipeline number” as the read start position. When the correction signal is “1”, the read start position determination circuit 205 outputs “pipeline number ⁇ 1” as the read start position.
  • control circuit 217 causes the multiplexer (MUX) 213 to select “0” and writes “0” to the read position base register 208 (step 301).
  • MUX multiplexer
  • control circuit 217 causes the decrementer 215 to perform an operation of subtracting “1” from the size of the processing group from the vector store control unit 110, and outputs the output of the decrementer 215 (processing group size ⁇ 1) to the counter 216. Is set as an initial value (step 302).
  • control circuit 217 causes the multiplexer (MUX) 211 to select the read start position determined by the read start position determining circuit 205.
  • control circuit 217 causes the modulo arithmetic unit 210 to perform an operation for taking the modulo of the size of the processing group with respect to the read start position selected by the multiplexer (MUX) 211.
  • control circuit 217 writes the calculation result of the modulo calculator 210 in the read position offset register 207 in response to the clock (step 303).
  • the adder 214 adds the value in the reading position offset register 207 and the value in the reading position base register 208, and uses the addition result as the first reading position to start from the bank 113A. Read an element.
  • the read position is also sent to the address calculation unit 104.
  • the address calculation unit 104 calculates the memory address for writing where the first element is stored based on the read position and the start address and stride of the vector store from the instruction issue control unit 102, and calculates the calculation result. Output.
  • control circuit 217 checks whether the value of the counter 216 is “0” (step 304).
  • control circuit 217 causes the decrementer 209 to perform an operation of subtracting “1” from the value in the reading position offset register 207.
  • control circuit 217 causes the multiplexer (MUX) 211 to select the output of the decrementer 209.
  • control circuit 217 causes the modulo arithmetic unit 210 to perform an operation for taking the modulo of the size of the processing group with respect to the value selected by the multiplexer (MUX) 211.
  • control circuit 217 writes the calculation result of the modulo calculator 210 in the read position offset register 207 in response to the clock (step 306).
  • the adder 214 adds the value in the read position offset register 207 and the value in the read position base register 208, and uses the addition result as the next read position, from the bank 113A. Read an element.
  • the read position is also sent to the address calculation unit 104.
  • the address calculation unit 104 calculates a write memory address at which the next element is stored based on the read position and the vector store start address and stride from the instruction issue control unit 102, and calculates the calculation result. Output.
  • control circuit 217 decrements the value of the counter 216 (step 307). Then, the control circuit 217 checks whether the value of the counter 216 is “0” (step 304).
  • control circuit 217 causes the adder 212 to execute a process of adding the size of the processing group to the value of the read position base register 208, and the multiplexer (MUX) ) The value is written into the read position base register 208 via 213 (step 309).
  • control circuit 217 checks whether or not the value of the read position base register 208 is at a valid read position (step 310). In this embodiment, the control circuit 217 determines whether or not the value of the read position base register 208 is a valid read position by comparing the value of the valid read position register 218 and the value of the read position base register 208. To do.
  • step 311 When the value of the read position base register 208 is valid (step 311), the control circuit 217 returns to step 302. If the value of the read position base register 208 is not valid (step 312), the control circuit 217 ends the process.
  • the effective read position register 218 stores the maximum read position calculated from the vector length (the length of the vector formed by adding the elements 0 to 255) and the vector pipeline number.
  • the comparator 219 compares the value of the valid read position register 218 with the read position from the adder 214.
  • the comparator 219 When the read position is larger than the value of the valid read position register 218, the comparator 219 outputs an invalid signal to the crossbar switch 111 indicating that the element read from the bank 113A is invalid.
  • the crossbar switch 111 does not process an element that is reported to be invalid.
  • the maximum read position set in the valid read position register 218 is calculated by the following formula.
  • vector length mod number of vector pipelines ⁇ vector pipeline number
  • Vector length ⁇ number of vector pipelines -1
  • Vector length mod Number of vector pipelines
  • Vector pipeline number Vector length / number of vector pipelines
  • the vector length is 128 elements. Since there are eight vector pipelines, “15” is set in the effective read position register 218.
  • the calculation circuit 203 outputs the correction signal “0” to the vector pipeline 109-1 according to Table 1.
  • processing group size determination circuit 204 outputs “8” as the size of the processing group according to Table 2.
  • control circuit 217 writes “0” in the read position base register 208 (step 301).
  • the read start position determination circuit 205 outputs “1”.
  • control circuit 217 causes the multiplexer (MUX) 211 to select “1” from the read start position determination circuit 205.
  • control circuit 217 causes the modulo arithmetic unit 210 to perform an operation for performing modulo 8 on “1” from the multiplexer (MUX) 211.
  • control circuit 217 writes the calculation result “1” of the modulo calculator 210 in the read position offset register 207 (step 303).
  • step 304 the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “7”, the control circuit 217 proceeds to Step 306.
  • step 306 the control circuit 217 performs a modulo 8 operation on the value “0” obtained by subtracting “1” from the value “1” in the read position offset register 207 using the modulo calculator 210.
  • the calculation result “0” is written to the read position offset register 207 in response to the clock.
  • step 307 the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “7”, the value of the counter 216 is “6”.
  • step 304 the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “6”, the control circuit 217 proceeds to Step 306.
  • step 306 the control circuit 217 performs a modulo 8 operation on the value “ ⁇ 1” obtained by subtracting “1” from the value “0” in the read position offset register 207 using the modulo calculator 210.
  • the calculation result “7” is written in the read position offset register 207 in response to the clock.
  • step 307 the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “6”, the value of the counter 216 is “5”.
  • step 304 the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “5”, the control circuit 217 proceeds to Step 306.
  • step 306 the control circuit 217 performs a modulo 8 operation on the value “6” obtained by subtracting “1” from the value “7” in the reading position offset register 207 using the modulo calculator 210.
  • the calculation result “6” is written to the read position offset register 207 in response to the clock.
  • step 307 the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “5”, the value of the counter 216 is “4”.
  • step 304 the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “4”, the control circuit 217 proceeds to Step 306.
  • step 306 the control circuit 217 performs a modulo 8 operation on the value “5” obtained by subtracting “1” from the value “6” in the read position offset register 207 using the modulo calculator 210.
  • the calculation result “5” is written to the read position offset register 207 in response to the clock.
  • step 307 the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “4”, the value of the counter 216 is “3”.
  • step 304 the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “3”, the control circuit 217 proceeds to Step 306.
  • step 306 the control circuit 217 performs a modulo 8 operation on the value “4” obtained by subtracting “1” from the value “5” in the read position offset register 207 using the modulo calculator 210.
  • the calculation result “4” is written in the read position offset register 207 in response to the clock.
  • step 307 the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “3”, the value of the counter 216 is “2”.
  • step 304 the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “2”, the control circuit 217 proceeds to Step 306.
  • step 306 the control circuit 217 performs a modulo 8 operation on the value “3” obtained by subtracting “1” from the value “4” in the reading position offset register 207 using the modulo calculator 210.
  • the calculation result “3” is written to the read position offset register 207 in response to the clock.
  • step 307 the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “2”, the value of the counter 216 is “1”.
  • step 304 the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “1”, the control circuit 217 proceeds to Step 306.
  • step 306 the control circuit 217 performs a modulo 8 operation on the value “2” obtained by subtracting “1” from the value “3” in the read position offset register 207 using the modulo calculator 210.
  • the calculation result “2” is written in the read position offset register 207 in response to the clock.
  • step 307 the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “1”, the value of the counter 216 is “0”.
  • step 304 the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “0”, the control circuit 217 proceeds to Step 309.
  • step 309 the control circuit 217 causes the adder 212 to execute an operation of adding the processing group size “8” to the value “0” of the reading position base register 208. Subsequently, the control circuit 217 causes the multiplexer (MUX) 211 to select the calculation result “8” of the adder 212 and writes the calculation result “8” of the adder 212 to the read position base register 208.
  • MUX multiplexer
  • step 310 the control circuit 217 checks whether the value of the read position base register 208 is valid. Since the value “8” of the read position base register 208 is smaller than the value “15” of the valid read position register 218, the control circuit 217 determines that the value of the read position base register 208 is valid, and step 302. Proceed to
  • the read start position determination circuit 205 outputs “1”.
  • control circuit 217 causes the multiplexer (MUX) 211 to select “1” from the read start position determination circuit 205.
  • control circuit 217 causes the modulo arithmetic unit 210 to perform an operation for performing modulo 8 on “1” from the multiplexer (MUX) 211.
  • control circuit 217 writes the calculation result “1” of the modulo calculator 210 in the read position offset register 207 (step 303).
  • step 304 the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “7”, the control circuit 217 proceeds to Step 306.
  • step 306 the control circuit 217 performs a modulo 8 operation on the value “0” obtained by subtracting “1” from the value “1” in the read position offset register 207 using the modulo calculator 210.
  • the calculation result “0” is written to the read position offset register 207 in response to the clock.
  • step 307 the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “7”, the value of the counter 216 is “6”.
  • step 304 the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “6”, the control circuit 217 proceeds to Step 306.
  • step 306 the control circuit 217 performs a modulo 8 operation on the value “ ⁇ 1” obtained by subtracting “1” from the value “0” in the read position offset register 207 using the modulo calculator 210.
  • the calculation result “7” is written in the read position offset register 207 in response to the clock.
  • step 307 the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “6”, the value of the counter 216 is “5”.
  • step 304 the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “5”, the control circuit 217 proceeds to Step 306.
  • step 306 the control circuit 217 performs a modulo 8 operation on the value “6” obtained by subtracting “1” from the value “7” in the reading position offset register 207 using the modulo calculator 210.
  • the calculation result “6” is written to the read position offset register 207 in response to the clock.
  • step 307 the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “5”, the value of the counter 216 is “4”.
  • step 304 the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “4”, the control circuit 217 proceeds to Step 306.
  • step 306 the control circuit 217 performs a modulo 8 operation on the value “5” obtained by subtracting “1” from the value “6” in the read position offset register 207 using the modulo calculator 210.
  • the calculation result “5” is written to the read position offset register 207 in response to the clock.
  • step 307 the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “4”, the value of the counter 216 is “3”.
  • step 304 the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “3”, the control circuit 217 proceeds to Step 306.
  • step 306 the control circuit 217 performs a modulo 8 operation on the value “4” obtained by subtracting “1” from the value “5” in the read position offset register 207 using the modulo calculator 210.
  • the calculation result “4” is written in the read position offset register 207 in response to the clock.
  • step 307 the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “3”, the value of the counter 216 is “2”.
  • step 304 the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “2”, the control circuit 217 proceeds to Step 306.
  • step 306 the control circuit 217 performs a modulo 8 operation on the value “3” obtained by subtracting “1” from the value “4” in the reading position offset register 207 using the modulo calculator 210.
  • the calculation result “3” is written to the read position offset register 207 in response to the clock.
  • step 307 the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “2”, the value of the counter 216 is “1”.
  • step 304 the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “1”, the control circuit 217 proceeds to Step 306.
  • step 306 the control circuit 217 performs a modulo 8 operation on the value “2” obtained by subtracting “1” from the value “3” in the read position offset register 207 using the modulo calculator 210.
  • the calculation result “2” is written in the read position offset register 207 in response to the clock.
  • step 307 the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “1”, the value of the counter 216 is “0”.
  • step 304 the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “0”, the control circuit 217 proceeds to Step 309.
  • step 309 the control circuit 217 causes the adder 212 to perform an operation of adding the processing group size “8” to the value “8” of the reading position base register 208. Subsequently, the control circuit 217 causes the multiplexer (MUX) 211 to select the operation result “16” of the adder 212 and writes the operation result “16” of the adder 212 to the read position base register 208.
  • MUX multiplexer
  • step 310 the control circuit 217 checks whether the value of the read position base register 208 is valid. Since the value “16” of the read position base register 208 is larger than the value “15” of the valid read position register 218, the control circuit 217 determines that the value of the read position base register 208 is invalid and performs processing. finish.
  • FIG. 6 is a diagram showing the address calculation unit 104.
  • the address calculation unit 104 includes a start address register 401, a stride register 402, and an address calculation circuit 403 that corresponds to each vector pipeline 109 on a one-to-one basis.
  • the start address register 401 receives and stores the start address of the vector store instruction from the instruction issue control unit 102.
  • the stride register 402 receives and stores the stride from the instruction issue control unit 102.
  • the address calculation circuit 403 uses the value of the start address register 401, the value of the stride register 402, and the read position from the read position control unit 114 in the vector pipeline 109 corresponding to its own circuit to calculate the memory address. calculate.
  • the address calculation circuit 403 includes a pipeline number register 404, an offset calculation circuit 405, and an adder 406.
  • the pipeline number register 404 the number of the corresponding vector pipeline 109 is stored.
  • any one of “0” to “7” is stored in the pipeline number register 404.
  • the offset calculation circuit 405 calculates the memory address offset based on the stride, the read position, and the pipeline number.
  • the offset calculation circuit 405 performs the following calculation to calculate the offset.
  • Offset (readout position x number of vector pipelines + vector pipeline number) x stride
  • the adder 406 calculates a memory address by adding the start address and the offset.
  • FIGS. 7 to 9 shows the arrangement of 128 elements (element 0 to element 127) in 8 vector pipelines (vector pipeline 0 to vector pipeline 7), more specifically, 8 vectors.
  • An arrangement of element 0 to element 127 in a vector register composed of banks in the pipeline is shown. Note that when the elements 0 to 127 are arranged in the order of the element numbers, the vector data is restored.
  • FIGS. 7 to 9 show elements output from the crossbar switch 111 to eight data storage units (data storage unit 0 to data storage unit 7) in the cache memory every clock.
  • a bold frame 504 indicates a block boundary of the cache memory.
  • a vertical line 501 indicates a boundary between cache memory blocks. Since the block size of the cache memory is 64B and the stride is 8B, each block in each data storage unit stores eight elements having consecutive memory addresses, that is, eight elements having consecutive element numbers. Is done. For example, element 0 to element 7 are stored in the same block in the cache memory 105.
  • each read start position determination circuit 205 outputs the vector pipeline number.
  • the elements 0 to 127 are divided into a processing group composed of the elements 0 to 63 and a processing group composed of the elements 64 to 127.
  • elements 502 (element 0, element 9, element 18, element 27, element 36, element 45, element 54 and element 63) and elements 503 (element 64, element 63) which are bold squares.
  • elements 73, element 82, element 91, element 100, element 109, element 118, and element 127) indicate read start elements of each processing group.
  • the read position control unit 114-0 outputs “0” as the read position.
  • the read position control unit 114-1 outputs “1” as the read position.
  • the read position control unit 114-2 outputs “2” as the read position.
  • the read position control unit 114-3 outputs “3” as the read position.
  • the read position control unit 114-4 outputs “4” as the read position.
  • the read position control unit 114-5 outputs “5” as the read position.
  • the read position control unit 114-6 outputs “6” as the read position.
  • the read position control unit 114-7 outputs “7” as the read position.
  • the element 0 is read from the bank 113A-0, and the element 0 is input to the crossbar switch 111.
  • Element 9 is read from bank 113A-1, and element 9 is input to crossbar switch 111.
  • the element 18 is read from the bank 113A-2, and the element 18 is input to the crossbar switch 111.
  • the element 27 is read from the bank 113A-3, and the element 27 is input to the crossbar switch 111.
  • the element 36 is read from the bank 113A-4, and the element 36 is input to the crossbar switch 111.
  • the element 45 is read from the bank 113A-5, and the element 45 is input to the crossbar switch 111.
  • the element 54 is read from the bank 113A-6, and the element 54 is input to the crossbar switch 111.
  • the element 63 is read from the bank 113A-7, and the element 63 is input to the crossbar switch 111.
  • the element 0, the element 9, the element 18, the element 27, the element 36, the element 45, the element 54, and the element 63 are respectively stored in the data storage unit 107-0 and the data storage unit 107- in the cache memory 105 by the crossbar switch 111.
  • the read position control unit 114-0 outputs “7” as the read position.
  • the read position control unit 114-1 outputs “0” as the read position.
  • the read position control unit 114-2 outputs “1” as the read position.
  • the read position control unit 114-3 outputs “2” as the read position.
  • the read position control unit 114-4 outputs “3” as the read position.
  • the read position control unit 114-5 outputs “4” as the read position.
  • the read position control unit 114-6 outputs “5” as the read position.
  • the read position control unit 114-7 outputs “6” as the read position.
  • the element 56 is read from the bank 113A-0, and the element 56 is input to the crossbar switch 111.
  • Element 1 is read from bank 113A-1, and element 1 is input to crossbar switch 111.
  • the element 10 is read from the bank 113A-2, and the element 10 is input to the crossbar switch 111.
  • the element 19 is read from the bank 113A-3, and the element 19 is input to the crossbar switch 111.
  • the element 28 is read from the bank 113A-4, and the element 28 is input to the crossbar switch 111.
  • the element 37 is read from the bank 113A-5, and the element 37 is input to the crossbar switch 111.
  • the element 46 is read from the bank 113A-6, and the element 46 is input to the crossbar switch 111.
  • the element 55 is read from the bank 113A-7, and the element 55 is input to the crossbar switch 111.
  • Element 56, element 1, element 10, element 19, element 28, element 37, element 46, and element 55 are respectively stored in the cache memory 105 by the data storage unit 107-7 and the data storage unit 107-by the crossbar switch 111.
  • each element is read from each vector pipeline as shown in FIG.
  • control circuit 217 adds “8”, which is the size of the processing group, to the value of the read position base register 208.
  • each of the read position control units 114 outputs “8” to “15” as read positions in a predetermined order.
  • an element 503 that is a bold square is an element that is read out by the ninth clock.
  • each data storage unit 107 only needs to search the address array for only the element that first arrives at the block among a plurality of elements stored in the same block, and can write efficiently.
  • a vertical line 601 indicates a boundary between cache memory blocks. For example, elements 7 to 14 are stored in the same block in the cache memory 105.
  • the vector pipeline number is output from the read start position determining circuit 205.
  • “6” is output from the read start position determination circuit 205.
  • the elements 0 to 127 are divided into a processing group composed of the elements 0 to 63 and a processing group composed of the elements 64 to 127.
  • elements 602 (element 0, element 9, element 18, element 27, element 36, element 45, element 54, and element 55) that are bold squares and element 603 (element 64, element 55) 73, element 82, element 91, element 100, element 109, element 118, and element 119) indicate read start elements of each processing group.
  • the read position control unit 114-0 outputs “0” as the read position.
  • the read position control unit 114-1 outputs “1” as the read position.
  • the read position control unit 114-2 outputs “2” as the read position.
  • the read position control unit 114-3 outputs “3” as the read position.
  • the read position control unit 114-4 outputs “4” as the read position.
  • the read position control unit 114-5 outputs “5” as the read position.
  • the read position control unit 114-6 outputs “6” as the read position.
  • the read position control unit 114-7 outputs “6” as the read position.
  • the element 0 is read from the bank 113A-0, and the element 0 is input to the crossbar switch 111.
  • Element 9 is read from bank 113A-1, and element 9 is input to crossbar switch 111.
  • the element 18 is read from the bank 113A-2, and the element 18 is input to the crossbar switch 111.
  • the element 27 is read from the bank 113A-3, and the element 27 is input to the crossbar switch 111.
  • the element 36 is read from the bank 113A-4, and the element 36 is input to the crossbar switch 111.
  • the element 45 is read from the bank 113A-5, and the element 45 is input to the crossbar switch 111.
  • the element 54 is read from the bank 113A-6, and the element 54 is input to the crossbar switch 111.
  • the element 55 is read from the bank 113A-7, and the element 55 is input to the crossbar switch 111.
  • the element 0, the element 9, the element 18, the element 27, the element 36, the element 45, the element 54, and the element 55 are respectively stored in the cache memory 105 by the data storage unit 107-0 and the data storage unit 107- by the crossbar switch 111.
  • the read position control unit 114-0 outputs “7” as the read position.
  • the read position control unit 114-1 outputs “0” as the read position.
  • the read position control unit 114-2 outputs “1” as the read position.
  • the read position control unit 114-3 outputs “2” as the read position.
  • the read position control unit 114-4 outputs “3” as the read position.
  • the read position control unit 114-5 outputs “4” as the read position.
  • the read position control unit 114-6 outputs “5” as the read position.
  • the read position control unit 114-7 outputs “5” as the read position.
  • the element 56 is read from the bank 113A-0, and the element 56 is input to the crossbar switch 111.
  • Element 1 is read from bank 113A-1, and element 1 is input to crossbar switch 111.
  • the element 10 is read from the bank 113A-2, and the element 10 is input to the crossbar switch 111.
  • the element 19 is read from the bank 113A-3, and the element 19 is input to the crossbar switch 111.
  • the element 28 is read from the bank 113A-4, and the element 28 is input to the crossbar switch 111.
  • the element 37 is read from the bank 113A-5, and the element 37 is input to the crossbar switch 111.
  • the element 46 is read from the bank 113A-6, and the element 46 is input to the crossbar switch 111.
  • the element 47 is read from the bank 113A-7, and the element 47 is input to the crossbar switch 111.
  • Element 56, element 1, element 10, element 19, element 28, element 37, element 46, and element 47 are respectively stored in the cache memory 105 by the data storage unit 107-7 and the data storage unit 107-by the crossbar switch 111.
  • each element is read from each vector pipeline as shown in FIG.
  • control circuit 217 adds “8”, which is the size of the processing group, to the value of the read position base register 208.
  • each of the read position control units 114 outputs “8” to “15” as read positions in a predetermined order.
  • a bold square element 603 is an element that is read by the ninth clock.
  • each data storage unit 107 only needs to search the address array for only the element that first arrives at the block among a plurality of elements stored in the same block, and can write efficiently.
  • two bold vertical lines 701 and 702 indicate the boundaries of the cache memory blocks. For example, elements 4 to 7 are stored in the same block in the cache memory 105.
  • the processing group size determination circuit 204 outputs “4”.
  • element 0 to element 127 are a processing group composed of element 0 to element 31, a processing group composed of element 32 to element 63, and a processing group composed of element 64 to element 95. And processing groups composed of element 96 to element 127.
  • elements 703 (element 0, element 9, element 18, element 27, element 4, element 13, element 22 and element 31) which are bold squares and element 704 (element 32, element 31) 41, element 50, element 59, element 36, element 45, element 54 and element 63) and element 705 (element 64, element 73, element 82, element 91, element 68, element 77, element 86 and element 95)
  • Element 706 (element 96, element 105, element 114, element 123, element 100, element 109, element 118, and element 127) indicate read start elements of the respective processing groups.
  • the read position control unit 114-0 outputs “0” as the read position.
  • the read position control unit 114-1 outputs “1” as the read position.
  • the read position control unit 114-2 outputs “2” as the read position.
  • the read position control unit 114-3 outputs “3” as the read position.
  • the read position control unit 114-4 outputs “0” as the read position.
  • the read position control unit 114-5 outputs “1” as the read position.
  • the read position control unit 114-6 outputs “2” as the read position.
  • the read position control unit 114-7 outputs “3” as the read position.
  • the element 0 is read from the bank 113A-0, and the element 0 is input to the crossbar switch 111.
  • Element 9 is read from bank 113A-1, and element 9 is input to crossbar switch 111.
  • the element 18 is read from the bank 113A-2, and the element 18 is input to the crossbar switch 111.
  • the element 27 is read from the bank 113A-3, and the element 27 is input to the crossbar switch 111.
  • Element 4 is read from bank 113A-4, and element 4 is input to crossbar switch 111.
  • Element 13 is read from bank 113A-5, and element 13 is input to crossbar switch 111.
  • the element 22 is read from the bank 113A-6, and the element 22 is input to the crossbar switch 111.
  • the element 31 is read from the bank 113A-7, and the element 31 is input to the crossbar switch 111.
  • Element 0, element 9, element 18, element 27, element 4, element 13, element 22 and element 31 are respectively stored in the cache memory 105 by the data storage unit 107-0 and the data storage unit 107- by the crossbar switch 111. 2.
  • the read position control unit 114-0 outputs “3” as the read position.
  • the read position control unit 114-1 outputs “0” as the read position.
  • the read position control unit 114-2 outputs “1” as the read position.
  • the read position control unit 114-3 outputs “2” as the read position.
  • the read position control unit 114-4 outputs “3” as the read position.
  • the read position control unit 114-5 outputs “0” as the read position.
  • the read position control unit 114-6 outputs “1” as the read position.
  • the read position control unit 114-7 outputs “2” as the read position.
  • the element 24 is read from the bank 113A-0, and the element 24 is input to the crossbar switch 111.
  • Element 1 is read from bank 113A-1, and element 1 is input to crossbar switch 111.
  • the element 10 is read from the bank 113A-2, and the element 10 is input to the crossbar switch 111.
  • the element 19 is read from the bank 113A-3, and the element 19 is input to the crossbar switch 111.
  • the element 28 is read from the bank 113A-4, and the element 28 is input to the crossbar switch 111.
  • Element 5 is read from bank 113A-5, and element 5 is input to crossbar switch 111.
  • the element 14 is read from the bank 113A-6, and the element 14 is input to the crossbar switch 111.
  • the element 23 is read from the bank 113A-7, and the element 23 is input to the crossbar switch 111.
  • Element 24, element 1, element 10, element 19, element 28, element 5, element 14, and element 23 are respectively stored in the cache memory 105 by the data storage unit 107-6 and the data storage unit 107-by the crossbar switch 111.
  • data storage unit 107-2, data storage unit 107-4, data storage unit 107-7, data storage unit 107-1, data storage unit 107-3, and data storage unit 107-5 are respectively stored in the cache memory 105.
  • each element is read from each vector pipeline as shown in FIG.
  • control circuit 217 adds “4”, which is the size of the processing group, to the value of the read position base register 208.
  • each of the read position control units 114 outputs “4” to “7” as read positions in a predetermined order.
  • a bold square element 704 is an element read by the fifth clock.
  • each data storage unit 107 only needs to search the address array for only the element that first arrives at the block among a plurality of elements stored in the same block, and can write efficiently.
  • the first effect is that control is performed so that write data (elements) written to the same block of the cache memory continuously arrives at a bank (memory bank, data storage unit) in the cache memory having the block.
  • a bank memory bank, data storage unit
  • the second effect is that even when the address of the element 0 is not the head address of the block, it is possible to avoid contention in the crossbar switch and to avoid an increase in the processing time of the vector store. Since contention does not occur, write data (elements) written to the same block of the cache memory can be controlled so that it continuously arrives at a bank (memory bank, data storage unit) in the cache memory having the block, Therefore, it is possible to reduce the time and power consumption for searching the address array in the cache memory.
  • a bank memory bank, data storage unit
  • the processing unit 114A divides 256 elements into processing groups based on the size of the processing group.
  • the processing unit 114A performs the following operation when it is determined that the start address matches the head address of any block in the cache memory 105.
  • processing unit 114A divides 256 elements into processing groups, one element from each of the block data generated when the elements in the processing group are divided into processing group sizes in the order of arrangement, Are output in parallel so that all the elements in the processing group are output, and the elements are read in parallel from the eight banks 113A and transferred to the cache memory 105.
  • the start address matches the head address of any block in the cache memory 105
  • the write data (element) written to the same block in the cache memory 105 is continuously stored in each cache memory 105. It becomes possible to arrive at the bank. Therefore, it is possible to reduce the time and power consumption for the cache memory to search the address array.
  • processing unit 114A performs the following operation when the start address does not match the head address in any of the memory blocks in the cache memory 105.
  • the elements are output in parallel one by one from each of the eight block data other than the last block data having the largest address among the nine block data.
  • the processing unit 114A divides 256 elements into processing groups.
  • the write data (element) written to the same block of the cache memory 105 is continuously stored in the cache memory 105. It is possible to arrive at each bank, thereby reducing the time and power consumption for the cache memory to search the address array.

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)
  • Advance Control (AREA)

Abstract

Provided is an information processing device, wherein the time required and power consumed in having a cache memory search for an address array can be reduced, when transferring elements to the cache memory. The processing device, which transfers m pieces of elements having a predetermined line-up order, to a cache memory comprising n pieces of memory banks, is comprised of: a storage unit wherein the m pieces of elements are stored in the n pieces of register banks, by being interleaved in the lined-up order thereof; a control unit that calculates the processing size by dividing the block size within the memory banks by the stride, and makes an assessment of whether the starting address matches either of the forefront addresses of the blocks. The processing device is also comprised of a processing unit that divides the m pieces of elements into processing groups consisting of elements in continuous line-up order, and consisting of a number of elements that has the processing size multiplied by n, and that, when the starting address matches the forefront address, reads out the elements in parallel from each of the register banks and transfers the elements, in such a way that elements are read out in parallel from each of the block data, which has the elements within the processing group divided by the processing size, in the lined-up order of the elements.

Description

情報処理装置およびデータ転送方法Information processing apparatus and data transfer method
 本発明は、情報処理装置およびデータ転送方法に関し、特には、複数のバンク(メモリバンク)を有するキャッシュメモリにデータを転送する情報処理装置およびデータ転送方法に関する。 The present invention relates to an information processing apparatus and a data transfer method, and more particularly, to an information processing apparatus and a data transfer method for transferring data to a cache memory having a plurality of banks (memory banks).
 情報処理装置であるベクトル計算機は、1マシンクロック(以下、単に「1クロック」と称する)ごとに複数のデータを同時に処理するために、複数のベクトルパイプラインを有している。ベクトル計算機は、1つのベクトル命令で処理されるベクトルデータ内の複数の要素を、複数のベクトルパイプラインのいずれかに格納する。各ベクトルパイプラインは、自己に格納された各要素を処理する。例えば、非特許文献1の214ページには、並列パイプラインおよび多重並列パイプラインが図示されている。 A vector computer which is an information processing apparatus has a plurality of vector pipelines in order to simultaneously process a plurality of data for each machine clock (hereinafter simply referred to as “one clock”). The vector computer stores a plurality of elements in vector data processed by one vector instruction in any of a plurality of vector pipelines. Each vector pipeline processes each element stored in it. For example, page 214 of Non-Patent Document 1 shows a parallel pipeline and a multiple parallel pipeline.
 ベクトルデータのベクトル長が短い場合でも、各ベクトルパイプラインでの処理時間が均等になるように、ベクトルデータは、要素ごとに、各ベクトルパイプラインにインタリーブされて保持される。 Even when the vector length of the vector data is short, the vector data is interleaved and held in each vector pipeline for each element so that the processing time in each vector pipeline is equalized.
 具体的には、ベクトルパイプラインがN個ある場合、ベクトルパイプライン0は、要素0、要素N、要素2N、…を処理し、ベクトルパイプライン1は、要素1、要素N+1、要素2N+1、…を処理し、…、ベクトルパイプラインN-1は、要素N-1、要素2N-1、要素3N-1、…を処理することになる。 Specifically, when there are N vector pipelines, vector pipeline 0 processes element 0, element N, element 2N,..., And vector pipeline 1 includes element 1, element N + 1, element 2N + 1,. , ..., the vector pipeline N-1 processes the element N-1, the element 2N-1, the element 3N-1,.
 1クロックごとに複数のデータを同時に処理する手法は、データの演算が行われるときだけでなく、データのロードまたはデータのストアが行われるときでも使用される。例えば、ベクトルパイプラインと同じ数の入出力ポートが、キャッシュメモリまたはメモリに設けられ、これら入出力ポートを使用することによって、キャッシュメモリまたはメモリに対して、データのロードまたはデータのストアを行える構成が知られている。 The method of simultaneously processing a plurality of data for each clock is used not only when data is calculated, but also when data is loaded or stored. For example, the same number of input / output ports as the vector pipeline are provided in the cache memory or memory, and by using these input / output ports, data can be loaded or stored in the cache memory or memory. It has been known.
 主記憶装置では、ベクトルパイプラインの入出力ポートと1対1で対応する入出力ポートごとに、データ格納部が設けられる。 In the main storage device, a data storage unit is provided for each input / output port corresponding one-to-one with the input / output port of the vector pipeline.
 アクセスすべき主記憶装置のアドレスが指定されれば、主記憶装置内の入出力ポートと主記憶装置内のデータ格納部とが、一意に決定される。 When the address of the main storage device to be accessed is designated, the input / output port in the main storage device and the data storage unit in the main storage device are uniquely determined.
 また、一般にベクトル計算機にて使用される主記憶装置では、データが要素ごとにインタリーブされて格納される。これは、ベクトル計算機が、主記憶装置の連続するアドレスに格納された複数のデータをアクセスした場合に、複数のデータ格納部が並列にアクセスされることにより、最大のデータアクセス性能が達成できるようにするためである。 Also, in a main storage device generally used in a vector computer, data is interleaved and stored for each element. This is because, when the vector computer accesses a plurality of data stored at consecutive addresses in the main storage device, the maximum data access performance can be achieved by accessing a plurality of data storage units in parallel. It is to make it.
 上述したベクトル計算機、具体的には、複数のベクトルパイプラインと複数の入出力ポートとを持ったベクトルプロセッサが、特許文献1に開示されている。 Patent Document 1 discloses a vector computer as described above, specifically, a vector processor having a plurality of vector pipelines and a plurality of input / output ports.
 また、ベクトルレジスタに格納された多数の要素を、連続する複数の要素ごとに、主記憶装置のデータ格納部にインタリーブして格納する方法が、特許文献2に開示されている。 Further, Patent Document 2 discloses a method of storing a large number of elements stored in a vector register by interleaving into a data storage unit of a main storage device for each of a plurality of consecutive elements.
 このベクトルレジスタは、複数のバンクを有する。各バンクは、ベクトルパイプラインと1対1で対応する。各バンクは、自己と対応するベクトルパイプラインに含まれ、要素(具体的には、要素を構成するデータ)を格納する。各バンクには、連続番号が付与されている。各バンク内の要素は、クロスバスイッチを介して、主記憶装置に転送される。 This vector register has a plurality of banks. Each bank has a one-to-one correspondence with the vector pipeline. Each bank is included in a vector pipeline corresponding to itself, and stores elements (specifically, data constituting the elements). A serial number is assigned to each bank. The elements in each bank are transferred to the main storage device via the crossbar switch.
 特許文献2に記載のベクトル処理装置は、各バンクにおいて要素の読み出しを開始する位置として、そのバンクに付与された連続番号を用いることによって、各バンクから読み出された要素が、クロスバスイッチの出力ポートで競合するという問題を回避している。 The vector processing device described in Patent Literature 2 uses the serial number assigned to each bank as the position at which reading of the element is started in each bank, so that the element read from each bank is output from the crossbar switch. The problem of conflicting ports is avoided.
 一方、ベクトル計算機が利用する主記憶装置にキャッシュメモリを追加して、データへのアクセス時間の短縮および高いスループットを実現することは可能である。 On the other hand, it is possible to add a cache memory to the main memory used by the vector computer to reduce the access time to data and achieve high throughput.
 キャッシュメモリは、メモリアドレスが連続している複数のデータを、ブロックデータとして格納する。以下では、ブロックデータのメモリアドレスにて規定される記憶領域、すなわち、ブロックデータが格納される記憶領域を「ブロック」と称する。 The cache memory stores a plurality of data with consecutive memory addresses as block data. Hereinafter, a storage area defined by a memory address of block data, that is, a storage area in which block data is stored is referred to as a “block”.
 キャッシュメモリは、ブロックのメモリアドレスとブロックの状態とを記憶しているアドレスアレイと、ブロックデータを格納しているデータアレイと、を含む。キャッシュメモリは、リクエストされたメモリアドレスが、アドレスアレイに格納されているかを検索することで、キャッシュメモリが行う処理を決定して動作する。 The cache memory includes an address array that stores the memory address of the block and the state of the block, and a data array that stores the block data. The cache memory operates by determining whether the requested memory address is stored in the address array, thereby determining a process to be performed by the cache memory.
 キャッシュメモリが使用された場合、ベクトルデータをストアする処理(以下「ベクトルストア」と称する)のような、メモリアドレスが連続している複数のデータを書き込む処理では、あるブロックに対する複数の書き込みリクエストが、キャッシュメモリに連続して到着することになる。 When a cache memory is used, in a process of writing a plurality of data having consecutive memory addresses, such as a process of storing vector data (hereinafter referred to as “vector store”), a plurality of write requests for a certain block are received. , Will arrive continuously in the cache memory.
 ある書き込みリクエストにてアクセスされるブロックが、1つ前の書き込みリクエストにてアクセスされるブロックと同じ場合には、キャッシュメモリは、アドレスアレイを検索することなく、キャッシュメモリの動作を決定することが可能である。 When the block accessed by a certain write request is the same as the block accessed by the previous write request, the cache memory may determine the operation of the cache memory without searching the address array. Is possible.
 したがって、メモリアドレスが連続するデータの書き込みリクエストが、連続してキャッシュメモリに到着するように、ベクトル計算機が動作すれば、キャッシュメモリがアドレスアレイを検索する時間と消費電力を削減することができる。 Therefore, if the vector computer operates so that data write requests having consecutive memory addresses continuously arrive at the cache memory, the time and power consumption for the cache memory to search the address array can be reduced.
特開2005-38185号公報JP 2005-38185 A 国際公開第2008/111500パンフレットInternational Publication No. 2008/111500 Pamphlet
 特許文献2が開示しているベクトルストア方法では、次のような問題がある。 The vector store method disclosed in Patent Document 2 has the following problems.
 まず、バンクに付与された連続番号を、各バンクにおける要素の読み出しを開始する位置として用いる手法では、各バンクから読み出された要素が、クロスバスイッチの出力ポートで競合することは回避できるが、主記憶装置内の同じデータ格納部に格納される、メモリアドレスが連続する複数の要素が、連続して主記憶装置に書き込まれなくなる。 First, in the method using the serial number assigned to the bank as a position to start reading the element in each bank, it is possible to avoid that the element read from each bank competes at the output port of the crossbar switch. A plurality of elements having consecutive memory addresses stored in the same data storage unit in the main storage device are not written continuously to the main storage device.
 そのため、主記憶装置にキャッシュメモリが付加された場合、同じブロックに格納される複数の要素を連続してキャッシュメモリに書き込むことができず、アドレスアレイを検索する時間および消費電力を削減することができない。例えば、特許文献2の図8に示されたように、1~7番要素は、0番要素が出力されてから25クロック分遅れて出力される。 Therefore, when a cache memory is added to the main storage device, a plurality of elements stored in the same block cannot be written to the cache memory in succession, and the time and power consumption for searching the address array can be reduced. Can not. For example, as shown in FIG. 8 of Patent Document 2, the 1st to 7th elements are output with a delay of 25 clocks after the 0th element is output.
 図1は、ベクトルパイプライン数が8、キャッシュメモリのブロックサイズが64B(バイト)、キャッシュメモリのデータ格納部の数が8の場合に、特許文献2で開示されている手法を実行した場合に生じる問題点を説明するための図である。 FIG. 1 shows a case where the technique disclosed in Patent Document 2 is executed when the number of vector pipelines is 8, the block size of the cache memory is 64 B (bytes), and the number of data storage units of the cache memory is 8. It is a figure for demonstrating the problem which arises.
 図1の上半分には、8個のベクトルパイプライン(ベクトルパイプライン0~7)における128個の要素(要素0~127)の配置、さらに言えば、8個のベクトルパイプライン内のバンクにて構成されるベクトルレジスタ810における要素0~127の配置が示されている。なお、要素0から要素127を、要素の番号順に並べると、ベクトルデータが復元される。 In the upper half of FIG. 1, the arrangement of 128 elements (elements 0 to 127) in eight vector pipelines (vector pipelines 0 to 7), more specifically, banks in the eight vector pipelines. The arrangement of elements 0 to 127 in the vector register 810 configured as shown in FIG. Note that when the elements 0 to 127 are arranged in the order of the element numbers, the vector data is restored.
 図1の下半分には、1クロックごとに、クロスバスイッチ111から、キャッシュメモリ内の8個のデータ格納部(データ格納部0~7)に出力される要素が示されている。図1の下半分において、太字の枠811は、キャッシュメモリのブロックの境界を示す。 The lower half of FIG. 1 shows elements output from the crossbar switch 111 to eight data storage units (data storage units 0 to 7) in the cache memory every clock. In the lower half of FIG. 1, a bold frame 811 indicates a block boundary of the cache memory.
 ここで、ベクトルストアの開始アドレスは「0」、ストライドは8Bとしている。キャッシュメモリのブロックサイズが64Bであり、ストライドが8Bであるため、各データ格納部内の各ブロックには、メモリアドレスが連続する8個の要素、つまり、要素番号が連続する8個の要素が格納される。 Here, the start address of the vector store is “0” and the stride is 8B. Since the block size of the cache memory is 64B and the stride is 8B, each block in each data storage unit stores eight elements having consecutive memory addresses, that is, eight elements having consecutive element numbers. Is done.
 図1の上半分に示された太字の縦線801は、キャッシュメモリのブロックの境界を示している。例えば、要素0~7までが、キャッシュメモリの同一のブロックに格納される。 1 A bold vertical line 801 shown in the upper half of FIG. 1 indicates a block boundary of the cache memory. For example, elements 0 to 7 are stored in the same block of the cache memory.
 各ベクトルパイプラインは、読み出しポインタを有する。各読み出しポインタは、ベクトルパイプライン内のバンクから要素を読み出す位置を、図1の上半分に示された読み出し位置0~15を用いて指定する。 Each vector pipeline has a read pointer. Each read pointer designates a position at which an element is read from a bank in the vector pipeline using read positions 0 to 15 shown in the upper half of FIG.
 図1の上半分に示された各要素802(太字の四角で示されている要素、具体的には、要素0、要素9、要素18、要素27、要素36、要素45、要素54、要素63)は、各ベクトルパイプライン内のバンクから最初に読み出される要素である。 Each element 802 shown in the upper half of FIG. 1 (elements indicated by bold squares, specifically, element 0, element 9, element 18, element 27, element 36, element 45, element 54, element 63) is an element read out first from a bank in each vector pipeline.
 最初のクロックが入力されると、以下のような動作が実行される。 When the first clock is input, the following operations are executed.
 ベクトルパイプライン0の読み出しポインタは、読み出し位置として「0」を出力する。ベクトルパイプライン1の読み出しポインタは、読み出し位置として「1」を出力する。ベクトルパイプライン2の読み出しポインタは、読み出し位置として「2」を出力する。ベクトルパイプライン3の読み出しポインタは、読み出し位置として「3」を出力する。ベクトルパイプライン4の読み出しポインタは、読み出し位置として「4」を出力する。ベクトルパイプライン5の読み出しポインタは、読み出し位置として「5」を出力する。ベクトルパイプライン6の読み出しポインタは、読み出し位置として「6」を出力する。ベクトルパイプライン7の読み出しポインタは、読み出し位置として「7」を出力する。 The read pointer of the vector pipeline 0 outputs “0” as the read position. The read pointer of the vector pipeline 1 outputs “1” as the read position. The read pointer of the vector pipeline 2 outputs “2” as the read position. The read pointer of the vector pipeline 3 outputs “3” as the read position. The read pointer of the vector pipeline 4 outputs “4” as the read position. The read pointer of the vector pipeline 5 outputs “5” as the read position. The read pointer of the vector pipeline 6 outputs “6” as the read position. The read pointer of the vector pipeline 7 outputs “7” as the read position.
 このため、ベクトルパイプライン0内のバンクからは、読み出し位置「0」に対応する要素0が読み出され、要素0はクロスバスイッチ111に入力される。また、ベクトルパイプライン1内のバンクからは、読み出し位置「1」に対応する要素9が読み出され、要素9はクロスバスイッチ111に入力される。また、ベクトルパイプライン2内のバンクからは、読み出し位置「2」に対応する要素18が読み出され、要素18はクロスバスイッチ111に入力される。また、ベクトルパイプライン3内のバンクからは、読み出し位置「3」に対応する要素27が読み出され、要素27はクロスバスイッチ111に入力される。また、ベクトルパイプライン4内のバンクからは、読み出し位置「4」に対応する要素36が読み出され、要素36はクロスバスイッチ111に入力される。また、ベクトルパイプライン5内のバンクからは、読み出し位置「5」に対応する要素45が読み出され、要素45はクロスバスイッチ111に入力される。また、ベクトルパイプライン6内のバンクからは、読み出し位置「6」に対応する要素54が読み出され、要素54はクロスバスイッチ111に入力される。また、ベクトルパイプライン7内のバンクからは、読み出し位置「7」に対応する要素63が読み出され、要素63はクロスバスイッチ111に入力される。 Therefore, the element 0 corresponding to the read position “0” is read from the bank in the vector pipeline 0 and the element 0 is input to the crossbar switch 111. Further, the element 9 corresponding to the read position “1” is read from the bank in the vector pipeline 1, and the element 9 is input to the crossbar switch 111. Further, the element 18 corresponding to the read position “2” is read from the bank in the vector pipeline 2, and the element 18 is input to the crossbar switch 111. Further, the element 27 corresponding to the read position “3” is read from the bank in the vector pipeline 3, and the element 27 is input to the crossbar switch 111. Further, the element 36 corresponding to the read position “4” is read from the bank in the vector pipeline 4, and the element 36 is input to the crossbar switch 111. Further, the element 45 corresponding to the read position “5” is read from the bank in the vector pipeline 5, and the element 45 is input to the crossbar switch 111. Further, the element 54 corresponding to the read position “6” is read from the bank in the vector pipeline 6, and the element 54 is input to the crossbar switch 111. Further, the element 63 corresponding to the read position “7” is read from the bank in the vector pipeline 7, and the element 63 is input to the crossbar switch 111.
 要素0、要素9、要素18、要素27、要素36、要素45、要素54および要素63は、それぞれ、クロスバスイッチ111によって、キャッシュメモリ内の、データ格納部0、データ格納部1、データ格納部2、データ格納部3、データ格納部4、データ格納部5、データ格納部6、データ格納部7に格納される(図1のtime1参照)。このため、クロスバスイッチ111では出力の競合は発生しない。 The element 0, the element 9, the element 18, the element 27, the element 36, the element 45, the element 54, and the element 63 are respectively stored in the cache memory by the data storage unit 0, the data storage unit 1, and the data storage unit by the crossbar switch 111. 2, the data storage unit 3, the data storage unit 4, the data storage unit 5, the data storage unit 6, and the data storage unit 7 (see time 1 in FIG. 1). For this reason, output conflict does not occur in the crossbar switch 111.
 続いて、2番目のクロックが入力されると、以下のような動作が実行される。 Subsequently, when the second clock is input, the following operation is executed.
 ベクトルパイプライン0の読み出しポインタは、読み出し位置として「1」を出力する。ベクトルパイプライン1の読み出しポインタは、読み出し位置として「2」を出力する。ベクトルパイプライン2の読み出しポインタは、読み出し位置として「3」を出力する。ベクトルパイプライン3の読み出しポインタは、読み出し位置として「4」を出力する。ベクトルパイプライン4の読み出しポインタは、読み出し位置として「5」を出力する。ベクトルパイプライン5の読み出しポインタは、読み出し位置として「6」を出力する。ベクトルパイプライン6の読み出しポインタは、読み出し位置として「7」を出力する。ベクトルパイプライン7の読み出しポインタは、読み出し位置として「8」を出力する。 The read pointer of the vector pipeline 0 outputs “1” as the read position. The read pointer of the vector pipeline 1 outputs “2” as the read position. The read pointer of the vector pipeline 2 outputs “3” as the read position. The read pointer of the vector pipeline 3 outputs “4” as the read position. The read pointer of the vector pipeline 4 outputs “5” as the read position. The read pointer of the vector pipeline 5 outputs “6” as the read position. The read pointer of the vector pipeline 6 outputs “7” as the read position. The read pointer of the vector pipeline 7 outputs “8” as the read position.
 このため、ベクトルパイプライン0内のバンクからは要素8が読み出され、要素8はクロスバスイッチ111に入力される。また、ベクトルパイプライン1内のバンクからは要素17が読み出され、要素17はクロスバスイッチ111に入力される。また、ベクトルパイプライン2内のバンクからは要素26が読み出され、要素26はクロスバスイッチ111に入力される。また、ベクトルパイプライン3内のバンクからは要素35が読み出され、要素35はクロスバスイッチ111に入力される。また、ベクトルパイプライン4内のバンクからは要素44が読み出され、要素44はクロスバスイッチ111に入力される。また、ベクトルパイプライン5内のバンクからは要素53が読み出され、要素53はクロスバスイッチ111に入力される。また、ベクトルパイプライン6内のバンクからは要素62が読み出され、要素62はクロスバスイッチ111に入力される。また、ベクトルパイプライン7内のバンクからは要素71が読み出され、要素71はクロスバスイッチ111に入力される。 Therefore, the element 8 is read from the bank in the vector pipeline 0, and the element 8 is input to the crossbar switch 111. Further, the element 17 is read from the bank in the vector pipeline 1, and the element 17 is input to the crossbar switch 111. Further, the element 26 is read from the bank in the vector pipeline 2, and the element 26 is input to the crossbar switch 111. Further, the element 35 is read from the bank in the vector pipeline 3, and the element 35 is input to the crossbar switch 111. Further, the element 44 is read from the bank in the vector pipeline 4, and the element 44 is input to the crossbar switch 111. Further, the element 53 is read from the bank in the vector pipeline 5, and the element 53 is input to the crossbar switch 111. Further, the element 62 is read from the bank in the vector pipeline 6, and the element 62 is input to the crossbar switch 111. Further, the element 71 is read from the bank in the vector pipeline 7, and the element 71 is input to the crossbar switch 111.
 要素8、要素17、要素26、要素35、要素44、要素53、要素62および要素71は、それぞれ、クロスバスイッチ111によって、キャッシュメモリ内の、データ格納部1、データ格納部2、データ格納部3、データ格納部4、データ格納部5、データ格納部6、データ格納部7、データ格納部0に格納される(図1のtime2参照)。このため、クロスバスイッチ111では出力の競合は発生しない。 The element 8, the element 17, the element 26, the element 35, the element 44, the element 53, the element 62, and the element 71 are respectively stored in the cache memory by the data storage unit 1, the data storage unit 2, and the data storage unit by the crossbar switch 111. 3, the data storage unit 4, the data storage unit 5, the data storage unit 6, the data storage unit 7, and the data storage unit 0 (see time 2 in FIG. 1). For this reason, output conflict does not occur in the crossbar switch 111.
 以下、3番目のクロック~16番目のクロックのそれぞれが入力された際には、図1に示すように各ベクトルパイプラインから各要素が読み出される。 Hereinafter, when each of the third clock to the 16th clock is inputted, each element is read from each vector pipeline as shown in FIG.
 このように、1つのクロックに応じて各ベクトルパイプラインから読み出される要素は、互いに異なるデータ格納部に格納されるため、クロスバスイッチ111での出力の競合が発生しない。そのため、クロスバスイッチ111でのベクトルストアの性能低下は発生しない。 In this way, since elements read from each vector pipeline in accordance with one clock are stored in different data storage units, output conflicts in the crossbar switch 111 do not occur. Therefore, the performance of the vector store in the crossbar switch 111 does not deteriorate.
 しかしながら、図1の下半分に示す通り、キャッシュメモリのデータ格納部内の同じブロックに格納される複数の要素が、そのブロックを有するデータ格納部に連続して到着しない場合がある。 However, as shown in the lower half of FIG. 1, a plurality of elements stored in the same block in the data storage unit of the cache memory may not arrive at the data storage unit having the block continuously.
 例えば、データ格納部0では、同じブロックに格納される要素0と要素1~7とは、互いに8クロック離れて到着する。そして、要素0と要素1~7の間に、他のブロックに格納される要素71~64が入り込んでいる。 For example, in the data storage unit 0, the element 0 and the elements 1 to 7 stored in the same block arrive at a distance of 8 clocks from each other. Elements 71 to 64 stored in other blocks are inserted between element 0 and elements 1 to 7.
 このため、同一ブロックに格納される要素が、連続してデータ格納部に到着する場合のように、アドレスアレイを検索する時間および消費電力を削減することができない。 For this reason, the time and power consumption for searching the address array cannot be reduced as in the case where elements stored in the same block arrive at the data storage unit continuously.
 次に、特許文献2には、要素0が、同一ブロックにメモリアドレス順に格納される複数の要素のうちの最初の要素となる例だけが示されているが、通常、要素0は、任意のメモリアドレスに書き込むことが可能である。 Next, Patent Document 2 shows only an example in which element 0 is the first element among a plurality of elements stored in the same block in the order of memory addresses. Normally, however, element 0 is an arbitrary element. It is possible to write to a memory address.
 要素0が、ブロックの先頭アドレス以外に書き込まれる場合、単純にバンク番号(ベクトルパイプライン番号)を各バンクの読み出し開始位置として用いる手法では、クロスバスイッチの出力ポートでの要素の競合を完全には回避することができない。このため、ベクトルストアの実行時間が増加する。 When element 0 is written to other than the head address of the block, the method of simply using the bank number (vector pipeline number) as the read start position of each bank completely eliminates element contention at the output port of the crossbar switch. It cannot be avoided. For this reason, the execution time of the vector store increases.
 さらに、キャッシュメモリ内の同じデータ格納部内の異なるブロックに格納される2つの要素が、クロスバスイッチの出力ポートで競合する。このため、場合によると、同一ブロックに格納される要素が、連続してデータ格納部に到着しなくなる。よって、アドレスアレイを検索する時間および消費電力を削減することができなくなる。 Furthermore, two elements stored in different blocks in the same data storage unit in the cache memory compete at the output port of the crossbar switch. For this reason, in some cases, elements stored in the same block do not reach the data storage unit continuously. Therefore, it is impossible to reduce the time and power consumption for searching the address array.
 図2は、ベクトルパイプライン数が8、キャッシュメモリのブロックサイズが64B、キャッシュメモリのデータ格納部の数が8の場合に、特許文献2で開示されている手法を実行した場合に生じる問題点を説明するための図である。 FIG. 2 shows a problem that occurs when the technique disclosed in Patent Document 2 is executed when the number of vector pipelines is 8, the block size of the cache memory is 64B, and the number of data storage units of the cache memory is 8. It is a figure for demonstrating.
 図2の上半分には、8個のベクトルパイプライン(ベクトルパイプライン0~7)における128個の要素(要素0~127)の配置、さらに言えば、8個のベクトルパイプライン内のバンクにて構成されるベクトルレジスタ910における要素0~127の配置が示されている。なお、要素0から要素127を、要素の番号順に並べると、ベクトルデータが復元される。 In the upper half of FIG. 2, the arrangement of 128 elements (elements 0 to 127) in the eight vector pipelines (vector pipelines 0 to 7), more specifically, the banks in the eight vector pipelines. The arrangement of elements 0 to 127 in the vector register 910 configured as shown in FIG. Note that when the elements 0 to 127 are arranged in the order of the element numbers, the vector data is restored.
 図2の下半分には、1クロックごとに、クロスバスイッチ111から、キャッシュメモリ内の8個のデータ格納部(データ格納部0~7)に出力される要素が示されている。 The lower half of FIG. 2 shows elements output from the crossbar switch 111 to eight data storage units (data storage units 0 to 7) in the cache memory every clock.
 ここで、ベクトルストアの開始アドレスは「8」、ストライドは8Bとしている。キャッシュメモリのブロックサイズが64Bであり、ストライドが8Bであるため、各データ格納部内の各ブロックには、メモリアドレスが連続する8個の要素、つまり、要素番号が連続する8個の要素が格納可能である。 Here, the start address of the vector store is “8” and the stride is 8B. Since the block size of the cache memory is 64B and the stride is 8B, each block in each data storage unit stores eight elements having consecutive memory addresses, that is, eight elements having consecutive element numbers. Is possible.
 図2の上半分に示された太字の縦線901は、キャッシュメモリのブロックの境界を示している。例えば、要素7~14までが、キャッシュメモリの同一のブロックに格納される。 2, bold vertical lines 901 shown in the upper half of FIG. 2 indicate the boundaries of the cache memory blocks. For example, elements 7 to 14 are stored in the same block of the cache memory.
 図2の上半分に示された各要素902(太字の四角で示されている要素、具体的には、要素0、要素9、要素18、要素27、要素36、要素45、要素54、要素63)は、各ベクトルパイプライン内のバンクから最初に読み出される要素である。 Each element 902 shown in the upper half of FIG. 2 (elements indicated by bold squares, specifically, element 0, element 9, element 18, element 27, element 36, element 45, element 54, element 63) is an element read out first from a bank in each vector pipeline.
 最初のクロックが入力されると、以下のような動作が実行される。 When the first clock is input, the following operations are executed.
 ベクトルパイプライン0の読み出しポインタは、読み出し位置として「0」を出力する。ベクトルパイプライン1の読み出しポインタは、読み出し位置として「1」を出力する。ベクトルパイプライン2の読み出しポインタは、読み出し位置として「2」を出力する。ベクトルパイプライン3の読み出しポインタは、読み出し位置として「3」を出力する。ベクトルパイプライン4の読み出しポインタは、読み出し位置として「4」を出力する。ベクトルパイプライン5の読み出しポインタは、読み出し位置として「5」を出力する。ベクトルパイプライン6の読み出しポインタは、読み出し位置として「6」を出力する。ベクトルパイプライン7の読み出しポインタは、読み出し位置として「7」を出力する。 The read pointer of the vector pipeline 0 outputs “0” as the read position. The read pointer of the vector pipeline 1 outputs “1” as the read position. The read pointer of the vector pipeline 2 outputs “2” as the read position. The read pointer of the vector pipeline 3 outputs “3” as the read position. The read pointer of the vector pipeline 4 outputs “4” as the read position. The read pointer of the vector pipeline 5 outputs “5” as the read position. The read pointer of the vector pipeline 6 outputs “6” as the read position. The read pointer of the vector pipeline 7 outputs “7” as the read position.
 このため、ベクトルパイプライン0内のバンクからは要素0が読み出され、要素0はクロスバスイッチ111に入力される。また、ベクトルパイプライン1内のバンクからは要素9が読み出され、要素9はクロスバスイッチ111に入力される。また、ベクトルパイプライン2内のバンクからは要素18が読み出され、要素18はクロスバスイッチ111に入力される。また、ベクトルパイプライン3内のバンクからは要素27が読み出され、要素27はクロスバスイッチ111に入力される。また、ベクトルパイプライン4内のバンクからは要素36が読み出され、要素36はクロスバスイッチ111に入力される。また、ベクトルパイプライン5内のバンクからは要素45が読み出され、要素45はクロスバスイッチ111に入力される。また、ベクトルパイプライン6内のバンクからは要素54が読み出され、要素54はクロスバスイッチ111に入力される。また、ベクトルパイプライン7内のバンクからは要素63が読み出され、要素63はクロスバスイッチ111に入力される。 Therefore, element 0 is read from the bank in vector pipeline 0, and element 0 is input to crossbar switch 111. Further, the element 9 is read from the bank in the vector pipeline 1, and the element 9 is input to the crossbar switch 111. Further, the element 18 is read from the bank in the vector pipeline 2, and the element 18 is input to the crossbar switch 111. Further, the element 27 is read from the bank in the vector pipeline 3, and the element 27 is input to the crossbar switch 111. Further, the element 36 is read from the bank in the vector pipeline 4, and the element 36 is input to the crossbar switch 111. Further, the element 45 is read from the bank in the vector pipeline 5, and the element 45 is input to the crossbar switch 111. Further, the element 54 is read from the bank in the vector pipeline 6, and the element 54 is input to the crossbar switch 111. Further, the element 63 is read from the bank in the vector pipeline 7, and the element 63 is input to the crossbar switch 111.
 要素0、要素9、要素18、要素27、要素36、要素45、要素54および要素63は、それぞれ、クロスバスイッチ111によって、キャッシュメモリ内の、データ格納部0、データ格納部1、データ格納部2、データ格納部3、データ格納部4、データ格納部5、データ格納部6、データ格納部0に格納される。このため、クロスバスイッチ111では、データ格納部0への出力において、要素0と要素63の競合が発生する。そのため、クロスバスイッチ111で、ベクトルストアの性能が低下する。 The element 0, the element 9, the element 18, the element 27, the element 36, the element 45, the element 54, and the element 63 are respectively stored in the cache memory by the data storage unit 0, the data storage unit 1, and the data storage unit by the crossbar switch 111. 2, data storage unit 3, data storage unit 4, data storage unit 5, data storage unit 6, and data storage unit 0. For this reason, in the crossbar switch 111, contention between the element 0 and the element 63 occurs in the output to the data storage unit 0. For this reason, the crossbar switch 111 reduces the performance of the vector store.
 また、図2では、要素0が要素63よりも先にデータ格納部0に到着しているが、要素0と要素63の到着順序は、クロスバスイッチ111での競合調停の手法に依存する。そのため、同じブロックに格納される要素が連続してデータ格納部に到着することが保証できなくなる。 In FIG. 2, the element 0 arrives at the data storage unit 0 before the element 63, but the arrival order of the element 0 and the element 63 depends on the contention arbitration method in the crossbar switch 111. Therefore, it cannot be guaranteed that the elements stored in the same block arrive at the data storage unit continuously.
 本発明の目的は、上述した課題である、同じブロックに格納される要素が連続してデータ格納部に到着しないことを解決可能な情報処理装置およびデータ転送方法を提供することにある。 An object of the present invention is to provide an information processing apparatus and a data transfer method that can solve the above-described problem that elements stored in the same block do not continuously arrive at a data storage unit.
 本発明の情報処理装置は、互いに異なるアドレスに対応づけられた所定サイズのメモリブロックを有するn(nは2以上の整数)個のメモリバンクを備えたキャッシュメモリに、並び順が決まっているm個のデータ要素を転送する情報処理装置であって、
 n個のレジスタバンクを有し、前記m個のデータ要素が、前記並び順に前記データ要素単位でインタリーブされて前記n個のレジスタバンクに順番に格納される、格納手段と、
 データ要素間のストライドを示すストライド情報と、前記並び順が先頭のデータ要素のアドレスである開始アドレスと、を受け付けると、前記所定サイズを前記ストライドで割って処理サイズを算出し、また、前記開始アドレスがいずれかのメモリブロックの先頭のアドレスと一致するかを判断する制御手段と、
 前記m個のデータ要素を、前記並び順が連続しかつ前記処理サイズとnを乗算した値の数のデータ要素からなる処理グループに分けていき、前記開始アドレスがいずれかのメモリブロックの先頭のアドレスと一致すると判断された場合には、前記m個のデータ要素を前記処理グループに分けるごとに、当該処理グループ内のデータ要素を前記並び順で前記処理サイズの数ごとに分けたブロックデータのそれぞれから、1つずつ、前記データ要素が並列に読み出されて、当該処理グループ内のデータ要素が全て読み出されるように、前記n個のレジスタバンクから並列に前記データ要素を読み出し前記キャッシュメモリに転送する処理手段と、を含む。
In the information processing apparatus according to the present invention, m is arranged in a cache memory having n (n is an integer of 2 or more) memory banks having memory blocks of a predetermined size associated with different addresses. An information processing device for transferring data elements,
storage means having n register banks, wherein the m data elements are interleaved in units of the data elements in the arrangement order and are stored in the n register banks in order.
When the stride information indicating the stride between data elements and the start address which is the address of the first data element in the arrangement order are received, the processing size is calculated by dividing the predetermined size by the stride, and the start Control means for determining whether the address matches the start address of any of the memory blocks;
The m data elements are divided into processing groups each including the number of data elements in which the arrangement order is continuous and the processing size is multiplied by n, and the start address is the top of any memory block. If it is determined that the address matches the address, each time the m data elements are divided into the processing groups, the data elements in the processing group are divided into the number of processing sizes in the arrangement order. From each of the n register banks, the data elements are read in parallel to the cache memory so that each of the data elements is read in parallel and all the data elements in the processing group are read. Processing means for transferring.
 本発明のデータ転送方法は、互いに異なるアドレスに対応づけられた所定サイズのメモリブロックを有するn(nは2以上の整数)個のメモリバンクを備えたキャッシュメモリに、並び順が決まっているm個のデータ要素を転送する情報処理装置でのデータ転送方法であって、
 前記m個のデータ要素を、前記並び順に前記データ要素単位でインタリーブしてn個のレジスタバンクに順番に格納し、
 データ要素間のストライドを示すストライド情報と、前記並び順が先頭のデータ要素のアドレスである開始アドレスと、を受け付けると、前記所定サイズを前記ストライドで割って処理サイズを算出し、また、前記開始アドレスがいずれかのメモリブロックの先頭のアドレスと一致するかを判断し、
 前記m個のデータ要素を、前記並び順が連続しかつ前記処理サイズとnを乗算した値の数のデータ要素からなる処理グループに分けていき、前記開始アドレスがいずれかのメモリブロックの先頭のアドレスと一致すると判断された場合には、前記m個のデータ要素を前記処理グループに分けるごとに、当該処理グループ内のデータ要素を前記並び順で前記処理サイズの数ごとに分けたブロックデータのそれぞれから、1つずつ、前記データ要素が並列に読み出されて、当該処理グループ内のデータ要素が全て読み出されるように、前記n個のレジスタバンクから並列に前記データ要素を読み出し前記キャッシュメモリに転送する。
According to the data transfer method of the present invention, the order of arrangement is determined in a cache memory having n (n is an integer of 2 or more) memory banks having memory blocks of a predetermined size associated with different addresses. A data transfer method in an information processing apparatus for transferring individual data elements,
The m data elements are interleaved in units of the data elements in the arrangement order, and sequentially stored in n register banks,
When the stride information indicating the stride between data elements and the start address which is the address of the first data element in the arrangement order are received, the processing size is calculated by dividing the predetermined size by the stride, and the start Determine whether the address matches the start address of any memory block,
The m data elements are divided into processing groups each including the number of data elements in which the arrangement order is continuous and the processing size is multiplied by n, and the start address is the top of any memory block. If it is determined that the address matches the address, each time the m data elements are divided into the processing groups, the data elements in the processing group are divided into the number of processing sizes in the arrangement order. From each of the n register banks, the data elements are read in parallel to the cache memory so that each of the data elements is read in parallel and all the data elements in the processing group are read. Forward.
 本発明によれば、キャッシュメモリにデータ要素を転送して格納する際に、キャッシュメモリがアドレスアレイを検索する時間と消費電力を削減することが可能になる。 According to the present invention, when data elements are transferred and stored in the cache memory, it is possible to reduce the time and power consumption for the cache memory to search the address array.
特許文献2に記載の技術の問題点を説明する図である。It is a figure explaining the problem of the technique of patent document 2. FIG. 特許文献2に記載の技術の問題点を説明する図である。It is a figure explaining the problem of the technique of patent document 2. FIG. 本発明の第1実施形態のベクトルプロセッサを示す図である。It is a figure which shows the vector processor of 1st Embodiment of this invention. ベクトルストア制御部および読み出し位置制御部を示す図である。It is a figure which shows a vector store control part and a reading position control part. 読み出し位置制御部での動作を表すフローチャートである。It is a flowchart showing the operation | movement in a reading position control part. アドレス計算部を示す図である。It is a figure which shows an address calculation part. ベクトルストアの動作を示す図である。It is a figure which shows operation | movement of a vector store. ベクトルストアの動作を示す図である。It is a figure which shows operation | movement of a vector store. ベクトルストアの動作を示す図である。It is a figure which shows operation | movement of a vector store.
 以下、本発明の一実施形態の情報処理装置であるベクトルプロセッサについて図面を参照して詳細に説明する。なお、本実施形態の情報処理装置は、ベクトルプロセッサに限らず、複数の演算用パイプラインを有し、各演算用パイプラインが格納するデータを、キャッシュメモリ内の複数のバンク(メモリバンク)に転送する情報処理装置であればよい。 Hereinafter, a vector processor which is an information processing apparatus according to an embodiment of the present invention will be described in detail with reference to the drawings. The information processing apparatus according to the present embodiment is not limited to a vector processor, and has a plurality of calculation pipelines. Data stored in each calculation pipeline is stored in a plurality of banks (memory banks) in the cache memory. Any information processing device to be transferred may be used.
 図3は、本実施形態のベクトルプロセッサの構成例を示すブロック図である。 FIG. 3 is a block diagram showing a configuration example of the vector processor of the present embodiment.
 図3において、ベクトルプロセッサは、CPU(Central Processing Unit)101を含む。 3, the vector processor includes a CPU (Central Processing Unit) 101.
 CPU101は、命令発行制御部102と、ベクトル処理部103と、アドレス計算部104と、を含む。また、CPU101は、キャッシュメモリ105を介して、主記憶装置106に接続されている。 The CPU 101 includes an instruction issue control unit 102, a vector processing unit 103, and an address calculation unit 104. The CPU 101 is connected to the main storage device 106 via the cache memory 105.
 キャッシュメモリ105は、複数のデータ格納部107-0~107-7を含む。 The cache memory 105 includes a plurality of data storage units 107-0 to 107-7.
 各データ格納部107-0~107-7は、メモリバンクである。各データ格納部107-0~107-7は、メモリアドレスが連続する複数個の要素または1つの要素を格納するための格納領域(メモリブロック、以下「ブロック」と称する)を含む。各データ格納部107-0~107-7は、複数のブロックを有する。なお、各ブロックのサイズ(所定サイズ)は、64Bである。また、要素のサイズは、8Bである。また、メモリアドレスは、64bitである。 Each data storage unit 107-0 to 107-7 is a memory bank. Each of the data storage units 107-0 to 107-7 includes a storage area (memory block, hereinafter referred to as “block”) for storing a plurality of elements having consecutive memory addresses or one element. Each of the data storage units 107-0 to 107-7 has a plurality of blocks. The size (predetermined size) of each block is 64B. The element size is 8B. The memory address is 64 bits.
 本実施形態では、データ格納部107-0は、メモリアドレス0~56のデータをキャッシュするためのブロック、および、メモリアドレス512~568のデータをキャッシュするためのブロックを有する。 In the present embodiment, the data storage unit 107-0 has a block for caching data at memory addresses 0 to 56 and a block for caching data at memory addresses 512 to 568.
 データ格納部107-1は、メモリアドレス64~120のデータをキャッシュするためのブロック、および、メモリアドレス576~632のデータをキャッシュするためのブロックを有する。 The data storage unit 107-1 has a block for caching data at memory addresses 64-120 and a block for caching data at memory addresses 576-632.
 データ格納部107-2は、メモリアドレス128~184のデータをキャッシュするためのブロック、および、メモリアドレス640~696のデータをキャッシュするためのブロックを有する。 The data storage unit 107-2 has a block for caching data at memory addresses 128 to 184 and a block for caching data at memory addresses 640 to 696.
 データ格納部107-3は、メモリアドレス192~248のデータをキャッシュするためのブロック、および、メモリアドレス704~760のデータをキャッシュするためのブロックを有する。 The data storage unit 107-3 has a block for caching data at memory addresses 192 to 248 and a block for caching data at memory addresses 704 to 760.
 また、データ格納部107-7は、メモリアドレス448~504のデータをキャッシュするためのブロック、および、メモリアドレス960~1016のデータをキャッシュするためのブロックを有する。 The data storage unit 107-7 includes a block for caching data at memory addresses 448 to 504 and a block for caching data at memory addresses 960 to 1016.
 つまり、データ格納部107-0~107-7には、所定の記憶領域(64B)を有するブロックが、メモリアドレス順にインタリーブされた状態で設定されている。 That is, blocks having a predetermined storage area (64B) are set in the data storage units 107-0 to 107-7 in a state where they are interleaved in the order of memory addresses.
 本実施形態では、メモリバンク数(n)を「8」にしているが、バンク数は2以上の整数、さらに言えば、任意の2のべき乗の数であればよい。 In the present embodiment, the number of memory banks (n) is “8”, but the number of banks may be an integer of 2 or more, more specifically, an arbitrary power of 2.
 ベクトル処理部103は、複数のベクトルパイプライン109-0~109-7と、ベクトルストア制御部110と、クロスバスイッチ111と、を含む。なお、ベクトルパイプライン109のサフィックスは、そのベクトルパイプラインに付された「番号」を意味する。 The vector processing unit 103 includes a plurality of vector pipelines 109-0 to 109-7, a vector store control unit 110, and a crossbar switch 111. The suffix of the vector pipeline 109 means the “number” assigned to the vector pipeline.
 本実施形態では、ベクトルパイプラインの数(n)を「8」としているが、ベクトルパイプラインの数は2以上の整数、さらに言えば、任意の2のべき乗の数であればよい。 In the present embodiment, the number of vector pipelines (n) is “8”, but the number of vector pipelines may be an integer of 2 or more, more specifically, an arbitrary power of two.
 各ベクトルパイプライン109-0~109-7は、同一構成である。このため、ベクトルパイプライン109-0~109-7のうち、ベクトルパイプライン109-0について説明を行う。 The vector pipelines 109-0 to 109-7 have the same configuration. Therefore, the vector pipeline 109-0 among the vector pipelines 109-0 to 109-7 will be described.
 ベクトルパイプライン109-0は、ベクトル演算器112-0と、ベクトルレジスタ113-0と、を含む。ベクトルレジスタ113-0は、読み出し位置制御部114-0と、バンク113A-0と、を含む。なお、ベクトル演算器112とベクトルレジスタ113と読み出し位置制御部114とバンク113Aの各サフィックスは、それらが含まれるベクトルパイプライン109に付された「番号」を意味する。 The vector pipeline 109-0 includes a vector calculator 112-0 and a vector register 113-0. The vector register 113-0 includes a read position control unit 114-0 and a bank 113A-0. Each suffix of the vector calculator 112, the vector register 113, the read position control unit 114, and the bank 113A means a “number” assigned to the vector pipeline 109 in which they are included.
 256個の要素(要素0~255)が、バンク113A-0~113A-7のいずれかに格納される。なお、要素は、一般的にデータ要素と呼ぶことができる。また、バンク113-0~113A-7のそれぞれは、一般的にレジスタバンクと呼ぶことができる。 256 elements (elements 0 to 255) are stored in any one of the banks 113A-0 to 113A-7. Elements can be generally referred to as data elements. Each of banks 113-0 to 113A-7 can generally be referred to as a register bank.
 256個の要素は、並び順が決まっている。本実施形態では、256個の要素の並び順は、要素0から要素255の順である。このため、要素0が、256個の要素(要素0~255)のうち、並び順が先頭の要素となる。本実施形態では要素の数mとして256を用いているが、mは256に限らない。 The order of the 256 elements is determined. In this embodiment, the arrangement order of 256 elements is the order of element 0 to element 255. Therefore, element 0 is the first element in the arrangement order among 256 elements (elements 0 to 255). In this embodiment, 256 is used as the number m of elements, but m is not limited to 256.
 本実施形態では、ベクトルパイプライン109-0(具体的には、バンク113A-0)には、要素8N(N=0、1、2、…、31)が格納される。ベクトルパイプライン109-1(具体的には、バンク113A-1)には、要素「8N+1」(N=0、1、2、…、31)が格納される。ベクトルパイプライン109-2(具体的には、バンク113A-2)には、要素「8N+2」(N=0、1、2、…、31)が格納される。ベクトルパイプライン109-3(具体的には、バンク113A-3)には、要素「8N+3」(N=0、1、2、…、31)が格納される。ベクトルパイプライン109-4(具体的には、バンク113A-4)には、要素「8N+4」(N=0、1、2、…、31)が格納される。ベクトルパイプライン109-5(具体的には、バンク113A-5)には、要素「8N+5」(N=0、1、2、…、31)が格納される。ベクトルパイプライン109-6(具体的には、バンク113A-6)には、要素「8N+6」(N=0、1、2、…、31)が格納される。また、ベクトルパイプライン109-7(具体的には、バンク113A-7)には、要素「8N+7」(N=0、1、2、…、31)が格納される。 In this embodiment, the element 8N (N = 0, 1, 2,..., 31) is stored in the vector pipeline 109-0 (specifically, the bank 113A-0). Element “8N + 1” (N = 0, 1, 2,..., 31) is stored in vector pipeline 109-1 (specifically, bank 113A-1). Element “8N + 2” (N = 0, 1, 2,..., 31) is stored in vector pipeline 109-2 (specifically, bank 113A-2). The element “8N + 3” (N = 0, 1, 2,..., 31) is stored in the vector pipeline 109-3 (specifically, the bank 113A-3). The element “8N + 4” (N = 0, 1, 2,..., 31) is stored in the vector pipeline 109-4 (specifically, the bank 113A-4). The element “8N + 5” (N = 0, 1, 2,..., 31) is stored in the vector pipeline 109-5 (specifically, the bank 113A-5). The element “8N + 6” (N = 0, 1, 2,..., 31) is stored in the vector pipeline 109-6 (specifically, the bank 113A-6). Further, the element “8N + 7” (N = 0, 1, 2,..., 31) is stored in the vector pipeline 109-7 (specifically, the bank 113A-7).
 つまり、256個の要素が、並び順で要素ごとにインタリーブされて8個のバンク113A-0~113A-7に順番に格納されている。 That is, 256 elements are interleaved for each element in the arrangement order and stored in the eight banks 113A-0 to 113A-7 in order.
 クロスバスイッチ111は、8個の入力ポートと8個の出力ポートとを備える。クロスバスイッチ111の入力ポート数は、ベクトルパイプライン109の個数と同数である。クロスバスイッチ111の出力ポート数は、データ格納部107の個数と同数である。 The crossbar switch 111 has 8 input ports and 8 output ports. The number of input ports of the crossbar switch 111 is the same as the number of vector pipelines 109. The number of output ports of the crossbar switch 111 is the same as the number of data storage units 107.
 ベクトルストアでは、クロスバスイッチ111の入力ポートに、アドレス計算部104からのメモリアドレスと、ベクトルレジスタ113からの要素(書き込みデータ)が入力される。クロスバスイッチ111は、メモリアドレスにて決定されるデータ格納部107に接続された出力ポートに、メモリアドレスと要素(書き込みデータ)とを出力する。 In the vector store, the memory address from the address calculation unit 104 and the element (write data) from the vector register 113 are input to the input port of the crossbar switch 111. The crossbar switch 111 outputs a memory address and an element (write data) to an output port connected to the data storage unit 107 determined by the memory address.
 命令発行制御部102は、並び順が先頭の要素0のアドレスである開始アドレス(以下、単に「開始アドレス」と称する)と、要素間(データ要素間)のストライドを示すストライド情報(以下、単に「ストライド」と称する)とを、ベクトルストア制御部110と、アドレス計算部104と、に提供する。 The instruction issue control unit 102 includes stride information (hereinafter simply referred to as “start address”) indicating the stride between the start address (hereinafter simply referred to as “start address”), which is the address of the first element 0 in the arrangement order, and between elements (between data elements). (Referred to as “stride”) is provided to the vector store control unit 110 and the address calculation unit 104.
 ベクトルストア制御部110は、一般的に制御手段と呼ぶことができる。 The vector store control unit 110 can be generally called control means.
 ベクトルストア制御部110は、命令発行制御部102から、ストライドと開始アドレスとを受け付けると、ブロックサイズ(64B)をストライドで割って処理サイズ(以下「処理グループのサイズ」と称する)を算出する。また、ベクトルストア制御部110は、開始アドレスがいずれかのブロックの先頭のアドレスと一致するかを判断する。 When the vector store control unit 110 receives the stride and the start address from the instruction issuance control unit 102, the vector store control unit 110 divides the block size (64B) by the stride to calculate a processing size (hereinafter referred to as a “processing group size”). Further, the vector store control unit 110 determines whether the start address matches the head address of any block.
 ベクトルストア制御部110は、開始アドレスとストライドとに基づいて、各ベクトルレジスタ113において要素の読み出しを開始する位置を補正するかどうかを判断する。 The vector store control unit 110 determines whether or not to correct the position where the reading of the element is started in each vector register 113 based on the start address and the stride.
 例えば、ベクトルストア制御部110は、ブロックサイズ(64B)と、命令発行制御部102からのストライド(例えば、8B)と、キャッシュメモリ105内のバンク数(8個)と、ベクトルパイプライン数(8個)と、に基づいて、処理グループのサイズを決定する。 For example, the vector store control unit 110 includes a block size (64 B), a stride from the instruction issue control unit 102 (for example, 8 B), the number of banks in the cache memory 105 (eight), and the number of vector pipelines (8 ) And the size of the processing group is determined.
 ベクトルストア制御部110は、各ベクトルレジスタ113において要素の読み出しを開始する位置を補正するかどうかの判断結果(以下、単に「判断結果」と称する)と、処理グループのサイズとを、各ベクトルレジスタ113内の読み出し位置制御部114に伝える。ベクトルストア制御部110については、後で詳しく説明する。 The vector store control unit 110 determines the determination result (hereinafter, simply referred to as “determination result”) as to whether or not to correct the position at which reading of an element is started in each vector register 113 and the size of the processing group. This is transmitted to the read position control unit 114 in 113. The vector store control unit 110 will be described in detail later.
 各読み出し位置制御部114は、処理部114Aに含まれる。処理部114Aは、一般的に処理手段と呼ぶことができる。 Each readout position control unit 114 is included in the processing unit 114A. Processing unit 114A can be generally referred to as processing means.
 処理部114Aは、256個の要素を、処理グループに分けていく。処理グループは、並び順が連続し、かつ、処理グループのサイズとベクトルレジスタ113の個数とを乗算した値の数のデータ要素からなる。 The processing unit 114A divides 256 elements into processing groups. The processing group is composed of data elements having the number of values obtained by multiplying the size of the processing group and the number of vector registers 113 in the arrangement order.
 処理部114Aは、開始アドレスがキャッシュメモリ105内のいずれかのブロックの先頭のアドレスと一致すると判断された場合には、以下の動作を行う。 The processing unit 114 </ b> A performs the following operation when it is determined that the start address matches the head address of any block in the cache memory 105.
 処理部114Aは、256個の要素を処理グループに分けるごとに、その処理グループ内の要素を並び順に処理グループのサイズごとに分けたときに生成されるブロックデータのそれぞれから、1つずつ、要素が並列に読み出されて、その処理グループ内の要素が全て読み出されるように、8個のバンク113Aから並列に要素を読み出しキャッシュメモリ105に転送する。 Each time the processing unit 114A divides 256 elements into processing groups, one element from each of the block data generated when the elements in the processing group are divided into processing group sizes in the order of arrangement, Are read from the eight banks 113A and transferred to the cache memory 105 so that all the elements in the processing group are read out in parallel.
 また、処理部114Aは、開始アドレスが、キャッシュメモリ105内のいずれかのブロック内の先頭のアドレスと一致しない場合には、以下の動作を行う。 Further, the processing unit 114A performs the following operation when the start address does not match the head address in any block in the cache memory 105.
 処理部114Aは、256個の要素を処理グループに分けるごとに、その処理グループ内のデータ要素に開始アドレスとストライドとに基づいてアドレスを割り当ててそのアドレスに基づいてその処理グループ内のデータ要素をブロックのいずれかに対応する9個のブロックデータに分けた際に、その9個のブロックデータの中でアドレスが最も大きい最後部ブロックデータ以外の8個のブロックデータのそれぞれから、1つずつ、要素が並列に読み出されていき、その後、9個のブロックデータのうちアドレスが最も小さい先頭ブロックデータ内の要素が全て読み出されると、9個のブロックデータのうち先頭ブロックデータ以外の8のブロックデータのそれぞれから、1つずつ、読み出されていない要素が並列に読み出されて、その処理グループ内の要素が全て読み出されるように、8個のバンク113Aから並列に要素を読み出しキャッシュメモリ105に転送する。 Each time the processing unit 114A divides 256 elements into processing groups, the data elements in the processing group are assigned addresses based on the start address and stride, and the data elements in the processing group are assigned based on the addresses. When divided into nine block data corresponding to any of the blocks, one of each of the eight block data other than the last block data having the largest address among the nine block data, When the elements are read out in parallel and then all the elements in the first block data with the smallest address among the nine block data are read out, the eight blocks other than the first block data out of the nine block data From each piece of data, one unread element is read in parallel and Elements in the group such that all read and transferred to the cache memory 105 reads out the element in parallel from eight banks 113A.
 各読み出し位置制御部114は、ベクトルストア制御部110の判断結果と、処理グループのサイズと、バンク113Aの番号と、に基づいて、バンク113Aからキャッシュメモリ105に転送される要素(ベクトルのデータ)の読み出し位置を計算する。 Each read position control unit 114 is an element (vector data) transferred from the bank 113A to the cache memory 105 based on the determination result of the vector store control unit 110, the size of the processing group, and the number of the bank 113A. The reading position of is calculated.
 各読み出し位置制御部114は、その読み出し位置を、アドレス計算部104に提供する。 Each read position control unit 114 provides the read position to the address calculation unit 104.
 また、各読み出し位置制御部114は、バンク113Aにおける読み出し位置から、要素(データ)を読み出して、その要素を書き込みデータとして、クロスバスイッチ111の入力ポートに入力する。 Further, each read position control unit 114 reads an element (data) from the read position in the bank 113A, and inputs the element as write data to the input port of the crossbar switch 111.
 読み出し位置制御部114については後で詳しく説明する。 The read position control unit 114 will be described in detail later.
 アドレス計算部104は、命令発行制御部102からの開始アドレスおよびストライドと、各読み出し位置制御部114からの読み出し位置と、に基づいて、書き込みデータがストアされる書き込み用メモリアドレスを計算する。 The address calculation unit 104 calculates a write memory address in which write data is stored based on the start address and stride from the instruction issue control unit 102 and the read position from each read position control unit 114.
 アドレス計算部104は、書き込み用メモリアドレスを、各ベクトルパイプライン109からの書き込みデータと一緒に、クロスバスイッチ111の入力ポートに入力する。アドレス計算部104については後で詳しく説明する。 The address calculation unit 104 inputs the write memory address to the input port of the crossbar switch 111 together with the write data from each vector pipeline 109. The address calculation unit 104 will be described in detail later.
 図4は、ベクトルストア制御部110と読み出し位置制御部114を示した図である。 FIG. 4 is a diagram showing the vector store control unit 110 and the read position control unit 114.
 図4において、ベクトルストア制御部110は、開始アドレスの下位6~4bitのデータを格納する開始アドレスの下位6~4bitレジスタ(以下、単に「開始アドレスレジスタ」と称する)201と、ストライドレジスタ202と、読み出し開始位置補正計算回路(以下、単に「計算回路」と称する)203と、処理グループサイズ決定回路204と、を含む。 In FIG. 4, the vector store control unit 110 includes a lower 6 to 4 bit register (hereinafter simply referred to as “start address register”) 201 for storing lower 6 to 4 bit data of a start address, a stride register 202, , A read start position correction calculation circuit (hereinafter simply referred to as “calculation circuit”) 203 and a processing group size determination circuit 204.
 開始アドレスレジスタ201は、命令発行制御部102からの開始アドレスの下位6~4ビットのデータを格納する。開始アドレスの下位6~4ビットのデータは、ブロック内での要素0の位置を示す。 The start address register 201 stores lower 6 to 4 bit data of the start address from the instruction issue control unit 102. The lower 6 to 4 bits of data of the start address indicate the position of element 0 in the block.
 ストライドレジスタ202は、命令発行制御部102からのストライドを格納する。 The stride register 202 stores a stride from the instruction issue control unit 102.
 計算回路203は、開始アドレスレジスタ201内の開始アドレスの下位6~4ビットのデータと、ストライドレジスタ202内のストライドと、に基づいて、表1に示すような計算を行い、読み出し開始位置が補正されるベクトルパイプライン109を決定する。 The calculation circuit 203 performs the calculation shown in Table 1 based on the lower 6 to 4 bit data of the start address in the start address register 201 and the stride in the stride register 202, and the read start position is corrected. The vector pipeline 109 to be executed is determined.
Figure JPOXMLDOC01-appb-T000001
 計算回路203は、各ベクトルパイプライン109の読み出し位置制御部114に“0”または“1”の補正信号を供給する。本実施形態では、補正信号が“1”であることは、読み出し開始位置の補正を行うことを示す。また、補正信号が“0”であることは、読み出し開始位置の補正を行わないことを示す。
Figure JPOXMLDOC01-appb-T000001
The calculation circuit 203 supplies a correction signal of “0” or “1” to the read position control unit 114 of each vector pipeline 109. In the present embodiment, that the correction signal is “1” indicates that the reading start position is corrected. The correction signal “0” indicates that the reading start position is not corrected.
 つまり、計算回路203は、開始アドレスがキャッシュメモリ105内のいずれかのブロックの先頭のアドレスと一致すると判定すると、全ての読み出し位置制御部114に“0”の補正信号を供給する。また、計算回路203は、開始アドレスがキャッシュメモリ105内のいずれかのブロックの先頭のアドレスと一致しないと判定すると、少なくとも1つの読み出し位置制御部114に“1”の補正信号を供給する。 That is, when the calculation circuit 203 determines that the start address matches the head address of any block in the cache memory 105, the calculation circuit 203 supplies a correction signal of “0” to all the read position control units 114. If the calculation circuit 203 determines that the start address does not match the head address of any block in the cache memory 105, the calculation circuit 203 supplies a correction signal of “1” to at least one read position control unit 114.
 処理グループサイズ決定回路204は、ストライドレジスタ202内のストライドに基づいて、表2に示すような計算を行って、処理グループのサイズを決定する。 The processing group size determination circuit 204 performs the calculation shown in Table 2 based on the stride in the stride register 202 to determine the size of the processing group.
 表2は、ベクトルパイプライン数が8、キャッシュメモリ105内の1ブロックに格納される要素数が8、キャッシュメモリ105のバンク数、すなわち、データ格納部107の数が8である本実施形態での、各ストライドに対する処理グループのサイズを示す。 Table 2 shows the embodiment in which the number of vector pipelines is 8, the number of elements stored in one block in the cache memory 105 is 8, the number of banks in the cache memory 105, that is, the number of data storage units 107 is 8. Shows the size of the processing group for each stride.
Figure JPOXMLDOC01-appb-T000002
 一般には、
処理グループのサイズ=
(ブロックあたりの要素数×キャッシュメモリのバンク数)÷ベクトルパイプライン数
 なお、ブロックあたりの要素数=ブロックサイズ÷ストライド
 という計算を、処理グループサイズ決定回路204が行う。
Figure JPOXMLDOC01-appb-T000002
In general,
Processing group size =
The number of elements per block × the number of banks in the cache memory ÷ the number of vector pipelines Note that the processing group size determination circuit 204 performs the calculation of the number of elements per block = block size ÷ stride.
 処理グループのサイズについては、後で詳しく説明する。 The size of the processing group will be described in detail later.
 処理グループサイズ決定回路204は、各ベクトルパイプライン109内の読み出し位置制御部114に、処理グループのサイズを供給する。 The processing group size determination circuit 204 supplies the processing group size to the read position control unit 114 in each vector pipeline 109.
 次に、読み出し位置制御部114について説明する。 Next, the reading position control unit 114 will be described.
 読み出し位置制御部114は、各ベクトルパイプライン109に設けられている。読み出し位置制御部114は、読み出し開始位置決定回路205と、パイプライン番号レジスタ206と、読み出し位置オフセットレジスタ207と、読み出し位置ベースレジスタ208と、デクリメンタ209と、モジュロ演算器210と、マルチプレクサ(MUX)211と、加算器212と、マルチプレクサ(MUX)213と、加算器214と、デクリメンタ215と、カウンタ216と、有効読み出し位置レジスタ218と、比較器219と、これらを制御する制御回路217と、を含む。 The read position control unit 114 is provided in each vector pipeline 109. The read position control unit 114 includes a read start position determination circuit 205, a pipeline number register 206, a read position offset register 207, a read position base register 208, a decrementer 209, a modulo calculator 210, and a multiplexer (MUX). 211, an adder 212, a multiplexer (MUX) 213, an adder 214, a decrementer 215, a counter 216, an effective read position register 218, a comparator 219, and a control circuit 217 for controlling them. Including.
 パイプライン番号レジスタ206は、パイプライン番号レジスタ206を含むベクトルパイプライン109の番号を格納する。 The pipeline number register 206 stores the number of the vector pipeline 109 including the pipeline number register 206.
 本実施形態では、ベクトルパイプライン109は8個なので、パイプライン番号レジスタ206には、「0」~「7」のいずれかが格納される。 In this embodiment, since there are eight vector pipelines 109, any one of “0” to “7” is stored in the pipeline number register 206.
 ベクトルパイプライン109-0内のパイプライン番号レジスタ206には「0」が格納される。ベクトルパイプライン109-1内のパイプライン番号レジスタ206には「1」が格納される。 “0” is stored in the pipeline number register 206 in the vector pipeline 109-0. “1” is stored in the pipeline number register 206 in the vector pipeline 109-1.
 また、ベクトルパイプライン109-2内のパイプライン番号レジスタ206には「2」が格納される。ベクトルパイプライン109-3内のパイプライン番号レジスタ206には「3」が格納される。 Also, “2” is stored in the pipeline number register 206 in the vector pipeline 109-2. “3” is stored in the pipeline number register 206 in the vector pipeline 109-3.
 また、ベクトルパイプライン109-4内のパイプライン番号レジスタ206には「4」が格納される。ベクトルパイプライン109-5内のパイプライン番号レジスタ206には「5」が格納される。 Also, “4” is stored in the pipeline number register 206 in the vector pipeline 109-4. “5” is stored in the pipeline number register 206 in the vector pipeline 109-5.
 また、ベクトルパイプライン109-6内のパイプライン番号レジスタ206には「6」が格納される。ベクトルパイプライン109-7内のパイプライン番号レジスタ206には「7」が格納される。 Also, “6” is stored in the pipeline number register 206 in the vector pipeline 109-6. “7” is stored in the pipeline number register 206 in the vector pipeline 109-7.
 読み出し開始位置決定回路205は、計算回路203からの補正信号と、パイプライン番号レジスタ206からのパイプライン番号と、に基づいて、読み出し開始位置を決定する。 The read start position determination circuit 205 determines the read start position based on the correction signal from the calculation circuit 203 and the pipeline number from the pipeline number register 206.
 読み出し開始位置決定回路205は、補正信号が“0”である場合には、読み出し開始位置として、「パイプライン番号」を出力する。読み出し開始位置決定回路205は、補正信号が“1”である場合には、読み出し開始位置として、「パイプライン番号-1」を出力する。 When the correction signal is “0”, the read start position determining circuit 205 outputs “pipeline number” as the read start position. When the correction signal is “1”, the read start position determination circuit 205 outputs “pipeline number−1” as the read start position.
 次に、読み出し位置制御部114の動作について、図4と図5のフローチャートを参照しながら説明する。 Next, the operation of the read position control unit 114 will be described with reference to the flowcharts of FIGS.
 まず、制御回路217は、マルチプレクサ(MUX)213に「0」を選択させて、読み出し位置ベースレジスタ208に「0」を書き込む(ステップ301)。 First, the control circuit 217 causes the multiplexer (MUX) 213 to select “0” and writes “0” to the read position base register 208 (step 301).
 次に、制御回路217は、ベクトルストア制御部110からの処理グループのサイズから「1」を引く演算を、デクリメンタ215に実行させ、デクリメンタ215の出力(処理グループのサイズ-1)を、カウンタ216の初期値として設定する(ステップ302)。 Next, the control circuit 217 causes the decrementer 215 to perform an operation of subtracting “1” from the size of the processing group from the vector store control unit 110, and outputs the output of the decrementer 215 (processing group size−1) to the counter 216. Is set as an initial value (step 302).
 そして、制御回路217は、マルチプレクサ(MUX)211に、読み出し開始位置決定回路205が決定した読み出し開始位置を選択させる。 Then, the control circuit 217 causes the multiplexer (MUX) 211 to select the read start position determined by the read start position determining circuit 205.
 続いて、制御回路217は、マルチプレクサ(MUX)211が選択した読み出し開始位置に対して処理グループのサイズのモジュロをとる演算を、モジュロ演算器210に実行させる。 Subsequently, the control circuit 217 causes the modulo arithmetic unit 210 to perform an operation for taking the modulo of the size of the processing group with respect to the read start position selected by the multiplexer (MUX) 211.
 続いて、制御回路217は、モジュロ演算器210の演算結果を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む(ステップ303)。 Subsequently, the control circuit 217 writes the calculation result of the modulo calculator 210 in the read position offset register 207 in response to the clock (step 303).
 続いて、加算器214は、読み出し位置オフセットレジスタ207内の値と、読み出し位置ベースレジスタ208内の値と、を加算し、その加算結果を、最初の読み出し位置として用いて、バンク113Aから最初の要素を読み出す。 Subsequently, the adder 214 adds the value in the reading position offset register 207 and the value in the reading position base register 208, and uses the addition result as the first reading position to start from the bank 113A. Read an element.
 また、読み出し位置は、アドレス計算部104にも送られる。アドレス計算部104は、その読み出し位置と、命令発行制御部102からのベクトルストアの開始アドレスおよびストライドと、に基づいて、最初の要素がストアされる書き込み用メモリアドレスを計算し、その計算結果を出力する。 The read position is also sent to the address calculation unit 104. The address calculation unit 104 calculates the memory address for writing where the first element is stored based on the read position and the start address and stride of the vector store from the instruction issue control unit 102, and calculates the calculation result. Output.
 次に、制御回路217は、カウンタ216の値が「0」かどうかを調べる(ステップ304)。 Next, the control circuit 217 checks whether the value of the counter 216 is “0” (step 304).
 カウンタ216の値が0でない場合には(ステップ305)、制御回路217は、読み出し位置オフセットレジスタ207内の値から「1」を引く演算を、デクリメンタ209に実行させる。 If the value of the counter 216 is not 0 (step 305), the control circuit 217 causes the decrementer 209 to perform an operation of subtracting “1” from the value in the reading position offset register 207.
 続いて、制御回路217は、マルチプレクサ(MUX)211に、デクリメンタ209の出力を選択させる。 Subsequently, the control circuit 217 causes the multiplexer (MUX) 211 to select the output of the decrementer 209.
 続いて、制御回路217は、マルチプレクサ(MUX)211が選択した値に対して、処理グループのサイズのモジュロをとる演算を、モジュロ演算器210に実行させる。 Subsequently, the control circuit 217 causes the modulo arithmetic unit 210 to perform an operation for taking the modulo of the size of the processing group with respect to the value selected by the multiplexer (MUX) 211.
 続いて、制御回路217は、モジュロ演算器210の演算結果を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む(ステップ306)。 Subsequently, the control circuit 217 writes the calculation result of the modulo calculator 210 in the read position offset register 207 in response to the clock (step 306).
 続いて、加算器214は、読み出し位置オフセットレジスタ207内の値と、読み出し位置ベースレジスタ208内の値と、を加算し、その加算結果を、次の読み出し位置として用いて、バンク113Aから次の要素を読み出す。 Subsequently, the adder 214 adds the value in the read position offset register 207 and the value in the read position base register 208, and uses the addition result as the next read position, from the bank 113A. Read an element.
 また、読み出し位置は、アドレス計算部104にも送られる。アドレス計算部104は、その読み出し位置と、命令発行制御部102からのベクトルストアの開始アドレスおよびストライドと、に基づいて、次の要素がストアされる書き込み用メモリアドレスを計算し、その計算結果を出力する。 The read position is also sent to the address calculation unit 104. The address calculation unit 104 calculates a write memory address at which the next element is stored based on the read position and the vector store start address and stride from the instruction issue control unit 102, and calculates the calculation result. Output.
 次に、制御回路217は、カウンタ216の値をデクリメントする(ステップ307)。そして、制御回路217は、カウンタ216の値が「0」かどうかを調べる(ステップ304)。 Next, the control circuit 217 decrements the value of the counter 216 (step 307). Then, the control circuit 217 checks whether the value of the counter 216 is “0” (step 304).
 カウンタ216の値が「0」の場合には(ステップ308)、制御回路217は、読み出し位置ベースレジスタ208の値に処理グループのサイズを加算する処理を、加算器212に実行させ、マルチプレクサ(MUX)213を介して、その値を、読み出し位置ベースレジスタ208に書き込む(ステップ309)。 When the value of the counter 216 is “0” (step 308), the control circuit 217 causes the adder 212 to execute a process of adding the size of the processing group to the value of the read position base register 208, and the multiplexer (MUX) ) The value is written into the read position base register 208 via 213 (step 309).
 そして、制御回路217は、読み出し位置ベースレジスタ208の値が有効な読み出し位置にあるかどうかを調べる(ステップ310)。本実施形態では、制御回路217は、有効読み出し位置レジスタ218の値と、読み出し位置ベースレジスタ208の値と、を比較することにより、読み出し位置ベースレジスタ208の値が有効な読み出し位置かどうかを判断する。 Then, the control circuit 217 checks whether or not the value of the read position base register 208 is at a valid read position (step 310). In this embodiment, the control circuit 217 determines whether or not the value of the read position base register 208 is a valid read position by comparing the value of the valid read position register 218 and the value of the read position base register 208. To do.
 読み出し位置ベースレジスタ208の値が有効である場合(ステップ311)、制御回路217は、ステップ302に戻る。読み出し位置ベースレジスタ208の値が有効でない場合(ステップ312)、制御回路217は、処理を終了する。 When the value of the read position base register 208 is valid (step 311), the control circuit 217 returns to step 302. If the value of the read position base register 208 is not valid (step 312), the control circuit 217 ends the process.
 有効読み出し位置レジスタ218には、ベクトル長(要素0から要素255を加算することによって形成されるベクトルの長さ)とベクトルパイプライン番号から計算される最大の読み出し位置が格納される。 The effective read position register 218 stores the maximum read position calculated from the vector length (the length of the vector formed by adding the elements 0 to 255) and the vector pipeline number.
 比較器219は、有効読み出し位置レジスタ218の値と、加算器214からの読み出し位置と、を比較する。 The comparator 219 compares the value of the valid read position register 218 with the read position from the adder 214.
 読み出し位置が、有効読み出し位置レジスタ218の値よりも大きな場合には、比較器219は、バンク113Aから読み出された要素が無効であることを示す無効信号を、クロスバスイッチ111に出力する。クロスバスイッチ111は、無効であることが伝えられた要素を処理しない。 When the read position is larger than the value of the valid read position register 218, the comparator 219 outputs an invalid signal to the crossbar switch 111 indicating that the element read from the bank 113A is invalid. The crossbar switch 111 does not process an element that is reported to be invalid.
 有効読み出し位置レジスタ218に設定される最大の読み出し位置は、以下のような式で計算される。 The maximum read position set in the valid read position register 218 is calculated by the following formula.
 ベクトル長modベクトルパイプライン数<ベクトルパイプライン番号なら、
ベクトル長÷ベクトルパイプライン数-1
ベクトル長 mod ベクトルパイプライン数 ≧ ベクトルパイプライン番号なら、
ベクトル長÷ベクトルパイプライン数
 次に、具体的な値を使って、読み出し位置制御部114、特には制御回路217の処理を説明する。
If vector length mod number of vector pipelines <vector pipeline number,
Vector length ÷ number of vector pipelines -1
Vector length mod Number of vector pipelines ≥ Vector pipeline number
Vector length / number of vector pipelines Next, processing of the read position control unit 114, particularly the control circuit 217, will be described using specific values.
 ストライドは「8B」で、開始アドレスの下位6~4ビット目が「000」の場合で、ベクトルパイプライン109-1の読み出し制御部114での処理を説明する。 When the stride is “8B” and the lower 6th to 4th bits of the start address are “000”, processing in the read control unit 114 of the vector pipeline 109-1 will be described.
 ベクトル長は128要素とする。ベクトルパイプラインは8個あるので、有効な読み出し位置レジスタ218には「15」が設定される。 The vector length is 128 elements. Since there are eight vector pipelines, “15” is set in the effective read position register 218.
 まず、計算回路203は、表1に従って、ベクトルパイプライン109-1に、補正信号“0”を出力する。 First, the calculation circuit 203 outputs the correction signal “0” to the vector pipeline 109-1 according to Table 1.
 また、処理グループサイズ決定回路204は、表2に従って、処理グループのサイズとして「8」を出力する。 Also, the processing group size determination circuit 204 outputs “8” as the size of the processing group according to Table 2.
 まず、制御回路217は、読み出し位置ベースレジスタ208に、「0」を書き込む(ステップ301)。 First, the control circuit 217 writes “0” in the read position base register 208 (step 301).
 続いて、制御回路217は、カウンタ216に、初期値として「8-1=7」を設定する(ステップ302)。 Subsequently, the control circuit 217 sets “8-1 = 7” as an initial value in the counter 216 (step 302).
 補正信号が“0”で、パイプライン番号レジスタ206内の値が「1」なので、読み出し開始位置決定回路205は、「1」を出力する。 Since the correction signal is “0” and the value in the pipeline number register 206 is “1”, the read start position determination circuit 205 outputs “1”.
 続いて、制御回路217は、マルチプレクサ(MUX)211に、読み出し開始位置決定回路205からの「1」を選択させる。 Subsequently, the control circuit 217 causes the multiplexer (MUX) 211 to select “1” from the read start position determination circuit 205.
 続いて、制御回路217は、マルチプレクサ(MUX)211からの「1」に対して、モジュロ8を行う演算を、モジュロ演算器210に実行させる。 Subsequently, the control circuit 217 causes the modulo arithmetic unit 210 to perform an operation for performing modulo 8 on “1” from the multiplexer (MUX) 211.
 続いて、制御回路217は、モジュロ演算器210の演算結果「1」を、読み出し位置オフセットレジスタ207に書き込む(ステップ303)。 Subsequently, the control circuit 217 writes the calculation result “1” of the modulo calculator 210 in the read position offset register 207 (step 303).
 その結果、加算器214は、1個目の要素の読み出し位置として、「0+1=1」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。 As a result, the adder 214 outputs “0 + 1 = 1” as the reading position of the first element. Since the value of the valid read position register 218 is “15”, no invalid signal is sent to the crossbar switch 111.
 次に、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「7」なので、制御回路217は、ステップ306に進む。 Next, in step 304, the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “7”, the control circuit 217 proceeds to Step 306.
 ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「1」から「1」を引いた値「0」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「0」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。 In step 306, the control circuit 217 performs a modulo 8 operation on the value “0” obtained by subtracting “1” from the value “1” in the read position offset register 207 using the modulo calculator 210. The calculation result “0” is written to the read position offset register 207 in response to the clock.
 その結果、加算器214は、2個目の要素の読み出し位置として、「0+0=0」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。 As a result, the adder 214 outputs “0 + 0 = 0” as the reading position of the second element. Since the value of the valid read position register 218 is “15”, no invalid signal is sent to the crossbar switch 111.
 次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「7」だったので、カウンタ216の値は「6」となる。 Next, in step 307, the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “7”, the value of the counter 216 is “6”.
 続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「6」なので、制御回路217は、ステップ306に進む。 Subsequently, in step 304, the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “6”, the control circuit 217 proceeds to Step 306.
 ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「0」から「1」を引いた値「-1」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「7」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。 In step 306, the control circuit 217 performs a modulo 8 operation on the value “−1” obtained by subtracting “1” from the value “0” in the read position offset register 207 using the modulo calculator 210. The calculation result “7” is written in the read position offset register 207 in response to the clock.
 その結果、加算器214は、3個目の要素の読み出し位置として、「0+7=7」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。 As a result, the adder 214 outputs “0 + 7 = 7” as the reading position of the third element. Since the value of the valid read position register 218 is “15”, no invalid signal is sent to the crossbar switch 111.
 次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「6」だったので、カウンタ216の値は「5」となる。 Next, in step 307, the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “6”, the value of the counter 216 is “5”.
 続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「5」なので、制御回路217は、ステップ306に進む。 Subsequently, in step 304, the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “5”, the control circuit 217 proceeds to Step 306.
 ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「7」から「1」を引いた値「6」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「6」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。 In step 306, the control circuit 217 performs a modulo 8 operation on the value “6” obtained by subtracting “1” from the value “7” in the reading position offset register 207 using the modulo calculator 210. The calculation result “6” is written to the read position offset register 207 in response to the clock.
 その結果、加算器214は、4個目の要素の読み出し位置として、「0+6=6」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。 As a result, the adder 214 outputs “0 + 6 = 6” as the reading position of the fourth element. Since the value of the valid read position register 218 is “15”, no invalid signal is sent to the crossbar switch 111.
 次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「5」だったので、カウンタ216の値は「4」となる。 Next, in step 307, the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “5”, the value of the counter 216 is “4”.
 続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「4」なので、制御回路217は、ステップ306に進む。 Subsequently, in step 304, the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “4”, the control circuit 217 proceeds to Step 306.
 ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「6」から「1」を引いた値「5」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「5」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。 In step 306, the control circuit 217 performs a modulo 8 operation on the value “5” obtained by subtracting “1” from the value “6” in the read position offset register 207 using the modulo calculator 210. The calculation result “5” is written to the read position offset register 207 in response to the clock.
 その結果、加算器214は、5個目の要素の読み出し位置として、「0+5=5」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。 As a result, the adder 214 outputs “0 + 5 = 5” as the reading position of the fifth element. Since the value of the valid read position register 218 is “15”, no invalid signal is sent to the crossbar switch 111.
 次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「4」だったので、カウンタ216の値は「3」となる。 Next, in step 307, the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “4”, the value of the counter 216 is “3”.
 続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「3」なので、制御回路217は、ステップ306に進む。 Subsequently, in step 304, the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “3”, the control circuit 217 proceeds to Step 306.
 ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「5」から「1」を引いた値「4」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「4」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。 In step 306, the control circuit 217 performs a modulo 8 operation on the value “4” obtained by subtracting “1” from the value “5” in the read position offset register 207 using the modulo calculator 210. The calculation result “4” is written in the read position offset register 207 in response to the clock.
 その結果、加算器214は、6個目の要素の読み出し位置として、「0+4=4」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。 As a result, the adder 214 outputs “0 + 4 = 4” as the reading position of the sixth element. Since the value of the valid read position register 218 is “15”, no invalid signal is sent to the crossbar switch 111.
 次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「3」だったので、カウンタ216の値は「2」となる。 Next, in step 307, the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “3”, the value of the counter 216 is “2”.
 続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「2」なので、制御回路217は、ステップ306に進む。 Subsequently, in step 304, the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “2”, the control circuit 217 proceeds to Step 306.
 ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「4」から「1」を引いた値「3」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「3」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。 In step 306, the control circuit 217 performs a modulo 8 operation on the value “3” obtained by subtracting “1” from the value “4” in the reading position offset register 207 using the modulo calculator 210. The calculation result “3” is written to the read position offset register 207 in response to the clock.
 その結果、加算器214は、7個目の要素の読み出し位置として、「0+3=3」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。 As a result, the adder 214 outputs “0 + 3 = 3” as the reading position of the seventh element. Since the value of the valid read position register 218 is “15”, no invalid signal is sent to the crossbar switch 111.
 次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「2」だったので、カウンタ216の値は「1」となる。 Next, in step 307, the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “2”, the value of the counter 216 is “1”.
 続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「1」なので、制御回路217は、ステップ306に進む。 Subsequently, in step 304, the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “1”, the control circuit 217 proceeds to Step 306.
 ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「3」から「1」を引いた値「2」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「2」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。 In step 306, the control circuit 217 performs a modulo 8 operation on the value “2” obtained by subtracting “1” from the value “3” in the read position offset register 207 using the modulo calculator 210. The calculation result “2” is written in the read position offset register 207 in response to the clock.
 その結果、加算器214は、8個目の要素の読み出し位置として、「0+2=2」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。 As a result, the adder 214 outputs “0 + 2 = 2” as the reading position of the eighth element. Since the value of the valid read position register 218 is “15”, no invalid signal is sent to the crossbar switch 111.
 次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「1」だったので、カウンタ216の値は「0」となる。 Next, in step 307, the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “1”, the value of the counter 216 is “0”.
 続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「0」なので、制御回路217は、ステップ309に進む。 Subsequently, in step 304, the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “0”, the control circuit 217 proceeds to Step 309.
 ステップ309では、制御回路217は、読み出し位置ベースレジスタ208の値「0」に処理グループのサイズ「8」を加算する演算を、加算器212に実行させる。続いて、制御回路217は、マルチプレクサ(MUX)211に、加算器212の演算結果「8」を選択させ、加算器212の演算結果「8」を、読み出し位置ベースレジスタ208に書き込む。 In step 309, the control circuit 217 causes the adder 212 to execute an operation of adding the processing group size “8” to the value “0” of the reading position base register 208. Subsequently, the control circuit 217 causes the multiplexer (MUX) 211 to select the calculation result “8” of the adder 212 and writes the calculation result “8” of the adder 212 to the read position base register 208.
 続いて、ステップ310で、制御回路217は、読み出し位置ベースレジスタ208の値が有効かどうかを調べる。読み出し位置ベースレジスタ208の値「8」は、有効読み出し位置レジスタ218の値「15」よりも小さいので、制御回路217は、読み出し位置ベースレジスタ208の値は有効であると判断して、ステップ302に進む。 Subsequently, in step 310, the control circuit 217 checks whether the value of the read position base register 208 is valid. Since the value “8” of the read position base register 208 is smaller than the value “15” of the valid read position register 218, the control circuit 217 determines that the value of the read position base register 208 is valid, and step 302. Proceed to
 次に、ステップ302で、制御回路217は、カウンタ216に、初期値として「8-1=7」を設定する。 Next, in step 302, the control circuit 217 sets “8-1 = 7” as an initial value in the counter 216.
 補正信号が“0”で、パイプライン番号レジスタ206内の値が「1」なので、読み出し開始位置決定回路205は、「1」を出力する。 Since the correction signal is “0” and the value in the pipeline number register 206 is “1”, the read start position determination circuit 205 outputs “1”.
 続いて、制御回路217は、マルチプレクサ(MUX)211に、読み出し開始位置決定回路205からの「1」を選択させる。 Subsequently, the control circuit 217 causes the multiplexer (MUX) 211 to select “1” from the read start position determination circuit 205.
 続いて、制御回路217は、マルチプレクサ(MUX)211からの「1」に対して、モジュロ8を行う演算を、モジュロ演算器210に実行させる。 Subsequently, the control circuit 217 causes the modulo arithmetic unit 210 to perform an operation for performing modulo 8 on “1” from the multiplexer (MUX) 211.
 続いて、制御回路217は、モジュロ演算器210の演算結果「1」を、読み出し位置オフセットレジスタ207に書き込む(ステップ303)。 Subsequently, the control circuit 217 writes the calculation result “1” of the modulo calculator 210 in the read position offset register 207 (step 303).
 その結果、加算器214は、9個目の要素の読み出し位置として、「8+1=9」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。 As a result, the adder 214 outputs “8 + 1 = 9” as the reading position of the ninth element. Since the value of the valid read position register 218 is “15”, no invalid signal is sent to the crossbar switch 111.
 次に、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「7」なので、制御回路217は、ステップ306に進む。 Next, in step 304, the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “7”, the control circuit 217 proceeds to Step 306.
 ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「1」から「1」を引いた値「0」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「0」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。 In step 306, the control circuit 217 performs a modulo 8 operation on the value “0” obtained by subtracting “1” from the value “1” in the read position offset register 207 using the modulo calculator 210. The calculation result “0” is written to the read position offset register 207 in response to the clock.
 その結果、加算器214は、10個目の要素の読み出し位置として、「8+0=8」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。 As a result, the adder 214 outputs “8 + 0 = 8” as the reading position of the tenth element. Since the value of the valid read position register 218 is “15”, no invalid signal is sent to the crossbar switch 111.
 次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「7」だったので、カウンタ216の値は「6」となる。 Next, in step 307, the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “7”, the value of the counter 216 is “6”.
 続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「6」なので、制御回路217は、ステップ306に進む。 Subsequently, in step 304, the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “6”, the control circuit 217 proceeds to Step 306.
 ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「0」から「1」を引いた値「-1」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「7」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。 In step 306, the control circuit 217 performs a modulo 8 operation on the value “−1” obtained by subtracting “1” from the value “0” in the read position offset register 207 using the modulo calculator 210. The calculation result “7” is written in the read position offset register 207 in response to the clock.
 その結果、加算器214は、11個目の要素の読み出し位置として、「8+7=15」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。 As a result, the adder 214 outputs “8 + 7 = 15” as the reading position of the eleventh element. Since the value of the valid read position register 218 is “15”, no invalid signal is sent to the crossbar switch 111.
 次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「6」だったので、カウンタ216の値は「5」となる。 Next, in step 307, the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “6”, the value of the counter 216 is “5”.
 続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「5」なので、制御回路217は、ステップ306に進む。 Subsequently, in step 304, the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “5”, the control circuit 217 proceeds to Step 306.
 ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「7」から「1」を引いた値「6」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「6」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。 In step 306, the control circuit 217 performs a modulo 8 operation on the value “6” obtained by subtracting “1” from the value “7” in the reading position offset register 207 using the modulo calculator 210. The calculation result “6” is written to the read position offset register 207 in response to the clock.
 その結果、加算器214は、12個目の要素の読み出し位置として、「8+6=14」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。 As a result, the adder 214 outputs “8 + 6 = 14” as the reading position of the twelfth element. Since the value of the valid read position register 218 is “15”, no invalid signal is sent to the crossbar switch 111.
 次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「5」だったので、カウンタ216の値は「4」となる。 Next, in step 307, the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “5”, the value of the counter 216 is “4”.
 続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「4」なので、制御回路217は、ステップ306に進む。 Subsequently, in step 304, the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “4”, the control circuit 217 proceeds to Step 306.
 ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「6」から「1」を引いた値「5」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「5」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。 In step 306, the control circuit 217 performs a modulo 8 operation on the value “5” obtained by subtracting “1” from the value “6” in the read position offset register 207 using the modulo calculator 210. The calculation result “5” is written to the read position offset register 207 in response to the clock.
 その結果、加算器214は、13個目の要素の読み出し位置として、「8+5=13」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。 As a result, the adder 214 outputs “8 + 5 = 13” as the reading position of the thirteenth element. Since the value of the valid read position register 218 is “15”, no invalid signal is sent to the crossbar switch 111.
 次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「4」だったので、カウンタ216の値は「3」となる。 Next, in step 307, the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “4”, the value of the counter 216 is “3”.
 続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「3」なので、制御回路217は、ステップ306に進む。 Subsequently, in step 304, the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “3”, the control circuit 217 proceeds to Step 306.
 ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「5」から「1」を引いた値「4」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「4」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。 In step 306, the control circuit 217 performs a modulo 8 operation on the value “4” obtained by subtracting “1” from the value “5” in the read position offset register 207 using the modulo calculator 210. The calculation result “4” is written in the read position offset register 207 in response to the clock.
 その結果、加算器214は、14個目の要素の読み出し位置として、「8+4=12」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。 As a result, the adder 214 outputs “8 + 4 = 12” as the reading position of the 14th element. Since the value of the valid read position register 218 is “15”, no invalid signal is sent to the crossbar switch 111.
 次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「3」だったので、カウンタ216の値は「2」となる。 Next, in step 307, the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “3”, the value of the counter 216 is “2”.
 続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「2」なので、制御回路217は、ステップ306に進む。 Subsequently, in step 304, the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “2”, the control circuit 217 proceeds to Step 306.
 ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「4」から「1」を引いた値「3」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「3」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。 In step 306, the control circuit 217 performs a modulo 8 operation on the value “3” obtained by subtracting “1” from the value “4” in the reading position offset register 207 using the modulo calculator 210. The calculation result “3” is written to the read position offset register 207 in response to the clock.
 その結果、加算器214は、15個目の要素の読み出し位置として、「8+3=11」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。 As a result, the adder 214 outputs “8 + 3 = 11” as the reading position of the 15th element. Since the value of the valid read position register 218 is “15”, no invalid signal is sent to the crossbar switch 111.
 次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「2」だったので、カウンタ216の値は「1」となる。 Next, in step 307, the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “2”, the value of the counter 216 is “1”.
 続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「1」なので、制御回路217は、ステップ306に進む。 Subsequently, in step 304, the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “1”, the control circuit 217 proceeds to Step 306.
 ステップ306では、制御回路217は、読み出し位置オフセットレジスタ207の値「3」から「1」を引いた値「2」に対して、モジュロ演算器210を用いて、モジュロ8の演算を行い、その演算結果「2」を、クロックを契機に、読み出し位置オフセットレジスタ207に書き込む。 In step 306, the control circuit 217 performs a modulo 8 operation on the value “2” obtained by subtracting “1” from the value “3” in the read position offset register 207 using the modulo calculator 210. The calculation result “2” is written in the read position offset register 207 in response to the clock.
 その結果、加算器214は、16個目の要素の読み出し位置として、「8+2=10」を出力する。なお、有効読み出し位置レジスタ218の値は「15」なので、クロスバスイッチ111には、無効信号は送られない。 As a result, the adder 214 outputs “8 + 2 = 10” as the reading position of the 16th element. Since the value of the valid read position register 218 is “15”, no invalid signal is sent to the crossbar switch 111.
 次に、ステップ307で、制御回路217は、カウンタ216の値をデクリメントする。カウンタ216の値は「1」だったので、カウンタ216の値は「0」となる。 Next, in step 307, the control circuit 217 decrements the value of the counter 216. Since the value of the counter 216 is “1”, the value of the counter 216 is “0”.
 続いて、ステップ304で、制御回路217は、カウンタ216の値と「0」とを比較する。カウンタ216の値は「0」なので、制御回路217は、ステップ309に進む。 Subsequently, in step 304, the control circuit 217 compares the value of the counter 216 with “0”. Since the value of the counter 216 is “0”, the control circuit 217 proceeds to Step 309.
 ステップ309では、制御回路217は、読み出し位置ベースレジスタ208の値「8」に処理グループのサイズ「8」を加算する演算を、加算器212に実行させる。続いて、制御回路217は、マルチプレクサ(MUX)211に、加算器212の演算結果「16」を選択させ、加算器212の演算結果「16」を、読み出し位置ベースレジスタ208に書き込む。 In step 309, the control circuit 217 causes the adder 212 to perform an operation of adding the processing group size “8” to the value “8” of the reading position base register 208. Subsequently, the control circuit 217 causes the multiplexer (MUX) 211 to select the operation result “16” of the adder 212 and writes the operation result “16” of the adder 212 to the read position base register 208.
 続いて、ステップ310で、制御回路217は、読み出し位置ベースレジスタ208の値が有効かどうかを調べる。読み出し位置ベースレジスタ208の値「16」は、有効読み出し位置レジスタ218の値「15」よりも大きいので、制御回路217は、読み出し位置ベースレジスタ208の値は無効であると判断して、処理を終了する。 Subsequently, in step 310, the control circuit 217 checks whether the value of the read position base register 208 is valid. Since the value “16” of the read position base register 208 is larger than the value “15” of the valid read position register 218, the control circuit 217 determines that the value of the read position base register 208 is invalid and performs processing. finish.
 図6は、アドレス計算部104を示した図である。 FIG. 6 is a diagram showing the address calculation unit 104.
 アドレス計算部104は、開始アドレスレジスタ401と、ストライドレジスタ402と、各ベクトルパイプライン109と1対1で対応するアドレス計算回路403と、を含む。 The address calculation unit 104 includes a start address register 401, a stride register 402, and an address calculation circuit 403 that corresponds to each vector pipeline 109 on a one-to-one basis.
 本実施形態では、ベクトルパイプライン109は8個あるので、アドレス計算回路403も8個装備される。 In this embodiment, since there are eight vector pipelines 109, eight address calculation circuits 403 are also provided.
 開始アドレスレジスタ401は、命令発行制御部102からのベクトルストア命令の開始アドレスを受け取って格納する。 The start address register 401 receives and stores the start address of the vector store instruction from the instruction issue control unit 102.
 ストライドレジスタ402は、命令発行制御部102からのストライドを受け取って格納する。 The stride register 402 receives and stores the stride from the instruction issue control unit 102.
 アドレス計算回路403は、開始アドレスレジスタ401の値と、ストライドレジスタ402の値と、自回路と対応するベクトルパイプライン109内の読み出し位置制御部114からの読み出し位置と、を使って、メモリアドレスを計算する。 The address calculation circuit 403 uses the value of the start address register 401, the value of the stride register 402, and the read position from the read position control unit 114 in the vector pipeline 109 corresponding to its own circuit to calculate the memory address. calculate.
 アドレス計算回路403は、パイプライン番号レジスタ404と、オフセット計算回路 405と、加算器406と、を含む。 The address calculation circuit 403 includes a pipeline number register 404, an offset calculation circuit 405, and an adder 406.
 パイプライン番号レジスタ404には、対応するベクトルパイプライン109の番号が格納されている。 In the pipeline number register 404, the number of the corresponding vector pipeline 109 is stored.
 本実施形態では、ベクトルパイプライン109は、8個なので、パイプライン番号レジスタ404には、「0」~「7」のいずれかが格納される。 In this embodiment, since there are eight vector pipelines 109, any one of “0” to “7” is stored in the pipeline number register 404.
 オフセット計算回路405は、ストライドと、読み出し位置と、パイプライン番号と、に基づいて、メモリアドレスのオフセットを計算する。 The offset calculation circuit 405 calculates the memory address offset based on the stride, the read position, and the pipeline number.
 オフセット計算回路405は、次の演算を行ってオフセットを計算する。 The offset calculation circuit 405 performs the following calculation to calculate the offset.
 オフセット=(読み出し位置×ベクトルパイプライン数+ベクトルパイプライン番号)×ストライド 
 加算器406は、開始アドレスとオフセットとを加算することにより、メモリアドレスを計算する。
Offset = (readout position x number of vector pipelines + vector pipeline number) x stride
The adder 406 calculates a memory address by adding the start address and the offset.
 次に、ベクトルストアについて、図7~図9を使って説明する。 Next, the vector store will be described with reference to FIGS.
 図7~図9の上半分は、8個のベクトルパイプライン(ベクトルパイプライン0~ベクトルパイプライン7)における128個の要素(要素0~要素127)の配置、さらに言えば、8個のベクトルパイプライン内のバンクにて構成されるベクトルレジスタにおける要素0~要素127の配置を示す。なお、要素0から要素127を、要素の番号順に並べると、ベクトルデータが復元される。 The upper half of FIGS. 7 to 9 shows the arrangement of 128 elements (element 0 to element 127) in 8 vector pipelines (vector pipeline 0 to vector pipeline 7), more specifically, 8 vectors. An arrangement of element 0 to element 127 in a vector register composed of banks in the pipeline is shown. Note that when the elements 0 to 127 are arranged in the order of the element numbers, the vector data is restored.
 図7~図9の下半分は、1クロックごとに、クロスバスイッチ111から、キャッシュメモリ内の8個のデータ格納部(データ格納部0~データ格納部7)に出力される要素を示す。図7~図9の下半分において、太字の枠504は、キャッシュメモリのブロックの境界を示す。 7 to 9 show elements output from the crossbar switch 111 to eight data storage units (data storage unit 0 to data storage unit 7) in the cache memory every clock. In the lower half of FIGS. 7 to 9, a bold frame 504 indicates a block boundary of the cache memory.
 まず、図7を参照して、開始アドレスが「0」であり、ストライドが8Bである状況でのベクトルストアを説明する。 First, a vector store in a situation where the start address is “0” and the stride is 8B will be described with reference to FIG.
 図7において、縦線501は、キャッシュメモリのブロックの境界を示している。キャッシュメモリのブロックサイズが64Bであり、ストライドが8Bであるため、各データ格納部内の各ブロックには、メモリアドレスが連続する8個の要素、つまり、要素番号が連続する8個の要素が格納される。例えば、要素0~要素7までが、キャッシュメモリ105内の同一のブロックに格納される。 In FIG. 7, a vertical line 501 indicates a boundary between cache memory blocks. Since the block size of the cache memory is 64B and the stride is 8B, each block in each data storage unit stores eight elements having consecutive memory addresses, that is, eight elements having consecutive element numbers. Is done. For example, element 0 to element 7 are stored in the same block in the cache memory 105.
 表1では、ストライド8Bで、開始アドレスの下位6~4ビットが「000」の場合には、読み出し開始位置の補正はなしなので、各読み出し開始位置決定回路205は、ベクトルパイプラインの番号を出力する。 In Table 1, when the lower 6 to 4 bits of the start address are “000” in the stride 8B, since the read start position is not corrected, each read start position determination circuit 205 outputs the vector pipeline number. .
 表2では、ストライドが8Bの場合、処理グループのサイズは「8」となるので、処理グループサイズ決定回路204は、「8」を出力する。 In Table 2, when the stride is 8B, the size of the processing group is “8”, so the processing group size determination circuit 204 outputs “8”.
 このため、要素0~要素127は、要素0~要素63にて構成される処理グループと、要素64~要素127にて構成される処理グループと、に分けられる。 Therefore, the elements 0 to 127 are divided into a processing group composed of the elements 0 to 63 and a processing group composed of the elements 64 to 127.
 図7の上半分で、太字の四角になっている要素502(要素0、要素9、要素18、要素27、要素36、要素45、要素54および要素63)と、要素503(要素64、要素73、要素82、要素91、要素100、要素109、要素118および要素127)は、各処理グループの読み出し開始要素を示す。 In the upper half of FIG. 7, elements 502 (element 0, element 9, element 18, element 27, element 36, element 45, element 54 and element 63) and elements 503 (element 64, element 63) which are bold squares. 73, element 82, element 91, element 100, element 109, element 118, and element 127) indicate read start elements of each processing group.
 最初のクロックが入力されると、以下のような動作が実行される。 When the first clock is input, the following operations are executed.
 読み出し位置制御部114-0は、読み出し位置として「0」を出力する。読み出し位置制御部114-1は、読み出し位置として「1」を出力する。読み出し位置制御部114-2は、読み出し位置として「2」を出力する。読み出し位置制御部114-3は、読み出し位置として「3」を出力する。読み出し位置制御部114-4は、読み出し位置として「4」を出力する。読み出し位置制御部114-5は、読み出し位置として「5」を出力する。読み出し位置制御部114-6は、読み出し位置として「6」を出力する。
読み出し位置制御部114-7は、読み出し位置として「7」を出力する。
The read position control unit 114-0 outputs “0” as the read position. The read position control unit 114-1 outputs “1” as the read position. The read position control unit 114-2 outputs “2” as the read position. The read position control unit 114-3 outputs “3” as the read position. The read position control unit 114-4 outputs “4” as the read position. The read position control unit 114-5 outputs “5” as the read position. The read position control unit 114-6 outputs “6” as the read position.
The read position control unit 114-7 outputs “7” as the read position.
 このため、バンク113A-0からは要素0が読み出され、要素0はクロスバスイッチ111に入力される。バンク113A-1からは要素9が読み出され、要素9はクロスバスイッチ111に入力される。バンク113A-2からは要素18が読み出され、要素18はクロスバスイッチ111に入力される。バンク113A-3からは要素27が読み出され、要素27はクロスバスイッチ111に入力される。バンク113A-4からは要素36が読み出され、要素36はクロスバスイッチ111に入力される。バンク113A-5からは要素45が読み出され、要素45はクロスバスイッチ111に入力される。バンク113A-6からは要素54が読み出され、要素54はクロスバスイッチ111に入力される。バンク113A-7からは要素63が読み出され、要素63はクロスバスイッチ111に入力される。 Therefore, the element 0 is read from the bank 113A-0, and the element 0 is input to the crossbar switch 111. Element 9 is read from bank 113A-1, and element 9 is input to crossbar switch 111. The element 18 is read from the bank 113A-2, and the element 18 is input to the crossbar switch 111. The element 27 is read from the bank 113A-3, and the element 27 is input to the crossbar switch 111. The element 36 is read from the bank 113A-4, and the element 36 is input to the crossbar switch 111. The element 45 is read from the bank 113A-5, and the element 45 is input to the crossbar switch 111. The element 54 is read from the bank 113A-6, and the element 54 is input to the crossbar switch 111. The element 63 is read from the bank 113A-7, and the element 63 is input to the crossbar switch 111.
 要素0、要素9、要素18、要素27、要素36、要素45、要素54および要素63は、それぞれ、クロスバスイッチ111によって、キャッシュメモリ105内の、データ格納部107-0、データ格納部107-1、データ格納部107-2、データ格納部107-3、データ格納部107-4、データ格納部107-5、データ格納部107-6、データ格納部107-7に格納される。このため、クロスバスイッチ111では出力の競合は発生しない。 The element 0, the element 9, the element 18, the element 27, the element 36, the element 45, the element 54, and the element 63 are respectively stored in the data storage unit 107-0 and the data storage unit 107- in the cache memory 105 by the crossbar switch 111. 1, the data storage unit 107-2, the data storage unit 107-3, the data storage unit 107-4, the data storage unit 107-5, the data storage unit 107-6, and the data storage unit 107-7. For this reason, output conflict does not occur in the crossbar switch 111.
 続いて、2番目のクロックが入力されると、2番目のクロックに応じて以下のような動作が実行される。 Subsequently, when the second clock is input, the following operation is executed according to the second clock.
 読み出し位置制御部114-0は、読み出し位置として「7」を出力する。読み出し位置制御部114-1は、読み出し位置として「0」を出力する。読み出し位置制御部114-2は、読み出し位置として「1」を出力する。読み出し位置制御部114-3は、読み出し位置として「2」を出力する。読み出し位置制御部114-4は、読み出し位置として「3」を出力する。読み出し位置制御部114-5は、読み出し位置として「4」を出力する。読み出し位置制御部114-6は、読み出し位置として「5」を出力する。
読み出し位置制御部114-7は、読み出し位置として「6」を出力する。
The read position control unit 114-0 outputs “7” as the read position. The read position control unit 114-1 outputs “0” as the read position. The read position control unit 114-2 outputs “1” as the read position. The read position control unit 114-3 outputs “2” as the read position. The read position control unit 114-4 outputs “3” as the read position. The read position control unit 114-5 outputs “4” as the read position. The read position control unit 114-6 outputs “5” as the read position.
The read position control unit 114-7 outputs “6” as the read position.
 このため、バンク113A-0からは要素56が読み出され、要素56はクロスバスイッチ111に入力される。バンク113A-1からは要素1が読み出され、要素1はクロスバスイッチ111に入力される。バンク113A-2からは要素10が読み出され、要素10はクロスバスイッチ111に入力される。バンク113A-3からは要素19が読み出され、要素19はクロスバスイッチ111に入力される。バンク113A-4からは要素28が読み出され、要素28はクロスバスイッチ111に入力される。バンク113A-5からは要素37が読み出され、要素37はクロスバスイッチ111に入力される。バンク113A-6からは要素46が読み出され、要素46はクロスバスイッチ111に入力される。バンク113A-7からは要素55が読み出され、要素55はクロスバスイッチ111に入力される。 Therefore, the element 56 is read from the bank 113A-0, and the element 56 is input to the crossbar switch 111. Element 1 is read from bank 113A-1, and element 1 is input to crossbar switch 111. The element 10 is read from the bank 113A-2, and the element 10 is input to the crossbar switch 111. The element 19 is read from the bank 113A-3, and the element 19 is input to the crossbar switch 111. The element 28 is read from the bank 113A-4, and the element 28 is input to the crossbar switch 111. The element 37 is read from the bank 113A-5, and the element 37 is input to the crossbar switch 111. The element 46 is read from the bank 113A-6, and the element 46 is input to the crossbar switch 111. The element 55 is read from the bank 113A-7, and the element 55 is input to the crossbar switch 111.
 要素56、要素1、要素10、要素19、要素28、要素37、要素46および要素55は、それぞれ、クロスバスイッチ111によって、キャッシュメモリ105内の、データ格納部107-7、データ格納部107-0、データ格納部107-1、データ格納部107-2、データ格納部107-3、データ格納部107-4、データ格納部107-5、データ格納部107-6に格納される。このため、クロスバスイッチ111では出力の競合は発生しない。 Element 56, element 1, element 10, element 19, element 28, element 37, element 46, and element 55 are respectively stored in the cache memory 105 by the data storage unit 107-7 and the data storage unit 107-by the crossbar switch 111. 0, data storage unit 107-1, data storage unit 107-2, data storage unit 107-3, data storage unit 107-4, data storage unit 107-5, and data storage unit 107-6. For this reason, output conflict does not occur in the crossbar switch 111.
 以下、3番目のクロック~8番目のクロックのそれぞれが入力された際には、図7に示すように各ベクトルパイプラインから各要素が読み出される。 Hereinafter, when each of the third to eighth clocks is input, each element is read from each vector pipeline as shown in FIG.
 次に、9番目のクロックが入力された際の動作を説明する。なお、9番目のクロックが入力されると、処理グループが切り替わる。 Next, the operation when the ninth clock is input will be described. When the ninth clock is input, the processing group is switched.
 9番目のクロックが入力されると、以下のような動作が実行される。 When the 9th clock is input, the following operations are executed.
 各ベクトルパイプライン109では、制御回路217は、読み出し位置ベースレジスタ208の値に、処理グループのサイズである「8」を加算する。 In each vector pipeline 109, the control circuit 217 adds “8”, which is the size of the processing group, to the value of the read position base register 208.
 したがって、9番目のクロック~16番目のクロックまでは、読み出し位置制御部114のそれぞれは、読み出し位置として、「8」~「15」を所定の順番に出力する。なお、図7の上半分で、太字の四角になっている要素503が9番目のクロックで読み出される要素である。 
 このように、1つのクロックに応じて各ベクトルパイプラインから読み出される要素は、互いに異なるデータ格納部に格納されるため、クロスバスイッチ111での出力の競合が発生しない。そのため、クロスバスイッチ111でのベクトルストアの性能低下は発生しない。
Therefore, from the 9th clock to the 16th clock, each of the read position control units 114 outputs “8” to “15” as read positions in a predetermined order. In the upper half of FIG. 7, an element 503 that is a bold square is an element that is read out by the ninth clock.
In this way, since elements read from each vector pipeline in accordance with one clock are stored in different data storage units, output contention in the crossbar switch 111 does not occur. Therefore, the performance of the vector store in the crossbar switch 111 does not deteriorate.
 また、図7の下半分に示したように、キャッシュメモリ105内のデータ格納部107内の同じブロックに格納される複数の要素は、そのブロックを有するデータ格納部107に連続して到着する。そのため、各データ格納部107は、同じブロックに格納される複数の要素のうち、そのブロックに最初に到着した要素についてのみアドレスアレイを検索すればよく、効率よく書き込みを行うことが可能になる。 Further, as shown in the lower half of FIG. 7, a plurality of elements stored in the same block in the data storage unit 107 in the cache memory 105 arrives continuously at the data storage unit 107 having the block. Therefore, each data storage unit 107 only needs to search the address array for only the element that first arrives at the block among a plurality of elements stored in the same block, and can write efficiently.
 次に、図8を参照して、開始アドレスが「8」であり、ストライドが8Bである状況でのベクトルストアを説明する。 Next, the vector store in the situation where the start address is “8” and the stride is 8B will be described with reference to FIG.
 図8において、縦線601は、キャッシュメモリのブロックの境界を示している。例えば、要素7~要素14までがキャッシュメモリ105内の同一のブロックに格納される。 In FIG. 8, a vertical line 601 indicates a boundary between cache memory blocks. For example, elements 7 to 14 are stored in the same block in the cache memory 105.
 表1では、ストライドが8Bで、開始アドレスの下位6~4ビットが「001」の場合には、読み出し開始位置の補正は、ベクトルパイプライン109-7だけで行われる。 In Table 1, when the stride is 8B and the lower 6 to 4 bits of the start address are “001”, the read start position is corrected only in the vector pipeline 109-7.
 ベクトルパイプライン109-0~109-6では、ベクトルパイプライン番号が、読み出し開始位置決定回路205から出力される。一方、ベクトルパイプライン109-7では、「6」が、読み出し開始位置決定回路205から出力される。 In the vector pipelines 109-0 to 109-6, the vector pipeline number is output from the read start position determining circuit 205. On the other hand, in the vector pipeline 109-7, “6” is output from the read start position determination circuit 205.
 表2では、ストライドが8Bの場合、処理グループのサイズは「8」となるので、処理グループサイズ決定回路204は、「8」を出力する。 In Table 2, when the stride is 8B, the size of the processing group is “8”, so the processing group size determination circuit 204 outputs “8”.
 このため、要素0~要素127は、要素0~要素63にて構成される処理グループと、要素64~要素127にて構成される処理グループと、に分けられる。 Therefore, the elements 0 to 127 are divided into a processing group composed of the elements 0 to 63 and a processing group composed of the elements 64 to 127.
 図8の上半分で、太字の四角になっている要素602(要素0、要素9、要素18、要素27、要素36、要素45、要素54および要素55)と、要素603(要素64、要素73、要素82、要素91、要素100、要素109、要素118および要素119)は、各処理グループの読み出し開始要素を示す。 In the upper half of FIG. 8, elements 602 (element 0, element 9, element 18, element 27, element 36, element 45, element 54, and element 55) that are bold squares and element 603 (element 64, element 55) 73, element 82, element 91, element 100, element 109, element 118, and element 119) indicate read start elements of each processing group.
 最初のクロックが入力されると、以下のような動作が実行される。 When the first clock is input, the following operations are executed.
 読み出し位置制御部114-0は、読み出し位置として「0」を出力する。読み出し位置制御部114-1は、読み出し位置として「1」を出力する。読み出し位置制御部114-2は、読み出し位置として「2」を出力する。読み出し位置制御部114-3は、読み出し位置として「3」を出力する。読み出し位置制御部114-4は、読み出し位置として「4」を出力する。読み出し位置制御部114-5は、読み出し位置として「5」を出力する。読み出し位置制御部114-6は、読み出し位置として「6」を出力する。
読み出し位置制御部114-7は、読み出し位置として「6」を出力する。
The read position control unit 114-0 outputs “0” as the read position. The read position control unit 114-1 outputs “1” as the read position. The read position control unit 114-2 outputs “2” as the read position. The read position control unit 114-3 outputs “3” as the read position. The read position control unit 114-4 outputs “4” as the read position. The read position control unit 114-5 outputs “5” as the read position. The read position control unit 114-6 outputs “6” as the read position.
The read position control unit 114-7 outputs “6” as the read position.
 このため、バンク113A-0からは要素0が読み出され、要素0はクロスバスイッチ111に入力される。バンク113A-1からは要素9が読み出され、要素9はクロスバスイッチ111に入力される。バンク113A-2からは要素18が読み出され、要素18はクロスバスイッチ111に入力される。バンク113A-3からは要素27が読み出され、要素27はクロスバスイッチ111に入力される。バンク113A-4からは要素36が読み出され、要素36はクロスバスイッチ111に入力される。バンク113A-5からは要素45が読み出され、要素45はクロスバスイッチ111に入力される。バンク113A-6からは要素54が読み出され、要素54はクロスバスイッチ111に入力される。バンク113A-7からは要素55が読み出され、要素55はクロスバスイッチ111に入力される。 Therefore, the element 0 is read from the bank 113A-0, and the element 0 is input to the crossbar switch 111. Element 9 is read from bank 113A-1, and element 9 is input to crossbar switch 111. The element 18 is read from the bank 113A-2, and the element 18 is input to the crossbar switch 111. The element 27 is read from the bank 113A-3, and the element 27 is input to the crossbar switch 111. The element 36 is read from the bank 113A-4, and the element 36 is input to the crossbar switch 111. The element 45 is read from the bank 113A-5, and the element 45 is input to the crossbar switch 111. The element 54 is read from the bank 113A-6, and the element 54 is input to the crossbar switch 111. The element 55 is read from the bank 113A-7, and the element 55 is input to the crossbar switch 111.
 要素0、要素9、要素18、要素27、要素36、要素45、要素54および要素55は、それぞれ、クロスバスイッチ111によって、キャッシュメモリ105内の、データ格納部107-0、データ格納部107-1、データ格納部107-2、データ格納部107-3、データ格納部107-4、データ格納部107-5、データ格納部107-6、データ格納部107-7に格納される。このため、クロスバスイッチ111では出力の競合は発生しない。 The element 0, the element 9, the element 18, the element 27, the element 36, the element 45, the element 54, and the element 55 are respectively stored in the cache memory 105 by the data storage unit 107-0 and the data storage unit 107- by the crossbar switch 111. 1, the data storage unit 107-2, the data storage unit 107-3, the data storage unit 107-4, the data storage unit 107-5, the data storage unit 107-6, and the data storage unit 107-7. For this reason, output conflict does not occur in the crossbar switch 111.
 続いて、2番目のクロックが入力されると、以下のような動作が実行される。 Subsequently, when the second clock is input, the following operation is executed.
 読み出し位置制御部114-0は、読み出し位置として「7」を出力する。読み出し位置制御部114-1は、読み出し位置として「0」を出力する。読み出し位置制御部114-2は、読み出し位置として「1」を出力する。読み出し位置制御部114-3は、読み出し位置として「2」を出力する。読み出し位置制御部114-4は、読み出し位置として「3」を出力する。読み出し位置制御部114-5は、読み出し位置として「4」を出力する。読み出し位置制御部114-6は、読み出し位置として「5」を出力する。
読み出し位置制御部114-7は、読み出し位置として「5」を出力する。
The read position control unit 114-0 outputs “7” as the read position. The read position control unit 114-1 outputs “0” as the read position. The read position control unit 114-2 outputs “1” as the read position. The read position control unit 114-3 outputs “2” as the read position. The read position control unit 114-4 outputs “3” as the read position. The read position control unit 114-5 outputs “4” as the read position. The read position control unit 114-6 outputs “5” as the read position.
The read position control unit 114-7 outputs “5” as the read position.
 このため、バンク113A-0からは要素56が読み出され、要素56はクロスバスイッチ111に入力される。バンク113A-1からは要素1が読み出され、要素1はクロスバスイッチ111に入力される。バンク113A-2からは要素10が読み出され、要素10はクロスバスイッチ111に入力される。バンク113A-3からは要素19が読み出され、要素19はクロスバスイッチ111に入力される。バンク113A-4からは要素28が読み出され、要素28はクロスバスイッチ111に入力される。バンク113A-5からは要素37が読み出され、要素37はクロスバスイッチ111に入力される。バンク113A-6からは要素46が読み出され、要素46はクロスバスイッチ111に入力される。バンク113A-7からは要素47が読み出され、要素47はクロスバスイッチ111に入力される。 Therefore, the element 56 is read from the bank 113A-0, and the element 56 is input to the crossbar switch 111. Element 1 is read from bank 113A-1, and element 1 is input to crossbar switch 111. The element 10 is read from the bank 113A-2, and the element 10 is input to the crossbar switch 111. The element 19 is read from the bank 113A-3, and the element 19 is input to the crossbar switch 111. The element 28 is read from the bank 113A-4, and the element 28 is input to the crossbar switch 111. The element 37 is read from the bank 113A-5, and the element 37 is input to the crossbar switch 111. The element 46 is read from the bank 113A-6, and the element 46 is input to the crossbar switch 111. The element 47 is read from the bank 113A-7, and the element 47 is input to the crossbar switch 111.
 要素56、要素1、要素10、要素19、要素28、要素37、要素46および要素47は、それぞれ、クロスバスイッチ111によって、キャッシュメモリ105内の、データ格納部107-7、データ格納部107-0、データ格納部107-1、データ格納部107-2、データ格納部107-3、データ格納部107-4、データ格納部107-5、データ格納部107-6に格納される。このため、クロスバスイッチ111では出力の競合は発生しない。 Element 56, element 1, element 10, element 19, element 28, element 37, element 46, and element 47 are respectively stored in the cache memory 105 by the data storage unit 107-7 and the data storage unit 107-by the crossbar switch 111. 0, data storage unit 107-1, data storage unit 107-2, data storage unit 107-3, data storage unit 107-4, data storage unit 107-5, and data storage unit 107-6. For this reason, output conflict does not occur in the crossbar switch 111.
 以下、3番目のクロック~8番目のクロックのそれぞれが入力された際には、図8に示すように各ベクトルパイプラインから各要素が読み出される。 Hereinafter, when each of the third to eighth clocks is input, each element is read from each vector pipeline as shown in FIG.
 次に、9番目のクロックが入力された際の動作を説明する。なお、9番目のクロックが入力されると、処理グループが切り替わる。 Next, the operation when the ninth clock is input will be described. When the ninth clock is input, the processing group is switched.
 9番目のクロックが入力されると、以下のような動作が実行される。 When the 9th clock is input, the following operations are executed.
 各ベクトルパイプライン109では、制御回路217は、読み出し位置ベースレジスタ208の値に、処理グループのサイズである「8」を加算する。 In each vector pipeline 109, the control circuit 217 adds “8”, which is the size of the processing group, to the value of the read position base register 208.
 したがって、9番目のクロック~16番目のクロックまでは、読み出し位置制御部114のそれぞれは、読み出し位置として、「8」~「15」を所定の順番に出力する。なお、図8の上半分で、太字の四角になっている要素603が9番目のクロックで読み出される要素である。 
 このように、1つのクロックに応じて各ベクトルパイプラインから読み出される要素は、互いに異なるデータ格納部に格納されるため、クロスバスイッチ111での出力の競合が発生しない。そのため、クロスバスイッチ111でのベクトルストアの性能低下は発生しない。
Therefore, from the 9th clock to the 16th clock, each of the read position control units 114 outputs “8” to “15” as read positions in a predetermined order. In the upper half of FIG. 8, a bold square element 603 is an element that is read by the ninth clock.
In this way, since elements read from each vector pipeline in accordance with one clock are stored in different data storage units, output contention in the crossbar switch 111 does not occur. Therefore, the performance of the vector store in the crossbar switch 111 does not deteriorate.
 また、図8の下半分に示したように、キャッシュメモリ105内のデータ格納部107内の同じブロックに格納される複数の要素は、そのブロックを有するデータ格納部107に連続して到着する。そのため、各データ格納部107は、同じブロックに格納される複数の要素のうち、そのブロックに最初に到着した要素についてのみアドレスアレイを検索すればよく、効率よく書き込みを行うことが可能になる。 Further, as shown in the lower half of FIG. 8, a plurality of elements stored in the same block in the data storage unit 107 in the cache memory 105 arrives continuously at the data storage unit 107 having the block. Therefore, each data storage unit 107 only needs to search the address array for only the element that first arrives at the block among a plurality of elements stored in the same block, and can write efficiently.
 次に、図9を参照して、開始アドレスが「0」であり、ストライドが16Bである状況でのベクトルストアを説明する。 Next, a vector store in a situation where the start address is “0” and the stride is 16B will be described with reference to FIG.
 図9において、2本の太字の縦線701および702は、キャッシュメモリのブロックの境界を示している。例えば、要素4~要素7までがキャッシュメモリ105内の同一のブロックに格納される。 In FIG. 9, two bold vertical lines 701 and 702 indicate the boundaries of the cache memory blocks. For example, elements 4 to 7 are stored in the same block in the cache memory 105.
 表1では、ストライド16Bで、開始アドレスの下位6~4ビットが「000」の場合には、読み出し開始位置の補正はなしなので、ベクトルパイプライン番号が、読み出し開始位置決定回路205から出力される。 In Table 1, when the lower 6 to 4 bits of the start address are “000” in the stride 16B, since the read start position is not corrected, the vector pipeline number is output from the read start position determining circuit 205.
 表2では、ストライドが16Bの場合、処理グループのサイズは「4」となるので、処理グループサイズ決定回路204は、「4」を出力する。 In Table 2, since the size of the processing group is “4” when the stride is 16B, the processing group size determination circuit 204 outputs “4”.
 このため、要素0~要素127は、要素0~要素31にて構成される処理グループと、要素32~要素63にて構成される処理グループと、要素64~要素95にて構成される処理グループと、要素96~要素127にて構成される処理グループと、に分けられる。 Therefore, element 0 to element 127 are a processing group composed of element 0 to element 31, a processing group composed of element 32 to element 63, and a processing group composed of element 64 to element 95. And processing groups composed of element 96 to element 127.
 図9の上半分で、太字の四角になっている要素703(要素0、要素9、要素18、要素27、要素4、要素13、要素22および要素31)と、要素704(要素32、要素41、要素50、要素59、要素36、要素45、要素54および要素63)と、要素705(要素64、要素73、要素82、要素91、要素68、要素77、要素86および要素95)と、要素706(要素96、要素105、要素114、要素123、要素100、要素109、要素118および要素127)は、各処理グループの読み出し開始要素を示す。 In the upper half of FIG. 9, elements 703 (element 0, element 9, element 18, element 27, element 4, element 13, element 22 and element 31) which are bold squares and element 704 (element 32, element 31) 41, element 50, element 59, element 36, element 45, element 54 and element 63) and element 705 (element 64, element 73, element 82, element 91, element 68, element 77, element 86 and element 95) , Element 706 (element 96, element 105, element 114, element 123, element 100, element 109, element 118, and element 127) indicate read start elements of the respective processing groups.
 最初のクロックが入力されると、以下のような動作が実行される。 When the first clock is input, the following operations are executed.
 読み出し位置制御部114-0は、読み出し位置として「0」を出力する。読み出し位置制御部114-1は、読み出し位置として「1」を出力する。読み出し位置制御部114-2は、読み出し位置として「2」を出力する。読み出し位置制御部114-3は、読み出し位置として「3」を出力する。読み出し位置制御部114-4は、読み出し位置として「0」を出力する。読み出し位置制御部114-5は、読み出し位置として「1」を出力する。読み出し位置制御部114-6は、読み出し位置として「2」を出力する。
読み出し位置制御部114-7は、読み出し位置として「3」を出力する。
The read position control unit 114-0 outputs “0” as the read position. The read position control unit 114-1 outputs “1” as the read position. The read position control unit 114-2 outputs “2” as the read position. The read position control unit 114-3 outputs “3” as the read position. The read position control unit 114-4 outputs “0” as the read position. The read position control unit 114-5 outputs “1” as the read position. The read position control unit 114-6 outputs “2” as the read position.
The read position control unit 114-7 outputs “3” as the read position.
 このため、バンク113A-0からは要素0が読み出され、要素0はクロスバスイッチ111に入力される。バンク113A-1からは要素9が読み出され、要素9はクロスバスイッチ111に入力される。バンク113A-2からは要素18が読み出され、要素18はクロスバスイッチ111に入力される。バンク113A-3からは要素27が読み出され、要素27はクロスバスイッチ111に入力される。バンク113A-4からは要素4が読み出され、要素4はクロスバスイッチ111に入力される。バンク113A-5からは要素13が読み出され、要素13はクロスバスイッチ111に入力される。バンク113A-6からは要素22が読み出され、要素22はクロスバスイッチ111に入力される。バンク113A-7からは要素31が読み出され、要素31はクロスバスイッチ111に入力される。 Therefore, the element 0 is read from the bank 113A-0, and the element 0 is input to the crossbar switch 111. Element 9 is read from bank 113A-1, and element 9 is input to crossbar switch 111. The element 18 is read from the bank 113A-2, and the element 18 is input to the crossbar switch 111. The element 27 is read from the bank 113A-3, and the element 27 is input to the crossbar switch 111. Element 4 is read from bank 113A-4, and element 4 is input to crossbar switch 111. Element 13 is read from bank 113A-5, and element 13 is input to crossbar switch 111. The element 22 is read from the bank 113A-6, and the element 22 is input to the crossbar switch 111. The element 31 is read from the bank 113A-7, and the element 31 is input to the crossbar switch 111.
 要素0、要素9、要素18、要素27、要素4、要素13、要素22および要素31は、それぞれ、クロスバスイッチ111によって、キャッシュメモリ105内の、データ格納部107-0、データ格納部107-2、データ格納部107-4、データ格納部107-6、データ格納部107-1、データ格納部107-3、データ格納部107-5、データ格納部107-7に格納される。このため、クロスバスイッチ111では出力の競合は発生しない。 Element 0, element 9, element 18, element 27, element 4, element 13, element 22 and element 31 are respectively stored in the cache memory 105 by the data storage unit 107-0 and the data storage unit 107- by the crossbar switch 111. 2. Data storage unit 107-4, data storage unit 107-6, data storage unit 107-1, data storage unit 107-3, data storage unit 107-5, and data storage unit 107-7. For this reason, output conflict does not occur in the crossbar switch 111.
 続いて、2番目のクロックが入力されると、2番目のクロックに応じて以下のような動作が実行される。 Subsequently, when the second clock is input, the following operation is executed according to the second clock.
 読み出し位置制御部114-0は、読み出し位置として「3」を出力する。読み出し位置制御部114-1は、読み出し位置として「0」を出力する。読み出し位置制御部114-2は、読み出し位置として「1」を出力する。読み出し位置制御部114-3は、読み出し位置として「2」を出力する。読み出し位置制御部114-4は、読み出し位置として「3」を出力する。読み出し位置制御部114-5は、読み出し位置として「0」を出力する。読み出し位置制御部114-6は、読み出し位置として「1」を出力する。
読み出し位置制御部114-7は、読み出し位置として「2」を出力する。
The read position control unit 114-0 outputs “3” as the read position. The read position control unit 114-1 outputs “0” as the read position. The read position control unit 114-2 outputs “1” as the read position. The read position control unit 114-3 outputs “2” as the read position. The read position control unit 114-4 outputs “3” as the read position. The read position control unit 114-5 outputs “0” as the read position. The read position control unit 114-6 outputs “1” as the read position.
The read position control unit 114-7 outputs “2” as the read position.
 このため、バンク113A-0からは要素24が読み出され、要素24はクロスバスイッチ111に入力される。バンク113A-1からは要素1が読み出され、要素1はクロスバスイッチ111に入力される。バンク113A-2からは要素10が読み出され、要素10はクロスバスイッチ111に入力される。バンク113A-3からは要素19が読み出され、要素19はクロスバスイッチ111に入力される。バンク113A-4からは要素28が読み出され、要素28はクロスバスイッチ111に入力される。バンク113A-5からは要素5が読み出され、要素5はクロスバスイッチ111に入力される。バンク113A-6からは要素14が読み出され、要素14はクロスバスイッチ111に入力される。バンク113A-7からは要素23が読み出され、要素23はクロスバスイッチ111に入力される。 Therefore, the element 24 is read from the bank 113A-0, and the element 24 is input to the crossbar switch 111. Element 1 is read from bank 113A-1, and element 1 is input to crossbar switch 111. The element 10 is read from the bank 113A-2, and the element 10 is input to the crossbar switch 111. The element 19 is read from the bank 113A-3, and the element 19 is input to the crossbar switch 111. The element 28 is read from the bank 113A-4, and the element 28 is input to the crossbar switch 111. Element 5 is read from bank 113A-5, and element 5 is input to crossbar switch 111. The element 14 is read from the bank 113A-6, and the element 14 is input to the crossbar switch 111. The element 23 is read from the bank 113A-7, and the element 23 is input to the crossbar switch 111.
 要素24、要素1、要素10、要素19、要素28、要素5、要素14および要素23は、それぞれ、クロスバスイッチ111によって、キャッシュメモリ105内の、データ格納部107-6、データ格納部107-0、データ格納部107-2、データ格納部107-4、データ格納部107-7、データ格納部107-1、データ格納部107-3、データ格納部107-5に格納される。このため、クロスバスイッチ111では出力の競合は発生しない。 Element 24, element 1, element 10, element 19, element 28, element 5, element 14, and element 23 are respectively stored in the cache memory 105 by the data storage unit 107-6 and the data storage unit 107-by the crossbar switch 111. 0, data storage unit 107-2, data storage unit 107-4, data storage unit 107-7, data storage unit 107-1, data storage unit 107-3, and data storage unit 107-5. For this reason, output conflict does not occur in the crossbar switch 111.
 以下、3番目のクロック~4番目のクロックのそれぞれが入力された際には、図9に示すように各ベクトルパイプラインから各要素が読み出される。 Hereinafter, when each of the third to fourth clocks is input, each element is read from each vector pipeline as shown in FIG.
 次に、5番目のクロックが入力された際の動作を説明する。なお、5番目のクロックが入力されると、処理グループが切り替わる。 Next, the operation when the fifth clock is input will be described. When the fifth clock is input, the processing group is switched.
 5番目のクロックが入力されると、以下のような動作が実行される。 When the fifth clock is input, the following operations are performed.
 各ベクトルパイプライン109では、制御回路217は、読み出し位置ベースレジスタ208の値に、処理グループのサイズである「4」を加算する。 In each vector pipeline 109, the control circuit 217 adds “4”, which is the size of the processing group, to the value of the read position base register 208.
 したがって、5番目のクロック~8番目のクロックまでは、読み出し位置制御部114のそれぞれは、読み出し位置として、「4」~「7」を所定の順番に出力する。なお、図9の上半分で、太字の四角になっている要素704が5番目のクロックで読み出される要素である。 
 このように、1つのクロックに応じて各ベクトルパイプラインから読み出される要素は、互いに異なるデータ格納部に格納されるため、クロスバスイッチ111での出力の競合が発生しない。そのため、クロスバスイッチ111でのベクトルストアの性能低下は発生しない。
Accordingly, from the fifth clock to the eighth clock, each of the read position control units 114 outputs “4” to “7” as read positions in a predetermined order. In the upper half of FIG. 9, a bold square element 704 is an element read by the fifth clock.
In this way, since elements read from each vector pipeline in accordance with one clock are stored in different data storage units, output contention in the crossbar switch 111 does not occur. Therefore, the performance of the vector store in the crossbar switch 111 does not deteriorate.
 また、図9の下半分に示したように、キャッシュメモリ105内のデータ格納部107内の同じブロックに格納される複数の要素は、そのブロックを有するデータ格納部107に連続して到着する。そのため、各データ格納部107は、同じブロックに格納される複数の要素のうち、そのブロックに最初に到着した要素についてのみアドレスアレイを検索すればよく、効率よく書き込みを行うことが可能になる。 Further, as shown in the lower half of FIG. 9, a plurality of elements stored in the same block in the data storage unit 107 in the cache memory 105 arrives continuously at the data storage unit 107 having the block. Therefore, each data storage unit 107 only needs to search the address array for only the element that first arrives at the block among a plurality of elements stored in the same block, and can write efficiently.
 次に、本実施形態の効果を説明する。 Next, the effect of this embodiment will be described.
 第1の効果は、キャッシュメモリの同じブロックに書き込まれる書き込みデータ(要素)が、連続して、そのブロックを有するキャッシュメモリ内のバンク(メモリバンク、データ格納部)に到着するように制御することで、キャッシュメモリでアドレスアレイを検索する時間と消費電力を削減できることである。 The first effect is that control is performed so that write data (elements) written to the same block of the cache memory continuously arrives at a bank (memory bank, data storage unit) in the cache memory having the block. Thus, the time and power consumption for searching the address array in the cache memory can be reduced.
 また、第2の効果は、要素0のアドレスが、ブロックの先頭アドレスでない場合でも、クロスバスイッチでの競合を回避でき、ベクトルストアの処理時間の増加を回避できることである。競合が起こらないため、キャッシュメモリの同じブロックに書き込まれる書き込みデータ(要素)が、連続して、そのブロックを有するキャッシュメモリ内のバンク(メモリバンク、データ格納部)に到着するように制御でき、よって、キャッシュメモリでアドレスアレイを検索する時間と消費電力を削減することが可能になる。 The second effect is that even when the address of the element 0 is not the head address of the block, it is possible to avoid contention in the crossbar switch and to avoid an increase in the processing time of the vector store. Since contention does not occur, write data (elements) written to the same block of the cache memory can be controlled so that it continuously arrives at a bank (memory bank, data storage unit) in the cache memory having the block, Therefore, it is possible to reduce the time and power consumption for searching the address array in the cache memory.
 本実施形態によれば、処理部114Aは、256個の要素を、処理グループのサイズに基づいて、処理グループに分けていく。 According to this embodiment, the processing unit 114A divides 256 elements into processing groups based on the size of the processing group.
 処理部114Aは、開始アドレスが、キャッシュメモリ105内のいずれかのブロックの先頭のアドレスと一致すると判断された場合には、以下の動作を行う。 The processing unit 114A performs the following operation when it is determined that the start address matches the head address of any block in the cache memory 105.
 処理部114Aは、256個の要素を処理グループに分けるごとに、その処理グループ内の要素を並び順に処理グループのサイズごとに分けたときに生成されるブロックデータのそれぞれから、1つずつ、要素が並列に出力されて、その処理グループ内の要素が全て出力されるように、8個のバンク113Aから並列に要素を読み出しキャッシュメモリ105に転送する。 Each time the processing unit 114A divides 256 elements into processing groups, one element from each of the block data generated when the elements in the processing group are divided into processing group sizes in the order of arrangement, Are output in parallel so that all the elements in the processing group are output, and the elements are read in parallel from the eight banks 113A and transferred to the cache memory 105.
 このため、開始アドレスが、キャッシュメモリ105内のいずれかのブロックの先頭のアドレスと一致する場合、キャッシュメモリ105の同じブロックに書き込まれる書き込みデータ(要素)が、連続して、キャッシュメモリ105の各バンクに到着することが可能になる。よって、キャッシュメモリがアドレスアレイを検索する時間と消費電力を削減することが可能になる。 Therefore, when the start address matches the head address of any block in the cache memory 105, the write data (element) written to the same block in the cache memory 105 is continuously stored in each cache memory 105. It becomes possible to arrive at the bank. Therefore, it is possible to reduce the time and power consumption for the cache memory to search the address array.
 また、処理部114Aは、開始アドレスが、キャッシュメモリ105内のいずれかのメモリブロック内の先頭のアドレスと一致しない場合には、以下の動作を行う。 Further, the processing unit 114A performs the following operation when the start address does not match the head address in any of the memory blocks in the cache memory 105.
 処理部114Aは、256個の要素を処理グループに分けるごとに、その処理グループ内の要素を、開始アドレスとストライドとに基づいてキャッシュメモリ105内のブロックのいずれかに対応する9個のブロックデータに分けた際に、その9個のブロックデータの中でアドレスが最も大きい最後部ブロックデータ以外の8個のブロックデータのそれぞれから、1つずつ、要素が並列に出力され、その後、9個のブロックデータのうちアドレスが最も小さい先頭ブロックデータ内の要素が全て出力されると、9個のブロックデータのうち先頭ブロックデータ以外の8のブロックデータのそれぞれから、1つずつ、未出力の要素が並列に出力されて、その処理グループ内の要素が全て出力されるように、8個のバンク113Aから並列に要素を読み出しキャッシュメモリ105に転送する。 Each time the processing unit 114A divides 256 elements into processing groups, nine block data corresponding to one of the blocks in the cache memory 105 are assigned to the elements in the processing group based on the start address and stride. When the data is divided, the elements are output in parallel one by one from each of the eight block data other than the last block data having the largest address among the nine block data. When all the elements in the first block data with the smallest address among the block data are output, one of the eight block data other than the first block data out of the nine block data, one unoutput element It is required in parallel from eight banks 113A so that all elements in the processing group are output in parallel. Reading is transferred to the cache memory 105.
 このため、開始アドレスが、キャッシュメモリ105内のいずれかのブロックの先頭のアドレスと一致しない場合も、キャッシュメモリ105の同じブロックに書き込まれる書き込みデータ(要素)が、連続して、キャッシュメモリ105の各バンクに到着することが可能になり、よって、キャッシュメモリがアドレスアレイを検索する時間と消費電力を削減することが可能になる。 Therefore, even when the start address does not match the head address of any block in the cache memory 105, the write data (element) written to the same block of the cache memory 105 is continuously stored in the cache memory 105. It is possible to arrive at each bank, thereby reducing the time and power consumption for the cache memory to search the address array.
 以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。 The present invention has been described above with reference to the embodiments, but the present invention is not limited to the above embodiments. Various changes that can be understood by those skilled in the art can be made to the configuration and details of the present invention within the scope of the present invention.
 この出願は、2009年9月15日に出願された日本出願特願2009-213262を基礎とする優先権を主張し、その開示の全てをここに取り込む。 This application claims priority based on Japanese Patent Application No. 2009-213262 filed on September 15, 2009, the entire disclosure of which is incorporated herein.
101        CPU
102        命令発行制御部
103        ベクトル処理部
104        アドレス計算部
105        キャッシュメモリ
106        主記憶装置
107        データ格納部
109        ベクトルパイプライン
110        ベクトルストア制御部
111        クロスバスイッチ
112        ベクトル演算器
113        ベクトルレジスタ
113A   バンク
114        読み出し位置制御部
114A   処理部
201        開始アドレスレジスタ
202        ストライドレジスタ
203        読み出し開始位置補正計算回路
204        処理グループサイズ決定回路
205        読み出し開始位置決定回路
206        パイプライン番号レジスタ
207        読み出し位置オフセットレジスタ
208        読み出し位置ベースレジスタ
209        デクリメンタ
210        モジュロ演算器
211       マルチプレクサ
212        加算器
213        マルチプレクサ
214        加算器
215        デクリメンタ
216        カウンタ
217        制御回路
218        有効読み出し位置レジスタ
219        比較器
401        開始アドレスレジスタ
402        ストライドレジスタ
403        アドレス計算回路
404        パイプライン番号レジスタ
405        オフセット計算回路
406        加算器
101 CPU
102 Instruction issue control unit 103 Vector processing unit 104 Address calculation unit 105 Cache memory 106 Main storage device 107 Data storage unit 109 Vector pipeline 110 Vector store control unit 111 Crossbar switch 112 Vector computing unit 113 Vector register 113A Bank 114 Read position control unit 114A processing unit 201 start address register 202 stride register 203 read start position correction calculation circuit 204 processing group size determination circuit 205 read start position determination circuit 206 pipeline number register 207 read position offset register 208 read position base register 209 decrementer 21 Modulo arithmetic unit 211 Multiplexer 212 Adder 213 Multiplexer 214 Adder 215 Decrementer 216 Counter 217 Control circuit 218 Valid read position register 219 Comparator 401 Start address register 402 Stride register 403 Address calculation circuit 404 Pipeline number register 405 Offset calculation circuit 406 Addition vessel

Claims (4)

  1.  互いに異なるアドレスに対応づけられた所定サイズのメモリブロックを有するn(nは2以上の整数)個のメモリバンクを備えたキャッシュメモリに、並び順が決まっているm個のデータ要素を転送する情報処理装置であって、
     n個のレジスタバンクを有し、前記m個のデータ要素が、前記並び順に前記データ要素単位でインタリーブされて前記n個のレジスタバンクに順番に格納される、格納手段と、
     データ要素間のストライドを示すストライド情報と、前記並び順が先頭のデータ要素のアドレスである開始アドレスと、を受け付けると、前記所定サイズを前記ストライドで割って処理サイズを算出し、また、前記開始アドレスがいずれかのメモリブロックの先頭のアドレスと一致するかを判断する制御手段と、
     前記m個のデータ要素を、前記並び順が連続しかつ前記処理サイズとnを乗算した値の数のデータ要素からなる処理グループに分けていき、前記開始アドレスがいずれかのメモリブロックの先頭のアドレスと一致すると判断された場合には、前記m個のデータ要素を前記処理グループに分けるごとに、当該処理グループ内のデータ要素を前記並び順で前記処理サイズの数ごとに分けたブロックデータのそれぞれから、1つずつ、前記データ要素が並列に読み出されて、当該処理グループ内のデータ要素が全て読み出されるように、前記n個のレジスタバンクから並列に前記データ要素を読み出し前記キャッシュメモリに転送する処理手段と、を含む情報処理装置。
    Information for transferring m data elements whose arrangement order is determined to a cache memory having n (n is an integer of 2 or more) memory banks having memory blocks of a predetermined size associated with different addresses. A processing device comprising:
    storage means having n register banks, wherein the m data elements are interleaved in units of the data elements in the arrangement order and are stored in the n register banks in order.
    When the stride information indicating the stride between data elements and the start address which is the address of the first data element in the arrangement order are received, the processing size is calculated by dividing the predetermined size by the stride, and the start Control means for determining whether the address matches the start address of any of the memory blocks;
    The m data elements are divided into processing groups each including the number of data elements in which the arrangement order is continuous and the processing size is multiplied by n, and the start address is the top of any memory block. If it is determined that the address matches the address, each time the m data elements are divided into the processing groups, the data elements in the processing group are divided into the number of processing sizes in the arrangement order. From each of the n register banks, the data elements are read in parallel to the cache memory so that each of the data elements is read in parallel and all the data elements in the processing group are read. And an information processing apparatus including processing means for transferring.
  2.  前記処理手段は、前記開始アドレスが、いずれかのメモリブロック内の先頭のアドレスと一致しない場合には、前記m個のデータ要素を前記処理グループに分けるごとに、当該処理グループ内のデータ要素に前記開始アドレスと前記ストライド情報とに基づいてアドレスを割り当てて当該アドレスに基づいて当該処理グループ内のデータ要素を前記メモリブロックのいずれかに対応するn+1個のブロックデータに分けた際に、当該n+1個のブロックデータの中でアドレスが最も大きい最後部ブロックデータ以外のn個のブロックデータのそれぞれから、1つずつ、前記データ要素が並列に読み出され、その後、前記n+1個のブロックデータのうちアドレスが最も小さい先頭ブロックデータ内のデータ要素が全て読み出されると、前記n+1個のブロックデータのうち前記先頭ブロックデータ以外のn個のブロックデータのそれぞれから、1つずつ、読み出されていない前記データ要素が並列に読み出されて、当該処理グループ内のデータ要素が全て読み出されるように、前記n個のレジスタバンクから並列に前記データ要素を読み出し前記キャッシュメモリに転送する、請求項1に記載の情報処理装置。 When the start address does not match the head address in any of the memory blocks, the processing means sets the data elements in the processing group each time the m data elements are divided into the processing groups. When an address is assigned based on the start address and the stride information and the data element in the processing group is divided into n + 1 block data corresponding to any of the memory blocks based on the address, the n + 1 The data elements are read in parallel one by one from each of the n block data other than the last block data having the largest address among the block data, and then, among the n + 1 block data When all data elements in the first block data with the smallest address are read, The unread data elements are read in parallel one by one from each of the n block data other than the head block data in the +1 block data, and the data elements in the processing group are The information processing apparatus according to claim 1, wherein the data elements are read from the n register banks in parallel so as to be read out and transferred to the cache memory.
  3.  互いに異なるアドレスに対応づけられた所定サイズのメモリブロックを有するn(nは2以上の整数)個のメモリバンクを備えたキャッシュメモリに、並び順が決まっているm個のデータ要素を転送する情報処理装置でのデータ転送方法であって、
     前記m個のデータ要素を、前記並び順に前記データ要素単位でインタリーブしてn個のレジスタバンクに順番に格納し、
     データ要素間のストライドを示すストライド情報と、前記並び順が先頭のデータ要素のアドレスである開始アドレスと、を受け付けると、前記所定サイズを前記ストライドで割って処理サイズを算出し、また、前記開始アドレスがいずれかのメモリブロックの先頭のアドレスと一致するかを判断し、
     前記m個のデータ要素を、前記並び順が連続しかつ前記処理サイズとnを乗算した値の数のデータ要素からなる処理グループに分けていき、前記開始アドレスがいずれかのメモリブロックの先頭のアドレスと一致すると判断された場合には、前記m個のデータ要素を前記処理グループに分けるごとに、当該処理グループ内のデータ要素を前記並び順で前記処理サイズの数ごとに分けたブロックデータのそれぞれから、1つずつ、前記データ要素が並列に読み出されて、当該処理グループ内のデータ要素が全て読み出されるように、前記n個のレジスタバンクから並列に前記データ要素を読み出し前記キャッシュメモリに転送する、データ転送方法。
    Information for transferring m data elements whose arrangement order is determined to a cache memory having n (n is an integer of 2 or more) memory banks having memory blocks of a predetermined size associated with different addresses. A data transfer method in a processing device,
    The m data elements are interleaved in units of the data elements in the arrangement order, and sequentially stored in n register banks,
    When the stride information indicating the stride between data elements and the start address which is the address of the first data element in the arrangement order are received, the processing size is calculated by dividing the predetermined size by the stride, and the start Determine whether the address matches the start address of any memory block,
    The m data elements are divided into processing groups each including the number of data elements in which the arrangement order is continuous and the processing size is multiplied by n, and the start address is the top of any memory block. If it is determined that the address matches the address, each time the m data elements are divided into the processing groups, the data elements in the processing group are divided into the number of processing sizes in the arrangement order. From each of the n register banks, the data elements are read in parallel to the cache memory so that each of the data elements is read in parallel and all the data elements in the processing group are read. Data transfer method to transfer.
  4.  前記開始アドレスが、いずれかのメモリブロック内の先頭のアドレスと一致しない場合には、前記m個のデータ要素を前記処理グループに分けるごとに、当該処理グループ内のデータ要素に前記開始アドレスと前記ストライド情報とに基づいてアドレスを割り当てて当該アドレスに基づいて当該処理グループ内のデータ要素を前記メモリブロックのいずれかに対応するn+1個のブロックデータに分けた際に、当該n+1個のブロックデータの中でアドレスが最も大きい最後部ブロックデータ以外のn個のブロックデータのそれぞれから、1つずつ、前記データ要素が並列に読み出され、その後、前記n+1個のブロックデータのうちアドレスが最も小さい先頭ブロックデータ内のデータ要素が全て読み出されると、前記n+1個のブロックデータのうち前記先頭ブロックデータ以外のn個のブロックデータのそれぞれから、1つずつ、読み出されていない前記データ要素が並列に出力されて、当該処理グループ内のデータ要素が全て出力されるように、前記n個のレジスタバンクから並列に前記データ要素を読み出し前記キャッシュメモリに転送する、請求項3に記載のデータ転送方法。 If the start address does not match the first address in any memory block, each time the m data elements are divided into the processing groups, the start address and the data elements in the processing group When an address is assigned based on the stride information and the data element in the processing group is divided into n + 1 block data corresponding to any of the memory blocks based on the address, the n + 1 block data Among the n block data other than the last block data having the largest address, the data elements are read in parallel one by one, and then the head having the smallest address among the n + 1 block data. When all the data elements in the block data are read, the n + 1 blocks are read. The data elements that are not read out are output in parallel from each of the n block data other than the head block data in the data, so that all the data elements in the processing group are output. 4. The data transfer method according to claim 3, wherein the data elements are read from the n register banks in parallel and transferred to the cache memory.
PCT/JP2010/062664 2009-09-15 2010-07-28 Information processing device and data transfer method WO2011033862A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011531841A JP5423801B2 (en) 2009-09-15 2010-07-28 Information processing apparatus and data transfer method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2009-213262 2009-09-15
JP2009213262 2009-09-15

Publications (1)

Publication Number Publication Date
WO2011033862A1 true WO2011033862A1 (en) 2011-03-24

Family

ID=43758475

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/062664 WO2011033862A1 (en) 2009-09-15 2010-07-28 Information processing device and data transfer method

Country Status (2)

Country Link
JP (1) JP5423801B2 (en)
WO (1) WO2011033862A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7512622B2 (en) 2020-03-13 2024-07-09 日本電気株式会社 MEMORY ACCESS CONTROL DEVICE, MEMORY ACCESS CONTROL SYSTEM, MEMORY ACCESS CONTROL METHOD, AND MEMORY ACCESS CONTROL PROGRAM

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2878256B1 (en) * 1998-02-13 1999-04-05 甲府日本電気株式会社 Vector processing equipment
JP3005456B2 (en) * 1995-06-16 2000-01-31 甲府日本電気株式会社 Vector processing equipment
JP4060960B2 (en) * 1998-09-18 2008-03-12 富士通株式会社 Cache storage
JP2008250926A (en) * 2007-03-30 2008-10-16 Nec Corp Vector processing apparatus and vector processing system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3005456B2 (en) * 1995-06-16 2000-01-31 甲府日本電気株式会社 Vector processing equipment
JP2878256B1 (en) * 1998-02-13 1999-04-05 甲府日本電気株式会社 Vector processing equipment
JP4060960B2 (en) * 1998-09-18 2008-03-12 富士通株式会社 Cache storage
JP2008250926A (en) * 2007-03-30 2008-10-16 Nec Corp Vector processing apparatus and vector processing system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7512622B2 (en) 2020-03-13 2024-07-09 日本電気株式会社 MEMORY ACCESS CONTROL DEVICE, MEMORY ACCESS CONTROL SYSTEM, MEMORY ACCESS CONTROL METHOD, AND MEMORY ACCESS CONTROL PROGRAM

Also Published As

Publication number Publication date
JPWO2011033862A1 (en) 2013-02-07
JP5423801B2 (en) 2014-02-19

Similar Documents

Publication Publication Date Title
JP4966404B2 (en) MEMORY CONTROL DEVICE, STORAGE DEVICE, AND MEMORY CONTROL METHOD
JP2010244238A (en) Reconfigurable circuit and system of the same
US7454589B2 (en) Data buffer circuit, interface circuit and control method therefor
US20070156937A1 (en) Data transfer in multiprocessor system
CN107408076B (en) Data processing apparatus
US8812783B2 (en) Operation apparatus, cache apparatus, and control method thereof
US8825729B1 (en) Power and bandwidth efficient FFT for DDR memory
JP5423801B2 (en) Information processing apparatus and data transfer method
JP6294732B2 (en) Data transfer control device and memory built-in device
KR101356541B1 (en) Multi-core processor, multi-core system and electronic device including the same, and method of sharing cache in multi-core processor
US8316215B2 (en) Vector processor with plural arithmetic units for processing a vector data string divided into plural register banks accessed by read pointers starting at different positions
US9507541B2 (en) Computation device, computation method, and medium
JP2008102599A (en) Processor
US20230153261A1 (en) Processor and arithmetic processing method
US11797462B2 (en) Arithmetic processing device and memory access method
JP2006509284A (en) SIMD processor with multi-port memory unit
JP2006011706A (en) Inverse matrix arithmetic circuit
JP2000132527A (en) Inter-processor communication controller
JP2007241912A (en) Signal processing circuit
TW201329708A (en) Buffer managing method and buffer controller thereof
JP2012022567A (en) Cache memory
JP2011103025A (en) Data input/output device and data processing apparatus using the same
JPS62138940A (en) Register access control system
JP2017010325A (en) Data processing device and data processing method
JP2012174049A (en) Storage device

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10816975

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2011531841

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 10816975

Country of ref document: EP

Kind code of ref document: A1