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

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

Info

Publication number
KR20130011805A
KR20130011805A KR1020110073219A KR20110073219A KR20130011805A KR 20130011805 A KR20130011805 A KR 20130011805A KR 1020110073219 A KR1020110073219 A KR 1020110073219A KR 20110073219 A KR20110073219 A KR 20110073219A KR 20130011805 A KR20130011805 A KR 20130011805A
Authority
KR
South Korea
Prior art keywords
simulation
block
communication
calculation
node
Prior art date
Application number
KR1020110073219A
Other languages
English (en)
Other versions
KR101818760B1 (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 KR1020110073219A priority Critical patent/KR101818760B1/ko
Priority to CN201280036428.0A priority patent/CN103748557B/zh
Priority to EP12818145.0A priority patent/EP2735967A4/en
Priority to US14/233,610 priority patent/US10162913B2/en
Priority to PCT/KR2012/005799 priority patent/WO2013015569A2/ko
Priority to JP2014521563A priority patent/JP6072028B2/ja
Publication of KR20130011805A publication Critical patent/KR20130011805A/ko
Application granted granted Critical
Publication of KR101818760B1 publication Critical patent/KR101818760B1/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

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

시뮬레이션 장치 및 그의 시뮬레이션 방법{SIMULATION APPARATUS AND SIMULATION METHOD THEREOF}
본 발명은 시스템 성능을 신속하고 정확하게 미리 측정하고 예측하는 시뮬레이션 방법 및 장치에 관한 것이다. 보다 구체적으로, 본 발명은 서로 의존적인 계산 연산(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% 의 성능 향상이 있는 것을 확인할 수 있다.
본 명세서와 도면에 개시된 본 발명의 실시예들은 본 발명의 기술 내용을 쉽게 설명하고 본 발명의 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
910 : 구조 저장부
920 : 실행부
930 : 제어부

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항에 있어서, 상기 섀도우 블록은,
    상기 섀도우 블록이 수동 디바이스에 대한 연산 요청을 수신한 경우, 상기 수동 디바이스에 대한 동작 모델에 따라 서비스를 수행하는 것을 특징으로 하는 시뮬레이션 수행 장치.
KR1020110073219A 2011-07-22 2011-07-22 시뮬레이션 장치 및 그의 시뮬레이션 방법 KR101818760B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020110073219A KR101818760B1 (ko) 2011-07-22 2011-07-22 시뮬레이션 장치 및 그의 시뮬레이션 방법
CN201280036428.0A CN103748557B (zh) 2011-07-22 2012-07-20 仿真设备及其仿真方法
EP12818145.0A EP2735967A4 (en) 2011-07-22 2012-07-20 SIMULATION DEVICE AND CORRESPONDING SIMULATION METHOD
US14/233,610 US10162913B2 (en) 2011-07-22 2012-07-20 Simulation device and simulation method therefor
PCT/KR2012/005799 WO2013015569A2 (ko) 2011-07-22 2012-07-20 시뮬레이션 장치 및 그의 시뮬레이션 방법
JP2014521563A JP6072028B2 (ja) 2011-07-22 2012-07-20 シミュレーション装置及びそのシミュレーション方法

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
KR20130011805A true KR20130011805A (ko) 2013-01-30
KR101818760B1 KR101818760B1 (ko) 2018-01-15

Family

ID=47601624

Family Applications (1)

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

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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190020479A (ko) * 2017-08-21 2019-03-04 국방과학연구소 전술 데이터 링크 시스템, 전술 데이터 링크 시스템의 데이터 처리 장치

Families Citing this family (2)

* 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

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 富士通株式会社 並列処理制御プログラム、並列処理制御システムおよび並列処理制御方法
EP2297647A4 (en) 2008-07-10 2012-12-12 Rocketick Technologies Ltd EFFICIENT PARALLEL CALCULATION OF DEPENDENCE PROBLEMS
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190020479A (ko) * 2017-08-21 2019-03-04 국방과학연구소 전술 데이터 링크 시스템, 전술 데이터 링크 시스템의 데이터 처리 장치

Also Published As

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

Similar Documents

Publication Publication Date Title
US20120254881A1 (en) Parallel computer system and program
US6507809B1 (en) Method and system for simulating performance of a computer system
CN115098412B (zh) 外设访问控制器、数据访问装置及对应方法、介质和芯片
JP5885481B2 (ja) 情報処理装置、情報処理方法、及びプログラム
US20160188477A1 (en) Electronic system with data management mechanism and method of operation thereof
JP7379668B2 (ja) 機械学習ワークロードのためのタスクスケジューリング
KR20210080009A (ko) 가속기, 가속기의 동작 방법 및 가속기를 포함한 디바이스
KR101818760B1 (ko) 시뮬레이션 장치 및 그의 시뮬레이션 방법
US10579303B1 (en) Memory controller having command queue with entries merging
CN105677491A (zh) 一种数据传输方法及装置
JP2008059192A (ja) ハード・ソフト協調検証用シミュレータ
CN106250348A (zh) 一种基于gpu访存特性的异构多核架构缓存管理方法
CN103914333B (zh) 基于片上网络互连的多核存储系统仿真器
CN102446155A (zh) 同步装置及方法
EP4142217A1 (en) Inter-node communication method and device based on multiple processing nodes
KR20220146835A (ko) 컴퓨팅 자원 분할 운용 방법 및 장치
JP5907607B2 (ja) 処理配置方法及びプログラム
JP2016162008A (ja) データ配置決定装置、データ配置決定プログラム及びデータ配置決定方法
US10776139B2 (en) Simulation apparatus, simulation method, and computer readable medium
CN111028132A (zh) 一种基于SystemC的GPU命令处理器单元硬件TLM微结构
US20220019487A1 (en) Communication Between Host and Accelerator Over Network
JP2020140284A (ja) ベクトル演算処理装置、ベクトル演算処理装置による配列変数初期化方法、及び、ベクトル演算処理装置による配列変数初期化プログラム
CN116991483B (zh) 一种针对语言模型计算的流水线并行方法及装置
CN116339944B (zh) 任务处理方法、芯片、多芯片模块、电子设备和存储介质
CN112445724B (zh) 针对片上存储器重用的链接时地址分配方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
R401 Registration of restoration