Data reading method and device, computer equipment and computer readable storage medium

By filtering out useless data in a multi-core system and using an effective block checking method, the problem of bandwidth waste during data reading is solved, thereby improving system performance and resource utilization.

CN121785950APending Publication Date: 2026-04-03MOORE THREADS TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2025-12-22
Publication Date
2026-04-03

AI Technical Summary

Technical Problem

In multi-core systems, existing technologies waste bandwidth and power during data reading because not all blocks need to be processed, resulting in the reading of useless data.

Method used

By filtering out useless data and using a valid block check method, valid blocks are identified and read commands are generated, thus avoiding the reading of invalid data.

Benefits of technology

It improved system performance and core bus bandwidth utilization, reduced the transmission of invalid data, and saved resources.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN121785950A_ABST
    Figure CN121785950A_ABST
Patent Text Reader

Abstract

The embodiment of the invention relates to a data reading method and device, computer equipment and a computer readable storage medium, and the method comprises the steps: dividing a screen into a plurality of blocks according to a block division rule and the number of screen pixels from each core of a multi-core system; performing virtual coordinate assignment on each block, and determining a virtual coordinate and a read command address of the block; performing block verification on the blocks according to the virtual coordinates of the blocks, and determining valid blocks in the plurality of blocks; and generating a read command according to the read command address of the valid block. Therefore, useless data are screened out during data reading, bandwidth waste is avoided, and the overall performance is improved.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application relates to the field of graphics processing technology, and more particularly to a data reading method and apparatus, computer equipment, and computer-readable storage medium. Background Technology

[0002] A graphics processing unit (GPU), also known as a graphics processor, display core, visual processor, or display chip, is a microprocessor specifically designed to perform image and graphics-related calculations on personal computers, workstations, game consoles, and some mobile devices (such as tablets and smartphones).

[0003] GPUs reduce the reliance of graphics cards on CPUs (Central Processing Units) and perform some of the tasks that were originally handled by the CPU, especially in 3D graphics processing. The core technologies used by GPUs include hardware T&L (geometry transformation and lighting processing), cubic environment material mapping and vertex blending, texture compression and bump mapping, dual-texture four-pixel 256-bit rendering engines, and more.

[0004] In the architecture design of graphics processing units (GPUs), there are generally two directions: IMR (Immediate Mode Rendering) and TBDR (Tile-Based Defferred Rendering). IMR is a rendering technique that sends drawing commands directly in each frame, typically used in desktop GPUs. Its core feature is that it dynamically generates graphics by calling drawing functions frame by frame. Each rendering requires resubmitting vertex data, resulting in high performance but relatively high power consumption. TBDR divides the scene into smaller tiles and then renders these tiles in parallel. It is typically used in mobile GPUs. Compared to GPUs with IMR architecture, TBDR offers a better balance between power consumption and performance, but its overall performance is slightly inferior to IMR.

[0005] Figure 1 This is a schematic diagram of the TBDR architecture. For example... Figure 1 As shown, current TBDR architecture GPUs typically divide the entire graphics processing into two stages: the first stage (Geometry Process) performs all primitive-related processing, including dividing the screen into tiles and generating a primitive list; the second stage (Fragment Process) performs rasterization and subsequent processing on a tile-by-tile basis, and outputs the results to system memory after completion.

[0006] Figure 2 This is a schematic diagram of an existing scheme for the data reading process. For example... Figure 2 As shown, in the existing solution, the system first configures the number of screen pixels that need to be rasterized and the rules for dividing the screen into blocks. Then, the device calculates the number of blocks that need to be rasterized in the entire screen based on the block division rules and the number of screen pixels. When the system issues a start instruction, the device reads the first block to the last block according to a certain order rule, based on the number of pixels corresponding to each block. At the same time, when the data corresponding to the block is returned, the block's identity (ID) and coordinates are assigned according to the same order rule.

[0007] It should be noted that the above introduction to the technical background is only for the purpose of providing a clear and complete explanation of the technical solutions of this application and facilitating understanding by those skilled in the art. It should not be assumed that these technical solutions are known to those skilled in the art simply because they have been described in the background section of this application. Summary of the Invention

[0008] The inventors discovered that in multi-core systems, not all blocks need to be processed. Therefore, after assigning an identity and coordinates, the block must be judged according to the multi-core execution rules to determine whether the current block should be executed on the current core. If it is executed, it is sent downstream for rasterization calculation; otherwise, the block is discarded and not processed. However, since all data, including useless data, is read every time the system starts, limited bandwidth resources are wasted, and power consumption is also wasted because the data contains useless flips.

[0009] To address at least one of the aforementioned technical problems or other similar issues, embodiments of this application provide a data reading method, apparatus, and computer program product that avoids bandwidth waste and improves overall performance by filtering out useless data during data reading.

[0010] According to one aspect of the embodiments of this application, a data reading method is provided, the method comprising:

[0011] The screen is divided into multiple tiles based on the tile partitioning rules of each core from the multi-core system and the number of screen pixels.

[0012] Assign virtual coordinates to each block to determine the virtual coordinates and read command address of the block;

[0013] The block is validated based on its virtual coordinates to determine the valid block among the plurality of blocks;

[0014] A read command is generated based on the read command address of the valid block.

[0015] According to another aspect of the embodiments of this application, a data reading device is provided, the device comprising:

[0016] The partitioning unit divides the screen into multiple tiles based on the block partitioning rules of each core from the multi-core system and the number of screen pixels.

[0017] The assignment unit assigns virtual coordinates to each block, determining the virtual coordinates and read command address of the block;

[0018] The determining unit performs block verification on the block based on the virtual coordinates of the block, and determines the valid block among the plurality of blocks;

[0019] The generation unit generates a read command based on the read command address of the valid block.

[0020] According to another aspect of the embodiments of this application, a computer device is provided, including a memory, a processor, and a computer program stored in the memory and executable on the processor, wherein the processor executes the computer program to implement the method as described above.

[0021] According to another aspect of the embodiments of this application, a computer-readable storage medium is provided, the computer-readable storage medium storing a computer program that, when executed by a processor, implements the method described above.

[0022] The beneficial effects of this application embodiment are as follows: According to this application embodiment, by filtering out useless data when reading data, bandwidth waste is avoided and overall performance is improved.

[0023] Specific embodiments of this application are disclosed in detail with reference to the following description and accompanying drawings, indicating how the principles of this application can be adopted. It should be understood that the embodiments of this application are not limited in scope. Within the scope of the appended claims, embodiments of this application include many changes, modifications, and equivalents.

[0024] Features described and / or illustrated for one embodiment may be used in the same or similar manner in one or more other embodiments, combined with features in other embodiments, or substituted for features in other embodiments.

[0025] It should be emphasized that the term "including / comprises" as used herein refers to the presence of a feature, whole, step, or component, but does not exclude the presence or addition of one or more other features, wholes, steps, or components. Attached Figure Description

[0026] To more clearly illustrate the technical solutions in the embodiments of this application or the prior art, the drawings used in the description of the embodiments or the prior art will be briefly introduced below. Obviously, the drawings described below are only some embodiments of this application. For those skilled in the art, other drawings can be obtained based on these drawings without creative effort. In the drawings:

[0027] Figure 1 This is a schematic diagram of the TBDR architecture;

[0028] Figure 2 This is a schematic diagram of an existing scheme for the data reading process;

[0029] Figure 3 This is a schematic diagram of a data reading method according to an embodiment of this application;

[0030] Figure 4 This is a schematic diagram illustrating data reading according to the method of an embodiment of this application;

[0031] Figure 5 This is a schematic diagram of valid block calculation and blank block checking according to the method of the embodiment of this application;

[0032] Figure 6 This is a schematic diagram of a data reading device according to an embodiment of this application. Detailed Implementation

[0033] Referring to the accompanying drawings, the foregoing and other features of this application will become apparent from the following description. Specific embodiments of this application are specifically disclosed in the description and drawings, illustrating partial implementations in which the principles of this application may be employed. It should be understood that this application is not limited to the described embodiments; rather, it includes all modifications, variations, and equivalents falling within the scope of the appended claims.

[0034] In the embodiments of this application, the terms "first," "second," etc., are used to distinguish different elements by name, but do not indicate the spatial arrangement or chronological order of these elements, and these elements should not be limited by these terms. The term "and / or" includes any one or more of the terms listed in association and all combinations thereof. The terms "comprising," "including," "having," etc., refer to the presence of the stated features, elements, components, or assemblies, but do not exclude the presence or addition of one or more other features, elements, components, or assemblies.

[0035] In the embodiments of this application, the singular forms "a," "the," etc., including the plural forms, should be broadly understood as "a kind" or "a class" rather than limited to the meaning of "an." Furthermore, the term "the" should be understood to include both the singular and plural forms, unless the context explicitly indicates otherwise. Additionally, the term "according to" should be understood as "at least partially based on…," and the term "based on" should be understood as "at least partially based on…," unless the context explicitly indicates otherwise.

[0036] Various embodiments of this application will now be described with reference to the accompanying drawings. These embodiments are merely exemplary and are not intended to limit the scope of this application.

[0037] First aspect of the embodiments

[0038] This application provides a data reading method. Figure 3 This is a schematic diagram of a data reading method according to an embodiment of this application. Figure 1 As shown, the data reading method includes:

[0039] 310. The screen is divided into multiple tiles based on the tile partitioning rules of each core from the multi-core system and the number of screen pixels.

[0040] 320. Assign virtual coordinates to each block to determine the virtual coordinates and read command address of that block;

[0041] 330. Based on the virtual coordinates of the above blocks, perform block verification on the above blocks to determine the valid blocks among the above multiple blocks;

[0042] 340. Generate a read command based on the read command address of the above valid block.

[0043] It is worth noting that the above appendix Figure 3 The embodiments of this application have only been illustrated schematically, and the application is not limited thereto. For example, the execution order between various operations can be appropriately adjusted, and other operations can be added or some operations can be removed. Those skilled in the art can make appropriate modifications based on the above description, and are not limited to the above-described embodiments. Figure 3 The records.

[0044] According to the embodiments of this application, by introducing valid block checks, invalid blocks and invalid data are screened out in advance, avoiding the sending of invalid read data commands and improving system performance and bus bandwidth utilization.

[0045] In some embodiments, block verification includes blank block checking and valid block calculation. Blank block checking may include determining whether the input block (referred to as the current block) is within the range of valid primitives, and valid block calculation may include determining whether the current block is configured to be executed on the current core.

[0046] For example, based on the virtual coordinates of the current block, a valid block calculation is performed on the current block to determine whether the current block is configured to be executed on the current core; and, based on the virtual coordinates of the current block, a blank block check is performed on the current block to determine whether the current block is within the range of valid primitives; if the current block is configured to be executed on the current core and is within the range of valid primitives, then the current block is determined to be a valid block.

[0047] In the above embodiments, effective block computation for the current block can be performed using a preset multi-core effective block computation pipeline (hereinafter referred to as a pipeline). In some possible implementations, multiple pipelines can be preset, and one pipeline can be selected according to the configuration to perform effective block computation on the input block (i.e., the current block) to determine whether the input block should be executed on the current core. This application does not limit this; it is also possible to set only one pipeline and perform effective block computation on the input block through that pipeline.

[0048] In the above embodiments, the blank block check of the current block can be achieved by determining whether the current block is within the bounding box range corresponding to the valid primitive. If the current block is within the bounding box range corresponding to the valid primitive, it is considered that the current block is within the range of the valid primitive, that is, the current block is not a blank block and needs to be processed; otherwise, it is considered that the current block is not within the bounding box range corresponding to the valid primitive, that is, the current block is a blank block and does not need to be processed.

[0049] In the above embodiments, determining whether the current block is within the bounding box range corresponding to a valid primitive may include: assigning an indicator marker to the current block and calculating the read command address of the current block, so as to determine which blocks are blank blocks and which are not blank blocks when selecting data later.

[0050] In the above embodiment, a circular cache pointer can be set to allocate an indicator flag for the current block. Furthermore, when allocating an indicator flag for the current block:

[0051] If the circular cache pointer corresponding to the current block points to zero, then record the virtual coordinates of the current block, calculate the read command address corresponding to the current block according to the virtual coordinates of the current block, and then determine whether the current block is within the bounding box range corresponding to the valid primitive.

[0052] If the circular cache pointer corresponding to the current block points to a value other than zero or the maximum value, then it is only determined whether the current block is within the bounding box of the valid primitive; in this case, the virtual coordinates of the current block and the corresponding read command address can be determined by the previous block.

[0053] If the circular cache pointer corresponding to the current block points to the maximum value, then it is determined whether the current block is within the bounding box of a valid primitive, and the circular cache pointer is set to 0. In this case, similar to the previous case, the virtual coordinates and corresponding read command address of the current block can be determined from the previous block.

[0054] In the above embodiment, when the circular cache pointer corresponding to the current block points to the maximum value or the virtual coordinates of the current block overlap with the boundary of the bounding box corresponding to the valid primitive, that is, when the virtual coordinates of the current block touch the boundary of the bounding box corresponding to the valid primitive, if the number of valid blocks is not zero in the current loop and the calculation of the read command address is completed, then the generation of the read command is triggered.

[0055] When generating a read command, the virtual coordinates and read command address of the block corresponding to the zero pointer of the aforementioned circular cache, as well as all allocated indicator flags, can also be recorded. Therefore, when the data corresponding to the read command is returned, the actual block data can be generated based on the recorded virtual coordinates, read command address, and allocated indicator flags of that block.

[0056] The methods of this application embodiment are illustrated below with specific examples.

[0057] Figure 4 This is a schematic diagram illustrating data reading according to the method described in an embodiment of this application. Figure 4 As shown, the data reading process includes firmware startup process 410, virtual coordinate assignment process 420, blank block check process 430, valid block calculation process 440, data reading process 450, and data output process 460.

[0058] In the above embodiment, the firmware boot process 410 is used to respond to the firmware boot signal as a start marker for the entire data reading process. Specific implementation details of the firmware boot process 410 can be found in related technologies, and are omitted here.

[0059] In the above embodiments, the virtual coordinate assignment process 420 determines the virtual coordinates of the block and the read command address. Here, the block is obtained by dividing the screen. This application does not limit the block division rules or the number of screen pixels. For example, for a 1080P screen, it can be divided according to the 32×32 block division rule to obtain multiple blocks.

[0060] For example, the virtual coordinate assignment process 420 can generate the virtual coordinates and identity information of the virtual blocks in an inverted "N" shape according to the processing order of the blocks. At this time, the generated virtual blocks contain all the blocks that need to be processed on the entire screen, and when they are not under back pressure, they are always generated at a performance of 1 block per cycle (1 tile / cycle).

[0061] In the above embodiments, in order to screen out useless data (invalid blocks and invalid data), the blank block checking process 430 can be used to determine whether the current block is a blank block. For example, the current block can be determined to be a blank block by judging whether it is within the bounding box range corresponding to the valid primitive.

[0062] Normally, when rendering starts upstream, bounding boxes corresponding to valid primitives are sent out. Only if the coordinates of the current block are within the bounding box can it potentially contain a list of primitives and primitives; otherwise, it is definitely a blank block and does not require processing. This application determines whether the current block is a blank block by judging whether the current block is within the bounding box corresponding to valid primitives.

[0063] In the above embodiments, to cope with multi-core processing, the effective block calculation process 440 can determine whether the current block is configured to be executed on the current core (GPU core). In some possible implementations, the virtual coordinates of the current block can be used to determine whether the current block is configured to be executed on the current core.

[0064] For example, the range of virtual coordinates to be processed by different cores can be preset, and then the current block can be used to determine whether it is configured to be executed on the current core. If the current block is configured to be executed on the current core, it is considered to be valid data and is output to the next processing procedure, such as data reading procedure 450; otherwise, it is considered to be invalid data and is discarded directly.

[0065] Figure 5 This is a schematic diagram illustrating an example of the valid block calculation process 440 and the blank block checking process 430. (See diagram for example.) Figure 5 As shown, in this example, the number of multi-core effective block computation pipelines 510 is three (L0, L1, and L2 respectively), and the maximum value of the circular cache pointer is N.

[0066] In the example above, one of the three pipelines 510 can be selected to process the input block according to the configuration. For example, the virtual coordinates of the input block can be used to determine whether the current block should be executed by the local core. If so, the output is sent to the subsequent allocation indicator flag process 520 to allocate an indicator flag to the current block, and at the same time, it is sent to the read command address calculation process 530 to calculate the read command address for the current block. If not, the current block is discarded and no processing is performed.

[0067] For example, if the block to be processed by pipeline L0 is selected according to the configuration, the result of pipeline L0 is used as the output and output to allocation indicator flag process 520 and read command address calculation process 530.

[0068] In the example above, when assigning indicator markers, if the circular cache pointer corresponding to the current block points to zero, the virtual coordinates of the current block need to be recorded, and the read command address corresponding to the current block needs to be calculated according to the virtual coordinates. At the same time, it is determined whether the current block is within the bounding box corresponding to a valid primitive. If it is within the bounding box, it is recorded as valid (1-active), that is, the current block is a non-blank block; otherwise, it is invalid (0-negetive), that is, the current block is a blank block. If the circular cache pointer corresponding to the current block points to a value other than zero or the maximum value, it is only necessary to determine whether the current block is within the bounding box corresponding to a valid primitive. If the circular cache pointer corresponding to the current block points to the maximum value, in addition to determining whether the current block is within the bounding box corresponding to a valid primitive, the circular cache pointer also needs to be set to 0.

[0069] Based on the output of the multi-core valid block computation pipeline 510 and the results of the allocation indicator flag process 520, it can be determined whether the current block is valid. Figure 5 In the data selection process 540 shown, valid blocks are selected, and their corresponding command information (e.g., read command address) and block information (e.g., virtual coordinates) are stored in their respective caches, namely command information cache 550 and block information cache 560. Then, the read command output from command information cache 550 is output to the downstream. In addition, after the data corresponding to the block is returned, the data is recombined with the block information stored in the block information cache 560 and output.

[0070] In the above embodiments, the data reading process 450 can be based on the specific information of the valid block (e.g., virtual coordinates, read command address, etc., from the above). Figure 5 (The block information cache shown) generates a read command.

[0071] In some possible implementations, the data reading process 450 can be triggered to generate a read command when the loop pointer points to the maximum value or when the current block touches the boundary of the bounding box corresponding to the valid primitive (that is, when the virtual coordinates of the current block overlap with the boundary of the bounding box corresponding to the valid primitive).

[0072] In the above embodiments, in some possible implementations, the generation of the read command needs to meet the following conditions:

[0073] Condition 1: There are enough blocks to support reading, that is, the number of valid blocks is greater than or equal to a certain threshold, such as greater than or equal to 1, that is, as long as there is one valid block in the current loop.

[0074] by Figure 5Taking a maximum value of 7 for the circular cache pointer as an example, if all 8 blocks corresponding to indicator flags 0 to 7 are determined to be invalid, no read command is generated; if all 8 blocks corresponding to indicator flags 4 to 7 are invalid, a read command is generated, and the number of read command bursts is 0; if all 8 blocks corresponding to indicator flags 0 to 7 are invalid, a read command is generated, and the number of read command bursts is 1.

[0075] Condition 2: The read command address calculation is complete. That is, the virtual coordinates of the block with the circular cache pointer of 0 have been calculated, and the final address feedback has been obtained.

[0076] In the above embodiment, when a read command is triggered, the virtual coordinates of the block corresponding to the circular cache pointer being 0, the read command address, and the full allocation indicator flag can be recorded and written into the cache. Thus, when the data corresponding to the read command is returned, the actual block data can be generated based on the recorded block coordinates and indicator flags.

[0077] In the above embodiment, the data output process 460 can wait for the read data corresponding to the read command generated by the data reading process 450 to return, and then combine the content of the returned data and the information of the block to output downstream.

[0078] For example, when data is returned, based on the number of returned blocks, the data output process 460 can recover the virtual coordinates of the next block from the virtual coordinates of the first block using an inverted "N" shape; based on the assigned indicator flags, it determines whether the block corresponding to the current data is valid; after assembling all the generated block information, it sends it to the next level for further judgment.

[0079] The above embodiments are merely illustrative examples of embodiments of this application, but this application is not limited thereto, and appropriate modifications can be made based on the above embodiments. For example, the above embodiments can be used alone, or one or more of the above embodiments can be combined.

[0080] According to the embodiments of this application, by introducing valid block checks, invalid blocks and invalid data are screened out in advance, avoiding the sending of invalid read data commands and improving system performance and bus bandwidth utilization.

[0081] Second aspect of the embodiments

[0082] This application provides a data reading device. In this embodiment, the principle by which the data reading device solves the problem is the same as the data reading method in the first aspect embodiment; the similarities will not be repeated.

[0083] Figure 6 This is a schematic diagram of a data reading device 600 according to an embodiment of this application, as shown below. Figure 6As shown, the data reading device 600 includes:

[0084] The partitioning unit 610 divides the screen into multiple tiles based on the tile partitioning rules of each core from the multi-core system and the number of screen pixels.

[0085] The assignment unit 620 assigns virtual coordinates to each block to determine the virtual coordinates and read command address of the block;

[0086] The determining unit 630 performs block verification on the block based on the virtual coordinates of the block to determine the valid block among the plurality of blocks;

[0087] The generation unit 640 generates a read command based on the read command address of the valid block.

[0088] The function of the above assignment unit 620 can be achieved through Figure 4 The virtual coordinate assignment process 420 shown is implemented, and the function of the aforementioned determining unit 630 can be achieved through... Figure 4 The blank block checking process 430 and valid block calculation process 440 shown are implemented, and the function of the above-mentioned generation unit 640 can be achieved through... Figure 4 The data reading process 450 shown is implemented here. The relevant content of the first aspect embodiment is incorporated here and will not be repeated here.

[0089] The above embodiments are merely illustrative examples of embodiments of this application, but this application is not limited thereto, and appropriate modifications can be made based on the above embodiments. For example, the above embodiments can be used alone, or one or more of the above embodiments can be combined.

[0090] It is worth noting that the above description only covers the components or modules relevant to this application, but this application is not limited thereto. The data reading device 600 of this application embodiment may also include other components or modules, and for details regarding these components or modules, please refer to related technologies.

[0091] In addition, for the sake of simplicity, Figure 6 The diagram only exemplifies the connection relationships or signal flow between various components or modules; however, those skilled in the art should understand that various related technologies, such as bus connections, can be employed. The aforementioned components or modules can be implemented using hardware facilities such as processors, memory, transmitters, and receivers; this application does not impose any limitations on this.

[0092] According to the embodiments of this application, by introducing valid block checks, invalid blocks and invalid data are screened out in advance, avoiding the sending of invalid read data commands and improving system performance and bus bandwidth utilization.

[0093] Embodiments of this application also provide a computer device, including a memory, a processor, and a computer program stored in the memory and executable on the processor, wherein the processor executes the computer program to implement the method of the first aspect embodiment.

[0094] Embodiments of this application also provide a computer-readable storage medium storing a computer program that, when executed by a processor, implements the method of the first aspect of the embodiments.

[0095] Embodiments of this application also provide a computer program product, the computer program product including a computer program that, when executed by a processor, implements the method of the embodiment of the first aspect.

[0096] Those skilled in the art will understand that embodiments of this application can be provided as methods, systems, or computer program products. Therefore, this application can take the form of a completely hardware embodiment, a completely software embodiment, or an embodiment combining software and hardware aspects. Furthermore, this application can take the form of a computer program product embodied on one or more computer-usable storage media (including but not limited to disk storage, CD-ROM, optical storage, etc.) containing computer-usable program code.

[0097] This application is described with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of this application. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a general-purpose computer, special-purpose computer, embedded processor, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, generate instructions for implementing the flowchart... Figure 1 One or more processes and / or boxes Figure 1 A device that provides the functions specified in one or more boxes.

[0098] These computer program instructions may also be stored in a computer-readable storage medium that can direct a computer or other programmable data processing device to function in a particular manner, such that the instructions stored in the computer-readable storage medium produce an article of manufacture including instruction means, which are implemented in a process Figure 1 One or more processes and / or boxes Figure 1 The function specified in one or more boxes.

[0099] These computer program instructions may also be loaded onto a computer or other programmable data processing equipment to cause a series of operational steps to be performed on the computer or other programmable equipment to produce a computer-implemented process, thereby providing instructions that execute on the computer or other programmable equipment for implementing the process. Figure 1 One or more processes and / or boxes Figure 1 The steps of the function specified in one or more boxes.

[0100] The specific embodiments described above further illustrate the purpose, technical solution, and beneficial effects of this application. It should be understood that the above descriptions are merely specific embodiments of this application and are not intended to limit the scope of protection of this application. Any modifications, equivalent substitutions, improvements, etc., made within the spirit and principles of this application should be included within the scope of protection of this application.

Claims

1. A data reading method, characterized in that, The method includes: The screen is divided into multiple blocks based on the block partitioning rules of each core from the multi-core system and the number of screen pixels; Assign virtual coordinates to each block to determine the virtual coordinates and read command address of the block; The block is validated based on its virtual coordinates to determine the valid block among the plurality of blocks; A read command is generated based on the read command address of the valid block.

2. The method according to claim 1, characterized in that, The step of performing block verification based on the virtual coordinates of the block to determine the valid block among the plurality of blocks includes: Based on the virtual coordinates of the block, perform effective block calculation on the block to determine whether the block is configured to be executed on the current core; Based on the virtual coordinates of the block, a blank block check is performed on the block to determine whether the block is within the range of valid primitives; If the block is configured to execute on the current core and is within the range of valid primitives, then the block is determined to be a valid block.

3. The method according to claim 2, characterized in that, Based on the virtual coordinates of the block, perform effective block calculation on the block to determine whether the block is configured to execute on the current core, including: Select one of several preset production lines based on the configuration; Using the selected pipeline, perform effective block calculations on the current block to determine whether the current block should be executed on the current core.

4. The method according to claim 2, characterized in that, Based on the virtual coordinates of the block, a blank block check is performed on the block to determine whether the block is within the range of valid primitives, including: Determine whether the current block is within the bounding box range corresponding to the valid primitive; If the determination is yes, then the current block is determined to be within the range of valid graphic elements; otherwise, the current block is determined to be outside the range of valid graphic elements.

5. The method according to claim 4, characterized in that, Determining whether the current block is within the bounding box of the valid primitive includes: Assign an indicator flag to the current block and calculate the read command address for the current block; When assigning the indicator flag to the current block: If the circular cache pointer corresponding to the current block points to zero, then the virtual coordinates of the current block are recorded, and the read command address corresponding to the current block is calculated according to the virtual coordinates of the current block. Then, it is determined whether the current block is within the bounding box range corresponding to the valid primitive. If the circular cache pointer corresponding to the current block points to a value other than zero or the maximum value, then it is only determined whether the current block is within the bounding box range corresponding to the valid primitive. If the circular cache pointer corresponding to the current block points to the maximum value, then determine whether the current block is outside the bounding box range corresponding to the valid primitive, and set the circular cache pointer to 0.

6. The method according to claim 5, characterized in that, The method further includes: When the circular cache pointer corresponding to the current block points to the maximum value or the virtual coordinates of the current block overlap with the boundary of the bounding box corresponding to the valid primitive, if the number of valid blocks is not zero and the calculation of the read command address is completed, the generation of the read command is triggered.

7. The method according to claim 6, characterized in that, When generating the read command, the virtual coordinates of the block corresponding to the zero pointer of the circular cache, the address of the read command, and all allocated indicator markers are recorded. When the data corresponding to the read command is returned, block data is generated based on the recorded virtual coordinates of the block, the read command address, and the assigned indicator marker.

8. A data reading device, characterized in that, The device includes: The partitioning unit divides the screen into multiple blocks based on the block partitioning rules of each core from the multi-core system and the number of screen pixels; The assignment unit assigns virtual coordinates to each block, determining the virtual coordinates and read command address information of the block; The determining unit performs block verification on the block based on the virtual coordinates of the block, and determines the valid block among the plurality of blocks; The generation unit generates a read command based on the read command address of the valid block.

9. A computer device, comprising a memory, a processor, and a computer program stored in the memory and executable on the processor, characterized in that, When the processor executes the computer program, it implements the method of any one of claims 1 to 7.

10. A computer-readable storage medium, characterized in that, The computer-readable storage medium stores a computer program that, when executed by a processor, implements the method described in any one of claims 1 to 7.