WO2021187027A1 - 情報処理装置及び情報処理方法 - Google Patents

情報処理装置及び情報処理方法 Download PDF

Info

Publication number
WO2021187027A1
WO2021187027A1 PCT/JP2021/006864 JP2021006864W WO2021187027A1 WO 2021187027 A1 WO2021187027 A1 WO 2021187027A1 JP 2021006864 W JP2021006864 W JP 2021006864W WO 2021187027 A1 WO2021187027 A1 WO 2021187027A1
Authority
WO
WIPO (PCT)
Prior art keywords
information processing
processing device
address
packet
banks
Prior art date
Application number
PCT/JP2021/006864
Other languages
English (en)
French (fr)
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 EP21771978.0A priority Critical patent/EP4002106A4/en
Priority to JP2021549697A priority patent/JP7006858B1/ja
Priority to US17/637,621 priority patent/US20220283947A1/en
Publication of WO2021187027A1 publication Critical patent/WO2021187027A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0853Cache with multiport tag or data arrays
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing

Definitions

  • the present invention relates to an information processing device and an information processing method.
  • Patent Document 1 receives mask information associated with vector data, loads data elements acquired from storage positions corresponding to each address of a plurality of addresses as indicated by the mask information, and loads the storage positions thereof.
  • a processor that has the logic to reserve for subsequent operations provides vector instructions that enable efficient synchronization and reduction operations by performing atomic SIMD (Single-Instruction Multiple Data) operations.
  • SIMD Single-Instruction Multiple Data
  • a summation operation that includes the following indirect address references is called a list summation operation.
  • the list summation operation may not be possible in a device provided with a vector operation processing mechanism due to the duplication of the indirect reference addresses L (I). In this case, the vector processing unit cannot perform vector processing, and must perform processing by a large number of scalar processing and memory access.
  • An example of an object of the present invention is to provide an information processing device and an information processing method that solve the above-mentioned problems.
  • the information processing device includes a storage device including a plurality of banks which are independently readable and writable storage areas, and a processing device which can access the plurality of banks in parallel.
  • a loop unit in a loop control statement including an index array address and a generation means for generating a packet for storing an element of vector data, and each of a plurality of banks corresponds to the corresponding address in the packet unit.
  • a series of processing for reading data to be processed, arithmetic processing, and storing the value of the arithmetic result is performed atomically at the same time.
  • the information processing method is based on an information processing device including a storage device having a plurality of banks which are independently readable and writable storage areas, and a processing device having access to the plurality of banks in parallel.
  • An information processing method to be executed which is a loop unit in a loop control statement, a step of generating a packet for storing an index array address and an element of vector data, and a packet unit in each of the plurality of banks. It has a step of atomically performing a series of processing for reading the data corresponding to the corresponding address and performing the arithmetic processing for storing the value of the arithmetic result.
  • FIG. 1 is a diagram showing a configuration of an information processing device 100 according to the first embodiment.
  • the information processing apparatus 100 according to the first embodiment issues an LVA (List Vector Add) instruction to a vector register storing data to be subjected to arithmetic processing, and performs arithmetic in the cache memory 3 (an example of memory).
  • LVA List Vector Add
  • Atomic processing means that atomicity is maintained, that is, it is treated as either the processing defined as a series is completed or no processing is executed, and when the processing is completed, the moment when the processing is completed. It is assumed that a series of processes have been executed.
  • the information processing device 100 performs vector calculation processing.
  • the information processing apparatus 100 performs the arithmetic processing related to the loop control statement by the arithmetic unit 312 of the cache memory 3.
  • the information processing device 100 includes a core 1 and a cache memory 3.
  • Core 1 is an example of a processing device (an example of a processor).
  • the cache memory 3 is an example of a storage device.
  • the core 1 is a device provided in a CPU (Central Processing Unit) and performs arithmetic processing.
  • the information processing device 100 shown in FIG. 1 is a multi-core computer including a plurality of cores 1.
  • the information processing apparatus 100 may be a single-core computer having one core 1, a dual-core computer having two cores 1, or a quad-core computer having four cores 1.
  • the core 1 includes an instruction issuing unit 11, an address calculation unit 12, and a crossbar 13.
  • the instruction issuing unit 11 reads (fetches) a source program from a main storage device (not shown) connected to the core 1 and performs processing such as decoding, instruction issuance, and arithmetic processing.
  • the command issuing unit 11 includes a scalar control unit 111 and a vector control unit 112.
  • the vector x composed of the loop including the indirect reference is called the first vector.
  • a vector containing an indirect reference is an array whose subscript is specified by another array.
  • the vector y that does not include an indirect reference is called a second vector.
  • the vector l indicating the indirect reference address is an example of the index array.
  • the scalar control unit 111 issues an instruction to read the first vector data and the second vector data to be arithmetically processed from the main memory (not shown) connected to the core 1 before executing the LVA instruction. Issuance to.
  • the vector control unit 112 executes a VLD instruction (Vector Load) for acquiring the first vector data and the second vector data, respectively. By executing the VLD command, the vector control unit 112 acquires the first vector data and the value of the first vector data and the value of the second vector data from the main memory that stores the second vector data. And expand to different vector registers.
  • VLD instruction Vector Load
  • the vector control unit 112 accepts the LVA instruction issued by the scalar control unit 111, and starts processing the LVA instruction based on the vector data stored in the vector register used in the LVA instruction.
  • the vector control unit 112 sends the vector data stored in the vector register related to the LVA instruction to the address calculation unit 12.
  • the vector data stored in the vector register related to the LVA instruction is a value of the first vector data shown in FIG. 2 and a value of the second vector data.
  • the value of the first vector data and the value of the second vector data are stored in the vector register in advance before the arithmetic processing of the loop control statement.
  • the information processing apparatus 100 stores the value of the first vector data and the value of the second vector data in the vector register by the following operations.
  • the address calculation unit 12 accepts the value of the first vector data and the value of the second vector data from the vector control unit 112, and converts the value of the first vector data into a physical address. Further, the address calculation unit 12 generates a packet for storing the converted physical address of the first vector data, the first element, and the second element in the loop unit in the loop control statement, and applies the packet to the crossbar 13. Send a packet. At this time, the first element pointing to the same address is sent as a packet in the order of the elements, so that the order is guaranteed even if they are duplicated.
  • the address calculation unit 12 is an example of the generation means.
  • the first element is an element of the first vector data.
  • the second element is an element of the second vector data.
  • the crossbar 13 receives the packet sent by the address calculation unit 12, and simultaneously sends each packet to the corresponding bank 31 of the cache memory 3 based on the address included in the packet.
  • the crossbar 13 is an example of a sending means. For example, the crossbar 13 compares the bank information, which is the information associated with the preset address and the bank 31, with the address included in the packet sent by the address calculation unit 12, and the bank associated with the address. Identify 31. Further, the crossbar 13 sends a packet to the specified bank 31.
  • each address is associated with a different bank. That is, if the address is different, the bank 31 transmitted by the crossbar 13 is different. Further, the crossbar 13 is set so that packets related to the same address are not transmitted at the same time. That is, the crossbar 13 does not send a plurality of packets to the same bank 31 at the same time. For example, the crossbar 13 does not simultaneously send out a plurality of packets for overlapping addresses.
  • the crossbar 13 stores duplicate addresses in a buffer (not shown) included in the information processing apparatus 100, and sends out packets related to the addresses one by one at a fixed timing. When there are three overlapping packets at a specific address, the crossbar 13 sends out the packet three times for the specific bank 31 corresponding to the address.
  • the crossbar 13 sends out one by one, so that the bank 31 can perform arithmetic processing atomically. Further, in the information processing apparatus 100 according to the first embodiment, the core 1 and the cache memory 3 are connected by a wire by an output port. That is, the crossbar 13 sends a packet to the output port corresponding to the specified bank 31, and then sends the packet to the bank 31 corresponding to the packet.
  • the line connected between the core 1 and the cache memory 3 is the network between the core 1 and the cache memory 3, but the connection form does not matter.
  • the cache memory 3 is a high-speed small-capacity memory used to hide the delay of the main storage device when the CPU including the core 1 acquires information and to fill the performance difference between the CPU and the main storage device.
  • the cache memory 3 is a shared memory that can be accessed from a plurality of cores 1 included in the information processing apparatus 100.
  • the cache memory 3 includes a plurality of banks 31A, 31B, 31C, .... When banks 31A, 31B, 31C, ... Are not distinguished, they are referred to as bank 31.
  • the plurality of cores 1 included in the information processing apparatus 100 can access the cache memory 3 all at once, and can access the cache memory 3 at the same time by the number of banks 31 included in the cache memory 3.
  • Bank 31 is an independently readable and writable storage area. Core 1 can access a plurality of banks in parallel.
  • the bank 31 includes a data array 311A, 311B, 311C, ..., a calculation unit 312A, 312B, 312C, ..., And a control unit 313A, 313B, 313C, ....
  • a data array 311A, 311B, 311C, ... are not distinguished, it is referred to as a data array 311.
  • the calculation unit 312A, 312B, 312C, ... Are not distinguished it is referred to as the calculation unit 312.
  • the control units 313A, 313B, 313C, ... Are not distinguished the control unit 313 is referred to.
  • reading of the data array 311 by the control unit 313, arithmetic processing by the arithmetic unit 312, and storage of the data array 311 by the control unit 313 are performed atomically as an example process. Will be.
  • the control unit 313 is provided in each bank 31 of the cache memory 3, accesses the data array 311 based on the address, and reads the data corresponding to the address from the cache line of the data array 311. Further, the control unit 313 stores the read data corresponding to the first element and the value obtained by adding the second element in the cache line of the data array 311 again based on the same address.
  • the calculation unit 312 is provided in each bank 31 of the cache memory 3, receives a packet sent from the crossbar 13 of the core 1, and performs calculation processing in units of packets. The detailed operation of the calculation unit 312 will be described later.
  • FIG. 3 is a flowchart showing the operation of the information processing device 100.
  • the information processing device 100 executes a vector load instruction (VLD instruction) for acquiring the value of the first vector data and the value of the second vector data (step S1). As a result, the information processing apparatus 100 stores the value of the first vector data and the value of the second vector data in the vector register.
  • the scalar control unit 111 reads the LVA instruction from the main storage device and sends it to the vector control unit 112.
  • the vector control unit 112 receives the LVA instruction sent in step S1 and executes the LVA instruction (step S2).
  • the vector control unit 112 sends the vector data stored in the vector register related to the LVA instruction to the address calculation unit 12 (step S3).
  • the vector data stored in the vector register related to the LVA instruction is a value of the first vector data related to the vector load in step S1 and a value of the second vector data.
  • the address calculation unit 12 accepts the value of the first vector data and the value of the second vector data in step S3, and converts the value of the first vector data into a physical address. Further, the address calculation unit 12 generates a packet for storing the converted physical address of the first vector data and the element of the second vector data in the loop unit in the loop control statement, and sends the packet to the crossbar 13. Send (step S4).
  • the crossbar 13 receives the packet of step S4 and simultaneously sends each packet to the corresponding bank 31 of the cache memory 3 based on the address included in the packet (step S5).
  • the control unit 313 of each bank 31 determines whether or not the address is present in the data array 311 of the bank 31 based on the address included in the packet transmitted in step S5 (step S6). For example, the control unit 313 compares the address with the data array information, which is the information associated with the address and the data array 311, and determines whether or not the address is in the data array 311.
  • step S6 When the control unit 313 determines that the address of the packet sent out in step S5 is in the data array 311 (step S6: YES), the control unit 313 accesses the data array 311 based on the address to obtain the first vector data. Read the cache line containing the first element indicated by the element. After that, the control unit 313 extracts the first element from the address of the packet from the read cache line, and sends the first element together with the second element of the second vector data element to the calculation unit 312 (step S7).
  • step S7 the calculation unit 312 performs calculation processing based on the first element and the second element, which are the values sent in step S7 (step S8). That is, the calculation unit 312 performs an addition process of the data corresponding to the address which is the first element and the second element.
  • step S9 the control unit 313 determines that the address of the packet sent in step S8 does not exist in the data array 311 (step S6: NO)
  • the control unit 313 accesses the main storage device based on the address. Then, the data corresponding to the address is read out (step S9).
  • the control unit 313 stores the data read from the main storage device in the cache line, and again determines the comparison and match of the addresses.
  • the control unit 313 reads the data corresponding to the address from the cache line. After that, the control unit 313 extracts the first element from the address of the packet from the read cache line, and sends the first element together with the second element to the calculation unit 312 (step S7).
  • step S9 the calculation unit 312 performs calculation processing based on the value sent in step S9 (step S8). That is, the calculation unit 312 performs an addition process of the data corresponding to the address which is the first element and the second element.
  • the control unit 313 stores the value obtained by the arithmetic processing in step S8 in the data array 311 based on the packet address (step S10).
  • the information processing apparatus 100 can prevent the address to be the target of the LVA instruction from being rewritten by a subsequent store or the like.
  • the embodiment of the present invention is not limited to the above-mentioned specific embodiment, and a predetermined vector instruction or the like is not omitted by performing arithmetic processing atomically in a plurality of banks of the cache memory 3. However, the main memory access can be reduced and the arithmetic processing can be speeded up.
  • the crossbar 13 identifies the bank 31 based on the address and sends out the packet, when the arithmetic processing related to the same address is performed, the arithmetic processing in the arithmetic unit 312 of the same bank 31 and the data array 311. Is stored. Even in such a case, packets are waited for in the buffer of the cache memory 3 related to the same bank 31, and arithmetic processing is sequentially performed.
  • an information processing device having a configuration different from that of the above embodiment includes overlapping addresses, it is necessary for the scalar control unit to perform memory access to the bank a plurality of times, the scalar control unit to perform addition, and to write to the bank.
  • addition including overlapping addresses is completed by one LVA instruction. Further, the information processing apparatus 100 according to the first embodiment only closes to the bank 31 and executes addition a plurality of times, so that the number of memory accesses from the core 1 can be reduced.
  • each core 1 sends a packet related to a unique address to each bank 31, the arithmetic unit 312 of each bank 31 can perform arithmetic processing in parallel, reducing memory access related to arithmetic processing. Can be done.
  • the storage device in the above embodiment is the cache memory 3
  • the storage device may be the main memory.
  • the address calculation unit 12 guarantees the packet transmission order for the duplicated addresses to enable continuous execution.
  • the compiler identifies the loop including the duplicated addresses in advance and duplicates the packets. Efficiency can also be improved by issuing LVA instructions a plurality of times as many times as the number of addresses to be issued.
  • the cache memory 3 in the above embodiment is connected to the core 1, the cache memory 3 may be provided in the core 1. That is, the storage device included in the information processing device 100 may be the cache memory included in the core 1.
  • the information processing device 100 includes a storage device including a plurality of banks 31 which are independently readable and writable storage areas, and a processing device which can access the plurality of banks in parallel.
  • the processing device includes an index array address and a generation means for generating a packet for storing an element of vector data, which is a loop unit in a loop control statement, and each of the plurality of banks 31 corresponds to a packet unit.
  • a series of processing for reading the data corresponding to the address to be processed, performing arithmetic processing, and storing the value of the arithmetic result is performed atomically at the same time.
  • the information processing device 100 atomically performs arithmetic processing and storage in packet units in a plurality of banks 31 of the storage device. As a result, the user of the information processing apparatus 100 can reduce the memory access related to the arithmetic processing of the list vector including the indirect reference whose value is duplicated.
  • the processing device of the information processing device 100 is provided with a transmission means for identifying a bank 31 to transmit the packet based on the address of the index array stored in the packet and transmitting the packet to the bank 31.
  • the bank 31 receives the transmitted packet and performs arithmetic processing.
  • the information processing device 100 identifies a bank 31 that sends a packet based on an address.
  • the information processing device 100 performs arithmetic processing in packet units in the specified bank 31.
  • the user of the information processing apparatus 100 can reduce the memory access related to the arithmetic processing of the vector including the indirect reference whose value is duplicated.
  • the storage device of the information processing device 100 is connected to the processing device by wire or wirelessly. As a result, even in the information processing device 100 in which the processing device and the storage device are separated, the user of the information processing device 100 reduces the memory access related to the arithmetic processing of the vector including the indirect reference whose value is duplicated. be able to.
  • the storage device of the information processing device 100 is provided inside the processing device. As a result, even if the storage device is the information processing device 100 provided inside the processing device, the user of the information processing device 100 can reduce the memory access related to the arithmetic processing of the vector including the indirect reference whose value is duplicated. Can be done.
  • the storage device of the information processing device 100 is the cache memory 3.
  • the user of the information processing apparatus 100 can reduce the memory access related to the addition processing of the vector including the indirect reference whose value is duplicated by using the plurality of banks 31 of the cache memory 3.
  • the information processing method includes information including a storage device including a plurality of banks 31 which are independently readable and writable storage areas, and a processing device which can access the plurality of banks 31 in parallel.
  • the information processing method it is possible to perform arithmetic processing in packet units in a plurality of banks 31 of the storage device. As a result, the user of the information processing method can reduce the memory access related to the arithmetic processing of the vector including the indirect reference whose value is duplicated.
  • the information processing apparatus 100 in the above embodiment performs arithmetic processing in each bank 31, but even if each bank 31 is provided with a buffer area in which packets can be waited for, the packet arithmetic processing can be performed in a plurality of banks 31. good. In this case, the information processing apparatus 100 can perform packet arithmetic processing using the other arithmetic units 312 without waiting for the arithmetic processing of the arithmetic unit 312 in each bank 31, and further performance improvement can be realized.
  • each bank 31 may perform packet arithmetic processing by the SIMD (Single Thread Multi-Threads) method or the SIMD (Single Instruction Multiple Data) method.
  • SIMD Single Thread Multi-Threads
  • SIMD Single Instruction Multiple Data
  • the information processing device 100 may be provided with a DMU (Direct Memory Unit) instead of the core 1. That is, the information processing device 100 may perform packet arithmetic processing using a plurality of banks 31 provided in the cache memory 3 connected to the DMU, which is a unit that controls DMA (Direct Memory Access).
  • DMU Direct Memory Unit
  • the arithmetic unit 312 in the above embodiment is an adder
  • the arithmetic unit 312 may be another arithmetic unit.
  • a multiplier is provided in addition to an adder, and by adding an LVM (List Vector Multiply) instruction, it is possible to speed up multiplication by replacing the above embodiment with multiplication.
  • LVM List Vector Multiply
  • FIG. 4 is a schematic block diagram showing a basic configuration of the information processing apparatus 100.
  • the configuration shown in FIG. 1 has been described as an embodiment of the information processing device 100, but the basic configuration of the information processing device 100 is as shown in FIG. That is, the configuration of the information processing device 100 according to the basic configuration is a configuration that does not include the crossbar 13 from the configuration of the information processing device 100 according to the first embodiment.
  • the information processing device 100 includes a storage device including a plurality of banks 31 which are independently readable and writable storage areas, and a processing device which can access the plurality of banks in parallel.
  • a loop unit in a loop control statement including an index array address and a generation means for generating a packet for storing an element of vector data, and each of the plurality of banks 31 performs arithmetic processing and arithmetic in the packet unit.
  • a series of processes for storing the resulting value are performed atomically at the same time.
  • the information processing device 100 atomically performs arithmetic processing and storage in packet units in a plurality of banks 31 of the storage device. As a result, the user of the information processing apparatus 100 can reduce the memory access related to the arithmetic processing of the vector including the indirect reference whose value is duplicated.
  • Each aspect of the present invention may be applied to an information processing device and an information processing method.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

情報処理装置は、独立して読み書き可能な記憶領域である複数のバンクを備える記憶装置と、複数のバンクに並行してアクセス可能な処理装置と、を備え、処理装置は、ループ制御文におけるループの単位で、インデックス配列のアドレスと、ベクトルデータの要素を格納するパケットを生成する生成手段と、を備え、複数のバンクのそれぞれは、パケットの単位で該当するアドレスに対応するデータの読み出しと演算処理と演算結果の値を格納する一連の処理を原子的に同時に行う。

Description

情報処理装置及び情報処理方法
 本発明は、情報処理装置及び情報処理方法に関する。
 特許文献1には、ベクトルデータに関連付けられたマスク情報を受け取り、当該マスク情報によって示されるように複数のアドレスの各アドレスに対応する記憶位置から取得されたデータ要素をロードし、それらの記憶位置をその後の動作のためにリザーブする論理を有するプロセッサが、原子的な(atomic)SIMD(Single-Instruction Multiple Data)動作を実行することにより、効率的な同期およびリダクション演算を可能にするベクトル命令を提供する技術が開示されている。
日本国特開2014-099194号公報
 次のような間接アドレス参照を含む総和演算のことをリスト総和演算と呼ぶ。
 DO I = 1, N
   X(L(I)) = X(L(I)) + Y(I)
 ENDDO
 リスト総和演算は、ベクトル演算処理の機構を備える装置において、間接参照のアドレスL(I)が重複することによりベクトル演算できない場合がある。この場合、ベクトル処理部ではベクトル処理できず、多数のスカラ処理とメモリアクセスによって処理せざるを得ない。
 本発明の目的の一例は、上述した課題を解決する情報処理装置及び情報処理方法を提供することにある。
 本発明の態様に係る情報処理装置は、独立して読み書き可能な記憶領域である複数のバンクを備える記憶装置と、複数のバンクに並行してアクセス可能な処理装置と、を備え、処理装置は、ループ制御文におけるループの単位で、インデックス配列のアドレスと、ベクトルデータの要素を格納するパケットを生成する生成手段と、を備え、複数のバンクのそれぞれは、パケットの単位で該当するアドレスに対応するデータの読み出しと演算処理と演算結果の値を格納する一連の処理を原子的に同時に行う。
 本発明の態様に係る情報処理方法は、独立して読み書き可能な記憶領域である複数のバンクを備える記憶装置と、複数のバンクに並行してアクセス可能な処理装置と、を備える情報処理装置によって実行される情報処理方法であって、ループ制御文におけるループの単位で、インデックス配列のアドレスと、ベクトルデータの要素を格納するパケットを生成するステップと、前記複数のバンクのそれぞれにおいて、パケットの単位で該当するアドレスに対応するデータの読み出しと演算処理を演算結果の値を格納する一連の処理を原子的に行うステップを有する。
 上記態様のうち少なくとも1つの態様によれば、値が重複する間接参照を含むリストベクトルの演算処理に係るメモリアクセスと命令発行数を減らすことができる。
一実施形態に係る情報処理装置の構成を示す図である。 一実施形態に係るループ制御文の一例を示す図である。 一実施形態に係る情報処理装置の動作を示すフローチャートである。 基本構成に係る情報処理装置の構成を示す図である。
〈第1の実施形態〉
《情報処理装置の構成》
 以下、図面を参照しながら実施形態について詳しく説明する。
 図1は、第1の実施形態に係る情報処理装置100の構成を示す図である。
 第1の実施形態に係る情報処理装置100は、演算処理の対象となるデータを格納したベクトルレジスタに対し、LVA(List Vector Add)命令を発行し、キャッシュメモリ3(メモリの一例)において、演算処理の対象のデータを原子的に処理する装置である。原子的に処理するとは、アトミック性が保たれる、つまり、一連のものとして定義された処理が完了したか1つも実行されないかのどちらかとして扱われ、処理が完了した場合には完了した瞬間に一連の処理が実行されたものとすることである。
 情報処理装置100はベクトル演算処理を行う。情報処理装置100は、演算処理の対象にループ制御文が含まれる場合に、キャッシュメモリ3の演算部312により当該ループ制御文に係る演算処理を行う。
 情報処理装置100は、コア1と、キャッシュメモリ3と、を備える。コア1は処理装置(プロセッサの一例)の一例である。キャッシュメモリ3は記憶装置の一例である。
《コアの構成》
 以下、コア1の構成について説明する。
 コア1はCPU(Central Processing Unit)に設けられ、演算処理を行う装置である。図1に示す情報処理装置100はコア1を複数個備えるマルチコア計算機である。例えば、情報処理装置100は、コア1を1つ備えるシングルコア計算機、コア1を2つ備えるデュアルコア計算機、コア1を4個備えるクアッドコア計算機であっても良い。
 コア1は、命令発行部11と、アドレス計算部12と、クロスバ13と、を備える。
 命令発行部11は、コア1と接続している主記憶装置(図示しない)からソースプログラムを読み込み(フェッチ)、デコード、命令発行、演算処理等の処理を行う。
 命令発行部11は、スカラ制御部111と、ベクトル制御部112と、を備える。
 図2のようなループ制御文において、間接参照を含むループによって構成されるベクトルxを第1ベクトルと呼ぶ。間接参照を含むベクトルとは、別の配列によって添字を指定される配列をいう。また、図2のようなループ制御文において間接参照を含まないベクトルyを第2ベクトルと呼ぶ。また、図2のようなループ制御文において間接参照アドレスを示すベクトルlはインデックス配列の一例である。
 スカラ制御部111は、LVA命令実行の前に、コア1と接続している主記憶装置(図示しない)から演算処理の対象となる第1ベクトルデータ、第2ベクトルデータを読み込む命令をベクトル制御部に対し発行する。
 ベクトル制御部112は、第1ベクトルデータと、第2ベクトルデータを、それぞれ取得するVLD命令(Vector Load)を実行する。ベクトル制御部112は、VLD命令を実行することにより、第1ベクトルデータと、第2ベクトルデータを記憶している主記憶装置から第1ベクトルデータの値と第2ベクトルデータの値とを取得してそれぞれ別のベクトルレジスタに展開する。
 ベクトル制御部112は、スカラ制御部111が発行したLVA命令を受け入れて、当該LVA命令で使用するベクトルレジスタに格納されたベクトルデータに基づいてLVA命令の処理を開始する。
 ベクトル制御部112は、当該LVA命令に関わるベクトルレジスタに格納されたベクトルデータをアドレス計算部12に送出する。上記LVA命令に関わるベクトルレジスタに格納されたベクトルデータとは、図2に示す第1ベクトルデータの値と、第2ベクトルデータの値である。
 第1ベクトルデータの値と、第2ベクトルデータの値は、ループ制御文の演算処理の前に予めベクトルレジスタに格納される。
 例えば、情報処理装置100は以下の動作により第1ベクトルデータの値と、第2ベクトルデータの値とを、ベクトルレジスタに格納する。
 アドレス計算部12は、ベクトル制御部112から第1ベクトルデータの値と第2ベクトルデータの値とを受け入れて、第1ベクトルデータの値を物理アドレスに変換する。また、アドレス計算部12はループ制御文におけるループの単位で、変換された第1ベクトルデータの物理アドレスと、第1要素と、第2要素とを格納するパケットを生成して、クロスバ13に当該パケットを送出する。この際、同一アドレスを指し示す第1要素は要素順にパケットとして送出されることで、重複していても順序が保証される。アドレス計算部12は生成手段の一例である。第1要素とは、第1ベクトルデータの要素である。第2要素とは、第2ベクトルデータの要素である。
 クロスバ13はアドレス計算部12が送出したパケットを受け入れて、パケットに含まれたアドレスに基づいて、各パケットをキャッシュメモリ3の対応するバンク31に同時に送出する。クロスバ13は送出手段の一例である。
 例えば、クロスバ13は、予め設定されたアドレスとバンク31とを関連付けた情報であるバンク情報に、アドレス計算部12が送出したパケットに含まれたアドレスを照らし合わせて、当該アドレスに関連付けられたバンク31を特定する。また、クロスバ13は、特定されたバンク31にパケットを送出する。
 バンク情報において、各アドレスは異なるバンクと関連付けられる。すなわち、アドレスが異なると、クロスバ13により送出されるバンク31が異なる。
 また、クロスバ13は同一アドレスに係るパケットを同時に送出することはないように設定される。すなわち、クロスバ13は、同じバンク31宛に同時に複数のパケットを送出しない。例えば、クロスバ13は、重複するアドレスにかかる複数のパケットを同時に送出しない。クロスバ13は、重複するアドレスを情報処理装置100が備えるバッファ(図示しない)に格納させ、一定のタイミングに当該アドレスにかかるパケットを1つずつ送出する。特定のアドレスにおいて重複するパケットが3つ存在する場合、クロスバ13は、当該アドレスに対応する特定のバンク31について、3回のパケットの送出を行う。重複するアドレスに係るパケットが存在する場合でも、クロスバ13が1つずつ送出するため、バンク31は原子的に演算処理をすることができる。
 また、第1の実施形態における情報処理装置100は、出力ポートにより、コア1とキャッシュメモリ3とが有線で接続される。すなわち、クロスバ13は特定されたバンク31に対応する出力ポートにパケットを送出することにより、当該パケット対応するバンク31に当該パケットを送出する。
 図1において、コア1と、キャッシュメモリ3との間で接続されている線はコア1とキャッシュメモリ3間のネットワークであるが、接続形態は問わない。
《キャッシュメモリの構成》
 以下、キャッシュメモリ3の構成について説明する。
 キャッシュメモリ3は、コア1を備えるCPUが情報を取得する際に主記憶装置の遅延を隠蔽し、CPUと主記憶装置の性能差を埋めるために用いる高速小容量メモリである。キャッシュメモリ3は、情報処理装置100が備える複数個のコア1からアクセス可能な共有メモリである。
 図1に示すように、キャッシュメモリ3は複数個のバンク31A、31B、31C、・・・を備える。バンク31A、31B、31C、・・・を区別しない場合には、バンク31という。情報処理装置100が備える複数個のコア1は、一斉にキャッシュメモリ3に対しアクセスすることができ、キャッシュメモリ3が備えるバンク31の数の分だけ同時にアクセスすることができる。バンク31は独立して読み書き可能な記憶領域である。コア1は、複数のバンクに並行してアクセス可能である。
 バンク31は、データアレイ311A、311B、311C、・・・と、演算部312A、312B、312C、・・・と、コントロール部313A、313B、313C、・・・と、を備える。なお、データアレイ311A、311B、311C、・・・を区別しない場合には、データアレイ311という。また、演算部312A、312B、312C、・・・を区別しない場合には、演算部312という。また、コントロール部313A、313B、313C、・・・を区別しない場合には、コントロール部313という。キャッシュメモリ3が備える複数のバンク31のそれぞれは、コントロール部313によるデータアレイ311の読み出し、演算部312による演算処理と、コントロール部313によるデータアレイ311の格納は、一例の処理として原子的に行われる。
 コントロール部313は、キャッシュメモリ3の各バンク31に設けられ、アドレスに基づいてデータアレイ311にアクセスし、当該アドレスに対応するデータをデータアレイ311のキャッシュラインから読み出す。また、コントロール部313は、読み出した第1要素に対応するデータと第2要素を加算した値を再度同じアドレスに基づいてデータアレイ311のキャッシュラインに格納する。
 演算部312は、キャッシュメモリ3の各バンク31に設けられ、コア1のクロスバ13から送出されたパケットを受け入れて、パケットの単位で演算処理を行う。
 演算部312の詳細な動作については後述する。
《情報処理装置の動作》
 以下、情報処理装置100の動作について説明する。
 図3は、情報処理装置100の動作を示すフローチャートである。
 情報処理装置100は、第1ベクトルデータの値と、第2ベクトルデータの値とを、取得するベクトルロード命令(VLD命令)を実行する(ステップS1)。これにより、情報処理装置100は、第1ベクトルデータの値と、第2ベクトルデータの値とを、ベクトルレジスタに格納する。スカラ制御部111は、主記憶装置からLVA命令を読み込み、ベクトル制御部112に送出する。
 ベクトル制御部112はステップS1で送出されたLVA命令を受け入れて、当該LVA命令を実行する(ステップS2)。
 ベクトル制御部112は、LVA命令に関わるベクトルレジスタに格納されたベクトルデータをアドレス計算部12に送出する(ステップS3)。上記LVA命令に関わるベクトルレジスタに格納されたベクトルデータとは、ステップS1のベクトルロードに係る第1ベクトルデータの値と、第2ベクトルデータの値である。
 アドレス計算部12は、ステップS3の第1ベクトルデータの値と第2ベクトルデータの値とを受け入れて、第1ベクトルデータの値を物理アドレスに変換する。また、アドレス計算部12はループ制御文におけるループの単位で、変換された第1ベクトルデータの物理アドレスと、第2ベクトルデータの要素とを格納するパケットを生成して、クロスバ13に当該パケットを送出する(ステップS4)。
 クロスバ13はステップS4のパケットを受け入れて、パケットに含まれたアドレスに基づいて、各パケットをキャッシュメモリ3の対応するバンク31に同時に送出する(ステップS5)。
 各バンク31のコントロール部313は、ステップS5で送出されたパケットに含まれるアドレスに基づいて、当該バンク31のデータアレイ311に当該アドレスはあるか否かを判定する(ステップS6)。例えば、コントロール部313はアドレスを、アドレスとデータアレイ311とが関連付けられた情報であるデータアレイ情報に照らし合わせて、当該アドレスがデータアレイ311にあるか否かを判定する。
 コントロール部313が、ステップS5で送出されたパケットのアドレスが、データアレイ311にあると判定した場合(ステップS6:YES)、当該アドレスに基づいてデータアレイ311にアクセスして、第1ベクトルデータの要素が示す第1要素を含むキャッシュラインを読み出す。その後、コントロール部313は、読み出したキャッシュラインから、パケットのアドレスから第1要素を抽出し、第2ベクトルデータの要素第2要素と共に第1要素を演算部312に送出する(ステップS7)。
 ステップS7の後、演算部312は、ステップS7で送出された値である第1要素と第2要素に基づいて演算処理を行う(ステップS8)。すなわち、演算部312は第1要素であるアドレスに対応するデータと第2要素との加算処理を行う。
 他方、コントロール部313が、ステップS8で送出されたパケットのアドレスが、データアレイ311に無いと判定した場合(ステップS6:NO)、コントロール部313は、当該アドレスに基づいて主記憶装置にアクセスして、アドレスに対応するデータを読み出す(ステップS9)。コントロール部313は、主記憶装置から読み出したデータをキャッシュラインに格納し、再度アドレスの比較一致の判定を行う。コントロール部313は、キャッシュラインからアドレスに対応するデータを読み出す。その後、コントロール部313は、読み出したキャッシュラインから、パケットのアドレスから第1要素を抽出し、第2要素と共に第1要素を演算部312に送出する(ステップS7)。
 ステップS9の後、演算部312はステップS9で送出された値に基づいて演算処理を行う(ステップS8)。すなわち、演算部312は第1要素であるアドレスに対応するデータと第2要素との加算処理を行う。
 コントロール部313は、ステップS8の演算処理により得られた値を、パケットのアドレスに基づいてデータアレイ311に格納する(ステップS10)。
 ステップS7でデータアレイ311の読み出しが発生し、ステップS10においてデータアレイ311への格納がある間、当該データアレイ311への他のアクセスは生じさせない原子的な操作、つまりこれ以上分けることのできない操作とすることで、情報処理装置100は、LVA命令の対象となるアドレスに対する後続のストア等による書き換えを防ぐことができる。本発明の実施形態は、上記の具体的な実施形態に限定されるものでなく、キャッシュメモリ3の複数のバンクにおいて原子的に演算処理を行うことにより、所定のベクトル命令などを省略しなくても、メインメモリアクセスを減らして、演算処理を高速化できる。
 また、クロスバ13は、アドレスに基づいてバンク31を特定してパケットを送出するため、同一アドレスに係る演算処理が行われる場合、同一のバンク31の演算部312での演算処理とデータアレイ311への格納が行われる。このような場合であっても、同一のバンク31に係るキャッシュメモリ3のバッファでパケットを待ち合わせて、順次的に演算処理が行われる。上記の実施形態と異なる構成の情報処理装置は、重複するアドレスを含む場合、バンクに対しスカラ制御部が複数回メモリアクセスを行い、スカラ制御部で加算を行い、バンクに書き込む必要がある。これに対し、第1の実施形態に係る情報処理装置100によれば、重複するアドレスを含む加算が1度のLVA命令で完了する。また、第1の実施形態に係る情報処理装置100は、バンク31に閉じて加算を複数回実行するのみであり、コア1からのメモリアクセス回数を削減することができる。
 他方、各コア1が重複の無いアドレスに係るパケットを各バンク31に送出した場合、各バンク31の演算部312は並列して演算処理を行うことができ、演算処理に係るメモリアクセスを減らすことができる。
 また、上記の実施形態における記憶装置はキャッシュメモリ3であるが、記憶装置はメインメモリであっても良い。
 また、上記の実施形態においては、重複するアドレスに対しアドレス計算部12がパケットの送出順序を保証することで連続実行を可能としたが、コンパイラによって重複するアドレスを含むループをあらかじめ特定し、重複するアドレスの数だけ複数回のLVA命令を発行することでも効率を高めることができる。
 また、上記の実施形態におけるキャッシュメモリ3はコア1と接続されているが、キャッシュメモリ3はコア1に設けられても良い。すなわち、情報処理装置100が備える記憶装置は、コア1が備えるキャッシュメモリであっても良い。
《作用・効果》
 本発明の実施形態に係る情報処理装置100は、独立して読み書き可能な記憶領域である複数のバンク31を備える記憶装置と、複数のバンクに並行してアクセス可能な処理装置と、を備え、処理装置は、ループ制御文におけるループの単位で、インデックス配列のアドレスと、ベクトルデータの要素を格納するパケットを生成する生成手段と、を備え、複数のバンク31のそれぞれは、パケットの単位で該当するアドレスに対応するデータの読み出しと演算処理と演算結果の値を格納する一連の処理を原子的に同時に行う。
 情報処理装置100は、記憶装置の複数のバンク31にてパケットの単位で演算処理と格納を原子的に行う。これにより、情報処理装置100のユーザは、値が重複する間接参照を含むリストベクトルの演算処理に係るメモリアクセスを減らすことができる。
 また、情報処理装置100の処理装置は、パケットに格納されたインデックス配列のアドレスに基づいて、当該パケットを送出するバンク31を特定し、当該パケットを当該バンク31に送出する送出手段、を備え、バンク31は、送出されたパケットを受け入れて演算処理を行う。
 情報処理装置100は、アドレスに基づいてパケットを送出するバンク31を特定する。情報処理装置100は、特定されたバンク31にてパケットの単位で演算処理を行う。これにより、情報処理装置100のユーザは、値が重複する間接参照を含むベクトルの演算処理に係るメモリアクセスを減らすことができる。
 また、情報処理装置100の記憶装置は、処理装置と有線又は無線で接続される。
 これにより、処理装置と記憶装置とが分離された状態の情報処理装置100であっても、情報処理装置100のユーザは、値が重複する間接参照を含むベクトルの演算処理に係るメモリアクセスを減らすことができる。
 また、情報処理装置100の記憶装置は、処理装置の内部に設けられる。
 これにより、記憶装置が処理装置の内部に設けられた情報処理装置100であっても、情報処理装置100のユーザは、値が重複する間接参照を含むベクトルの演算処理に係るメモリアクセスを減らすことができる。
 また、情報処理装置100の記憶装置は、キャッシュメモリ3である。
 これにより、情報処理装置100のユーザは、キャッシュメモリ3の複数のバンク31を用いて、値が重複する間接参照を含むベクトルの加算処理に係るメモリアクセスを減らすことができる。
 本発明の実施形態に係る情報処理方法は、独立して読み書き可能な記憶領域である複数のバンク31を備える記憶装置と、複数のバンク31に並行してアクセス可能な処理装置と、を備える情報処理装置において、ループ制御文におけるループの単位で、インデックス配列のアドレスと、ベクトルデータの要素を格納するパケットを生成するステップと、複数のバンク31のそれぞれにおいて、パケットの単位で該当するアドレスに対応するデータの読み出しと演算処理と演算結果の値を格納する一連の処理を原子的に同時に行うステップを有する。
 情報処理方法を用いると、記憶装置の複数のバンク31にてパケットの単位で演算処理を行うことができる。これにより、情報処理方法のユーザは、値が重複する間接参照を含むベクトルの演算処理に係るメモリアクセスを減らすことができる。
〈他の実施形態〉
 以上、図面を参照して一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、様々な設計変更等をすることが可能である。
 上記の実施形態における情報処理装置100は、各バンク31において演算処理を行うが、各バンク31にパケットの待ち合わせが可能なバッファ領域を設けて、複数のバンク31でパケットの演算処理を行っても良い。この場合、情報処理装置100は各バンク31における演算部312の演算処理を待たずに、他の演算部312を用いてパケットの演算処理を行うことができ、さらなる性能向上を実現できる。
 また、各バンク31の演算部312は、SIMT(Single Instruction Multiple Threads)方式やSIMD(Single Instruction Multiple Data)方式で、パケットの演算処理を行っても良い。
 また、情報処理装置100は、コア1の代わりにDMU(Direct Memory Unit)を備えても良い。すなわち、情報処理装置100は、DMA(Direct Memory Access)を制御するユニットであるDMUに接続されたキャッシュメモリ3に複数設けられたバンク31を用いて、パケットの演算処理を行っても良い。
 また、上記の実施形態における演算部312は加算器であるが、演算部312は別の演算器でも良い。例えば、加算器に加え乗算器も備え、LVM(List Vector Multiply)命令を追加することで、上記の実施形態を乗算に置き換えた乗算の高速化も可能である。
〈基本構成〉
 図4は、情報処理装置100の基本構成を示す概略ブロック図である。
 上述した実施形態では、情報処理装置100の一実施形態として図1に示す構成について説明したが、情報処理装置100の基本構成は、図4に示すとおりである。
 すなわち、基本構成に係る情報処理装置100の構成は、第1の実施形態に係る情報処理装置100の構成から、クロスバ13を備えない構成である。
 基本構成に係る情報処理装置100は、独立して読み書き可能な記憶領域である複数のバンク31を備える記憶装置と、複数のバンクに並行してアクセス可能な処理装置と、を備え、処理装置は、ループ制御文におけるループの単位で、インデックス配列のアドレスと、ベクトルデータの要素を格納するパケットを生成する生成手段と、を備え、複数のバンク31のそれぞれは、パケットの単位で演算処理と演算結果の値を格納する一連の処理を原子的に同時に行う。
 情報処理装置100は、記憶装置の複数のバンク31にてパケットの単位で演算処理と格納を原子的に行う。これにより、情報処理装置100のユーザは、値が重複する間接参照を含むベクトルの演算処理に係るメモリアクセスを減らすことができる。
 この出願は、2020年3月18日に出願された日本国特願2020-047488号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
 本発明の各態様は、情報処理装置及び情報処理方法に適用してもよい。
 1 コア
 3 キャッシュメモリ
 11 命令発行部
 12 アドレス計算部
 13 クロスバ
 31 バンク
 111 スカラ制御部
 112 ベクトル制御部
 311 データアレイ
 312 演算部
 313 コントロール部

Claims (6)

  1.  独立して読み書き可能な記憶領域である複数のバンクを備える記憶装置と、
     複数の前記バンクに並行してアクセス可能な処理装置と、
     を備え、
     前記処理装置は、ループ制御文におけるループの単位で、インデックス配列のアドレスと、ベクトルデータの要素を格納するパケットを生成する生成手段と、を備え、複数の前記バンクのそれぞれは、前記パケットの単位で該当する前記アドレスに対応するデータの読み出しと演算処理と演算結果の値を格納する一連の処理を原子的に同時に行う
     情報処理装置。
  2.  前記処理装置は、前記パケットに格納された前記インデックス配列のアドレスに基づいて、当該パケットを送出する前記バンクを特定し、当該パケットを当該バンクに送出する送出手段、を備え、
     前記バンクは、送出された前記パケットを受け入れて前記演算処理を行う
     請求項1に記載の情報処理装置。
  3.  前記記憶装置は、前記処理装置と有線又は無線で接続される
     請求項1又は請求項2に記載の情報処理装置。
  4.  前記記憶装置は、前記処理装置の内部に設けられる
     請求項1又は請求項2に記載の情報処理装置。
  5.  前記記憶装置は、キャッシュメモリである
     請求項1から請求項4の何れか1項に記載の情報処理装置。
  6.  独立して読み書き可能な記憶領域である複数のバンクを備える記憶装置と、
     複数の前記バンクに並行してアクセス可能な処理装置と、
     を備える情報処理装置によって実行される情報処理方法であって、
     ループ制御文におけるループの単位で、インデックス配列のアドレスと、ベクトルデータの要素を格納するパケットを生成するステップと、
     複数の前記バンクのそれぞれにおいて、前記パケットの単位で該当する前記アドレスに対応するデータの読み出しと演算処理と演算結果の値を格納する一連の処理を原子的に同時に行うステップと、
     を有する情報処理方法。
PCT/JP2021/006864 2020-03-18 2021-02-24 情報処理装置及び情報処理方法 WO2021187027A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP21771978.0A EP4002106A4 (en) 2020-03-18 2021-02-24 INFORMATION PROCESSING DEVICE AND METHOD
JP2021549697A JP7006858B1 (ja) 2020-03-18 2021-02-24 情報処理装置及び情報処理方法
US17/637,621 US20220283947A1 (en) 2020-03-18 2021-02-24 Information processing device and information processing method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2020-047488 2020-03-18
JP2020047488 2020-03-18

Publications (1)

Publication Number Publication Date
WO2021187027A1 true WO2021187027A1 (ja) 2021-09-23

Family

ID=77768107

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/006864 WO2021187027A1 (ja) 2020-03-18 2021-02-24 情報処理装置及び情報処理方法

Country Status (4)

Country Link
US (1) US20220283947A1 (ja)
EP (1) EP4002106A4 (ja)
JP (1) JP7006858B1 (ja)
WO (1) WO2021187027A1 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0554059A (ja) * 1991-08-29 1993-03-05 Nec Corp ベクトル処理装置
JPH0619957A (ja) * 1992-06-16 1994-01-28 Nec Corp ベクトルデータ処理装置
JP2014099194A (ja) 2008-03-28 2014-05-29 Intel Corp 効率的な同期および並列リダクション演算を可能にするベクトル命令
JP2015530674A (ja) * 2012-09-28 2015-10-15 インテル・コーポレーション コンフリクト検出を実行し、レジスタの複数のコンテンツを別のレジスタの複数のデータ要素位置にブロードキャストするための複数のシステム、複数の装置及び複数の方法
JP2020047488A (ja) 2018-09-19 2020-03-26 株式会社オートネットワーク技術研究所 配線部材

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU4804493A (en) * 1992-08-07 1994-03-03 Thinking Machines Corporation Massively parallel computer including auxiliary vector processor
US6446165B1 (en) * 1999-07-30 2002-09-03 International Business Machines Corporation Address dependent caching behavior within a data processing system having HSA (hashed storage architecture)
JP2002108837A (ja) * 2000-09-29 2002-04-12 Nec Corp 計算機システムとその計算制御方法
US7627735B2 (en) * 2005-10-21 2009-12-01 Intel Corporation Implementing vector memory operations
US7792895B1 (en) * 2006-06-16 2010-09-07 Nvidia Corporation Efficient matrix multiplication on a parallel processing device
US10387151B2 (en) * 2007-12-31 2019-08-20 Intel Corporation Processor and method for tracking progress of gathering/scattering data element pairs in different cache memory banks
US9201828B2 (en) * 2012-10-23 2015-12-01 Analog Devices, Inc. Memory interconnect network architecture for vector processor
US20140115278A1 (en) * 2012-10-23 2014-04-24 Analog Devices, Inc. Memory architecture
US9612833B2 (en) * 2014-02-28 2017-04-04 Intel Corporation Handling compressed data over distributed cache fabric
CN115100018A (zh) * 2015-06-10 2022-09-23 无比视视觉技术有限公司 用于处理图像的图像处理器和方法
US10235299B2 (en) * 2016-11-07 2019-03-19 Samsung Electronics Co., Ltd. Method and device for processing data
JP6960479B2 (ja) * 2017-03-14 2021-11-05 アズールエンジン テクノロジーズ ヂュハイ インク.Azurengine Technologies Zhuhai Inc. 再構成可能並列処理

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0554059A (ja) * 1991-08-29 1993-03-05 Nec Corp ベクトル処理装置
JPH0619957A (ja) * 1992-06-16 1994-01-28 Nec Corp ベクトルデータ処理装置
JP2014099194A (ja) 2008-03-28 2014-05-29 Intel Corp 効率的な同期および並列リダクション演算を可能にするベクトル命令
JP2015530674A (ja) * 2012-09-28 2015-10-15 インテル・コーポレーション コンフリクト検出を実行し、レジスタの複数のコンテンツを別のレジスタの複数のデータ要素位置にブロードキャストするための複数のシステム、複数の装置及び複数の方法
JP2020047488A (ja) 2018-09-19 2020-03-26 株式会社オートネットワーク技術研究所 配線部材

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP4002106A4

Also Published As

Publication number Publication date
US20220283947A1 (en) 2022-09-08
EP4002106A1 (en) 2022-05-25
JP7006858B1 (ja) 2022-01-24
JPWO2021187027A1 (ja) 2021-09-23
EP4002106A4 (en) 2022-11-16

Similar Documents

Publication Publication Date Title
US11868628B2 (en) On-chip atomic transaction engine
US5689653A (en) Vector memory operations
US4964035A (en) Vector processor capable of high-speed access to processing results from scalar processor
KR20030074047A (ko) 멀티 프로세서 시스템
CN110908716B (zh) 一种向量聚合装载指令的实现方法
JP3797570B2 (ja) セマフォ命令用のセマフォ・バッファを用いた装置と方法
JP2017045151A (ja) 演算処理装置及び演算処理装置の制御方法
KR100281007B1 (ko) 마이크로 프로세서 및 이를 사용한 그래픽처리 장치 및 그래픽처리 방법
KR20220016993A (ko) 그래픽 처리 유닛(Graphics Processing Unit, GPU)의 명시적 독립 마스크 레지스터의 마스크 조작 방법
EP0521486B1 (en) Hierarchical structure processor
WO2021187027A1 (ja) 情報処理装置及び情報処理方法
JP4144153B2 (ja) ベクトルレジスタを備えたコンピュータにおけるベクトルテールゲーティング
JPH03233630A (ja) 情報処理装置
JP2000353092A (ja) 情報処理装置及びそのレジスタファイル切替方法
Vieira et al. Processing convolutional neural networks on cache
JP2020140284A (ja) ベクトル演算処理装置、ベクトル演算処理装置による配列変数初期化方法、及び、ベクトル演算処理装置による配列変数初期化プログラム
JP2013134670A (ja) 情報処理装置及び情報処理方法
US20240086260A1 (en) Method and apparatus for managing concurrent access to a shared resource using patchpointing
JPH07110769A (ja) Vliw型計算機
JPH10116191A (ja) 圧縮命令用バッファを備えたプロセッサ
JP2765882B2 (ja) 並列計算機,ベクトルレジスタ間データフロー同期装置およびネットワークプリセット装置
JP2000099496A (ja) キャッシュ記憶装置
JPS61264455A (ja) 主記憶一致制御方式
JPH0764960A (ja) データフロープロセサ
JPH0452986B2 (ja)

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref document number: 2021549697

Country of ref document: JP

Kind code of ref document: A

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

Ref document number: 21771978

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021771978

Country of ref document: EP

Effective date: 20220221

NENP Non-entry into the national phase

Ref country code: DE