KR102325612B1 - 시뮬레이터를 구현하는 방법, 장치, 기기 및 매체 - Google Patents
시뮬레이터를 구현하는 방법, 장치, 기기 및 매체 Download PDFInfo
- Publication number
- KR102325612B1 KR102325612B1 KR1020200003283A KR20200003283A KR102325612B1 KR 102325612 B1 KR102325612 B1 KR 102325612B1 KR 1020200003283 A KR1020200003283 A KR 1020200003283A KR 20200003283 A KR20200003283 A KR 20200003283A KR 102325612 B1 KR102325612 B1 KR 102325612B1
- Authority
- KR
- South Korea
- Prior art keywords
- module
- data
- simulation
- simulator
- simulation module
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/36—Circuit design at the analogue level
- G06F30/367—Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/2236—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Debugging And Monitoring (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
본 출원은 시뮬레이터를 구현하는 방법, 장치, 기기 및 매체에 관한 것이다. 상기 방법은, 유니파이드 스토리지 파일에서 시뮬레이터의 제1 시뮬레이션 모듈에 쓰이는 제1 데이터를 읽어온 후, 제1 시뮬레이션 모듈이 제1 데이터를 처리하면서 생성한 제2 데이터를 유니파이드 스토리지 파일에 입력하는 단계를 포함한다. 상기 방법은, 유니파이드 스토리지 파일에서 시뮬레이터의 제2 시뮬레이션 모듈에 쓰이는 제2 데이터를 읽어온 후, 제2 시뮬레이션 모듈이 제2 데이터를 처리하면서 생성한 제3 데이터를 유니파이드 스토리지 파일에 입력하는 단계를 더 포함한다. 본 출원의 실시예의 칩 시뮬레이터에 의하면, 각 시뮬레이션 모듈이 모두 유니파이드 스토리지 파일과의 데이터 커넥션이 이루어지나, 각각의 모듈간에는 어떠한 데이터 커넥션도 이루어지지 않는다. 이는 시뮬레이션 모듈을 자유롭게 조합하고 실행순서를 변경하는데 도움을 주기 때문에 칩 시뮬레이터 개발의 효율을 높여준다.
Description
본 출원은 전체적으로 시뮬레이터 개발 영역에 관한 것이며, 더 구체적으로 시뮬레이터를 구현하는 방법, 장치, 기기 및 컴퓨터 판독 가능 저장 매체에 관한 것이다.
시뮬레이터는 보통 소프트웨어에 의해 개발된 시뮬레이션 프로그램이고, 일부 특정한 하드웨어 플랫폼을 시뮬레이션할 수 있으며, 통상적인 시뮬레이터는 예컨대 컴퓨터 시뮬레이터, 주행 시뮬레이터, 비행 시뮬레이터 등이 있다. 칩은 집적회로라고도 불리는 실리콘 웨이퍼이며, 칩 개발 과정에서 보통 선제적 혹은 동시에 대응되는 기능 시뮬레이터를 개발해야 한다. 기능 시뮬레이터는 주로 칩 하드웨어 설계의 정확성을 검증하는데 쓰이며, 하드웨어 설계방안의 가능성을 모색함과 동시에 개발자 및 테스트 인력에게 소프트웨어 플랫폼을 제공할 수 있어서, 칩 개발, 테스트 및 검증의 속도를 향상시킨다.
시뮬레이터 개발 목표를 실현하기 위해서는 시뮬레이터와 칩의 행위 및 성능이 최대한 일치해야 한다. 특히 기능 시뮬레이터의 경우, 통상적으로 실행결과와 칩이 완전히 같아야 하고 기능도 완전히 같아야 한다. 보통 정확한 데이터여야만 칩에 대한 검증과 테스트를 할 수 있고, 절대적인 참고 역할을 할 수 있다. 하지만 기능이 완벽하고 정확한 기능 시뮬레이터를 만들려면 반드시 칩 하드웨어를 반복적으로 검사해야 하고, 시뮬레이터 자체적으로 테스트를 반복해야 하므로, 업무를 완성하는데 상당한 인력과 시간이 소모된다. 따라서 기능 시뮬레이터가 칩 설계방안 모색을 지원하여 설계자와 개발자의 편의를 제공할 필요가 있다.
본 출원의 목적은 시뮬레이터를 구현하는 것에 대한 방법, 장치, 전자 기기 및 컴퓨터 판독 가능 저장 매체에 관한 것이다.
제1 양태에 있어서, 시뮬레이터를 구현하는 방법을 제공하는데, 상기 방법은, 유니파이드(Unified) 스토리지 파일에서 시뮬레이터의 제1 시뮬레이션 모듈에 쓰이는 제1 데이터를 읽어오는 단계 - 상기 제1 시뮬레이션 모듈은 칩의 제1 기능을 시뮬레이션하는데 사용되고, 상기 유니파이드 스토리지 파일은 상기 시뮬레이터의 제1 시뮬레이션 모듈이 입력 및 출력하는 데이터를 통합 저장함 - , 상기 유니파이드 스토리지 파일에 제2 데이터를 입력하는 단계 - 상기 제2 데이터는 상기 제1 시뮬레이션 모듈이 상기 제1 데이터를 처리하여 생성됨 - , 상기 유니파이드 스토리지 파일에서 상기 시뮬레이터의 제2 시뮬레이션 모듈에 쓰이는 상기 제2 데이터를 읽어오는 단계 - 상기 제2 시뮬레이션 모듈은 상기 칩의 제2 기능을 시뮬레이션하는데 사용되고, 상기 제2 시뮬레이션 모듈은 상기 제1 시뮬레이션 모듈 다음에 실행됨 - , 및 상기 유니파이드 스토리지 파일에 제3 데이터를 입력하는 단계 - 상기 제3 데이터는 상기 제2 시뮬레이션 모듈이 상기 제2 데이터를 처리하여 생성됨 - 를 포함한다.
제2 양태에 있어서, 시뮬레이터를 구현하는 장치를 제공하는데, 상기 장치는, 유니파이드 스토리지 파일에서 시뮬레이터의 제1 시뮬레이션 모듈에 쓰이는 제1 데이터를 읽어오도록 구성된 제1 리딩모듈 - 상기 제1 시뮬레이션 모듈은 칩의 제1 기능을 시뮬레이션하는데 사용되고, 상기 유니파이드 스토리지 파일은 상기 시뮬레이터의 제1 시뮬레이션 모듈이 입력 및 출력하는 데이터를 통합 저장함 - , 상기 유니파이드 스토리지 파일에 제2 데이터를 입력하도록 구성된 제1 입력모듈 - 상기 제2 데이터는 상기 제1 시뮬레이션 모듈이 상기 제1 데이터를 처리하여 생성됨 - , 상기 유니파이드 스토리지 파일에서 상기 시뮬레이터의 제2 시뮬레이션 모듈에 쓰이는 상기 제2 데이터를 읽어오도록 구성된 제2 리딩모듈 - 상기 제2 시뮬레이션 모듈은 상기 칩의 제2 기능을 시뮬레이션하는데 사용되고, 상기 제2 시뮬레이션 모듈은 상기 제1 시뮬레이션 모듈 다음에 실행됨 - , 및 상기 유니파이드 스토리지 파일에 제3 데이터를 입력하도록 구성된 제2 입력모듈 - 상기 제3 데이터는 상기 제2 시뮬레이션 모듈이 상기 제2 데이터를 처리하여 생성됨 - 을 포함한다.
제3 양태에 있어서, 한 개 또는 다수의 프로세서; 및 한 개 또는 다수의 프로그램을 저장하는 메모리를 포함하는 전자 기기에 있어서, 상기 한 개 또는 다수의 프로그램이 상기 한 개 또는 다수의 프로세서에 의해 실행되어, 본 출원의 실시예에 따른 방법을 구현하도록 하는 전자 기기를 제공한다.
제4 양태에 있어서, 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능 저장 매체에 있어서, 상기 컴퓨터 프로그램이 프로세서에 의해 실행될 경우 본 출원의 실시예에 따른 복수의 칩 사이의 통신 지원 방법을 구현하는 컴퓨터 판독 가능 저장 매체를 제공한다.
과제 해결수단에서 설명한 내용은 본 출원의 실시예의 핵심 특징 또는 중요 특징을 제한하기 위함이 아니며, 본 출원의 범위를 한정하려는 것도 아니라고 이해되어야 한다. 본 출원의 기타 특징은 후문의 설명을 통해 더 명확하게 설명하고자 한다.
도면과 후문의 상세한 설명을 참고하면 본 출원의 각 실시예의 상기 설명과 기타 특징 및 장점이 더 분명해 질 것이다. 도면에서 같거나 비슷한 도면 기호는 같거나 비슷한 요소를 나타낸다.
도 1은 전통적인 기능 시뮬레이터의 구조를 도시한 설명도이다.
도 2는 본 출원의 실시예에 따른 시뮬레이터를 구현하는 방법의 흐름도이다.
도 3은 본 출원의 실시예에 따른 칩을 시뮬레이션하는 기능 시뮬레이터의 구조를 도시한 설명도이다.
도 4는 본 출원의 실시예에 따른 칩의 또 다른 기능을 시뮬레이션하는 시뮬레이터의 구조를 도시한 설명도이다.
도 5는 본 출원의 실시예에 따른 기능 시뮬레이터의 시뮬레이션 모듈의 실행순서를 조정하는 것을 도시한 설명도이다.
도 6은 본 출원의 실시예에 따른 기능 시뮬레이터의 시뮬레이션 모듈을 삭제 및 추가하는 것을 도시한 설명도이다.
도 7은 본 출원의 실시예에 따른 시뮬레이터를 구현하는 장치의 블록도이다.
도 8은 본 출원의 일부 실시예를 실시할 수 있는 전자 기기의 블록도이다.
도 1은 전통적인 기능 시뮬레이터의 구조를 도시한 설명도이다.
도 2는 본 출원의 실시예에 따른 시뮬레이터를 구현하는 방법의 흐름도이다.
도 3은 본 출원의 실시예에 따른 칩을 시뮬레이션하는 기능 시뮬레이터의 구조를 도시한 설명도이다.
도 4는 본 출원의 실시예에 따른 칩의 또 다른 기능을 시뮬레이션하는 시뮬레이터의 구조를 도시한 설명도이다.
도 5는 본 출원의 실시예에 따른 기능 시뮬레이터의 시뮬레이션 모듈의 실행순서를 조정하는 것을 도시한 설명도이다.
도 6은 본 출원의 실시예에 따른 기능 시뮬레이터의 시뮬레이션 모듈을 삭제 및 추가하는 것을 도시한 설명도이다.
도 7은 본 출원의 실시예에 따른 시뮬레이터를 구현하는 장치의 블록도이다.
도 8은 본 출원의 일부 실시예를 실시할 수 있는 전자 기기의 블록도이다.
후문에서는 도면을 참조하여 더 상세하게 본 출원의 실시예를 설명하고자 한다. 한편, 도면에서 본 출원의 일부 실시예를 도시하였는데, 이는 더 분명하고 완전하게 본 출원을 이해하고자 함이며, 후문에서 설명한 실시예에 본 출원이 국한되지 않고, 본 출원은 다양한 형식으로 구현될 수 있다고 이해하여야 할 것이다. 또한 본 출원의 도면과 실시예는 시범적 용도로만 쓰인 것이고, 본 출원의 청구범위를 제한하는 것이 아니라고 이해되어야 한다.
본 출원의 실시예 설명 중, '포함' 및 그 유사한 용어는 개방적으로 해석되어야 할 것이다. 즉, '포함하지만 한정되지 않는다'는 의미이다. '기반하여'는 '적어도 부분적으로 기반하여'로 해석되어야 한다. '일 실시예' 또는 '본 실시예'는 '적어도 일 실시예'로 해석되어야 한다. '일부 실시예'는 '적어도 일부 실시예'로 해석되어야 한다. 후문에서는 기타 다른 명확한 정의와 함축적인 정의가 나올 수 있다.
도 1은 전통적인 기능 시뮬레이터의 구조를 도시한 설명도(100)이다. 기능 시뮬레이터(101)는 많은 시뮬레이션 모듈(110, 120, 130, 140, 150)을 포함하고, 시뮬레이션 모듈은 각각 하드웨어 칩의 일부 기능을 시뮬레이션할 수 있다. 기능 시뮬레이터(101)는, 전송된 입력(105)에 기반하여, 각 시뮬레이션 모듈의 처리를 거쳐 상응하는 출력(155)을 도출한다. 이와 같은 시뮬레이션 모듈 간의 데이터의 스트림 순서는 보통 고정되어 있어서 각 시뮬레이션 모듈에서 상호작용을 하는 앞뒤 시뮬레이션 모듈을 정의해준다. 예를 들어, 시뮬레이션 모듈(120)에 시뮬레이션 모듈(110)에서 입력 데이터를 받고 시뮬레이션 모듈(110)과 커넥션하는 것을 정의; 동시에 시뮬레이션 모듈(120)에 출력 데이터를 시뮬레이션 모듈(130)로 전송하고, 시뮬레이션 모듈(130)에 커넥션하는 것도 정의하여야 한다. 따라서 각각의 시뮬레이션 모듈에 커넥션 되는 입력 데이터 모듈과 출력 데이터 모듈을 정의해 주어야 하고, 어떤 시뮬레이션 모듈의 입력 데이터 모듈 및/혹은 출력 데이터 모듈에 수정이 필요할 때는 해당 모듈에서 재정의를 해주어야 한다.
그렇기 때문에 종래의 시뮬레이터 개발에서는 보통 칩 하드웨어의 구체적인 설계에 따라 정의를 내리고 개발을 한다. 예를 들어 칩의 어떤 기능 모듈이 있다면, 대응하는 기능 시뮬레이터에도 상응하는 시뮬레이션 모듈이 있다. 기능 시뮬레이터 내부의 각 시뮬레이션 모듈은 소프트웨어 프로그램의 프로그래밍 인터페이스를 통해 긴밀하게 연결되고, 각 시뮬레이션 모듈의 데이터 스트림의 순서는 기본적으로 고정되어 있고, 각각의 시뮬레이션 모듈 간에는 프로그램 인터페이스를 통해 연결 및 데이터 교환을 한다. 하지만 이렇게 긴밀하게 결합된 설계는 시뮬레이션 모듈을 추가, 삭제 및/혹은 재배치를 할 때 마다 수많은 시뮬레이션 모듈을 수정해야 하므로, 기능 시뮬레이터 개발의 가용성이 낮아지고 조정이 비교적 번거로워 개발 효율을 떨어뜨린다. 따라서 종래기술의 문제점은 하드웨어를 시뮬레이션하는데 쓰이는 칩의 칩 시뮬레이터의 개발 효과가 낮은 편이고 확장성이 부족하다는 점이다.
이를 위해 본 출원의 실시예에서는 칩 시뮬레이터에 필요한 모듈화의 빠른 개발을 가능하게 하는 방안을 제시한다. 본 출원에 따른 칩 시뮬레이터와 각 시뮬레이션 모듈은 모두 유니파이드 스토리지 파일과 데이터 커넥션을 하는데, 각각의 모듈 간에는 데이터 커넥션이 이루어 지지 않는다. 이는 시뮬레이션 모듈의 자유로운 조합과 실행순서 조정을 용이하게 해주어 칩 시뮬레이터 개발효과와 칩 시뮬레이터의 확장성을 높여준다.
그 밖에도 발명인은 인공지능(AI) 칩이 보통의 칩에 비해 업무 지원 변화가 상대적으로 빠르고 인터페이스 변경이 수월하다는 것을 발견하였다. 인터페이스 변경은 보통 연관된 시뮬레이션 모듈과 데이터 처리 프로세스의 변경까지 이어진다. 한편 딥러닝 알고리즘이 빠르게 변화하고 종류도 다양해지고 있어 다른 처리 환경에서 다른 기능의 모듈과 특정한 데이터 통로가 필요하다. 따라서 AI칩의 경우, 기능 시뮬레이터의 모듈화가 더욱 시급하며, 유연한 설계와 개발 목표를 실현시킬 필요가 있다. 그렇기 때문에 AI칩 시뮬레이터에 있어서 레이어와 모듈을 구분한 결합 설계가 더 필요하고, 이를 통해 새로운 변화와 설계 요구에 빠르게 발 맞출 수 있다. 아래의 도 2 내지 도 8은 본 출원의 실시예 예시를 구현하는 것에 대한 설명이다.
도 2는 본 출원에 따른 시뮬레이터를 구현하는 방법(200)의 흐름도이다. 도 2의 방법(200)을 더 자세히 설명하기 위해 도 3의 본 출원에 따른 칩을 시뮬레이션 하는데 필요한 기능 시뮬레이터의 구조를 함께 참조하여 설명하고자 한다.
블록(202)에서, 유니파이드 스토리지 파일에서 시뮬레이터의 제1 시뮬레이션 모듈에 필요한 제1 데이터를 읽는다. 그 중 제1 시뮬레이션 모듈은 칩의 제1 기능을 시뮬레이션 하는데 쓰이며, 유니파이드 스토리지 파일은 시뮬레이션 모듈의 입력 데이터와 출력 데이터를 통합 저장한다. 예를 들어, 도 3은 칩을 시뮬레이션하는 기능 시뮬레이터(301)의 구조를 나타내는 설명도(300)인데, 화살표(311)를 보면, 시뮬레이션 모듈(310)이 유니파이드 스토리지 파일(330)에서 데이터(331)를 읽고, 그 중 시뮬레이션 모듈(310)은 매트릭스 연산과 같은 칩의 어떤 기능을 시뮬레이션할 수 있다. 본 출원의 실시예에서 유니파이드 스토리지 파일(330)은 각 시뮬레이션 모듈의 입력 및 출력 데이터를 통합 저장 할 수 있고, 각 시뮬레이션 모듈에 통합적인 데이터 커넥션 인터페이스를 제공함으로써 각 시뮬레이션 모듈 간에 데이터의 직접 연결이 필요 없게 되었다. 본 출원의 일부 실시예에서 데이터(331)는 기능 시뮬레이터(301) 외부의 입력일 수 있다. 추가적으로 설명하자면, 데이터(331)는 기능 시뮬레이터(301)의 기타 다른 시뮬레이션 모듈(미도시)이 생성한 출력결과 일 수도 있다.
블록(204)에서, 제1 시뮬레이션 모듈이 제1 데이터를 처리하여 생성된 제2 데이터를 유니파이드 스토리지 파일에 입력한다. 예를 들어 도 3을 참조하면, 시뮬레이션 모듈(310)이 데이터(331)를 처리(예를 들어 매트릭스 연산)하여 데이터(332)를 생성하고, 화살표(312)와 같이 데이터(332)를 유니파이드 스토리지 파일(330)에 전송한다.
블록(206)에서, 유니파이드 스토리지 파일에서 시뮬레이터의 제2 시뮬레이션 모듈에 필요한 제2 데이터를 읽어온다. 상기의 제2 시뮬레이션 모듈은 칩의 제2 기능을 시뮬레이션하고, 제2 시뮬레이션 모듈은 제1 시뮬레이션 모듈 다음에 실행되도록 배치되어 있다. 도 3의 화살표(313)를 참조하면, 시뮬레이션 모듈(320)이 유니파이드 스토리지 파일(330)에서 데이터(332)를 읽어온다. 상기의 시뮬레이션 모듈은 연산을 활성화해주는 것과 같은 칩의 어떠한 기능을 시뮬레이션 해준다. 시뮬레이션 모듈(320)은 시뮬레이션 모듈(310) 다음에 실행되도록 배치되어 있어서, 시뮬레이션 모듈(320)이 읽어오는 입력 데이터(332)는 시뮬레이션 모듈(310)의 출력 결과(즉, 출력 데이터)이다. 한편, 제1 시뮬레이션 모듈과 제2 시뮬레이션 모듈은 하드웨어 칩의 각종 기능을 각각 따로 시뮬레이션 할 수 있다고 이해되어야 할 것이다.
블록(208)에서, 제2 시뮬레이션 모듈이 제2 데이터를 처리하면서 생성된 제3 데이터를 유니파이드 스토리지 파일에 입력한다. 도 3을 참조하면, 시뮬레이션 모듈(320)이 데이터(332)를 처리(예를 들어 연산 활성화)하여 데이터(333)를 생성한 후, 화살표(314)와 같이 데이터(333)를 유니파이드 스토리지 파일(330)에 전송한다.
따라서 본 출원 실시예의 방법(200)에 따르면, 칩 시뮬레이터의 각 시뮬레이션 모듈은 모두 유니파이드 스토리지 파일과 데이터 커넥션을 하며, 각 시뮬레이션 모듈 간에는 직접적인 데이터 교환을 하지 않는다. 이러한 방식을 통해 칩 시뮬레이터의 각 시뮬레이션 모듈은 오직 유니파이드 스토리지 파일과의 커넥션만 실행하면 되므로, 후문에 이어지는 모듈의 자유로운 조합과 모듈 실행 순서 조정에 도움을 주고 나아가 칩 시뮬레이터 개발의 효과와 확장성을 제고해 준다.
또한 본 출원의 실시예에 따른 시뮬레이션 모듈(310)은 데이터(331)에 대한 연산을 마친 이후에 유니파이드 스토리지 파일(330)에 연산 결과를 전송하는 것이지 시뮬레이션 모듈(320)에 직접 전송하는 것이 아니다. 일부 실시예에서 데이터(332)를 유니파이드 스토리지 파일(330)에 입력할 때, 유니파이드 스토리지 파일(330)에서 데이터(332)의 유형, 위치, 크기 등 정보를 기록할 수 있다.
본 출원의 실시예에 따른 기능 시뮬레이터의 각 시뮬레이션 모듈은 모두 데이터 정리, 데이터 연산 및 데이터 전송 등의 데이터 처리기능을 갖추고 있다. 모든 시뮬레이션 모듈은 데이터를 처리한 다음 그 결과를 유니파이드 스토리지 파일에 입력할 수 있고, 데이터의 유형, 데이터의 위치, 데이터의 크기 등 정보를 표기한다. 다른 시뮬레이션 모듈은 데이터를 읽어올 때, 모두 유니파이드 스토리지 파일에서 데이터를 읽고, 유니파이드 스토리지 파일의 데이터 배치에 따라 해석을 하며, 획득한 데이터를 자체 기능 모듈에서 조작하고 연산 결과를 다시 유니파이드 스토리지 파일에 라이트 백(write back)하며, 데이터의 유형, 데이터의 위치, 데이터의 크기 등 정보를 표기한다. 이러한 방식을 통해 각 시뮬레이션 모듈 간에는 어떠한 프로세스 연결이 없다. 모든 시뮬레이션 모듈은 데이터 스토리지 파일에 커넥션되어 있어서 기타 다른 시뮬레이션 모듈과는 연결관계가 없다.
상기 방식을 통해 각 시뮬레이션 모듈은 다른 시뮬레이션 모듈로부터 독립되어 있어, 유니파이드 스토리지 파일의 데이터 정리 및 읽기에만 집중하면 된다. 시뮬레이션 모듈은 유니파이드 스토리지 파일에서 필요한 데이터를 읽어온 후 연산 및 처리를 하고, 결과를 유니파이드 스토리지 파일에 라이트 백 하여 후속 시뮬레이션 모듈이 다시 사용하도록 한다. 모든 시뮬레이션 모듈의 개발과 테스트는 한 개의 유니파이드 스토리지 파일만을 인터페이스로 삼고, 모듈 내부 자체의 프로세스 개발과 디버그만 하면 되며, 그 뒤로는 어떤 한 시뮬레이션 모듈과 로직 순서 조정 및 협업을 할 수 있다.
본 출원의 발명인은 현재 AI칩의 설계가 일반적인 상용 칩과 조금 다르다는 점을 인식하였다. AI칩은 통용되는 연산처리를 위해 설계된 것이 아니고, 실제 연산과 소프트웨어 응용에 더 가깝다는 점이다. 따라서 AI칩은 실제 업무 환경에 있어서 알고리즘 가속, 애플리케이션 속도향상의 구체적인 문제를 해결해야 한다. AI칩의 설계와 요구사항이 반드시 실제 업무와 알고리즘의 발전 및 시장 수요에 부합해야 응용에까지 목표를 실현 할 수 있다. 소프트웨어 알고리즘이 끊임없이 변화하고 반복되는 과정에서 하위레벨의 AI칩의 빠른 설계와 검증을 해내는 방안이 필요하다. 이러한 상황에서 보통은 AI칩의 기능 시뮬레이터를 통해 구현하는데, 이는 하드웨어 개발주기가 상대적으로 길어서 소프트웨어의 기능 시뮬레이터로 빠른 개발을 하고 설계 방안의 타당성 및 정확성을 검증해야 하기 때문이다. 따라서 소프트웨어의 기능 시뮬레이터가 반드시 빠른 속도로 가용성 있게 구현되어 실제 업무를 지원하도록 요구되는 것이다.
본 출원 실시예의 방법에 따른 각 시뮬레이션 모듈의 연산 프로세스는 자유로운 조합이 가능하므로, AI칩이 시뮬레이션 설계 수요에 더 잘 부합한다. AI 알고리즘의 변화와 반복은 매우 빠르고, 알고리즘의 각 시뮬레이션 모듈의 순서와 연산관계도 유연하게 변화할 것이다. 본 출원의 실시예에서 각 기능 시뮬레이터의 시뮬레이션 모듈을 자유롭게 배치할 수 있고 기능 시뮬레이터의 실행 순서를 조정할 수 있으므로, 상위 레벨의 애플리케이션 변화를 충족시킬 수 있다. 이 과정에서 본 출원의 실시예에 따른 기능 시뮬레이터는 거의 변동이 필요 없어 개발 및 테스트의 업무량을 눈에 띄게 줄여주었고, 이로써 AI칩이 설계의 타당성을 검증하는데 빠른 속도로 지원할 수 있다.
본 출원의 실시예에서 시뮬레이션한 칩은 가속 컴퓨팅 임무를 수행하는 AI칩에 쓸 수 있다. AI칩에는 데이터 정리 모듈, 매트릭스 연산 모듈, 연산 활성화 모듈 및 다이렉트 메모리 액세스(DMA) 모듈 등 다양한 알고리즘 연산 모듈이 있다. 이러한 방식을 통해, 본 출원의 기능 시뮬레이터로 AI칩 설계의 타당성을 검증할 수 있고, AI칩 설계 검증의 수요를 효과적으로 해결 할 수 있다.
도 4는 본 출원의 실시예에 따른 칩을 시뮬레이션 하는 또 다른 기능 시뮬레이터(401)의 구조를 나타내는 설명도(400)이다. 도 4에 표시된 바와 같이, 기능 시뮬레이터(401)는 다수의 시뮬레이션 모듈(410, 420, 430, 440, 450), 흐름제어 구성파일(460) 및 유니파이드 스토리지 파일(470)을 포함하며, 그 중 각 시뮬레이션 모듈은 칩(예를 들어 AI칩)의 일부 기능을 시뮬레이션한다.
도 4를 참조하면, 흐름제어 구성파일(460)은 실행순서(465)와 같은 시뮬레이터의 많은 시뮬레이션 모듈 간의 실행 순서를 설정하는데 쓰인다. 상기 실행순서(465)는 예컨대 기능 시뮬레이터(401)가 가동된 후 기능 시뮬레이터(401)의 각 시뮬레이션 모듈의 실행 절차로, 먼저 시뮬레이션 모듈(410)이 실행된 후 시뮬레이션 모듈(420)이 실행되고, 그 후에 시뮬레이션 모듈(430)이 실행된 다음 시뮬레이션 모듈(440)이 실행되고, 이어서 시뮬레이션 모듈(450)이 실행된다. 다시 말해 기능 시뮬레이터(401)는 흐름제어 구성파일(460)에 설정된 실행순서에 따라 순차적으로 다수의 시뮬레이션 모듈을 실행시킨다. 유니파이드 스토리지 파일(470)은 각 시뮬레이션 모듈의 입력 및 출력 데이터를 통합 저장할 수 있고, 각 시뮬레이션 모듈에 통합적인 데이터 커넥션 인터페이스를 제공함으로, 각 시뮬레이션 모듈 간의 데이터 커넥션은 필요 없다. 따라서 각 시뮬레이션 모듈의 실행과정에서 유니파이드 스토리지 파일(470)에서 데이터를 읽고 처리결과를 유니파이드 스토리지 파일(470)에 통합적으로 입력하여 모든 연산 과정을 완성한다.
계속해서 도 4를 참고하면, 기능 시뮬레이터가 외부의 입력(405)을 수신하여 입력을 유니파이드 스토리지 파일(470)에 저장 혹은 임시저장 후, 실행 순서(465)에 따라 시뮬레이션 모듈(410)이 먼저 유니파이드 스토리지 파일(470)에서 데이터를 읽고, 처리완료 후 유니파이드 스토리지 파일(470)에 그 결과를 입력한다. 순서대로 시뮬레이션 모듈(420)이 유니파이드 스토리지 파일(470)에서 데이터를 읽은 후 실행결과를 입력하고, 시뮬레이션 모듈(430)이 유니파이드 스토리지 파일(470)에서 데이터를 읽은 후 결과를 입력, 시뮬레이션 모듈(440)이 유니파이드 스토리지 파일(470)에서 데이터를 읽은 후 결과값을 입력, 시뮬레이션 모듈(450)이 유니파이드 스토리지 파일(470)에서 데이터를 읽은 후 결과를 입력한다. 모든 시뮬레이션 모듈이 처리완료 후 최종 데이터를 유니파이드 스토리지 파일(470)에서 외부로 전송하는데 그것이 출력 (455)이다.
도 5는 본 출원 실시예에 따른 시뮬레이션 모듈의 실행순서를 조정하는 상태를 나타내는 설명도(500)이다. 예를 들어, 흐름제어 구성파일의 실행순서를 수정한 후, 수정한 실행순서에 따라 시뮬레이터의 다수 시뮬레이션 모듈의 처리 절차를 조정한다. 도 5와 같이, 새로운 설계의 검증이 필요하여 시뮬레이션 모듈(430)과 시뮬레이션 모듈(440)의 실행순서를 서로 바꿀 때, 흐름제어 구성파일(460)의 실행순서(465)만 바꾸면 된다. 그러면 기능 시뮬레이터(401)가 가동될 때 수정된 실행순서(465)에 따라 수정된 프로세스로 실행될 것이다. 따라서 본 출원의 실시예에 따르면 기능 시뮬레이터(401)의 각 시뮬레이션 모듈의 실행순서를 변경해야 할 때, 시뮬레이션 모듈 자체의 코드 혹은 인터페이스 연결을 수정할 필요가 없고, 흐름제어 구성파일(460)을 통해 설정만 하면 기능 시뮬레이터(401)의 모듈 실행 순서를 자유롭게 변경할 수 있어서, 칩 시뮬레이터의 개발 효율을 눈에 띄게 향상시킨다.
추가 혹은 부가적으로 설명하면, 기능 시뮬레이터에서 시뮬레이션 모듈을 삭제 및/혹은 추가할 때도 흐름제어 구성파일에서 실행 순서를 변경할 수 있다. 도 6은 본 출원의 실시예에 따른 시뮬레이션 모듈 삭제 및 시뮬레이션 모듈 추가를 나타내는 설명도(600)이다. 도 6에서 나타낸 것처럼, 도 4와 도 5를 비교하면 기능 시뮬레이터(401)에서 시뮬레이션 모듈(430, 440, 450)을 삭제하고 새로운 시뮬레이션 모듈(530, 540)(예를 들어 새로운 시뮬레이션 기능이 있는 새로운 시뮬레이션 모듈)을 추가하였다. 이에 따라 흐름제어 구성파일(460)의 실행순서(465)도 수정되었다. 그러면 기능 시뮬레이터(401)는 새로 수정된 실행순서(465)에 따라 시뮬레이션 프로세스를 실행한다. 즉, 먼저 시뮬레이션 모듈(410)이 실행된 후 시뮬레이션 모듈(420)이 작동하고, 그 후에 시뮬레이션 모듈(530)이, 그 다음에 시뮬레이션 모듈(540)이 실행된다.
본 출원의 실시예에 따른 기능 시뮬레이터의 각 시뮬레이션 모듈의 개발자는 자체 내부의 모듈 개발과 테스트에만 집중하면 되고, 각 시뮬레이션 모듈은 다른 시뮬레이션 모듈과 독립적인 지위를 가지고 있어서 개발자는 유니파이드 스토리지 파일의 데이터 정리와 읽기에만 신경 쓰면 된다. 각 시뮬레이션 모듈이 유니파이드 스토리지 파일에서 필요한 데이터를 읽은 후 연산 및 처리를 하고 그 결과를 유니파이드 스토리지 파일에 라이트 백(write back) 하여, 뒤따른 시뮬레이션 모듈이 사용하도록 한다. 이로써 기능 시뮬레이터 프레임 설계자는 자유롭게 시뮬레이터의 전체적인 구조를 세우고, 연산 경로와 데이터 처리 프로세스를 조정할 수 있다. 즉 각 시뮬레이션 모듈의 프로그램 코드를 수정할 필요가 없는 환경에서, 구조 설계자는 자유롭게 시뮬레이션 모듈을 추가, 교환 혹은 삭제 등의 배치를 하여 다양한 방법과 조합을 시도할 수 있다. 이런 방법을 통해 기능 시뮬레이터 개발과 테스트의 업무량을 감소시키고, 칩(예를 들어 AI칩)의 설계 및 검증 전반에 걸쳐 속도를 향상시킨다.
일부 실시예에서, 흐름제어 구성파일에서 시뮬레이터의 각 시뮬레이션 모듈에 대한 유니파이드 스토리지 파일에서의 데이터 읽기 및 쓰기 권한을 설정할 수도 있다. 이 방법을 통해 각 시뮬레이션 모듈이 일부 데이터만 읽어오게 할 수 있고, 다른 데이터를 읽거나 조작할 수 없게 하여 시뮬레이터의 안정성과 신뢰성을 보장할 수 있다.
따라서 본 출원의 실시예에 따른 각 시뮬레이션 모듈의 실행순서를 자유롭게 조합할 수 있으므로 AI칩의 설계 탐색에 더 잘 부합할 수 있다. AI 알고리즘의 변화와 반복이 매우 빠르게 진행되고, 알고리즘의 각 시뮬레이션 모듈의 순서와 연산관계도 유연하게 변화하고 있다. 그렇기 때문에 각 기능 시뮬레이터의 모듈을 자유롭게 배치할 수 있고 기능 시뮬레이터의 실행 순서를 조정할 수 있는 점은 상위 레벨의 응용 변화에 잘 부합할 수 있다.이 과정에서 본 출원의 실시예에 따른 기능 시뮬레이터는 최소한의 수정만 하면 되므로 개발 및 테스트 업무량을 크게 줄여주었고, AI칩이 설계의 타당성을 검증하는데 빠른 속도로 지원할 수 있게 하였다.
도 7은 본 출원에 따른 시뮬레이터를 구현하는 장치(700)를 도시한 블록도이다. 도 7을 보면, 장치(700)는 제1 리딩모듈(710), 제1 입력모듈(720), 제2 리딩모듈(730) 및 제2 입력모듈(740)을 포함한다. 제1 리딩모듈(710)은 유니파이드 스토리지 파일에서 시뮬레이터의 제1 시뮬레이션 모듈에 필요한 제1 데이터를 읽어오고, 그 중 제1 시뮬레이션 모듈은 칩의 제1 기능을 시뮬레이션하고, 유니파이드 스토리지 파일은 시뮬레이터의 시뮬레이션 모듈의 입력 데이터와 출력 데이터를 통합적으로 저장한다. 제1 입력모듈(720)은 유니파이드 스토리지 파일에 제2 데이터를 입력하고, 제2 데이터는 제1 시뮬레이션 모듈이 제1 데이터를 처리하여 생성한 것이다. 제2 리딩모듈(730)은 유니파이드 스토리지 파일에서 시뮬레이터의 제2 시뮬레이션 모듈에 필요한 제2 데이터를 읽어오며, 제2 시뮬레이션 모듈은 칩의 제2 기능을 시뮬레이션하고, 제2 시뮬레이션 모듈은 제1 시뮬레이션 모듈 다음에 실행 하도록 배치 되어있다. 제2 입력모듈(740)은 유니파이드 스토리지 파일에 제3 데이터를 입력하고, 제3 데이터는 제2 시뮬레이션 모듈이 제2 데이터를 처리하여 생성한 것이다.
일부 실시예에서, 상기 칩은 가속 컴퓨팅 임무를 수행하는 인공지능(AI)칩이라고 할 수 있고, 제1 시뮬레이션 모듈과 제2 시뮬레이션 모듈은 데이터 정리 모듈, 매트릭스 연산 모듈, 연산 활성화 모듈 및 다이렉트 메모리 액세스(DMA) 모듈 중 한가지에 해당하고, 장치(700)는 시뮬레이터로 인공지능 칩의 설계에 대한 타당성을 검증하는 검증모듈도 포함한다.
일부 실시예에서, 장치(700)는, 흐름제어 구성파일에서 시뮬레이터의 다수 시뮬레이션 모듈 간의 실행 순서를 배치하기 위한 배치모듈 - 다수 시뮬레이션 모듈은 적어도 제1 시뮬레이션 모듈과 제2 시뮬레이션 모듈을 포함함 - , 및 흐름제어 구성파일에서 배치한 실행순서에 따라 다수의 시뮬레이션 모듈을 순서대로 실행시키기 위한 실행모듈을 더 포함한다.
일부 실시예에서, 장치(700)는 흐름제어 구성파일의 실행순서를 수정하기 위해 배치한 수정 모듈; 및 수정 후의 실행 순서에 따라 시뮬레이터의 다수 시뮬레이션 모듈의 처리 과정을 조정하도록 배치한 조정모듈을 더 포함한다.
일부 실시예에서, 상기의 수정 모듈에는 시뮬레이터의 한 개 혹은 다수의 시뮬레이션 모듈을 재배치하고 흐름제어 구성파일의 실행 순서를 변경하기 위한 제2 수정 모듈을 포함하며, 상기의 재배치는 시뮬레이션 모듈의 추가, 삭제 및 재배치 중 적어도 한가지에 해당한다.
일부 실시예에서, 장치(700)는 흐름제어 구성파일에서 시뮬레이터의 각 시뮬레이션 모듈에 대한 유니파이드 스토리지 파일의 데이터 읽기 및 쓰기 권한을 설정하기 위해 배치된 제2 설정모듈을 더 포함한다.
일부 실시예에서, 상기의 제1 입력모듈(710)에는 제1 시뮬레이션 모듈이 제2 시뮬레이션 모듈에 직접적으로 제2 데이터를 커넥션하지 않고, 제1 시뮬레이션 모듈에서 유니파이드 스토리지 파일로 제2 데이터를 전송하기 위해 배치한 전송모듈; 및 유니파이드 스토리지 파일에서 제2 데이터의 유형, 위치 및 크기를 기록하기 위해 배치한 기록 모듈을 포함한다.
장치(700)는, 유니파이드 스토리지 파일에서 칩의 제3 기능을 시뮬레이션 해주는, 시뮬레이터의 제3 시뮬레이션 모듈에 필요한 제3 데이터를 읽어 오는 제3 리딩모듈; 및 유니파이드 스토리지 파일에 제3 시뮬레이션 모듈이 제3 데이터를 처리하면서 생성한 제4데이터를 입력하는 제3 입력모듈을 더 포함한다.
도 7에서 도시한 제1 리딩모듈(710), 제1 입력모듈(720), 제2 리딩모듈(730) 및 제2 입력모듈(740)은 한 개 혹은 다수의 전자기기에 포함될 수 있다고 이해되어야 할 것이다. 또한 도 7에 나타낸 모듈은 본 출원의 실시예의 방법 또는 과정의 절차 혹은 동작을 실행할 수 있다고 이해되어야 한다. 따라서 본 출원의 실시예는 칩 시뮬레이터 개발 과정에서, 각 시뮬레이션 모듈이 모두 유니파이드 스토리지 파일과 데이터 커넥션을 하고 각 모듈 간에는 데이터 커넥션이 없으므로, 자유롭게 모듈을 조합하고 실행순서를 조정할 수 있도록 해주어 칩 시뮬레이터 개발의 효율을 높여준다.
도 8은 본 출원을 시범한 기기(800)를 도시한 블록도이다. 기기(800)는 본 출원에서 설명한 시뮬레이터를 구현하기 위한 장치(700) 또는 전자기기에 사용할 수 있다고 이해되어야 한다. 도면과 같이, 기기(800)는 중앙처리장치(CPU)(801)를 포함하고, 이는 리드 온리 메모리(ROM)(802)에 저장된 컴퓨터 프로그램 명령어 또는 기억장치(808)로부터 RAM(803)에 로딩된 컴퓨터 프로그램 명령어에 따라 여러가지 적당한 동작과 처리를 수행할 수 있다. RAM(803)에는 기기(800) 조작에 필요한 여러가지 프로그램과 데이터를 저장할 수 있다. CPU(801), ROM(802) 및 RAM(803)은 데이터 버스(804)를 통해 서로 연결된다. 입력/출력(I/O) 인터페이스(805)도 데이터 버스(804)에 연결된다.
입력/출력(I/O) 인터페이스(805)에 다음과 같은 기기(800)의 부품들, 즉 키보드, 마우스 등을 포함하는 입력장치(806); 다양한 유형의 디스플레이, 스피커 등의 출력장치(807); 디스크, CD 등을 포함하는 기억장치(808); 및 LAN 카드, 모뎀, 무선통신 트랜시버 등의 통신장치(809)를 연결할 수 있다. 통신장치(809)는 기기(800)가 인터넷과 같은 네트워크 및/혹은 여러가지 통신망을 통하여 다른 기기와 정보/데이터를 교환하도록 한다.
처리장치(801)가 방법(200)처럼 상기에서 설명한 각 방법과 절차를 실행한다. 예를 들어 일부 실시예에서, 방법은 컴퓨터 소프트웨어 프로그램으로 구현될 수 있고, 이는 저장장치(808)처럼 기계 판독 가능 매체에 실체가 있도록 포함된다. 본 출원의 실시예에서 컴퓨터 프로그램의 부분 혹은 전부는 ROM(802) 및/혹은 통신장치(809)를 거쳐 기기(800)에 기록 및/혹은 설치된다. 컴퓨터 프로그램이 RAM(803)에 로딩 되고 CPU(801)에 의해 실행 될 때, 상기에 기술한 방법 중 한 개 혹은 다수의 동작 또는 절차를 수행할 수 있다. 부수적으로, 다른 실시예에서 CPU(801)는 다른 어떤 적당한 방식(예를 들어 펌웨어를 이용)을 통해 실행방법으로 배치될 수 있다.
상기에서 설명한 기능은 적어도 부분적으로 한 개 혹은 다수의 하드웨어 로직 유닛에 의해 실행될 수 있다. 예를 들어, 제약없이 사용 가능한 시범유형의 하드웨어 로직 유닛은 프로그래머블 반도체(FPGA), 주문형 반도체(ASIC), 특정용도 표준제품(ASSP), 시스템 온 칩(SOC), 복합 프로그래머블 논리 소자(CPLD) 등이 있다.
본 출원의 방법에 따른 프로그램 코드는 한 개 혹은 다수의 프로그래밍 언어의 자유로운 조합으로 프로그래밍 될 수 있다. 이러한 프로그램 코드는 범용 컴퓨터, 전용 컴퓨터 혹은 다른 프로그래밍이 가능한 데이터의 처리장치 혹은 제어장치에 제공할 수 있고, 처리장치 또는 제어장치가 프로그램 코드를 실행할 때, 흐름도 및/혹은 블록도에서 규정한 기능/조작을 가능하게 한다. 프로그램 코드는 장치 상에서 완전한 실행, 장치 상에서 부분적 실행이 가능하고, 독립적인 소프트웨어 패키지로 장치에서 부분적 실행 및 원격장치에서 부분적 실행 또는 원격장치 또는 서버에서의 완전한 실행이 가능하다.
본 출원의 전후 설명에서, 기계 판독 가능 매체는 유형의 매체이고, 이는 실행 명령 시스템, 장치 또는 기기를 사용하기 위한 프로그램, 혹은 실행 명령 시스템, 장치 또는 기기와 결합해서 사용하기 위한 프로그램을 포함하거나 저장할 수 있다. 기계 판독 가능 매체는 기계 판독 신호 매체 혹은 기계 판독 기억 매체이다. 기계 판독 가능 매체는 전기, 자성, 광학, 전자, 적외선 혹은 반도체 계통, 장치 또는 기기, 또는 상술한 내용의 적절한 조합을 포함하지만 여기에 국한되지 않는다. 기계 판독 가능 매체의 더 구체적인 예는 한 개 혹은 다수 선의 전기 결선, 콤팩트 디스크, 하드 디스크, 랜덤 액세스 메모리(RAM), 리드 온리 메모리(ROM), 비휘발성 반도체 기억장치(EPROM 혹은 플래시 메모리), 파이버, 읽기용 콤팩트 디스크 기억장치(CD-ROM), 광학 기억장치, 자기 기억장치 또는 상술한 것의 적절한 조합이다.
한편, 비록 특정 순서로 각 동작 혹은 절차를 설명하였지만, 이러한 동작과 절차가 도시한 특정 차례 혹은 순서에 따라 순서대로 실행되도록 요구하는 것, 또는 도시한 모든 동작 혹은 절차가 실행되어야 한다고 요구하는 것은 기대하는 결과를 얻기 위해서라고 이해되어야 한다. 어떤 일정한 환경에서, 멀티 태스킹과 병렬 처리는 유리할 것이다. 마찬가지로 비록 상기 설명에서 구체적인 구현 사항들을 기술했지만 이것이 본 출원의 범위를 제한한다고 이해되어서는 안된다. 일 실시예의 전후문 설명에서 기술한 어떠한 특징은 단일 구현 상황에서도 조합적으로 구현될 수 있다. 반대로 단일 구현에 대한 전후문 설명에서 기술한 각종 특징들도 단독적으로 혹은 어떤 적절한 결합을 통해 다중 구현에서도 구현될 수 있다.
비록 프레임 특징 및/혹은 방법에 특정하여 로직 동작에 대한 언어로 본 출원의 실시예를 설명하였지만, 첨부된 청구범위에서 한정한 주제는 상기 설명의 특정적 특징 또는 동작에 국한되지 않음을 주의하여야 한다. 반대로 상기에서 설명한 특정한 특징과 동작은 단순히 청구항의 실시예를 구현하기 위한 시범 형식에 불과하다.
Claims (18)
- 시뮬레이터를 구현하는 장치에 실행되는 시뮬레이터를 구현하는 방법에 있어서,
상기 시뮬레이터는 적어도 제1 시뮬레이션 모듈 및 제2 시뮬레이션 모듈을 포함하고,
제1 리딩모듈이 유니파이드(Unified) 스토리지 파일에서 상기 시뮬레이터의 상기 제1 시뮬레이션 모듈에 쓰이는 제1 데이터를 읽어오는 단계 - 상기 제1 시뮬레이션 모듈은 칩의 제1 기능을 시뮬레이션하는데 사용되고, 상기 유니파이드 스토리지 파일은 상기 시뮬레이터의 각 시뮬레이션 모듈이 입력 및 출력하는 데이터를 통합 저장하며, 상기 시뮬레이터의 각 시뮬레이션 모듈은 기타 다른 시뮬레이션 모듈과 연결관계 없이 상기 유니파이드 스토리지 파일에 커넥션됨 - ,
제1 입력모듈이 상기 유니파이드 스토리지 파일에 제2 데이터를 입력하는 단계 - 상기 제2 데이터는 상기 제1 시뮬레이션 모듈이 상기 제1 데이터를 처리하여 생성됨 - ,
제2 리딩모듈이 상기 유니파이드 스토리지 파일에서 상기 시뮬레이터의 상기 제2 시뮬레이션 모듈에 쓰이는 상기 제2 데이터를 읽어오는 단계 - 상기 제2 시뮬레이션 모듈은 상기 칩의 제2 기능을 시뮬레이션하는데 사용되고, 상기 제2 시뮬레이션 모듈은 상기 제1 시뮬레이션 모듈 다음에 실행됨 - , 및
제2 입력모듈이 상기 유니파이드 스토리지 파일에 제3 데이터를 입력하는 단계 - 상기 제3 데이터는 상기 제2 시뮬레이션 모듈이 상기 제2 데이터를 처리하여 생성됨 - 를 포함하고,
상기 방법은,
배치모듈이 상기 시뮬레이터의 다수 시뮬레이션 모듈 간의 실행순서를 흐름제어 구성파일(control flow configuration file)에 배치하는 단계 - 상기 다수 시뮬레이션 모듈은, 적어도 상기 제1 시뮬레이션 모듈과 상기 제2 시뮬레이션 모듈을 포함함 - , 및
실행모듈이 상기 흐름제어 구성파일에 배치한 실행순서에 따라 상기 다수 시뮬레이션 모듈이 순서대로 실행되는 단계를 더 포함하는 방법. - 제 1항에 있어서,
상기 칩은 가속 컴퓨팅 임무를 수행하는 인공지능(AI) 칩이며, 상기 제1 시뮬레이션 모듈과 상기 제2 시뮬레이션 모듈은 데이터 정리 모듈, 매트릭스 연산 모듈, 연산 활성화 모듈 및 다이렉트 메모리 액세스(DMA) 모듈 중 한가지에 각각 해당하고,
상기 방법은, 검증모듈이 상기 시뮬레이터를 통해 상기 인공지능칩 설계의 타당성을 검증하는 단계를 더 포함하는 방법. - 제 1항에 있어서,
수정모듈이 상기 흐름제어 구성파일의 실행순서를 수정하는 단계, 및
조정모듈이 수정 이후의 실행순서에 따라 상기 시뮬레이터의 다수 시뮬레이션 모듈의 처리과정을 조정하는 단계를 더 포함하는 방법. - 제 3항에 있어서,
상기 수정모듈이 상기 흐름제어 구성파일의 상기 실행순서를 수정하는 단계는,
상기 시뮬레이터의 한 개 또는 다수의 시뮬레이션 모듈의 재배치에 응답하여, 상기 흐름제어 구성파일의 상기 실행순서를 수정하는 단계를 포함하고,
상기 재배치는 시뮬레이션 모듈의 추가, 삭제 및 재배열 중 적어도 한가지에 해당하는 방법. - 제 1항에 있어서,
상기 흐름제어 구성파일에서, 제2 배치모듈이 상기 시뮬레이터의 각 시뮬레이션 모듈에 대해서 유니파이드 스토리지 파일의 데이터 읽기 및 쓰기 권한을 설정하는 방법. - 제 1항에 있어서,
상기 제1 입력모듈이 상기 유니파이드 스토리지 파일에 제2 데이터를 입력하는 단계는,
상기 제1 시뮬레이션 모듈에서 상기 제2 시뮬레이션 모듈로 상기 제2 데이터를 직접적으로 커넥션하는 것이 아니라, 상기 제1 시뮬레이션 모듈에서 상기 유니파이드 스토리지 파일로 상기 제2 데이터를 전송하는 단계, 및
상기 유니파이드 스토리지 파일에 상기 제2 데이터의 유형, 위치 및 크기를 기록하는 단계를 포함하는 방법. - 제 1항에 있어서,
제3 리딩모듈이 상기 유니파이드 스토리지 파일에서, 상기 시뮬레이터의 제3 시뮬레이션 모듈에 쓰이는 상기 제3 데이터를 읽어오는 단계 - 상기 제3 시뮬레이션 모듈은 상기 칩의 제3 기능을 시뮬레이션하는데 사용됨 - , 및
제3 입력모듈이 상기 유니파이드 스토리지 파일에, 상기 제3 시뮬레이션 모듈이 상기 제3 데이터를 처리하면서 생성한 제4데이터를 입력하는 단계를 더 포함하는 방법. - 시뮬레이터를 구현하는 장치에 있어서,
상기 시뮬레이터는 적어도 제1 시뮬레이션 모듈 및 제2 시뮬레이션 모듈을 포함하고,
유니파이드 스토리지 파일에서 상기 시뮬레이터의 상기 제1 시뮬레이션 모듈에 쓰이는 제1 데이터를 읽어오도록 구성된 제1 리딩모듈 - 상기 제1 시뮬레이션 모듈은 칩의 제1 기능을 시뮬레이션하는데 사용되고, 상기 유니파이드 스토리지 파일은 상기 시뮬레이터의 각 시뮬레이션 모듈이 입력 및 출력하는 데이터를 통합 저장하며, 상기 시뮬레이터의 각 시뮬레이션 모듈은 기타 다른 시뮬레이션 모듈과 연결관계 없이 상기 유니파이드 스토리지 파일에 커넥션됨 - ,
상기 유니파이드 스토리지 파일에 제2 데이터를 입력하도록 구성된 제1 입력모듈 - 상기 제2 데이터는 상기 제1 시뮬레이션 모듈이 상기 제1 데이터를 처리하여 생성됨 - ,
상기 유니파이드 스토리지 파일에서 상기 시뮬레이터의 상기 제2 시뮬레이션 모듈에 쓰이는 상기 제2 데이터를 읽어오도록 구성된 제2 리딩모듈 - 상기 제2 시뮬레이션 모듈은 상기 칩의 제2 기능을 시뮬레이션하는데 사용되고, 상기 제2 시뮬레이션 모듈은 상기 제1 시뮬레이션 모듈 다음에 실행됨 - , 및
상기 유니파이드 스토리지 파일에 제3 데이터를 입력하도록 구성된 제2 입력모듈 - 상기 제3 데이터는 상기 제2 시뮬레이션 모듈이 상기 제2 데이터를 처리하여 생성됨 - 을 포함하고,
상기 장치는, 상기 시뮬레이터의 다수 시뮬레이션 모듈 간의 실행순서를 흐름제어 구성파일(control flow configuration file)에 배치하도록 구성된 배치모듈 - 상기 다수 시뮬레이션 모듈은, 적어도 상기 제1 시뮬레이션 모듈과 상기 제2 시뮬레이션 모듈을 포함함 - , 및
상기 흐름제어 구성파일에 배치한 실행순서에 따라 상기 다수 시뮬레이션 모듈이 순서대로 실행되도록 구성된 실행모듈을 더 포함하는 장치. - 제 8항에 있어서,
상기 칩은 가속 컴퓨팅 임무를 수행하는 인공지능(AI) 칩이며, 상기 제1 시뮬레이션 모듈과 상기 제2 시뮬레이션 모듈은 데이터 정리 모듈, 매트릭스 연산 모듈, 연산 활성화 모듈 및 다이렉트 메모리 액세스(DMA) 모듈 중 한가지에 각각 해당하고,
상기 장치는, 상기 시뮬레이터를 통해 상기 인공지능칩 설계의 타당성을 검증하도록 구성된 검증모듈을 더 포함하는 장치. - 제 8항에 있어서,
상기 흐름제어 구성파일의 실행순서를 수정하도록 구성된 수정모듈, 및
수정 이후의 실행순서에 따라 상기 시뮬레이터의 다수 시뮬레이션 모듈의 처리과정을 조정하도록 구성된 조정모듈을 더 포함하는 장치. - 제 10항에 있어서,
상기 수정모듈은,
상기 시뮬레이터의 한 개 또는 다수의 시뮬레이션 모듈의 재배치에 응답하여, 상기 흐름제어 구성파일의 상기 실행순서를 수정하도록 구성된 제2 수정모듈을 포함하되,
상기 재배치는 시뮬레이션 모듈의 추가, 삭제 및 재배열 중 적어도 한가지에 해당하는 장치. - 제 8항에 있어서,
상기 흐름제어 구성파일에서, 상기 시뮬레이터의 각 시뮬레이션 모듈에 대해서 유니파이드 스토리지 파일의 데이터 읽기 및 쓰기 권한을 설정하도록 구성된 제2 배치모듈을 더 포함하는 장치. - 제 8항에 있어서,
상기 제1 입력모듈은,
상기 제1 시뮬레이션 모듈에서 상기 제2 시뮬레이션 모듈로 상기 제2 데이터를 직접적으로 커넥션하는 것이 아니라, 상기 제1 시뮬레이션 모듈에서 상기 유니파이드 스토리지 파일로 상기 제2 데이터를 전송하도록 구성된 전송모듈, 및
상기 유니파이드 스토리지 파일에 상기 제2 데이터의 유형, 위치 및 크기를 기록하도록 구성된 기록모듈을 포함하는 장치. - 제 8항에 있어서,
상기 유니파이드 스토리지 파일에서, 상기 시뮬레이터의 제3 시뮬레이션 모듈에 쓰이는 상기 제3 데이터를 읽어오도록 구성된 제3 리딩모듈 - 상기 제3 시뮬레이션 모듈은 상기 칩의 제3 기능을 시뮬레이션하는데 사용됨 - , 및
상기 유니파이드 스토리지 파일에, 상기 제3 시뮬레이션 모듈이 상기 제3 데이터를 처리하면서 생성한 제4데이터를 입력하도록 구성된 제3 입력모듈을 더 포함하는 장치. - 한 개 또는 다수의 프로세서; 및
한 개 또는 다수의 프로그램을 저장하는 메모리를 포함하는 전자 기기에 있어서,
상기 한 개 또는 다수의 프로그램이 상기 한 개 또는 다수의 프로세서에 의해 실행되어, 제 1항 내지 제 7항 중 한 항에 따른 방법을 구현하도록 하는 전자 기기. - 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능 저장 매체에 있어서,
상기 컴퓨터 프로그램이 프로세서에 의해 실행될 경우 제1항 내지 제7항 중 어느 한 항에 따른 복수의 칩 사이의 통신 지원 방법을 구현하는 컴퓨터 판독 가능 저장 매체. - 삭제
- 삭제
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910364810.8 | 2019-04-30 | ||
CN201910364810.8A CN111950219B (zh) | 2019-04-30 | 2019-04-30 | 用于实现模拟器的方法、装置、设备以及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200126888A KR20200126888A (ko) | 2020-11-09 |
KR102325612B1 true KR102325612B1 (ko) | 2021-11-15 |
Family
ID=69063600
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200003283A KR102325612B1 (ko) | 2019-04-30 | 2020-01-09 | 시뮬레이터를 구현하는 방법, 장치, 기기 및 매체 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20200349304A1 (ko) |
EP (1) | EP3734491A1 (ko) |
JP (1) | JP7101709B2 (ko) |
KR (1) | KR102325612B1 (ko) |
CN (1) | CN111950219B (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116909487B (zh) * | 2023-09-05 | 2024-01-23 | 北京智芯微电子科技有限公司 | 数据读写方法、芯片、嵌入式微控制器和智能终端设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040158443A1 (en) | 2003-02-11 | 2004-08-12 | Texas Instruments Incorporated | Functional verification using heterogeneous simulators |
JP2004341737A (ja) | 2003-05-14 | 2004-12-02 | Fujitsu Ltd | アーキテクチャのシミュレーションシステム及びシミュレーション方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04363730A (ja) * | 1991-06-11 | 1992-12-16 | Hitachi Ltd | シミュレーション実行手段 |
JPH1040133A (ja) * | 1996-07-18 | 1998-02-13 | Mitsubishi Electric Corp | ソフトウェアシミュレータ |
US20030105617A1 (en) * | 2001-12-05 | 2003-06-05 | Nec Usa, Inc. | Hardware acceleration system for logic simulation |
US7231334B2 (en) * | 2002-04-18 | 2007-06-12 | International Business Machines Corporation | Coupler interface for facilitating distributed simulation of a partitioned logic design |
US6978216B2 (en) * | 2003-03-26 | 2005-12-20 | Broadcom Corporation | Testing of integrated circuits from design documentation |
TW200532560A (en) * | 2003-11-13 | 2005-10-01 | Qualcomm Inc | System and method for dynamically simulating devices at a computing device |
GB0424501D0 (en) * | 2004-11-05 | 2004-12-08 | Ricardo Uk Ltd | Co-simulation apparatus and method |
JP2007004216A (ja) | 2005-06-21 | 2007-01-11 | Fuji Xerox Co Ltd | 情報管理装置及び情報管理方法、並びにコンピュータ・プログラム |
US7607045B2 (en) * | 2006-11-01 | 2009-10-20 | American Express Travel Related Services Company, Inc. | System and method for testing a modification to a process using a simulator |
US8725487B2 (en) * | 2009-08-07 | 2014-05-13 | Sas Institute, Inc. | Techniques to automatically generate simulated information |
US8918582B2 (en) * | 2012-09-11 | 2014-12-23 | International Business Machines Corporation | Simulating EEPROM in virtual distributed switches |
US9703562B2 (en) * | 2013-03-16 | 2017-07-11 | Intel Corporation | Instruction emulation processors, methods, and systems |
US8943450B1 (en) * | 2013-10-11 | 2015-01-27 | Cadence Design Systems, Inc. | Model based analog block coverage system |
US9026966B1 (en) * | 2014-03-13 | 2015-05-05 | Cadence Design Systems, Inc. | Co-simulation methodology to address performance and runtime challenges of gate level simulations with, SDF timing using emulators |
JP6363297B2 (ja) * | 2015-07-14 | 2018-07-25 | 株式会社日立製作所 | シミュレータ、半導体回路装置の設計支援システムおよび方法 |
-
2019
- 2019-04-30 CN CN201910364810.8A patent/CN111950219B/zh active Active
- 2019-12-10 US US16/708,931 patent/US20200349304A1/en not_active Abandoned
- 2019-12-11 EP EP19215147.0A patent/EP3734491A1/en active Pending
-
2020
- 2020-01-09 KR KR1020200003283A patent/KR102325612B1/ko active IP Right Grant
- 2020-01-10 JP JP2020003208A patent/JP7101709B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040158443A1 (en) | 2003-02-11 | 2004-08-12 | Texas Instruments Incorporated | Functional verification using heterogeneous simulators |
JP2004341737A (ja) | 2003-05-14 | 2004-12-02 | Fujitsu Ltd | アーキテクチャのシミュレーションシステム及びシミュレーション方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20200126888A (ko) | 2020-11-09 |
JP7101709B2 (ja) | 2022-07-15 |
JP2020184301A (ja) | 2020-11-12 |
CN111950219A (zh) | 2020-11-17 |
CN111950219B (zh) | 2024-06-18 |
EP3734491A1 (en) | 2020-11-04 |
US20200349304A1 (en) | 2020-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2022036889A (ja) | チップを検証する方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラム | |
US7865346B2 (en) | Instruction encoding in a hardware simulation accelerator | |
US8181131B2 (en) | Enhanced analysis of array-based netlists via reparameterization | |
US8214195B2 (en) | Testing in a hardware emulation environment | |
US10209306B2 (en) | Methods and systems for generating functional test patterns for manufacture test | |
CN109669769B (zh) | 一种基于SystemC面向GPU顶点着色任务调度方法 | |
US9589087B2 (en) | Verification environments utilizing hardware description languages | |
CN114462338A (zh) | 一种集成电路的验证方法、装置、计算机设备及存储介质 | |
JP6600011B2 (ja) | エミュレーションのための効率的波形生成 | |
US7437282B2 (en) | Method and apparatus to provide alternative stimulus to signals internal to a model actively running on a logic simulation hardware emulator | |
CN113779912B (zh) | 一种芯片验证系统、方法、装置、电子设备及存储介质 | |
US9690681B1 (en) | Method and system for automatically generating executable system-level tests | |
US20130024178A1 (en) | Playback methodology for verification components | |
CN110941934A (zh) | 一种fpga原型验证开发板分割仿真系统、方法、介质及终端 | |
CN117112447B (zh) | 一种数据传输方法、装置、电子设备及可读存储介质 | |
KR102325612B1 (ko) | 시뮬레이터를 구현하는 방법, 장치, 기기 및 매체 | |
US10929584B1 (en) | Environmental modification testing for design correctness with formal verification | |
US9823305B1 (en) | Method and system for generating post-silicon validation tests | |
US10409624B1 (en) | Data array compaction in an emulation system | |
US20190012418A1 (en) | Simulation program, method, and device | |
US20230267253A1 (en) | Automated synthesis of virtual system-on-chip environments | |
CN116451625B (zh) | 用于rtl和带sdf网表的联合仿真的装置和方法 | |
US20220382942A1 (en) | Non-functional loopback-paths removal from io-pads using logic replication | |
CN110321574B (zh) | 一种打印波形的方法和装置 | |
US11151294B1 (en) | Emulated register access in hybrid emulation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
X091 | Application refused [patent] | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant |