WO2021157315A1 - グラフィックプロセッサ及び情報処理システム - Google Patents

グラフィックプロセッサ及び情報処理システム Download PDF

Info

Publication number
WO2021157315A1
WO2021157315A1 PCT/JP2021/001092 JP2021001092W WO2021157315A1 WO 2021157315 A1 WO2021157315 A1 WO 2021157315A1 JP 2021001092 W JP2021001092 W JP 2021001092W WO 2021157315 A1 WO2021157315 A1 WO 2021157315A1
Authority
WO
WIPO (PCT)
Prior art keywords
gpu
memory
processor
chip
data
Prior art date
Application number
PCT/JP2021/001092
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 US17/796,346 priority Critical patent/US12014443B2/en
Priority to EP21750518.9A priority patent/EP4102465A4/en
Priority to JP2021575687A priority patent/JP7339368B2/ja
Publication of WO2021157315A1 publication Critical patent/WO2021157315A1/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing
    • 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 a graphic processor and an information processing system.
  • GPU Graphic Processing Unit
  • one GPU chip executes image processing (particularly 3D graphics drawing processing) while using a large-capacity memory directly connected to the GPU chip based on instructions from software running on the CPU (Fig.). 4 (b)).
  • image processing particularly 3D graphics drawing processing
  • a large-capacity memory directly connected to the GPU chip based on instructions from software running on the CPU (Fig.). 4 (b)).
  • the scale that can be realized with one chip is limited due to factors such as the manufacturable scale and the power density.
  • the processing on the GPU is to draw one frame after grasping all the object information included in one dynamically determined scene.
  • the present invention has been made in view of the above circumstances, and one of its purposes is to provide a graphic processor and an information processing system capable of improving performance while satisfying the conditions of manufacturable scale and power density.
  • the bus fabric comprises a bus fabric that transfers data between them and a first interconnect that is connected to the command processor and geometry engine and exchanges data between the command processor and geometry engine of another graphic processor. , Data is exchanged with and from the bus fabric of the other graphic processor via the second interconnect, and the memory connected to the other graphic processor is accessibly connected.
  • a graphic processor and an information processing system capable of improving performance while satisfying the conditions of manufacturable scale and power density are provided.
  • FIG. 6 is an explanatory diagram (6) showing an example of a mode in which one virtual GPU or a scalable GPU is configured by the GPU according to the embodiment of the present invention.
  • FIG. 2 is an explanatory diagram (2) showing an example in which a plurality of applications are executed in a time-division manner and / or in a space-division manner by the GPU according to the embodiment of the present invention.
  • FIG. 3 is an explanatory diagram (3) showing an example in which a plurality of applications are executed in a time-division manner and / or in a space-division manner by the GPU according to the embodiment of the present invention.
  • FIG. 3 is an explanatory diagram (3) showing an example in which a plurality of applications are executed in a time-division manner and / or in a space-division manner by the GPU according to the embodiment of the present invention.
  • FIG. 6 is an explanatory diagram (4) showing an example in which a plurality of applications are executed in a time-division manner and / or in a space-division manner by the GPU according to the embodiment of the present invention.
  • FIG. 5 is an explanatory diagram (5) showing an example in which a plurality of applications are executed in a time-division manner and / or in a space-division manner by the GPU according to the embodiment of the present invention.
  • the information processing system 1 comprises a plurality of graphic processors (GPUs) 10a, 10b ... And memories 20a, 20b ... Corresponding to each GPU 10.
  • GPUs graphic processors
  • Each GPU 10 is connected to the CPU 30.
  • a memory 31 is connected to the CPU 30.
  • An example of the information processing system 1 of the present embodiment controls the plurality of GPUs 10 to operate as if they are one virtual GPU as a whole.
  • GPU10a, 10b ... are collectively referred to as GPU10.
  • memories 20a, 20b ... are collectively referred to as the memory 20.
  • FIG. 1 shows an example in which four GPUs 10 are used, the number of GPUs and the mode of connection are not limited to those illustrated in FIG. Another example will be described later on this point.
  • each GPU 10 includes a bus fabric 11, a control unit 14 including a command processor (CP) 12 and a geometry engine (GE) 13, a shader engine (SE) 21, and a texture unit (TU) 22. , A plurality of drawing processing units 25 including a rendering backend (RB) 23, and a cache 24, and an L3 cache 27.
  • CP command processor
  • GE geometry engine
  • SE shader engine
  • TU texture unit
  • a plurality of drawing processing units 25 including a rendering backend (RB) 23, and a cache 24, and an L3 cache 27.
  • the memories 20a, 20b ... Connected to each GPU 10 and the memory 31 connected to the CPU 30 constitute one memory space as a whole. That is, as illustrated in FIG. 3, the memory 20a, 20b ... And the memory 31 are assigned address areas that do not overlap each other in one memory space. In the example of FIG. 3, the memory 31 is allocated the address area from the addresses A0 to A1, the memory 20a is allocated the address area from the addresses A1 + 1 to A2, and so on.
  • the address areas are continuous address areas, and an example of forming one address area as a whole is shown.
  • the plurality of CPUs 30 / GPU10 in operation share a common global address space in this way, and it is possible to grasp which address area of the address space the resources of oneself (for each CPU / GPU) are allocated. ing.
  • the bus fabric 11 of the present embodiment holds the information of the address area allocated to the memory 20 connected to the GPU 10 including itself.
  • the address area individually assigned to each GPU 10 may be a continuous address area. Further, this allocation method may be either static or dynamic. Further, memory management may be performed by a page method via an MMU (Memory Management Unit) or the like.
  • MMU Memory Management Unit
  • the bus fabric 11 exchanges data with and from the bus fabric 11 of another GPU 10 via a predetermined inter-GPU interconnect (corresponding to the second interconnect of the present invention) CX, and is connected to the other GPU 10.
  • the memory 20 is connected so as to be accessible.
  • the bus fabric 11 shares the memory 31 connected to the CPU 30 via the predetermined inter-chip interconnect CZ and the memory 20 connected to itself as one memory. Since the inter-chip interconnect CZ and the processing operation performed via the inter-chip interconnect CZ are the same as the configuration in the conventional UMA, detailed description here will be omitted.
  • this bus fabric 11 accepts a memory access request with an address specified from each part in the GPU 10 to which it belongs.
  • the bus fabric 11 determines whether or not the address specified in the memory access request is an address in the address area allocated to the memory 20 connected to the GPU 10 to which the bus fabric 11 belongs.
  • the bus fabric 11 belongs to the bus fabric 11 in accordance with the memory access request. Access (process of reading data or writing data) to the memory 20 connected to the GPU 10.
  • the address specified in the memory access request is not an address in the address area allocated to the memory 20 connected to the GPU 10 to which the bus fabric 11 belongs, the address area including the specified address is Identify another assigned CPU 30 or GPU 10.
  • the bus fabric 11 may refer to the bus fabric 11 of the other GPU 10. Data is transferred via the inter-GPU interconnect CX, and the memory 20 connected to the other GPU 10 is accessed (data read or data write process).
  • the bus fabric 11 will refer to the memory 31 connected to the CPU 30 as described above. Access (data read or data write process) is performed via the inter-chip interconnect CZ.
  • the bus fabric 11 has a plurality of routes for sending and receiving data to and from other GPUs 10 and CPUs 30 connected to the memories 20 and 31 accessed by the connection topologies of the plurality of GPUs 10 and CPUs 30, the bus fabric 11 has a connection relationship. Based on this, the shortest route for data transfer is selected. Since such a method of route selection is widely known, the description thereof is omitted here.
  • bus fabric 11 may execute data transfer (so-called snooping) based on a predetermined cache coherence protocol via the inter-GPU interconnect CX.
  • data transfer so-called snooping
  • the cache used in GPU 10 in this embodiment will be described later.
  • the control unit 14 is connected to and from the control unit 14 of another GPU 10 so as to be able to transmit and receive data via an interchip interconnect CY (corresponding to the first interconnect of the present invention).
  • This inter-chip interconnect CY is between the control units 14 of a plurality of GPUs 10 (particularly between the GE 13s described later), the coordinate data of the shader before and after the tessellation, the connection information between the primitives in the 3D object, and the operation status of each GE 13. (Information indicating different information such as running, stopped, waiting for synchronization, waiting for data, abnormal state, etc.) is sent and received, and a handshake signal for synchronizing the processes of the mutual control units 14 is sent and received.
  • This control unit 14 includes at least one CP12 and at least one GE13.
  • the CP12 acquires (fetches) a command stream generated by the CPU 30, decodes it, and specifies a process to be executed based on the result of the decoding.
  • the CP12 dispatches the specified process to the SE21 or the like included in the drawing processing unit 25 to execute the specified process.
  • the CP12 includes a microcontroller that fetches and decodes a command stream and executes the command stream, and a DMA that performs resource management such as processing dispatch. Further, the CP12 may include a scheduler that adjusts the execution time of each process.
  • the CP 12 refers to not only the processing to be executed by itself but also the contents of the processing executed by the CP 12 of another GPU 10, and the drawing processing unit 25 or the like in the GPU 10 to which the CP 12 belongs. Manages the timing of processing (processing such as priority, termination / synchronization, and general execution flow such as thread management).
  • this CP12 has information representing the contents of the dispatched process (process dispatch instruction content), priority instruction, and operation status of each block in the chip such as SE21 with the CP12 of another GPU 10.
  • Information indicating (other than execution, stop, synchronization wait, data wait, abnormal status, etc.) and handshake signals for synchronizing processing are sent and received.
  • the same method as the control of the processing timing between processors in general distributed processing can be adopted.
  • the GE 13 performs processing as a surface shader, such as tessellation that converts the surface of a three-dimensional virtual object (3D object), which is instructed to be drawn by the CPU 30, into more detailed primitives.
  • a surface shader such as tessellation that converts the surface of a three-dimensional virtual object (3D object)
  • this GE13 processes a geometry shader that deletes or adds vertices by receiving input of primitives such as polygons consisting of a plurality of vertices, a vertex shader that transforms the coordinates of each vertex, and a primitive shader that integrates them. To execute.
  • primitives such as polygons consisting of a plurality of vertices, a vertex shader that transforms the coordinates of each vertex, and a primitive shader that integrates them.
  • the processing following the processing as a surface shader is obtained by dividing the screen (screen) for drawing the rendering result into parts (for example, 1/4 of each of the upper left, upper right, lower left, and lower right). It is possible to process in parallel by allocating a calculation block such as SE21 to be described later for each drawing target area to be drawn.
  • a calculation block such as SE21 to be described later for each drawing target area to be drawn.
  • SE21 calculation block
  • the drawing result of a 3D object spans a plurality of drawing target areas, the above drawing is performed. It is necessary to collectively process the 3D object before dividing it into the target area. Otherwise, it is difficult to maintain the consistency of each divided portion, and the processing efficiency cannot be improved.
  • this GE 13 also performs processing while exchanging coordinate data before and after processing such as tessellation with GE 13 of another GPU 10.
  • control unit 14 of each GPU 10 operates by any of the following methods. In each of the following operation examples, it is assumed that the route with the least transfer via the inter-chip interconnect CY and the route completed in the shortest time is selected.
  • control unit 14 of any one of the plurality of GPUs 10 functions as a representative of the control units 14 of all the GPUs 10.
  • the CP12a of the representative control unit 14 (referred to as the control unit 14a of the GPU 10a for convenience) should fetch the command stream output by the CPU 30, decode it, and execute it based on the result of the decoding. Identify the process. Then, the CP12a determines which drawing processing unit 25 SE21 or the like included in each GPU 10 processes the specified processing. For example, when the CP12a decides to process in the drawing processing unit 25 of the GPU 10a itself, the CP12a sends the specified processing instruction and the data necessary for the processing to the drawing processing unit 25 of the GPU 10a itself via the in-chip interconnect. Output and process.
  • the CP12a when the CP12a is determined to be processed by the drawing processing unit 25 of another GPU10 different from the GPU10a, for example, the GPU10b, the CP12a sends the specified processing instruction and the data required for the processing to the inter-chip interconnect CY. It is sent to CP12b of GPU10b via.
  • the CP12 of the GPU 10 that is not the representative (CP12 other than the CP12a of the GPU 10a in the above example) exclusively draws the processing instruction received from the representative CP12a and the data necessary for the processing of the GPU 10 to which the GPU 10 belongs. It functions as an interface between the drawing processing unit 25 and the representative CP12a (in an inactive state), such as by outputting the data to the processing unit 25 for processing.
  • the CP12b of the GPU 10b outputs the processing instruction received from the representative CP12a and the data necessary for the processing to the drawing processing unit 25 of the GPU 10b to which the GPU 10b belongs to perform the processing. ..
  • CP12a of GPU10a which is a representative, manages the processing of all GPU10 shaders, etc. by controlling the whole and performing independent control management (operating in the active state). do.
  • CP12a of GPU10a which is a representative, manages the processing of all GPU10 shaders, etc. by controlling the whole and performing independent control management (operating in the active state).
  • the GE13a of the representative GPU 10a (operates in an active state) performs processing as a surface shader such as tessellation of the surfaces of all 3D objects to be drawn. ..
  • the information of each 3D object (including the result of tessellation, etc.) is transmitted to the GE 13 of the GPU 10 including the corresponding drawing processing unit 25 (it belongs to itself).
  • the GE 13a outputs the information to the drawing processing unit 25 in the same GPU 10a as itself via the in-chip interconnect as it is).
  • the non-representative GPU10 GE13 (the GE13 other than the GPU10a GE13a in the above example) exclusively receives the processing instruction received from the representative GE13a and the data necessary for the processing. It will function as an interface between the drawing processing unit 25 and the representative GE13a (becomes an inactive state), such as outputting the drawing processing unit 25 of the GPU 10 to which the drawing processing unit 25 belongs to perform processing.
  • the GE13b of the GPU10b outputs the information of the 3D object received from the representative GE13a via the inter-chip interconnect CY to the drawing processing unit 25 of the GPU10b to which the GPU10b belongs, and causes the processing.
  • control unit 14 in one GPU 10 does not independently control the processing to be performed in all GPU 10, but the control unit 14 in one GPU 10 controls the whole.
  • the distributed processing may be performed on each GPU 10.
  • control unit 14 of any GPU 10 operates in an active state, but the specific GPU 10 (for example, GPU 10a) is the main, and the control unit 14a of the main GPU 10a is the other.
  • the distributed processing is performed using the control units 14b, c ... Of the GPUs 10b, c ... Of the above as subs.
  • CP12a of the control unit 14a of the main GPU 10a fetches the command stream output by the CPU 30, decodes and decodes the CP12b, c ... Of the other GPUs 10b, c ...
  • the process to be executed is specified based on the result of the decoding.
  • Each CP12b, c ... That functions as a sub determines which drawing processing unit 25 SE21 or the like of each GPU 10 has to process the specified processing. For example, when the CP12b decides to process in the drawing processing unit 25 of the GPU 10b to which it belongs, the CP12b transmits the specified processing instruction and the data necessary for the processing to the drawing processing unit of the GPU 10b itself via the in-chip interconnect. Output to 25 for processing.
  • each CP12 outputs the processing instruction received from the CP12 of another GPU 10 and the data necessary for the processing to the drawing processing unit 25 of the GPU 10 to which the CP12 belongs to perform the processing. Etc., it also functions as an interface between the drawing processing unit 25 and the representative CP12a.
  • the CP12a of the GPU 10a outputs the processing instruction received from the CP12b and the data necessary for the processing to the drawing processing unit 25 of the GPU 10a to which the GPU 10a belongs to perform the processing.
  • the GE13a of the main GPU10a is dispersed with respect to the GE13b, c ... Of the other GPUs 10b, c ..., and the tessellation of the surface of all 3D objects to be drawn is performed.
  • Process as a surface shader. Since a widely known method can be adopted for the control of this distributed processing, detailed description here will be omitted.
  • the GE13b, c ... Of the GPUs 10b, c ... which are the subs, based on the processing allocation performed by the CP12, obtains the information of each 3D object (including the result of tessellation) in the corresponding drawing processing unit 25.
  • the GE 13 When processing in the drawing processing unit 25 of the GPU 10 to which it belongs, the GE 13 directly sends the information to the drawing processing unit 25 in the same GPU 10 as itself via the in-chip interconnect. To output).
  • CP12 and GE13 of a plurality of GPUs 10 are used in combination by distributed processing, and function as one CP12 and GE13 as a whole.
  • CP12 and GE13 of all GPUs 10 it is not always necessary for CP12 and GE13 of all GPUs 10 to be active and perform calculations, and CP12 and GE13 of the main CPU 10 are used as subs according to the processing capacity required for the processing to be executed.
  • the number of CP12 and GE13 of the GPU 10 to be operated may be determined, and the number of CP12 and GE13 of the GPU 10 to be operated may be controlled to perform the processing in a distributed manner.
  • each GPU 10 may include a plurality of control units 14.
  • one control unit 14 in one GPU 10 may be represented or mainly used to execute the distributed processing by the first and second methods.
  • each control unit 14 in the GPU 10 may execute processing based on a separate application program.
  • the SE 21 uses the data input from the control unit 14 to execute arithmetic processing as various shaders such as a vertex shader and a pixel shader.
  • the SE21 generally has a built-in unit (Compute Unit: CU) that executes a plurality of processes in parallel by time division / spatial division. Further, the SE21 may execute a rasterization process for converting a polygon into a pixel value.
  • CU Computer Unit
  • the SE 21 reads the data stored in the memories 20 and 31 during the processing or writes the data to the memories 20 and 31, the SE 21 together with the information for designating the address to be read or written (writing the data).
  • the access request to the memory is output to the bus fabric 11 together with the data to be written. Then, the SE 21 receives the data read from the memories 20 and 31 from the bus fabric 11.
  • the TU 22 requests the bus fabric 11 to acquire texture data and various numerical tables from the memories 20 and 31. Then, the TU 22 receives the data acquired from the memories 20 and 31 by the bus fabric 11 in response to the request, filters the data as necessary, and outputs the data to the SE 21 which operates as a pixel shader.
  • the RB23 accepts the pixel value of the pixel shader output output by the SE21, performs an alpha test, a stencil test, a depth test, etc. to determine whether or not to draw each pixel, and when it is determined to draw, the pixel. Is written to the frame buffer (assuming that it is secured at a predetermined address in the memories 20 and 31). At the time of this writing, the RB 23 causes the bus fabric 11 to write the data related to the drawing of the pixel to the address corresponding to the pixel to be written in the address area set as the frame buffer in the memories 20 and 31. Request.
  • the SE21, TU22, and RB23 may output an access request directly to the bus fabric 11 when making an access request to the memories 20 and 31, but here, the SE21, TU22, and RB23 output the access request via the cache 24. And. Further, the SE21, TU22, and RB23 accept the data read from the memories 20 and 31 via the cache 24 (or from the cache 24).
  • a plurality of drawing processing units 25 such as SE21 (CU), TU22, and RB23 having the same functions may be built in parallel as in the case of a general GPU.
  • CP12 and GE13 cause a plurality of drawing processing units to execute drawing processing in parallel based on a predetermined distributed processing control method.
  • the cache 24 includes a plurality of cache lines (storage areas for storing cache tags and data in association with each other). Further, the cache 24 includes an address comparator, a way switch, and the like. Each cache line has a tag and a data line, and the tag includes control information such as a cache target address, a replacement rule control bit, a parity / ECC bit, and a line lock bit. Further, this tag may include information indicating which GPU 10 the data read from the memory 20 connected to is stored. The data line may include parity / ECC bits as well as cached data, for example.
  • the cache 24 is interposed between the SE21, TU22, RB23 and the bus fabric 11, and intercepts the access request output by the SE21, TU22, RB23 to the bus fabric 11. Determines whether the data of the address to be accessed is stored in one of the cache lines.
  • the cache 24 reads the data and any of SE21, TU22, and RB23, which are the request sources, if the data of the address to be accessed is stored in any of the cache lines. Output to cache.
  • the request is a write, if the data of the address to be accessed is stored in any of the cache lines, the cache 24 overwrites the requested data with the data.
  • this cache 24 outputs an intercepted access request to the bus fabric 11 if the data of the address to be accessed is not stored in any of the cache lines. Then, the cache 24 receives the data read from the memories 20 and 31 via the bus fabric 11, outputs this data to any of the access request sources SE21, TU22, and RB23, and outputs the accepted data to any of the access request sources SE21, TU22, and RB23. Store in one of the cache lines in association with the address related to the access request. This operation is similar to the operation of a general cache memory.
  • the cache 24 executes data transfer (so-called snooping) based on a predetermined cache coherence protocol between the bus fabric 11 and the GPU-to-GPU interconnect CX with another GPU 10 or the CPU 30. .. This maintains the integrity of the cached data. Further, the cache 24 may be built in the SE21, TU22, and RB23.
  • the cache 24 (L0, L1, L2 cache) of the present embodiment intervenes between the SE21, TU22, RB23 and the bus fabric 11, and the data stored in the cache line for each cache line is stored by itself.
  • a flag indicating whether the data is read from the memory 20 connected to the GPU 10 to which the device belongs or the memory 20 connected to the other GPU 10 may be associated and recorded.
  • This flag is set to 1 bit, and may only indicate whether it is read from the memory 20 connected to the GPU 10 to which it belongs or from the memory 20 connected to another GPU 10. Further, it may be a flag (a flag for specifying the GPU 10) which is composed of multiple bits and specifies which GPU 10 to which the user belongs or which other GPU 10 is connected to the memory 20 to store the data read from the memory 20.
  • the cache 24 interposed between the SE21, TU22, RB23 and the bus fabric 11 stores data read from the memory 20 connected to the GPU 10 to which the cache line belongs, or another GPU 10 for each cache line.
  • a setting flag for setting whether to store the data read from the memory 20 connected to the memory 20 may be associated and recorded.
  • the flag for this setting is also set to 1 bit, and whether it stores the data read from the memory 20 connected to the GPU 10 to which it belongs or the data read from the memory 20 connected to another GPU 10 is stored. It may be just a representation. Further, the flag for this setting is composed of multiple bits, and is a flag for specifying which GPU 10 to which the user belongs or which other GPU 10 is connected to the memory 20 to store the data read from the memory 20 (flag for specifying the GPU 10). ) May be used.
  • each block such as SE21, TU22, RB23, and bus fabric 11 that perform caching refers to the setting flag for each cache line, and the read data is read from the memory 20 connected to which GPU 10. It is determined in which cache line the data is to be stored, and the data is stored in the determined cache line.
  • the execution profile result of the application to be executed is collected in advance, and the data from the memory 20 of which GPU 10 is preferentially cached. You may.
  • each of SE21, TU22, and RB23 may include L0 and L1 caches (not shown).
  • the cache 24 outside the SE21, TU22, and RB23 functions as an L2 cache.
  • the L0 and L1 caches built in the SE21, TU22, and RB23 operate as caches in the upper layer of the cache 24 that functions as the L2 cache, and are provided in each of the SE21, TU22, and RB23, SE21 and TU22.
  • RB23 may be intervened between the functional block (core) for performing the operation and the cache 24.
  • the above flag and the setting flag are used only in the cache 24 that functions as the L2 cache.
  • the L3 cache 27 intervenes between the bus fabric 11 and the memory 20 connected to the GPU 10 to which the bus fabric 11 belongs, intercepts access to the memory 20 by the bus fabric 11, and caches the memory 20. Operates as a memory.
  • the present embodiment basically includes the above configuration, and therefore, the command stream stored in the predetermined addresses of the memories 20 and 31 by the CPU 30 is stored in the command stream, for example, the CP12a of the representative GPU 10a has its own bus fabric 11a. Read through. This data may be read by reading the data cached in the L3 cache 27.
  • CP12a decodes the command stream and identifies the process to be executed by decoding. Then, the CP12a determines which drawing processing unit 25 of which GPU 10 is to perform the specified processing, and dispatches the processing.
  • the drawing processing unit 25 that is to be processed is instructed to perform processing and data (storage destination address, etc.) necessary for processing is sent. At this time, these instructions and data transmission are performed via the inter-chip interconnect CY.
  • GE13a of GPU10a which is a representative, performs processing as a surface shader such as tessellation that converts the surface of a three-dimensional virtual object (3D object), which is instructed to be drawn by CPU30, into more detailed primitives. conduct. Then, the result of the processing is output to the GE13b, c ... Of the other GPUs 10b, c ... via the inter-chip interconnect CY.
  • a surface shader such as tessellation that converts the surface of a three-dimensional virtual object (3D object)
  • 3D object three-dimensional virtual object
  • the drawing processing unit 25 of each GPU 10 executes drawing processing in parallel.
  • the execution result is stored in the frame buffer secured in the memories 20 and 31 connected to each GPU 10 and the CPU 30 via the bus fabric 11 of each GPU 10.
  • the data stored in the frame buffer is read by, for example, the CPU 30, output to an image display processing unit (not shown), and displayed and output on a display or the like.
  • each GPU 10 is connected to each other via the inter-GPU interconnect CX, and each memory 20 and the memory 31 connected to the CPU 30 are shared with each other as one memory space as a whole. It is accessible. Further, the control units 14 that need to refer to the contents processed by the other GPU 10 are connected to each other via the inter-chip interconnect CY so as to be able to send and receive data. As a result, the processing can proceed in cooperation with each other as if the plurality of GPUs 10 are one GPU.
  • RAW values sample signals
  • the signal to be sampled may include not only the signal on the data bus but also the control signal. That is, the signal line of the in-chip interconnect to be sampled includes the main data interconnect (which may include the signal of the cache coherent protocol) that transfers the main data, the SE21 (CU) and the L1 cache, and the L1-L2 cache.
  • the main data interconnect which may include the signal of the cache coherent protocol
  • interconnect for accessing registers and memory 20 of each block of GPU10 from the control core of GPU10, power management control, for testing / debugging (DFT / DFD), interconnect for system control such as interrupt signal, interconnect including dedicated line unique to each block (for example, local data bus, handshake, control line, between CP12 and each SE21, between RB23 and SE21 , The signal line of the interconnect between GE13 and each SE21).
  • the GPU 10 on the transmitting side has a buffer and holds a data frame to be transmitted from the signal line of its own in-chip interconnect until the timing of transmitting the sampled RAW value.
  • the transmission timing may be instructed by the GPU 10 on the receiving side.
  • the GPU 10 on the receiving side has a buffer and holds the received data frame on the signal line of its own in-chip interconnect until the timing of outputting the RAW value obtained by desampling.
  • the GPU 10 that transmits and receives data frames transmits and receives data frames by controlling a predetermined flow such as a credit base. Note that this flow control is performed regardless of the handshake signal of the protocol used for exchanging data via the in-chip interconnect including the sampled signal line.
  • sampling and frame generation may be performed only when the signal on the signal line changes (changes from 0 to 1 and 1 to 0). Further, it may be decided whether or not to sample by referring to the in-chip interconnect including the signal line to be sampled and the control signal indicating whether or not the block in the GPU 10 connected to the interconnect is active. ..
  • GPU-to-chip interconnect CX and the chip-to-chip interconnect CY may operate asynchronously with each other.
  • the cache 24 included in the drawing processing unit 25 has a memory 20 in which the data in the stored cache line is connected to the GPU 10 to which the drawing processing unit 25 belongs, or a memory 20 in which the data in the cache line is connected to another GPU 10.
  • Information for identifying which GPU 10 (or CPU 30) the memory 20 (memory 31) connected to (or the memory 31 connected to the CPU 30) is read is held for each cache line. You may. This information is used in the processing of cache coherence.
  • the CP21 of the GPU 10 may pre-assign to each of the cache lines included in the cache 24 which GPU 10 is connected to the memory 20 (or the memory 31 connected to the CPU 30) to store the data read from. good.
  • the data read from the memory 20 connected to a certain GPU 10 is stored in the cache line allocated to store the data read from the memory 20.
  • the present embodiment provides a method of virtually configuring a huge image processing system having performance scalability with a multi-chip.
  • the 1GPU chip can execute multiple application processing at the same time by spatial division.
  • the GPU may be divided into chips A / B / C for each specified function.
  • the GPU cache line may be flagged as to which chip data is being cached.
  • -It may be possible to assign which chip data the GPU cache line caches. -This makes it possible to have dynamic performance scalability (from division processing within one chip to parallel processing by multiple chips). -It is possible to build a multi-chip system with static performance scalability.
  • the RAW value of the signal on the in-chip interconnect is sampled and sent to another GPU, and the other GPU desamples the received information to obtain the RAW value and outputs it to its own in-chip interconnect.
  • the technology hereinafter referred to as the interconnection technology by sampling
  • the contents of the specification and drawings of Japanese Patent Application No. 2019-189027 are incorporated by reference to the present specification.
  • this embodiment has a method of dividing 1 GPU, which has GPU-to-GPU connection ports (CX) (CY) and can operate independently, into A / B / C functions, and improves the cache efficiency of distributed memory.
  • CX GPU-to-GPU connection ports
  • CY GPU-to-GPU connection ports
  • the technology behind this embodiment is as follows. That is, as shown in FIG. 4, in an image processing system using a GPU chip, when performance improvement is required, it is common to use a GPU chip with improved performance. Based on the instructions of the software running on the CPU, one GPU chip executes image processing (especially 3D graphics drawing processing) while using the wideband and large-capacity memory directly connected to the GPU chip. That is, in the conventional example, the data required by the GPU chip is held in the memory directly connected to the GPU chip.
  • the scale that can be realized with one chip is limited due to factors such as the scale that can be manufactured and the power density. When aiming for further performance improvement, it is conceivable to use multiple GPU chips in one system at the same time, but there are some problems.
  • the processing on the GPU grasps all the object information contained in one dynamically determined scene, then draws one frame and draws it on the memory. Output to the frame buffer.
  • There are many dependencies / references in this series of processes and it is not easy to divide the processes into multiple GPU chips and memories that are individually connected and divided. With a memory separated from a plurality of GPU chips, it is difficult to resolve the dependency / reference relationship, and it is difficult to improve the processing performance (Fig. 4 (c)). It is also difficult to develop software that appropriately distributes 3D graphics drawing processing.
  • FIG. 4 (a) is superior in terms of processing efficiency, performance, and software development difficulty.
  • the scale that can be achieved is limited by factors such as the scale that can be manufactured and the power density.
  • the GPU 51 used in the information processing system of the present embodiment has the configuration illustrated in FIG. 5 (a) below.
  • each of the GPUs 51 has a port that can directly access the memory 52 of another GPU 51, like the own memory 52 (X).
  • this GPU 51 can directly connect the internal communication required for the own CP (Command Processor) and GE (Geometry Engine) to process integrally with the same block of another GPU 51. Has a port (Y).
  • the GPU 51 has a direct access port for sharing (UMA) its own memory with the CPU 53 (Z).
  • UMA direct access port for sharing
  • Each GPU 51 can proceed with processing in cooperation as if it were one GPU by connecting via these ports (virtually, the same configuration as in FIG. 4 (a) of the conventional example).
  • one GPU has a function that can operate as a single GPU by itself.
  • the port (X) corresponds to the above-mentioned interconnect CX
  • the port (Y) corresponds to the above-mentioned interconnect CY
  • the port (Z) corresponds to the above-mentioned interconnect CZ.
  • the number of parallel GPUs 51, CPU 53, and memory 52, the internal configuration of the GPU 51, and the connection topology of each chip are not limited to this example.
  • each part is as follows.
  • relatively thick arrows exemplify data signal lines
  • thin arrows exemplify control signal lines (Control Signal).
  • CP (Command Processor) 61 The processing content of the GPU is specified by placing the command stream (request group for primitive drawing and general-purpose calculation) generated by the CPU in the Queue on the memory. This command stream is fetched and decoded by the GPU CP61, decomposed into more primitive processes as needed, and dispatched to ShaderEngine63 (built-in SE, ComputeUnit (CU) 631) and the like. Will be executed.
  • the CP61 controls the processing of the entire GPU by managing the overall execution flow including the priority of processing requests issued inside the GPU, termination / synchronization processing, and thread management. When multiple SE63s etc. are in parallel in one GPU, all of them are put under control, and centralized management including optimization of processing allocation to each resource and synchronous processing is performed.
  • the CP61 in this embodiment also includes a microcontroller that executes code, a scheduler, a resource management function by time division / spatial division, and a DMA that performs copying.
  • GE Geometry Engine
  • Geometry Engine is an arithmetic block that mainly processes surface shaders, such as tessellation that transforms the surface of a 3D object into more detailed primitives.
  • subsequent processing of surface shaders such as geometry shaders that input primitives such as polygons consisting of multiple vertices and delete or add vertices, vertex shaders that perform coordinate conversion of each vertex, and primitive shaders that integrate them.
  • arithmetic blocks such as a primitive unit and SE63 (CU631) to each drawing target area in which the screen is divided.
  • the GE62 secures consistency and improves processing efficiency by performing batch processing on 3D objects before area division, and exchanges coordinate data before and after tessellation with each SE63 (CU631). It is necessary to perform the operation while (621: input / output). If there are multiple SE63s in parallel in one GPU, they need to be connected to all of them. Therefore, even when a single GPU is virtually constructed using multiple chips, the GE62 is connected to the SE63 and other devices in all the chips (622), and the GE62 operates in a coordinated manner while ensuring overall consistency. There is a need to. The GE62 also runs a vertex shader in place of the SE63 as needed. In FIG. 6, 621 and 622 conceptually represent data signal lines that exchange coordinate data and primitive configuration information.
  • SE (Shader Engine) 63 Shader Engine 63 (SE) is a block that is in charge of arithmetic processing of many types of shaders. In many cases, it has SIMD arithmetic units in parallel and uses SIMT and thread processing to perform multiple operations. It has a built-in function (ComputeUnit: CU) 631 that executes processing in parallel by time division and space division. It also has a rasterization function that converts polygons into pixel values. In order to improve performance, GPUs often have multiple SE63s (CU631) with the same function built in in parallel.
  • the processing of the vertex shader / pixel shader and general-purpose computing can be assigned to these multiple SE63s (CU631) for each drawing target area in which the screen is divided or for each general-purpose calculation division granularity, and each SE63 (CU631) is assigned. It is easy to execute processes that have no cross-references or dependencies in parallel.
  • the memory area for reading and writing is mainly local, but it may be global, and when constructing one GPU virtually using multiple chips, it is under the control of another GPU provided in the bus fabric (Bus Fabric). Use the path that refers to the memory of.
  • TU Textture Unit
  • RB Rastering Backend
  • etc. which will be described later, may also be referred to as SE.
  • the SE has a Level 0/1 cache and a local memory built-in, the Level 2 cache is between SE / TU / RB-Bus fabric, and the Level 3 cache is between Bus fabric-DRAM. Note that the cache hierarchy and local memory are not shown in FIG.
  • TU Textture Unit: Fetch texture data and other numerical tables from memory, filter them as necessary, and pass them to the pixel shader.
  • the GPU often incorporates a plurality of TUs having the same function in parallel in a form directly connected to the SE63, and it is easy to execute processing in parallel for each drawing target area in which the screen is divided.
  • the memory area to be referenced may be global, and when constructing one GPU virtually using multiple chips, use the path that refers to the memory under the other GPU provided in the bus fabric (Bus Fabric). do.
  • RB Rendering Backend: Performs Alpha / Stencil / Depth tests on the pixel values of the pixel shader output, and outputs the drawing result to the frame buffer.
  • GPUs often have multiple Rendering Backends (RB, or Raster Operation (ROP)) with the same function built in parallel in a form directly connected to SE63, and processing is performed in parallel for each drawing target area that divides the screen. Easy to carry out.
  • the memory area for reading and writing is mainly local, but it may be global, and when constructing one GPU virtually using multiple chips, it is under the control of another GPU provided in the bus fabric (Bus Fabric). Use the path that refers to the memory of.
  • the inter-GPU connection ports (X) and (Y) may use the interconnect technology by sampling.
  • the connection ports (X) and (Y) between GPUs may be multiplexed into one physical interface before transfer.
  • the interconnect technology by sampling can be implemented by either packetizing each transfer and then multiplexing or time-dividing the interface.
  • the notification / observation / handshake signal line used internally by the CP and GE blocks may be provided as a sideband signal.
  • GPU-to-GPU connection port Multiple CPU / GPU chips in operation share a common global address space, and the resources of their own chips are allocated to which address area. I know if it is.
  • the memory space of multiple GPU chips can be allocated to one continuous address area. This allocation may be static or dynamic. It may also be a page method via an MMU or the like.
  • connection relationship is known and the shortest route is selected for data transfer. can do.
  • the cache built into SE / TU / RB can cache access to its own chip and external chip.
  • the GPU-to-GPU connection port (X) supports a cache coherent protocol, and the L0 / L1 / L2 cache between each chip can be data consistent.
  • the cache built into SE / TU / RB may have a flag in each cache line indicating whether the cached data is the own chip or another chip. It may be possible to identify a plurality of chips with multiple bits, which indicates whether or not the chip is the own chip with only one bit.
  • control may be performed to preferentially leave the caching result of a specific chip.
  • the execution profile results of each application may be collected in advance, and control may be performed to preferentially leave the caching results of which chip.
  • the cache built into SE / TU / RB may have a flag for each cache line that allows you to specify whether it is your own chip, another chip, or which chip's data is to be cached. It may be possible to identify a plurality of chips with multiple bits, which indicates whether or not the chip is the own chip with only one bit. In the process of allocating the cache line to each chip, the execution profile result of each application may be collected in advance, and which chip may be preferentially cached may be controlled.
  • This cache has the following structure, for example.
  • the cache incorporates a plurality of cache lines, an address comparator, and a way switch. Also, one cache line has a pair of tags and a data line.
  • This tag has a length of 64 bits, for example, a tag of the cache target address, a replacement rule control bit, a parity / ECC bit, a line lock bit, and other control bits, and a bit indicating which chip memory is being cached. Have.
  • the data line has, for example, 288-bit length, 256-bit width caching data, and 32-bit parity / ECC bits. For example, having 128 cache lines with the above bit length constitutes a cache of 32 kilobytes in total.
  • L3 cache The cache built in between the memory of the own chip (L3 cache in this embodiment) is also divided for each if the memory of the own chip is divided into a plurality of parts.
  • Each L3 cache caches only the data for the memory directly under its own cache, and the same memory area is not held in another L3 cache at the same time.
  • FIG. 7 is an explanatory diagram showing an example of a method of configuring one virtual GPU by the plurality of GPUs of the present embodiment.
  • the next transfer takes place over the GPU-to-GPU connection port (Y): -Transfer between GEs using the connection port (Y) between GPUs: Coordinate data of the shader such as before and after tessellation, connection information between primitives in the object, operation status of each GE arithmetic unit (running / stopping / synchronization waiting / data waiting / (Abnormal state, etc.), synchronous handshake, etc.-Transfer between CPs using the GPU-to-GPU connection port (Y): Operation status of each block such as processing dispatch instruction content, priority instruction, SE, etc. Waiting / abnormal state, etc.), synchronous handshake, etc.
  • CP, GE distributed processing When a single GPU is virtually constructed using a plurality of GPU chips, the CP and GE blocks included in each GPU chip operate by any of the following methods (1) to (3). ..
  • CP and GE of a specific chip directly perform overall control (main) to maintain processing consistency (Figs. 7 (a) and 7 (b)).
  • the controller of the CP of the specific chip is mainly used for control management.
  • the arithmetic unit of the GE of a specific chip is mainly used.
  • CP and GE of other chips perform only I / F processing with own chip SE.
  • CP and GE of a specific chip indirectly supervise the whole, perform distributed processing, and maintain the consistency of processing (Fig. 7 (c)).
  • the controller of the CP of the specific chip places the controller of each chip CP under it and performs hierarchical control.
  • the GEs of each chip are combined to function as one GE, and arithmetic processing is performed in parallel. Select the number of blocks to be operated as a sub according to the required processing capacity of CP and GE based on the operating GPU range.
  • FIGS. 10 (a) and 10 (b) show an operation example of the method (3).
  • method (3) CP and GE in one GPU chip are divided into four, and distributed processing is supported by the same method as in methods (1) and (2). It can also be used to run multiple applications on a single GPU with spatial partitioning. Even with this method, the CP and GE in the same chip are not always the overall control.
  • chip A mainly incorporates Graphics / Compute frontend and integrated processing control system. It has a processing system that spans the entire GPU, which is difficult to parallelize. There is also the option of integrating chip A and the I / O hub die. There is also an option in which each chip B has the function of chip A after multiplexing the functions and eliminating chip A (Example 1b). It is costly by configuring the logic circuit that operates at the next highest speed after chip B as the center, and integrating it with the on-chip interconnect that connects each chip and the I / O Hub chip that is the hub of the peripheral I / F as needed. The combination maximizes the benefits of adopting a silicon process for logic circuits with excellent performance.
  • chip B mainly uses a shader engine (Unified Shader, programmable graphics calculator), rasterizer, rendering backend (raster operation such as Z / Stencil / Blend), local memory, L0 / L1 / L2 cache, etc. Built-in. It is mainly composed of functions with high arithmetic parallelism.
  • the chip area and performance (operating frequency) when the silicon process for high-performance logic circuits, which is the most miniaturized, is adopted by configuring mainly the arithmetic unit that moves at high speed, hard-wired logic, L0 / L1 high-speed cache, etc. And power consumption) should be a combination that maximizes the benefits.
  • Chip C is mainly composed of PHY and large-capacity cache memory (using on-chip SRAM, eDRAM, MRAM, FeRAM, etc.). Uses a silicon process that is advantageous when integrating analog circuits such as PHY and large-capacity on-chip memory (SRAM, eDRAM, MRAM, ReRAM, FeRAM, etc.).
  • FIG. 11 shows an example of realizing one GPU with three types of chips.
  • each type of GPU chip, chip A111a, chip B111b, and chip C111c is shown.
  • the on-chip interconnect straddling each chip samples, modulates, and transmits the signal on the signal line in the transmitting chip, decodes it on the receiving side, and outputs it on the corresponding signal line of the receiving chip. It may have a configuration (called a wrapper).
  • one GPU is configured by combining one chip A111a, two chips B111b, and four chips C111c.
  • FIG. 12 shows an example in which one GPU is composed of two types of chips (chips B and C).
  • a chip B111b and a chip C111c are shown as two types of chips.
  • the on-chip interconnect straddling each chip uses a wrapper to sample, modulate, and transmit the signal on the signal line in the transmitting chip, decode it on the receiving side, and correspond to the receiving chip. It may be output on the signal line.
  • two chips B111b and four chips C111c are combined to form one GPU.
  • FIG. 13 when configuring a scalable GPU with a large number of chips, a flexible configuration can be adopted according to the performance and functions required by the system.
  • FIG. 13 it is higher when it is used in a portable machine (FIG. 13 (a)), when it is configured as one GPU module (FIG. 13 (b)), when it is used in a home console or the like (FIG. 13 (c)).
  • a configuration example is shown when it is configured as a high-performance GPU module (FIG. 13 (d)) and when it is used in a server machine or the like (FIG. 13 (e)).
  • each type of GPU chip (chip A, B, C) has a wrapper for connecting the on-chip interconnect based on the number of opposed chips that can be connected. Build in as many as you need. If the system configuration has a number of chip combinations that is less than the maximum number of connectable chips, a part of the built-in wrapper may be unused.
  • FIG. 14 (a) When a plurality of types of chips A, B, and C as shown here are used, the 2 GPU system (FIG. 14 (a)) is shown in FIG. 14 (b) (FIG. 13 (e)) as illustrated in FIG. It can be realized by the configuration illustrated in the same).
  • the 4 GPU system illustrated in FIG. 14 (c) can be realized with the configuration illustrated in FIG. 14 (d).
  • FIG. 14B can be used in the configuration of one node of the server machine
  • FIG. 14D can be used in the configuration of one large node of the server machine.
  • the system as illustrated in FIG. 15 (a) can be realized by the configuration illustrated in FIG. 15 (b).
  • FIG. 16 is an explanatory diagram showing an example of mounting a scalable GPU package with a large number of chips.
  • FIG. 16A shows an example in which the GPU 1601 illustrated in FIG. 13C is configured as one package.
  • the GPU 1601 and the CPU 1602 are formed by using RDL (Re-Distribution Layer).
  • FIG. 16 (b) shows an example in which the GPU shown in FIG. 13 (e) is composed of GPUs (partial GPUs) 1610 and 1611 in two packages.
  • the chips A, B, and C arranged in the GPUs 1610 and 1611 are connected via a silicon interposer.
  • the silicon interposer portion is shown by a hatched rectangle.
  • the CPU 1612 is formed by using RDL (Re-Distribution Layer).
  • FIG. 17 to 21 are explanatory views showing an example in which a plurality of applications are executed in a time-division manner and / or in a space division manner using the GPU of the present embodiment.
  • a time division (Temporal partitioning) method Fig. 17 (a)
  • Fig. 17 (a) if there is a performance of 40 TFLOPS per GPU, if four applications operate in a time division manner, about one application per application. 10 TFLOPS can be used.
  • the time-division method illustrated in FIG. 17 (a) has a problem that the overhead of the context switch is large unless the hardware is solved. For example, when executing a game application, there are many problems. If the process is non-preempt and is executed synchronously, the time division method is not appropriate, that is, frequently and in small granularity. Not suitable when context switching occurs.
  • FIG. 17 (b) Even in the method of spatial partitioning (“Hardware partitioning” (Spatial partitioning) conceptually illustrated in FIG. 17 (b), if there is a performance of 40 TFLOPS per GPU, four applications are spatially partitioned. When working, about 10 TFLOPS are available per application. In the example of FIG. 17B, complete control is possible and real-time processing is possible. When blocks and units that operate in parallel are built into the GPU, it is also possible to operate multiple applications by using each of these parts that operate in parallel.
  • FIG. 18 shows an example in which four GPUs 1801, 1802, 1803, 1804 are composed of one chip A, two chips B, and four chips C, respectively.
  • FIG. 18A shows a case in which the first application App1 that can be executed using one CP and GE is executed in a spatial division, and in this case, as illustrated in FIG. 18C.
  • Each of the four CPs and the four GEs included in one GPU 1801 becomes active and executes application processing. At this time, both the connection ports (X) and (Y) between the GPUs are in the inactive state.
  • FIG. 18B shows an example of executing four applications App1, App2, App3, and App4 in a spatial division. It is assumed that these applications can be processed by using one CP and GE, respectively.
  • the four CPs and the four GEs included in one GPU 1801 are all active, and the processing of each application is executed by each of them.
  • the connection ports (X) and (Y) between the GPUs are both in the inactive state.
  • the context switch processing is also performed so that the processing progress can be maintained and the processing can be restarted.
  • FIG. 19A shows an example of executing five applications App1, App2, App3, App4, and App5 spatially by using a GPU having the same configuration as that of FIG.
  • each application requires more resources than the example of FIG. 18, but shows an example in which resources are not used across GPU chips. Therefore, as shown in FIG. 19C, each application is processed in each GPU chip 1801, 1802, 1803, 1804, and a part of CP and GE is active in each GPU chip 1801, 1802, 1803, 1804. It becomes. Also in this example, the connection ports (X) and (Y) between the GPUs are both in the inactive state.
  • FIG. 19B an example of executing two applications App1 and App2 in a spatial division is shown.
  • the application App1 has at least three chips B and six chips C. It is assumed that the application App2 is performing the process of using 9 chips C (the corresponding chip B is used for 5). Therefore, GPU 1801, 1802 is used to execute the application App 1, and GPU 1802, 1803, 1804 is used to execute the application App 2 (FIG. 19 (d)).
  • the main CPs and GEs for executing each application are active.
  • connection ports (X) and (Y) between the GPU 1801 and the GPU 1802, between the GPU 1802 and the GPU 1803, and between the GPU 1802 and the GPU 1804 are activated, and between the other (for example, the GPU 1801 and the GPU 1803).
  • the connection ports (X) and (Y) between GPUs are inactive.
  • execution of one application may be assigned to each of the chips A, B, and C of any GPU 1801 to 1804 (FIGS. 20A and 20C). Further, all GPUs 1801 to 1804 may be utilized by one application (FIGS. 20 (b) and 20 (d)).
  • an application that can be executed in one GPU may be processed across a plurality of GPUs 1801, 1802 (FIGS. 21 (a) and 21 (c)). If processing that spans multiple GPUs does not occur, even if 16 applications are operating in parallel (each chip C is executing a different application), the connection port between the GPUs ( Both X) and (Y) are in an inactive state (FIGS. 21 (b) and 21 (d)).

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Image Generation (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

コマンドプロセッサ及びジオメトリエンジンを有し、メモリと、他のグラフィックプロセッサに接続されるグラフィックプロセッサが、自身に接続されたメモリとの間でデータを授受するバスファブリックと、コマンドプロセッサ及びジオメトリエンジンに接続され、他のグラフィックプロセッサのコマンドプロセッサ及びジオメトリエンジンとの間でデータを授受する第1のインターコネクトとを備え、バスファブリックが、第2のインターコネクトを介して、他のグラフィックプロセッサのバスファブリックとの間でデータを授受し、他のグラフィックプロセッサに接続されるメモリにアクセス可能に接続されている。

Description

グラフィックプロセッサ及び情報処理システム
 本発明は、グラフィックプロセッサ及び情報処理システムに関する。
 GPU(Graphic Processing Unit)チップ(グラフィックプロセッサ)を用いた画像処理システムにおいて、性能向上が必要である場合、GPUチップを、より性能の高いGPUチップに置き換えて用いることが一般的である。
 この例では、CPUで動作するソフトウェアの指示に基づき、1つのGPUチップが、そのGPUチップに直結された大容量メモリを利用しながら画像処理(特に3Dグラフィックスの描画処理)を実行する(図4(b))。しかしながら1チップで実現できる規模には、製造可能規模・電力密度などの要因で限界がある。
 そこで更なる性能向上を目指す場合、1システム内で複数のGPUチップを同時に利用することが考えられる(図4(c))が、この場合にはいくつか技術的課題が生じる。
 まず、CPUソフトウェアの処理内容に従って、リアルタイムに3Dグラフィックスを描画するとき、GPU上の処理としては、動的に決まる1シーンに含まれるすべてのオブジェクト情報を把握したうえで1フレームを描画し、メモリ上のフレームバッファに出力する必要がある。この一連の処理には、多くの依存/参照関係があるので、複数のGPUチップと、それらに個別に接続され分断されているメモリに、処理を分割することが容易ではない。一般に複数のGPUチップと分断されたメモリでは、依存/参照関係の解決が困難であり、処理性能の向上が難しい。3Dグラフィックス描画処理を、適切に分散配置するソフトウェアを開発することも難易度が高い。
 なお、GPUチップを、汎用コンピューティング処理に用いる場合は、3Dグラフィックス描画と異なり、このような複数のGPUチップに対する分散処理が、実現できる場合もある。これらの処理に要求されるリアルタイム性が低く、複数CPUに対する分散処理と同様の技法を用いて実行できる場合があるからである。しかし、この場合も、性能向上率は限定されている。
 なお、CPUとGPUチップとがそれぞれ個別にメモリをもち、両者が分断されているよりも、ひとつの大容量メモリがCPUとGPUチップとによって共有されている形(いわゆるUMA:Unified Memory Architecture;図4(a))のほうが処理効率・性能・ソフトウェア開発難易度の面で優れる。しかし、この形態でも実現できる規模には、製造可能規模・電力密度などの要因で限界がある。
 このように、従来のGPUチップを用いた画像処理システムでは、性能の向上と、製造可能規模や電力密度の条件とを両立させることが困難であった。
 本発明は上記実情に鑑みて為されたもので、製造可能規模や電力密度の条件を満足しつつ、性能を向上できるグラフィックプロセッサ及び情報処理システムを提供することを、その目的の一つとする。
 上記従来例の問題点を解決する本発明の一態様は、コマンドプロセッサ及びジオメトリエンジンを有し、メモリと、他のグラフィックプロセッサに接続されるグラフィックプロセッサであって、自身に接続されたメモリとの間でデータを授受するバスファブリックと、前記コマンドプロセッサ及びジオメトリエンジンに接続され、他のグラフィックプロセッサのコマンドプロセッサ及びジオメトリエンジンとの間でデータを授受する第1のインターコネクトとを備え、前記バスファブリックが、第2のインターコネクトを介して、前記他のグラフィックプロセッサのバスファブリックとの間でデータを授受し、当該他のグラフィックプロセッサに接続されるメモリにアクセス可能に接続されているものである。
 本発明によると、製造可能規模や電力密度の条件を満足しつつ、性能を向上できるグラフィックプロセッサ及び情報処理システムを提供する。
本発明の実施の形態に係る情報処理システムの構成例を表すブロック図である。 本発明の実施の形態に係るグラフィックプロセッサの構成例を表すブロック図である。 本発明の実施の形態に係る情報処理システムが備える複数のグラフィックプロセッサにより構成されるメモリ空間の例を表す説明図である。 従来例のGPUを用いたシステムの構成例を表す説明図である。 本発明の実施の形態に係るGPUの例を表す構成ブロック図である。 本発明の実施の形態に係るGPUの内部構成例を表すブロック図である。 本発明の実施の形態に係る複数のGPUによる、仮想的な一つのGPUの構成方法の例を示す説明図である。 本発明の実施の形態に係る複数のGPUの分散処理の例を表す説明図である。 本発明の実施の形態に係る複数のGPUの分散処理の例を表すもう一つの説明図である。 本発明の実施の形態に係る複数のGPUの分散処理の例を表すさらにもう一つの説明図である。 本発明の実施の形態に係るGPUによる、仮想的な1つのGPU、あるいはスケーラブルなGPUを構成する態様の例を表す説明図(1)である。 本発明の実施の形態に係るGPUによる、仮想的な1つのGPU、あるいはスケーラブルなGPUを構成する態様の例を表す説明図(2)である。 本発明の実施の形態に係るGPUによる、仮想的な1つのGPU、あるいはスケーラブルなGPUを構成する態様の例を表す説明図(3)である。 本発明の実施の形態に係るGPUによる、仮想的な1つのGPU、あるいはスケーラブルなGPUを構成する態様の例を表す説明図(4)である。 本発明の実施の形態に係るGPUによる、仮想的な1つのGPU、あるいはスケーラブルなGPUを構成する態様の例を表す説明図(5)である。 本発明の実施の形態に係るGPUによる、仮想的な1つのGPU、あるいはスケーラブルなGPUを構成する態様の例を表す説明図(6)である。 本発明の実施の形態に係るGPUによる、複数のアプリケーションを時分割的及び/または空間分割的に実行する例を表す説明図(1)である。 本発明の実施の形態に係るGPUによる、複数のアプリケーションを時分割的及び/または空間分割的に実行する例を表す説明図(2)である。 本発明の実施の形態に係るGPUによる、複数のアプリケーションを時分割的及び/または空間分割的に実行する例を表す説明図(3)である。 本発明の実施の形態に係るGPUによる、複数のアプリケーションを時分割的及び/または空間分割的に実行する例を表す説明図(4)である。 本発明の実施の形態に係るGPUによる、複数のアプリケーションを時分割的及び/または空間分割的に実行する例を表す説明図(5)である。
 本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係る情報処理システム1は、図1に例示するように、複数のグラフィックプロセッサ(GPU)10a,10b…と、各GPU10に対応して設けられるメモリ20a,20b…とを含み、各GPU10は、CPU30に接続されている。またこのCPU30にはメモリ31が接続されている。本実施の形態の情報処理システム1の一例は、この複数のGPU10が、全体として、仮想的な一つのGPUであるかのように動作するよう制御するものである。
 なお、各GPUを区別する必要がない場合は、GPU10a,10b…を、GPU10と総称する。メモリについても同様に、メモリ20a,20b…を区別する必要のない場合は、メモリ20と総称する。
 また図1ではGPU10が4個用いられる場合の一例を示しているが、GPUの数及び接続の態様は、この図1に例示の限りではない。この点について別の例を後に述べる。
 各GPU10は、図2に例示するように、バスファブリック11と、コマンドプロセッサ(CP)12及びジオメトリエンジン(GE)13を含む制御ユニット14と、シェーダエンジン(SE)21,テクスチャユニット(TU)22,レンダリングバックエンド(RB)23、及びキャッシュ24を含む、複数の描画処理ユニット25と、L3キャッシュ27とを含む。
 本実施の形態の例において、各GPU10に接続されているメモリ20a,20b…と、CPU30に接続されているメモリ31とは、全体として一つのメモリ空間を構成する。すなわち図3にその概要を例示するように、各メモリ20a,20b…及びメモリ31には、一つのメモリ空間内で互いに重なり合わないアドレス領域が割り当てられる。図3の例では、メモリ31にはアドレスA0からA1までのアドレス領域が割り当てられ、メモリ20aには、アドレスA1+1からA2までのアドレス領域が割り当てられ…というように、各メモリ20,31に割り当てたアドレス領域が互いに連続するアドレス領域となっており、全体として一つのアドレス領域を構成する例が示されている。
 稼働中の複数のCPU30/GPU10は、こうして共通のグローバルなアドレス空間を共用しており、自身(CPU/GPUごと)のリソースが、当該アドレス空間のどのアドレス領域に割りあてられているかを把握している。具体的に本実施の形態のバスファブリック11は、自己を内包するGPU10に接続されたメモリ20に割り当てられたアドレス領域の情報を保持する。なお、GPU10ごとに個別に割り当てられたアドレス領域は連続したアドレス領域であってよい。また、この割りあての方法は、静的・動的いずれでもよい。さらに、MMU(Memory Management Unit)などを介してページ方式によりメモリ管理が行われてもよい。
[バスファブリックの構成・動作]
 バスファブリック11は、所定のGPU間インターコネクト(本発明の第2のインターコネクトに相当する)CXを介して、他のGPU10のバスファブリック11との間でデータを授受し、当該他のGPU10に接続されるメモリ20にアクセス可能に接続されている。またバスファブリック11は、所定のチップ間インターコネクトCZを介してCPU30に接続されたメモリ31と、自身に接続されたメモリ20とを一つのメモリとして共用する。このようなチップ間インターコネクトCZ及びそれを介して行われる処理動作は従来のUMAでの構成と同様のものであるので、ここでの詳しい説明を省略する。
 またこのバスファブリック11は、自身の属するGPU10内の各部から、アドレスを指定したメモリアクセス要求を受け入れる。バスファブリック11は、当該メモリアクセス要求において指定されたアドレスが、自身の属するGPU10に接続されたメモリ20に割り当てられたアドレス領域内のアドレスであるか否かを判断する。
 ここでバスファブリック11は、当該メモリアクセス要求において指定されたアドレスが、自身の属するGPU10に接続されたメモリ20に割り当てられたアドレス領域内のアドレスであれば、当該メモリアクセス要求に従って、自身の属するGPU10に接続されたメモリ20に対してアクセス(データの読み出し、またはデータの書き込みの処理)を行う。
 またバスファブリック11は、当該メモリアクセス要求において指定されたアドレスが、自身の属するGPU10に接続されたメモリ20に割り当てられたアドレス領域内のアドレスでなければ、当該指定されたアドレスを含むアドレス領域が割り当てられている他のCPU30またはGPU10を特定する。
 バスファブリック11は、当該メモリアクセス要求において指定されたアドレスが、他のGPU10に接続されたメモリ20に割り当てられたアドレス領域内のアドレスであれば、当該他のGPU10のバスファブリック11に対して、上記GPU間インターコネクトCXを介してデータ転送を行い、当該他のGPU10に接続されているメモリ20に対してアクセス(データの読み出し、またはデータの書き込みの処理)を行う。
 また、バスファブリック11は、当該メモリアクセス要求において指定されたアドレスが、CPU30に接続されたメモリ31に割り当てられたアドレス領域内のアドレスであれば、CPU30に接続されたメモリ31に対して、上記チップ間インターコネクトCZを介してアクセス(データの読み出し、またはデータの書き込みの処理)を行う。
 なお、バスファブリック11は、複数のGPU10やCPU30の接続トポロジーによってアクセスするメモリ20,31に接続された他のGPU10やCPU30との間でデータを送受するルートが複数ある場合は、当該接続関係に基づき、データ転送において最短となるルートを選択する。このようなルート選択の方法は、広く知られているので、ここでの説明は省略する。
 さらにこのバスファブリック11は、GPU間インターコネクトCXを介して、所定のキャッシュコヒーレンスプロトコルに基づくデータ転送(いわゆるスヌーピング)を実行してもよい。本実施の形態におけるGPU10で用いられるキャッシュについては後に述べる。
[制御ユニットの構成]
 制御ユニット14は、他のGPU10の制御ユニット14との間で、チップ間インターコネクトCY(本発明の第1のインターコネクトに相当する)を介してデータを送受可能に接続される。このチップ間インターコネクトCYは、複数のGPU10の制御ユニット14間(特に後に説明するGE13間)で、テッセレーションの前後でのシェーダの座標データや、3Dオブジェクトにおけるプリミティブ間接続情報、各GE13の動作ステータス(実行中,停止中,同期待ち,データ待ち,異常状態などの別を表す情報)を授受し、また、相互の制御ユニット14の処理を同期するためのハンドシェイク信号を授受する。
 この制御ユニット14は、少なくとも一つのCP12と、少なくとも一つのGE13を備える。CP12は、CPU30が生成したコマンド・ストリームを取得(フェッチ)してデコードし、当該デコードの結果に基づいて実行するべき処理を特定する。このCP12は、当該特定した処理を、描画処理ユニット25が備えるSE21等にディスパッチして実行させる。
 本実施の形態の一例においてこのCP12は、コマンド・ストリームのフェッチ、デコード、並びにその実行を行うマイクロコントローラと、処理のディスパッチ等のリソース・マネジメント等を行うDMAとを含む。さらにこのCP12は、各処理の実行時期を調整するスケジューラを含んでもよい。
 本実施の形態では、CP12は、自身が実行するべき処理だけでなく、他のGPU10のCP12が実行する処理の内容をも参照しつつ、自身の属するGPU10内での描画処理ユニット25等での処理のタイミング(優先順位や終了・同期等の処理、並びにスレッドの管理等の実行フロー全般)を管理する。
 具体的に、このCP12は、他のGPU10のCP12との間で、ディスパッチした処理の内容を表す情報(処理ディスパッチ指示内容)、優先順位の指示、SE21などのチップ内の各ブロックの動作ステータス(実行中,停止中,同期待ち,データ待ち,異常状態などの別)を表す情報や、処理を同期するためのハンドシェイク信号を授受する。この実行タイミングの制御は、一般的な分散処理におけるプロセッサ間での処理タイミングの制御と同様の方法を採用できる。
 GE13は、CPU30により描画するよう指示される、三次元の仮想的なオブジェクト(3Dオブジェクト)のサーフェスをより詳細なプリミティブへ変換するテッセレーションなど、サーフェスシェーダとしての処理を行う。
 またこのGE13は、複数の頂点からなるポリゴンなどのプリミティブの入力を受けて、頂点の削除や追加をおこなうジオメトリシェーダや、各頂点の座標変換をおこなうバーテックスシェーダ、それらを統合したプリミティブシェーダなどの処理を実行する。
 ここで、サーフェスシェーダとしての処理に引き続く処理は、レンダリングの結果を描画する画面(スクリーン)を、部分ごと(例えば左上、右上、左下、右下の1/4ずつの範囲)に分割して得られる描画対象領域ごとに、後に説明するSE21等の演算ブロックを割り当てることで並列的に処理できるものであるが、3Dオブジェクトの描画結果が複数の描画対象領域に跨がる場合などでは、上記描画対象領域に分割する前の3Dオブジェクトに対して一括して処理を行う必要がある。そうでなければ分割部分ごとの整合性の維持が困難であり、また処理効率も向上できないからである。
 そこで本実施の形態では、このGE13も、テッセレーション等の処理の前後の座標データを、他のGPU10のGE13との間で授受しつつ処理を行うこととする。
[制御ユニットによる分散処理]
 具体的に、複数のGPU10が、全体として、仮想的に一つのGPUとして機能するよう制御する場合、各GPU10の制御ユニット14は、次のいずれかの方法で動作する。なお、以下の動作例では、いずれにおいても、チップ間インターコネクトCYを介しての転送が最も少なく、また最も短時間で完了する経路を選択するものとする。
 (第1の方法) この方法では、複数のGPU10のいずれか一つのGPUの制御ユニット14が全GPU10の制御ユニット14の代表として機能する。
 そしてこの代表となった制御ユニット14(便宜的にGPU10aの制御ユニット14aとする)のCP12aが、CPU30の出力するコマンド・ストリームをフェッチし、デコードして、当該デコードの結果に基づいて実行するべき処理を特定する。そして、このCP12aは、当該特定した処理を、各GPU10の備えるどの描画処理ユニット25のSE21等に処理させるかを決定する。例えばCP12aが、GPU10a自身の描画処理ユニット25において処理すると決定した場合、CP12aは、当該特定した処理の指示や当該処理に必要なデータを、チップ内インターコネクトを介してGPU10a自身の描画処理ユニット25に出力して処理を行わせる。
 一方、CP12aが、GPU10aとは異なる他のGPU10、例えばGPU10bの描画処理ユニット25において処理すると決定した場合、CP12aは、当該特定した処理の指示や当該処理に必要なデータを、チップ間インターコネクトCYを介してGPU10bのCP12bへ送出する。
 代表となっていないGPU10のCP12(上述の例ではGPU10aのCP12a以外のCP12)は、専ら、代表となったCP12aから受け入れた処理の指示や当該処理に必要なデータを、自身が属するGPU10の描画処理ユニット25に出力して処理を行わせる等、描画処理ユニット25と、代表となったCP12aとのインタフェースとして機能することとなる(インアクティブの状態となる)。
 つまり、ここでの例では、GPU10bのCP12bは、代表となったCP12aから受け入れた処理の指示や当該処理に必要なデータを、自身が属するGPU10bの描画処理ユニット25に出力して処理を行わせる。
 この例によると代表となったGPU10aのCP12aが、全体を統括して、主体的な制御管理を行う(アクティブの状態となって動作する)ことで、すべてのGPU10のシェーダ等での処理を管理する。これにより、全体的な処理割り当ての最適化や、同期処理が可能となるとともに、1チップでは達成できない多数のシェーダ等を用いた処理が可能となって、処理効率を向上できる。
 またこの第1の方法では、当該代表となったGPU10aのGE13aが(アクティブの状態となって動作して)、描画するべきすべての3Dオブジェクトのサーフェスのテッセレーションなど、サーフェスシェーダとしての処理を行う。
 そして、CP12aが行った処理の割り当てに基づいて、各3Dオブジェクトの情報(テッセレーションの結果等を含む)を、対応する描画処理ユニット25を内蔵するGPU10のGE13に対して送出する(自身が属するGPU10の描画処理ユニット25において処理する場合は、GE13aは、そのままチップ内インターコネクトを介して自身と同じGPU10a内の描画処理ユニット25に当該情報を出力する)。
 このGE13においても、代表となっていないGPU10のGE13(上述の例ではGPU10aのGE13a以外のGE13)は、専ら、代表となったGE13aから受け入れた処理の指示や当該処理に必要なデータを、自身が属するGPU10の描画処理ユニット25に出力して処理を行わせる等、描画処理ユニット25と、代表となったGE13aとのインタフェースとして機能することとなる(インアクティブの状態となる)。
 つまり、例えばGPU10bのGE13bは、代表となったGE13aから、チップ間インターコネクトCYを介して受け入れた3Dオブジェクトの情報を、自身が属するGPU10bの描画処理ユニット25に出力して処理を行わせる。
 (第2の方法) また、1つのGPU10内の制御ユニット14がすべてのGPU10内で行うべき処理を主体的に制御するのではなく、1つのGPU10内の制御ユニット14が全体を統括しつつ、各GPU10に分散処理を行わせることとしてもよい。
 この第2の方法では、どのGPU10の制御ユニット14もアクティブの状態となって動作するが、特定のGPU10(例えばGPU10aとする)が主となり、この主となったGPU10aの制御ユニット14aが、他のGPU10b,c…の制御ユニット14b,c…をサブとして分散処理を行う。
 具体的に、主となったGPU10aの制御ユニット14aのCP12aが、CPU30の出力するコマンド・ストリームをフェッチし、サブとなっている他のGPU10b,c…のCP12b,c…に対してデコード及び、当該デコードの結果に基づいて実行するべき処理を特定させる。
 サブとして機能する各CP12b,c…は、当該特定した処理を、各GPU10の備えるどの描画処理ユニット25のSE21等に処理させるかを決定する。例えばCP12bが、自身の属するGPU10bの描画処理ユニット25において処理すると決定した場合、CP12bは、当該特定した処理の指示や当該処理に必要なデータを、チップ内インターコネクトを介してGPU10b自身の描画処理ユニット25に出力して処理を行わせる。
 一方、CP12bが、GPU10bとは異なる他のGPU10a,c…、例えばGPU10aの描画処理ユニット25において処理すると決定した場合、CP12bは、当該特定した処理の指示や当該処理に必要なデータを、チップ間インターコネクトCYを介してGPU10aのCP12aへ送出する。
 この第2の方法の例では、各CP12は、他のGPU10のCP12から受け入れた処理の指示や当該処理に必要なデータを、自身が属するGPU10の描画処理ユニット25に出力して処理を行わせる等、描画処理ユニット25と、代表となったCP12aとのインタフェースとしても機能する。
 つまり、ここでの例では、GPU10aのCP12aは、CP12bから受け入れた処理の指示や当該処理に必要なデータを、自身が属するGPU10aの描画処理ユニット25に出力して処理を行わせる。
 またこの第2の方法では、主となったGPU10aのGE13aが、他のGPU10b,c…のGE13b,c…に対して、分散して、描画するべきすべての3Dオブジェクトのサーフェスのテッセレーションなど、サーフェスシェーダとしての処理を行わせる。この分散処理の制御は、広く知られた方法を採用できるので、ここでの詳しい説明は省略する。
 そしてサブとなっているGPU10b,c…のGE13b,c…は、CP12が行った処理の割り当てに基づいて、各3Dオブジェクトの情報(テッセレーションの結果等を含む)を、対応する描画処理ユニット25を内蔵するGPU10のGE13に対して送出する(自身が属するGPU10の描画処理ユニット25において処理する場合は、GE13は、そのままチップ内インターコネクトを介して自身と同じGPU10内の描画処理ユニット25に当該情報を出力する)。
 このGE13においても、他のGPU10のGE13から処理の指示や当該処理に必要なデータを受け入れると、自身が属するGPU10の描画処理ユニット25に出力して処理を行わせる等、描画処理ユニット25と、代表となったGE13aとのインタフェースとしても機能することとなる。
 この第2の方法では、複数のGPU10のCP12,GE13が分散処理により組み合わせて利用され、全体としてあたかも一つのCP12,GE13として機能する。もっとも、常にすべてのGPU10のCP12やGE13がアクティブとなって演算を行っている必要はなく、主となったCPU10のCP12,GE13は、実行するべき処理に必要な処理能力に応じて、サブとして稼働させるGPU10のCP12,GE13の数を決定し、当該数だけのGPU10のCP12,GE13を制御して、分散的に処理を行わせることとしてよい。
 (第3の方法) さらに各GPU10が複数の制御ユニット14を備えてもよい。この場合、第1,第2の方法により、一つのGPU10内の一つの制御ユニット14が代表、または主となって分散処理を実行することとすれよい。あるいはこの例では、GPU10内の各制御ユニット14が、それぞれ別々のアプリケーションプログラムに基づく処理を実行してもよい。
[描画処理ユニットの構成・動作]
 SE21は、制御ユニット14から入力されるデータを用いて、バーテックスシェーダやピクセルシェーダなど種々のシェーダとしての演算処理を実行する。このSE21は、一般的には、複数の処理を時分割・空間分割にて並列実行するユニット(Compute Unit:CU)を内蔵する。またこのSE21は、ポリゴンをピクセル値に変換するラスタライズ処理を実行してもよい。
 またこのSE21は、処理中、メモリ20,31に格納されたデータを読み出し、あるいはメモリ20,31へデータを書き込む際には、読み出しあるいは書き込みの対象となるアドレスを指定する情報とともに(データの書き込みの際は、さらに当該書き込むべきデータとともに)、メモリへのアクセス要求を、バスファブリック11に対して出力する。そしてこのSE21は、メモリ20,31から読み出されたデータを、バスファブリック11から受け入れる。
 TU22は、テクスチャデータや、種々の数値テーブルを、メモリ20,31から取得するよう、バスファブリック11に対して要求する。そしてTU22は、バスファブリック11が当該要求に応じてメモリ20,31から取得したデータを受け入れて、必要に応じてフィルター処理のうえ、ピクセルシェーダとして動作するSE21に出力する。
 RB23は、SE21が出力するピクセルシェーダ出力のピクセル値を受け入れて、アルファテスト、ステンシルテスト、デプステストなどを行って、各ピクセルを描画するか否かを判断し、描画すると判断したときには、当該ピクセルを、フレームバッファ(メモリ20,31内の所定のアドレスに確保されているものとする)に書き込む。この書き込みの際には、RB23は、メモリ20,31内のフレームバッファとして設定されたアドレス領域内の書き込むピクセルに対応するアドレスに、当該ピクセルの描画に係るデータを書き込むよう、バスファブリック11に対して要求する。
 なお、SE21,TU22,RB23は、メモリ20,31へのアクセス要求を行う際に、バスファブリック11に対して直接、アクセス要求を出力してもよいが、ここではキャッシュ24を介して出力するものとする。またSE21,TU22,RB23は、メモリ20,31から読み出されるデータを、キャッシュ24を介して(あるいはキャッシュ24から)受け入れるものとする。
 本実施の形態のGPU10では、一般的なGPUと同様に、同等の機能を有するSE21(CU)やTU22,RB23等の描画処理ユニット25を複数並列に内蔵してよい。この場合、CP12やGE13は、所定の分散処理制御方法に基づいて、複数の描画処理ユニットに並列的に描画処理を実行させる。
 キャッシュ24は、複数のキャッシュライン(キャッシュタグとデータとを関連付けて記憶する記憶領域)を備える。またこのキャッシュ24は、アドレス比較器やウェイ切替器等を備える。各キャッシュラインは、タグとデータラインとを有し、タグはキャッシュ対象アドレス、リプレースルール制御ビット、パリティ・ECCビット、ラインロックビット等の制御情報等を含む。またこのタグには、どのGPU10に接続されたメモリ20から読み出されたデータを格納しているかを表す情報を含んでもよい。データラインは、例えばキャッシングしたデータのほか、パリティ・ECCビットを含んでもよい。
 本実施の形態の一例では、このキャッシュ24は、SE21,TU22,RB23とバスファブリック11との間に介在し、SE21,TU22,RB23がバスファブリック11に対して出力するアクセス要求をインターセプトして、アクセスしようとするアドレスのデータがいずれかのキャッシュラインに格納されているか否かを判断する。キャッシュ24は、要求が読み出しである場合、ここでいずれかのキャッシュラインに、アクセスしようとするアドレスのデータが格納されていれば、当該データを読み出して要求元であるSE21,TU22,RB23のいずれかに出力する。また、要求が書き込みである場合、いずれかのキャッシュラインに、アクセスしようとするアドレスのデータが格納されていればキャッシュ24は、当該データに、要求されたデータを上書きする。
 またこのキャッシュ24は、アクセスしようとするアドレスのデータがいずれかのキャッシュラインに格納されていなければ、インターセプトしたアクセス要求をバスファブリック11に出力する。そしてキャッシュ24は、バスファブリック11を介してメモリ20,31から読み出されたデータを受け入れ、このデータをアクセス要求元のSE21,TU22,RB23のいずれかに出力するとともに、当該受け入れたデータを、アクセス要求に係るアドレスに関連付けて、いずれかのキャッシュラインに格納する。この動作は一般的なキャッシュメモリの動作と同様である。
 さらに本実施の形態では、このキャッシュ24は、バスファブリック11及びGPU間インターコネクトCXを介して、他のGPU10またはCPU30との間で、所定のキャッシュコヒーレンスプロトコルに基づくデータ転送(いわゆるスヌーピング)を実行する。これによりキャッシュされたデータの整合性を維持する。またキャッシュ24は、SE21,TU22,RB23に内蔵されてもよい。
 さらに本実施の形態のキャッシュ24(L0,L1,L2キャッシュ)は、SE21,TU22,RB23とバスファブリック11との間に介在して、キャッシュラインごとに、キャッシュラインに格納したデータが、自身が属するGPU10に接続されたメモリ20から読み出したものか、他のGPU10に接続されたメモリ20から読み出したものかを表すフラグを関連付けられて記録してもよい。
 このフラグは1ビットとし、自身が属するGPU10に接続されたメモリ20から読み出したものか、他のGPU10に接続されたメモリ20から読み出したものかを表すだけのものでもよい。また、多ビットで構成し、自身が属するGPU10または、他のどのGPU10に接続されたメモリ20から読み出したデータを格納しているかを特定するフラグ(GPU10を特定するフラグ)としてもよい。
 このように構成した場合、キャッシュラインに格納したデータを置き換えるリプレース処理において、特定のGPU10に接続されたメモリ20から読み出したキャッシング結果を優先的に残すよう制御してもよい。また、キャッシュラインに格納したデータを置き換えるリプレース処理において、格納したデータを利用するアプリケーションの実行プロファイル結果を収集し、どのGPU10に接続されたメモリ20からのキャッシング結果を優先的に残すかの制御を行ってもよい。
 さらに、SE21,TU22,RB23とバスファブリック11との間に介在するキャッシュ24は、そのキャッシュラインごとに、自身が属するGPU10に接続されたメモリ20から読み出したデータを格納するものか、他のGPU10に接続されたメモリ20から読み出したデータを格納するものかを設定する設定用のフラグを関連付けて記録してもよい。
 この設定用のフラグも、1ビットとし、自身が属するGPU10に接続されたメモリ20から読み出したデータを格納するものか、他のGPU10に接続されたメモリ20から読み出したデータを格納するものかを表すだけのものでもよい。また、この設定用のフラグは、多ビットで構成し、自身が属するGPU10または、他のどのGPU10に接続されたメモリ20から読み出したデータを格納するものかを特定するフラグ(GPU10を特定するフラグ)としてもよい。
 この例では、キャッシュを行うSE21,TU22,RB23やバスファブリック11等の各ブロックは、キャッシュラインごとの設定用のフラグを参照し、読み出したデータが、どのGPU10に接続されたメモリ20から読み出されたものかにより、どのキャッシュラインに当該データを格納するかを決定して、当該決定したキャッシュラインに当該データを格納する。
 この場合も、どのキャッシュラインをどのGPU10に割り当てるかを決定する際に、予め、実行するアプリケーションの実行プロファイル結果を収集し、どのGPU10のメモリ20からのデータを優先的にキャッシングするかを制御してもよい。
 さらに、本実施の形態のある態様では、SE21,TU22,RB23のそれぞれが、図示しないL0,L1キャッシュを内蔵してもよい。この例では、SE21,TU22,RB23の外部にあるキャッシュ24は、L2キャッシュとして機能する。またこの例では、SE21,TU22,RB23に内蔵されるL0,L1キャッシュは、L2キャッシュとして機能するキャッシュ24の上位の階層のキャッシュとして動作し、SE21,TU22,RB23のそれぞれが備える、SE21,TU22,RB23としての動作を行うための機能ブロック(コア)とキャッシュ24との間に介在してもよい。この例では、上記フラグや設定用フラグは、L2キャッシュとして機能するキャッシュ24においてのみ用いられる。
 L3キャッシュ27は、バスファブリック11と、このバスファブリック11が属するGPU10に接続されているメモリ20との間に介在し、バスファブリック11による当該メモリ20へのアクセスをインターセプトして、メモリ20のキャッシュメモリとして動作する。
[動作]
 本実施の形態は以上の構成を基本的に備えており、従ってCPU30がメモリ20,31の所定のアドレスに格納したコマンド・ストリームを、例えば代表となったGPU10aのCP12aが、自身のバスファブリック11aを介して読み出す。このデータの読み出しはL3キャッシュ27にキャッシュされたデータを読み出すことにより行われてもよい。
 CP12aはコマンド・ストリームをデコードし、デコードにより実行するべき処理を特定する。そして、CP12aは、当該特定した処理を、どのGPU10のどの描画処理ユニット25に行わせるかを決定して、処理のディスパッチを行う。
 そして処理を行わせることとした描画処理ユニット25に対して処理の指示や処理に必要なデータ(の格納先アドレス等)を送出する。このときこれらの指示やデータの送出は、チップ間インターコネクトCYを介して行われる。
 また代表となったGPU10aのGE13aは、CPU30により描画するよう指示される、三次元の仮想的なオブジェクト(3Dオブジェクト)のサーフェスをより詳細なプリミティブへ変換するテッセレーションなど、サーフェスシェーダとしての処理を行う。そして当該処理の結果を、チップ間インターコネクトCYを介して他のGPU10b,c…のGE13b,c…に出力する。
 他のGPU10b,c…のGE13b,c…は、GE13aから受け入れたテッセレーションの処理結果等の情報を、自己が属するGPU10の描画処理ユニット25に出力する。
 そして各GPU10の描画処理ユニット25が、並列的に、描画の処理を実行する。この実行結果は、各GPU10のバスファブリック11を介して、各GPU10及びCPU30に接続されたメモリ20,31内に確保された、フレームバッファに格納される。
 フレームバッファに格納されたデータは、例えばCPU30により読み出されて、図示しない画像表示処理部に出力され、ディスプレイ等に表示出力される。
 本実施の形態では、各GPU10のバスファブリック11が、相互にGPU間インターコネクトCXを介して接続され、各メモリ20や、CPU30に接続されるメモリ31を互いに共有し、全体として一つのメモリ空間としてアクセス可能としている。また、他のGPU10において処理される内容を参照する必要のある制御ユニット14が、チップ間インターコネクトCYを介して互いにデータを送受可能に接続されている。これにより複数のGPU10があたかも1つのGPUであるかのように互いに協調して処理を進めることができる。
[インターコネクトの例]
 なお、このGPU間インターコネクトCXやチップ間インターコネクトCYは、GPU10内で対応するチップ内インターコネクトの信号線を介して送受される信号(RAW値)をサンプリングし、当該サンプリングして得た情報を含むデータフレームを他のGPU10(あるいはCPU30)に対して送出し、受信した側でデサンプリングしてRAW値を再生し、GPU10内で対応するチップ内インターコネクトの信号線上に、当該RAW値を出力することで行われてもよい。
 ここでサンプリングの対象となる信号は、データバス上の信号だけでなく、制御信号を含んでもよい。すなわち、サンプリングするチップ内インターコネクトの信号線は、主なデータを転送するメイン・データ・インターコネクト(キャッシュコヒーレントプロトコルの信号を含んでもよい)や、SE21(CU)とL1キャッシュ間、L1-L2キャッシュ間、L1キャッシュとRB23間、L1-分散L2間のクロスバ、MMIOアクセス・インターコネクトなど、GPU10の制御コアからGPU10の各ブロックのレジスタやメモリ20にアクセスするためのインターコネクト、パワーマネージメント制御、試験・デバッグ用(DFT/DFD)、割り込み信号用などシステム制御のためのインターコネクト、各ブロックに固有な専用線を含むインターコネクト(例えばローカルデータバス、ハンドシェイク、制御ライン、CP12から各SE21間、RB23とSE21との間、GE13から各SE21間のインターコネクト)の信号線等である。
 送信側となるGPU10は、バッファを備えて、自身のチップ内インターコネクトの信号線から、サンプリングして得たRAW値を送出するタイミングまで、送信するべきデータフレームを保持する。送出のタイミングは、受信側となったGPU10から指示されてもよい。
 受信側となったGPU10は、バッファを備えて、自身のチップ内インターコネクトの信号線に、デサンプリングして得たRAW値を出力するタイミングまで、受信したデータフレームを保持する。データフレームを送受信するGPU10は、クレジットベース等、所定のフロー制御によりデータフレームの送受を行う。なお、このフロー制御は、サンプリングした信号線を含むチップ内インターコネクトを介したデータの授受で利用されるプロトコルのハンドシェイク信号には関わりなく行われる。
 なお、不要な情報転送を低減するため、信号線上の信号が変化(0から1へ、1から0へ変化)したときに限り、サンプリングとフレーム生成を行うようにしてもよい。また、サンプリングの対象とする信号線を含むチップ内インターコネクトや、それに接続されたGPU10内のブロックがアクティブであるか否かを示す制御信号を参照してサンプリングするか否かを決定してもよい。
 さらに、GPU間インターコネクトCXとチップ間インターコネクトCYとは、それぞれ互いに非同期で動作してよい。
[キャッシュ]
 また本実施の形態において、描画処理ユニット25が備えるキャッシュ24は、記憶しているキャッシュライン内のデータが、自身が属するGPU10に接続されたメモリ20、または、他のGPU10に接続されたメモリ20(あるいはCPU30に接続されたメモリ31)のうち、どのGPU10(またはCPU30)に接続されたメモリ20(メモリ31)から読み出されたものであるかを特定する情報を、キャッシュラインごとに保持してもよい。この情報は、キャッシュコヒーレンスの処理において利用される。
 さらに、GPU10のCP21は、キャッシュ24が備えるキャッシュラインの各々に、どのGPU10に接続されたメモリ20(あるいはCPU30に接続されたメモリ31)から読み出したデータを格納するかを予め割り当てておいてもよい。この例では、あるGPU10に接続されたメモリ20から読み出されたデータは、当該メモリ20から読み出したデータを格納するものとして割り当てられたキャッシュラインに格納されることとなる。
[本実施の形態の特徴]
 また、本実施の形態の情報処理システムの特徴は、次のように説明することもできる。すなわち、本実施の形態は、性能スケーラビリティがある巨大な画像処理システムを仮想的にマルチチップで構成する方法を提供する。
 またその特徴事項は、次の通りである。
・複数のチップから構成されており、「各チップが個別に持つメモリを束ねて、仮想的に一つのメモリとして扱えるチップ間インタフェース」と「分散処理が困難な処理を、各チップをまたがって実行するためのチップ間インタフェース」をもつ画像処理システムである。
・GPU間接続ポート(CX)(CY)が異なるプロトコルで非同期に動作する。
・GPU間接続ポート(CY)が、CP,GEのみの接続をする。
・CP,GEの一連の複数チップにおける分散処理においてチップ間転送が最少・最短となる構成を選択する。
・複数GPUチップにおけるCP,GE分散処理方法を、1GPUチップ内においても適用することで、1GPUチップが空間分割によって複数アプリケーション処理の同時実行が可能となる。
・複数GPUチップにおけるCP,GE分散処理方法を前提として、GPUを指定の機能ごとにチップA/B/Cへ分割してもよい。
・GPUのキャッシュラインが、どのチップのデータをキャッシングしているかフラグをもたせてもよい。
・GPUのキャッシュラインが、どのチップのデータをキャッシングするか割り当てできてもよい。
・これにより動的な性能スケーラビリティをもたせることが可能となる(1チップ内の分割処理から、複数チップによる並列処理まで可能になる)。
・静的に性能スケーラビリティがあるマルチチップ・システムを構築することが可能となる。
・チップ内インターコネクト上の信号のRAW値をサンプリングして他のGPUへ送出し、他のGPUが、受信した情報をデサンプリングしてRAW値を得て自己のチップ内インターコネクトに出力するようなインターコネクト技術(以下サンプリングによるインターコネクト技術と呼ぶ)を、上記マルチチップ接続に適用することとしてもよい。
 特願2019-189027の明細書及び図面に記載の内容は、本明細書に参照により合併(incorporated by reference)される。
 詳細に言えば、本実施の形態は、GPU間接続ポート(CX)(CY)を持ち、単独でも動作しうる1GPUをA/B/Cに機能分割する方法を持ち、分散メモリのキャッシュ効率を高める方法を持ち、CP,GEを分散処理する方法を持つことで、1チップ内の空間分割から複数チップ同時利用までフレキシブルなハードウエア構成が可能であり、かつ、同じ1GPU用プログラミングモデルのまま、異なる性能要件のアプリケーションを一つ以上マッピングして並列実行することができる情報処理システムである。
 この実施形態の背景となった技術は次のようなものである。すなわち図4に示すように、GPUチップを用いた画像処理システムにおいて、性能向上が必要である場合、性能を向上させたGPUチップを用いることが一般的である。CPUで動作するソフトウェアの指示に基づき、1つのGPUチップが、そのGPUチップに直結された広帯域で大容量なメモリを利用しながら画像処理(とくに3D グラフィックスの描画処理)を実行する。すなわち従来例ではGPUチップが必要とするデータは、GPUチップに直結されたメモリに保持される。ただし、1チップで実現できる規模には、製造可能規模・電力密度などの要因で限界がある。更なる性能向上を目指す場合、1システム内で複数のGPUチップを同時に利用することが考えられるが、いくつか課題がある。
 CPUソフトウェアの処理内容に従って、リアルタイムに3Dグラフィックスを描画するとき、動的にきまる1シーンに含まれるすべてのオブジェクト情報をGPU上の処理は把握したうえで、1フレームを描画し、メモリ上のフレームバッファに出力する。この一連の処理には、多くの依存/参照関係があり、複数のGPUチップと、それらに個別に接続され分断されているメモリに、処理を分割することが容易ではない。複数のGPUチップと分断されたメモリでは、依存/参照関係の解決が困難であり、処理性能の向上が難しい(図4(c))。3Dグラフィックス描画処理を、適切に分散配置するソフトウェアを開発することも難易度が高い。
 なお、GPUのひとつの利用方法である汎用コンピューティング処理を実行する場合は、このような複数のGPUチップに対する分散処理が、3Dグラフィックス描画と異なり、実現できる場合もある。これらの処理に要求されるリアルタイム性は低く、複数CPUに対する分散処理と同様の技法を用いて実行できるからである。しかし、性能向上率は限定されている。
 なお、CPUとGPUがそれぞれ個別のメモリをもち、両者が分断されている状態(図4(b))よりも、ひとつの大容量メモリがCPUとGPUによって共有されている形(UMA: Unified Memory Architecture、図4(a))のほうが処理効率・性能・ソフトウェア開発難易度の面で優れる。しかし、これにも実現できる規模には、製造可能規模・電力密度などの要因で限界がある。
 これに対し、本実施の形態の情報処理システムで用いるGPU51は次の図5(a)に例示する構成を備える。
 このGPU51のそれぞれは、図5(b)に示すように、自メモリ52と同様に、他GPU51のメモリ52へダイレクトアクセスできるポートをもつ(X)。
 またこのGPU51は、図5(b)に示されるように、自CP(Command Processor),GE(Geometry Engine)が、他GPU51の同ブロックと一体的に処理するために必要な内部通信を直結できるポートをもつ(Y)。
 さらにGPU51は、図5(b)に示すように、自メモリをCPU53と共有(UMA)するためのダイレクトアクセスポートをもつ(Z)。
 各GPU51は、これらのポートを介した接続により、あたかも1つのGPUであるように協調して処理を進めることができる(仮想的に、従来例の図4(a)と同様の構成)。
 ソフトウェア開発においては、1つのGPUを用いる場合(従来の図4(a)) と同様のプログラミングモデルで対応できる。
 1システムにおけるGPU接続数を変えることで、性能が異なるシステムを同一アーキテクチャ・同一プログラミングモデルのまま構築できる。
 1システムにおけるGPUアクティブ範囲を変えることで、動的に異なる性能要件のアプリケーションを実行できる。
 ここで1つのGPUは、それだけで単独GPUとして動作することもできる機能をもつ。
 なお、ポート(X)は上記インターコネクトCXに、ポート(Y)は上記インターコネクトCYに、ポート(Z)は上記インターコネクトCZにそれぞれ対応するものである。また、GPU51やCPU53,メモリ52の並列数やGPU51の内部の構成、各チップの接続トポロジーは、この例のみに限定されない。
 各部構成をさらに細分して示した構成は図6に例示するようなものとなる。図において、各部は次の通りである。なお、以下の説明で用いる図面において、比較的太い矢印はデータ信号線、細い矢印は制御信号線(Control Signal)を例示している。
 CP(Command Processor)61:GPUの処理内容は、CPUが生成したコマンド・ストリーム(プリミティブな描画や汎用計算の要求群)がメモリ上のQueueにおかれることで指定されている。このコマンド・ストリームは、GPUのCP61がフェッチ・デコードし、必要に応じてよりプリミティブな処理に分解し、それらをShader Engine63(SE, Compute Unit(CU)631を内蔵する)などにディスパッチすることで実行される。CP61は、GPU内部に発行した処理要求の優先順位、終了・同期処理、スレッド管理を含む実行フロー全般の管理をおこなうことで、GPU全体の処理を統括する。ひとつのGPU内に、SE63などが複数並列にある場合、それら全体を統括下におき、各リソースへの処理割当の最適化や同期処理も含めて集中管理する。そのため、複数のチップを用いて、仮想的にひとつのGPUを構築する場合、CP61は、すべてのチップの処理内容とリソース利用状態を把握し、制御する必要がある。本実施例におけるCP61とは、コードを実行するマイクロコントローラ、スケジューラ、時分割・空間分割によるリソース・マネジメント機能、コピーをおこなうDMAなどをあわせ持つ。
 GE(Geometry Engine)62:Geometry Engine(GE, またはGeometry Processor)は、3Dオブジェクトのサーフェスをより詳細なプリミティブへ変換するテッセレーションなど、主にサーフェスシェーダを処理する演算ブロックである。また、複数の頂点からなるポリゴンなどのプリミティブを入力とし、頂点の削除や追加をおこなうジオメトリシェーダや、各頂点の座標変換をおこなうバーテックスシェーダ、それらを統合したプリミティブシェーダなどの、サーフェスシェーダの後続処理は、スクリーンを分割した描画対象領域毎に、プリミティブ・ユニットやSE63(CU631)などの演算ブロックを割りあてあることで並列実行ができる。しかし、GE62は、領域分割される前の3Dオブジェクトに対して一括処理をおこなうことで整合性確保と処理効率向上をしており、テッセレーション前後の座標データを、各SE63(CU631)と授受しながら(621:入出力しながら)動作をおこなう必要がある。ひとつのGPU内に、SE63などが複数並列にある場合、それら全体と接続されている必要がある。そのため、複数のチップを用いて、仮想的にひとつのGPUを構築する場合も、GE62は、すべてのチップ内にあるSE63などと接続され(622)、GE62は全体整合性を確保しながら協調動作する必要がある。GE62は必要に応じてSE63にかわりバーテックスシェーダも実行する。図6では621,622は座標データやプリミティブ構成情報を授受するデータ信号線を概念的に表している。
 SE(Shader Engine)63:Shader Engine63(SE)は、多くの種類のシェーダの演算処理を担当するブロックであり、多くの場合SIMD演算器を並列に持ち、SIMTとスレッド処理を用いて、複数の処理を時分割・空間分割にて並列実行する機能(Compute Unit:CU)631を内蔵する。またポリゴンをピクセル値に変換するラスタライズ機能なども持つ。性能向上のため、 GPUは、同じ機能をもつSE63(CU631)を複数並列に内蔵することが多い。バーテックスシェーダ・ピクセルシェーダや汎用コンピューティングの処理は、これら複数のSE63(CU631)に、スクリーンを分割した描画対象領域毎や汎用計算分割粒度毎に割りあてることもでき、個々のSE63(CU631)は相互参照や依存関係がない処理を並列に実行することが容易である。読み書きするメモリ領域はローカルが主体的であるが、グローバルになる場合があり、複数のチップを用いて、仮想的にひとつのGPUを構築する場合、バスファブリック(Bus Fabric)に設けた他GPU配下のメモリを参照するパスを利用する。なお、後述のTU(Texture Unit),RB(Rendering Backend)などを含めてSEと呼ぶ場合もある。本実施例において、Level 0/1キャッシュやローカルメモリをSEが内蔵し、Level2キャッシュはSE/TU/RB-Bus fabric間、Level3キャッシュはBus fabric-DRAM間にある。なお、図6ではキャッシュ階層やローカルメモリは図示していない。
 TU(Texture Unit):テクスチャデータおよびその他の数値テーブルをメモリからフェッチし、必要に応じてフィルター処理のうえ、ピクセルシェーダにわたす。GPUは、同じ機能をもつTUを、SE63に直結された形で複数並列に内蔵することが多く、スクリーンを分割した描画対象領域毎に処理を並列に実行することが容易である。参照するメモリ領域はグローバルになる場合があり、複数のチップを用いて、仮想的にひとつのGPUを構築する場合、バスファブリック(Bus Fabric)に設けた他GPU配下のメモリを参照するパスを利用する。
 RB(Rendering Backend):ピクセルシェーダ出力のピクセル値にAlpha/Stencil/Depth テストなどをおこない、フレームバッファに描画結果を出力する。GPUは、同じ機能をもつRendering Backend(RB, またはRaster Operation(ROP))を、SE63に直結された形で複数並列に内蔵することが多く、スクリーンを分割した描画対象領域毎に処理を並列に実行することが容易である。読み書きするメモリ領域はローカルが主体的であるが、グローバルになる場合があり、複数のチップを用いて、仮想的にひとつのGPUを構築する場合、バスファブリック(Bus Fabric)に設けた他GPU配下のメモリを参照するパスを利用する。
 GPU間接続ポート(X) (Y):GPU間接続ポート(X)および(Y)は、非同期に動作する。GPU間接続ポート(X)および(Y)は、サンプリングによるインターコネクト技術を用いてもよい。GPU間接続ポート(X)と(Y)を、ひとつの物理インタフェースに多重化したうえで転送をしてもよい。サンプリングによるインターコネクト技術は、各転送のパケット化したうえで多重化、インタフェースの時分割多重化、いずれかでも実施できる。GPU間接続ポート(Y)においては、CP,GEブロックが内部で用いている、通知/観測・ハンドシェイク信号線を、サイドバンド信号として併設してもよい。
 Bus Fabric (Interconnect),GPU間接続ポート(X):稼働中の複数のCPU/GPUチップは、共通のグローバルなアドレス空間を共有しており、自チップのリソースが、どのアドレス領域に割りあてられているか、把握している。複数のGPUチップが個別に持つメモリ空間を、ひとつの連続したアドレス領域に割りあてることができる。この割りあては、静的・動的いずれでもよい。またMMUなどを介してページ方式であってもよい。
 GPU内の各ブロックからメモリアクセス要求があると、自GPU配下のメモリに対するアクセスか、それとも他GPU配下のメモリに対するアクセスか、アクセス対象アドレスに基づいて判定し、他GPUチップのメモリへのアクセスである場合は、GPU間接続ポート(X)を介してデータ転送をおこなう。
 稼働中の複数のCPU/GPUチップは、チップ間接続において、目的の他GPUチップ配下メモリへアクセスするルートが複数ある場合は、その接続関係を把握しており、データ転送において最短のルートを選択することができる。
 SE/TU/RBが内蔵するキャッシュ(本実施例においてはキャッシュ24のL0/L1/L2キャッシュ)は、自チップおよび外部チップへのアクセスをキャッシングできる。必要に応じてGPU間接続ポート(X)はキャッシュコヒーレントプロトコルをサポートし、各チップ間のL0/L1/L2キャッシュはデータ一貫性を持つことができる。
 SE/TU/RBが内蔵するキャッシュは、各キャッシュラインに、キャッシングしたデータが、自チップか、他チップか、示すフラグを持ってよい。1ビットのみで自チップか否かを示す、多ビットで複数チップの特定可能としてもよい。キャッシュラインのリプレース処理において、特定チップのキャッシング結果を優先的に残す制御をおこなってもよい。キャッシュラインのリプレース処理において、あらかじめ各アプリケーションの実行プロファイル結果を収集し、どのチップのキャッシング結果を優先的に残すか制御をおこなってもよい。
 SE/TU/RBが内蔵するキャッシュは、各キャッシュラインについて、自チップか、他チップか、どのチップのデータをキャッシングするか指定できるフラグを持ってよい。1ビットのみで自チップか否かを示す、多ビットで複数チップの特定可能としてもよい。キャッシュラインの各チップへの割り当て処理において、あらかじめ各アプリケーションの実行プロファイル結果を収集し、どのチップのキャッシングを優先的におこなうか制御をおこなってもよい。
 このキャッシュは、例えば以下のような構成をとる。キャッシュは、複数のキャッシュライン、アドレス比較器、ウェイ切替器を内蔵する。また、ひとつのキャッシュラインは、一対のタグとデータラインをもつ。このタグは、例えば64ビット長で、キャッシュ対象アドレスのタグ、リプレースルール制御ビット、パリティ・ECCビット、ラインロックビットなどの制御ビット、そして、どのチップのメモリをキャッシングしているか示すビット、などをもつ。
 またデータラインは、例えば288ビット長で、256ビット幅のキャッシングデータと、32ビットのパリティ・ECCビットを持つ。たとえば、上記ビット長のキャッシュラインを128ラインもつと、合計32キロバイトのキャッシュを構成する。
 Bus Fabric:自チップメモリ間に内蔵するキャッシュ(本実施例においてはL3キャッシュ)は、もし自チップのメモリが複数に分割されている場合は、それぞれに対してキャッシュも分かれている。各L3キャッシュは、自キャッシュ直下のメモリに対するデータだけをキャッシングしており、同一メモリ領域が同時に他のL3キャッシュに保持されることはない。
 図7は、本実施の形態の複数のGPUによる、仮想的な一つのGPUの構成方法の例を示す説明図である。
 ここで、GPU間接続ポート(Y)を介しては、次の転送が行われる:
・GPU間接続ポート(Y)を用いるGE間転送:テッセレーション前後などシェーダの座標データ、オブジェクトにおけるプリミティブ間接続情報、GE各演算器の動作ステータス(実行中・停止中・同期待ち・データ待ち・異常状態など)、同期ハンドシェイク等
・GPU間接続ポート(Y)を用いるCP間転送:処理ディスパッチ指示内容、優先順位指示、SEなど各ブロックの動作ステータス(実行中・停止中・同期待ち・データ待ち・異常状態など)、同期ハンドシェイク等
 CP,GE分散処理:複数のGPUチップを用いて、仮想的にひとつのGPUを構築する場合、各GPUチップが備えるCP,GEブロックは以下いずれかの方法(1)乃至(3)で動作する。
 いずれの場合も、CP,GEの複数チップにおける分散処理において、チップ間転送が最少・最短となる構成・経路を選択する(CP,GEのactive/main選択箇所、GPU間接続ポート(Y)選択箇所について)。
 方法(1)では、特定チップのCP,GEが直接的に全体統括(main)をおこない、処理の一貫性を維持する(図7(a),(b))。このとき、特定チップのCPがもつコントローラが主体的に制御管理に利用される。また特定チップのGEがもつ演算器が主体的に利用される。他チップのCP,GEは自チップSEとのI/F処理のみ行う。
 方法(2)では、特定チップのCP,GEが間接的に全体統括となり、分散処理を行い、処理の一貫性を維持する(図7(c))。このとき、特定チップのCPがもつコントローラが、各チップCPのコントローラを配下におき、階層制御を行う。また、各チップのGEを組み合わせて、あたかもひとつのGEとして機能し、並列に演算処理を行う。稼働GPU範囲に基づき、 CP,GE必要処理能力に応じてサブ(sub)として稼働させるブロック数を選択する。
 なお、いずれの方法でも、同一チップ内のCPとGEとが全体統括となるとは限らない。
 図8,図9は、それぞれ、方法(1)、(2)の具体的信号の流れを示す説明図である。
 また図10(a),(b)は、方法(3)の動作例を示す。方法(3)では、1つのGPUチップ内のCP,GEが4分割されており、方法(1)(2)と同様の方法で分散処理に対応する。これを用いて、1つのGPUにおいて、空間分割で複数アプリケーションを実行することもできる。なお、この方法でも、同一チップ内のCPとGEとが全体統括となるとは限らない。
 図11から図16は、仮想的な1つのGPU、あるいはスケーラブルなGPUを構成する方法のいくつかの態様を示すものである。以下の例において、チップAは、主にGraphics/Compute frontendや統括処理制御系を内蔵する。並列化が困難なGPU全体にまたがる処理系をもつ。チップAとI/O hubダイを統合する選択肢もある。機能を多重化し、チップAを廃したうえで、それぞれのチップBが、チップAの機能をもつ選択肢もある(実施例1b)。チップBの次に高速に動作するロジック回路を中心として構成し、必要に応じて各チップを接続するオンチップインターコネクトやペリフェラルI/FのハブとなるI/O Hubチップと統合することで、コストパフォーマンスに優れるロジック回路用シリコンプロセスを採用したときの恩恵が最大化する組み合わせとする。
 また、チップBは、主にシェーダエンジン(Unified Shader, プログラマブルグラフィックス演算器)と、ラスタライザやレンダリングバックエンド(Z/Stencil/Blendなどのラスターオペレーション)、ローカルメモリ、L0/L1/L2キャッシュなどを内蔵する。高い演算並列性をもつ機能を中心に構成する。高速に動かす演算器、ハードワイヤードロジック、L0/L1高速キャッシュなどを中心として構成することで、最も微細化が進んだ高性能ロジック回路用シリコンプロセスを採用したときに、チップエリアや性能(動作周波数や消費電力)の恩恵が最大化する組み合わせとする。
 チップCは、PHYや大容量キャッシュメモリ(オンチップSRAM、eDRAM、MRAM、FeRAMなど用いる)を中心として構成する。PHYなどのアナログ回路や大容量オンチップメモリ( SRAM、eDRAM、MRAM、ReRAM、FeRAMなど)を集積する場合に有利なシリコンプロセスを採用する。
 具体的に図11は3種類のチップで1つのGPUを実現する例を示す。図11では各種類のGPUチップでありチップA111a,チップB111b,チップC111cが示されている。ここで各チップをまたぐオンチップインターコネクトは、送信側のチップ内の信号線上の信号をサンプリングして変調して送信し、受信側で復号し、受信側チップの対応する信号線上に出力するための構成(ラッパーと呼ぶ)を備えるものであってもよい。図11の例ではチップA111aを1つ、チップB111bを2つ、チップC111cを4つ組み合わせて1つのGPUを構成する例を示している。
 また図12は2種類のチップ(チップB,C)で1つのGPUを構成する例を示す。図12では2種類のチップとしてチップB111b,チップC111cが示されている。この例でも、各チップをまたぐオンチップインターコネクトは、ラッパーを用いて、送信側のチップ内の信号線上の信号をサンプリングして変調して送信し、受信側で復号し、受信側チップの対応する信号線上に出力されるものであってもよい。図12の例ではチップB111bを2つ、チップC111cを4つ組み合わせて1つのGPUを構成する例を示している。
 また例えば図13に示すように、多数のチップによるスケーラブルなGPUを構成する場合、システムが必要とする性能や機能に応じて柔軟な構成を採用し得る。図13ではポータブル機で用いる場合(図13(a))や、一つのGPUモジュールとして構成する場合(図13(b))、ホームコンソール等で利用する場合(図13(c))、より高性能なGPUモジュールとして構成する場合(図13(d))、並びにサーバ機などで用いる場合(図13(e))といった場合の構成例を示している。
 なお、これら図11乃至図13の例において、各種類のGPUチップ(チップA,B,C)は、それぞれ、接続されうる対向チップ数に基づいて、オンチップインターコネクトを接続するためのラッパーを、必要な数だけ内蔵させておく。システム構成が、最大接続可能数よりも少ないチップ組み合わせ数の場合は、内蔵するラッパーの一部が未使用となっていてもよい。
 ここで示したような複数種類のチップA,B,Cを用いる場合、図14に例示するように、2GPUシステム(図14(a))を、図14(b)(図13(e)に同じ)に例示する構成で実現できる。同様に、図14(c)に例示する4GPUシステムは、図14(d)に例示する構成で実現できる。図14(b)はサーバ機1ノードの構成等で利用でき、図14(d)は、サーバ機の大型(big)1ノードの構成等で利用できる。また図15(a)に例示するようなシステムは、図15(b)に例示する構成で実現できる。
 図16は、多数のチップによるスケーラブルなGPUのパッケージ実装例を示す説明図である。図16(a)は、図13(c)に例示したGPU1601を1つのパッケージとして構成した例を示したものである。ここでGPU1601や、CPU1602は、RDL(Re-Distribution Layer)を用いて形成される。
 また図16(b)は、図13(e)に示したGPUを、2つのパッケージのGPU(部分GPU)1610,1611で構成した例を示したものである。この例ではGPU1610,1611内に配置されたチップA,B,C間はシリコンインターポーザー(Si Interposer)を介して接続される。図16ではシリコンインターポーザー部分を、ハッチングを施した矩形で示している。またCPU1612は、いずれもRDL(Re-Distribution Layer)を用いて形成される。
 図17から図21は、複数のアプリケーションを本実施の形態のGPUを用いて時分割的及び/または空間分割的に実行する例を表す説明図である。ここで時分割的(Time division“ (Temporal partitioning))方法(図17(a))では、仮に1GPUあたり40TFLOPSの性能がある場合、4つのアプリケーションが時分割的に動作すると、1つのアプリケーションあたり約10TFLOPSが利用できる。この図17(a)に例示する時分割的方法では、ハードウエア的な解決がされないと、コンテキストスイッチのオーバヘッドが大きいという問題点がある。例えばゲームアプリケーションを実行する際、多数の一時的に実行停止できない(non-preempt)処理であって、同期的に実行される処理である場合には、時分割的方法は適切でない。すなわち、頻繁に、小規模の(small granularityでの)コンテキストスイッチングが生じる場合には適さない。
 一方、図17(b)に概念的に例示する空間的分割(“Hardware partitioning“ (Spatial partitioning))の方法でも同様に、仮に1GPUあたり40TFLOPSの性能がある場合、4つのアプリケーションが空間分割的に動作すると、1つのアプリケーションあたり約10TFLOPSが利用できる。この図17(b)の例では、完全な制御が可能であり、リアルタイム処理が可能となる。並列的に動作するブロックやユニットがGPU内に内蔵されている場合、これら並列的に動作する部分のそれぞれを利用して複数のアプリケーションを動作させることも可能である。
 図18では4つのGPU1801,1802,1803,1804がそれぞれ一つのチップA、2つのチップB、及び4つのチップCで構成されている例を示している。図18(a)は空間分割的に、一つのCP,GEを用いて実行可能な第1のアプリケーションApp1が実行されるケースを示しており、この場合は図18(c)に例示するように、一つのGPU1801が備える4つのCP,4つのGEのうちそれぞれ一つずつがアクティブとなってアプリケーションの処理を実行する。この際、GPU間の接続ポート(X)、(Y)はいずれもインアクティブの状態にある。
 また図18(b)は、空間分割的に4つのアプリケーションApp1,App2,App3,App4を実行する例を示している。これらのアプリケーションは、それぞれ一つのCP,GEを用いれば処理可能なものであるとする。この例では、図18(d)に例示するように、一つのGPU1801が備える4つのCP,4つのGEがいずれもアクティブとなり、それぞれによって各アプリケーションの処理が実行される。このケースでも、GPU間の接続ポート(X)、(Y)はいずれもインアクティブの状態にある。
 なお、CP,GEの割り当てを切り替えるときには、コンテクスト・スイッチの処理も行うことで、処理経過の保持や処理の再開を可能とする。
 図19(a)は、図18と同様の構成のGPUを用いて、空間分割的に5つのアプリケーションApp1,App2,App3,App4,App5を実行する例を示している。この例では各アプリケーションは、図18の例より多くのリソースを必要とする例としているが、GPUチップ間を跨いでのリソース利用がない例を示している。従って、図19(c)に示すように、各GPUチップ1801,1802,1803,1804内でそれぞれのアプリケーションの処理が行われることとなっており、それぞれの内部でCP,GEの一部がアクティブとなる。またこの例でもGPU間の接続ポート(X)、(Y)はいずれもインアクティブの状態にある。
 一方、図19(b)の例では、空間分割的に2つのアプリケーションApp1,App2を実行する例を示しているが、ここでアプリケーションApp1は、少なくともチップBを3つ、チップCを6つ分利用する処理を行っており、アプリケーションApp2は、チップCを9つ分利用する(対応するチップBは5つ分利用する)処理を行っているものとする。従って、アプリケーションApp1の実行は、GPU1801,1802を用いており、アプリケーションApp2の実行には、GPU1802,1803,1804を用いている(図19(d))。この例では、2つ以上のGPUに跨がる処理が行われるため、各アプリケーションを実行するためのメインのCP,GEがアクティブとなる。図の例では、GPU1801内でアプリケーションApp1のためのCP,GEがアクティブとなって動作し、GPU1804内でアプリケーションApp2のためのCP,GEがアクティブとなっているとして示している。また、GPU1801とGPU1802との間、並びにGPU1802とGPU1803との間、GPU1802とGPU1804との間でGPU間の接続ポート(X)、(Y)がアクティブとなり、その他の間(例えばGPU1801とGPU1803との間など)ではGPU間の接続ポート(X)、(Y)はインアクティブの状態となる。
 また一つのアプリケーションの実行がどのGPU1801乃至1804の各チップA,B,Cに、どのように割り当てられてもよい(図20(a),(c))。また一つのアプリケーションによってすべてのGPU1801乃至1804が利用されてもよい(図20(b),(d))。
 例えばまとめることにより一つのGPU内で実行可能なアプリケーションが複数のGPU1801,1802に跨がって処理されてもよい(図21(a),(c))。なお、複数のGPUに跨がる処理が発生しない場合は、仮に16個のアプリケーションが並列的に動作する(各チップCが互いに異なるアプリケーションを実行している)場合でも、GPU間の接続ポート(X)、(Y)はいずれもインアクティブの状態となる(図21(b),(d))。
 1 情報処理システム、10 GPU、11 バスファブリック、12 コマンドプロセッサ、13 ジオメトリエンジン、14 制御ユニット、20 メモリ、21 シェーダエンジン、22 テクスチャユニット、23 レンダリングバックエンド、24 キャッシュ、25 描画処理ユニット、27 L3キャッシュ。
 

Claims (8)

  1.  コマンドプロセッサ及びジオメトリエンジンを有し、メモリと、他のグラフィックプロセッサに接続されるグラフィックプロセッサであって、
     自身に接続されたメモリとの間でデータを授受するバスファブリックと、
     前記コマンドプロセッサ及びジオメトリエンジンに接続され、他のグラフィックプロセッサのコマンドプロセッサ及びジオメトリエンジンとの間でデータを授受する第1のインターコネクトとを備え、
     前記バスファブリックが、第2のインターコネクトを介して、前記他のグラフィックプロセッサのバスファブリックとの間でデータを授受し、当該他のグラフィックプロセッサに接続されるメモリにアクセス可能に接続されているグラフィックプロセッサ。
  2.  請求項1に記載のグラフィックプロセッサであって、
     前記第1のインターコネクトと、第2のインターコネクトとは、互いに非同期に、他のグラフィックプロセッサとの間でデータの授受を行うグラフィックプロセッサ。
  3.  請求項1または2に記載のグラフィックプロセッサであって、
     さらに描画処理を行う描画処理ユニットを複数備え、
     前記コマンドプロセッサ及びジオメトリエンジンは、所定の分散処理制御方法に基づいて、前記複数の描画処理ユニットに並列的に描画処理を実行させるグラフィックプロセッサ。
  4.  請求項1から3のいずれか一項に記載のグラフィックプロセッサであって、
     複数のキャッシュであって、各キャッシュが、前記グラフィックプロセッサ自身に接続されたメモリまたは、いずれかの他のグラフィックプロセッサに接続されたメモリのうち、割り当てられたメモリから読み出したデータを保持するキャッシュを備え、
     前記キャッシュの各々を特定する情報に関連付けて、当該キャッシュに割り当てられたメモリが接続されているグラフィックプロセッサを特定する情報を保持するグラフィックプロセッサ。
  5.  請求項1から4のいずれか一項に記載のグラフィックプロセッサであって、
     複数のキャッシュであって、各キャッシュが、前記グラフィックプロセッサ自身に接続されたメモリまたは、いずれかの他のグラフィックプロセッサに接続されたメモリのうち、割り当てられたメモリから読み出したデータを保持するキャッシュを備え、
     前記キャッシュの各々に、どのグラフィックプロセッサに接続されたメモリを割り当てるかを設定するグラフィックプロセッサ。
  6.  コマンドプロセッサ及びジオメトリエンジンを有し、メモリに接続されるグラフィックプロセッサを複数有し、
     前記グラフィックプロセッサの各々が、
     自身に接続されたメモリとの間でデータを授受するバスファブリックと、
     前記コマンドプロセッサ及びジオメトリエンジンに接続され、他のグラフィックプロセッサのコマンドプロセッサ及びジオメトリエンジンとの間でデータを授受する第1のインターコネクトとを備え、
     前記バスファブリックが、第2のインターコネクトを介して、前記他のグラフィックプロセッサのバスファブリックとの間でデータを授受し、当該他のグラフィックプロセッサに接続されるメモリにアクセス可能に接続されている情報処理システム。
  7.  請求項6に記載の情報処理システムであって、
     前記グラフィックプロセッサの各々について、他のグラフィックプロセッサとの間でデータを授受する前記第1、第2のインターコネクトを、他のグラフィックプロセッサごとに、使用するか不使用とするか設定し、使用すると設定した第1、第2のインターコネクトを介して接続される他のグラフィックプロセッサとの間でデータを授受する情報処理システム。
  8.  請求項6または7に記載の情報処理システムであって、
     前記第1、第2のインターコネクトが、グラフィックプロセッサのチップ内インターコネクトの信号線を介して送受される信号をサンプリングし、当該サンプリングして得た情報を含むデータフレームを他のグラフィックプロセッサに対して送出し、他のグラフィックプロセッサから受信したデータフレームをデサンプリングして再生した信号を、グラフィックプロセッサ内で対応するチップ内インターコネクトの信号線上に出力するチップ間インターコネクトである情報処理システム。

     
PCT/JP2021/001092 2020-02-05 2021-01-14 グラフィックプロセッサ及び情報処理システム WO2021157315A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US17/796,346 US12014443B2 (en) 2020-02-05 2021-01-14 Graphics processor and information processing system
EP21750518.9A EP4102465A4 (en) 2020-02-05 2021-01-14 GRAPHICS PROCESSOR AND INFORMATION PROCESSING SYSTEM
JP2021575687A JP7339368B2 (ja) 2020-02-05 2021-01-14 グラフィックプロセッサ及び情報処理システム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2020018370 2020-02-05
JP2020-018370 2020-02-05

Publications (1)

Publication Number Publication Date
WO2021157315A1 true WO2021157315A1 (ja) 2021-08-12

Family

ID=77199261

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/001092 WO2021157315A1 (ja) 2020-02-05 2021-01-14 グラフィックプロセッサ及び情報処理システム

Country Status (4)

Country Link
US (1) US12014443B2 (ja)
EP (1) EP4102465A4 (ja)
JP (1) JP7339368B2 (ja)
WO (1) WO2021157315A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115952126B (zh) * 2023-03-14 2023-05-12 沐曦集成电路(上海)有限公司 一种gpu处理器系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10171766A (ja) * 1996-12-09 1998-06-26 Nec Corp グラフィックアクセラレータ
JP2014500549A (ja) * 2010-11-18 2014-01-09 日本テキサス・インスツルメンツ株式会社 処理クラスタのためのロード/ストア回路要素
JP2019189027A (ja) 2018-04-25 2019-10-31 トヨタ自動車株式会社 車両下部構造
US20200027015A1 (en) * 2017-04-07 2020-01-23 Intel Corporation Systems and methods for providing deeply stacked automated program synthesis

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180024938A1 (en) * 2016-07-21 2018-01-25 Advanced Micro Devices, Inc. Allocating physical pages to sparse data sets in virtual memory without page faulting
US10580200B2 (en) * 2017-04-07 2020-03-03 Intel Corporation Virtual reality apparatus and method including prioritized pixel shader operations, alternate eye rendering, and/or augmented timewarp
US10262388B2 (en) * 2017-04-10 2019-04-16 Intel Corporation Frequent data value compression for graphics processing units
JP7157330B2 (ja) * 2018-11-27 2022-10-20 富士通株式会社 監視装置、監視方法および監視プログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10171766A (ja) * 1996-12-09 1998-06-26 Nec Corp グラフィックアクセラレータ
JP2014500549A (ja) * 2010-11-18 2014-01-09 日本テキサス・インスツルメンツ株式会社 処理クラスタのためのロード/ストア回路要素
US20200027015A1 (en) * 2017-04-07 2020-01-23 Intel Corporation Systems and methods for providing deeply stacked automated program synthesis
JP2019189027A (ja) 2018-04-25 2019-10-31 トヨタ自動車株式会社 車両下部構造

Non-Patent Citations (1)

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

Also Published As

Publication number Publication date
EP4102465A4 (en) 2024-03-06
EP4102465A1 (en) 2022-12-14
US12014443B2 (en) 2024-06-18
US20230066833A1 (en) 2023-03-02
JP7339368B2 (ja) 2023-09-05
JPWO2021157315A1 (ja) 2021-08-12

Similar Documents

Publication Publication Date Title
JP7000643B2 (ja) 異種3次元回路スタック、システム、方法および装置
CN108694688B (zh) 用于在图形处理架构中管理数据偏置的设备和方法
US10664942B2 (en) Reconfigurable virtual graphics and compute processor pipeline
US20220165014A1 (en) Last-level projection method and apparatus for virtual and augmented reality
US20210255947A1 (en) Guaranteed forward progress mechanism
US20200402290A1 (en) Apparatus and method for implementing bounding volume hierarchy (bvh) operations on tesselation hardware
TWI620128B (zh) 在中央處理單元與圖形處理單元間分享資源之裝置與系統
US9214007B2 (en) Graphics processor having unified cache system
US11403805B2 (en) Position-based rendering apparatus and method for multi-die/GPU graphics processing
CN108776949A (zh) 用于图形处理环境中的存储器管理的设备和方法
US10885880B2 (en) Programmable controller and command cache for graphics processors
JP2007316940A (ja) マルチプロセッサシステム、ライブラリモジュール、および描画処理方法
JP2008538620A (ja) モノリシック構成のシリコン・チップ上に多数のグラフィックス・コアを用いるグラフィック処理及び表示システム
US20180107602A1 (en) Latency and Bandwidth Efficiency Improvement for Read Modify Write When a Read Operation is Requested to a Partially Modified Write Only Cacheline
TW201337751A (zh) 執行成型記憶體存取作業的系統和方法
US11189074B2 (en) Apparatus and method for efficiently merging bounding volume hierarchy data
CN108694687A (zh) 用于保护虚拟化和图形环境中的内容的设备及方法
US11237993B2 (en) Source synchronized signaling mechanism
EP3591519A1 (en) Method and apparatus for simultaneously executing multiple contexts on a graphics engine
WO2021157315A1 (ja) グラフィックプロセッサ及び情報処理システム
JP2004005569A (ja) データおよび命令の流れを少なくとも1つの機能ユニットに配向(direct)するシステムおよび方法
CN115335851B (zh) 多租户图形处理单元的动态透明重新配置
CN113544641A (zh) 针对图形处理器和相关联的装置用于无缝容器迁移的设备和方法
US6873331B2 (en) System and method for passing messages among processing nodes in a distributed system
US12051144B2 (en) Fully utilized hardware in a multi-tenancy graphics processing unit

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021575687

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2021750518

Country of ref document: EP

Effective date: 20220905