An operation method of a TLM device of a GPU primitive dispatching module based on a SysML view
Through the TLM device of the GPU primitive dispatch module based on the SysML view, the problem of my country's weak GPU development capabilities is solved, and efficient verification of the primitive dispatch hardware structure and reliable modeling of the system architecture are achieved, which is suitable for early system-level circuits. Design development.
Patent Information
- Application Number
- CN202011542847.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2020-12-24
- Publication Date
- 2025-01-21
- Estimated Expiration
- 2040-12-24
AI Technical Summary
my country's GPU development capabilities are weak, which leads to the inability to meet security, reliability and guarantee requirements in the military field, limiting the independent development and independent development of display systems.
The TLM device using the GPU primitive dispatch module based on the SysML view realizes efficient verification of the primitive dispatch hardware structure and the reliability of the system architecture through the API service and Drive process between the PDU Block module, PDU_CORE Block module and PDU SC_CTHREAD module. Modeling.
This method can help developers better understand the system architecture, establish a more reliable and complete system model, and quickly evaluate the architecture of large-scale hardware systems, and is suitable for early system-level design and development of circuits.
Smart Images

Figure CN112581586B_ABST
Abstract
Description
Technical Field
[0001] The present invention belongs to the technical field of computer hardware modeling, and relates to a TLM device of a GPU primitive dispatching module, and in particular to an operation method of the TLM device of a GPU primitive dispatching module based on a SysML view. Background Art
[0002] With the continuous increase of graphical applications, the early solutions that relied solely on CPU for graphics drawing have been unable to meet the graphics processing needs of the growing performance and technology, and the Graphics Processing Unit (GPU) came into being. GPU uses a large number of computing units and has large-scale parallel computing capabilities, providing a good operating platform for graphics processing and general parallel computing. At present, my country's GPU research and development capabilities are weak, and a large number of commercial GPU chips imported from abroad are used in display control systems in various fields. Especially in the military field, imported commercial GPU chips from abroad have hidden dangers in terms of security, reliability, and security, and cannot meet the needs of military environments; the above problems have seriously restricted the independent research and development of my country's display systems, and it is urgent to break through the key technologies of graphics processors and develop graphics processor chips.
[0003] SysML (System Modeling Language), also known as system modeling language, is a general graphical modeling language for describing, analyzing, designing and verifying complex systems, providing modeling and visualization support for software development. SysML can help designers shorten design time, reduce improvement costs, and optimize the hardware and software segmentation.
[0004] Modeling primitive dispatch through the hardware TLM model for GPU primitive dispatch module based on SysML can help developers better understand the system architecture, build a more reliable and complete system model, and more efficiently verify the feasibility of the primitive dispatch hardware structure. Summary of the invention
[0005] Based on the problems existing in the background technology, the present invention provides an operation method of a TLM device of a GPU primitive dispatching module based on a SysML view, which can help developers better understand the system architecture, establish a more reliable and complete system model, and more efficiently verify the feasibility of the back-face culling hardware structure.
[0006] The technical solution of the present invention is:
[0007] A TLM device of a GPU primitive dispatching module based on a SysML view, which is special in that:
[0008] Including PDU Block module, PDU_CORE Block module, PDU SC_CTHREAD module;
[0009] The PDU Block module includes a pin-port port; the pin-port port includes a geu2sgu_bcu_busy port;
[0010] The PDU Block module also includes a number of socket channels for mutual communication; the socket channels include pdu2fifo06_vertex_data_initiator_socket channel,
[0011] pdu2fifo16_vertex_data_initiator_socket channel,
[0012] pdu2gp_bitfiled_initiator_socket channel,
[0013] pdu2fifo17_vertex_data_initiator_socket channel,
[0014] pdu2fifo07_vertex_data_initiator_socket channel;
[0015] The above PDU Block module, PDU_CORE Block module, and PDU SC_CTHREAD module provide API services, as follows:
[0016] API::get_data_from_fifo06()、
[0017] API::get_data_to_fifo16(),
[0018] API::send_data_to_fifo07(),
[0019] API::send_data_to_fifo17(),
[0020] API::access_ip_bitfiled(),
[0021] api::get_bcu_busy_status(),
[0022] api::get_exception_status()、
[0023] api::send_funcode_to_geu();
[0024] A Drive process is also provided between the above-mentioned PDU Block module, PDU_CORE Block module, and PDU SC_CTHREAD module, as follows:
[0025] PDU_process_cthread;
[0026] The meaning of the above API functions is: if the parent class wants to access the function method in the child class, it needs to implement the pure virtual function in the parent class, declare and instantiate the API function in the child class; the above pure virtual function is the function name of the corresponding API;
[0027] The meaning of the above API function is: the subclass can directly inherit the API function in the parent class, and can directly call this API function in the subclass.
[0028] Preferably, the socket channel is a bidirectional channel that can perform bidirectional data transmission.
[0029] As a preferred embodiment: the pdu2fifo06_vertex_data_initiator_socket obtains the vertex data information from the BCU module, and sends it to the rasterization module (PRU) fifo through the primitive blanking processing of the BCU module by pdu2fifo07_vertex_data_initiator_socket;
[0030] The above pdu2fifo16_vertex_data_initiator_socket obtains the vertex data information from the BCU module, passes through the primitive blanking processing of the BCU module, and is sent to the pdu2fifo17_vertex_data_initiator_socket
[0031] Rasterizer unit (PRU) fifo;
[0032] The above pdu2gp_bitfiled_initiator_socket channel is used by the PDU_CORE module to access the register data information in the GP, and the accsee_gp_bitfield() function is called during access.
[0033] The above API::get_simple_complex_flag() and API::get_shadingstate_flag() are used to obtain different flag signals;
[0034] The monitor process of the above-mentioned Geu2sgu_pdu_busy_manage_thread monitors the geu2sgu_pdu_busy signal, and the PDU_CORE module calls api::get_pdu_busy_status() to obtain the signal.
[0035] An operation method of a TLM device of a GPU primitive dispatching module based on a SysML view is characterized in that it comprises the following steps:
[0036] 1) Initialize variables, set FIFO to 0, and obtain parameters;
[0037] 2) Determine FIFO
[0038] When FIFO is not empty, the value of fifoFlag is set to 1, geu2sgu_pdu_busy is set to 1, and the execution continues to get data from fifo_06;
[0039] When FIFO is empty, it continues to determine whether fifo1 is empty. If fifo1 is empty, geu2sgu_pdu_busy is set to 0, and then the loop continues to determine whether fifo0 is empty. If fifo1 is not empty, the value of fifoFlag is set to 0, geu2sgu_pdu_busy is set to 1, and the execution continues to get data from fifo_16.
[0040] As a preferred embodiment: the above step 2) also needs to determine the data type;
[0041] When the data type is prim Triangle package, the primitive triangle is split into two parts, and then the position relationship between the triangle primitive and the partition is determined and sent.
[0042] When the data type is prim Line package, the screen splitting of the primitive line is performed, and then the position relationship between the line primitive and the partition is determined and sent;
[0043] When the data type is prim Point packet, the screen splitting process is performed, and then the position relationship between the point element and the partition is determined and sent;
[0044] After the data type is determined and the corresponding branch processing is completed, the value of fifoFlag is determined. When the value of fifoFlag is 0, the program returns to the operation of determining whether fifo0 is empty and runs in a loop. When the value of fifoFlag is not 0, the program returns to the operation of determining whether fifo1 is empty and runs in a loop.
[0045] The present invention has the following advantages:
[0046] The present invention provides an operation method of a TLM device of a GPU primitive dispatching module based on a SysML view. The hardware view device of the GPU primitive dispatching of the SysML includes a SysML basic structure diagram and a SysML basic flow chart. The SysML basic structure diagram includes a process, a port and an interface, and the SysML basic flow chart describes the GPU primitive dispatching process. The method adopted by the present invention is to use SYSML for hardware view modeling, which can avoid cumbersome circuit signal design, quickly evaluate the architecture of large-scale hardware systems, and is suitable for early system-level design and development of circuits. BRIEF DESCRIPTION OF THE DRAWINGS
[0047] Figure 1 A TLM device structure diagram of a GPU primitive dispatching module based on a SysML view;
[0048] Among them, 1-PDU Block module, 2-PDU_CORE Block module, 3-PDU SC_CTHREAD module. DETAILED DESCRIPTION
[0049] The technical solution of the present invention is described clearly and completely below in conjunction with the accompanying drawings and specific embodiments. Obviously, the described embodiments are only part of the embodiments of the present invention, not all of them. Based on the embodiments of the present invention, all other embodiments obtained by those skilled in the art without creative work are within the protection scope of the present invention.
[0050] See also Figure 1 , a TLM device of GPU primitive dispatching module based on SysML view, which is special in that:
[0051] It includes PDU Block module 1, PDU_CORE Block module 2, and PDU SC_CTHREAD module 3;
[0052] The PDU Block module includes a pin-port port; the pin-port port includes a geu2sgu_bcu_busy port;
[0053] The PDU Block module also includes a number of socket channels for mutual communication; the socket channels include pdu2fifo06_vertex_data_initiator_socket channel,
[0054] pdu2fifo16_vertex_data_initiator_socket channel,
[0055] pdu2gp_bitfiled_initiator_socket channel,
[0056] pdu2fifo17_vertex_data_initiator_socket channel,
[0057] pdu2fifo07_vertex_data_initiator_socket channel;
[0058] The above PDU Block module, PDU_CORE Block module, and PDU SC_CTHREAD module provide API services, as follows:
[0059] API::get_data_from_fifo06()、
[0060] API::get_data_to_fifo16(),
[0061] API::send_data_to_fifo07(),
[0062] API::send_data_to_fifo17(),
[0063] API::access_ip_bitfiled(),
[0064] api::get_bcu_busy_status(),
[0065] api::get_exception_status()、
[0066] api::send_funcode_to_geu();
[0067] A Drive process is also provided between the above-mentioned PDU Block module, PDU_CORE Block module, and PDU SC_CTHREAD module, as follows:
[0068] PDU_process_cthread;
[0069] The meaning of the above API functions is: if the parent class wants to access the function method in the child class, it needs to implement the pure virtual function in the parent class, declare and instantiate the API function in the child class; the above pure virtual function is the function name of the corresponding API;
[0070] The meaning of the above API function is: the subclass can directly inherit the API function in the parent class, and can directly call this API function in the subclass.
[0071] Preferably, the socket channel is a bidirectional channel that can perform bidirectional data transmission.
[0072] As a preferred embodiment: the pdu2fifo06_vertex_data_initiator_socket obtains the vertex data information from the BCU module, and sends it to the rasterization module (PRU) fifo through the primitive blanking processing of the BCU module by pdu2fifo07_vertex_data_initiator_socket;
[0073] The above pdu2fifo16_vertex_data_initiator_socket obtains the vertex data information from the BCU module, passes through the primitive blanking processing of the BCU module, and is sent to the pdu2fifo17_vertex_data_initiator_socket
[0074] Rasterizer unit (PRU) fifo;
[0075] The above pdu2gp_bitfiled_initiator_socket channel is used by the PDU_CORE module to access the register data information in the GP, and the accsee_gp_bitfield() function is called during access.
[0076] The above API::get_simple_complex_flag() and API::get_shadingstate_flag() are used to obtain different flag signals;
[0077] The monitor process of the above-mentioned Geu2sgu_pdu_busy_manage_thread monitors the geu2sgu_pdu_busy signal, and the PDU_CORE module calls api::get_pdu_busy_status() to obtain the signal.
[0078] An operation method of a TLM device of a GPU primitive dispatching module based on a SysML view is characterized in that it comprises the following steps:
[0079] 1) Initialize variables, set FIFO to 0, and obtain parameters;
[0080] 2) Determine FIFO
[0081] When FIFO is not empty, the value of fifoFlag is set to 1, geu2sgu_pdu_busy is set to 1, and the execution continues to get data from fifo_06;
[0082] When FIFO is empty, it continues to determine whether fifo1 is empty. If fifo1 is empty, geu2sgu_pdu_busy is set to 0, and then the loop continues to determine whether fifo0 is empty. If fifo1 is not empty, the value of fifoFlag is set to 0, geu2sgu_pdu_busy is set to 1, and the execution continues to get data from fifo_16.
[0083] As a preferred embodiment: the above step 2) also needs to determine the data type;
[0084] When the data type is prim Triangle package, the primitive triangle is split into two parts, and then the position relationship between the triangle primitive and the partition is determined and sent.
[0085] When the data type is prim Line package, the screen splitting of the primitive line is performed, and then the position relationship between the line primitive and the partition is determined and sent;
[0086] When the data type is prim Point packet, the screen splitting process is performed, and then the position relationship between the point element and the partition is determined and sent;
[0087] After the data type is determined and the corresponding branch processing is completed, the value of fifoFlag is determined. When the value of fifoFlag is 0, the program returns to the operation of determining whether fifo0 is empty and runs in a loop. When the value of fifoFlag is not 0, the program returns to the operation of determining whether fifo1 is empty and runs in a loop.
[0088] Finally, it should be noted that the above embodiments are only used to illustrate the technical solutions of the present invention, rather than to limit it. Although the present invention has been described in detail with reference to the aforementioned embodiments, those skilled in the art should understand that the technical solutions described in the aforementioned embodiments may still be modified, or some of the technical features thereof may be replaced by equivalents. However, these modifications or replacements do not deviate the essence of the corresponding technical solutions from the spirit and scope of the technical solutions of the embodiments of the present invention.
Claims
1. A TLM device for a GPU primitive dispatching module based on a SysML view, characterized in that: Including PDU Block module, PDU _CORE Block module, PDU SC_CTHREAD module; The PDU Block module includes a pin-port port; the pin-port port includes a geu2sgu_bcu_busy port; The PDU Block module also includes a number of socket channels for mutual communication; the socket channels include pdu2fifo06_vertex_data_initiator_socket channels, pdu2fifo16_vertex_data_initiator_socket channel, pdu2gp_bitfiled_initiator_socket channel, pdu2fifo17_vertex_data_initiator_socket channel, pdu2fifo07_vertex_data_initiator_socket channel; The PDU Block module, PDU _CORE Block module, and PDU SC_CTHREAD module provide API services, as follows: API::get_data_from_fifo06(), API::get_data_to_fifo16(), API::send_data_to_fifo07(), API::send_data_to_fifo17(), API::access_ip_bitfiled(), api::get_bcu_busy_status(), api::get_exception_status()、 api::send_funcode_to_geu(); A Drive process is also provided between the PDU Block module, the PDU _CORE Block module, and the PDU SC_CTHREAD module, as follows: PDU_process_cthread; The API function means: if the parent class wants to access the function method in the child class, it needs to implement the pure virtual function in the parent class and declare and instantiate the API function in the child class; the pure virtual function is the function name of the corresponding API; The API function means that the subclass can directly inherit the API function in the parent class, and the subclass can directly call this API function; The socket channel is a bidirectional channel that can perform bidirectional data transmission; The pdu2fifo06_vertex_data_initiator_socket obtains the vertex data information from the BCU module, and sends it to the rasterization module fifo through the primitive blanking processing of the BCU module by pdu2fifo07_vertex_data_initiator_socket; The pdu2fifo16_vertex_data_initiator_socket obtains the vertex data information from the BCU module, and sends it to the rasterization module fifo through the primitive blanking processing of the BCU module by pdu2fifo17_vertex_data_initiator_socket; The pdu2gp_bitfiled_initiator_socket channel is used by the PDU_CORE module to access the register data information in the GP, and the accsee_gp_bitfield() function is called during access; API::get_simple_complex_flag() and API::get_shadingstate_flag() are used to obtain different flag signals; The monitor process of geu2sgu_pdu_busy_manage_thread monitors the geu2sgu_pdu_busy signal, and the PDU_CORE module calls api::get_pdu_busy_status() to obtain the signal.
2. The method for operating the TLM device of the GPU primitive dispatching module based on the SysML view according to claim 1, characterized in that: The following steps are involved: 1) Initialize variables, set FIFO to 0, and obtain parameters; 2) Determine FIFO When FIFO is not empty, the value of fifoFlag is set to 1, geu2sgu_pdu_busy is set to 1, and the execution continues to get data from fifo_06; When FIFO is empty, it continues to determine whether fifo1 is empty. If fifo1 is empty, geu2sgu_pdu_busy is set to 0, and then the loop continues to determine whether fifo0 is empty. If fifo1 is not empty, the value of fifoFlag is set to 0, geu2sgu_pdu_busy is set to 1, and the execution continues to get data from fifo_16.
3. The method for operating a TLM device of a GPU primitive dispatching module based on a SysML view according to claim 2, characterized in that: The step 2) also requires determining the data type; When the data type is prim Triangle package, the primitive triangle is split into two parts, and then the position relationship between the triangle primitive and the partition is determined and sent. When the data type is prim Line package, the screen splitting of the primitive line is performed, and then the position relationship between the line primitive and the partition is determined and sent; When the data type is prim Point packet, the screen splitting process is performed, and then the position relationship between the point element and the partition is determined and sent; After the data type is determined and the corresponding branch processing is completed, the value of fifoFlag is determined. When the value of fifoFlag is 0, the program returns to the operation of determining whether fifo0 is empty and runs in a loop. When the value of fifoFlag is not 0, the program returns to the operation of determining whether fifo1 is empty and runs in a loop.
Citation Information
Patent Citations
GPU vertex coloring task scheduling method based on SystemC
CN109669769A
A GPU chip element coloring task scheduling method based on SystemC
CN109727186A