WO2021065053A1 - データ処理システム、データ処理方法およびコンピュータプログラム - Google Patents

データ処理システム、データ処理方法およびコンピュータプログラム Download PDF

Info

Publication number
WO2021065053A1
WO2021065053A1 PCT/JP2020/015623 JP2020015623W WO2021065053A1 WO 2021065053 A1 WO2021065053 A1 WO 2021065053A1 JP 2020015623 W JP2020015623 W JP 2020015623W WO 2021065053 A1 WO2021065053 A1 WO 2021065053A1
Authority
WO
WIPO (PCT)
Prior art keywords
application
gpu
data processing
applications
image
Prior art date
Application number
PCT/JP2020/015623
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/627,258 priority Critical patent/US12014444B2/en
Priority to JP2021551119A priority patent/JPWO2021065053A1/ja
Publication of WO2021065053A1 publication Critical patent/WO2021065053A1/ja

Links

Images

Classifications

    • 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
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements

Definitions

  • the present invention relates to data processing technology, particularly to data processing systems, data processing methods and computer programs.
  • a server on the cloud generates images for each client corresponding to multiple applications (games, etc.) running on multiple clients in parallel, and distributes and displays the generated images for each client to each client. May be done.
  • the present inventor considered that there is room for improvement in the server configuration from the viewpoint of efficiency for a server that generates a plurality of images corresponding to a plurality of applications and distributes each generated image to a client.
  • the present invention has been made based on the above idea of the present inventor, and one purpose is to generate a plurality of images corresponding to a plurality of applications, or to deliver each generated image to a client.
  • the purpose is to provide technology to improve efficiency.
  • the data processing system of an aspect of the present invention generates a plurality of images corresponding to a plurality of applications executed in parallel, and stores the plurality of images in a frame buffer. It includes a unit and one encoding unit that reads and encodes an image stored in a frame buffer.
  • the encoding unit is configured to read a plurality of images corresponding to a plurality of applications from the frame buffer at different timings for each application.
  • Another aspect of the present invention is a data processing method.
  • This method is executed by a data processing system including an image generation unit and one coding unit, and the image generation unit generates a plurality of images corresponding to a plurality of applications executed in parallel. Then, a step of storing the plurality of images in the frame buffer and a step of the encoding unit reading the plurality of images corresponding to the plurality of applications from the frame buffer at different timings for each application and encoding the read images. And.
  • FIG. 1 shows a method of executing a plurality of applications.
  • Game Apps Game Apps
  • system A installed and a system B capable of processing a game application up to 60 fps at an FHD resolution (1920 ⁇ 1080).
  • System A has about four times the performance of system B.
  • System A shall have upward compatibility with System B.
  • a plurality of systems B may be provided and a plurality of systems B may be used at the same time. Conceivable.
  • a second method as shown in the lower part of FIG. 1, it is conceivable to perform parallel processing (for example, 4 parallel processing) of a plurality of the game apps on one system A. This embodiment relates to the second method, and proposes a technique for reducing the number of physically installed systems and improving the operating rate per system.
  • a CPU arithmetic unit can be divided in the spatial direction (also referred to as "spatial division") to execute a plurality of applications in parallel.
  • the arithmetic unit of the CPU can be divided in the time direction (also referred to as "time division") to execute a plurality of applications in parallel.
  • Spatial division of an arithmetic unit means allocating each application to a plurality of CPUs or a plurality of threads of one CPU.
  • Time-sharing the arithmetic unit means that one CPU is shared by a plurality of applications in a time-division manner.
  • FIGS. 2B and 3B show an example in which a plurality of applications share one GPU.
  • CP in the GPU in each figure is a command processor that processes commands received from the CPU.
  • SE is a shader engine that executes shader processing.
  • TU is a texture unit that executes texture processing.
  • RB is a rendering backend that performs the rendering process.
  • L2” and “L3” are level 2 cache and level 3 cache.
  • GPUs generally include a large number of arithmetic units that execute shader processing and general-purpose computing processing in parallel, but these arithmetic units are physically divided and each application is made to occupy each arithmetic unit. It can be assigned in the form. For example, if one GPU has 2048 shader calculator pipelines, it is conceivable to allocate 512 to each of the four applications.
  • the functional block that processes tessellation, rasterization, etc. is generally constructed on the assumption that the processing serialized by one GPU is executed. Therefore, in order to spatially divide the GPU, it is practically necessary to provide these functional blocks in parallel in one GPU, which increases the cost.
  • the GPU processing pipeline is much longer than the CPU, and there is a large delay until the command buffer is fetched and the processing based on the command is completed.
  • the context switch after stopping the supply to the pipeline, it is necessary to wait until all the processing in the pipeline is completed, but this time becomes large.
  • the internal state information used by the GPU is much larger than that of the CPU, and none of the multiple types of overhead required for context switching can be ignored.
  • the multiple types of overhead include the processing time required for saving and reading the internal state, the circuit required for multiplexing to avoid this, and the waiting time for completing internal processing of the pipeline.
  • Game application processing configuration In the game App, one process of bundling a series of preemptive processes using the unified shader and finally generating the drawing result in the frame buffer according to the display display timing is serialized as a whole. Flowing. That is, there is a part that is highly serialized by means such as waiting for synchronization between a plurality of internal processes, and unlike an application containing only general-purpose computing (also called "GPGPU"), execution in a time-division manner is established. There can be no game App. Even if the overhead of the context switch can be ignored, it may not be possible to deal with it from the viewpoint of the processing structure of the game App.
  • the granularity for time-dividing the processing of one GPU shall be the timing at which the game App finishes the drawing processing for the frame buffer.
  • the GPU in the data processing system of the embodiment executes a plurality of data generation processes corresponding to a plurality of applications executed in parallel in a time-division manner.
  • the instruction unit (switching instruction unit 44 described later) in the data processing system of the embodiment completes the generation processing of one unit of data that the GPU corresponds to the first application and is passed to the subsequent processing unit. If so, the user is instructed to switch to the data generation process corresponding to the second application different from the first application.
  • One unit of data is the final product to be passed to the subsequent processing unit, and may be, for example, one frame (image) stored in the frame buffer.
  • the granularity for time-dividing the processing of one GPU is set as the timing for flipping the frame buffer.
  • two or more frame buffers are secured for one game app and used while switching between the drawing target and the display target, and the switching is called "flip".
  • the GPU fetches the command buffer generated by the CPU etc. and proceeds with the processing.
  • the GPU fetches a command related to drawing one frame of a certain game App
  • the subsequent fetch is stopped, it also grasps that the GPU internal processing is completed when the flip occurs, and starts the context save of the game App. If asynchronous compute processing that is not synchronized with the frame is running, stop it and save the context as well. After that, the saved context of the game App to be executed next is loaded, and the execution of the game App is restarted.
  • the context includes the GPU internal state and command buffer contents. If it can be guaranteed that the drawing and display processes do not conflict with each other in terms of timing, one frame buffer may be used, but a flip notification is performed as a signal to notify that the frame buffer can be accessed.
  • the internal states and intermediate data that need to be saved by the context switch are reduced compared to during the execution of drawing processing.
  • a large amount of small-grain internal states and intermediate data related to the drawing process being executed on the fly exist in the parallel computing unit (shader pipeline, etc.) and fixed functions (rasterizer, etc.). Because.
  • the drawing process there are some parts that are highly serialized by means such as synchronization waiting, which is difficult to time-divide.
  • a blanking period of display timing may be inserted after the flip, and GPU processing may not be required at that time. Therefore, it is advantageous in overhead reduction and concealment to perform context switching at the timing of flipping.
  • (2-2) Perform the context switch during the blanking period of the display timing.
  • the display output device is not connected to the cloud gaming server, but the timing of passing the frame buffer to the compression coding circuit may be treated as a virtual blanking period.
  • One GPU shall have at least the computing power that is the sum of the GPU computing power required by each application executed in parallel. For example, when a game App that generates an FHD (1980 ⁇ 1080) image at 60 fps requires 2 TFLOPS (Tera Floating-point Operations Per Second) as GPU computing power and executes four game Apps in parallel, at least 8 TFLOPS. Use a GPU with computing power.
  • TFLOPS Transmission Floating-point Operations Per Second
  • (2-4) Operate the GPU at the frame rate that is the sum of the processing frame rates planned by each application that is executed in parallel in time division. For example, when four game apps that generate 60 fps are executed in parallel, the frame rate of the GPU, that is, the context switch is executed at 240 Hz.
  • the GPU can be allocated in parallel to each application with sufficient frequency. Reduce the number of applications to run. For example, the outlook (predicted value) of the processing load of each application may be grasped in advance. Alternatively, after allocating GPU occupancy time to multiple applications and starting execution, measure the processing time excess level (for example, the number of drawing frame rates) and the increase level of delay with respect to user input, and then review the GPU occupancy time allocated to each application. You may.
  • relocation application When an application (referred to as “relocation application”) that should be reassigned to another system (second system) occurs while the first system is in operation, first, the relocation application is started in the second system, and then the first system is operated. Start context copy from. The processing of the relocation application in the first system is also continued until those setups are completed. Then, the processing of the relocation application in the first system is stopped from the context switch at a certain timing.
  • the CPU has at least the computing power required by each application that executes in parallel in time division, and operates in synchronization with the drawing frame rate of the GPU.
  • the CPU performance may be realized by a combination of an operating frequency, the number of CPU cores, the number of threads, and the like. For example, consider a system in which four game apps using eight 1-thread CPUs operating at 1.6 GHz are executed in parallel on a cloud server. In this system, eight 2-thread CPUs having the same architecture and operating at 3.2 GHz may be used. Further, when each of the four game apps to be executed in parallel requires a computing power of 100 GFLOPS, a CPU having a computing power of at least 400 GFLOPS may be used.
  • (2-6) Provide a GPU command buffer for each application and switch the target referenced by the GPU at the time of context switching.
  • a separate command buffer may be provided for compute processing that is asynchronous with drawing processing.
  • the processing step after the GPU includes, for example, a compression coding unit, an decompression unit (decoding unit), a communication unit, and a display unit.
  • a higher-performance compression encoder is required (described later). See the right side of FIG. 4).
  • an interconnect (bus) or memory that inputs / outputs data to the compression coding unit is performed. Bands are also required to have higher performance.
  • the peak power consumption also increases.
  • (2-1) Serialize the timing at which multiple game apps finish drawing to the frame buffer.
  • the GPU processing start time of each game app may be staggered from each other.
  • the flip timing or the vertical synchronization timing may be shifted from each other.
  • the display output device is often not connected, but the timing of passing the frame buffer to the compression coding circuit may be treated as a virtual vertical synchronization timing.
  • parallel execution of a plurality of game apps may be realized by using a plurality of GPUs, and the arithmetic unit is spatially divided or time-divided in one GPU. May be realized by.
  • FIG. 4 shows the relationship between the operation timing of compression coding and the required performance.
  • four game Apps game ApppA to game ApppD
  • the images of the four game Appps are stored in the frame buffer.
  • images of four game apps are stored in the frame buffer at the same time.
  • the number of pixels that need to be processed within 4 milliseconds is 1920 ⁇ 1080 ⁇ 4.
  • the images of the four game apps are stored in the frame buffer at different timings. Therefore, the number of pixels that need to be processed within 4 milliseconds is 1920 ⁇ 1080. Therefore, according to the method 72 of the embodiment, it is possible to realize compression coding with low delay and suppress the required performance of the compression encoder.
  • the frame buffer is game A, game B, game C, game D, game A, and game.
  • B, game C, game D, ... are generated in this order.
  • the frame buffer generation order may be changed. In that case, information indicating which application generated each framebuffer is stored.
  • the frame buffer generated by each application does not necessarily have to be placed in the same shared memory area, and the compression encoder may sequentially refer to a plurality of memory areas.
  • the compression encoder shall have at least the performance of performing compression coding at the frame rate that is the sum of the frame rates of each of a plurality of applications executed in parallel. For example, when a game App that generates a 1920 ⁇ 1080 resolution image at 60 fps (60 Hz) is executed in parallel, a compression code having an ability to process a 1920 ⁇ 1080 resolution image generated at 240 fps (240 Hz). Use a chemical device.
  • the compression encoder sequentially encodes a series of frame buffers output from a plurality of game apps, and then divides and outputs the encoded data for each game.
  • the compression encoder should be configured so that it can grasp which frame buffer belongs to which game. For example, a frame buffer for image output may be provided for each game. Further, when the images of a plurality of games are output to one frame buffer, a tag indicating which game is the image may be added to the image data. In addition, data may be passed to different transmitters for each game.
  • the compression encoder holds the past image frames output from one game and the intermediate data at the time of compression coding separately from other games, and outputs the data from the above one game. Increase the compression efficiency by referring to the new image when it is compressed and coded.
  • the compression encoder has a configuration capable of grasping which frame buffer belongs to which game.
  • the frame images A1 and A2 of the game A, the frame images B1 and B2 of the game B, the frame images C1 and C2 of the game C, and the frame images D1 and D2 of the game D are A1, B1, C1, D1, A2 and B2. , C2, and D2 in that order.
  • the compression encoder does not target A2 as a forward reference, but refers to the data of B1 stored in advance and the data in the middle of compression coding B1.
  • the compression encoder performs compression coding in units of partial images that are a part of the image of the application, and sequentially outputs encoded data in units of partial images to perform low-delay processing. ..
  • FIG. 5 is a block diagram showing a functional block of the data processing system of the embodiment.
  • the data processing system 10 is a system that is a unit for processing an application, and one cloud server includes one or more data processing systems 10.
  • the data processing system 10 includes a CPU 12, a GPU 14, a memory 16, a compression encoder 18 (also referred to as a “video encoder”), and a network interface 20. Each of these elements is connected via a bus 22. Further, only one GPU 14 and one compression encoder 18 are arranged in the data processing system 10.
  • each element described as a functional block that performs various processes can be composed of a circuit block, a memory, and other LSIs in terms of hardware, and a memory in terms of software. It is realized by the program loaded in. Therefore, it is understood by those skilled in the art that these functional blocks can be realized in various forms by hardware only, software only, or a combination thereof, and is not limited to any of them.
  • a computer program including a module corresponding to a functional block in the CPU 12 or the GPU 14 in the block diagram may be installed in the storage of the data processing system 10.
  • the CPU 12 and the GPU 14 may exert the function of each functional block by reading the computer program into the memory 16 and executing the program.
  • the memory 16 stores data referenced or updated by the CPU 12, the GPU 14, and the compression encoder 18.
  • the memory 16 includes a command buffer 30 and a frame buffer 32.
  • the command buffer 30 stores commands (commands for instructing the contents of drawing, etc.) for the GPU 14 output from the CPU 12.
  • the command buffer 30 includes a plurality of buffers that are different for each game App that is executed in parallel.
  • the individual command buffer for each game app is also called an "individual app command buffer”.
  • the frame buffer 32 stores the image data generated by the GPU 14.
  • the frame buffer 32 includes a plurality of buffers that are different for each game App that is executed in parallel.
  • the individual frame buffers for each game app are also referred to as "individual app frame buffers".
  • the command buffer in which the drawing instruction, that is, the instruction of the data processing executed in synchronization with the switching of the execution target application in the GPU 14 is stored is referred to as the first command buffer.
  • the command buffer 30 is a command buffer different from the plurality of first command buffers corresponding to the plurality of game applications, and stores instructions for data processing executed asynchronously with the switching of the execution target application in the GPU 14. 2 Command buffers may be included.
  • the data processing executed asynchronously with the switching of the application to be executed may be, for example, general-purpose calculation processing other than image processing.
  • the GPU 14 may read a command from the second command buffer and execute general-purpose calculation processing regardless of the application to be executed.
  • the network interface 20 communicates with the client device according to a predetermined communication protocol.
  • the client device in the embodiment is an information processing device (PC, smartphone, game machine, etc.) of the user who plays the game, displays an image of the game generated by the data processing system 10, and also displays the image of the game generated by the data processing system 10. Accept operations.
  • the network interface 20 passes the user's operation information transmitted from the client device to the CPU 12. Further, the network interface 20 transmits the image data after compression coding by the compression encoder 18 to the client device.
  • the CPU 12 includes a content determination unit 40, a drawing instruction unit 42, a switching instruction unit 44, and a timekeeping unit 45.
  • the GPU 14 includes a command reading unit 50, an image generation unit 52, a context saving unit 54, and a context reading unit 56.
  • the content determination unit 40 and the image generation unit 52 execute processing depending on each of the plurality of games App 58 executed in parallel.
  • the compression encoder 18 includes an image reading unit 60 and a compression coding unit 62. At least a part of the functional blocks included in the CPU 12, GPU 14, and compression encoder 18 of FIG. 5 may be implemented as a computer program.
  • the CPU 12, GPU 14, and compression encoder 18 may exert the functions of each functional block by executing a computer program.
  • FIG. 6 schematically shows parallel processing of a plurality of applications in the data processing system 10.
  • the CPU 12 executes data processing related to the game AppA, the game AppB, the game AppC, and the game AppD being executed by the plurality of client devices in parallel.
  • the GPU 14 executes a plurality of image generation processes corresponding to a plurality of game apps executed in parallel in a time-division manner.
  • the GPU 14 has at least a computing power that is the sum of the computing powers of the GPUs required by each of the plurality of game apps executed in parallel.
  • the content determination unit 40 of the CPU 12 determines the content of an image (for example, an image showing an operation result) to be displayed on each client device based on user operation information input from a plurality of client devices. .. In other words, the content determination unit 40 determines the content (image pattern, coordinate information, etc.) of a plurality of images corresponding to the game AppA, the game AppB, the game AppC, and the game AppD.
  • the drawing instruction unit 42 of the CPU 12 stores a command for drawing the content of each game App determined by the content determination unit 40 in the command buffer 30 (in the embodiment, an individual App command buffer corresponding to each game App).
  • the command reading unit 50 of the GPU 14 corresponds to the CP in FIG.
  • the command reading unit 50 is an image corresponding to one game app (for example, a game app A, which is referred to as a “target app” here) to be processed at a certain time among a plurality of game apps executed in parallel.
  • the command for instructing drawing is read from the individual App command buffer corresponding to the target App.
  • the command reading unit 50 of the GPU 14 receives an application switching instruction (context switch instruction in the embodiment) from the switching instruction unit 44 of the CPU 12, and when the application to be executed is switched, the command buffer for reading the drawing instruction is used as the execution target until then.
  • the individual App command buffer corresponding to the existing application is switched to the individual App command buffer corresponding to the application to be executed next.
  • the image generation unit 52 of the GPU 14 corresponds to the SE, TU, and RB of FIG.
  • the image generation unit 52 generates a plurality of images corresponding to a plurality of game apps executed in parallel, and stores the plurality of images in the frame buffer 32.
  • the image generation unit 52 generates image data of the target App according to the command read by the command reading unit 50.
  • the image generation unit 52 stores the generated image data of the target App in the individual App frame buffer corresponding to the target App.
  • the image generation unit 52 generates a plurality of images corresponding to the plurality of game apps at the frame rate obtained by totaling the frame rates planned by the plurality of game apps executed in parallel.
  • the GPU 14 may provide the following additional information to subsequent processing units (compression encoder 18, communication unit, display unit, etc.) with respect to the image stored in the frame buffer 32.
  • the additional information may include (1) data indicating which application the image is, in other words, data indicating the generating application. Further, the additional information may include (2) data indicating the image generation timing, and may include, for example, the number of the image, a time stamp, time information, and the like. Further, the additional information may include (3) data indicating the display timing of the image, and may include, for example, a time stamp, time information, and the like.
  • the GPU 14 may store the additional information as image metadata in the frame buffer 32, or may pass the additional information to the subsequent processing unit via a memory area different from that of the frame buffer 32.
  • FIG. 7 shows a handshake flow between the CPU and the GPU in the processing of one application.
  • the image generation unit 52 of the GPU 14 transmits a drawing end notification signal to the CPU 12 when the image generation process is completed.
  • the image generation unit 52 generates one image (in other words, a frame) of the target App, and when the storage of the image in the frame buffer 32 is completed, the image generation unit 52 transmits a drawing end notification signal to the CPU 12. ..
  • the switching instruction unit 44 of the CPU 12 has a second application (for example, a game) different from the first application. Instructs to switch to the image generation process corresponding to AppB).
  • a second application for example, a game
  • the switching instruction unit 44 transmits a context switch instruction signal to the GPU 14.
  • the context switch instruction may include information that specifies a new target App that is different from the previous target App.
  • the context storage unit 54 of the GPU 14 stores the context data of the target App up to that point in the memory 16 or a predetermined save register.
  • the context data includes internal state information and intermediate data in the drawing process of the target App up to that point.
  • the context reading unit 56 of the GPU 14 acquires the context data of the new target App specified by the context switch instruction from the memory 16 or a predetermined save register, and the acquired context data. Is set in the drawing processing register of GPU 14.
  • the command reading unit 50 of the GPU 14 reads the command for instructing the drawing of the image corresponding to the new target App from the individual App command buffer corresponding to the new target App, and corresponds to the new target App. Move to the image generation process.
  • the timekeeping unit 45 of the CPU 12 measures the time when each of the plurality of game apps executed in parallel occupies the GPU 14. In other words, the timekeeping unit 45 measures the time required for the image generation processing of each of the plurality of game apps.
  • the image reading unit 60 of the compression encoder 18 reads the image data from the frame buffer 32 (sequentially from a plurality of individual App frame buffers in the embodiment) when the flip instruction signal described later is received from the CPU 12.
  • the compression coding unit 62 compresses and encodes the image data read by the image reading unit 60 according to a predetermined algorithm. When the compression coding of a certain image data is completed, the compression coding unit 62 passes the compression-encoded image data to the network interface 20 and transmits the compression-encoded image data to the client device.
  • the switching instruction unit 44 of the CPU 12 of the embodiment transmits the flip instruction signal to the compression encoder 18 when the drawing end notification is received from the GPU 14, and also transmits the context switch instruction to the GPU 14.
  • the flip instruction signal is a signal instructing to switch between the image data writing target and the image data reference target (reading target for compression coding) between the plurality of frame buffers 32.
  • the flip instruction signal is a signal that instructs the compression encoder 18 to compress the image stored in the frame buffer 32.
  • the flip instruction signal may include information that specifies an area of the frame buffer 32 (in the embodiment, a specific individual App frame buffer) in which the image to be compressed and encoded is stored.
  • FIG. 8 shows the frame buffer switching timing in the processing of one application.
  • the figure shows an example of a double buffer (referred to as buffer a and buffer b here).
  • the compression encoder 18 reads the image stored in the buffer b and compresses and encodes the image.
  • the compression encoder 18 reads the image stored in the buffer a and compress-codes the image. This switching is executed with the flip instruction signal as a trigger.
  • the CPU 12 shifts the timing of kicking the drawing process of each application on the GPU 14 in a form of securing a predetermined GPU allocation time for each application for a plurality of applications to be executed in parallel.
  • the image generation unit 52 of the GPU 14 generates a plurality of images corresponding to the plurality of applications to be executed in parallel at different timings for each application, and stores them in the individual App frame buffer corresponding to each application.
  • the compression encoder 18 displays a plurality of images corresponding to a plurality of applications based on the flip instruction signal transmitted from the CPU 12, and an individual application corresponding to each application at a different timing for each application. Read from the framebuffer. As a result, the processing time from drawing to transmission of compressed data can be shortened, in other words, the delay can be reduced.
  • the compression encoder 18 reads a plurality of images corresponding to a plurality of applications from the frame buffer 32 at different timings for each application, and sequentially encodes the images corresponding to each application. Execute as a process. As a result, the processing capacity required for the compression encoder 18 can be reduced.
  • FIG. 9 shows an example of sharing the GPU 14 in a time division manner.
  • four systems operate in parallel, and each system generates (or displays) images of a game AppA, a game AppB, a game AppC, and a game AppD.
  • FIG. 9B shows that the game AppA, the game AppB, the game AppC, and the game AppD are processed in parallel in a single system in a time-division manner.
  • the system of FIG. 9B has four times the performance of one system of FIG. 9A.
  • the processing time of each game App in the system of FIG. 9B is 1/4 (that is, 1/240 second) as compared with one system of FIG. 9A.
  • FIG. 10 also shows an example of sharing the GPU 14 in a time division manner.
  • FIG. 10A shows an ideal case, in which the GPU occupancy time (total of the image generation time and the context switch time) of each of the game AppA to the game AppD is within 1/240 seconds.
  • FIG. 10B the GPU occupancy time of the game AppB exceeds 1/240 second.
  • the data processing system 10 of the embodiment skips the next GPU allocation to the game AppB. That is, when the GPU occupancy time required for the generation processing of one image corresponding to a certain application exceeds a predetermined allocation time, the data processing system 10 generates the next image corresponding to the application. Skip GPU allocation for processing.
  • the timekeeping unit 45 of the CPU 12 is the time from instructing the GPU 14 to draw a specific game App to receiving the drawing end notification from the GPU 14, or the time until the GPU 14 is instructed to draw the next game App. Is measured as the GPU occupancy time by the specific game App.
  • the drawing instruction unit 42 of the CPU 12 skips the drawing instruction of the specific game App once ( Skip the next minute).
  • the data processing system 10 next time of one image corresponding to the application.
  • the next GPU allocation time for the generation process of the above may be shortened.
  • the drawing instruction unit 42 of the CPU 12 sets the specific game App.
  • the GPU occupancy time allocated next time may be shorter than before.
  • the GPU occupancy time allocated to the specific game App next time may be shorter than the normal allocation time (1/240 seconds in the example of FIG. 10) determined by the number of Apps to be executed in parallel and the frame rate of each App.
  • the GPU occupancy time allocated to the specific game App next time may be shorter than the GPU occupancy time allocated to another game App.
  • the GPU 14 may autonomously execute the process of skipping the next GPU allocation or the process of shortening the next GPU allocation time for the game App that occupies the GPU 14 for a long time.
  • the GPU 14 may include a time measuring unit 45 for measuring the GPU occupancy time of each game App.
  • FIG. 11 also shows an example of sharing the GPU 14 in a time division manner.
  • the CPU 12 may further include an App allocation unit (not shown).
  • the timekeeping unit 45 of the CPU 12 measures the GPU occupancy time of each of the plurality of game apps that share the GPU 14 in a time division manner.
  • the App allocation unit is the number of game apps that share the GPU 14. (In other words, the number of game apps processed in parallel by the data processing system 10) may be reduced.
  • the App allocation unit of the CPU 12 cooperates with the App allocation unit of another data processing system 10 to execute at least one game App in parallel in the own system.
  • the process may be reassigned to another data processing system 10. For example, when the GPU occupancy time of a predetermined number or more of applications among a plurality of applications executed in parallel in the own system exceeds a predetermined allocation time (for example, 1/240 seconds), the App allocation unit of the CPU 12 of the plurality of applications. At least one of these applications may be reassigned to another data processing system.
  • the processing time (GPU occupancy time) of a certain application is exceeded in a micro time, that is, a minute time unit such as 1/240 second, the next GPU allocation to the application is performed. Is skipped (Skipping App B Process in FIG. 10).
  • the statistics of the allocation result within the corresponding time are collected in a macro time, that is, in a sufficiently long time unit such as 10 seconds, and an unacceptable excess (for example, an excess of a predetermined time or number of times) is collected. If this occurs, reassign some of the multiple applications that run in parallel to another data processing system.
  • the application having a large excess time or the number of excess times may be preferentially selected.
  • the application to be reassigned is called a target application
  • the data processing system 10 that has executed the target application up to that point is called a first system
  • the data processing system 10 to be a new allocation destination of the target application is called a first system. It is called the second system.
  • the App allocation unit of the CPU 12 of the first system may execute the following processes (1) to (4) in cooperation with the App allocation unit of the CPU 12 of the second system.
  • the App allocation unit of the CPU 12 of the first system notifies the App allocation unit of the CPU 12 of the second system of the identification information of the target App.
  • the processing unit (CPU12, GPU14, etc.) on the second system side loads the target Appp program from the memory 16 based on the target App identification information, and starts the target App.
  • the App allocation unit of the CPU 12 of the first system transmits the context data regarding the target App stored in the first system to the second system, and the App allocation unit of the CPU 12 of the second system processes the context data. Set in the unit (CPU12, GPU14, etc.).
  • the target App is moving in both the first system and the second system until the timing when the context switch of the target App is performed in the first system at a certain timing thereafter.
  • the App allocation unit of the CPU 12 of the first system stops the execution of the target Application in the first system triggered by the context switch at a certain timing, and notifies the App allocation unit of the CPU 12 of the second system to that effect. ..
  • the App allocation unit of the CPU 12 of the first system transmits the context data of the target App of the first system saved by the above-mentioned certain timing context switch to the second system, and the App allocation unit of the CPU 12 of the second system
  • the context data is set in the processing unit (CPU12, GPU14, etc.).
  • the App allocation unit of the CPU 12 of the second system changes the target App in each processing unit of the second system. Start the execution of.
  • the context setting and execution start of the target App in the second system can be executed within the processing allocation time interval (1/60 second later in this example) from the final context switch of the target App in the first system. desirable.
  • a certain timing in (3) above it is expected that the context storage of the first system, the context transfer from the first system to the second system, and the context setting in the second system can be completed within the interval of the processing allocation time. You may select with. For example, a certain timing may be determined after checking whether or not the transfer system between the first system and the second system is occupied by other processing.
  • the execution of the target App is restarted in the second system without a time lag and without the user recognizing the transition of the operating system.
  • the context copy and setting from the first system to the second system may be repeatedly executed until a certain timing described above is reached. For example, if the amount of context data is large and the transfer / setting / processing restart of all contexts cannot be completed within the interval of one processing allocation time, the execution may be divided into a plurality of times. In addition, it was expected that the context storage of the first system, the context transfer from the first system to the second system, and the context setting in the second system could be completed within the interval of the processing allocation time, but it was not in time. In that case, the execution of the application by the first system may be continued, and the context copy and the setting may be executed again later.
  • the compression encoder 18 is configured to read a plurality of images corresponding to a plurality of applications from the frame buffer 32 at different timings for each application.
  • the drawing instruction unit 42 of the CPU 12 writes a command for instructing drawing to the command buffer 30 at different timings for each application to be executed in parallel.
  • the GPU 14 generates an image at a different timing for each application executed in parallel, and writes the image in the frame buffer 32 (individual App frame buffer) at a different timing for each application executed in parallel.
  • the switching instruction unit 44 of the CPU 12 notifies the compression encoder 18 of the flip instruction at different timings for each application to be executed in parallel.
  • FIG. 12 shows the operation of the compression encoder 18 when a plurality of applications are processed in parallel.
  • the figure includes a timing chart showing the timing of image reading (Scan) from the frame buffer 32 by the compression encoder 18 and compression coding (Enc) of the read image.
  • the switching instruction unit 44 of the CPU 12 transmits the flip instruction signal to the compression encoder 18 at different timings for each game App.
  • the image reading unit 60 of the compression encoder 18 puts a plurality of images corresponding to the plurality of game apps into a frame buffer at different timings for each game app. Read from 32 (specifically, an individual App frame buffer corresponding to the game App to be processed).
  • the compression coding unit 62 of the compression encoder 18 compresses a plurality of images corresponding to the plurality of game apps at different timings for each game app.
  • the compression coding unit 62 executes a process of compressing and coding a plurality of images corresponding to a plurality of game apps as a sequential process.
  • the compression coding unit 62 has a performance capable of coding an image at a frame rate that is the sum of the frame rates planned by a plurality of game apps executed in parallel.
  • the compression coding unit 62 of the compression encoder 18 stores the past images of each of the plurality of game apps executed in parallel in a predetermined storage area separately for each game app.
  • the compression coding unit 62 stores the past image corresponding to a certain game App in a predetermined storage area separately from the image corresponding to another game App.
  • the compression coding unit 62 refers to the past image corresponding to the game App stored in the storage area. As a result, the compression efficiency of the images of each of the plurality of game apps executed in parallel is increased.
  • the B system of FIG. 1 includes eight CPUs capable of processing one thread at 1.6 GHz operation.
  • the A system of FIG. 1 includes eight CPUs capable of 2-thread processing in 3.2 GHz operation. Therefore, the A system has about four times the CPU performance of the B system.
  • the fact that the CPU of the A system can process two threads means that the CPU hardware has a mechanism for supporting thread processing and one CPU can execute two applications at the same time.
  • FIG. 13 and 14 show an example in which the CPU and GPU are allocated in a time division manner in the system A of FIG.
  • the four applications (App A to App D) executed here are developed on the premise that eight CPUs operating at 1.6 GHz can be used. Each application is assigned to each thread of eight CPUs and executed. If the number of threads supported as one CPU hardware is 2 and the number of applications to be executed in parallel is 4, as in the A system, two software-controlled threads are provided in one hardware thread. Then, 4 threads are executed in parallel.
  • the thread processing of the CPU is time-divisioned on the CPU with a granularity much smaller than a predetermined allocation time to the GPU (for example, 1/240 seconds) regardless of whether it is hardware control or software control. It is in the running state. In essence, each application can occupy and operate the corresponding CPU.
  • the application running in each thread of the CPU needs to detect the change that occurred outside the CPU in real time and take necessary measures.
  • the application running in each thread of the CPU cooperates with the outside in the same real-time property as the B system, regardless of the predetermined allocation time unit for the GPU or the actual time when each application occupies the GPU. , Continues to operate in parallel on the CPU.
  • the application running in each thread of the CPU can be operated in synchronization with each application processing running on the GPU without delay.
  • the CPU is allocated to occupy the GPU regardless of the predetermined allocation time. That is, the CPU 12 of the data processing system 10 executes a plurality of applications in parallel so that each application occupies the resources of the CPU 12 in parallel regardless of the allocation time for each application in the GPU 14. As a result, the application on the CPU 12 can execute the synchronous processing with the outside of the CPU 12 including the GPU 14 while maintaining the real-time property.
  • FIGS. 13 and 14 when the number of CPUs is insufficient for the number of applications to be executed in parallel, the CPUs execute in parallel using threads controlled by hardware or software. Run multiple applications in parallel.
  • the GPU command buffer is prepared for each application to be executed in parallel.
  • the CPU stores data processing instructions (for example, drawing instructions) related to a plurality of applications to be executed in parallel in a command buffer corresponding to each application.
  • the GPU reads data processing instructions (for example, drawing instructions) related to a plurality of applications to be executed in parallel from the command buffer, and executes data processing (for example, drawing processing) corresponding to each application.
  • the specific application on the CPU can continue the processing even during the period when the processing of the specific application is not assigned to the GPU (the period when the specific application does not occupy the GPU), and the instruction to the GPU can be specified at any time. Can be written to the command buffer corresponding to the application of.
  • the data processing system 10 may be connected to a display device that displays an image generated by the data processing system 10.
  • the switching instruction unit 44 of the CPU 12 may store data indicating a blanking period (in other words, a period during which the image is not displayed) in the image display of the display device.
  • the switching instruction unit 44 may transmit the context switch instruction to the GPU 14 and the flip instruction signal to the compression encoder 18 during the blanking period in the image display of the display device.
  • the GPU processing is not required during the blanking period, it is possible to suppress the influence of the context switching processing on the image generation processing (delay of the image generation processing, etc.).
  • the context switch of the GPU 14 is mentioned, but the context switch may also be executed in the compression encoder 18.
  • the compression encoder 18 initiates compression coding of an image corresponding to an application in a context relating to that application (eg, the internal state of the compression encoder 18 or previous processing data). May be provided with a context reading unit that reads from the memory 16 and sets it in the compression encoder 18.
  • the compression encoder 18 may include a context storage unit that saves the context related to the application from the compression encoder 18 to the memory 16 when the compression coding of the image corresponding to a certain application is completed.
  • the data processing system 10 executes a dedicated hardware functional block that executes the context switch of the GPU 14 and a context switch of the compression encoder 18. It may have at least one of its own hardware functional blocks.
  • This hardware functional block is a block independent of the CPU 12, GPU 14, memory 16, and compression encoder 18, and is also referred to hereinafter as a “context switch engine”.
  • the context switch engine accesses the memory 16 by DMA (Direct Memory Access).
  • DMA Direct Memory Access
  • the context switch engine When the context switch engine is notified of the application switching timing or detects it by itself, (1) it selects the context of each application stored in the memory 16 and processes the processing unit (GPU 14 or compression coding) without using software. Transfer to the device 18) and set. Alternatively, (2) the context held in the processing unit (GPU 14 or compression encoder 18) is transferred / saved to the memory without going through software.
  • DMA Direct Memory Access
  • the context switch engine that executes the context switch of the GPU 14 completes the image generation process corresponding to the first application and starts the image generation process corresponding to the second application.
  • the notification from the switching instruction unit 44 of the CPU 12, the notification from the GPU 14, the timing indicated by the video signal, or the like may be detected.
  • the context switch engine saves the context related to the first application from the GPU 14 to the memory 16 and saves the context related to the second application from the memory 16 without going through the processing of software that manages a plurality of applications executed in parallel. It may be set to GPU14.
  • the compression encoder 18 completes the coding of the image corresponding to the first application, and the code of the image corresponding to the second application is obtained.
  • the conversion may be detected based on the notification from the switching instruction unit 44 of the CPU 12, the notification from the compression encoder 18, the timing indicated by the video signal, or the like.
  • the context switch engine saves the context related to the first application from the compression encoder 18 to the memory 16 without going through the processing of software that manages a plurality of applications executed in parallel, and the context related to the second application. May be set from the memory 16 to the compression encoder 18.
  • the software that manages a plurality of applications is typically software that is executed by the CPU 12, and may be, for example, software that manages the execution order and resource allocation of applications.
  • the fourth modification example will be described.
  • 15 and 16 schematically show parallel processing of a plurality of applications in the data processing system 10 of the modified example.
  • the data processing system 10 may provide a display pipeline 64 (in other words, a video pipeline) between the GPU 14 and the compression encoder 18.
  • the display pipeline 64 is an image supplied from another block of the image supply source (for example, GPU 14 or a video decoder (not shown)), in other words, resolution conversion and image quality conversion for images of a plurality of applications to be processed in parallel. Alternatively, multiplexing may be performed in a time division manner.
  • GPU 14 executes drawing processing of two applications (App A and App B) in a time-division manner, generates two final images per application, and stores them in the frame buffer 32. To do.
  • the display pipeline 64 scales and synthesizes two final images for each application.
  • the compression encoder 18 compresses and encodes the image after scaling and composition for each application.
  • the switching instruction unit 44 is provided in the CPU 12, but the switching instruction unit 44 may be provided in a functional block (for example, GPU 14) other than the CPU 12.
  • the technical idea described in the examples can be applied to cases other than the case where a plurality of game apps are executed in parallel.
  • it can be applied in place of the game application or when other types of applications (for example, office software and business system programs) are executed in parallel with the game application.
  • One GPU that executes the generation processing of multiple data corresponding to multiple applications executed in parallel in a time-division manner, Data corresponding to a second application different from the first application when the GPU is data corresponding to the first application and the generation process of one unit of data to be passed to the subsequent processing unit is completed.
  • An instruction unit that instructs switching to the generation process of A data processing system characterized by being equipped with. According to this data processing system, immediately after the generation process of one unit of data corresponding to the first application is completed, the amount of data related to the first application that needs to be saved decreases, so that the second application is supported. It is possible to efficiently switch to the data generation process.
  • Item 1-1 characterized in that context data relating to the first application is stored in a predetermined storage area when the data generation process of the one unit corresponding to the first application is completed in the GPU.
  • the data processing system described in 1-2 According to this data processing system, the amount of context data related to the first application that needs to be saved can be reduced, and an efficient context switch can be realized. In other words, by performing the context switch after waiting for the GPU drawing to be completed, it becomes easy to interrupt and replace the processing in the GPU, and the processing amount of the context switch is reduced.
  • Software that manages the plurality of applications when the GPU completes the data generation process of the one unit corresponding to the first application and starts the data generation process corresponding to the second application.
  • a transfer unit that saves the context data related to the first application from the GPU to a predetermined storage area and sets the context data related to the second application from the storage area to the GPU without going through the process of The data processing system according to claim 1 or 2, wherein the data processing system is provided.
  • this data processing system in addition to the same effect as in items 1-3, the effect that the context switch can be completed more quickly is achieved.
  • the GPU occupancy time required for the generation process of the 1-unit data corresponding to the first application exceeds a predetermined allocation time, the next generation process of the 1-unit data corresponding to the first application
  • the data processing system according to any one of items 1-1 to 1-4, characterized in that the allocation time for the data is shortened or the GPU allocation for the next generation process is skipped.
  • the influence (delay, etc.) of the GPU occupancy time of the first application on the data processing of other applications in the GPU can be reduced, and fairness between applications executed in parallel can be reduced. Sex can be maintained. That is, at a micro level such as 1/240 second, even if the context switch for each predetermined allocation time is not executed, at the macro level of several seconds to several minutes, each application has a ratio corresponding to the predetermined allocation time. Is executed. As a result, the behavior of each application in the data processing system can be the same as when the application is executed in an individual system as in the B system of FIG. 1, including the real-time performance of the processing.
  • Item 1 characterized in that when the GPU occupancy time of a predetermined number or more of the plurality of applications exceeds a predetermined allocation time, the number of applications for which one unit of data is generated by the GPU is reduced.
  • the data processing system according to any one of -1 to 1-5. According to this data processing system, it is possible to secure the GPU occupancy time required for the data generation processing of the application.
  • Item 1-7 Item 1 characterized by allocating at least one application among the plurality of applications to another data processing system when the GPU occupancy time of a predetermined number or more of the plurality of applications exceeds a predetermined allocation time.
  • the data processing system according to any one of -1 to 1-5.
  • the GPU Further equipped with a coding unit, The GPU generates an image as the unit of data, stores the generated image in a frame buffer, and then stores the generated image. Items 1-1 to 1-8, wherein the instruction unit instructs the GPU to perform the switching when instructing the coding unit to encode an image stored in the frame buffer.
  • the GPU includes (1) data indicating which application the image is, (2) data indicating the image generation timing, and (3) data indicating the image display timing.
  • the data processing system according to item 1-9, wherein at least one is provided to a subsequent processing unit.
  • subsequent processing units for example, compression coding / decompression unit, communication unit, display unit, etc.
  • the instruction unit instructs the switching during the blanking period in the image display.
  • GPU processing since GPU processing is not required during the blanking period, it is possible to avoid the influence of the context switching processing on the image generation processing (delay of the image generation processing, etc.).
  • the CPU executes the plurality of applications in parallel so that the CPUs occupy the resources of the CPU in parallel regardless of the allocation time for each application in the GPU.
  • the CPU can execute synchronous processing with an external functional block including a GPU while maintaining real-time performance.
  • a plurality of command buffers corresponding to the plurality of applications further including a plurality of command buffers for storing data processing instructions relating to the plurality of applications.
  • the data processing system according to any one of items 1-1 to 1-12, wherein the GPU switches a command buffer for reading data processing instructions when the application to be executed is switched.
  • the processing of a certain application in the functional block that issues the data processing instruction and the processing of the application in the GPU can be executed asynchronously.
  • Item 1-17 Item 1 characterized in that a command buffer different from the plurality of command buffers is further provided, and a command buffer for storing data processing instructions that can be executed asynchronously with the switching of the application to be executed in the GPU is further provided.
  • the data processing system according to -16.
  • the GPU execute data processing (for example, general-purpose compute processing such as numerical calculation) that can be executed asynchronously with the switching of the application to be executed in the GPU and asynchronously with the switching. .. [Item 1-18]
  • the instruction unit is data corresponding to the first application by the GPU and completes the generation process of one unit of data to be passed to the subsequent processing unit, the second application is different from the first application.
  • Steps to instruct switching to image generation processing corresponding to the application A data processing method characterized by comprising.
  • this data processing method immediately after the generation process of one unit of data corresponding to the first application is completed, the amount of data related to the first application that needs to be saved decreases, so that the second application is supported. It is possible to efficiently switch to the data generation process. That is, by executing the generation processing of a plurality of data corresponding to a plurality of applications by one GPU, the number of hardware resources can be reduced and the system operating rate can be improved, and a plurality of data corresponding to a plurality of applications can be supported. Data generation processing can be realized efficiently.
  • the instruction unit is data corresponding to the first application by the GPU and completes the generation process of one unit of data to be passed to the subsequent processing unit, the second application is different from the first application.
  • Steps to instruct switching to image generation processing corresponding to the application A computer program to run. According to this computer program, immediately after the generation process of one unit of data corresponding to the first application is completed, the amount of data related to the first application that needs to be saved decreases, so that the data corresponding to the second application It is possible to efficiently switch to the generation process of.
  • the number of hardware resources can be reduced and the system operating rate can be improved, and a plurality of data corresponding to a plurality of applications can be supported.
  • Data generation processing can be realized efficiently.
  • the coding unit is characterized by executing a process of encoding a plurality of images corresponding to the plurality of applications as a sequential process.
  • the required performance of the image generation unit (for example, GPU) can be reduced, and the required performance of the coding unit can be reduced.
  • the CPU shifts the timing at which the image generation unit starts the drawing process of each application by allocating a predetermined time to each application.
  • the coding unit reads a plurality of images corresponding to the plurality of applications from the frame buffer at different timings for each application, and executes a process of encoding the plurality of images corresponding to the plurality of applications as sequential processing.
  • the data processing system according to item 2-1. According to this data processing system, the required performance of the image generation unit (for example, GPU) can be reduced, and the required performance of the coding unit can be reduced.
  • [Item 2-6] The data according to any one of items 2-1 to 2-5, wherein the image generation unit generates the plurality of images at a frame rate that is the sum of the frame rates planned by the plurality of applications. Processing system. According to this data processing system, it is possible to suppress the generation delay of a plurality of images corresponding to a plurality of applications, and it is possible to suppress the display delay of a plurality of images corresponding to a plurality of applications.
  • [Item 2-7] Item 2 to any one of items 2-1 to 2-6, wherein the coding unit has a performance capable of coding an image at a frame rate that is the sum of the frame rates planned by the plurality of applications. Described data processing system.
  • the coding unit stores a past image corresponding to a certain application separately from an image corresponding to another application, and compresses and encodes a new image corresponding to the certain application in the application.
  • the data processing system according to any one of items 2-1 to 2-7, wherein the corresponding past image is referred to. According to this data processing system, it is possible to improve the image compression efficiency of a plurality of applications executed at different timings.
  • This invention can be applied to a system in which a plurality of applications are executed in parallel.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Processing (AREA)
  • Display Devices Of Pinball Game Machines (AREA)

Abstract

GPU14は、並列して実行される複数のアプリケーションに対応する複数の画像を生成し、それら複数の画像をフレームバッファ32に格納する。圧縮符号化器18は、フレームバッファ32に格納された画像を読み出して符号化する。圧縮符号化器18は、複数のアプリケーションに対応する複数の画像を、アプリケーションごとに異なるタイミングでフレームバッファ32から読み出す。

Description

データ処理システム、データ処理方法およびコンピュータプログラム
 この発明は、データ処理技術に関し、特にデータ処理システム、データ処理方法およびコンピュータプログラムに関する。
 クラウド上のサーバが、複数のクライアントで実行中の複数のアプリケーション(ゲーム等)に対応する各クライアント用の画像を並行して生成し、生成した各クライアント用の画像を各クライアントへ配信して表示させることが行われることがある。
 複数のアプリケーションに対応する複数の画像を生成し、生成した各画像をクライアントへ配信するサーバについて、効率の観点からサーバの構成に改善の余地があると本発明者は考えた。
 本発明は本発明者の上記着想に基づいてなされたものであり、1つの目的は、複数のアプリケーションに対応する複数の画像を生成する処理、または、生成した各画像をクライアントへ配信する処理を効率化する技術を提供することにある。
 上記課題を解決するために、本発明のある態様のデータ処理システムは、並列して実行される複数のアプリケーションに対応する複数の画像を生成し、それら複数の画像をフレームバッファに格納する画像生成部と、フレームバッファに格納された画像を読み出して符号化する1つの符号化部と、を備える。符号化部が、複数のアプリケーションに対応する複数の画像を、アプリケーションごとに異なるタイミングでフレームバッファから読み出すよう構成された。
 本発明の別の態様は、データ処理方法である。この方法は、画像生成部と、1つの符号化部とを備えるデータ処理システムが実行する方法であって、画像生成部が、並列して実行される複数のアプリケーションに対応する複数の画像を生成し、それら複数の画像をフレームバッファに格納するステップと、符号化部が、複数のアプリケーションに対応する複数の画像を、アプリケーションごとに異なるタイミングでフレームバッファから読み出し、読み出した画像を符号化するステップと、を備える。
 なお、以上の構成要素の任意の組合せ、本発明の表現を装置、プログラム、プログラムを格納した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
 本発明によれば、複数のアプリケーションに対応する複数の画像を生成する処理、または、生成した各画像をクライアントへ配信する処理を効率化することができる。
複数のアプリケーションを実行する方法を示す図である。 複数アプリケーションが1つのGPUを共有する例を示す図である。 複数アプリケーションが1つのGPUを共有する例を示す図である。 圧縮符号化の動作タイミングと必要性能との関係を示す図である。 実施例のデータ処理システムの機能ブロックを示すブロック図である。 データ処理システムにおける複数アプリケーションの並列処理を模式的に示す図である。 1つのアプリケーションの処理におけるCPUとGPUとのハンドシェイクフローを示す図である。 1つのアプリケーションの処理におけるフレームバッファの切替タイミングを示す図である。 GPUを時分割で共有する例を示す図である。 GPUを時分割で共有する例を示す図である。 GPUを時分割で共有する例を示す図である。 複数のアプリケーションを並列処理する場合の圧縮符号化器の動作を示す図である。 図1のAシステムにおいて、CPUとGPUを時分割で割り当てる例を示す図である。 図1のAシステムにおいて、CPUとGPUを時分割で割り当てる例を示す図である。 変形例のデータ処理システムにおける複数アプリケーションの並列処理を模式的に示す図である。 変形例のデータ処理システムにおける複数アプリケーションの並列処理を模式的に示す図である。
<背景>
 図1は、複数のアプリケーションを実行する方法を示す。4K解像度(3840×2160)で60fps(frames per second)までのゲームアプリケーション(以下「ゲームApp」とも呼ぶ。)を処理できる比較的高性能なCPU(Central Processing Unit)およびGPU(Graphics Processing Unit)を搭載したシステムAと、FHD解像度(1920×1080)で60fpsまでのゲームAppを処理できるシステムBがあるとする。システムAは、システムBの約4倍の性能を有する。システムAは、システムBに対する上位互換性を有することとする。
 ここでFHD解像度60fpsクオリティのゲームAppを複数同時に実行するニーズがあるとき、第1の方法として、図1の上段に示すように、システムBを複数設け、複数のシステムBを同時使用することが考えられる。また、第2の方法として、図1の下段に示すように、1つのシステムA上で、複数の上記ゲームAppを並列処理(例えば4並列処理)することが考えられる。本実施例は、第2の方法に関するものであり、システムの物理的な設置数の削減や、1システムあたりの稼働率向上を実現させる技術を提案する。
 本実施例では、複数のアプリケーションの並列処理、すなわちマルチコンテキストの並列処理と、処理遅延削減と、圧縮符号化部におけるピーク性能削減とを、同時に両立させるデータ処理システムを提案する。まず、本実施例の技術思想について概説する。
<実施例の技術思想1>
 実施例の技術思想1として、クラウド上に設けられたサーバ(「クラウドサーバ」とも呼ぶ。)の1つのGPUにより複数のゲームAppを効率よく処理する方法を説明する。
 (1)課題:
 1つのCPUにおいて複数アプリケーションを実行する方法は一般化している。例えば、CPUの演算器を空間方向で分割(「空間分割」とも呼ぶ。)して複数アプリケーションを並列実行することができる。または、CPUの演算器を時間方向で分割(「時分割」とも呼ぶ。)して複数アプリケーションを並列実行することができる。演算器を空間分割するとは、複数のCPU、または1つのCPUの複数スレッドに対して、各アプリケーションを割り当てることである。演算器を時分割するとは、1つのCPUを時分割で複数アプリケーションが共有することである。
 ここで、1つのGPUにおいて複数アプリケーションの処理を実行する場合にも、演算器を空間分割または時分割することが考えられるが、そこにはGPU特有の課題が存在する。図2と図3は、複数アプリケーションが1つのGPUを共有する例を示す。図2Aと図3Aは、GPUを時分割により共有する例を示し、図2Bと図3Bは、GPUを空間分割により共有する例を示している。各図のGPUにおける「CP」は、CPUから受け付けたコマンドを処理するコマンドプロセッサである。「SE」は、シェーダ処理を実行するシェーダエンジンである。「TU」は、テクスチャ処理を実行するテクスチャユニットである。「RB」は、レンダリング処理を実行するレンダリングバックエンドである。「L2」、「L3」は、レベル2キャッシュ、レベル3キャッシュである。
 (1-1)GPUを空間分割する場合の課題:
 GPUは、シェーダ処理や汎用コンピューティング処理を実行する多数の演算器を並列に内包することが一般的であるところ、これらの演算器を物理的に分割し、各アプリケーションに各演算器を占有させる形で割り当てることが考えられる。例えば、1GPUにシェーダ演算器パイプラインが2048本ある場合、4つのアプリケーションに512本ずつ割り当てることが考えられる。しかし、テッセレーションやラスタライズ等を処理する機能ブロックは、1つのGPUでシリアライズされた処理の実行を前提に構築されていることが一般的である。そのため、GPUを空間分割するためには、事実上、これらの機能ブロックを1つのGPU内に並列に設ける必要があり、コストが増加してしまう。
 (1-2)GPUを時分割する場合の課題:
 (1-2-1)コンテキストスイッチのオーバーヘッド
 同じ演算器を複数アプリケーションがいれかわりたちかわりで利用するため、その遷移(「コンテキストスイッチ」とも呼ぶ。)のたびに、内部ステートの退避と読出しが必要になる。GPUは、ピクセル/バーテックスシェーダ処理や汎用コンピューティングを処理する演算器(「ユニファイドシェーダー」とも呼ばれる。)を並列に多数内包することが一般的であり、これらの演算器は元々プリエンプトに複数処理を時分割で並列実行することを考慮し、内部ステート保管場所の多重化などによるコンテキストスイッチのオーバーヘッド削減をする仕組みがある。しかし、ユニファイドシェーダー以外の固定機能は、時分割の考慮が限定されている。これらにおいても内部ステートを保持するレジスタの多重化などにより、遷移時間を短縮する方法も考えられるが、GPU全体がもつ内部データは膨大であり、回路規模の増加によるチップ面積効率悪化が無視できない。
 また、1つのアプリケーション内であれば、その内部でプリエンプトに実行されている複数処理間でコンテキスト情報やアクセスしているデータが共有されていても問題ない。しかし、複数のアプリケーションにおいては、これらは共有されてはならず、コンテキストスイッチのたびに、これらのデータの退避と読み出しも繰り返す必要がある。
 また、GPUの処理パイプラインはCPUに比べて非常に長く、コマンドバッファをフェッチし、コマンドに基づく処理が終了するまでの遅延が大きい。コンテキストスイッチにおいては、パイプラインへの供給を止めたあと、パイプライン内にある処理がすべて完了するまで待つ必要があるが、この時間が大きくなってしまう。
 また、CPUに比べてGPUが使用している内部ステート情報は非常に多く、コンテキストスイッチに要する複数種類のオーバーヘッドのいずれも無視できない。複数種類のオーバーヘッドは、内部ステートの退避や読出しに要する処理時間、これを回避する多重化に要する回路、パイプライン内部処理終了待ち時間を含む。
 (1-2-2)ゲームアプリケーション処理構成:
 ゲームAppにおいては、ユニファイドシェーダーを用いた一連のプリエンプトな処理群を束ねて、全体としては、最終的にディスプレイ表示タイミングにあわせて描画結果をフレームバッファに生成するという一つの処理がシリアライズされて流れている。すなわち、複数の内部処理間には、同期待ちなどの手段で高度にシリアライズされている箇所があり、汎用コンピューティング(「GPGPU」とも呼ばれる。)のみのアプリケーションと異なり、時分割での実行が成り立たないゲームAppが存在しうる。仮にコンテキストスイッチのオーバーヘッドを無視できたとしても、ゲームAppの処理構造からみて対応できないことがある。
 (2)解決技術:
 (2-1)1つのGPUの処理を時分割する粒度を、ゲームAppがフレームバッファに対する描画処理を終了したタイミングとすること。実施例のデータ処理システムにおけるGPUは、並列して実行される複数のアプリケーションに対応する複数のデータの生成処理を時分割で実行する。そして、実施例のデータ処理システムにおける指示部(後述の切換指示部44)は、GPUが第1のアプリケーションに対応するデータであって、後続の処理部に渡す1単位のデータの生成処理を完了した場合に、第1のアプリケーションとは異なる第2のアプリケーションに対応するデータの生成処理への切替を指示する。1単位のデータは、後続の処理部に渡す最終的な生成物であり、例えば、フレームバッファに格納する1フレーム(画像)であってもよい。
 実施例では、1つのGPUの処理を時分割する粒度を、フレームバッファをフリップ(flip)させるタイミングとする。通常、1つのゲームAppあたり2枚以上のフレームバッファを確保し描画対象と表示対象を切り替えながら使うが、その切替を「フリップ」と呼ぶ。
 GPUは、CPUなどが生成したコマンドバッファをフェッチして処理を進める。GPUは、あるゲームAppの1フレーム分の描画にかかわるコマンドをフェッチしたら後続のフェッチは停止させ、フリップの発生をもってGPU内部処理が終了したことも把握し、当該ゲームAppのコンテキストセーブを始める。フレームに同期しない非同期コンピュート処理が走っていたら、それも停止させ、同様にコンテキストセーブする。その後に、次に実行するゲームAppの保存済みコンテキストをロードし、そのゲームAppの実行を再開する。コンテキストにはGPU内部ステートやコマンドバッファ内容を含む。なお、描画と表示の処理がタイミング的に競合しないことが保証できる場合、フレームバッファは1つでもよいが、フレームバッファへのアクセス可能を通知する合図としてフリップ通知は行う。
 GPUにおいて、描画終了直後(すなわちフリップさせるとき)は、コンテキストスイッチで退避が必要な内部ステートや中間データが、描画処理の実行中に比べて減少する。描画処理の実行中は、on the flyで実行中の描画処理にかかわる小粒度の内部ステートや中間データが、並列演算器(シェーダーパイプラインなど)や固定機能(ラスタライザなど)内に大量に存在するためである。また、描画処理では、時分割が難しい同期待ちなどの手段で高度にシリアライズされている箇所もある。さらにまた、フリップ後には表示タイミングのブランキング期間が挿入される場合があり、その時にはGPU処理が不要な場合もある。したがって、フリップさせるタイミングでコンテキストスイッチを行うことが、オーバーヘッド削減と隠蔽において有利となる。
 (2-2)コンテキストスイッチを、表示タイミングのブランキング期間中に行うこと。
 なお、クラウドゲーミングサーバにおいてはディスプレイ出力デバイスが接続されていない場合が多いが、圧縮符号化回路にフレームバッファを渡すタイミングを仮想的にブランキング期間と扱ってもよい。
 (2-3)1つのGPUは、並列に実行する各アプリケーションが必要とするGPU演算能力を合計した演算能力を少なくとも有するものとすること。
 例えば、FHD(1980×1080)画像を60fpsで生成するゲームAppが、GPU演算能力として2TFLOPS(Tera Floating-point Operations Per Second)を必要とし、そのゲームAppを4本並列実行する場合、少なくとも8TFLOPSの演算能力を持つGPUを用いる。
 (2-4)時分割で並列実行する各アプリケーションが予定している処理フレームレートを合計したフレームレートでGPUを動作させること。
 例えば、60fpsを生成するゲームAppを4本並列実行する場合、GPUのフレームレート、すなわちコンテキストスイッチは240Hzで実行する。
 (2-4-1)時分割で並列実行する対象のアプリケーションが、2-4の割当時間(time-slice)を超えてGPUを占有した場合、コンテキストスイッチを遅らせる。割当時間を超えてGPUを占有したアプリケーションに対する次回の時間割り当てはスキップし、または、当該アプリケーションに対する次回の割当時間をそれまでより減少させる。
 (2-4-2)時分割で並列実行する対象のアプリケーションによるGPU占有が、割当時間を超過する時間や率が大きい場合、各アプリケーションに対して十分な頻度でGPU割り当てができるように、並列実行するアプリケーション数を減らす。例えば、予め各アプリケーションの処理負荷の見通し(予測値)を事前に把握してもよい。もしくは、複数のアプリケーションにGPU占有時間を割り当てて実行開始後に、処理時間超過レベル(例えば描画フレームレート数)とユーザ入力に対する遅延の増加レベルを測定した上で、各アプリケーションに割り当てるGPU占有時間を見直してもよい。
 第1システムの稼働中に別システム(第2システム)に割り当て直すべきアプリケーション(「再配置アプリケーション」と呼ぶ。)が生じた場合、まず、第2システムにおいて再配置アプリケーションを起動し、第1システムからのコンテキストコピーを開始する。それらのセットアップが完了するまでは第1システムにおける再配置アプリケーションの処理も継続させる。そして、あるタイミングのコンテキストスイッチからは第1システムにおける再配置アプリケーションの処理を停止させる。
 (2-5)CPUは、時分割で並列実行する各アプリケーションが必要とする演算能力を合計した演算能力を少なくとも有し、GPUの描画フレームレートと同期して動作すること。
 当該CPU性能は、動作周波数、CPUコア数、スレッド数等の組み合わせで実現されてもよい。例えば、クラウドサーバにおいて、1.6GHzで動作する1スレッドCPUを8個使用するゲームAppを4本並列実行するシステムを考える。このシステムでは、同一アーキテクチャで、かつ、3.2GHzで動作する2スレッドCPUを8個使用してもよい。また、並列実行対象の4本のゲームAppがそれぞれ100GFLOPSの演算能力を要求する場合、CPUは、少なくとも400GFLOPSの演算能力を有するものが使用されてもよい。
 (2-6)GPUのコマンドバッファをアプリケーションごとに設け、コンテキストスイッチのときにGPUが参照する対象を切り替えること。
 (2-6-1)描画処理とは非同期のコンピュート処理用にさらに別のコマンドバッファを設けてもよい。
 (2-7)順次生成される各フレームバッファが、どのアプリケーションが生成したものであるか、どのタイミングに生成されたか、どのようなタイミングに表示すべきものであるかを示す情報をGPU後段の処理ステップに提供すること。GPU後段の処理ステップは、例えば、圧縮符号化部、伸長化部(デコード部)、通信部、表示部を含む。
<実施例の技術思想2>
 実施例の技術思想2として、クラウドサーバにおいてフレームバッファに格納された複数のゲームAppの複数の画像を効率よく圧縮符号化し、クライアントへ転送する方法を説明する。
 (1)課題:
 クラウドサーバで複数のゲームAppが実行され、複数のフレームバッファが同時に生成され、それらを同時に圧縮符号化のうえ、低遅延でクライアントへ送信する場合、一般的には、圧縮符号化器は、並列に同時に生成されるフレームバッファを処理するだけの並列度、処理能力が必要となる。例えば、1920×1080解像度の画像を60Hzで生成すべきゲームAppが4本並列に実行され、同時に4枚のフレームバッファが完成する場合、システムは、1920×1080解像度の画像を60Hzで圧縮符号化できる圧縮符号化器を4並列で備える必要がある。この結果、システムのコストが増大することがある。
 また、複数のゲームAppの複数の画像を複数のフレームバッファに一時に格納し、それらを低遅延で圧縮し、送出しようとすると、より高性能な圧縮符号化器が必要になってしまう(後述の図4の右側を参照)。また、複数のゲームAppの複数の画像を複数のフレームバッファに一時に格納し、それらを低遅延で圧縮し、送出しようとすると、圧縮符号化部にデータを入出力するインターコネクト(バス)やメモリの帯域もより高性能なものが要求される。また、複数のゲームAppの複数の画像を複数のフレームバッファに一時に格納し、それらを低遅延で圧縮し、送出しようとすると、ピーク消費電力も大きくなってしまう。
 (2)解決技術:
 1つの圧縮符号化器が、複数のストリームを効率よく処理できる仕組みをもったうえで、複数のゲームAppがフレームバッファを生成するタイミングをシリアライズ化(言い換えれば逐次化)することにより上記課題を解決する。具体的な構成を以下の2-1~2-6で説明する。
 (2-1)複数のゲームAppがフレームバッファに対する描画を終了させるタイミングをシリアライズ化すること。
 例えば、並列実行されている複数のゲームAppにおいて、各ゲームAppのGPU処理開始時間をお互いにずらしておいてもよい。また、並列実行されている複数のゲームAppにおいて、フリップするタイミング、もしくは、垂直同期タイミングをお互いにずらしておいてもよい。クラウドゲーミングサーバにおいてはディスプレイ出力デバイスが接続されない場合が多いが、圧縮符号化回路にフレームバッファを渡すタイミングを仮想的に垂直同期タイミングと扱ってもよい。なお、特徴2の技術思想を実現するために、複数のゲームAppの並列実行は、複数個のGPUを使用して実現されてもよく、1つのGPUにおいて演算器を空間分割または時分割することにより実現されてもよい。
 図4は、圧縮符号化の動作タイミングと必要性能との関係を示す。ここでは、1980×1080解像度の画像を60fpsで生成する4つのゲームApp(ゲームAppA~ゲームAppD)を並行実行し、4つのゲームAppの画像がフレームバッファに格納されるとする。方式70では、4つのゲームAppの画像が同時にフレームバッファに格納される。方式70では、4ミリ秒以内に処理する必要があるピクセル数は1920×1080×4となる。一方、実施例の方式72では、4つのゲームAppの画像が互いに異なるタイミングでフレームバッファに格納される。そのため4ミリ秒以内に処理する必要があるピクセル数は1920×1080となる。したがって、実施例の方式72によると、低遅延での圧縮符号化を実現し、かつ、圧縮符号化器の必要性能を抑制することができる。
 (2-2)並列実行される複数のアプリケーションが予定している処理フレームレートを合計したフレームレートでフレームバッファを生成すること。言い換えれば、並列実行される複数のアプリケーションが予定しているフレームレートを合計したフレームレートで、複数のアプリケーションに対応する複数の画像を生成すること。
 例えば、60fpsで画像を生成すべきゲームAppを4本並列実行する場合、フレームバッファが240Hzで生成されるよう構成される。
 また例えば、並列実行される複数のアプリケーションが、ゲームA、ゲームB、ゲームC、ゲームDの4つである場合、フレームバッファは、ゲームA、ゲームB、ゲームC、ゲームD、ゲームA、ゲームB、ゲームC、ゲームD、・・・の順で生成される。ただし、各アプリケーションの毎フレーム処理時間が可変である場合、フレームバッファの生成順序が入れ替わってもよい。その場合、各フレームバッファがどのアプリケーションにより生成されたものかを示す情報が記憶される。なお、各アプリケーションが生成するフレームバッファは、必ずしも共有された同じメモリ領域に置かれなくてもよく、圧縮符号化器が複数のメモリ領域を順次参照してもよい。
 (2-3)圧縮符号化器は、並列実行される複数のアプリケーションそれぞれのフレームレートを合計したフレームレートで圧縮符号化を行う性能を最低限持つこと。
 例えば、1920×1080解像度の画像を60fps(60Hz)で生成するゲームAppが4並列で実行される場合、240fps(240Hz)で生成される1920×1080解像度の画像を処理可能な能力を持つ圧縮符号化器を使用する。
 (2-4)圧縮符号化器は、複数のゲームAppから出力された一連のフレームバッファを順次符号化し、その後、符号化データをゲーム毎に分割して出力すること。
 この場合、圧縮符号化器は、どのフレームバッファがどのゲームのものであるかを把握可能な構成とすること。例えば、画像出力先のフレームバッファをゲームごとに設けてもよい。また、複数のゲームの画像が1つのフレームバッファに出力される場合、どのゲームの画像であるかを示すタグが画像データに付与されてもよい。また、ゲームごとに異なる送信機にデータを渡してもよい。
 (2-5)圧縮符号化器は、1つのゲームから出力された過去の画像フレームや圧縮符号化時の途中データを、他のゲームとは区別して保持しておき、上記1つのゲームから出力された新たな画像の圧縮符号化時に参照することで圧縮効率を上げること。
 この場合も、圧縮符号化器は、どのフレームバッファがどのゲームのものであるかを把握可能な構成とする。
 例えば、ゲームAのフレーム画像A1、A2、ゲームBのフレーム画像B1、B2、ゲームCのフレーム画像C1、C2、ゲームDのフレーム画像D1、D2が、A1、B1、C1、D1、A2、B2、C2、D2の順に出力されるとする。この場合、圧縮符号化器は、B2の圧縮符号化において、A2を前方参照の対象とせず、予め記憶したB1のデータや、B1を圧縮符号化する際の途中データを参照する。
 (2-6)圧縮符号化器は、アプリケーションの画像の一部である部分画像単位で圧縮符号化を行い、順次、部分画像単位での符号化データを出力することで、低遅延処理すること。
<実施例のシステムの詳細>
 以下、上記の技術思想を具現化する構成の例を説明する。
 図5は、実施例のデータ処理システムの機能ブロックを示すブロック図である。データ処理システム10は、アプリケーションを処理する単位となるシステムであり、1台のクラウドサーバは、1つ以上のデータ処理システム10を備える。データ処理システム10は、CPU12、GPU14、メモリ16、圧縮符号化器18(「ビデオエンコーダ」とも呼ばれる。)、ネットワークインタフェース20を備える。これらの各要素は、バス22を介して接続される。また、GPU14と圧縮符号化器18は、データ処理システム10に1つだけ配置される。
 本明細書のブロック図において、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、回路ブロック、メモリ、その他のLSIで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。例えば、ブロック図においてCPU12内またはGPU14内の機能ブロックに対応するモジュールを含むコンピュータプログラムが、データ処理システム10のストレージにインストールされてもよい。CPU12およびGPU14は、そのコンピュータプログラムをメモリ16に読み出して実行することにより、各機能ブロックの機能を発揮してもよい。
 メモリ16は、CPU12、GPU14、圧縮符号化器18により参照または更新されるデータを記憶する。メモリ16は、コマンドバッファ30とフレームバッファ32を含む。コマンドバッファ30は、CPU12から出力されたGPU14に対するコマンド(描画の内容を指示するコマンド等)を記憶する。実施例では、コマンドバッファ30は、並列実行されるゲームAppごとに異なる複数のバッファを含む。ゲームAppごとの個々のコマンドバッファを「個別Appコマンドバッファ」とも呼ぶ。フレームバッファ32は、GPU14により生成された画像データを記憶する。実施例では、フレームバッファ32は、並列実行されるゲームAppごとに異なる複数のバッファを含む。ゲームAppごとの個々のフレームバッファを「個別Appフレームバッファ」とも呼ぶ。
 ここでは、描画指示、すなわち、GPU14における実行対象アプリケーションの切替と同期して実行されるデータ処理の指示が格納されるコマンドバッファを第1コマンドバッファと呼ぶ。コマンドバッファ30は、複数のゲームAppに対応する複数の第1コマンドバッファとは異なるコマンドバッファであって、GPU14における実行対象アプリケーションの切替とは非同期に実行されるデータ処理の指示が格納される第2コマンドバッファを含んでもよい。実行対象アプリケーションの切替とは非同期に実行されるデータ処理は、例えば、画像処理以外の汎用計算処理であってもよい。GPU14は、実行対象アプリケーションに関わらず、第2コマンドバッファからコマンドを読み出して汎用計算処理を実行してもよい。
 ネットワークインタフェース20は、所定の通信プロトコルにしたがってクライアント装置と通信する。実施例でのクライアント装置は、ゲームをプレイするユーザの情報処理装置(PC、スマートフォン、ゲーム機等)であり、データ処理システム10により生成されたゲームの画像を表示し、また、ゲームに対するユーザの操作を受け付ける。ネットワークインタフェース20は、クライアント装置から送信されたユーザの操作情報をCPU12に渡す。また、ネットワークインタフェース20は、圧縮符号化器18による圧縮符号化後の画像データをクライアント装置へ送信する。
 CPU12は、内容決定部40、描画指示部42、切換指示部44、計時部45を含む。GPU14は、コマンド読出部50、画像生成部52、コンテキスト保存部54、コンテキスト読出部56を含む。内容決定部40と画像生成部52は、並列実行される複数のゲームApp58のそれぞれに依存した処理を実行する。圧縮符号化器18は、画像読込部60と圧縮符号化部62を含む。図5のCPU12、GPU14、圧縮符号化器18が備える機能ブロックのうち少なくとも一部は、コンピュータプログラムとして実装されてもよい。CPU12、GPU14、圧縮符号化器18は、コンピュータプログラムを実行することにより、各機能ブロックの機能を発揮してもよい。
 図6は、データ処理システム10における複数アプリケーションの並列処理を模式的に示す。CPU12は、複数のクライアント装置で実行中のゲームAppA、ゲームAppB、ゲームAppC、ゲームAppDに関するデータ処理を並列して実行する。GPU14は、CPU12からの指示に基づいて、並列して実行される複数のゲームAppに対応する複数の画像の生成処理を時分割で実行する。既述したように、GPU14は、並列して実行される複数のゲームAppのそれぞれが要求するGPUの演算能力を合計した演算能力を少なくとも有する。
 具体的には、CPU12の内容決定部40は、複数のクライアント装置から入力されたユーザの操作情報に基づいて、各クライアント装置で表示させるべき画像(例えば操作結果を示す画像)の内容を決定する。言い換えれば、内容決定部40は、ゲームAppA、ゲームAppB、ゲームAppC、ゲームAppDに対応する複数の画像の内容(画像のパターンや座標情報等)を決定する。
 CPU12の描画指示部42は、内容決定部40により決定された各ゲームAppの内容を描画させるためのコマンドをコマンドバッファ30(実施例では各ゲームAppに対応する個別Appコマンドバッファ)に格納する。
 GPU14のコマンド読出部50は、図2のCPに対応する。コマンド読出部50は、並列実行される複数のゲームAppのうち或る時点で処理対象となる1つのゲームApp(例えばゲームAppAであり、ここでは「対象App」と呼ぶ。)に対応する画像の描画を指示するコマンドを対象Appに対応する個別Appコマンドバッファから読み出す。GPU14のコマンド読出部50は、CPU12の切換指示部44からアプリケーション切替指示(実施例ではコンテキストスイッチ指示)を受け付け、実行対象のアプリケーションが切り替わる場合、描画指示を読み出すコマンドバッファを、それまで実行対象であったアプリケーションに対応する個別Appコマンドバッファから、次に実行対象となるアプリケーションに対応する個別Appコマンドバッファに切り替える。
 GPU14の画像生成部52は、図2のSE、TU、RBに対応する。画像生成部52は、並列して実行される複数のゲームAppに対応する複数の画像を生成し、それら複数の画像をフレームバッファ32に格納する。具体的には、画像生成部52は、コマンド読出部50により読み出されたコマンドにしたがって、対象Appの画像データを生成する。画像生成部52は、生成した対象Appの画像データを、対象Appに対応する個別Appフレームバッファに格納する。既述したように、画像生成部52は、並列実行される複数のゲームAppが予定しているフレームレートを合計したフレームレートで、複数のゲームAppに対応する複数の画像を生成する。
 GPU14は、フレームバッファ32に格納した画像について、以下の付加情報を後続の処理部(圧縮符号化器18、通信部、表示部等)に提供してもよい。付加情報は、(1)どのアプリケーションの画像であるかを示すデータ、言い換えれば、生成元のアプリケーションを示すデータを含んでもよい。また、付加情報は、(2)画像の生成タイミングを示すデータを含んでもよく、例えば、何番目の画像であるか、タイムスタンプ、時刻情報等を含んでもよい。また、付加情報は、(3)画像の表示タイミングを示すデータを含んでもよく、例えば、タイムスタンプや時刻情報等を含んでもよい。これにより、後続の処理部における画像処理において、優先度付けや処理のスキップの判断等が適切になされるよう支援できる。なお、GPU14は、付加情報を画像のメタデータとしてフレームバッファ32に格納してもよく、フレームバッファ32とは異なるメモリ領域を介して付加情報を後続の処理部に渡してもよい。
 図7は、1つのアプリケーションの処理におけるCPUとGPUとのハンドシェイクフローを示す。図7に示すようにGPU14の画像生成部52は、画像生成処理が完了すると、描画終了通知の信号をCPU12へ送信する。実施例では、画像生成部52は、対象Appの1枚の画像(言い換えればフレーム)を生成し、その画像をフレームバッファ32へ格納することが終了すると、描画終了通知の信号をCPU12へ送信する。
 CPU12の切換指示部44は、GPU14が第1のアプリケーション(例えばゲームAppA)に対応する1フレーム形成に必要な全ての処理を完了した場合、第1のアプリケーションとは異なる第2のアプリケーション(例えばゲームAppB)に対応する画像の生成処理への切替を指示する。第1のアプリケーション(例えばゲームAppA)に対応する1フレーム形成に必要な全ての処理を完了した場合は、第1のアプリケーション(例えばゲームAppA)に対応する画像であり、フレームバッファに格納する1枚の画像(最終画像とも言える)の生成処理を完了した場合とも言える。具体的には、切換指示部44は、GPU14から描画終了通知を受け付けた場合、コンテキストスイッチ指示の信号をGPU14へ送信する。コンテキストスイッチ指示は、それまでの対象Appとは異なる新たな対象Appを指定する情報を含んでもよい。
 CPU12からコンテキストスイッチ指示を受け付けると、GPU14のコンテキスト保存部54は、それまでの対象Appのコンテキストデータをメモリ16または所定の退避用レジスタに格納する。既述したように、コンテキストデータは、それまでの対象Appの描画処理における内部ステート情報や中間データを含む。
 また、CPU12からコンテキストスイッチ指示を受け付けると、GPU14のコンテキスト読出部56は、コンテキストスイッチ指示により指定される新たな対象Appのコンテキストデータをメモリ16または所定の退避用レジスタから取得し、取得したコンテキストデータをGPU14の描画処理用レジスタに設定する。コンテキストスイッチが完了すると、GPU14のコマンド読出部50は、新たな対象Appに対応する画像の描画を指示するコマンドを新たな対象Appに対応する個別Appコマンドバッファから読み出し、新たな対象Appに対応する画像の生成処理に移行する。
 CPU12の計時部45は、並列実行される複数のゲームAppのそれぞれが、GPU14を占有した時間を計測する。言い換えれば、計時部45は、複数のゲームAppそれぞれの画像生成処理に要した時間を計測する。
 圧縮符号化器18の画像読込部60は、CPU12から後述のフリップ指示信号を受け付けたことを契機として、フレームバッファ32から(実施例では複数の個別Appフレームバッファから順次に)画像データを読み込む。圧縮符号化部62は、画像読込部60により読み込まれた画像データを所定のアルゴリズムにしたがって圧縮符号化する。圧縮符号化部62は、ある画像データの圧縮符号化が完了すると、圧縮符号化後の画像データをネットワークインタフェース20に渡して、クライアント装置へ送信させる。
 実施例のCPU12の切換指示部44は、GPU14から描画終了通知を受け付けたことを契機として、フリップ指示信号を圧縮符号化器18へ送信し、それとともにコンテキストスイッチ指示をGPU14へ送信する。フリップ指示信号は、複数のフレームバッファ32間において、画像データの書き出し対象と、画像データの参照対象(圧縮符号化のための読み出し対象)とを切り替えることを指示する信号である。言い換えれば、フリップ指示信号は、フレームバッファ32に格納された画像の圧縮符号化を圧縮符号化器18に指示する信号である。フリップ指示信号は、圧縮符号化の対象となる画像が格納されたフレームバッファ32の領域(実施例では特定の個別Appフレームバッファ)を指定する情報を含んでもよい。
 図8は、1つのアプリケーションの処理におけるフレームバッファの切替タイミングを示す。同図は、ダブルバッファ(ここではバッファa、バッファbと呼ぶ)の例を示している。GPU14が、バッファaに画像を書き込む間、圧縮符号化器18は、バッファbに格納済の画像を読み出して圧縮符号化する。また、GPU14が、バッファbに画像を書き込む間、圧縮符号化器18は、バッファaに格納済の画像を読み出して圧縮符号化する。この切替は、フリップ指示信号を契機として実行される。
 データ処理システム10では、CPU12は、並列実行対象の複数のアプリケーションについて、GPU14における各アプリケーションの描画処理をキックするタイミングを、各アプリケーションに対して所定のGPU割当時間を確保する形でずらす。この結果、GPU14の画像生成部52は、並列実行対象の複数のアプリケーションに対応する複数の画像をアプリケーションごとに異なるタイミングで生成し、各アプリケーションに対応する個別Appフレームバッファに格納する。
 また、データ処理システム10では、圧縮符号化器18は、CPU12から送信されたフリップ指示信号に基づき、複数のアプリケーションに対応する複数の画像を、アプリケーションごとに異なるタイミングで各アプリケーションに対応する個別Appフレームバッファから読み出す。これにより、描画から圧縮後データの送信までの処理時間を短縮し、言い換えれば遅延を低減することができる。
 さらにまた、データ処理システム10では、圧縮符号化器18は、複数のアプリケーションに対応する複数の画像を、アプリケーションごとに異なるタイミングでフレームバッファ32から読み出し、各アプリケーションに対応する画像の符号化を逐次処理として実行する。これにより、圧縮符号化器18に必要な処理能力を削減することができる。
 図9は、GPU14を時分割で共有する例を示す。図9Aは、4つのシステムが並行して動作し、各システムがゲームAppA、ゲームAppB、ゲームAppC、ゲームAppDの画像を生成(または表示)する。図9Bは、単一のシステムにおいて、ゲームAppA、ゲームAppB、ゲームAppC、ゲームAppDを時分割で並列処理する。図9Bのシステムは、図9Aの1つのシステムの4倍の性能を有する。図9Bのシステムにおける各ゲームAppの処理時間は、図9Aの1つのシステムと比較すると1/4(すなわち1/240秒)となる。
 図10も、GPU14を時分割で共有する例を示す。図10Aは、理想的なケースを示しており、ゲームAppA~ゲームAppDそれぞれのGPU占有時間(画像生成時間とコンテキストスイッチ時間の合計)が1/240秒に収まっている。一方、図10Bでは、ゲームAppBのGPU占有時間が1/240秒を超過している。
 図10Bに示す状況の場合、実施例のデータ処理システム10は、ゲームAppBに対する次回のGPU割り当てをスキップする。すなわち、データ処理システム10は、或るアプリケーションに対応する1枚の画像の生成処理に要したGPU占有時間が所定の割当時間を超過した場合、当該アプリケーションに対応する1枚の画像の次回の生成処理に対するGPU割り当てをスキップする。
 例えば、CPU12の計時部45は、特定のゲームAppの描画をGPU14に指示してから、GPU14から描画終了通知を受け付けるまでの時間、または、次のゲームAppの描画をGPU14に指示するまでの時間を、上記特定のゲームAppによるGPU占有時間として計測する。CPU12の描画指示部42は、上記特定のゲームAppによるGPU占有時間が所定時間(図10の例では1/240秒)を超過した場合、上記特定のゲームAppの描画指示を1回スキップする(次回分をスキップする)。
 変形例として、データ処理システム10は、或るアプリケーションに対応する1枚の画像の生成処理に要したGPU占有時間が所定の割当時間を超過した場合、当該アプリケーションに対応する1枚の画像の次回の生成処理に対する次回のGPU割当時間を短くしてもよい。例えば、CPU12の描画指示部42は、計時部45により計測された特定のゲームAppによるGPU占有時間が所定時間(図10の例では1/240秒)を超過した場合、上記特定のゲームAppに次回割り当てるGPU占有時間をそれまでより短くしてもよい。また、上記特定のゲームAppに次回割り当てるGPU占有時間を、並列実行するApp数と各Appのフレームレートにより定まる通常の割当時間(図10の例では1/240秒)より短くしてもよい。また、上記特定のゲームAppに次回割り当てるGPU占有時間を、他のゲームAppに割り当てるGPU占有時間より短くしてもよい。
 なお、GPU14を長時間占有したゲームAppに対して、次回のGPU割り当てをスキップする処理、または、次回のGPU割当時間を短縮する処理は、GPU14が自律的に実行してもよい。この場合、CPU12に代わってGPU14が、各ゲームAppのGPU占有時間を計測する計時部45を備えてもよい。
 図11も、GPU14を時分割で共有する例を示す。CPU12は、App割当部(不図示)をさらに備えてもよい。CPU12の計時部45は、GPU14を時分割で共有する複数のゲームAppそれぞれのGPU占有時間を計測する。App割当部は、GPU14を時分割で共有する複数のゲームAppのうち所定数以上のゲームAppのGPU占有時間が所定時間(例えば1/240秒)を超過する場合、GPU14を共有するゲームApp数(言い換えればデータ処理システム10で並列処理するゲームApp数)を減少させてもよい。
 図11では、ゲームAppAのGPU占有時間と、ゲームAppBのGPU占有時間とが所定時間(例えば1/240秒)を超過しているため、ゲームAppCとゲームAppDとをGPU14を共有するゲームAppから除外した例を示している。すなわち、図11に示すように、4並列でゲームAppを実行する場合に、GPU占有時間が所定時間を超過したゲームApp数が2個に達すると、並列実行するゲームApp数を2に減少させてもよい。並列実行するゲームApp数を減少させる閾値としての、GPU占有時間が所定時間を超過したゲームApp数と、その閾値を超過した場合に減少させるゲームApp数は、データ処理システム10を用いた実験により決定されてもよい。
 なお、CPU12のApp割当部は、自システムで並列実行するゲームApp数を減少させる場合、他のデータ処理システム10のApp割当部と連携して、自システムで並列実行する少なくとも1つのゲームAppの処理を他のデータ処理システム10に割り当て直してもよい。例えば、CPU12のApp割当部は、自システムで並列実行する複数のアプリケーションのうち所定数以上のアプリケーションのGPU占有時間が所定の割当時間(例えば1/240秒)を超過する場合、複数のアプリケーションのうち少なくとも1つのアプリケーションを別のデータ処理システムに割り当て直してもよい。
 具体的には、データ処理システム10では、ミクロな時間、すなわち1/240秒等の微小時間の単位において或るアプリケーションの処理時間(GPU占有時間)が超過した場合、上記アプリケーションに対する次回のGPU割当をスキップする(図10のSkipping App B Process)。一方、データ処理システム10では、マクロな時間、すなわち10秒等の十分に長い時間単位において、該当時間内の割当結果の統計を取り、許容できない超過(例えば予め定められた時間や回数の超過)が発生した場合は、並列実行する複数のアプリケーションのうち一部のアプリケーションを、別のデータ処理システムに割り当て直す。なお、別のデータ処理システムに割り当て直す対象とするアプリケーションは、超過時間または超過回数が大きいものを優先的に選択してもよい。
 ここでは、再割当の対象となるアプリケーションを対象Appと呼び、対象Appをそれまで実行していたデータ処理システム10を第1システムと呼び、対象Appの新たな割当先となるデータ処理システム10を第2システムと呼ぶ。第1システムのCPU12のApp割当部は、第2システムのCPU12のApp割当部と連携して、以下の(1)~(4)の処理を実行してもよい。
 (1)第1システムのCPU12のApp割当部は、対象Appの識別情報を第2システムのCPU12のApp割当部へ通知する。第2システム側の処理部(CPU12、GPU14等)は、対象Appの識別情報をもとに、メモリ16から対象Appのプログラムをロードして、対象Appを起動させる。
 (2)第1システムのCPU12のApp割当部は、第1システムに記憶された対象Appに関するコンテキストデータを第2システムに送信し、第2システムのCPU12のApp割当部は、そのコンテキストデータを処理部(CPU12、GPU14等)に設定する。
 (3)上記(1)の完了後、その後の或るタイミングにおいて第1システムで対象Appのコンテキストスイッチをするタイミングまで、第1システムと第2システムの両方で対象Appが動いている。第1システムのCPU12のApp割当部は、上記或るタイミングのコンテキストスイッチを契機に、第1システムでの対象Appの実行を停止させ、その旨を第2システムのCPU12のApp割当部へ通知する。第1システムのCPU12のApp割当部は、上記或るタイミングコンテキストスイッチで保存された、第1システムの対象Appのコンテキストデータを第2システムに送信し、第2システムのCPU12のApp割当部は、そのコンテキストデータを処理部(CPU12、GPU14等)に設定する。
 (4)第1システムでの対象Appの実行停止が通知され、対象Appのコンテキストデータの設定が完了すると、第2システムのCPU12のApp割当部は、第2システムの各処理部での対象Appの実行を開始させる。なお、第2システムにおける対象Appのコンテキスト設定および実行開始は、第1システムにおける対象Appの最終コンテキストスイッチから、処理割当時間の間隔(本例では1/60秒後)以内にて実行することが望ましい。
 上記(3)の或るタイミングは、処理割当時間の間隔以内で、第1システムのコンテキスト保存、第1システムから第2システムへのコンテキスト転送、第2システムにおけるコンテキスト設定が完了できることを見越したうえで選択してよい。例えば、第1システムと第2システムの間にある転送系が他処理で占有されているか否かなどを見計らったうえで或るタイミングを決めてもよい。
 これにより、第1システムにおける対象Appの最新のコンテキストを引き継いだ上で、第2システムにおいて、タイムラグなく、ユーザーには稼働システムの遷移が認識されないまま、対象Appの実行が再開される。
 第1システムから第2システムへのコンテキストコピーと設定は、前述の或るタイミングにいたるまでの間、繰り返し実行されていてもよい。例えば、コンテキストデータ量が大きく、1回の処理割当時間の間隔以内で全てのコンテキストの転送・設定・処理再開が間に合わない場合、複数回にわけて実行してもよい。また、処理割当時間の間隔以内で、第1システムのコンテキスト保存、第1システムから第2システムへのコンテキスト転送、第2システムにおけるコンテキスト設定が完了できる見込みであったが、実際には間に合わなかった場合に、第1システムによるアプリの実行は継続し、後にコンテキストコピーと設定を再度実行してもよい。
 また、データ処理システム10では、圧縮符号化器18が、複数のアプリケーションに対応する複数の画像を、アプリケーションごとに異なるタイミングでフレームバッファ32から読み出すよう構成される。実施例では、CPU12の描画指示部42が、並列実行するアプリケーションごとに異なるタイミングでコマンドバッファ30に描画を指示するコマンドを書き込む。これにより、GPU14は、並列実行するアプリケーションごとに異なるタイミングで画像を生成し、並列実行するアプリケーションごとに異なるタイミングで画像をフレームバッファ32(個別Appフレームバッファ)に書き込む。また、CPU12の切換指示部44は、並列実行するアプリケーションごとに異なるタイミングでフリップ指示を圧縮符号化器18へ通知する。
 図12は、複数のアプリケーションを並列処理する場合の圧縮符号化器18の動作を示す。同図は、圧縮符号化器18によるフレームバッファ32からの画像読み込み(Scan)と、読み込んだ画像の圧縮符号化(Enc)のタイミングを示すタイミングチャートを含む。
 実施例では、CPU12の切換指示部44は、ゲームAppごとに異なるタイミングでフリップ指示信号を圧縮符号化器18へ送信する。これにより、図4(方式72)および図12に示すように、圧縮符号化器18の画像読込部60は、複数のゲームAppに対応する複数の画像を、ゲームAppごとに異なるタイミングでフレームバッファ32(具体的には処理対象のゲームAppに対応する個別Appフレームバッファ)から読み出す。
 また、図4(方式72)および図12に示すように、圧縮符号化器18の圧縮符号化部62は、複数のゲームAppに対応する複数の画像を、ゲームAppごとに異なるタイミングで圧縮符号化する。圧縮符号化部62は、複数のゲームAppに対応する複数の画像を圧縮符号化する処理を逐次処理として実行する。また、既述したように、圧縮符号化部62は、並列実行される複数のゲームAppが予定しているフレームレートを合計したフレームレートで画像の符号化が可能な性能を有する。
 圧縮符号化器18の圧縮符号化部62は、並列実行される複数のゲームAppそれぞれの過去の画像を、ゲームAppごとに区別して所定の記憶領域に記憶させる。言い換えれば、圧縮符号化部62は、或るゲームAppに対応する過去の画像を、他のゲームAppに対応する画像とは区別して所定の記憶領域に記憶させる。圧縮符号化部62は、特定のゲームAppに対応する新たな画像を圧縮符号化する際、上記記憶領域に記憶された当該ゲームAppに対応する過去の画像を参照する。これにより、並列実行される複数のゲームAppそれぞれの画像の圧縮効率を高める。
 以下、CPUとGPUの割当の例を説明する。
 図1のBシステムは、1.6GHz動作で1スレッド処理が可能なCPUを8個備える。一方、図1のAシステムは、3.2GHz動作で2スレッド処理が可能なCPUを8個備える。そのため、AシステムはBシステムの約4倍のCPU性能を持つ。AシステムのCPUにおける2スレッド処理可能とは、CPUハードウェアがスレッド処理をサポートする機構を有し、1つのCPUが2つのアプリケーションを同時に実行可能であることを示す。
 図13と図14は、図1のAシステムにおいて、CPUとGPUを時分割で割り当てる例を示す。ここで実行される4つのアプリケーション(App A~App D)は、1.6GHz動作のCPU8個を利用できる前提で開発されている。各アプリケーションを、8個のCPUの各スレッドに割り当てて実行する。仮にAシステムのように、1つのCPUハードウェアとしてサポートするスレッド数が2であって、並列実行したいアプリケーション数が4の場合、1つのハードウェアスレッド内に、ソフトウェア制御のスレッドを2つ設けることで、4つのスレッドを並列実行する。
 ここでCPUのスレッド処理とは、ハードウェア制御かソフトウェア制御かを問わず、GPUに対する所定の割り当て時間(例えば1/240秒)よりもはるかに小さな粒度で、アプリケーション処理をCPU上で時分割で実行している状態である。実質的に、各アプリケーションは該当CPUを占有して動作している状態にすることができる、
 CPUの各スレッドで動作するアプリケーションは、CPU外部で起きた変化をリアルタイムで検出し必要な処置を行う必要がある。加えて、CPUの各スレッドで動作するアプリケーションは、Bシステムと同様のリアルタイム性で外部と連携するために、GPUに対する所定の割り当て時間単位や、各アプリケーションがGPUを占有した実状の時間に関わらず、CPU上で並列に動作を続ける。これにより、CPUの各スレッドで動作するアプリケーションは、GPU上で動作する各アプリケーション処理と遅延なく同期して動作することができる。
 図13と図14に示すように、各アプリケーションのCPU割り当てにおいて、GPUに対する所定の割当時間にかかわらず、CPUを占有する割り当てをする。すなわち、データ処理システム10のCPU12は、GPU14における各アプリケーションに対する割当時間に関わらず、各アプリケーションが並列してCPU12の資源を占有する形で、複数のアプリケーションを並列実行する。これにより、CPU12上のアプリケーションは、GPU14を含めたCPU12外部との同期処理をリアルタイム性を維持して実行できる。
 また、図1のAシステム、図13、図14で示すように、並列実行すべきアプリケーション数に対してCPU数が不足する場合、CPUは、ハードウェアまたはソフトウェア制御によるスレッドを用いて、並列実行すべき複数のアプリケーションを並列実行する。
 さらにまた、既述したように、GPUのコマンドバッファは、並列実行対象のアプリケーションごとに用意する。CPUは、並列実行対象の複数のアプリケーションに関するデータの処理の指示(例えば描画指示)を各アプリケーションに対応するコマンドバッファに格納する。GPUは、並列実行対象の複数のアプリケーションに関するデータの処理の指示(例えば描画指示)をコマンドバッファから読み出して、各アプリケーションに対応するデータ処理(例えば描画処理)を実行する。これにより、特定のアプリケーションの処理がGPUに割り当てられていない期間(特定のアプリケーションがGPUを占有していない期間)にも、CPU上の特定のアプリケーションは処理を継続でき、GPUに対する指示を随時特定のアプリケーションに対応するコマンドバッファに書き込むことができる。
 以上、本発明を実施例をもとに説明した。この実施例は例示であり、各構成要素あるいは各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
 第1変形例を説明する。データ処理システム10は、データ処理システム10において生成された画像を表示する表示装置と接続されてもよい。CPU12の切換指示部44は、表示装置の画像表示におけるブランキング期間(言い換えれば映像が非表示の期間)を示すデータを記憶してもよい。切換指示部44は、表示装置の画像表示におけるブランキング期間中に、コンテキストスイッチ指示をGPU14へ送信するとともに、フリップ指示信号を圧縮符号化器18へ送信してもよい。既述したように、ブランキング期間はGPU処理が不要であるため、コンテキスト切替処理が画像生成処理に与える影響(画像生成処理の遅延等)を抑制することができる。
 第2変形例を説明する。上記実施例では、GPU14のコンテキストスイッチについて言及したが、圧縮符号化器18においてもコンテキストスイッチが実行されてもよい。例えば、GPU14と同様に、圧縮符号化器18は、或るアプリケーションに対応する画像の圧縮符号化を開始する際にそのアプリケーションに関するコンテキスト(例えば圧縮符号化器18の内部ステートや前回の処理データ)をメモリ16から読み出して圧縮符号化器18に設定するコンテキスト読出部を備えてもよい。また、圧縮符号化器18は、或るアプリケーションに対応する画像の圧縮符号化が完了した際にそのアプリケーションに関するコンテキストを圧縮符号化器18からメモリ16に退避させるコンテキスト保存部を備えてもよい。
 第3変形例を説明する。本出願人の特許出願(特願2020-016144)で提案するように、データ処理システム10は、GPU14のコンテキストスイッチを実行する専用のハードウェア機能ブロックと、圧縮符号化器18のコンテキストスイッチを実行する専用のハードウェア機能ブロックの少なくとも一方を備えてもよい。このハードウェア機能ブロックは、CPU12、GPU14、メモリ16、圧縮符号化器18とは独立したブロックであり、以下「コンテキストスイッチエンジン」とも呼ぶ。
 コンテキストスイッチエンジンは、DMA(Direct Memory Access)によりメモリ16にアクセスする。コンテキストスイッチエンジンは、アプリケーションの切替タイミングを通知されるもしくは自ら検出すると、(1)メモリ16上に保持されている各アプリケーションのコンテキストを選択し、ソフトウェアを介さずに処理部(GPU14や圧縮符号化器18)へ転送して設定する。もしくは、(2)処理部(GPU14や圧縮符号化器18)に保持されているコンテキストを、ソフトウェアを介さずにメモリへ転送・退避させる。
 具体的には、GPU14のコンテキストスイッチを実行するコンテキストスイッチエンジンは、GPU14が第1のアプリケーションに対応する画像の生成処理を完了して、第2のアプリケーションに対応する画像の生成処理を開始する場合、CPU12の切換指示部44からの通知や、GPU14からの通知、またはビデオ信号が示すタイミング等をもとにそのことを検知してもよい。そしてコンテキストスイッチエンジンは、並列実行される複数のアプリケーションを管理するソフトウェアの処理を介さずに、第1のアプリケーションに関するコンテキストをGPU14からメモリ16に退避させるとともに、第2のアプリケーションに関するコンテキストをメモリ16からGPU14に設定してもよい。
 また、圧縮符号化器18のコンテキストスイッチを実行するコンテキストスイッチエンジンは、圧縮符号化器18が第1のアプリケーションに対応する画像の符号化を完了して、第2のアプリケーションに対応する画像の符号化を開始する場合、CPU12の切換指示部44からの通知や、圧縮符号化器18からの通知、またはビデオ信号が示すタイミング等をもとにそのことを検知してもよい。そしてコンテキストスイッチエンジンは、並列実行される複数のアプリケーションを管理するソフトウェアの処理を介さずに、第1のアプリケーションに関するコンテキストを圧縮符号化器18からメモリ16に退避させるとともに、第2のアプリケーションに関するコンテキストをメモリ16から圧縮符号化器18に設定してもよい。複数のアプリケーションを管理するソフトウェアは、典型的にはCPU12により実行されるソフトウェアであり、例えば、アプリケーションの実行順序や資源配分を管理するソフトウェアであってもよい。
 第4変形例を説明する。図15と図16は、変形例のデータ処理システム10における複数アプリケーションの並列処理を模式的に示す。データ処理システム10は、GPU14と圧縮符号化器18との間にディスプレイパイプライン64(言い換えればビデオパイプライン)を設けてもよい。
 ディスプレイパイプライン64は、画像供給元の他ブロック(例えばGPU14や不図示のビデオデコーダ等)から供給された画像であり、言い換えれば、並列処理対象の複数のアプリケーションの画像に対する、解像度変換、画質変換または多重化を時分割で実行してもよい。
 図16では、(1)GPU14は、2つのアプリケーション(App AとApp B)の描画処理を時分割で実行して、1つのアプリケーションあたり、2枚の最終画像を生成してフレームバッファ32に格納する。(2)ディスプレイパイプライン64は、アプリケーションごとに、2枚の最終画像をスケーリングおよび合成する。(3)圧縮符号化器18は、アプリケーションごとのスケーリングおよび合成後の画像を圧縮符号化する。
 第5変形例を説明する。上記実施例では、切換指示部44をCPU12に設けたが、切換指示部44は、CPU12以外の機能ブロック(例えばGPU14)に設けてもよい。
 実施例に記載した技術思想は、複数のゲームAppを並列実行する場合以外にも適用可能である。例えば、ゲームAppに代えて、またはゲームAppとともに他の種類のアプリケーション(例えばオフィスソフトや業務システムプログラム)を並列実行する場合にも適用可能である。
 上述した実施例および変形例の任意の組み合わせもまた本開示の実施の形態として有用である。組み合わせによって生じる新たな実施の形態は、組み合わされる実施例および変形例それぞれの効果をあわせもつ。また、請求項に記載の各構成要件が果たすべき機能は、実施例および変形例において示された各構成要素の単体もしくはそれらの連携によって実現されることも当業者には理解されるところである。
 実施例および変形例に記載の技術は、以下の態様によって特定されてもよい。
[項目1-1]
 並列して実行される複数のアプリケーションに対応する複数のデータの生成処理を時分割で実行する1つのGPUと、
 前記GPUが第1のアプリケーションに対応するデータであって、後続の処理部に渡す1単位のデータの生成処理を完了した場合に、前記第1のアプリケーションとは異なる第2のアプリケーションに対応するデータの生成処理への切替を指示する指示部と、
 を備えることを特徴とするデータ処理システム。
 このデータ処理システムによると、第1のアプリケーションに対応する1単位のデータの生成処理が完了した直後は、退避が必要な第1のアプリケーションに関するデータ量が減少するため、第2のアプリケーションに対応するデータの生成処理への切り替えを効率的に実現することができる。すなわち、複数のアプリケーションに対応する複数のデータの生成処理を1つのGPUが実行することで、ハードウェアリソース数の低減と、システムの稼働率向上を実現しつつ、複数のアプリケーションに対応する複数のデータの生成処理を効率的に実現することができる。
[項目1-2]
 前記後続の処理部に渡す1単位のデータは、画像であることを特徴とする項目1-1に記載のデータ処理システム。
 このデータ処理システムによると、第1のアプリケーションに対応する画像の生成処理が完了した直後は、退避が必要な第1のアプリケーションに関するデータ量が減少するため、第2のアプリケーションに対応する画像の生成処理への切り替えを効率的に実現することができる。
[項目1-3]
 前記GPUにおいて前記第1のアプリケーションに対応する前記1単位のデータの生成処理が完了した場合に、前記第1のアプリケーションに関するコンテキストデータを所定の記憶領域に保存することを特徴とする項目1-1または1-2に記載のデータ処理システム。
 このデータ処理システムによると、退避が必要な第1のアプリケーションに関するコンテキストデータの量を低減でき、効率的なコンテキストスイッチを実現できる。言い換えれば、GPUの描画完了を待ってからコンテキストスイッチを行うことで、GPUにおける処理の中断と入れ替えが容易になり、コンテキストスイッチの処理量が削減される。
[項目1-4]
 前記GPUが前記第1のアプリケーションに対応する前記1単位のデータの生成処理を完了して、前記第2のアプリケーションに対応するデータの生成処理を開始する場合に、前記複数のアプリケーションを管理するソフトウェアの処理を介さずに、前記第1のアプリケーションに関するコンテキストデータを前記GPUから所定の記憶領域に退避させるとともに、前記第2のアプリケーションに関するコンテキストデータを前記記憶領域から前記GPUに設定する転送部をさらに備えることを特徴とする請求項1または2に記載のデータ処理システム。
 このデータ処理システムによると、項目1-3と同様の効果に加え、一層迅速にコンテキストスイッチを完了できるという効果を奏する。
[項目1-5]
 前記第1のアプリケーションに対応する前記1単位のデータの生成処理に要したGPU占有時間が所定の割当時間を超過した場合、前記第1のアプリケーションに対応する前記1単位のデータの次回の生成処理に対する割当時間を短くし、または、前記次回の生成処理に対するGPU割り当てをスキップすることを特徴とする項目1-1から1-4のいずれかに記載のデータ処理システム。
 このデータ処理システムによると、第1のアプリケーションのGPU占有時間の超過が、GPUにおける他のアプリケーションのデータ処理に与える影響(遅延等)を低減でき、また、並列して実行されるアプリケーション間の公平性を維持することができる。すなわち、240分の1秒等のミクロなレベルでは、所定の割当時間ごとのコンテキストスイッチが実行されなくても、数秒から数分のマクロなレベルでは、所定の割当時間に応じた比率で各アプリケーションが実行される。この結果、データ処理システムにおける各アプリケーションの挙動を、図1のBシステムのように個別のシステムでアプリケーションを実行した場合と、処理のリアルタイム性も含めて同じにすることができる。
[項目1-6]
 前記複数のアプリケーションのうち所定数以上のアプリケーションのGPU占有時間が所定の割当時間を超過する場合、前記GPUにより前記1単位のデータが生成されるアプリケーションの数を減少させることを特徴とする項目1-1から1-5のいずれかに記載のデータ処理システム。
 このデータ処理システムによると、アプリケーションのデータ生成処理に必要なGPU占有時間を確保することができる。
[項目1-7]
 前記複数のアプリケーションのうち所定数以上のアプリケーションのGPU占有時間が所定の割当時間を超過する場合、前記複数のアプリケーションのうち少なくとも1つのアプリケーションを別のデータ処理システムに割り当てることを特徴とする項目1-1から1-5のいずれかに記載のデータ処理システム。
 このデータ処理システムによると、アプリケーションのデータ生成処理に必要なGPU占有時間を確保することができる。
[項目1-8]
 前記少なくとも1つのアプリケーションを前記別のデータ処理システムに割り当てる場合、(1)前記別のデータ処理システムにおいて当該アプリケーションを起動させ、(2)自システムに記憶された当該アプリケーションに関するコンテキストデータを前記別のデータ処理システムに送信し、(3)自システムにおける当該アプリケーションの或るタイミングでのコンテキストスイッチを契機に自システムにおける当該アプリケーションの処理を停止させる、ことを特徴とする項目1-7に記載のデータ処理システム。
 このデータ処理システムによると、自システムで実行中のアプリケーションの処理を他システムに好適に引き継がせることができる。
[項目1-9]
 符号化部をさらに備え、
 前記GPUは、前記1単位のデータとして画像を生成し、生成した画像をフレームバッファに格納し、
 前記指示部は、前記フレームバッファに格納された画像の符号化を前記符号化部に指示する際に、前記GPUに対して前記切替を指示することを特徴とする項目1-1から1-8のいずれかに記載のデータ処理システム。
 このデータ処理システムによると、1つのアプリケーションに対応する1単位のデータの生成処理が完了したタイミングで、別のアプリケーションに対応するデータの生成処理への切り替えを指示することを確実に実現できる。
[項目1-10]
 前記GPUは、前記フレームバッファに格納した画像について、(1)どのアプリケーションの画像であるかを示すデータ、(2)画像の生成タイミングを示すデータ、(3)画像の表示タイミングを示すデータのうち少なくとも1つを後続の処理部に提供することを特徴とする項目1-9に記載のデータ処理システム。
 このデータ処理システムによると、後続の処理部(例えば圧縮符号化伸長部、通信部、表示部等)を適切に動作させることができる。
[項目1-11]
 前記指示部は、画像表示におけるブランキング期間中に前記切替を指示することを特徴とする項目1-1から1-10のいずれかに記載のデータ処理システム。
 このデータ処理システムによると、ブランキング期間はGPU処理が不要であるため、コンテキスト切替処理が画像生成処理に与える影響(画像生成処理の遅延等)を回避することができる。
[項目1-12]
 前記GPUは、前記複数のアプリケーションのそれぞれが要求するGPUの演算能力を合計した演算能力を少なくとも有することを特徴とする項目1-1から1-11のいずれかに記載のデータ処理システム。
 このデータ処理システムによると、複数のアプリケーションに対応する複数のデータの生成遅延を抑制できる。例えば、GPUが生成するデータが画像の場合には、複数のアプリケーションに対応する複数の画像の表示遅延を抑制することができる。
[項目1-13]
 前記複数のアプリケーションを並列実行するCPUをさらに備え、
 前記CPUは、前記複数のアプリケーションのそれぞれが要求するCPUの演算能力を合計した演算能力を少なくとも有することを特徴とする項目1-1から1-12のいずれかに記載のデータ処理システム。
 このデータ処理システムによると、並列実行される複数のアプリケーションの処理遅延を抑制することができる。
[項目1-14]
 前記CPUは、前記GPUにおける各アプリケーションに対する割当時間に関わらず、各アプリケーションが並列してCPUの資源を占有するように、前記複数のアプリケーションを並列実行することを特徴とする項目1-13に記載のデータ処理システム。
 このデータ処理システムによると、CPUは、GPUを含む外部の機能ブロックとの同期処理をリアルタイム性を維持して実行することができる。
[項目1-15]
 前記複数のアプリケーションに対応するコマンドバッファをさらに備え、
 前記CPUは、前記複数のアプリケーションに関するデータ処理の指示を各アプリケーションに対応するコマンドバッファに格納し、
 前記GPUは、前記複数のアプリケーションに関するデータ処理の指示を前記コマンドバッファから読み出すことを特徴とする項目1-14に記載のデータ処理システム。
 このデータ処理システムによると、特定のアプリケーションの処理がGPUに割り当てられていない期間にも、CPU上の上記特定のアプリケーション処理を継続することができる。
[項目1-16]
 前記複数のアプリケーションに対応する複数のコマンドバッファであって、前記複数のアプリケーションに関するデータ処理の指示が格納される複数のコマンドバッファをさらに備え、
 前記GPUは、実行対象のアプリケーションを切り替える場合に、データ処理の指示を読み出すコマンドバッファを切り替えることを特徴とする項目1-1から1-12のいずれかに記載のデータ処理システム。
 このデータ処理システムによると、データ処理の指示を出す機能ブロックにおける或るアプリケーションの処理と、GPUにおける当該アプリケーションの処理とを非同期に実行することができる。
[項目1-17]
 前記複数のコマンドバッファとは異なるコマンドバッファであって、前記GPUにおける実行対象のアプリケーションの切替とは非同期に実行可能なデータ処理の指示が格納されるコマンドバッファをさらに備えることを特徴とする項目1-16に記載のデータ処理システム。
 このデータ処理システムによると、GPUにおける実行対象のアプリケーションの切替とは非同期に、その切替とは非同期に実行可能なデータ処理(例えば、数値計算等の汎用コンピュート処理)をGPUに実行させることができる。
[項目1-18]
 1つのGPUと、指示部とを備えるデータ処理システムが実行する方法であって、
 前記GPUが、並列して実行される複数のアプリケーションに対応する複数のデータの生成処理を時分割で実行するステップと、
 前記指示部が、前記GPUが第1のアプリケーションに対応するデータであって、後続の処理部に渡す1単位のデータの生成処理を完了した場合に、前記第1のアプリケーションとは異なる第2のアプリケーションに対応する画像の生成処理への切替を指示するステップと、
 を備えることを特徴とするデータ処理方法。
 このデータ処理方法によると、第1のアプリケーションに対応する1単位のデータの生成処理が完了した直後は、退避が必要な第1のアプリケーションに関するデータ量が減少するため、第2のアプリケーションに対応するデータの生成処理への切り替えを効率的に実現することができる。すなわち、複数のアプリケーションに対応する複数のデータの生成処理を1つのGPUが実行することで、ハードウェアリソース数の低減と、システムの稼働率向上を実現しつつ、複数のアプリケーションに対応する複数のデータの生成処理を効率的に実現することができる。
[項目1-19]
 1つのGPUと、指示部とを備えるデータ処理システムに、
 前記GPUが、並列して実行される複数のアプリケーションに対応する複数のデータの生成処理を時分割で実行するステップと、
 前記指示部が、前記GPUが第1のアプリケーションに対応するデータであって、後続の処理部に渡す1単位のデータの生成処理を完了した場合に、前記第1のアプリケーションとは異なる第2のアプリケーションに対応する画像の生成処理への切替を指示するステップと、
 を実行させるためのコンピュータプログラム。
 このコンピュータプログラムによると、第1のアプリケーションに対応する1単位のデータの生成処理が完了した直後は、退避が必要な第1のアプリケーションに関するデータ量が減少するため、第2のアプリケーションに対応するデータの生成処理への切り替えを効率的に実現することができる。すなわち、複数のアプリケーションに対応する複数のデータの生成処理を1つのGPUが実行することで、ハードウェアリソース数の低減と、システムの稼働率向上を実現しつつ、複数のアプリケーションに対応する複数のデータの生成処理を効率的に実現することができる。
[項目2-1]
 並列して実行される複数のアプリケーションに対応する複数の画像を生成し、それら複数の画像をフレームバッファに格納する画像生成部と、
 前記フレームバッファに格納された画像を読み出して符号化する1つの符号化部と、
 を備え、
 前記符号化部が、前記複数のアプリケーションに対応する複数の画像を、アプリケーションごとに異なるタイミングで前記フレームバッファから読み出すよう構成されたことを特徴とするデータ処理システム。
 このデータ処理システムによると、低遅延での符号化を実現し、かつ、符号化器の必要性能を抑制することができる。
[項目2-2]
 前記符号化部は、前記複数のアプリケーションに対応する複数の画像を符号化する処理を逐次処理として実行することを特徴とする項目2-1に記載のデータ処理システム。
 このデータ処理システムによると、低遅延での符号化を実現し、かつ、符号化器の必要性能を抑制することができる。
[項目2-3]
 前記画像生成部は、前記複数のアプリケーションに対応する複数の画像をアプリケーションごとに異なるタイミングで生成することを特徴とする項目2-1または2-2に記載のデータ処理システム。
 このデータ処理システムによると、画像生成部(例えばGPU)の必要性能を低減することができる。
[項目2-4]
 CPUをさらに備え、
 前記CPUは、前記画像生成部に各アプリケーションの描画処理を開始させるタイミングを、各アプリケーションに所定時間を割り当てる形でずらし、
 前記符号化部は、前記複数のアプリケーションに対応する複数の画像を、アプリケーションごとに異なるタイミングで前記フレームバッファから読み出すことを特徴とする項目2-1から2-3のいずれかに記載のデータ処理システム。
 このデータ処理システムによると、画像生成部(例えばGPU)の必要性能を低減することができ、また、符号化部の必要性能を低減することができる。
[項目2-5]
 CPUをさらに備え、
 前記CPUは、前記画像生成部に各アプリケーションの描画処理を開始させるタイミングを、各アプリケーションに所定時間を割り当てる形でずらし、
 前記符号化部は、前記複数のアプリケーションに対応する複数の画像を、アプリケーションごとに異なるタイミングで前記フレームバッファから読み出し、前記複数のアプリケーションに対応する複数の画像を符号化する処理を逐次処理として実行することを特徴とする項目2-1に記載のデータ処理システム。
 このデータ処理システムによると、画像生成部(例えばGPU)の必要性能を低減することができ、また、符号化部の必要性能を低減することができる。
[項目2-6]
 前記画像生成部は、前記複数のアプリケーションが予定しているフレームレートを合計したフレームレートで前記複数の画像を生成することを特徴とする項目2-1から2-5のいずれかに記載のデータ処理システム。
 このデータ処理システムによると、複数のアプリケーションに対応する複数の画像の生成遅延を抑制でき、複数のアプリケーションに対応する複数の画像の表示遅延を抑制することができる。
[項目2-7]
 前記符号化部は、前記複数のアプリケーションが予定しているフレームレートを合計したフレームレートで画像の符号化が可能な性能を有することを特徴とする項目2-1から2-6のいずれかに記載のデータ処理システム。
 このデータ処理システムによると、複数のアプリケーションに対応する複数の画像の符号化遅延を抑制でき、複数のアプリケーションに対応する複数の画像の表示遅延を抑制することができる。
[項目2-8]
 前記符号化部は、或るアプリケーションに対応する過去の画像を他のアプリケーションに対応する画像とは区別して記憶し、前記或るアプリケーションに対応する新たな画像を圧縮符号化する際に当該アプリケーションに対応する過去の画像を参照することを特徴とする項目2-1から2-7のいずれかに記載のデータ処理システム。
 このデータ処理システムによると、異なるタイミングで実行する複数のアプリケーションの画像の圧縮効率を上げることができる。
[項目2-9]
 前記符号化部が第1のアプリケーションに対応する画像の符号化を完了して、第2のアプリケーションに対応する画像の符号化を開始する場合に、前記複数のアプリケーションを管理するソフトウェアの処理を介さずに、前記第1のアプリケーションに関するコンテキストを前記符号化部から記憶部に退避させるとともに、前記第2のアプリケーションに関するコンテキストを前記記憶部から前記符号化部に設定する転送部をさらに備えることを特徴とする項目2-1から2-8のいずれかに記載のデータ処理システム。
 このデータ処理システムによると、符号化部におけるコンテキストスイッチを高速に実行することができ、例えば、符号化部における処理の遅延を抑制することができる。
[項目2-10]
 画像生成部と、1つの符号化部とを備えるデータ処理システムが実行する方法であって、
 前記画像生成部が、並列して実行される複数のアプリケーションに対応する複数の画像を生成し、それら複数の画像をフレームバッファに格納するステップと、
 前記符号化部が、前記複数のアプリケーションに対応する複数の画像を、アプリケーションごとに異なるタイミングで前記フレームバッファから読み出し、読み出した画像を符号化するステップと、
 を備えることを特徴とするデータ処理方法。
 このデータ処理方法によると、低遅延での符号化を実現し、かつ、符号化器の必要性能を抑制することができる。
[項目2-11]
 画像生成部と、1つの符号化部とを備えるデータ処理システムに、
 前記画像生成部が、並列して実行される複数のアプリケーションに対応する複数の画像を生成し、それら複数の画像をフレームバッファに格納するステップと、
 前記符号化部が、前記複数のアプリケーションに対応する複数の画像を、アプリケーションごとに異なるタイミングで前記フレームバッファから読み出し、読み出した画像を符号化するステップと、
 を実行させるためのコンピュータプログラム。
 このコンピュータプログラムによると、低遅延での符号化を実現し、かつ、符号化器の必要性能を抑制することができる。
 この発明は、複数のアプリケーションを並列して実行するシステムに適用できる。
 10 データ処理システム、 12 CPU、 14 GPU、 18 圧縮符号化器、 32 フレームバッファ、 42 描画指示部、 44 切換指示部、 52 画像生成部、 54 コンテキスト保存部、 56 コンテキスト読出部、 62 圧縮符号化部。

Claims (11)

  1.  並列して実行される複数のアプリケーションに対応する複数の画像を生成し、それら複数の画像をフレームバッファに格納する画像生成部と、
     前記フレームバッファに格納された画像を読み出して符号化する1つの符号化部と、
     を備え、
     前記符号化部が、前記複数のアプリケーションに対応する複数の画像を、アプリケーションごとに異なるタイミングで前記フレームバッファから読み出すよう構成されたことを特徴とするデータ処理システム。
  2.  前記符号化部は、前記複数のアプリケーションに対応する複数の画像を符号化する処理を逐次処理として実行することを特徴とする請求項1に記載のデータ処理システム。
  3.  前記画像生成部は、前記複数のアプリケーションに対応する複数の画像をアプリケーションごとに異なるタイミングで生成することを特徴とする請求項1または2に記載のデータ処理システム。
  4.  CPUをさらに備え、
     前記CPUは、前記画像生成部に各アプリケーションの描画処理を開始させるタイミングを、各アプリケーションに所定時間を割り当てる形でずらし、
     前記符号化部は、前記複数のアプリケーションに対応する複数の画像を、アプリケーションごとに異なるタイミングで前記フレームバッファから読み出すことを特徴とする請求項1から3のいずれかに記載のデータ処理システム。
  5.  CPUをさらに備え、
     前記CPUは、前記画像生成部に各アプリケーションの描画処理を開始させるタイミングを、各アプリケーションに所定時間を割り当てる形でずらし、
     前記符号化部は、前記複数のアプリケーションに対応する複数の画像を、アプリケーションごとに異なるタイミングで前記フレームバッファから読み出し、前記複数のアプリケーションに対応する複数の画像を符号化する処理を逐次処理として実行することを特徴とする請求項1に記載のデータ処理システム。
  6.  前記画像生成部は、前記複数のアプリケーションが予定しているフレームレートを合計したフレームレートで前記複数の画像を生成することを特徴とする請求項1から5のいずれかに記載のデータ処理システム。
  7.  前記符号化部は、前記複数のアプリケーションが予定しているフレームレートを合計したフレームレートで画像の符号化が可能な性能を有することを特徴とする請求項1から6のいずれかに記載のデータ処理システム。
  8.  前記符号化部は、或るアプリケーションに対応する過去の画像を他のアプリケーションに対応する画像とは区別して記憶し、前記或るアプリケーションに対応する新たな画像を圧縮符号化する際に当該アプリケーションに対応する過去の画像を参照することを特徴とする請求項1から7のいずれかに記載のデータ処理システム。
  9.  前記符号化部が第1のアプリケーションに対応する画像の符号化を完了して、第2のアプリケーションに対応する画像の符号化を開始する場合に、前記複数のアプリケーションを管理するソフトウェアの処理を介さずに、前記第1のアプリケーションに関するコンテキストを前記符号化部から記憶部に退避させるとともに、前記第2のアプリケーションに関するコンテキストを前記記憶部から前記符号化部に設定する転送部をさらに備えることを特徴とする請求項1から8のいずれかに記載のデータ処理システム。
  10.  画像生成部と、1つの符号化部とを備えるデータ処理システムが実行する方法であって、
     前記画像生成部が、並列して実行される複数のアプリケーションに対応する複数の画像を生成し、それら複数の画像をフレームバッファに格納するステップと、
     前記符号化部が、前記複数のアプリケーションに対応する複数の画像を、アプリケーションごとに異なるタイミングで前記フレームバッファから読み出し、読み出した画像を符号化するステップと、
     を備えることを特徴とするデータ処理方法。
  11.  画像生成部と、1つの符号化部とを備えるデータ処理システムに、
     前記画像生成部が、並列して実行される複数のアプリケーションに対応する複数の画像を生成し、それら複数の画像をフレームバッファに格納するステップと、
     前記符号化部が、前記複数のアプリケーションに対応する複数の画像を、アプリケーションごとに異なるタイミングで前記フレームバッファから読み出し、読み出した画像を符号化するステップと、
     を実行させるためのコンピュータプログラム。
PCT/JP2020/015623 2019-10-02 2020-04-07 データ処理システム、データ処理方法およびコンピュータプログラム WO2021065053A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US17/627,258 US12014444B2 (en) 2019-10-02 2020-04-07 Data processing system, data processing method, and computer program
JP2021551119A JPWO2021065053A1 (ja) 2019-10-02 2020-04-07

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201962909266P 2019-10-02 2019-10-02
US62/909,266 2019-10-02

Publications (1)

Publication Number Publication Date
WO2021065053A1 true WO2021065053A1 (ja) 2021-04-08

Family

ID=75336383

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/015623 WO2021065053A1 (ja) 2019-10-02 2020-04-07 データ処理システム、データ処理方法およびコンピュータプログラム

Country Status (3)

Country Link
US (1) US12014444B2 (ja)
JP (1) JPWO2021065053A1 (ja)
WO (1) WO2021065053A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008289030A (ja) * 2007-05-21 2008-11-27 Nec Corp 画面描画転送システム
WO2012014625A1 (ja) * 2010-07-28 2012-02-02 株式会社ソニー・コンピュータエンタテインメント 情報処理装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7961194B2 (en) 2003-11-19 2011-06-14 Lucid Information Technology, Ltd. Method of controlling in real time the switching of modes of parallel operation of a multi-mode parallel graphics processing subsystem embodied within a host computing system
TWI649656B (zh) 2013-12-26 2019-02-01 日商史克威爾 艾尼克斯控股公司 顯像系統、控制方法及儲存媒體
WO2016205975A1 (en) 2015-06-26 2016-12-29 Intel Corporation Apparatus and method to improve scalability of graphics processor unit (gpu) virtualization
US10210593B2 (en) 2016-01-28 2019-02-19 Qualcomm Incorporated Adaptive context switching
US10891773B2 (en) 2017-04-07 2021-01-12 Intel Corporation Apparatus and method for efficient graphics virtualization
US10521321B2 (en) 2017-12-21 2019-12-31 Qualcomm Incorporated Diverse redundancy approach for safety critical applications

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008289030A (ja) * 2007-05-21 2008-11-27 Nec Corp 画面描画転送システム
WO2012014625A1 (ja) * 2010-07-28 2012-02-02 株式会社ソニー・コンピュータエンタテインメント 情報処理装置

Also Published As

Publication number Publication date
US12014444B2 (en) 2024-06-18
US20220261952A1 (en) 2022-08-18
JPWO2021065053A1 (ja) 2021-04-08

Similar Documents

Publication Publication Date Title
US11874715B2 (en) Dynamic power budget allocation in multi-processor system
KR100617998B1 (ko) 시간 할당기를 갖는 그래픽 렌더링 엔진을 포함하는 장치,방법 및 시스템
US20180357809A1 (en) Apparatus and method for optimizing time/space warp for virtual reality using dynamic tiling and dirty tile marking
JP4426099B2 (ja) 共有メモリを有するマルチプロセッサ装置
KR101898565B1 (ko) 전송을 위한 서버 시스템의 그래픽 데이터 프로세싱
US11354769B2 (en) Page faulting and selective preemption
CN104971499B (zh) 游戏提供服务器
JP2010050970A (ja) 中央処理装置と画像処理装置との間で通信するための機器および方法
US11393131B2 (en) Smart compression/decompression schemes for efficiency and superior results
US8941669B1 (en) Split push buffer rendering for scalability
US20190206110A1 (en) Method and apparatus for subdividing shader workloads in a graphics processor for efficient machine configuration
US10754651B2 (en) Register bank conflict reduction for multi-threaded processor
US11301025B2 (en) Reducing power consumption when transferring frames from graphics processors to display panels
TWI706373B (zh) 用於型樣驅動自適應虛擬繪圖處理單元的裝置、方法及系統
US10409571B1 (en) Apparatus and method for efficiently accessing memory when performing a horizontal data reduction
WO2021065052A1 (ja) データ処理システム、データ処理方法およびコンピュータプログラム
WO2021065053A1 (ja) データ処理システム、データ処理方法およびコンピュータプログラム
US10332278B2 (en) Multi-format range detect YCoCg compression
CN116681575B (zh) 图形处理单元、图形渲染方法、存储介质、终端设备
US10423424B2 (en) Replicated stateless copy engine
CN114787775A (zh) 数据处理系统、数据转发装置以及上下文切换方法
CN116848509A (zh) 一种计算任务处理装置、方法及电子设备
CN113491877A (zh) 触发信号生成方法及装置

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021551119

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20872453

Country of ref document: EP

Kind code of ref document: A1