WO2013015569A2 - 시뮬레이션 장치 및 그의 시뮬레이션 방법 - Google Patents

시뮬레이션 장치 및 그의 시뮬레이션 방법 Download PDF

Info

Publication number
WO2013015569A2
WO2013015569A2 PCT/KR2012/005799 KR2012005799W WO2013015569A2 WO 2013015569 A2 WO2013015569 A2 WO 2013015569A2 KR 2012005799 W KR2012005799 W KR 2012005799W WO 2013015569 A2 WO2013015569 A2 WO 2013015569A2
Authority
WO
WIPO (PCT)
Prior art keywords
simulation
block
communication
calculation
node
Prior art date
Application number
PCT/KR2012/005799
Other languages
English (en)
French (fr)
Other versions
WO2013015569A3 (ko
Inventor
김경훈
김중백
이승욱
Original Assignee
삼성전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자 주식회사 filed Critical 삼성전자 주식회사
Priority to JP2014521563A priority Critical patent/JP6072028B2/ja
Priority to US14/233,610 priority patent/US10162913B2/en
Priority to EP12818145.0A priority patent/EP2735967A4/en
Priority to CN201280036428.0A priority patent/CN103748557B/zh
Publication of WO2013015569A2 publication Critical patent/WO2013015569A2/ko
Publication of WO2013015569A3 publication Critical patent/WO2013015569A3/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3457Performance evaluation by simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/25Design optimisation, verification or simulation using particle-based methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Definitions

  • the present invention relates to a simulation method and apparatus for quickly and accurately measuring and predicting system performance in advance. More specifically, the present invention provides a parallel simulation method for extracting computational and communication operations that are dependent on each other, grouping them into a plurality of groups, and processing each group in parallel, and between the plurality of nodes. It introduces a virtual shadow node and provides a distributed simulation method and apparatus for each that pre-processes according to the type of address area of a task requested by an arbitrary node.
  • Simulation for structure and performance analysis is essential for the production of smartphones, TVs, home appliances, etc. Simulation allows you to configure an optimized system without sacrificing performance without sacrificing performance. In other words, simulation techniques for measuring and predicting system performance in advance are being used to analyze and evaluate the system and are of great importance.
  • the present invention has been made to solve the above problems, and an object thereof is to provide a simulation method and apparatus for quickly and accurately measuring and predicting system performance in advance.
  • the present invention provides a parallel simulation method and apparatus for extracting computational and communication operations that are dependent on each other, grouping them into a plurality of groups, and processing each group in parallel. It is done.
  • the present invention also provides a distributed simulation method and apparatus for introducing a virtual shadow node between a plurality of nodes and pre-processing according to the type of address area of a task requested by an arbitrary node. It is a second object to do.
  • a method of performing a simulation using a plurality of blocks of the present invention includes a computational calculation for performing block-specific functions and a data exchange between different blocks.
  • the step of dividing into a communication operation (communication) the grouping step of grouping the interdependent calculation operation and the communication operation, and the operation included in each group according to whether or not to solve the dependency between the calculation operation and the communication operation using the block It characterized in that it comprises a simulation performing step to perform.
  • the apparatus for performing a simulation using a plurality of blocks of the present invention includes a structure storage unit for storing at least one group constituting the simulation, an execution unit including a plurality of blocks for performing the simulation and the simulation Partitioning into computational computations that perform block-specific functions and communications computations that perform data exchange between different blocks, grouping interdependent computational and communications operations together, and computing the computational and communications operations And a control unit for controlling to perform an operation included in each group using the block according to whether or not the dependency between the two is resolved.
  • a method of performing a simulation in a distributed system in which at least two or more nodes including a plurality of blocks of the present invention are interconnected may include a setting step of setting a shadow block to each node, wherein the shadow block is random. And a receiving step of receiving any operation request transmitted from a node of the node to another node, and the shadow block comprises a preprocessing step of preprocessing the requested operation.
  • At least two nodes comprising a plurality of blocks, each of the nodes comprising a shadow block receiving any operation request sent from one node to another node and preprocessing the requested operation. It features.
  • the system performance can be accurately evaluated at the same time without sacrificing the simulation speed. Accordingly, the simulation method of the present invention can be applied to SoC (System on Chip), a terminal, and other embedded devices to produce optimized products. In addition, rapid and accurate simulation can be used for various analysis of various situations, contributing to improved product performance.
  • SoC System on Chip
  • FIG. 1 shows a relationship between system simulation variables (accuracy, simulation speed, parallel processing) according to the prior art and embodiments of the present invention.
  • FIG. 2 illustrates an example of a parallel processing method and a parallel system for processing a simulation in parallel, and a problem thereof.
  • 3 is a diagram illustrating an example of configuring a distributed system by clustering several nodes.
  • FIG. 4 shows a system block diagram according to an embodiment of the present invention for driving a simulation.
  • FIG. 5 is a flow chart illustrating a process of grouping simulations according to dependencies to perform parallel simulations in accordance with a first embodiment of the present invention.
  • FIG. 6 is a diagram illustrating a process of grouping according to dependencies when performing a simulation through a diagram of a calculation operation and a communication operation.
  • FIG. 7 is a flowchart illustrating a process of processing a computation operation and a communication operation included in each simulation group in parallel, according to the first embodiment of the present invention.
  • FIG. 8 is a diagram illustrating a process of parallel processing arithmetic operations and communication operations included in a plurality of groups included in a simulation through a diagram of arithmetic operations and communication operations.
  • FIG. 9 is a block diagram showing an internal structure of a simulation apparatus according to the first embodiment of the present invention.
  • FIG. 10 is a diagram showing a process in which a calculation operation and a communication operation are executed sequentially when a simulation is performed according to the first embodiment of the present invention.
  • FIG. 11 is a diagram illustrating a simulation optimization method in a distributed system according to a second embodiment of the present invention.
  • FIG. 12 is a flowchart showing a simulation operation procedure according to the second embodiment of the present invention.
  • FIG. 13 illustrates a concept of performing communication operations between nodes using shadow blocks.
  • FIG. 14 is a graph showing the results of improved simulation performance in accordance with an embodiment of the present invention.
  • a device for performing a simulation may be referred to as a host, and the host may include a plurality of blocks for performing an arbitrary operation or a predetermined operation.
  • the block may be replaced with a term such as master or slave.
  • a simulation is performed using a computer or the like as a host.
  • FIG. 1 is a diagram showing the relationship between system simulation variables (accuracy, simulation speed, parallel processing) according to the prior art and embodiments of the present invention.
  • Embodiments of the present invention propose a method that can perform a simulation quickly without sacrificing simulation accuracy through parallel processing.
  • FIG. 2 is a diagram illustrating an example of a parallel processing method and a parallel system for processing a simulation in parallel, and a problem thereof.
  • the master and the processing block as shown in FIG.
  • the master and the processing block as shown in FIG.
  • the master or the slave should wait for arbitrary task processing. For example, six computational computations in FIG. 2 cannot be performed before communication communication of b is performed, so that the slave does not perform any operation until communication of b is performed from the master. You must wait.
  • 3 is a diagram illustrating an example of configuring a distributed system by clustering several nodes.
  • the simulation speed is considerably slowed down due to the physical link characteristics connecting the first node and the second node. Can be.
  • the present invention proposes a method for solving the problems that occur when performing the simulation in the parallel system and distributed system.
  • Each block (core, memory, bus, etc.) of an embedded system may be classified into computational computation and communication computation.
  • a calculation operation means performing a unique function of a specific block
  • a communication operation means exchanging data between different blocks. For example, in the case of a memory, receiving an address from the outside is a communication operation, and executing an internal logic to transmit data of the address to the outside is a calculation operation.
  • the first embodiment describes a simulation optimization method in a parallel system using multiple cores.
  • the second embodiment a simulation optimization method in a distributed system is described.
  • an embodiment of the present invention may be performed through the simulation system configuration diagram shown in FIG. 4.
  • a host performing a simulation is a distributed system in which at least two nodes such as a first node and a second node are connected by a link.
  • the link may comprise a wire link and / or a wireless link.
  • each node has a parallel computing environment consisting of at least two cores, that is, multi-cores. And arbitrary blocks located in each node may be mapped to the physical functional blocks constituting the host.
  • Each core and node has a platform that simulates it, and the platform is mapped to each core.
  • Each block in the platform communicates with each other and the simulation proceeds.
  • the simulation in the same node is referred to as parallel simulation, and the simulation between different nodes will be referred to as distributed simulation.
  • a parallel simulation method that includes the steps of independently and simultaneously processing communication operations.
  • FIG. 5 is a flowchart illustrating a process of grouping simulations according to dependencies in order to perform parallel simulations according to the first embodiment of the present invention.
  • FIG. 6 is a diagram illustrating a process of grouping according to dependencies in a simulation, through a calculation operation and a communication operation.
  • the upper line means a calculation operation performed by a master
  • the lower line means a calculation operation performed by a slave
  • the line orthogonal to the upper line and the lower line means a communication operation occurring between the master and the slave.
  • the simulation apparatus is assigned an arbitrary simulation operation.
  • the simulation apparatus extracts a communication operation to be exchanged between the master and the slave in the simulation operation. This is the operation shown in a, b, c and the like in FIG. 6A. And the simulation apparatus arranges the extracted communication operation in time order according to the dependency. In this case, a dependency relationship is established between calculation operations arranged before and after each communication operation.
  • the simulation apparatus extracts a calculation operation of a master and a slave related to the communication operation. This is an operation shown in FIG. 6B as 1, 2, 3, and the like.
  • a communication operation can be thought of as performing a unique function of a master or slave block. For example, if the master is the core, processing is the processing operation. If the slave is the memory, it is the calculation operation that executes the internal logic to transfer the data of the address to the outside. have.
  • the simulation apparatus divides the calculation operation into detailed units.
  • the simulation apparatus groups the calculation operations and the communication operations that are dependent on each other. There is a dependency between communication operations and computational operations within the same group, and they are linked. On the other hand, operations between different groups are independent of each other. That is, there is no dependency.
  • FIG. 6C illustrates an example in which the simulation operation is grouped into a first group 610 and a second group 620. More specifically, calculation operation 2 of FIG. 6C is dependent on operations 1/5 and a communication operation. In other words, the second calculation operation cannot be performed until the first and fifth calculation operations and the a communication operation are processed.
  • the first calculation operation included in the first group 610 and the third calculation operation included in the second group 620 are independent. In other words, at any point before the first calculation operation is processed, the third calculation operation may be performed, and the third calculation operation is performed when the execution of the first calculation operation is interrupted, and then again the calculation operation is performed. It may be performed.
  • Hardware block characteristics have a number of parallel processing elements that can be divided into groups. In the first embodiment of the present invention, each of these groups is processed in parallel.
  • FIG. 7 is a flowchart illustrating a process of processing a computation operation and a communication operation included in each simulation group in parallel, according to the first embodiment of the present invention.
  • FIG. 8 is a diagram illustrating a process of processing arithmetic operations and communication operations included in a plurality of groups included in the simulation in parallel through a diagram of arithmetic operations and communication operations.
  • the master and the slave select the calculation operation to be executed at this point in time according to two criteria of determining whether the communication operation is close and whether the communication dependency is resolved.
  • the master and the slave execute the corresponding communication operation when they reach the point where the communication operation should be performed.
  • the master and the slave execute the corresponding calculation operation first.
  • the master and the slave repeat this process until the assigned simulation is completed.
  • the simulation device selects the calculation operation to be performed currently based on two criteria. To this end, the simulation apparatus extracts the calculation operations closest to the next communication operation among the calculation operations included in the first group 610 and the second group 620 in operation S710. Referring to FIG. 8A, the first and third calculation operations are extracted from the master and the fifth and eight calculation operations are extracted from the slave.
  • the simulation apparatus determines whether there is an operation that is dependent on a communication operation among the extracted calculation operations and in which the communication operation is not yet performed.
  • the first and third calculation operations of the master are independent of the communication operations. Accordingly, the third calculation operation closest to the next communication operation is selected as the calculation operation to be performed at the master.
  • the eighth calculation operation in the slave can be executed only when the d communication operation is performed. That is, calculation operation 8 is dependent on the d communication operation, and the d communication operation has not been performed yet.
  • operation 5 of the slave is independent of communication operation. Accordingly, the operation 5 is selected as the calculation operation to be performed at the slave.
  • step S730 the simulation apparatus determines whether there is a calculation operation that is pending because no communication operation is performed. If so, the simulation apparatus proceeds to step S780 to select and perform the corresponding calculation operation.
  • step S750 determines whether to perform a communication operation during the calculation operation. This means that the time at which the d communication operation is performed in FIG. 6C has been reached. In this case, the simulation apparatus proceeds to step S760 to perform a corresponding communication operation, which is illustrated in FIG. 8B. The simulation apparatus proceeds to step S770 and determines whether all calculation and communication operations have been performed, and returns to step S710 when it is not performed.
  • the simulation apparatus returning to step S710 selects a target to perform a calculation operation through the same principle as the above principle through steps S710 and S720. More specifically, in the case of the master, the first calculation operation is the closest to the communication operation. Accordingly, the first calculation operation is selected as the calculation operation to be performed at the master. On the other hand, in the slave, calculation operation 5 is the closest to the communication operation. Accordingly, the fifth calculation operation is selected as the calculation operation to be performed at the slave. The figure in which the calculation operations to be performed respectively in the master and the slave are selected is shown in FIG. 8C.
  • the simulation apparatus selects a target to perform a calculation operation again through steps S710 and S720.
  • the calculation operation 3 is selected as the calculation operation to be currently performed.
  • calculation operation 5 is selected as the calculation operation to be performed currently.
  • FIGS. 8G and 8H The same principle applies to FIGS. 8G and 8H, and the above operation sequence is repeatedly performed until the currently assigned simulation is completed.
  • the master and the slave performing the simulation perform the simulation by minimizing the wait time, so that a faster and more accurate simulation performance can be expected.
  • the simulation apparatus may include a structure storage unit 910, an execution unit 920, and a control unit 930.
  • the structure storage unit 910 stores at least one group constituting the simulation.
  • the execution unit 920 may include a plurality of blocks for performing a simulation.
  • the block may include a core, a memory, a bus, and the like.
  • the controller 930 divides the simulation into a computational computation that performs a block-specific function and a communication computation that performs data exchange between different blocks. In addition, the controller 930 groups mutually dependent calculation operations and communication operations. In addition, the controller 930 controls to perform an operation included in each group using the block according to whether or not the dependency between the calculation operation and the communication operation is resolved.
  • the controller 930 selects a random block and performs a calculation operation in each group that the selected block should perform first when the simulation is performed.
  • the controller 930 selects a calculation operation that is not dependent on the communication operation and is closest to the communication operation to be generated later, and controls the selected calculation operation to be performed by the execution unit 920.
  • the controller 930 controls to perform the communication operation when the communication operation execution time point is reached during the calculation operation.
  • FIG. 10 is a diagram illustrating a process in which arithmetic operations and communication operations are executed sequentially when a simulation is performed according to the first embodiment of the present invention.
  • the conventional parallel simulation method has a large wait time, but according to an embodiment of the present invention, the waiting time is reduced (none) to speed up the simulation. It can be seen that it can be processed.
  • the second embodiment proposes a simulation optimization method applicable to a distributed system in which a plurality of nodes having at least two functional blocks (core, memory, bus, etc.) are clustered.
  • the second embodiment of the present invention proposes a method for rapidly processing communication operations by introducing a virtual block called a shadow block.
  • FIG. 11 is a diagram illustrating a simulation optimization method in a distributed system according to a second embodiment of the present invention.
  • the distributed system in the second embodiment includes a first node 1110 having a first shadow block 1111 and a second node 1120 having a second shadow block 1121. ).
  • the first shadow block 1111 located in the first node 1110 operates.
  • the first shadow block 1111 preprocesses and post-adjusts the operation requested by the A block of the first node 1110. This will be described in detail below.
  • the shadow block introduced in the embodiment of the present invention includes at least one address area.
  • Each address area is classified according to a function to be performed, and according to an example of the present invention, a memory address area, an active device address area, and a passive device area area are described. Can be distinguished.
  • the memory address area has general memory characteristics, that is, read / write characteristics, the active device address region has a characteristic in which the behavior of the corresponding device is not predetermined, and the passive device address region has a corresponding device.
  • the behavior of has a predetermined characteristic.
  • the A block of the first node When the A block of the first node requests a specific operation to the D block of the second node, if the operation is related to memory input / output, the A block requests a corresponding command to the memory address area of the first shadow block. On the other hand, when the A block of the first node requests a processing operation for the E block of the second node, the A block requests a corresponding command in the passive device address area of the first shadow block.
  • Each shadow block set in the first node and the second node performs the following operation. If the operation requested by the shadow block corresponds to the memory address area (that is, the operation is requested for memory), then the shadow block will service it if it has the address for read, whereas write ) Is first written to the shadow block, and its contents are subsequently sent to the other node.
  • the shadow block bypasses the request when the requested operation corresponds to the active device address area (that is, when the operation is requested for the active device). If the shadow block requests the operation corresponding to the passive device address range (that is, the operation is requested for the passive device), the shadow block provides a service according to a behavior model and delivers it to the corresponding block of the counterpart node. . In other words, the shadow block models the behavior of the passive device to perform a corresponding function.
  • the D block when the A block instructs to output a specific string in the D block, the D block outputs the string and then sends a confirmation signal (ack) indicating that the string is output to the A block.
  • ack confirmation signal
  • the fact that the shadow block models the operation of the D block means that the original D block has an acknowledgment (ack) to send to the A block, and that the acknowledgment signal (A) is received when the shadow block receives a command for string output from the A block. ) Means direct transmission.
  • the shadow block is provided by modeling a signal to be fed back after an arbitrary block performs a specific operation.
  • the shadow block preferentially transmits a feedback signal corresponding to a block that has transmitted a random command.
  • motion modeling is defined as motion modeling.
  • the first shadow block 1111 when the A block requests communication from the D block, the first shadow block 1111 performs d communication first, and this communication is repeated three times (AdAdAd). Thereafter, the first shadow block 1111 performs actual communication with the D block located in the second node 1120 to receive the communication result D (DDD). The first shadow block 1111 compares the communication d preprocessed with the received D, and adjusts a stored value in the first shadow block 1111 using the comparison result.
  • DDD communication result D
  • FIG. 12 is a flowchart showing a simulation operation procedure according to the second embodiment of the present invention.
  • FIG. 13 is a diagram illustrating the concept of performing a communication operation between nodes using a shadow block.
  • the simulation apparatus generates a shadow block at each node in step S1205.
  • the shadow block is defined through at least one address area as described above.
  • the simulation apparatus determines whether all simulations have been processed. If all simulations have not been processed, the simulation apparatus proceeds to step S1215, in which case the shadow block receives a specific command execution request from any block included in the node to which the simulation block belongs.
  • the specific command is stored in the address area corresponding to the type of device targeted for the command. For example, if the type of device that is the target of the command is a memory, the command is stored in the memory address area.
  • the shadow block proceeds to step S1220 to determine whether the address area receiving the command is an active device address area. In the case of the active device address area, the shadow block proceeds to step S1250 to bypass the corresponding command (transaction, transaction).
  • step S1230 determines whether the address area receiving the command is a memory address area. In the case of the memory address area, the shadow block proceeds to step S1235 to pre-process using caching data internally included in the shadow block. In this case, when the command is read, the data provided is transmitted. In the case of write, the data is first stored, and a confirmation signal ack is transmitted. On the other hand, if the command is a read first generated, since there is no data included in the shadow block in this case, it is necessary to wait until data is received from the block having the data. The shadow block stores the data when it is received and uses the preprocessing process.
  • the shadow block After performing the preprocessing, the shadow block proceeds to step S1240 and delivers the corresponding transaction to the block that was the original request target.
  • the shadow block receives the actual processing (post-processing) result from the block that was originally the request target, and checks an error between the timing of the preprocessed service and the timing of the postprocessed service.
  • the error between the timings refers to a difference between timings (eg, number of clocks) used to perform a preprocessed service and timings used to perform a postprocessed service. That is, there may be a difference in the number of clocks required to perform each service.
  • the shadow block stores timing information of the post-processed service and uses the preprocessing in the next step.
  • the content of the service preprocessed by the shadow block and the content of the postprocessed service are the same, and only an error about timing occurs.
  • step S1230 determines whether the address area receiving the command is a memory address area.
  • the shadow block proceeds to step S1250 and preprocesses the device with a predetermined operation (in this case, an action returned to the block requesting the command).
  • a predetermined operation in this case, an action returned to the block requesting the command.
  • the process is illustrated in Figures 13b and 13c. That is, when the shadow block receives a specific command request (4, 6, 8), it preprocesses (7, 9) and delivers the command (10) to the corresponding block of the target node. The shadow block receives timing information 11 from the target node and updates the timing information when there is an error with the previously stored timing information.
  • FIG. 14 is a graph showing a result of improved simulation performance in accordance with an embodiment of the present invention.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Quality & Reliability (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)
  • Monitoring And Testing Of Transmission In General (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

본 발명은 시뮬레이션 방법 및 장치에 관한 것으로, 본 발명의 복수 개의 블록을 이용하여 시뮬레이션을 수행하는 방법은 상기 시뮬레이션을 블록 고유한 기능을 수행하는 계산 연산(computation)과, 서로 다른 블록 사이에서 데이터 교환을 수행하는 통신 연산(communication)으로 분할하는 단계, 상호 의존적인 계산 연산과 통신 연산끼리 그룹화하는 그룹화 단계 및 상기 계산 연산과 통신 연산 사이의 의존도 해결 여부에 따라 각각의 그룹에 포함된 연산을 상기 블록을 이용하여 수행하는 시뮬레이션 수행 단계를 포함하는 것을 특징으로 한다.

Description

시뮬레이션 장치 및 그의 시뮬레이션 방법
본 발명은 시스템 성능을 신속하고 정확하게 미리 측정하고 예측하는 시뮬레이션 방법 및 장치에 관한 것이다. 보다 구체적으로, 본 발명은 서로 의존적인 계산 연산(computation) 및 통신 연산(communication)을 추출하여 복수 개의 그룹으로 그룹화하고 각각의 그룹을 병렬적으로 처리하는 병렬 시뮬레이션 방법과, 복수 개의 노드들 사이에 가상의 섀도우 노드(shadow node)를 도입하고 임의의 노드가 요청한 작업의 어드레스 영역의 종류에 따라 선-처리(pre-processing)하는 분산 시뮬레이션 방법 및 각각에 대한 장치를 제공한다.
스마트폰, TV, 가전 등의 시스템 제작을 위해서는 구조 및 성능 분석을 위한 시스템 시뮬레이션(Simulation)이 필수적이다. 시뮬레이션은 오류 없이 원하는 성능을 만족하면서, 최적화된 시스템을 구성할 수 있도록 해준다. 즉, 시스템 성능을 미리 측정하고 예측하는 시뮬레이션 기법은 시스템을 분석하고 평가하는데 사용되고 있고 많은 중요성을 갖고 있다.
하지만 최근 들어, 멀티 코어, GPU(Graphic Processing Unit), S/W 플랫폼(Platform), 어플리케이션 프로세서(Application Processor, AP) 등 구현해야 할 시스템 복잡도(complexity)가 증가하면서 시뮬레이션 속도는 한계에 부딪히게 되었다.
이에 따라, 최근에는 시뮬레이션 정확도를 줄여 시뮬레이션 속도를 증가시키는 방법을 도입하였다. 그러나 이러한 방법은 비록 시뮬레이션 속도를 증가시킬 수는 있으나 시뮬레이션 분석 결과를 신뢰할 수 없다는 문제점이 있다.
따라서 시뮬레이션 속도를 희생시키지 않으면서도, 동시에 정확하게 시스템 성능을 평가할 수 있는 시뮬레이션 방법에 대한 필요성이 대두된다.
본 발명은 상기와 같은 문제점을 해결하기 위하여 안출된 것으로서, 시스템 성능을 신속하고 정확하게 미리 측정하고 예측하는 시뮬레이션 방법 및 장치를 제공하는 것을 그 목적으로 한다.
구체적으로, 본 발명은 서로 의존적인 계산 연산(computation) 및 통신 연산(communication)을 추출하여 복수 개의 그룹으로 그룹화하고 각각의 그룹을 병렬적으로 처리하는 병렬 시뮬레이션 방법 및 장치를 제공하는 것을 제1 목적으로 한다.
또한 본 발명은 복수 개의 노드들 사이에 가상의 섀도우 노드(shadow node)를 도입하고 임의의 노드가 요청한 작업의 어드레스 영역의 종류에 따라 선-처리(pre-processing)하는 분산 시뮬레이션 방법 및 장치를 제공하는 것을 제2 목적으로 한다.
상기와 같은 문제점을 해결하기 위한 본 발명의 복수 개의 블록을 이용하여 시뮬레이션을 수행하는 방법은 상기 시뮬레이션을 블록 고유한 기능을 수행하는 계산 연산(computation)과, 서로 다른 블록 사이에서 데이터 교환을 수행하는 통신 연산(communication)으로 분할하는 단계, 상호 의존적인 계산 연산과 통신 연산끼리 그룹화하는 그룹화 단계 및 상기 계산 연산과 통신 연산 사이의 의존도 해결 여부에 따라 각각의 그룹에 포함된 연산을 상기 블록을 이용하여 수행하는 시뮬레이션 수행 단계를 포함하는 것을 특징으로 한다.
또한, 본 발명의 복수 개의 블록을 이용하여 시뮬레이션을 수행하는 장치는 상기 시뮬레이션을 구성하는 적어도 하나 이상의 그룹을 저장하는 구조 저장부, 상기 시뮬레이션을 수행하는 복수 개의 블록을 포함하는 실행부 및 상기 시뮬레이션을 블록 고유한 기능을 수행하는 계산 연산(computation)과 서로 다른 블록 사이에서 데이터 교환을 수행하는 통신 연산(communication)으로 분할하고, 상호 의존적인 계산 연산과 통신 연산끼리 그룹화하며, 상기 계산 연산과 통신 연산 사이의 의존도 해결 여부에 따라 각각의 그룹에 포함된 연산을 상기 블록을 이용하여 수행하도록 제어하는 제어부를 포함하는 것을 특징으로 한다.
또한, 본 발명의 복수 개의 블록을 포함하는 적어도 두 개 이상의 노드가 상호 연결된 분산 시스템에서의 시뮬레이션 수행 방법은 상기 각각의 노드에 섀도우 블록(shadow block)을 설정하는 설정 단계, 상기 섀도우 블록이, 임의의 노드에서 다른 노드로 전송되는 임의의 연산 요청을 수신하는 수신 단계 및 상기 섀도우 블록이, 상기 요청된 연산을 선처리하는 선처리 단계를 포함하는 것을 특징으로 한다.
그리고 본 발명의 분산 시스템에서 시뮬레이션을 수행하는 시뮬레이션 수행 장치에 있어서,
복수 개의 블록을 포함하는 적어도 두 개 이상의 노드들을 포함하며, 상기 노드들 각각은 임의의 노드에서 다른 노드로 전송되는 임의의 연산 요청을 수신하고, 상기 요청된 연산을 선처리하는 섀도우 블록을 포함하는 것을 특징으로 한다.
본 발명의 시뮬레이션 방법에 따르면, 시뮬레이션 속도를 희생시키지 않으면서도 동시에 정확하게 시스템 성능을 평가할 수 있다는 효과가 있다. 이에 따라, 본 발명의 시뮬레이션 방법을 SoC(System on Chip), 단말 및 기타 임베디드(embedded) 기기에 적용하여 최적화된 제품 제작이 가능하다. 또한, 신속하고 정확한 시뮬레이션을 활용해 여러 가지 상황에 대한 다양한 분석이 가능하여 제품군 성능 향상에 기여 할 수 있다.
도 1은 종래 기술 및 본 발명의 실시예에 따른 시스템 시뮬레이션 변수들(정확도, 시뮬레이션 속도, 병렬 처리) 사이의 관계를 도시하는 도면.
도 2는 시뮬레이션을 병렬적으로 처리하는 병렬 처리 방법 및 병렬 시스템에 대한 예시, 그리고 이의 문제점을 도시하는 도면.
도 3은 여러 노드를 클러스터링하여 분산 시스템을 구성하는 예시를 도시하는 도면.
도 4는 시뮬레이션을 구동하기 위한 본 발명의 실시예에 따른 시스템 구성도를 도시하는 도면.
도 5는 본 발명의 제1 실시에에 따라 병렬 시뮬레이션을 수행하기 위해 시뮬레이션을 의존도에 따라 그룹화하는 단계를 수행하는 과정을 도시하는 순서도.
도 6은 시뮬레이션 수행 시, 의존도에 따라 그룹화되는 과정을 계산 연산 및 통신 연산의 도식을 통해 도시하는 도면.
도 7은 본 발명의 제1 실시예에 따라, 각각의 시뮬레이션 그룹에 포함된 계산 연산 및 통신 연산을 병렬적으로 처리하는 과정을 도시하는 순서도.
도 8은 시뮬레이션에 포함된 복수 개의 그룹에 포함된 계산 연산 및 통신 연산을 병렬적으로 처리하는 과정을 계산 연산 및 통신 연산의 도식을 통해 도시하는 도면.
도 9는 본 발명의 제1 실시예에 따른 시뮬레이션 장치의 내부 구조를 도시하는 블록도.
도 10은 시뮬레이션을 본 발명의 제1 실시예에 따르는 경우, 계산 연산과 통신 연산이 순차적으로 실행되는 과정을 도시하는 도면.
도 11은 본 발명의 제2 실시예에 따른 분산 시스템에서의 시뮬레이션 최적화 방안을 도시하는 도면.
도 12는 본 발명의 제2 실시예에 따른 시뮬레이션 동작 순서를 도시하는 순서도.
도 13은 섀도우 블록을 이용하여 노드들 사이의 통신 연산을 수행하는 개념을 도시하는 도면.
도 14는 본 발명의 실시예에 따른 경우 시뮬레이션 성능이 향상된 결과를도시하는 그래프.
본 발명에서는 시뮬레이션을 수행하는 장치를 호스트(host)라고 칭할 수 있으며, 이러한 호스트는 임의의 연산이나 정해진 동작을 수행하는 복수 개의 블록을 포함할 수 있다. 상기 블록은 마스터, 슬레이브 등의 용어로 치환되어 사용할 수 있다. 본 발명의 일 실시예에 따르면 컴퓨터 등을 호스트로 이용하여 시뮬레이션을 수행하고 있다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예들을 상세히 설명한다. 이 때, 첨부된 도면에서 동일한 구성 요소는 가능한 동일한 부호로 나타내고 있음에 유의해야 한다. 또한 본 발명의 요지를 흐리게 할 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략할 것이다.
상기한 바와 같이, 최근 들어 시스템 복잡도(complexity)가 증가하면서 시뮬레이션 속도는 한계에 부딪히게 되었다. 이를 해결하기 위한 방법으로 시뮬레이션 정확도를 줄여 시뮬레이션 속도를 증가시키는 방법을 도입하는 방안을 고려해볼 수 있다. 이를 도 1을 참조하여 설명하도록 한다.
도 1은 종래 기술 및 본 발명의 실시예에 따른 시스템 시뮬레이션 변수들(정확도, 시뮬레이션 속도, 병렬 처리) 사이의 관계를 도시하는 도면이다.
도 1에서 도시되는 바와 같이, 종래에는 추상화 레벨(abstraction level)을 높이는 방법을 사용하였다. 즉, 시뮬레이션 정확도를 희생하는 대신에 시뮬레이션 속도를 증가시키는 방법을 사용하였다. 그러나 이는 시뮬레이션 분석 결과에 대한 정확도를 신뢰할 수 없게 만들었다.
본 발명의 실시예에서는 병렬 처리를 통해 시뮬레이션 정확도를 희생하지 않으면서도 시뮬레이션을 신속하게 수행할 수 있는 방법을 제안한다.
이러한 병렬 컴퓨팅(처리)을 도입하여 시스템을 시뮬레이션 하는 방법에는 멀티 코어(multi-core), 분산 컴퓨터(distributed computer) 등을 활용하게 된다.
이를 도 2 및 도 3을 참조하여 설명하도록 한다.
도 2는 시뮬레이션을 병렬적으로 처리하는 병렬 처리 방법 및 병렬 시스템에 대한 예시, 그리고 이의 문제점을 도시하는 도면이다.
시뮬레이션을 제1 처리 블록(예를 들어, 마스터, 이하 동일하다)과 제2 처리 블록(예를 들어, 슬레이브, 이하 동일하다)이 병렬적으로 수행하는 경우, 도 2에서 도시되는 바와 같이 마스터와 슬레이브 사이에는 특정 유선 신호(wire signal) 에 대하여 의존성(dependency)이 발생하게 된다. 그런데, 이러한 의존성이 해결되지 않은 경우에는 마스터 또는 슬레이브는 임의의 태스크 처리를 대기(wait)해야 하는 상황이 발생할 수 있다. 예를 들어, 도 2에서 6번의 계산 연산(computation)은 b의 통신 연산(communication)이 수행되기 전에는 수행될 수 없어, 마스터로부터 b의 통신이 수행되기 전까지, 슬레이브는 어떠한 연산도 수행하지 못한 채 대기해야 한다.
이는 코어(core)가 정지한다는 것을 의미하고, 이러한 상황이 빈번하게 발생하게 되면 시뮬레이션 속도가 급격하게 저하될 수 있다는 문제가 발생한다. 시스템이 1GHz의 클럭(clock)으로 동작하는 경우에는, 이러한 대기 상태가 초당 1,000,000,000 번 발생하는 것이며, 이는 최종 시뮬레이션 결과가 도출되기까지 속도 저하에 큰 영향을 미치게 된다.
한편, 시뮬레이션 장치(예를 들어, 컴퓨터)의 한 노드(node)에 할당되는 멀티 코어의 개수에는 한계가 있다. 최근의 슈퍼 컴퓨터는 이러한 한계를 극복하기 위해, 여러 노드를 클러스터링(clustering)하는 방법을 도입하였다. 이에 대한 예시가 도 3에서 도시된다.
도 3은 여러 노드를 클러스터링하여 분산 시스템을 구성하는 예시를 도시하는 도면이다.
복수 개의 노드들이 클러스터링 되면, 서로 다른 노드들 사이의 통신은 동일한 노드 내에 위치한 코어들 사이의 통신보다 그 속도가 현저하게 떨어지게 된다. 따라서 시스템 시뮬레이션 성능에 악영향을 줄 수 있다.
예를 들어, 제1 노드에 위치한 A 블록이, 제2 노드에 위치한 D 블록으로부터 데이터를 읽어온다면, 제1 노드와 제2 노드를 연결하는 물리적인 링크(link) 특성 때문에 시뮬레이션 속도가 상당히 저하될 수 있다.
본 발명은 상기한 병렬 시스템 및 분산 시스템에서 시뮬레이션을 수행하는 경우 발생하는 문제점을 해결하기 위한 방안을 제안한다.
임베디드 시스템의 각 블록(코어, 메모리, 버스 등)은 계산 연산(computation)과 통신 연산(communication)으로 구분할 수 있다. 이 경우, 계산 연산은 특정 블록의 고유한 기능을 수행하는 것을 의미하며, 통신 연산은 서로 다른 블록 간의 데이터 교환을 의미한다. 예를 들어, 메모리의 경우 외부에서 어드레스(address)를 수신하는 것이 통신 연산이고, 해당 주소의 데이터를 외부로 전송하기 위하여 내부 로직을 실행하는 것이 계산 연산이다.
이하에서 기술되는 본 발명에 대한 설명은 제1 실시예 및 제2 실시예로 구분하여 기술하도록 한다. 이 경우, 제1 실시예는 멀티 코어를 사용하는 병렬 시스템에서의 시뮬레이션 최적화 방법에 대해 기술한다. 그리고 제2 실시예에서는 분산 시스템에서의 시뮬레이션 최적화 방법에 대해서 기술한다.
한편, 본 발명의 실시예는 도 4에서 도시되는 시뮬레이션 시스템 구성도를 통해 수행될 수 있다.
도 4에서 도시되는 바와 같이, 시뮬레이션을 수행하는 호스트(host)는 제1 노드, 제2 노드 등 적어도 두 개 이상의 노드가 링크로 연결된 분산 시스템이다. 상기 링크는 유선 링크(wire link) 및/또는 무선 링크(wireless link)를 포함할 수 있다. 이 경우, 각각의 노드는 적어도 두 개 이상의 코어 즉, 멀티 코어로 구성되는 병렬 컴퓨팅 환경을 가진다. 그리고 각 노드에 위치한 임의의 블록들은 호스트를 구성하는 물리적인 기능 블록에 각각 매핑될 수 있다.
각 코어와 노드에는 시뮬레이션하는 플랫폼(platform)이 올려져 있으며, 플랫폼은 각 코어에 매핑된다. 그리고 플랫폼에 각 블록은 서로 통신을 수행하면서 시뮬레이션이 진행된다.
이하에서 기술되는 본 발명의 실시예에서는 동일한 노드 내에서의 시뮬레이션은 병렬 시뮬레이션(Parallel Simulation), 서로 다른 노드들 사이에서의 시뮬레이션은 분산 시뮬레이션(Distributed Simulation)이라 칭하기로 한다.
상기의 전제를 바탕으로 본 발명의 제1 실시예 및 제2 실시예에 대하여 기술하도록 한다.
<제1 실시예>
이하에서는 적어도 두 개 이상의 코어를 사용하는 병렬 시스템에서의 병렬 시뮬레이션 최적화 방법에 대하여 기술하도록 한다.
도 2에서 도시되는 바와 같이, 병렬 시뮬레이션의 경우 마스터와 슬레이브는 상호간에 데이터를 교환한다. 그런데 자신이 필요로 하는 데이터가 상대방에서 미처리된 경우에는 대기(wait)하게 된다는 문제점이 있다.
본 발명에서는 이러한 문제점을 해결하기 위하여, 시뮬레이션을 수행함에 있어 서로 의존적인 계산 연산(computation) 및 통신 연산(communication)을 추출하여 복수 개의 그룹으로 그룹화 하는 단계와, 각각의 그룹에 포함된 계산 연산 및 통신 연산을 독립적으로 그리도 동시에 병렬적으로 처리하는 단계를 포함하는 병렬 시뮬레이션 방법에 대해 기술하도록 한다.
도 5는 본 발명의 제1 실시에에 따라 병렬 시뮬레이션을 수행하기 위해 시뮬레이션을 의존도에 따라 그룹화하는 단계를 수행하는 과정을 도시하는 순서도이다.
그리도 도 6은 시뮬레이션 수행 시, 의존도에 따라 그룹화되는 과정을 계산 연산 및 통신 연산의 도식을 통해 도시하는 도면이다.
도 6a 내지 도 6c에서, 상단 라인은 마스터가 수행하는 계산 연산을 의미하며, 하단 라인은 슬레이브가 수행하는 계산 연산을 의미한다. 그리고 상단 라인과 하단 라인을 직교하는 라인은 마스터와 슬레이브 사이에 발생하는 통신 연산을 의미한다.
우선, 시뮬레이션 장치는 임의의 시뮬레이션 연산을 할당받는다. 그리고 시뮬레이션 장치는 S510 단계를 통해 상기 시뮬레이션 연산에서 마스터와 슬레이브 사이에 교환해야 할 통신 연산을 추출한다. 이는 도 6a에서, a, b, c 등으로 도시된 연산이다. 그리고 시뮬레이션 장치는 추출된 통신 연산을 의존도에 따라 시간 순서대로 정렬한다. 이 경우, 각각의 통신 연산 전후에 배치되는 계산 연산은 의존 관계가 성립한다.
그리고 시뮬레이션 장치는 S520 단계에서, 상기 통신 연산에 연관되어 있는 마스터와 슬레이브의 계산 연산을 추출한다. 이는 도 6b에서, 1, 2, 3 등으로 도시된 연산이다. 통신 연산은 마스터 또는 슬레이브 블록의 고유한 기능을 수행하는 것으로 생각할 수 있다. 예를 들어, 마스터가 코어인 경우에는 할당된 작업을 처리(process)하는 것이 계산 연산이며, 슬레이브가 메모리인 경우에는 해당 주소의 데이터를 외부로 전송하기 위하여 내부 로직을 실하는 것이 계산 연산일 수 있다.
만약, 계산 연산 사이에 새로운 통신 연산이 발생하면, 시뮬레이션 장치는 상기 계산 연산을 세부 단위로 분할한다.
그리고 시뮬레이션 장치는 S530 단계에서, 서로 의존적인 계산 연산과 통신 연산들끼리 그룹화한다. 동일한 그룹 내에서의 통신 연산과 계산 연산 사이에서는 의존도(dependency)가 존재하며 연결된다. 반면, 서로 다른 그룹 사이의 연산은 서로 독립적이다. 즉, 의존도가 없다.
도 6c에서는 해당 시뮬레이션 연산이 제1 그룹(610)과 제2 그룹(620)으로 그룹화된 예시를 도시한다. 보다 구체적으로, 도 6c의 2번 계산 연산은 1번/5번 연산 및 a 통신 연산에 의존적이다. 즉, 1번/5번 계산 연산 및 a 통신 연산이 처리되기 전까지는 2번 계산 연산은 수행될 수 없다. 반면, 제1 그룹(610)에 포함된 1번 계산 연산 및 제2 그룹(620)에 포함된 3번 계싼 연산은 독립적이다. 다시 말해, 1번 계산 연산이 처리되기 전 어느 시점에서라도, 3번 계산 연산은 수행될 수 있으며, 1번 계산 연산의 수행이 중단된 시점에서 3번 계산 연산이 수행되다가, 다시 1번 계산 연산이 수행될 수도 있는 것이다.
하드웨어 블록 특성은 그룹으로 분할이 가능한 병렬 처리 요소가 다수 존재한다. 본 발명의 제1 실시예에서는 이러한 각각의 그룹을 병렬적으로 처리하는 것을 특징으로 한다.
도 7은 본 발명의 제1 실시예에 따라, 각각의 시뮬레이션 그룹에 포함된 계산 연산 및 통신 연산을 병렬적으로 처리하는 과정을 도시하는 순서도이다.
그리도 도 8은 시뮬레이션에 포함된 복수 개의 그룹에 포함된 계산 연산 및 통신 연산을 병렬적으로 처리하는 과정을 계산 연산 및 통신 연산의 도식을 통해 도시하는 도면이다.
도 7의 병렬 처리 과정을 설명하기에 앞서, 기본 원리를 설명하면 다음과 같다. 시뮬레이션을 수행하는 마스터(제1 블록), 슬레이브(제2 블록)를 통해, 각 그룹에 포함된 계산 연산을 실행시킨다. 이 경우, 마스터와 슬레이브는 통신 연산이 근접하였는지 여부 및 통신 의존성이 해결되었는지 여부의 두 가지 판단 기준에 따라, 현 시점에서 실행할 계산 연산을 선택한다. 그리고 마스터와 슬레이브는 선택된 계산 연산을 실행하는 동안, 통신 연산을 수행해야 하는 시점에 도달하면 해당 통신 연산을 실행한다. 한편, 마스터와 슬레이브는 이전 통신 연산이 실행이 안되어 중지된 계산 연산이 있는 경우, 해당 계산 연산을 먼저 실행한다.
마스터와 슬레이브는 상기 과정을 할당된 시뮬레이션이 완료될때 까지 반복하여 수행한다.
상기 원리를 바탕으로 시뮬레이션 장치가 시뮬레이션을 수행하는 구체적인 과정을 도 7 및 도 8을 통해 설명하도록 한다.
우선, 도 6의 그룹화 과정을 통해, 시뮬레이션이 제1 그룹(610)과 제2 그룹(620)으로 그룹화 되었음을 전제한다.
그러면 시뮬레이션 장치는 두 가지 기준을 통해 현재 수행할 계산 연산을 선택한다. 이를 위해, 시뮬레이션 장치는 S710 단계에서 제1 그룹(610) 및 제2 그룹(620)에 포함된 계산 연산들 중, 다음번 통신 연산이 가장 근접한 계산 연산들을 추출한다. 이를 도 8a를 통해 설명하면, 마스터에서는 1번 및 3번 계산 연산이, 슬레이브에서는 5번 및 8번 계산 연산이 추출된다.
이어서, 시뮬레이션 장치는 S720 단계에서 상기 추출된 계산 연산들 중 통신 연산에 의존적이며, 상기 통신 연산이 아직 수행되지 않은 연산이 있는지 판단한다. 도 8a를 통해 설명하면, 마스터에서는 1번 및 3번 계산 연산은 모두 통신 연산에 독립적이다. 이에 따라, 마스터에서는 다음번 통신 연산에 가장 근접한 3번 계산 연산이 현재 수행될 계산 연산으로 선택된다.
한편, 슬레이브에서는 8번 계산 연산은 d 통신 연산이 수행되어야만 실행될 수 있다. 즉, 8번 계산 연산은 d 통신 연산에 의존적이며, 상기 d 통신 연산은 아직 수행되지 않았다. 반면, 슬레이브의 5번 연산은 통신 연산에 독립적이다. 이에 따라, 슬레이브에서는 5번 연산이 현재 수행될 계산 연산으로 선택된다.
마스터와 슬레이브에서 수행될 계산 연산이 결정되면, 시뮬레이션 장치는 S730 단계로 진행하여 결정된 계산 연산을 수행한다. 그리고 시뮬레이션 장치는 S740 단계로 진행하여, 이전에 통신 연산이 수행되지 않아 대기 중인 계산 연산이 있는지 여부를 판단한다. 있는 경우, 시뮬레이션 장치는 S780 단계로 진행하여 해당 계산 연산을 선택하여 수행한다.
반면, 없는 경우, 시뮬레이션 장치는 S750 단계로 진행하여 계산 연산 수행 중, 통신 연산을 수행해야 하는지 판단한다. 이는 도 6c에서 d 통신 연산을 수행할 시점이 도달한 것을 의미한다. 이 경우, 시뮬레이션 장치는 S760 단계로 진행하여 해당 통신 연산을 수행하며, 이는 도 8b에서 도시된다. 그리고 시뮬레이션 장치는 S770 단계로 진행하여 모든 계산 연산 및 통신 연산이 수행되었는지 여부를 판단하고, 미수행 시 다시 S710 단계로 복귀한다.
S710 단계로 복귀한 시뮬레이션 장치는, S710 단계 및 S720 단계를 통해 상기한 원리와 동일한 원리를 통해 계산 연산을 수행할 대상을 선택한다. 보다 구체적으로 설명하면, 마스터의 경우 1번 계산 연산이 통신 연산에 가장 근접하다. 이에 따라, 마스터에서는 1번 계산 연산이 현재 수행될 계산 연산으로 선택된다. 한편, 슬레이브에서는 5번 계산 연산이 통신 연산에 가장 근접하다. 이에 따라, 슬레이브에서는 5번 계산 연산이 현재 수행될 계산 연산으로 선택된다. 마스터와 슬레이브에서 각각 수행될 계산 연산이 선택되는 도면은 도 8c에서 도시된다.
그리고 계산 연산 수행 과정은 마스터에서 1번 계산 연산이 종료될 때 까지 진행하며, 이는 도 8d에서 도시된다.
그리고 시뮬레이션 장치는 다시 S710 단계 및 S720 단계를 거쳐 계산 연산을 수행할 대상을 선택한다. 도 8e를 참조하면, 마스터의 경우, 2번 계산 연산은 아직 a 통신 연산 수행 전이므로, 3번 계산 연산이 현재 수행될 계산 연산으로 선택된다. 그리고 슬레이브의 경우, 8번 계산 연산보다 5번 계산 연산이 통신 연산에 더 근접하므로, 5번 계산 연산이 현재 수행될 계산 연산으로 선택된다.
그리고 시뮬레이션 장치는 도 8 f에서 도시되는 바와 같이, a 통신 연산이 수행될때 까지 실행된다.
도 8g 및 도 8h도 마찬가지 원리가 적용되며, 상기한 동작 순서는 현재 할당된 시뮬레이션이 완료될 때 까지 반복 수행된다.
상기한 본 발명의 제1 실시예의 시뮬레이션 방법에 따르면, 시뮬레이션을 수행하는 마스터와 슬레이브는 대기 시간(wait)을 최소화하여 시뮬레이션을 수행하므로, 보다 신속하고 정확한 시뮬레이션 성능을 기대할 수 있다.
도 9는 본 발명의 제1 실시예에 따른 시뮬레이션 장치의 내부 구조를 도시하는 블록도이다. 도 9에서 도시되는 바와 같이, 제1 실시예에 따른 시뮬레이션 장치는 구조 저장부(910), 실행부(920), 제어부(930)를 포함할 수 있다.
구조 저장부(910)는 상기 시뮬레이션을 구성하는 적어도 하나 이상의 그룹을 저장한다.
실행부(920)는 시뮬레이션을 수행하는 복수 개의 블록들을 포함할 수 있다. 상기 블록은 코어, 메모리, 버스 등을 포함할 수 있다.
제어부(930)는 상기 시뮬레이션을 블록 고유한 기능을 수행하는 계산 연산(computation)과 서로 다른 블록 사이에서 데이터 교환을 수행하는 통신 연산(communication)으로 분할한다. 그리고 제어부(930)는 상호 의존적인 계산 연산과 통신 연산끼리 그룹화한다. 그리고 제어부(930)는 상기 계산 연산과 통신 연산 사이의 의존도 해결 여부에 따라 각각의 그룹에 포함된 연산을 상기 블록을 이용하여 수행하도록 제어한다.
특히, 상기 제어부(930)는 시뮬레이션 수행 시, 임의의 블록을 선택하고, 선택된 블록이 가장 먼저 수행해야 하는 계산 연산을 각각의 그룹에서 추출한다. 그리고 제어부(930)는 추출된 계산 연산 중, 통신 연산에 의존적이지 않음과 동시에 차후 발생할 통신 연산에 가장 근접한 계산 연산을 선택하고, 선택된 계산 연산을 실행부(920)를 통해 수행하도록 제어한다.
그리고 제어부(930)는 계산 연산 수행 도중 통신 연산 수행 시점 도달 시, 상기 통신 연산을 수행하도록 제어한다.
도 10은 시뮬레이션을 본 발명의 제1 실시예에 따르는 경우, 계산 연산과 통신 연산이 순차적으로 실행되는 과정을 도시하는 도면이다.
도 10을 도 2에 도시된 종래 병렬 시뮬레이션 방법과 비교해볼 때, 종래 병렬 시뮬레이션 방법의 경우에는 대기 시간(wait)이 많지만, 본 발명의 실시예에 따르는 경우 대기 시간이 줄어들어(없음) 시뮬레이션을 신속하게 처리할 수 있음을 확인할 수 있다.
<제2 실시예>
이하에서는 분산 시스템에서의 시뮬레이션 최적화 방법에 대해 기술한다.
제2 실시예에서는 적어도 두 개 이상의 기능 블록(코어, 메모리, 버스 등)을 구비하는 복수 개의 노드들이 클러스터링(clustering)된 분산 시스템에서 적용 가능한 시뮬레이션 최적화 방법을 제시한다.
종래 분산 시스템에서는 노드들 간 지연(latency)이 발생하게 된다. 본 발명의 제2 실시예에서는 섀도우 블록(Shadow Block)이라는 가상의 블록을 도입하여 통신 연산(communication)을 신속하게 처리하는 방법을 제안한다.
도 11은 본 발명의 제2 실시예에 따른 분산 시스템에서의 시뮬레이션 최적화 방안을 도시하는 도면이다.
도 11에서 도시되는 바와 같이, 제2 실시예에서의 분산 시스템은 제1 섀도우 블록(1111)을 구비하는 제1 노드(1110)와, 제2 섀도우 블록(1121)을 구비하는 제2 노드(1120)를 포함한다.
예를 들어, 제1 노드(1110)의 A 블록이 제2 노드(1120)의 D 블록에게 통신을 요청할 경우, 제1 노드(1110)에 위치한 제1 섀도우 블록(1111)이 동작한다. 이를 위해, 상기 제1 섀도우 블록(1111)은 제1 노드(1110)의 A 블록이 요청한 연산에 대해 선(先)처리하고 후(後) 조정한다. 이에 대해 구체적으로 설명하면 하기와 같다.
본 발명의 실시예에 도입된 섀도우 블록은 적어도 하나 이상의 어드레스 영역을 포함한다. 각각의 어드레스 영역은 수행하는 기능에 따라 특성이 구분되며, 본 발명의 예시에 따르면 메모리 어드레스 영역(memory address area), 능동 디바이스 어드레스 영역(active address area), 수동 디바이스 어드레스 영역(passive address area)로 구분될 수 있다. 상기 메모리 어드레스 영역은 일반적인 메모리 특성 즉, 리드/라이트(read/write) 특성을 가지며, 능동 디바이스 어드레스 영역은 해당 디바이스의 동작(behavior)이 미리 결정되지 않은 특성을 가지며, 수동 디바이스 어드레스 영역은 해당 디바이스의 동작(behavior)이 미리 결정된 특성을 가진다.
제1 노드의 A 블록이 제2 노드의 D 블록으로 특정 연산 처리 요청 시, 해당 연산이 메모리 입출력에 관한 것이라면, A 블록은 제1 섀도우 블록의 메모리 어드레스 영역에 해당 명령을 요청한다. 반면, 제1 노드의 A 블록이 제2 노드의 E 블록에 대해 프로세싱(processing) 연산을 요청하는 경우, A 블록은 제1 섀도우 블록의 수동 디바이스 어드레스 영역에 해당 명령을 요청한다.
제1 노드와 제2 노드에 설정된 각각의 섀도우 블록은 하기의 동작을 수행한다. 섀도우 블록이 요청받은 연산이 메모리 어드레스 영역에 해당하는 경우(즉, 메모리에 대해 연산을 요청받은 경우), 섀도우 블록은 읽기(read)의 경우 해당 어드레스를 구비하는 경우 이를 서비스하며, 반면 쓰기(write)의 경우 우선 섀도우 블록에 쓰고(write) 해당 내용을 이후에 상대방 노드에 전송한다. 그리고 섀도우 블록이 요청받은 연산이 능동 디바이스 어드레스 영역에 해당하는 경우(즉, 능동 디바이스에 대해 연산을 요청받은 경우), 상기 요청을 바이패스(by-pass)한다. 그리고 섀도우 블록이 요청받은 연산이 수동 디바이스 어드레스 영역에 해당하는 경우(즉, 수동 디바이스에 대해 연산을 요청받은 경우), 동작 모델(behavior model)에 따라 서비스를 하고 이를 상대방 노드의 해당 블록에 전달한다. 즉, 섀도우 블록은 수동 디바이스의 동작(behavior)을 모델링(modeling)하여 해당 기능을 수행한다.
여기서, 상기 동작 모델링(behavior modeling)에 대해 구체적으로 설명하도록 한다. 예를 들어, A 블록이 D 블록에서 특정 문자열을 출력할 것을 명령한 경우, D 블록은 해당 문자열을 출력한 후 A 블록에게 해당 문자열을 출력하였다는 확인 신호(ack)를 전송한다.
섀도우 블록이 D 블록의 동작을 모델링한다는 것은, 본래 D 블록이 A 블록에게 전송할 확인 신호(ack)를 구비하고, 섀도우 블록이 A 블록으로부터 문자열 출력에 대한 명령을 수신한 경우 A에게 확인 신호(ack)를 직접 전송하는 것을 의미한다.
이와 같이, 섀도우 블록은 임의의 블록이 특정 동작을 수행한 후 피드백 해야 하는 신호를 모델링하여 구비한다. 그리고 섀도우 블록은 임의의 명령을 전송한 블록에게 해당하는 피드백 신호를 우선적으로 전송한다. 본 발명에서는 이러한 동작을 동작 모델링이라고 정의한다.
상기 내용을 도식화하면 도 11의 하부에 도시된 도면과 같이 도시할 수 있다. 도 11의 하부에 도시된 도면에 대해 설명하면, A 블록이 D 블록에게 통신을 요청하면, 제1 섀도우 블록(1111)이 d 통신을 먼저 수행하고, 이러한 통신은 3회간 반복된다(AdAdAd). 그리고 이후, 제1 섀도우 블록(1111)은 제2 노드(1120)에 위치한 D 블록과 실제 통신을 수행하여, 통신 결과 D를 수신한다(DDD). 그리고 제1 섀도우 블록(1111)은 자신이 선처리한 통신 d와, 이후 수신한 D를 비교하고, 비교 결과를 이용하여 제1 섀도우 블록(1111)에서의 저장 값을 조정(adjust)한다.
이하, 순서도 및 구체적인 예시를 통해 본 발명의 제2 실시예에 대해 기술하도록 한다.
도 12는 본 발명의 제2 실시예에 따른 시뮬레이션 동작 순서를 도시하는 순서도이다.
그리고 도 13은 섀도우 블록을 이용하여 노드들 사이의 통신 연산을 수행하는 개념을 도시하는 도면이다.
우선, 시뮬레이션 장치는 S1205 단계에서 각각의 노드에 섀도우 블록을 생성한다. 섀도우 블록은 상기한 바와 같이 적어도 하나 이상의 어드레스 영역을 통해 정의된다.
그리고 시뮬레이션 장치는 S1210 단계에서, 시뮬레이션이 모두 처리되었는지 여부를 판단한다. 시뮬레이션이 모두 처리되지 않은 경우, 시뮬레이션 장치는 S1215 단계로 진행하며, 이 경우 섀도우 블록은 자신이 속한 노드에 포함된 임의의 블록으로부터 특정 명령 수행 요청을 수신한다. 상기한 바와 같이, 특정 명령은 명령의 대상이 되는 디바이스의 종류에 상응하는 어드레스 영역에 저장된다. 예를 들어, 명령의 대상이 되는 디바이스의 종류가 메모리인 경우, 해당 명령은 메모리 어드레스 영역에 저장된다.
섀도우 블록은 S1220 단계로 진행하여, 명령을 수신한 어드레스 영역이 능동 디바이스 어드레스 영역인지 여부를 판단한다. 능동 디바이스 어드레스 영역인 경우, 섀도우 블록은 S1250 단계로 진행하여 해당 명령(트랜잭션, transaction)을 바이패스(by-pass) 시킨다.
상기의 과정은 도 13a에 대응된다. 즉, 재1 노드에 포함된 A 블록이 제2 노드에 포함된 D 블록에 특정 명령 요청(3번) 시, 상기 D 블록이 능동 디바이스인 경우 상기 명령을 바이패스(5번)한다.
다시 도 12의 설명으로 복귀하여, S1220 단계에서 능동 디바이스 어드레스 영역이 아닌 경우, 섀도우 블록은 S1230 단계로 진행하여 명령을 수신한 어드레스 영역이 메모리 어드레스 영역인지 여부를 판단한다. 메모리 어드레스 영역인 경우 섀도우 블록은 S1235 단계로 진행하여 자신이 내부적으로 구비하는 캐슁 데이터(caching data)를 이용하여 선처리(pre-processing)한다. 이 경우, 해당 명령이 읽기(read)인 경우 구비하고 있는 데이터를 전송하고, 쓰기(write)인 경우 데이터를 우선 저장하고 확인 신호(ack)를 전송한다. 한편, 해당 명령이 최초 발생한 읽기(read)인 경우, 이 경우에는 섀도우 블록이 구비하고 있는 데이터가 없기 때문에, 상기 데이터를 구비하고 있는 블록으로부터 데이터가 수신될 때까지 대기해야 한다. 섀도우 블록은 상기 데이터가 수신되면 이를 저장하고, 이후에 발생하는 선처리 과정에 사용한다.
선처리를 수행한 섀도우 블록은 S1240 단계로 진행하여 해당 명령(transaction)을 본래의 요청 대상이었던 블록에게 전달한다. 그러면 섀도우 블록은 S1260 단계에서 상기 본래 요청 대상이었던 블록으로부터 실제 처리(후처리) 결과를 수신하고, 선처리한 서비스의 타이밍과 후처리된 서비스의 타이밍 사이의 오차를 확인한다. 여기서 타이밍 사이의 오차란, 선처리한 서비스를 수행하는데 소요된 타이밍(예를 들어, 클럭 수)과, 후처리된 서비스를 수행하는데 소요된 타이밍의 차이를 말한다. 즉, 각각의 서비스를 수행하는데 소요된 클럭 수에 차이가 있을 수 있다.
그리고 섀도우 블록은 오차 발생 시, 후처리된 서비스의 타이밍 정보를 저장하고, 다음 순서의 선처리에 이용한다. 이 경우, 섀도우 블록이 선처리한 서비스 내용과 후처리된 서비스 내용은 동일하며, 단지 타이밍에 대한 오차만 발생하는 것을 가정한다.
한편, S1230 단계에서 명령을 수신한 어드레스 영역이 메모리 어드레스 영역이 아닌 경우, 섀도우 블록은 S1245 단계로 진행하여 명령을 수신한 영역이 수동 디바이스 어드레스 영역인지 여부를 판단한다. 수동 디바이스 어드레스 영역인 경우, 섀도우 블록은 S1250 단계로 진행하여 해당 디바이스에 대해 미리 정해진 동작(이 경우, 명령을 요청한 블록으로 리턴되는 행위를 의미한다)으로 선처리한다. 그리고 S1240 단계로 진행하여 타이밍 업데이트 절차를 수행한다.
상기 과정은 도 13b 및 도 13c에서 도시된다. 즉, 섀도우 블록이 특정 명령 요청을 수신(4,6,8번)하면, 선처리(7,9)하고 대상 노드의 해당 블록에 상기 명령을 전달(10)한다. 그리고 섀도우 블록은 대상 노드로부터 타이밍 정보를 수신(11)하여 이전에 저장된 타이밍 정보와 오차가 있는 경우, 해당 타이밍 정보를 업데이트한다.
도 14는 본 발명의 실시예에 따른 경우 시뮬레이션 성능이 향상된 결과를도시하는 그래프이다.
도 14에서 도시되는 바와 같이, 본 발명의 병렬 시뮬레이션 방법에 따르는 경우, 기존의 단일 시뮬레이션(single simulation)에 비해 91% 의 성능 향상이 있는 것을 확인할 수 있다.
본 명세서와 도면에 개시된 본 발명의 실시예들은 본 발명의 기술 내용을 쉽게 설명하고 본 발명의 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.

Claims (20)

  1. 복수 개의 블록을 이용하여 시뮬레이션을 수행하는 방법에 있어서,
    상기 시뮬레이션을 블록 고유한 기능을 수행하는 계산 연산(computation)과, 서로 다른 블록 사이에서 데이터 교환을 수행하는 통신 연산(communication)으로 분할하는 단계;
    상호 의존적인 계산 연산과 통신 연산끼리 그룹화하는 그룹화 단계; 및
    상기 계산 연산과 통신 연산 사이의 의존도 해결 여부에 따라 각각의 그룹에 포함된 연산을 상기 블록을 이용하여 수행하는 시뮬레이션 수행 단계를 포함하는 것을 특징으로 하는 시뮬레이션 수행 방법.
  2. 제1항에 있어서, 상기 시뮬레이션 수행 단계는,
    임의의 블록을 선택하는 단계;
    상기 선택된 블록이 가장 먼저 수행해야 하는 계산 연산을 각각의 그룹에서 추출하는 단계;
    상기 추출된 계산 연산 중, 통신 연산에 의존적이지 않음과 동시에 차후 발생할 통신 연산에 가장 근접한 계산 연산을 선택하는 단계; 및
    상기 선택된 계산 연산을 수행하는 단계를 더 포함하는 것을 특징으로 하는 시뮬레이션 수행 방법.
  3. 제2항에 있어서, 상기 시뮬레이션 수행 단계는,
    상기 계산 연산 수행 도중 통신 연산 수행 시점 도달 시, 상기 통신 연산을 수행하는 단계를 더 포함하는 것을 특징으로 하는 시뮬레이션 수행 방법.
  4. 제1항에 있어서,
    동일한 그룹에 포함된 통신 연산 및 계산 연산을 서로 의존적인 것을 특징으로 하는 시뮬레이션 수행 방법.
  5. 복수 개의 블록을 이용하여 시뮬레이션을 수행하는 장치에 있어서,
    상기 시뮬레이션을 구성하는 적어도 하나 이상의 그룹을 저장하는 구조 저장부;
    상기 시뮬레이션을 수행하는 복수 개의 블록을 포함하는 실행부; 및
    상기 시뮬레이션을 블록 고유한 기능을 수행하는 계산 연산(computation)과 서로 다른 블록 사이에서 데이터 교환을 수행하는 통신 연산(communication)으로 분할하고, 상호 의존적인 계산 연산과 통신 연산끼리 그룹화하며, 상기 계산 연산과 통신 연산 사이의 의존도 해결 여부에 따라 각각의 그룹에 포함된 연산을 상기 블록을 이용하여 수행하도록 제어하는 제어부를 포함하는 것을 특징으로 하는 시뮬레이션 수행 장치.
  6. 제5항에 있어서, 상기 제어부는,
    상기 연산 수행 시,
    임의의 블록을 선택하고, 상기 선택된 블록이 가장 먼저 수행해야 하는 계산 연산을 각각의 그룹에서 추출하며, 상기 추출된 계산 연산 중 통신 연산에 의존적이지 않음과 동시에 차후 발생할 통신 연산에 가장 근접한 계산 연산을 선택하고, 상기 선택된 계산 연산을 수행하도록 제어하는 것을 특징으로 하는 시뮬레이션 수행 장치.
  7. 제6항에 있어서, 상기 제어부는,
    상기 계산 연산 수행 도중 통신 연산 수행 시점 도달 시, 상기 통신 연산을 수행하도록 제어하는 것을 특징으로 하는 시뮬레이션 수행 장치.
  8. 제5항에 있어서,
    동일한 그룹에 포함된 통신 연산 및 계산 연산을 서로 의존적인 것을 특징으로 하는 시뮬레이션 수행 장치.
  9. 복수 개의 블록을 포함하는 적어도 두 개 이상의 노드가 상호 연결된 분산 시스템에서의 시뮬레이션 수행 방법에 있어서,
    상기 각각의 노드에 섀도우 블록(shadow block)을 설정하는 설정 단계;
    상기 섀도우 블록이, 임의의 노드에서 다른 노드로 전송되는 임의의 연산 요청을 수신하는 수신 단계; 및
    상기 섀도우 블록이, 상기 요청된 연산을 선처리하는 선처리 단계를 포함하는 것을 특징으로 하는 시뮬레이션 수행 방법.
  10. 제9항에 있어서,
    상기 선처리 후, 상기 섀도우 블록이 상기 연산 요청을 상기 다른 노드로 전달하는 단계; 및
    상기 섀도우 블록이 상기 다른 노드로부터 전송되는 처리 결과를 수신하여 업데이트하는 단계를 더 포함하는 것을 특징으로 하는 시뮬레이션 수행 방법.
  11. 제10항에 있어서, 상기 업데이트 단계는,
    선처리된 서비스를 수행하는데 소요된 시간과, 후처리된 서비스를 수행하는데 소요된 시간 사이의 타이밍 오차를 업데이트하는 것을 특징으로 하는 시뮬레이션 수행 방법.
  12. 제10항에 있어서, 상기 선처리 단계는,
    상기 섀도우 블록이 메모리에 대한 연산 요청을 수신한 경우, 리드 또는 라이트 기능을 수행하는 것을 특징으로 하는 시뮬레이션 수행 방법.
  13. 제10항에 있어서, 상기 선처리 단계는,
    상기 섀도우 블록이 능동 디바이스에 대한 연산 요청을 수신한 경우, 상기 연산 요청을 바이패스(by-pass)시키는 것을 특징으로 하는 시뮬레이션 수행 방법.
  14. 제10항에 있어서, 상기 선처리 단계는,
    상기 섀도우 블록이 수동 디바이스에 대한 연산 요청을 수신한 경우, 상기 수동 디바이스에 대한 동작 모델에 따라 서비스를 수행하는 것을 특징으로 하는 시뮬레이션 수행 방법.
  15. 분산 시스템에서 시뮬레이션을 수행하는 시뮬레이션 수행 장치에 있어서,
    복수 개의 블록을 포함하는 적어도 두 개 이상의 노드들을 포함하며,
    상기 노드들 각각은,
    임의의 노드에서 다른 노드로 전송되는 임의의 연산 요청을 수신하고, 상기 요청된 연산을 선처리하는 섀도우 블록을 포함하는 것을 특징으로 하는 시뮬레이션 수행 장치.
  16. 제15항에 있어서, 상기 섀도우 블록은,
    상기 선처리 후 상기 연산 요청을 상기 다른 노드로 전달하며, 상기 다른 노드로부터 전송되는 처리 결과를 수신하여 업데이트 하는 것을 특징으로 하는 시뮬레이션 수행 장치.
  17. 제16항에 있어서, 싱기 섀도우 블록은,
    선처리된 서비스를 수행하는데 소요된 시간과, 후처리된 서비스를 수행하는데 소요된 시간 사이의 타이밍 오차를 업데이트하는 것을 특징으로 하는 시뮬레이션 수행 장치.
  18. 제17항에 있어서, 상기 섀도우 블록은,
    메모리에 대한 연산 요청을 수신한 경우, 리드 또는 라이트 기능을 수행하는 것을 특징으로 하는 시뮬레이션 수행 장치.
  19. 제17항에 있어서, 상기 섀도우 블록은,
    능동 디바이스에 대한 연산 요청을 수신한 경우, 상기 연산 요청을 바이패스(by-pass)시키는 것을 특징으로 하는 시뮬레이션 수행 장치.
  20. 제17항에 있어서, 상기 섀도우 블록은,
    상기 섀도우 블록이 수동 디바이스에 대한 연산 요청을 수신한 경우, 상기 수동 디바이스에 대한 동작 모델에 따라 서비스를 수행하는 것을 특징으로 하는 시뮬레이션 수행 장치.
PCT/KR2012/005799 2011-07-22 2012-07-20 시뮬레이션 장치 및 그의 시뮬레이션 방법 WO2013015569A2 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2014521563A JP6072028B2 (ja) 2011-07-22 2012-07-20 シミュレーション装置及びそのシミュレーション方法
US14/233,610 US10162913B2 (en) 2011-07-22 2012-07-20 Simulation device and simulation method therefor
EP12818145.0A EP2735967A4 (en) 2011-07-22 2012-07-20 SIMULATION DEVICE AND CORRESPONDING SIMULATION METHOD
CN201280036428.0A CN103748557B (zh) 2011-07-22 2012-07-20 仿真设备及其仿真方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020110073219A KR101818760B1 (ko) 2011-07-22 2011-07-22 시뮬레이션 장치 및 그의 시뮬레이션 방법
KR10-2011-0073219 2011-07-22

Publications (2)

Publication Number Publication Date
WO2013015569A2 true WO2013015569A2 (ko) 2013-01-31
WO2013015569A3 WO2013015569A3 (ko) 2013-03-21

Family

ID=47601624

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2012/005799 WO2013015569A2 (ko) 2011-07-22 2012-07-20 시뮬레이션 장치 및 그의 시뮬레이션 방법

Country Status (6)

Country Link
US (1) US10162913B2 (ko)
EP (1) EP2735967A4 (ko)
JP (1) JP6072028B2 (ko)
KR (1) KR101818760B1 (ko)
CN (1) CN103748557B (ko)
WO (1) WO2013015569A2 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6232470B2 (ja) * 2015-06-16 2017-11-15 株式会社日立製作所 分散コンピューティング環境でシステムのプロセスの検証を行うための方法
US10366359B2 (en) * 2015-11-18 2019-07-30 Microsoft Technology Licensing, Llc Automatic extraction and completion of tasks associated with communications
KR101988482B1 (ko) * 2017-08-21 2019-06-12 국방과학연구소 전술 데이터 링크 시스템, 전술 데이터 링크 시스템의 데이터 처리 장치

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6948172B1 (en) * 1993-09-21 2005-09-20 Microsoft Corporation Preemptive multi-tasking with cooperative groups of tasks
JP3492105B2 (ja) * 1996-08-30 2004-02-03 株式会社東芝 ハードウェア/ソフトウェア協調シミュレーション装置及びシミュレーション方法
US6321363B1 (en) * 1999-01-11 2001-11-20 Novas Software Inc. Incremental simulation using previous simulation results and knowledge of changes to simulation model to achieve fast simulation time
JP2003067439A (ja) 2001-08-30 2003-03-07 Matsushita Electric Ind Co Ltd システムシミュレーション方法
JP2003233633A (ja) 2002-02-07 2003-08-22 Sanyo Electric Co Ltd 集積回路の設計方法
JP4667206B2 (ja) 2005-10-31 2011-04-06 富士通セミコンダクター株式会社 マルチコアモデルシミュレーションプログラム、該プログラムを記録した記録媒体、マルチコアモデルシミュレータ、およびマルチコアモデルシミュレーション方法
JP4806362B2 (ja) 2007-02-14 2011-11-02 富士通株式会社 並列処理制御プログラム、並列処理制御システムおよび並列処理制御方法
CN102089752B (zh) 2008-07-10 2014-05-07 洛克泰克科技有限公司 依赖性问题的有效率的并行计算
EP2282264A1 (en) 2009-07-24 2011-02-09 ProximusDA GmbH Scheduling and communication in computing systems
US9354944B2 (en) 2009-07-27 2016-05-31 Advanced Micro Devices, Inc. Mapping processing logic having data-parallel threads across processors
US8056080B2 (en) 2009-08-31 2011-11-08 International Business Machines Corporation Multi-core/thread work-group computation scheduler
US8453102B1 (en) * 2010-03-12 2013-05-28 Worldwide Pro Ltd. Hierarchical variation analysis of integrated circuits
CN101860752B (zh) 2010-05-07 2012-02-01 浙江大学 一种针对嵌入式多核系统的视频编码流水化并行方法
US9317637B2 (en) * 2011-01-14 2016-04-19 International Business Machines Corporation Distributed hardware device simulation

Non-Patent Citations (1)

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

Also Published As

Publication number Publication date
CN103748557B (zh) 2017-05-31
WO2013015569A3 (ko) 2013-03-21
JP6072028B2 (ja) 2017-02-01
EP2735967A2 (en) 2014-05-28
KR101818760B1 (ko) 2018-01-15
KR20130011805A (ko) 2013-01-30
JP2014522029A (ja) 2014-08-28
EP2735967A4 (en) 2015-07-22
US20140156251A1 (en) 2014-06-05
CN103748557A (zh) 2014-04-23
US10162913B2 (en) 2018-12-25

Similar Documents

Publication Publication Date Title
US9552448B2 (en) Method and apparatus for electronic system model generation
JP3746371B2 (ja) 性能シミュレーション方法
US6785760B2 (en) Performance of a PCI-X to infiniband bridge
WO2011053038A2 (ko) 교착 상태의 방지를 위한 데이터 처리 방법 및 시스템
WO2021034024A1 (en) Electronic apparatus and method for controlling thereof
WO2016064158A1 (ko) 재구성 가능 프로세서 및 그 동작 방법
WO2013015569A2 (ko) 시뮬레이션 장치 및 그의 시뮬레이션 방법
JP2001273154A (ja) 有限状態のマシーン制御をハードウエア実行データ構造操作により置換するパーフォーマンス向上方法およびシステム
KR101704751B1 (ko) 모듈 간의 타이밍 정보를 이용하는 멀티코어 시스템의 시뮬레이터, 및 그 시뮬레이션 방법
WO2018124331A1 (ko) 그래프 처리 시스템 및 그래프 처리 시스템의 동작 방법
JP2008059192A (ja) ハード・ソフト協調検証用シミュレータ
WO2014137008A1 (ko) 그래픽 자원 공유 시스템 및 방법
JP3387464B2 (ja) 通信制御システムとその制御方法
EP4142217A1 (en) Inter-node communication method and device based on multiple processing nodes
JP2901882B2 (ja) 計算機システムおよび入出力命令の発行方法
JPH11265297A (ja) 分散シミュレータシステム
WO2020184982A1 (ko) 이종클러스터 시스템에서 실행되는 프로그램을 실행시키는 방법 및 컴퓨터 프로그램
CN104050131A (zh) 片上系统及其操作方法
WO2023085611A1 (ko) 메모리 어레이 내의 연결 회로
WO2024058615A1 (ko) 신경 처리부를 포함하는 전자 장치 및 그 동작 방법
WO2024139420A1 (zh) 一种模型训练方法、装置、设备、系统和存储介质
WO2023128357A1 (ko) 소프트웨어 기반의 개별분리 아키텍처 시스템 시뮬레이터 및 그의 방법
CN116339944B (zh) 任务处理方法、芯片、多芯片模块、电子设备和存储介质
WO2024143564A1 (ko) 딥러닝 추론을 위한 컴퓨팅 시스템, 하드웨어 가속기 장치 및 방법
WO2022030866A1 (ko) 데이터 처리 장치 및 방법

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12818145

Country of ref document: EP

Kind code of ref document: A2

WWE Wipo information: entry into national phase

Ref document number: 14233610

Country of ref document: US

ENP Entry into the national phase

Ref document number: 2014521563

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 2012818145

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE