US20070088856A1 - Method and system for deferred command issuing in a computer system - Google Patents

Method and system for deferred command issuing in a computer system Download PDF

Info

Publication number
US20070088856A1
US20070088856A1 US11/581,975 US58197506A US2007088856A1 US 20070088856 A1 US20070088856 A1 US 20070088856A1 US 58197506 A US58197506 A US 58197506A US 2007088856 A1 US2007088856 A1 US 2007088856A1
Authority
US
United States
Prior art keywords
command
event
returned
issuing
event tag
Prior art date
Legal status (The legal status 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 status listed.)
Abandoned
Application number
US11/581,975
Inventor
Guofeng Zhang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
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 Via Technologies Inc filed Critical Via Technologies Inc
Priority to US11/581,975 priority Critical patent/US20070088856A1/en
Publication of US20070088856A1 publication Critical patent/US20070088856A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Multi Processors (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Input (AREA)
  • Information Transfer Systems (AREA)

Abstract

A method and system are disclosed for employing deferred command issuing in a computer system with multiple peripheral processors operating with a peripheral device driver embedded in a multi-threaded central processor. After issuing a first command with a first event tag by the peripheral device driver, a second command is generated for a first peripheral processor by the peripheral device driver following the issuing of the first command. The second command is stored awaiting for the first event tag being returned, and the second command is issued when the first event tag is returned if the first and second commands need to be synchronized.

Description

    PRIORITY DATA
  • This application claims the benefits of U.S. Patent Application Ser. No. 60/727,668, which was filed on Oct. 18, 2005 and entitled “Smart CPU Sync Technology for MultiGPU Solution.”
  • CROSS REFERENCE
  • This application also relates to U.S. patent application entitled “TRANSPARENT MULTI-BUFFERING IN MULTI-GPU GRAPHICS SUBSYSTEM”, U.S. patent application entitled “EVENT MEMORY ASSISTED SYNCHRONIZATION IN MULTI-GPU GRAPHICS SUBSYSTEM” and U.S. patent application entitled “METHOD AND SYSTEM FOR SYNCHRONIZING PARALLEL ENGINES IN A GRAPHICS PROCESSING UNIT”, all of which are commonly filed on the same day, and which are incorporated by reference in their entirety.
  • BACKGROUND
  • The present invention relates generally to the synchronization between a computer's central processing units (CPUs) and peripheral processing units, and, more particularly, to the timing of command issuing.
  • In a modern computer system, each peripheral functional module, such as audio or video, has its own dedicated processing subsystem, and the operations of these subsystems typically require direct control by computer's central processing unit (CPU). Besides, communication and synchronization among components of the subsystems are typically achieved through hardware connections. In an advanced graphics processing subsystem with two or more graphics processing units (GPUs), for instance, a CPU has to frequently evaluate the state of GPUs, and a next rendering command can only be issued when a previous or current command is finished. In other cases, when CPU(s) is calculating something for GPUs using multi-threaded technology, the GPUs may have to wait for the CPU to complete the calculation before executing commands that need the result from CPU(s). When one GPU requests data from another GPU, the transfer must be made through a direct hardware link or the bus, and controlled by the CPU, which then has to wait for the data transfer to complete before executing subsequent commands. Either CPU waiting for GPU or vice versa, the wait time is a waste and lowers the computer's overall performance.
  • It is therefore desirable for a computer system to be able to detach hard waiting as much as possible from CPU's operations.
  • SUMMARY
  • In view of the foregoing, this invention provides a method and system to remove some of the wait time by the CPU, as well as some idle time in peripheral processing units. In other words, it increases parallelism between processors.
  • A method and system are disclosed for employing deferred commands issuing in a computer system with multiple peripheral processors operating with a peripheral device driver embedded in one or more central processor(s). After issuing a first command with a first event tag by the peripheral device driver, a second command is generated for a first peripheral processor by the peripheral device driver following the issuing of the first command. The second command is stored awaiting for the first event tag to be returned, and the second command is issued when the first event tag is returned if the first and second commands need to be synchronized.
  • The construction and method of operation of the invention, however, together with additional objects and advantages thereof will be best understood from the following description of specific embodiments when read in connection with the accompanying drawings.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a block diagram of a part of a traditional computer system.
  • FIG. 2 is a block diagram of a part of a computer system according to one embodiment of the invention.
  • FIG. 3 illustrates commands and event-tag flowing according to one embodiment of the invention.
  • FIG. 4A is a flow chart showing a command block generating and a synchronization mechanism according to one embodiment of the present invention.
  • FIGS. 4B and 4C are flow charts illustrating two different driver subroutines within each command block and execution according to one embodiment of the present invention.
  • FIGS. 5A and 5B are command timing diagrams for showing time saving effects of deferred-command-issuing according to one embodiment of the present invention.
  • DESCRIPTION
  • Detailed information with regard to the operation of the GPU in the computer system is further described in U.S. patent application entitled “TRANSPARENT MULTI-BUFFERING IN MULTI-GPU GRAPHICS SUBSYSTEM”, U.S. patent application entitled “EVENT MEMORY ASSISTED SYNCHRONIZATION IN MULTI-GPU GRAPHICS SUBSYSTEM” and U.S. patent application entitled “METHOD AND SYSTEM FOR SYNCHRONIZING PARALLEL ENGINES IN A GRAPHICS PROCESSING UNIT”, all of which are commonly filed on the same day, and which are incorporated by reference in their entirety.
  • FIG. 1 illustrates a part of a traditional computer system 100. In such a system, a peripheral device driver 110 is just a program, functioning essentially like an instruction manual that provides the operating system with information on how to control and communicate with special processors 120 and 130 of a peripheral subsystem 140. The driver 110 does not have any control function, which is instead carried out by one or more central processor(s) (CPU) 150. Communications between the special processors 120 and 130 take place through hardware connection 160 or through the bus 170.
  • As an embodiment of present invention, FIG. 2 illustrates a part of a multi-processor computer system 200 with a driver 210 embedded in one or more central processor(s) 220. Here, the ‘embedded’ means that the driver actually runs in the CPU and employs some of the CPU processing capability, so that the driver can generate commands to be stored in the buffer, assign event-tags when synchronizations with other commands are needed, issue the commands and monitor the return of the event-tags, all without CPU hard wait. Such driver implementation does not require extensive hardware support, so it is also cost effective.
  • The computer system 200 also employs a command buffer 230, which stores immediate commands sent by the driver 210. The command buffer 230 can be just a memory space in a main memory 290 or another memory located anywhere, and can be dynamically allocated by the driver 210. With the processing power of the central processor(s) 220, the driver 210 directs command buffering in and subsequently issuing from the command buffer 230, as well as synchronization among special processors 240 and 250 and the central processor(s) 220. The special processors can be processors dedicated for graphics operations, known as graphics processing units (GPUs).
  • FIG. 3 is a diagram showing the flow of commands among the CPU, the buffers and the special processors according to one embodiment of the present invention. For illustration purposes, it provides more details on command buffering. An embedded driver 320 generates commands along with event-tags, and then sent them to command buffers 330 and 340 selectively. Commands and event-tags for special processors 350 are sent to command buffer1 330, and commands and event-tags for special processor2 360 are sent to command buffer2 340, so that the commands for different special processors can be issued independently and simultaneously. When a current command needs to synchronize with another command execution, the driver 320 generates an event-tag alongside the current command. Processors, either peripheral special processors 350 and 360, or central processor(s) 300, execute their corresponding commands and return event-tags, if present, upon completion of the execution. There are various control mechanisms installed among them through the communications. For example, the central processor(s) 300 can control both buffers in its operation.
  • FIG. 4A presents a flow chart detailing how the graphics driver 320 synchronizes command issuing with GPUs and CPU. Here, the driver 320 generates command blocks in steps 410A through 470A continuously without any delay on the CPU side. Some of these commands are to be stored in command buffers before being issued to GPUs for execution. For example, command block[n−1] 410A has a command to a first GPU with a request to return an event-tag[i]. The first GPU will return the event-tag[i] upon the completion of command block[n−1] 410A. Upon detecting the event-tag[i], another command that needs to synchronize with the command block[n−1] 410A, can then be issued from the command buffer by driver 320. In this way, CPU's hard wait for a synchronization event is eliminated. The term “deferred command issuing” refers generally to this command buffering process.
  • FIG. 4A also shows a command block[n+m] 440A that needs to synchronize with another CPU thread, as well as a command block[n+m+k] 470A that needs to synchronize with a second GPU. In both cases, the driver 320's operations of storing commands, checking event-tags and issuing commands are the same as in the above first GPU case.
  • Within each command block, driver 320 executes certain subroutines, such as generating a new command and an associated event-tag if needed, checking on returned event-tags, buffering the new command and issuing a buffered command or directly issuing the new command if there is no outstanding event-tag. These subroutines can be executed in various sequences. FIGS. 4B and 4C are two examples for conducting such subroutines.
  • Referring to FIG. 3 and FIG. 4B, driver 320 first generates a current command in step 410B, and then checks for any returned event-tag in step 420B. If there is a returned event-tag, and if a related command is in a buffer, then the driver 320 issues the buffered command along with its own event-tag if present, as shown in step 430B and 440B. Here, the ‘related’ means that there is a synchronization need between the buffered command and the previous command that returns the event-tag to the buffer. If the related command is not in buffer, then driver 320 checks if the current command is related to the returned event-tag in step 450B. If so, it issues the current command (step 470B), and if not, it buffers the current command (step 480B).
  • On the other hand, if there is no returned event-tag in the buffer, driver 320 then checks for any outstanding event-tag in step 460B. In case there is an outstanding event-tag that the current command issue will depend on or is related to, driver 320 then buffers the current command (step 480B). In case there is no outstanding related event-tag, driver 320 directly issues the current command. Note that in all cases of command buffering or issuing, the associated event-tag if present, is also buffered or issued along with the command.
  • FIG. 4C shows another subroutine according to another embodiment of the present invention where the driver 320 first checks for any returned event-tag in step 410C. If there is a returned event-tag, and if a related command is in the buffer, then driver 320 issues the buffered command (step 430C). If there is no returned event-tag (step 410C) or there is no related command in buffer (step 420C), then driver 320 generates a current command (step 445C). If the current command is related to any returned event-tag (step 450C), then the driver issues the current command (step 480C). If the current command is not related to any returned event-tag, then it is also checked to see whether there is any outstanding event-tag that relates to the current command (step 460C). In case there is an outstanding related event-tag, driver 320 buffers the current command along with its event-tag if present (step 470C), otherwise driver 320 issues the current command (step 480C) with its event-tag if present (step 470C). The aforementioned event-tag checking process can be limited to only those processors to which commands with event-tags have been sent previously.
  • In both cases as shown in FIGS. 4B and 4C, and as an alternative, a current command is always buffered if there is any outstanding event-tag. If driver 320 checks only the event-tag buffer, then before an outstanding event-tag returns, driver 320 really has no way to know if it is related to a newly generated current command. So that the current command has to be buffered if there is any outstanding event-tag.
  • FIGS. 5A and 5B are timing diagrams illustrating deferred-command-issuing that reduces CPU wait-time and GPU idle-time. FIG. 5A represents the situation in which a deferred-command-issuing process is not employed. In this case, the CPU generates commands in time slots 500A, 510A and 520A for a first GPU (or GPU1) in time slots 550A, 560A and 570A, respectively. Commands generated in time slots 502A, 512A and 522A are for a second GPU (or GPU2) in time slots 552A, 562A and 572A, respectively. Since there is no command buffering process employed, a subsequent command can only be generated and issued when a current GPU operation is completed. For example, the time slot 510A can only be initiated after the time slot 552A, and similarly, the time slot 520A is after time slot 562A. The CPU has to wait while a previously issued command is executing. As shown, the time intervals between two adjacent time slots are either the CPU wait time or the GPU idle time. For instance, the interval between 510A and 502A is CPU's wait time, and the interval between 560A and 550A is GPU1's idle time.
  • Contrasting to FIG. 5A and FIG. 5B illustrates the timing relationships in the situation where the deferred-command-issuing process is employed to allow the CPU to generate commands continuously to command buffers without waiting for any GPU to complete a command execution. In this case, the CPU generates commands in time slots 500B, 510B and 520B for GPU1 in time slots 550B, 560B and 570B, respectively. Commands generated in time slots 502B, 512B and 522B are for GPU2 in time slots 552B, 562B and 572B, respectively. As shown, the CPU command generating time slot 510B is brought up to follow the completion of the time slot 502B, which is prior to the end of GPU2 time slot 552B. But the CPU's fifth command at time slot 520B still waits for the time slot 552B to end, because there is a synchronization need between this particular command and the GPU2 execution, so are the command at 530B and the GPU2 execution at 562B. In such a command processing system, especially for a graphics system employing such a deferred-command-issuing process, benefits are obtained as a subsequent command is already generated and waiting in the command buffer for the execution by the GPU. On the other hand, the GPUs do not have to wait for the CPU to generate commands, and can execute a subsequent command right after a current one finishes. This is further illustrated in the case for GPU2 at time slot 562B and 572B, where GPU2 has no idle time. For the same reason, the GPU1 idle time between time slots 570B and 560B is also reduced.
  • To quantify time saved by the deferred-command-issuing process employed, if it is assumed that the CPU command generating time is ‘t’, and the execution time of GPU1 and GPU2 are T1 and T2 (assume T1<T2, for easing the evaluation), respectively, as shown in FIG. 5A, a system without using the deferred-command-issuing takes (3*T2+3*t) to complete three command cycles. The system with the deferred-command-issuing of FIG. 5B shortens the three-cycle time to (3*T2+t). So that the time saving for 3 cycles is 2*t. In general, the saving is (n−1)*t for n number of command cycles.
  • A comparison between FIGS. 5A and 5B also shows a saving in GPU idle time. In FIG. 5A, GPU1 idle time between time slots 560A and 570A is T2−T1+t, and GPU2 idle time is t. In FIG. 5B, GPU1 idle time between the corresponding time slots becomes T2−T1, or a saving of t. GPU2 idle time is completely eliminated, also a saving of t.
  • This invention provides many different embodiments, or examples, for implementing different features of the invention. Specific examples of components and methods are described to help clarify the disclosure. These are, of course, merely examples and are not intended to limit the disclosure from that described in the claims.

Claims (17)

1. A method for deferred command issuing in a computer system with one or multi special purpose operating with a device driver running on one or multiple central processors, the method comprising:
issuing a first command with a first event tag by the peripheral device driver;
generating a second command for a first peripheral processor by the peripheral device driver following the issuing of the first command;
storing the second command awaiting for the first event tag being returned;
and issuing the second command when the first event tag is returned.
2. The method of claim 1, wherein storing the second command further includes storing the second command in a buffer associated with the first processor.
3. The method of claim 2, further comprising:
generating a third command for a second processor; and
storing the third command in a buffer associated there with.
4. The method of claim 3, wherein the buffers associated with the first and second processors are different.
5. The method of claim 1, further comprising checking whether the generated second command relates to the first command requiring the first event tag to return before the second command is being issued.
6. The method of claim 5, wherein checking further includes:
checking whether the first event tag has returned; and
checking whether the first event tag is outstanding if it is not yet returned and if it relates to the second command.
7. The method of claim 6, wherein checking whether the first event tag has returned is performed after the generating the second command.
8. The method of claim 6, wherein checking whether the first event tag has returned is performed prior to the generating the second command.
9. A method for deferred command issuing in a computer system with multiple graphics processors operating with a graphics driver embedded in a multi-threaded central processor, the method comprising:
issuing a first command with a first event tag by the graphics driver;
generating a second command to a first processor of the computer system by the graphics driver following the issuing of the first command;
storing the second command awaiting for the first event tag is returned; and
issuing the second command when the first event tag is returned.
10. The method of claim 9, wherein storing the second command further includes storing the second command in a buffer associated with the first processor.
11. The method of claim 10, further comprising:
generating a third command to a second processor; and
storing the third command in a buffer associated there with.
12. The method of claim 11, wherein the buffers associated with the first and second processors are different.
13. The method of claim 9, further comprises checking whether the generated second command needs to wait for the first event tag to return.
14. The method of claim 13, wherein the checking further includes:
checking whether the first event tag has returned; and
checking whether the first event tag is outstanding if it has not returned.
15. The method of claim 14, wherein checking whether the first event tag has returned is performed after the generating the second command.
16. The method of claim 14, wherein checking whether the first event tag has returned is performed prior to the generating the second command.
17. A system for supporting deferred command issuing in an advanced computer system, the system comprising:
a multi-threaded central processing unit (CPU);
a graphics subsystem with multiple graphics processing units;
at least one command buffer for storing commands and associated event-tags; and
a graphics driver embedded in the CPU for generating commands to be stored in the command buffers, assigning event-tags when synchronizations are needed, controlling command issuing and monitoring event-tag returns.
US11/581,975 2005-10-18 2006-10-17 Method and system for deferred command issuing in a computer system Abandoned US20070088856A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/581,975 US20070088856A1 (en) 2005-10-18 2006-10-17 Method and system for deferred command issuing in a computer system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US72766805P 2005-10-18 2005-10-18
US11/581,975 US20070088856A1 (en) 2005-10-18 2006-10-17 Method and system for deferred command issuing in a computer system

Publications (1)

Publication Number Publication Date
US20070088856A1 true US20070088856A1 (en) 2007-04-19

Family

ID=38214146

Family Applications (4)

Application Number Title Priority Date Filing Date
US11/581,975 Abandoned US20070088856A1 (en) 2005-10-18 2006-10-17 Method and system for deferred command issuing in a computer system
US11/581,973 Active 2029-09-17 US7903120B2 (en) 2005-10-18 2006-10-17 Method and system for synchronizing parallel engines in a graphics processing unit
US11/582,020 Active 2028-11-19 US7812849B2 (en) 2005-10-18 2006-10-17 Event memory assisted synchronization in multi-GPU graphics subsystem
US11/582,019 Active 2029-04-19 US7889202B2 (en) 2005-10-18 2006-10-17 Transparent multi-buffering in multi-GPU graphics subsystem

Family Applications After (3)

Application Number Title Priority Date Filing Date
US11/581,973 Active 2029-09-17 US7903120B2 (en) 2005-10-18 2006-10-17 Method and system for synchronizing parallel engines in a graphics processing unit
US11/582,020 Active 2028-11-19 US7812849B2 (en) 2005-10-18 2006-10-17 Event memory assisted synchronization in multi-GPU graphics subsystem
US11/582,019 Active 2029-04-19 US7889202B2 (en) 2005-10-18 2006-10-17 Transparent multi-buffering in multi-GPU graphics subsystem

Country Status (3)

Country Link
US (4) US20070088856A1 (en)
CN (4) CN100489820C (en)
TW (4) TWI322354B (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100321396A1 (en) * 2009-06-18 2010-12-23 Shuang Xu Methods and systems for automatically switching monitor scene modes
US8056093B1 (en) * 2006-12-07 2011-11-08 Nvidia Corporation Asynchronous kernel processing for a graphics processing system
US20130187932A1 (en) * 2012-01-23 2013-07-25 Microsoft Corporation Para-virtualized asymmetric gpu processors
US20150012670A1 (en) * 2013-07-05 2015-01-08 Phison Electronics Corp. Command executing method, connector and memory storage device
WO2016200540A1 (en) * 2015-06-12 2016-12-15 Intel Corporation Facilitating efficient graphics command generation and execution for improved graphics performance at computing devices

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8390631B2 (en) * 2008-06-11 2013-03-05 Microsoft Corporation Synchronizing queued data access between multiple GPU rendering contexts
US8368701B2 (en) * 2008-11-06 2013-02-05 Via Technologies, Inc. Metaprocessor for GPU control and synchronization in a multiprocessor environment
US8397241B2 (en) * 2008-11-13 2013-03-12 Intel Corporation Language level support for shared virtual memory
US9075559B2 (en) 2009-02-27 2015-07-07 Nvidia Corporation Multiple graphics processing unit system and method
US9135675B2 (en) 2009-06-15 2015-09-15 Nvidia Corporation Multiple graphics processing unit display synchronization system and method
JP2011048579A (en) * 2009-08-26 2011-03-10 Univ Of Tokyo Image processor and image processing method
US8803897B2 (en) * 2009-09-03 2014-08-12 Advanced Micro Devices, Inc. Internal, processing-unit memory for general-purpose use
US8305380B2 (en) * 2009-09-09 2012-11-06 Advanced Micro Devices, Inc. Managing resources to facilitate altering the number of active processors
US20110063305A1 (en) * 2009-09-16 2011-03-17 Nvidia Corporation Co-processing techniques on heterogeneous graphics processing units
US20110084982A1 (en) * 2009-10-12 2011-04-14 Sony Corporation Apparatus and Method for Displaying Image Data With Memory Reduction
US8514235B2 (en) * 2010-04-21 2013-08-20 Via Technologies, Inc. System and method for managing the computation of graphics shading operations
CN102497591B (en) * 2011-11-11 2015-02-18 青岛海信移动通信技术股份有限公司 Terminal and method for realizing wireless screen transmission between terminal and TV
US9256915B2 (en) * 2012-01-27 2016-02-09 Qualcomm Incorporated Graphics processing unit buffer management
US9384711B2 (en) 2012-02-15 2016-07-05 Microsoft Technology Licensing, Llc Speculative render ahead and caching in multiple passes
KR101308102B1 (en) * 2012-02-24 2013-09-12 (주)유브릿지 Portable terminal and control method thereof
US8847970B2 (en) 2012-04-18 2014-09-30 2236008 Ontario Inc. Updating graphical content based on dirty display buffers
US9230517B2 (en) * 2012-05-31 2016-01-05 Microsoft Technology Licensing, Llc Virtual surface gutters
US9177533B2 (en) 2012-05-31 2015-11-03 Microsoft Technology Licensing, Llc Virtual surface compaction
US9286122B2 (en) 2012-05-31 2016-03-15 Microsoft Technology Licensing, Llc Display techniques using virtual surface allocation
US9235925B2 (en) 2012-05-31 2016-01-12 Microsoft Technology Licensing, Llc Virtual surface rendering
CN102750665B (en) * 2012-06-01 2014-09-24 上海鼎为电子科技(集团)有限公司 Graphic processing method, graphic processing device mobile terminal
US9307007B2 (en) 2013-06-14 2016-04-05 Microsoft Technology Licensing, Llc Content pre-render and pre-fetch techniques
US9507961B2 (en) * 2013-07-01 2016-11-29 Qualcomm Incorporated System and method for providing secure access control to a graphics processing unit
US9818379B2 (en) 2013-08-08 2017-11-14 Nvidia Corporation Pixel data transmission over multiple pixel interfaces
JP6580380B2 (en) * 2015-06-12 2019-09-25 オリンパス株式会社 Image processing apparatus and image processing method
CN106600521A (en) * 2016-11-30 2017-04-26 宇龙计算机通信科技(深圳)有限公司 Image processing method and terminal device
WO2018119602A1 (en) * 2016-12-26 2018-07-05 深圳前海达闼云端智能科技有限公司 Rendering method and device
KR101969219B1 (en) * 2017-04-27 2019-04-15 재단법인대구경북과학기술원 Method and apparatus for frequent pattern mining
KR102098253B1 (en) * 2018-02-13 2020-04-07 재단법인대구경북과학기술원 System and method for large-scale frequent pattern mining on distributed systems
CN109300426A (en) * 2018-03-30 2019-02-01 温州长江汽车电子有限公司 A kind of double TFT screen display systems and its display methods based on MCU
CN109743453B (en) * 2018-12-29 2021-01-05 出门问问信息科技有限公司 Split screen display method and device
CN112231018B (en) * 2020-12-15 2021-03-16 北京壁仞科技开发有限公司 Method, computing device, and computer-readable storage medium for offloading data

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5668958A (en) * 1995-09-12 1997-09-16 International Business Machines Corporation Heterogeneous filing system with common API and reconciled file management rules
US6079013A (en) * 1998-04-30 2000-06-20 International Business Machines Corporation Multiprocessor serialization with early release of processors
US6078339A (en) * 1998-02-10 2000-06-20 Intel Corporation Mutual exclusion of drawing engine execution on a graphics device
US20050041031A1 (en) * 2003-08-18 2005-02-24 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
US20050066074A1 (en) * 2003-09-20 2005-03-24 Samsung Electronics Co., Ltd. Communication device and method having a common platform
US7015915B1 (en) * 2003-08-12 2006-03-21 Nvidia Corporation Programming multiple chips from a command buffer
US20060230205A1 (en) * 2005-04-06 2006-10-12 Toshiba America Electronic Components Back-off timing mechanism

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2542392B2 (en) * 1987-07-31 1996-10-09 シャープ株式会社 Character drawing device
US4949280A (en) * 1988-05-10 1990-08-14 Battelle Memorial Institute Parallel processor-based raster graphics system architecture
US5519825A (en) * 1993-11-16 1996-05-21 Sun Microsystems, Inc. Method and apparatus for NTSC display of full range animation
US5878216A (en) * 1995-05-01 1999-03-02 Intergraph Corporation System and method for controlling a slave processor
US5657478A (en) * 1995-08-22 1997-08-12 Rendition, Inc. Method and apparatus for batchable frame switch and synchronization operations
US5801717A (en) 1996-04-25 1998-09-01 Microsoft Corporation Method and system in display device interface for managing surface memory
US5933155A (en) * 1996-11-06 1999-08-03 Silicon Graphics, Inc. System and method for buffering multiple frames while controlling latency
US6157395A (en) * 1997-05-19 2000-12-05 Hewlett-Packard Company Synchronization of frame buffer swapping in multi-pipeline computer graphics display systems
US6515662B1 (en) * 1998-07-16 2003-02-04 Canon Kabushiki Kaisha Computer apparatus for providing stereoscopic views from monographic images and method
US6243107B1 (en) 1998-08-10 2001-06-05 3D Labs Inc., Ltd. Optimization of a graphics processor system when rendering images
US6724390B1 (en) * 1999-12-29 2004-04-20 Intel Corporation Allocating memory
US6747654B1 (en) * 2000-04-20 2004-06-08 Ati International Srl Multiple device frame synchronization method and apparatus
US6828975B2 (en) * 2001-03-01 2004-12-07 Microsoft Corporation Method and system for managing graphics objects in a graphics display system
US20020126122A1 (en) * 2001-03-12 2002-09-12 Yet Kwo-Woei Apparatus and method for minimizing the idle time of a computer graphic system using hardware controlled flipping
US6683614B2 (en) * 2001-12-21 2004-01-27 Hewlett-Packard Development Company, L.P. System and method for automatically configuring graphics pipelines by tracking a region of interest in a computer graphical display system
US6919896B2 (en) * 2002-03-11 2005-07-19 Sony Computer Entertainment Inc. System and method of optimizing graphics processing
US7388581B1 (en) * 2003-08-28 2008-06-17 Nvidia Corporation Asynchronous conditional graphics rendering
US7095416B1 (en) * 2003-09-22 2006-08-22 Microsoft Corporation Facilitating performance analysis for processing
US7545380B1 (en) * 2004-12-16 2009-06-09 Nvidia Corporation Sequencing of displayed images for alternate frame rendering in a multi-processor graphics system
US7522167B1 (en) * 2004-12-16 2009-04-21 Nvidia Corporation Coherence of displayed images for split-frame rendering in multi-processor graphics system
US7383412B1 (en) * 2005-02-28 2008-06-03 Nvidia Corporation On-demand memory synchronization for peripheral systems with multiple parallel processors

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5668958A (en) * 1995-09-12 1997-09-16 International Business Machines Corporation Heterogeneous filing system with common API and reconciled file management rules
US6078339A (en) * 1998-02-10 2000-06-20 Intel Corporation Mutual exclusion of drawing engine execution on a graphics device
US6079013A (en) * 1998-04-30 2000-06-20 International Business Machines Corporation Multiprocessor serialization with early release of processors
US7015915B1 (en) * 2003-08-12 2006-03-21 Nvidia Corporation Programming multiple chips from a command buffer
US20050041031A1 (en) * 2003-08-18 2005-02-24 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
US20050066074A1 (en) * 2003-09-20 2005-03-24 Samsung Electronics Co., Ltd. Communication device and method having a common platform
US20060230205A1 (en) * 2005-04-06 2006-10-12 Toshiba America Electronic Components Back-off timing mechanism

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8056093B1 (en) * 2006-12-07 2011-11-08 Nvidia Corporation Asynchronous kernel processing for a graphics processing system
US20100321396A1 (en) * 2009-06-18 2010-12-23 Shuang Xu Methods and systems for automatically switching monitor scene modes
US9087469B2 (en) 2009-06-18 2015-07-21 Nvidia Corporation Methods and systems for automatically switching monitor scene modes
US20130187932A1 (en) * 2012-01-23 2013-07-25 Microsoft Corporation Para-virtualized asymmetric gpu processors
US8692832B2 (en) * 2012-01-23 2014-04-08 Microsoft Corporation Para-virtualized asymmetric GPU processors
US20150012670A1 (en) * 2013-07-05 2015-01-08 Phison Electronics Corp. Command executing method, connector and memory storage device
US9424206B2 (en) * 2013-07-05 2016-08-23 Phison Electronics Corp. Command executing method, connector and memory storage device
WO2016200540A1 (en) * 2015-06-12 2016-12-15 Intel Corporation Facilitating efficient graphics command generation and execution for improved graphics performance at computing devices
US9916634B2 (en) 2015-06-12 2018-03-13 Intel Corporation Facilitating efficient graphics command generation and execution for improved graphics performance at computing devices

Also Published As

Publication number Publication date
TWI329845B (en) 2010-09-01
US20070091099A1 (en) 2007-04-26
TWI328779B (en) 2010-08-11
CN101025717A (en) 2007-08-29
CN1991903A (en) 2007-07-04
US7903120B2 (en) 2011-03-08
CN1991903B (en) 2010-05-12
CN100489820C (en) 2009-05-20
CN1991906A (en) 2007-07-04
TW200708971A (en) 2007-03-01
TWI354240B (en) 2011-12-11
US20070091098A1 (en) 2007-04-26
CN100495435C (en) 2009-06-03
CN100568277C (en) 2009-12-09
TW200737035A (en) 2007-10-01
US20070091097A1 (en) 2007-04-26
TW200821979A (en) 2008-05-16
TW200821978A (en) 2008-05-16
US7889202B2 (en) 2011-02-15
US7812849B2 (en) 2010-10-12
CN1991904A (en) 2007-07-04
TWI322354B (en) 2010-03-21

Similar Documents

Publication Publication Date Title
US20070088856A1 (en) Method and system for deferred command issuing in a computer system
US8146108B2 (en) Driver assisted asynchronous command processing
US7975272B2 (en) Thread queuing method and apparatus
US8997103B2 (en) N-way memory barrier operation coalescing
US7313673B2 (en) Fine grained multi-thread dispatch block mechanism
US10592300B2 (en) Method and system for implementing recovery from speculative forwarding miss-predictions/errors resulting from load store reordering and optimization
JP2005071109A (en) Synchronization method for multiprocessor system
CN107391400B (en) Memory expansion method and system supporting complex memory access instruction
US6243107B1 (en) Optimization of a graphics processor system when rendering images
US9229715B2 (en) Method and apparatus for efficient inter-thread synchronization for helper threads
US9886278B2 (en) Computing architecture and method for processing data
US7743223B2 (en) Decoupling of write address from its associated write data in a store to a shared memory in a multiprocessor system
JP3523286B2 (en) Sequential data transfer type memory and computer system using sequential data transfer type memory
KR20140030260A (en) Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
EP2284711A1 (en) Decoupled store address and data in a multiprocessor system
JPH0749781A (en) Method and equipment for simplification of interlock hardware
WO2017088456A1 (en) Pipeline data synchronization apparatus and method for multi-input multi-output processor
EP0679990A1 (en) A computer apparatus having a means to force sequential instruction execution
US20100026691A1 (en) Method and system for processing graphics data through a series of graphics processors
US20110066813A1 (en) Method And System For Local Data Sharing
US6097403A (en) Memory including logic for operating upon graphics primitives
US20040117597A1 (en) Method and apparatus for providing fast remote register access in a clustered VLIW processor using partitioned register files
CN117501254A (en) Providing atomicity for complex operations using near-memory computation
CN111857830B (en) Method, system and storage medium for designing path for forwarding instruction data in advance
US8051275B2 (en) Result path sharing between a plurality of execution units within a processor

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION