KR101788279B1 - Measuring system and method of worst-case execution time using test techniques - Google Patents
Measuring system and method of worst-case execution time using test techniques Download PDFInfo
- Publication number
- KR101788279B1 KR101788279B1 KR1020160101851A KR20160101851A KR101788279B1 KR 101788279 B1 KR101788279 B1 KR 101788279B1 KR 1020160101851 A KR1020160101851 A KR 1020160101851A KR 20160101851 A KR20160101851 A KR 20160101851A KR 101788279 B1 KR101788279 B1 KR 101788279B1
- Authority
- KR
- South Korea
- Prior art keywords
- real
- program
- application program
- time
- code
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3409—Recording 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/3419—Recording 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
-
- 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/26—Functional testing
- G06F11/263—Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명은 사이클 테이블과 테스트 케이스를 함께 이용하여 실시간 프로그램의 최악 실행 시간을 측정하는 시스템 및 방법에 관한 것으로, 본 발명의 하나의 실시예에 따른 최악 실행 시간 측정 시스템은 제1 실시간 응용 프로그램의 소스 코드와 이에 대응하는 어셈블리 명령어의 관계를 분석하여 사이클 테이블을 생성하는 사이클 테이블 생성부, 제2 실시간 응용 프로그램의 소스 코드를 분석하는 프로그램 코드 분석부, 제2 실시간 응용 프로그램의 소스 코드에 소요 사이클 계산 코드와 경로 파악 탐침 코드를 삽입하는 프로그램 코드 확장부, 제2 실시간 응용 프로그램의 제어 흐름을 분석한 결과에 기초하여 테스트 케이스를 생성하는 테스트 케이스 생성부, 생성된 테스트 케이스에 기초하여 제2 실시간 응용 프로그램을 실행시키고 실행 경로별 소요 시간을 저장하는 프로그램 실행부, 그리고 저장된 실행 경로별 소요 시간 중 최장 실행 시간을 추출하는 최악 실행 시간 추출부를 포함한다.The present invention relates to a system and method for measuring the worst execution time of a real-time program using a cycle table and a test case together, wherein the worst-case execution time measurement system according to one embodiment of the present invention comprises: A cycle table generation unit for generating a cycle table by analyzing a relationship between a code and a corresponding assembly instruction, a program code analysis unit for analyzing a source code of a second real-time application program, A test code generation unit for generating a test case based on a result of analyzing a control flow of the second real-time application program, a second real-time application Run the program and run A program execution unit to store the time, and is of the saved execution time required by the path comprising a worst case execution time extraction for extracting the longest running time.
Description
본 발명은 사이클 테이블과 테스트 케이스를 함께 이용하여 실시간 응용 프로그램의 최악 실행 시간을 측정하는 시스템 및 방법에 관한 것이다.The present invention relates to a system and method for measuring the worst execution time of a real-time application program using a cycle table and a test case together.
무기체계 내장 소프트웨어나 원자력 발전에 사용되는 소프트웨어는 임무 성패 및 인명 피해에 많은 영향을 미치기 때문에 높은 수준의 신뢰성을 요구한다. 이러한 임무 중대 내장형 소프트웨어들은 경성 실시간 소프트웨어(Hard Real-time Software)로, 실시간성의 만족 여부에 따라 신뢰성이 결정된다. 실시간성의 만족 여부는 주어진 시간 내에 주어진 임무를 수행할 수 있는지를 통해 결정된다. 즉, 스케줄 가능성(schedulability)에 대한 검증을 통해 이를 확인할 수 있다.Weapon Systems Embedded software and software used in nuclear power generation require a high level of reliability because they have a great impact on mission succession and casualties. These mission-critical embedded software are hard real-time software, and dependability is determined according to satisfaction of real-time property. Satisfaction of real-time performance is determined by whether or not a given task can be performed within a given time. That is, it can be confirmed by verifying the schedulability.
스케줄 가능성 검증을 위해서는 프로그램의 실행 경로에 대한 분석이 필요하다. 프로그램이 갖는 모든 실행 경로를 파악하고, 각 실행 경로마다의 실행 시간을 측정하여야 한다. 실행 경로의 실제 실행 시간 중에서 가장 긴 실행 시간이 프로그램의 수행에 할당된 시간보다 짧다면, 해당 프로그램은 스케줄 가능성을 보장할 수 있다. 이와 같이 스케줄 가능성을 검증하는 방법을 최악 실행 시간(Worst-case execution time) 분석이라 한다.In order to verify schedulability, analysis of program execution path is needed. You need to know all the execution paths of the program and measure the execution time for each execution path. If the longest execution time among the actual execution time of the execution path is shorter than the time allocated for execution of the program, the program can guarantee the schedulability. This way of verifying the schedulability is called Worst-case execution time analysis.
최악 실행 시간 분석을 위해서 종래에는 정적 분석 방법이 사용되고 있으나, 프로그램 내부의 흐름 분석, 반복문의 반복 횟수 분석, 데이터 분석 등 프로그램의 행위 분석뿐만 아니라 파이프라인 분석, 캐시 분석 등의 하드웨어 행위 분석까지 수행하는 점에서 분석 과정이 복잡하며 많은 시간 및 노력이 필요하다.Static analysis methods have been used in the past for analyzing the worst execution time. However, it performs analysis of hardware behavior such as pipeline analysis and cache analysis, as well as program behavior analysis such as flow analysis in the program, repetition number analysis of loop statements, data analysis The analysis process is complicated and requires a lot of time and effort.
본 발명의 하나의 실시예가 해결하려는 과제는 화이트박스 테스트 기법이 갖는 실행 경로 분석 방법을 활용하여 실시간 응용 프로그램의 최악 실행 시간을 측정하는 시스템 및 방법을 제공하는 것이다.A problem to be solved by one embodiment of the present invention is to provide a system and a method for measuring a worst execution time of a real-time application program by using an execution path analysis method of a white box test technique.
상기 과제 이외에도 구체적으로 언급되지 않은 다른 과제를 달성하는 데 본 발명에 따른 실시예가 사용될 수 있다.Embodiments according to the present invention can be used to accomplish other tasks not specifically mentioned other than the above-described tasks.
상기 과제를 해결하기 위해 본 발명의 하나의 실시예는, 제1 실시간 응용 프로그램의 소스 코드와 이에 대응하는 어셈블리 명령어의 관계를 분석하여 사이클 테이블을 생성하는 사이클 테이블 생성부, 제2 실시간 응용 프로그램의 소스 코드를 분석하는 프로그램 코드 분석부, 제2 실시간 응용 프로그램의 소스 코드에 소요 사이클 계산 코드와 경로 파악 탐침 코드를 삽입하는 프로그램 코드 확장부, 제2 실시간 응용 프로그램의 제어 흐름을 분석한 결과에 기초하여 테스트 케이스를 생성하는 테스트 케이스 생성부, 생성된 테스트 케이스에 기초하여 제2 실시간 응용 프로그램을 실행시키고 실행 경로별 소요 시간을 저장하는 프로그램 실행부, 그리고 저장된 실행 경로별 소요 시간 중 최장 실행 시간을 추출하는 최악 실행 시간 추출부를 포함하는 테스트 기법을 이용한 최악 실행 시간 측정 시스템을 제안한다.According to an aspect of the present invention, there is provided an apparatus for real-time application development, comprising: a cycle table generation unit for generating a cycle table by analyzing a relationship between a source code of a first real-time application program and a corresponding assembly instruction, Based on the results of analyzing the control flow of the second real-time application program, a program code analyzing section for analyzing the source code, a program code expanding section for inserting the required cycle calculation code and route grasping probe code into the source code of the second real- A program execution unit for executing a second real-time application program based on the generated test case and storing a time required for each execution path, and a program execution unit for executing a longest execution time A test including a worst execution time extracting section to extract We propose a worst-case execution time measurement system.
여기서, 사이클 테이블 생성부는, 제1 실시간 응용 프로그램의 소스 코드를 구성하는 문장을 분류하는 문장 분류부, 분류된 문장과 이에 대응하는 어셈블리 명령어의 관계를 분석하여 패턴을 도출하는 패턴 생성부, 그리고 도출된 패턴에 기초하여 분류된 문장에 대응하는 어셈블리 명령어의 소요 사이클 수를 산출하는 소요 사이클 산출부를 포함할 수 있다.Here, the cycle table generation unit may include a sentence classifying unit for classifying a sentence constituting the source code of the first real-time application program, a pattern generating unit for deriving a pattern by analyzing the relationship between the classified sentence and the corresponding assembly instruction, And calculating a required number of cycles of the assembly instruction corresponding to the classified sentence based on the obtained pattern.
또한, 프로그램 코드 분석부는 제2 실시간 응용 프로그램의 구성요소에 대한 정보를 노드 형태로 정의하고 추상 구문 트리를 생성하여 소스 코드를 분석할 수 있다.Also, the program code analyzing unit may analyze the source code by defining the information about the components of the second real-time application program in a node form and generating an abstract syntax tree.
상기 과제를 해결하기 위해 본 발명의 하나의 실시예는, 사이클 테이블 생성부를 통해 제1 실시간 응용 프로그램의 소스 코드와 이에 대응하는 어셈블리 명령어의 관계를 분석하여 사이클 테이블을 생성하는 단계, 프로그램 코드 분석부를 통해 제2 실시간 응용 프로그램의 소스 코드를 분석하는 단계, 소요 사이클 계산 코드 삽입부를 통해 제2 실시간 응용 프로그램의 소스 코드에 소요 사이클 계산 코드를 삽입하는 단계, 탐침 코드 삽입부를 통해 제2 실시간 응용 프로그램의 소스 코드에 경로 파악 탐침 코드를 삽입하는 단계, 테스트 케이스 생성부를 통해 제2 실시간 응용 프로그램의 제어 흐름 분석 결과에 기초하여 테스트 케이스를 생성하는 단계, 프로그램 실행부를 통해 생성된 테스트 케이스에 기초하여 제2 실시간 응용 프로그램을 실행시키고 실행 경로별 소요 시간을 저장하는 단계, 그리고 최악 실행 시간 추출부를 통해 저장된 실행 경로별 소요 시간 중 최장 실행 시간을 추출하는 단계를 포함하는 테스트 기법을 이용한 최악 실행 시간 측정 방법을 제안한다.According to an embodiment of the present invention, there is provided a program execution system including a cycle table generation unit for generating a cycle table by analyzing a relationship between a source code of a first real-time application program and a corresponding assembly instruction through a cycle table generation unit, Analyzing the source code of the second real-time application program through the required cycle calculation code inserting unit, inserting the required cycle calculation code into the source code of the second real-time application program through the required cycle calculation code inserting unit, Generating a test case based on a control flow analysis result of the second real-time application program through a test case generation unit, generating a test case based on the test case generated through the program execution unit, Run real-time applications Storing the required time for each execution path, and extracting the longest execution time among the required execution time for each execution path through the worst execution time extracting unit.
여기서, 사이클 테이블 생성 단계는 제1 실시간 응용 프로그램의 소스 코드를 구성하는 문장을 분류하는 단계, 분류된 문장과 이에 대응하는 어셈블리 명령어의 관계를 분석하고 패턴을 도출하는 단계, 그리고 도출된 패턴에 기초하여 분류된 문장에 대응하는 어셈블리 명령어의 소요 사이클 수를 산출하는 단계를 포함할 수 있다.Here, the cycle table generation step includes a step of classifying the sentences constituting the source code of the first real-time application program, a step of analyzing the relationship between the classified sentence and the corresponding assembly instruction and deriving the pattern, And calculating a required number of cycles of the assembly instruction corresponding to the classified sentence.
또한, 제2 실시간 응용 프로그램의 소스 코드 분석 단계는 제2 실시간 응용 프로그램의 구성요소에 대한 정보를 노드 형태로 정의하는 단계, 그리고 정의된 노드를 포함하는 추상 구문 트리를 생성하는 단계를 포함할 수 있다.In addition, the step of analyzing the source code of the second real-time application program may include the steps of defining information on the components of the second real-time application program in the form of nodes, and generating an abstract syntax tree including the defined nodes have.
또한, 경로 파악 탐침 코드 삽입 단계는 제2 실시간 응용 프로그램의 소스 코드 중 조건부에 기초하여 서로 다른 경로를 파악하고 파악된 경로에 경로 파악 탐침 코드를 삽입할 수 있다.In addition, the path identification probe code insertion step can identify different paths based on the condition part of the source code of the second real-time application program, and insert the path identification probe code into the identified path.
본 발명의 하나의 실시예에 따르면 종래 정적 분석 방법 대비 간단한 과정을 통해 최악 실행 시간을 측정할 수 있다. 또한, 화이트박스 테스트를 수행하는 과정에서 스케줄 가능성에 대한 검증을 함께 수행할 수 있다. According to one embodiment of the present invention, the worst execution time can be measured through a simple process compared to the conventional static analysis method. In addition, it is possible to perform the verification of the schedulability in the course of performing the white box test.
도 1은 본 발명의 하나의 실시예에 따른 테스트 기법을 이용한 최악 실행 시간 측정 시스템의 구성을 나타낸다.
도 2는 short 자료형 곱(*) 연산에 해당하는 어셈블리 명령어 예시이다.
도 3은 int 자료형 곱(*) 연산에 해당하는 어셈블리 명령어 예시이다.
도 4는 도 1의 패턴 생성부를 통해 도출된 곱 연산자에 대응하는 패턴 예시이다.
도 5는 도 1의 소요 사이클 산출부를 통해 생성된 사이클 테이블 예시이다.
도 6은 도 1을 이용한 테스트 기법을 이용한 최악 실행 시간 측정 방법을 나타낸다.
도 7은 소요 사이클 계산 코드를 포함하는 프로그램 소스 코드 예시이다.
도 8은 프로그램 소스 코드에 삽입된 탐침 코드 예시이다.
도 9는 도 8에 대응하는 탐침 코드를 포함하는 프로그램 소스 코드 예시이다.
도 10은 도 7의 프로그램 소스 코드에 대응하는 그래프 표현 예시이다.1 shows a configuration of a worst-case execution time measurement system using a test technique according to an embodiment of the present invention.
Figure 2 is an example of an assembly instruction corresponding to a short data type product (*) operation.
Figure 3 is an example of an assembly instruction corresponding to an int data type product (*) operation.
4 is an example of a pattern corresponding to the product operator derived through the pattern generator of FIG.
5 is an example of a cycle table generated by the required cycle calculating unit of FIG.
FIG. 6 shows a method of measuring the worst execution time using the test technique using FIG.
7 is a program source code example including the required cycle calculation code.
8 is an example of a probe code inserted into the program source code.
9 is a program source code example including the probe code corresponding to Fig.
10 is an example of a graph representation corresponding to the program source code of FIG.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대해 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며 명세서 전체에서 동일 또는 유사한 구성요소에 대해서는 동일한 도면부호가 사용되었다. 또한, 널리 알려진 공지기술의 경우 그 구체적인 설명은 생략한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings, which will be readily apparent to those skilled in the art to which the present invention pertains. The present invention may be embodied in many different forms and is not limited to the embodiments described herein. In order to clearly illustrate the present invention, parts not related to the description are omitted, and the same reference numerals are used for the same or similar components throughout the specification. In the case of publicly known technologies, detailed description thereof will be omitted.
본 명세서에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "…부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.In this specification, when a part is referred to as "including " an element, it is to be understood that it may include other elements as well, without departing from the other elements unless specifically stated otherwise. Also, the terms "part," " module, "and the like, which are described in the specification, refer to a unit for processing at least one function or operation, and may be implemented by hardware or software or a combination of hardware and software.
본 명세서에서는 프로그램이 어셈블리 명령어로 변환되어 실행되며, 각 어셈블리 명령어는 고유의 사이클 수를 갖는 것을 전제로 한다. 여기서 사이클은 클럭(clock)이라고도 하며, 프로세서에서 명령어를 수행하는 각 단계(Fetch, Decode, Execute 등)를 수행하는데 소요되는 시간을 의미한다.In this specification, it is assumed that a program is converted into an assembly instruction and executed, and each assembly instruction has a unique cycle number. Here, the cycle is also referred to as a clock, which means the time required to execute each step (Fetch, Decode, Execute, etc.) of executing instructions in the processor.
도 1은 본 발명의 하나의 실시예에 따른 테스트 기법을 이용한 최악 실행 시간 측정 시스템의 구성을 나타낸다.1 shows a configuration of a worst-case execution time measurement system using a test technique according to an embodiment of the present invention.
도 1의 최악 실행 시간 측정 시스템은 사이클 테이블 생성부(100), 프로그램 코드 분석부(200), 프로그램 코드 확장부(300), 테스트 케이스 생성부(400), 프로그램 실행부(500), 그리고 최악 실행 시간 추출부(600)를 포함한다.The worst execution time measurement system of FIG. 1 includes a cycle
사이클 테이블 생성부(100)는 제1 프로그램의 소스 코드의 단위 문장과 이에 대응하는 어셈블리 명령어의 관계를 분석하여 사이클 테이블(cycle table)을 생성하며, 문장 분류부(110), 패턴 생성부(120), 그리고 소요 사이클 산출부(130)를 포함한다. 이때, 어셈블리 명령어에 대응하는 사이클 테이블은 특정 프로세서(인텔, 모토로라 등)에 종속적이다. 여기서, 제1 프로그램은 복수의 프로그램일 수 있다. The cycle
문장 분류부(110)는 제1 프로그램의 소스 코드를 구성하는 문장을 분류한다. 본 발명의 실시예에 따른 문장 분류부(110)는 C 언어의 문장을 표현식, 조건문, 반복문, 함수 및 함수 호출부로 분류한다. 표현식은 C 언어에서 제공하는 연산자를 바탕으로 기술된 문장을 의미하며, 조건문은 if문과 switch문을 포함한다. 반복문은 for문, while문, 그리고 do while문을 포함한다. 함수 및 함수 호출부는 함수를 선언하거나 선언된 함수를 호출하는 문장을 의미한다. 이와 같은 요소들은 C 언어에서 제공하는 연산자와 키워드를 통해 기술되며 C 언어의 문장을 분류하는 기준으로 사용된다. 예를 들어, C 언어에서 제공하는 모든 연산자(대입 연산자, 단항 연산자, 이항 연산자, 삼항 연산자, 캐스팅 연산자 등)를 이용하여 표현식을 작성하고 입력 문장으로 사용한다. if문의 경우에는 if와 else라는 두 개의 키워드를 이용하여 if, if-else, if-else if, if-else if-else와 같은 네 가지 형태의 표현식을 작성할 수 있다. 또한, 자료형 키워드는 단독으로 어셈블리 명령어와 관계를 갖지 않지만 연산자와 결합하는 경우 생성되는 어셈블리 명령어에 영향을 미친다. 예를 들어, short 자료형의 곱셈과 int 자료형의 곱셈은 연산자는 동일하나 자료형의 차이로 각각 MPY 명령어와 MPYI 명령어 형태를 가지며, 명령어의 차이로 인해 소요 사이클 수가 달라질 수 있다.The
패턴 생성부(120)는 제1 프로그램의 소스 코드를 구성하는 문장과 이에 대응하는 어셈블리 명령어와의 관계를 분석하여 패턴을 생성한다. 본 발명의 실시예에 따른 패턴 생성부(120)는 제1 프로그램의 소스 코드를 구성하는 문장이 컴파일러를 통해 미리 설정되어 있는 규칙에 따라 어셈블리 명령어로 변환되는 점을 고려하여 문장과 어셈블리 명령어 사이의 패턴을 도출한다.The
도 2는 short 자료형 곱(*) 연산에 해당하는 어셈블리 명령어 예시이며, 도 3은 int 자료형 곱(*) 연산에 해당하는 어셈블리 명령어 예시이고, 도 4는 도 1의 패턴 생성부를 통해 도출된 곱 연산자에 대응하는 패턴 예시이다.FIG. 2 is an example of an assembly instruction corresponding to a short data type product (*) operation, FIG. 3 is an example of an assembly instruction corresponding to an int data type product (*) operation, As shown in Fig.
도 2의 어셈블리 명령어 13번 내지 15번은 두 개의 피연산자에 대한 값을 준비하는 명령어이며, 16번과 17번은 곱 연산에 해당하는 명령어이고, 도 3의 어셈블리 명령어 13번 내지 15번은 두 개의 피연산자에 대한 값을 준비하는 명령어이며, 16번과 17번은 곱 연산에 해당하는 명령어이다. 도 2와 도 3으로부터 도 4와 같은 패턴을 도출할 수 있다.
다시 도 1의 설명으로 돌아가서, 소요 사이클 산출부(130)는 패턴 생성부(120)의 패턴 생성 결과에 기초하여 어셈블리 명령어의 소요 사이클 수를 산출하고 사이클 테이블을 생성한다.Referring back to FIG. 1, the required
실제 명령어가 실행 상태로 들어가는데 소요되는 사이클은 1이며, 모든 명령어는 특성에 따라 지연 슬롯(Delay Slot)을 가진다. 이는 어셈블리 명령어가 실행된 후 실제 작업을 완료하는데 소요되는 사이클을 의미한다. 따라서 실제 명령어의 소요 사이클은 실행 상태로 진입하는데 소요되는 사이클에 지연 슬롯을 더한 것이다. 컴파일러는 각 명령어의 지연 슬롯을 보장하기 위해 지연 슬롯만큼의 NOP 명령어를 해당 명령어 뒤에 삽입한다.The cycle required for the actual instruction to enter the execution state is 1, and all instructions have a delay slot according to the characteristics. This means the cycle required to complete the actual operation after the assembly instruction is executed. Therefore, the required cycle of the actual instruction is the cycle required to enter the execution state plus the delay slot. The compiler inserts a NOP instruction after a delay slot to guarantee a delay slot of each instruction.
본 발명의 실시예에 따른 소요 사이클 산출부(130)는 도 4의 피연산자 2개의 값을 준비한 후 곱 연산을 수행하는 패턴을 도 2와 도 3의 어셈블리 명령어에 적용하여 곱 연산에 소요되는 사이클을 산출한다. 예를 들어, 도 2에서 short 자료형의 곱 연산은 MPY.M2, B5, B4, B4 명령어(1 사이클)와 1개의 NOP 명령어(1 사이클)에 대응하며, 도 3에서 int 자료형의 곱 연산은 MPYI.M2, B5, B4, B4 명령어(1 사이클)와 8개의 NOP 명령어(8 사이클)에 대응한다. 이로 인해, short 자료형의 곱 연산은 2 사이클, int 자료형의 곱 연산은 9 사이클로 산출할 수 있다. 또한, 산출된 연산 명령어별 소요 사이클을 저장하여 도 5와 같은 사이클 테이블을 생성할 수 있다.The required
도 5는 도 1의 소요 사이클 산출부를 통해 생성된 사이클 테이블 예시이다.5 is an example of a cycle table generated by the required cycle calculating unit of FIG.
도 5에서 보면, 자료형과 연산 명령어의 대응관계에 따른 소요 사이클을 확인할 수 있다.5, the required cycles according to the correspondence between the data type and the operation instruction can be confirmed.
다시 도 1의 설명으로 돌아가서, 프로그램 코드 분석부(200)는 스케줄 가능성 테스트 대상인 실시간 응용 프로그램(이하 '제2 프로그램'라고 함)의 소스 코드를 분석한다. 본 발명의 실시예에 따른 프로그램 코드 분석부(200)는 파서(parser) 모듈을 포함하며, 제2 프로그램의 구성 요소별로 노드에 대한 클래스를 정의하고 연산자와 피연산자의 자료 유형 정보(정황 정보)를 추출하여 노드를 생성하며 생성된 노드에 기초하여 추상 구문 트리(abstract syntax tree, AST)를 생성한다. Referring back to FIG. 1, the program
프로그램 코드 확장부(300)는 최악 실행 시간 분석을 위해 제2 프로그램의 소스 코드를 확장하며, 소요 사이클 계산 코드 삽입부(310)와 탐침 코드 삽입부(320)를 포함한다.The program
소요 사이클 계산 코드 삽입부(310)는 제2 프로그램의 소스 코드에 대응하는 소요 사이클의 합을 구하는 코드를 삽입한다. The required cycle calculation
탐침 코드 삽입부(320)는 제2 프로그램의 소스 코드에 최악 실행 시간을 소요하는 경로를 파악하기 위한 탐침 코드를 삽입한다. 본 발명의 실시예에 따른 탐침 코드 삽입부(320)는 제2 프로그램을 구성하는 선형적 독립 실행 경로(linearly independent execution path)에 하나 이상의 탐침 코드를 삽입한다.The probe
테스트 케이스 생성부(400)는 제2 프로그램의 제어 흐름(control flow)을 파악한 결과에 기초하여 선형적 독립 실행 경로를 파악하고 해당 경로를 수행하는데 필요한 입력 데이터를 포함하는 테스트 케이스를 생성한다. 여기서, 테스트 케이스는 화이트 박스 테스트(소스 코드와 내부구조를 하나하나 짚어가면서 입력값에 따른 출력값이 어떠한 원리로 계산되는지 테스트하는 방법)에서 사용하는 경로 커버리지를 만족하며 제2 프로그램에서 선형적 독립 실행 경로를 최소한 한번씩 수행한다.The test
프로그램 실행부(500)는 테스트 케이스 생성부(400)를 통해 생성된 테스트 케이스에 기초하여 제2 프로그램을 실행시키고 실행 경로와 소요 시간을 저장한다.The
최악 실행 시간 추출부(600)는 프로그램 실행부(500)의 실행 결과에 기초하여 최장 실행 시간을 추출한다. 여기서, 추출된 최장 실행 시간은 제2 프로그램의 최악 실행 시간이다.The worst-case execution
도 6은 도 1을 이용한 테스트 기법을 이용한 최악 실행 시간 측정 방법을 나타낸다.FIG. 6 shows a method of measuring the worst execution time using the test technique using FIG.
먼저, 사이클 테이블 생성부(100)를 통해 제1 프로그램을 구성하는 문장과 어셈블리 명령어 사이의 관계를 분석하고 분석 결과에 기초하여 사이클 테이블을 생성한다(S100). First, the cycle
본 발명의 실시예에 따른 S100 단계에서는 제1 프로그램 소스 코드의 문장의 종류를 분류하고 문장에 대응하는 어셈블리 명령어와의 관계에 기초하는 패턴을 생성한다. 이후, 생성된 패턴에 기초하여 어셈블리 명령어의 소요 사이클 수를 산출하여 사이클 테이블을 생성한다. 이와 관련하여 도 1의 사이클 테이블 생성부(100)에 상세한 설명이 기재되어 있으므로 중복되는 설명은 생략한다.In step S100 according to the embodiment of the present invention, the type of the sentence of the first program source code is classified and a pattern based on the relation with the assembly instruction corresponding to the sentence is generated. Thereafter, the required number of cycles of the assembly instruction is calculated based on the generated pattern to generate the cycle table. In this regard, since the detailed description is given in the cycle
이후, 프로그램 코드 분석부(200)를 통해 파싱(Parsing) 모듈을 이용하여 제2 프로그램을 파싱하고 소스 코드를 분석한다(S200). Thereafter, the program
본 발명의 실시예에 따른 S200 단계는 추상 구문 트리를 이용하여 제2 프로그램을 구성하는 문장을 파악하는 단계로 문장의 정황 정보(context information)를 파악하기 위해 제2 프로그램의 구성요소별로 노드에 대한 클래스를 정의하여 추상 구문 트리의 노드로 표현한다. 여기서, 정황 정보는 연산자와 피연산자의 자료 유형 정보를 포함한다. 도 5의 사이클 테이블에서 보듯이 곱(*) 연산자의 경우 short 자료형 곱 연산자는 2 사이클이 소요되나 int 자료형 곱 연산자는 9 사이클이 소요되므로 실행 시간을 정확하게 파악하기 위해서는 연산자와 피연산자의 자료형을 파악해야 한다. 이때, 연산자의 자료형은 피연산자의 자료형에 의해 결정되므로 피연산자의 자료형을 먼저 파악한 후 연산자의 자료형을 결정해야 한다. 예를 들어, 피연산자가 모두 short 자료형인 경우 곱 연산자도 short 자료형 연산자가 적용되나, 피연산자가 하나는 short 자료형이고 다른 하나는 int 자료형인 경우 곱 연산자는 int 자료형 연산자가 적용된다.The step S200 according to an embodiment of the present invention is a step of grasping a sentence constituting a second program using an abstract syntax tree. In order to grasp the context information of a sentence, Classes are defined and represented as nodes in an abstract syntax tree. Here, the context information includes data type information of the operator and the operand. As shown in the cycle table of FIG. 5, in the case of the multiplication (*) operator, the short data type multiplication operator takes 2 cycles, whereas the int type data multiplication operator takes 9 cycles. Therefore, in order to accurately grasp the execution time, do. In this case, since the data type of the operator is determined by the data type of the operand, the data type of the operand must first be determined and then the data type of the operator must be determined. For example, if both operands are of type short, the multiplication operator is also applied to the short type operator, but if one operand is a short type and the other is an int type, the multiplication operator is applied to the int type operator.
이후, 소요 사이클 계산 코드 삽입부(310)를 통해 제2 프로그램의 소스 코드에 소요 사이클 계산 코드를 삽입하고, 탐침 코드 삽입부(320)를 통해 제2 프로그램의 소스 코드에 탐침 코드를 삽입한다(S300).Thereafter, the required cycle calculation code is inserted into the source code of the second program through the required cycle calculation
본 발명의 실시예에 따른 S300 단계는 제2 프로그램의 실행 시간 측정을 위해 각 문장의 소요 사이클의 합을 구하는 소요 사이클 계산 코드를 소스 코드에 삽입한다. 소요 사이클 계산 코드는 프로그램 코드 분석부(200)를 통해 생성된 추상 구문 트리(AST)에 기초하여 각 문장의 소요 사이클 합을 산출한다. 여기서, 추상 구문 트리(AST)의 각 노드들은 최악 실행 시간 예측을 위한 자료 유형에 대한 정보와 원본 소스 코드를 포함하므로 각 노드들을 차례로 방문하여 관련 정보를 출력하는 경우 원본 소스 코드와 함께 최대 실행 시간을 파악할 수 있는 제2 프로그램의 문장도 출력할 수 있다.The step S300 according to the embodiment of the present invention inserts a required cycle calculation code into the source code to obtain the sum of the required cycles of each sentence for measuring the execution time of the second program. The required cycle calculation code calculates a required cycle sum of each sentence based on the abstract syntax tree (AST) generated through the program code analysis unit (200). Here, each node of the abstract syntax tree (AST) includes the information about the data type for the worst execution time prediction and the original source code. Therefore, when each node is visited in order to output the related information, It is possible to output a sentence of the second program which can grasp the second program.
도 7은 소요 사이클 계산 코드를 포함하는 프로그램 소스 코드 예시이다.7 is a program source code example including the required cycle calculation code.
도 7은 제2 프로그램의 소스 코드(710)에 소요 사이클 계산 코드(720, 730, 740, 750)가 삽입된 것을 나타낸다.7 shows that the required
도 7에서 제1 코드(720)의 Total_Cycles += int_LOAD + int_MV + int_GT;는 해당 코드 이전까지 계산된 소요 사이클 수에 int_LOAD, int_MV, 그리고 int_GT의 사이클 수를 더한다는 의미이다. 즉, k>10의 표현식을 계산하기 위해서는 메모리로부터 변수 k 값을 읽어 레지스터에 저장하는 연산(int_LOAD), 상수 10을 레지스터에 저장하는 연산(int_MV), 그리고 두 레지스터 값을 비교하는 연산(int_GT)이 소요됨을 의미한다.In FIG. 7, Total_Cycles + = int_LOAD + int_MV + int_GT; of the
도 7에서 제1 코드(720)의 Total_Cycles += int_LOAD + int_MV + int_GT;는 제3 코드(740)에도 포함되며, 이는 실제 프로그램이 수행될 때 조건문을 먼저 수행한 뒤 then 영역 또는 else 영역 중 하나로 제어가 흘러가더라도 조건문 실행에 소요되는 시간을 동일하게 반영하기 위함이다. 제1 코드(720)의 NOP는 비교 연산이 끝나면 비교 연산의 다음 문장인 then 영역으로 곧바로 제어가 넘어올때 수행되는 연산이다. 한편, else 영역의 BRANCH 연산은 비교 연산이 끝나면 else 영역으로 제어가 이동되어야 하는 상황을 반영한 연산이다. 이로 인해, then 영역의 마지막인 제2 코드(730)에는 BRANCH 연산이 있으나 else 영역의 마지막인 제4 코드(750)에는 BRANCH 연산이 없음을 확인할 수 있다. In FIG. 7, Total_Cycles + = int_LOAD + int_MV + int_GT; of the
다시 도 6의 설명으로 돌아가서, 본 발명의 실시예에 따른 S300 단계는 프로그램의 실행 경로를 파악하기 위해 탐침 코드를 소스 코드에 삽입한다. Referring back to FIG. 6, step S300 according to the embodiment of the present invention inserts the probe code into the source code in order to grasp the execution path of the program.
본 발명의 실시예에 따른 S300 단계에서는 프로그램 코드의 파싱 과정에서 탐침 위치를 파악하고 확장된 C 코드 출력 과정에서 탐침을 삽입한다. 구체적으로, 프로그램에서 서로 다른 실행 경로로 제어가 흘러가는 것은 프로그램 로직에서 조건부(predicate)에 의한 것이므로 조건부를 중심으로 서로 다른 경로를 파악하고 그 부분에 탐침을 삽입한다. if문에는 true 경로와 false 경로가 존재하며, while문, for문 및 do while문 등의 반복문에는 반복문 내부로 진입하는 경로와 반복문 내부로 진입하지 않는 경로가 존재하고, switch문에는 각각의 case 경로가 존재하며, 이러한 경로들이 각각 선형적 독립 경로를 구성한다. 반복문에서 각 반복시마다 수행되는 경로도 독립적 경로로 볼 수 있으나 이러한 경우의 개별 경로를 모두 고려하는 경우 그 수를 예측하기 어려우므로 반복문 내로 진입하는 경우와 진입하지 않는 경우만을 독립적인 경로로 다룬다. 프로그램은 순차(sequence), 분기(selection), 반복(iteration)의 요소로 구현되며 조건부를 포함하는 분기 구조와 반복 구조만이 새로운 경로를 생성한다.In step S300 according to the embodiment of the present invention, the position of the probe is determined in the process of parsing the program code, and the probe is inserted in the extended C code output process. Specifically, it is predicated on the program logic that control flows to different execution paths in the program. Therefore, different paths are determined based on the condition part and the probe is inserted in the part. There is a true path and a false path in the if statement. In the loop statement such as the while statement, the for statement, and the while statement, there exists a path for entering the loop statement and a path for not entering the loop statement. And each of these paths constitutes a linear independent path. In the iterative sentence, the path of each iteration can be regarded as an independent path. However, since it is difficult to predict the number of paths when considering all the individual paths in this case, only the case of entering the loop and the case of not entering are treated as independent paths. The program is implemented as an element of sequence, selection, and iteration, and only the branch structure and the iteration structure including the condition part create a new path.
도 8은 프로그램 소스 코드에 삽입된 탐침 코드 예시이다.8 is an example of a probe code inserted into the program source code.
도 8에서 보면, 분기 구조의 if문(810)과 반복 구조의 while문(820)의 경로마다 탐침 코드를 삽입한다.8, a probe code is inserted for each path of the if
도 9는 도 8에 대응하는 탐침 코드를 포함하는 프로그램 소스 코드 예시이다.9 is a program source code example including the probe code corresponding to Fig.
도 9에서 보면, 도 8의 탐침 코드가 삽입된 제2 프로그램의 소스 코드를 나타내며, 제1 탐침 코드(910)는 첫 번째 조건부의 then 영역에 삽입되고, 제3 탐침 코드(930)는 두 번째 조건부의 then 영역에 삽입된다. 제2 프로그램 실행이 시작되는 경우 모든 탐침 값을 0으로 초기화한 후 제2 프로그램 실행시 then 영역 또는 else 영역으로 진입할 때마다 탐침 값을 증가시키면 프로그램이 어떤 경로로 수행되었는지 확인할 수 있다. 예를 들어, 제1 탐침 코드(910)의 값이 1이고, 제4 탐침 코드(940)의 값이 1인 경우 첫 번째 분기의 then 영역과 두 번째 분기의 else 영역을 수행한 것을 확인할 수 있다.9 shows the source code of the second program in which the probe code of FIG. 8 is inserted, wherein the
다시 도 6의 설명으로 돌아가서, 테스트 케이스 생성부(400)를 통해 테스트 케이스를 생성한다(S400). S400 단계에서는 화이트 박스 테스트에서 사용하는 경로 커버리지를 만족하는 테스트 케이스를 생성한다. Referring again to FIG. 6, a test case is created through the test case generation unit 400 (S400). In step S400, a test case satisfying the path coverage used in the white-box test is generated.
이후, 프로그램 실행부(500)를 통해 S400 단계에서 생성된 테스트 케이스를 이용하여 제2 프로그램을 실행시킨다(S500). S500 단계에서는 제2 프로그램이 실행된 경로와 경로 실행시 소요 시간이 로그로 기록된다. 예를 들어, 도 7에서 true 경로(then 영역)를 실행하는 경우 최대 실행 시간은 int_LOAD + int_MV + int_GT + NOP + int_STORE + int_LOAD + int_LOAD + int_ADD + BRANCH 이다. 이를 도 5의 사이클 테이블에 기초하여 사이클 수로 변환하면 5 + 2 + 1 + 1 + 3 + 5 + 5 + 1 + 6 = 29 사이클이 소요됨을 알 수 있다.Thereafter, the second program is executed through the
이후, 최악 실행 시간 추출부(600)를 통해 S500 단계의 실행 결과에 기초하여 프로그램의 최악 실행 시간을 추출한다(S600). Thereafter, the worst execution
도 10은 도 7의 프로그램 소스 코드에 대응하는 그래프 표현 예시이다.10 is an example of a graph representation corresponding to the program source code of FIG.
도 10은 도 7의 원본 소스 코드(710)의 각 문장을 노드로 표현한 것으로 두 개의 실행 경로를 갖는다. 제1 실행 경로(1010)는 a 노드 -> b 노드 -> d 노드 -> f 노드 -> g 노드이며, 제2 실행 경로(1020)는 a 노드 -> c 노드 -> e 노드 -> g 노드이다. 제1 실행 경로(1010)에 포함되는 노드의 가중치 합은 29 사이클이며 제2 실행 경로(1020)에 포함되는 노드의 가중치 합은 28 사이클이므로, 제1 실행 경로(1010)가 제2 실행 경로(1020)보다 실행 시간이 길다는 것을 확인할 수 있다. 이로 인해, 프로그램의 최장 실행 시간은 29 사이클로 결정할 수 있다. 이때, 1 사이클이 10ns라 가정하는 경우 최장 실행 시간은 29 * 10 = 290ns 이다.FIG. 10 is a representation of each sentence of the
본 발명의 실시예에 따른 최악 실행 시간 측정 시스템을 이용하면 동일한 프로그램이 복수의 프로세서를 기반으로 실행되는 경우 해당 프로세서에 종속적인 사이클 테이블을 이용하여 서로 다른 프로세서에서 동작하는 프로그램의 최악실행시간을 측정하고 최악실행시간 측정 결과에 기초하여 프로그램을 구동하기 위한 최적의 프로세서를 선택할 수 있다.When the same program is executed based on a plurality of processors, the worst execution time of a program operating in different processors is measured using a cycle table dependent on the same processor And select an optimal processor for driving the program based on the worst-case execution time measurement result.
본 발명의 실시예에 따르면 화이트박스 테스트 기법을 이용하여 실시간 응용 프로그램의 최악 실행 시간을 측정하여 스케줄 가능성을 확인함으로써 종래 정적 방법에 기초하는 최악 실행 시간 측정 방법 대비 최악 실행 시간 측정 방법을 간소화시킬 수 있다. 또한, 화이트박스 테스트 수행과 동시에 스케줄 가능성을 검증할 수 있다.According to the embodiment of the present invention, it is possible to simplify the worst execution time measurement method compared to the worst execution time measurement method based on the conventional static method by checking the possibility of scheduling by measuring the worst execution time of the real- have. In addition, the schedulability can be verified at the same time as performing the white box test.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였으나, 본 발명의 권리범위가 이에 한정되는 것은 아니며 본 발명이 속하는 분야에서 통상의 지식을 가진 자가 여러 가지로 변형 및 개량한 형태 또한 본 발명의 권리범위에 속한다.While the present invention has been particularly shown and described with reference to exemplary embodiments, it is to be understood that the invention is not limited to the disclosed exemplary embodiments, but, on the contrary, It belongs to the scope.
100 : 사이클 테이블 생성부
110 : 문장 분류부
120 : 패턴 생성부
130 : 소요 사이클 산출부
200 : 프로그램 코드 분석부
300 : 프로그램 코드 확장부
310 : 소요 사이클 계산 코드 삽입부
320 : 탐침 코드 삽입부
400 : 테스트 케이스 생성부
500 : 프로그램 실행부
600 : 최악 실행 시간 추출부100: Cycle table generating unit
110: sentence classification section
120: pattern generator
130: Required cycle calculating unit
200: Program code analysis section
300: program code extension unit
310: Required cycle calculation code insertion section
320: probe code inserting portion
400: test case generation unit
500: Program execution unit
600: worst execution time extraction unit
Claims (7)
어셈블리 명령어로 변환되어 실행되는 복수개의 프로그램을 포함하는 제1 실시간 응용 프로그램의 소스 코드에서 문장의 종류를 분류하고, 분류된 문장과 이에 대응하는 어셈블리 명령어의 관계를 분석하여 패턴을 도출하고, 도출된 패턴에 기초하여 상기 분류된 문장에 대응하는 어셈블리 명령어의 소요 사이클 수를 산출하여 사이클 테이블을 생성하는 기능,
상기 제1 실시간 응용 프로그램과 독립적인 스케줄 가능성 테스트 대상인 제2 실시간 응용 프로그램의 소스 코드를 분석하는 기능,
상기 제2 실시간 응용 프로그램의 소스 코드에 소요 사이클 계산 코드와 경로 파악 탐침 코드를 삽입하는 기능,
상기 제2 실시간 응용 프로그램의 제어 흐름을 분석한 결과에 기초하여 테스트 케이스를 생성하는 기능,
상기 생성된 테스트 케이스에 기초하여 상기 제2 실시간 응용 프로그램을 실행시키고, 상기 생성된 사이클 테이블에 기초하여 상기 제2 실시간 응용 프로그램의 실행 경로별 소요 시간을 산출하여 저장하는 기능, 그리고
상기 저장된 실행 경로별 소요 시간 중 최장 실행 시간을 추출하는 기능
를 포함하는 테스트 기법을 이용한 최악 실행 시간 측정 방법을 구현한 프로그램을 저장하는 컴퓨터로 판독 가능한 기록매체.A computer-readable recording medium having stored thereon a program for implementing a worst-case execution time measurement method using a worst-case execution time measurement system using a test technique,
Classifying a type of a sentence in a source code of a first real-time application program including a plurality of programs converted into assembly instructions and executing the program, deriving a pattern by analyzing a relationship between the classified sentence and the corresponding assembly instruction, A function of generating a cycle table by calculating a required number of cycles of the assembly instruction corresponding to the classified sentence based on the pattern,
Analyzing source code of a second real-time application program that is an object of a schedulability test independent of the first real-time application program,
A function of inserting the required cycle calculation code and the route identification probe code into the source code of the second real-time application program,
A function of generating a test case based on a result of analyzing a control flow of the second real-time application program,
A function of executing the second real-time application program based on the generated test case, calculating and storing the time required for each execution path of the second real-time application program based on the generated cycle table, and
A function of extracting the longest execution time among the required times for each of the stored execution paths
And a method of measuring a worst-case execution time using a test technique.
상기 제2 실시간 응용 프로그램의 소스 코드를 분석하는 기능은,
상기 제2 실시간 응용 프로그램의 구성요소에 대한 정보를 노드 형태로 정의하고 추상 구문 트리를 생성하여 상기 소스 코드를 분석하는 테스트 기법을 이용한 최악 실행 시간 측정 방법을 구현한 프로그램을 저장하는 컴퓨터로 판독 가능한 기록매체.The method of claim 1,
The function of analyzing the source code of the second real-
A computer readable storage medium storing a program implementing a worst-case execution time measurement method using a test technique for defining information on a component of the second real-time application program in a node form and generating an abstract syntax tree to analyze the source code; Recording medium.
프로그램 코드 분석부를 통해 상기 제1 실시간 응용 프로그램과 독립적인 스케줄 가능성 테스트 대상인 제2 실시간 응용 프로그램의 소스 코드를 분석하는 단계,
소요 사이클 계산 코드 삽입부를 통해 상기 제2 실시간 응용 프로그램의 소스 코드에 소요 사이클 계산 코드를 삽입하는 단계,
탐침 코드 삽입부를 통해 상기 제2 실시간 응용 프로그램의 소스 코드에 경로 파악 탐침 코드를 삽입하는 단계,
테스트 케이스 생성부를 통해 상기 제2 실시간 응용 프로그램의 제어 흐름 분석 결과에 기초하여 테스트 케이스를 생성하는 단계,
프로그램 실행부를 통해 상기 생성된 테스트 케이스에 기초하여 상기 제2 실시간 응용 프로그램을 실행시키고, 상기 생성된 사이클 테이블에 기초하여 상기 제2 실시간 응용 프로그램의 실행 경로별 소요 시간을 산출하여 저장하는 단계, 그리고
최악 실행 시간 추출부를 통해 상기 저장된 실행 경로별 소요 시간 중 최장 실행 시간을 추출하는 단계
를 포함하는 테스트 기법을 이용한 최악 실행 시간 측정 방법.A first real-time application program that includes a plurality of programs converted into assembly instructions through a cycle table generation unit, classifies the types of sentences in the source code, analyzes the relationship between the classified sentences and the corresponding assembly instructions, Calculating a required number of cycles of the assembly instruction corresponding to the classified sentence based on the derived pattern to generate a cycle table,
Analyzing a source code of a second real-time application program that is an object of a schedulability test independent of the first real-time application program through a program code analyzing unit;
Inserting a required cycle calculation code into the source code of the second real-time application program through a required cycle calculation code inserting unit,
Inserting a path capture probe code into the source code of the second real-time application program through a probe code insertion unit,
Generating a test case based on a result of analysis of the control flow of the second real-time application program through a test case generating unit,
Executing the second real-time application program based on the generated test case through a program execution unit, calculating and storing the time required for each execution path of the second real-time application program based on the generated cycle table, and
Extracting the longest execution time among the required execution times of the stored execution paths through the worst execution time extracting step
A method for measuring a worst case execution time using a test method including a test method.
상기 제2 실시간 응용 프로그램의 소스 코드 분석 단계는,
상기 제2 실시간 응용 프로그램의 구성요소에 대한 정보를 노드 형태로 정의하는 단계, 그리고 상기 정의된 노드를 포함하는 추상 구문 트리를 생성하는 단계를 포함하는 테스트 기법을 이용한 최악 실행 시간 측정 방법.5. The method of claim 4,
Wherein the step of analyzing the source code of the second real-
Defining information on a component of the second real-time application program in the form of a node, and generating an abstract syntax tree including the defined node.
상기 경로 파악 탐침 코드 삽입 단계는,
상기 제2 실시간 응용 프로그램의 소스 코드 중 조건부에 기초하여 서로 다른 경로를 파악하고 파악된 경로에 상기 경로 파악 탐침 코드를 삽입하는 테스트 기법을 이용한 최악 실행 시간 측정 방법.5. The method of claim 4,
In the path grasping probe code inserting step,
Determining a different path based on a condition part of the source code of the second real-time application program and inserting the path identification probe code into the identified path.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150113534 | 2015-08-12 | ||
KR20150113534 | 2015-08-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170020251A KR20170020251A (en) | 2017-02-22 |
KR101788279B1 true KR101788279B1 (en) | 2017-10-19 |
Family
ID=58315063
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160101851A KR101788279B1 (en) | 2015-08-12 | 2016-08-10 | Measuring system and method of worst-case execution time using test techniques |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101788279B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11409643B2 (en) | 2019-11-06 | 2022-08-09 | Honeywell International Inc | Systems and methods for simulating worst-case contention to determine worst-case execution time of applications executed on a processor |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101918364B1 (en) * | 2016-12-07 | 2018-11-13 | 강원대학교산학협력단 | Real-time conformance testing method and apparatus for system based on component, and computer-readable recording medium for the same |
CN109558141B (en) * | 2018-11-28 | 2022-05-13 | 北京东土科技股份有限公司 | Method and device for determining worst execution time WCET and readable medium |
CN109800171A (en) * | 2019-01-25 | 2019-05-24 | 上海创景信息科技有限公司 | The worst time analysis system and method based on hybrid analysis |
KR102631545B1 (en) * | 2019-05-17 | 2024-01-30 | 삼성에스디에스 주식회사 | Method and system for program analysis |
CN114385487A (en) * | 2021-12-17 | 2022-04-22 | 斑马网络技术有限公司 | Execution time processing method and device and storage medium |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100575582B1 (en) | 2004-12-20 | 2006-05-03 | 한국전자통신연구원 | Static timing analysis apparatus for distributed real-time embedded software and method therefor |
KR101019167B1 (en) | 2009-11-30 | 2011-03-04 | 재단법인대구경북과학기술원 | Method and apparatus of testing worst case response time for embedded software |
-
2016
- 2016-08-10 KR KR1020160101851A patent/KR101788279B1/en active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100575582B1 (en) | 2004-12-20 | 2006-05-03 | 한국전자통신연구원 | Static timing analysis apparatus for distributed real-time embedded software and method therefor |
KR101019167B1 (en) | 2009-11-30 | 2011-03-04 | 재단법인대구경북과학기술원 | Method and apparatus of testing worst case response time for embedded software |
Non-Patent Citations (2)
Title |
---|
"소프트웨어 감시 기법을 활용한 정적 실행시간 분석의 신뢰성 향상", 한국컴퓨터정보학회 논문집(2010) |
"실행정보를 적용한 최악실행시간 분석도구", 2007 한국컴퓨터종합학술대회 논문집 Vol.34, No.1(2007) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11409643B2 (en) | 2019-11-06 | 2022-08-09 | Honeywell International Inc | Systems and methods for simulating worst-case contention to determine worst-case execution time of applications executed on a processor |
Also Published As
Publication number | Publication date |
---|---|
KR20170020251A (en) | 2017-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101788279B1 (en) | Measuring system and method of worst-case execution time using test techniques | |
CN111104335B (en) | C language defect detection method and device based on multi-level analysis | |
Enoiu et al. | Automated test generation using model checking: an industrial evaluation | |
Medeiros et al. | DEKANT: a static analysis tool that learns to detect web application vulnerabilities | |
US7917899B2 (en) | Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus | |
Buchwald | Optgen: A generator for local optimizations | |
US20070011664A1 (en) | Device and method for generating an instruction set simulator | |
Trindade et al. | Applying SMT-based verification to hardware/software partitioning in embedded systems | |
Hübner et al. | Experimental evaluation of a novel equivalence class partition testing strategy | |
US10324829B2 (en) | Application testing | |
CN108874656A (en) | Code test method, device, readable storage medium storing program for executing and computer equipment | |
JP6723483B2 (en) | Test case generation device, test case generation method, and test case generation program | |
KR100938489B1 (en) | A system and method estimating automatically the Worst-case Execution Time of realtime systems by using Implicit Path Enumeration Technique | |
Letychevskyi et al. | Fuzz Testing Technique and its Use in Cybersecurity Tasks | |
García-Ferreira et al. | A survey on static analysis and model checking | |
Gustafsson et al. | Approximate worst-case execution time analysis for early stage embedded systems development | |
Demidov et al. | Integer overflow vulnerabilities detection in software binary code | |
CN114924925A (en) | Instruction set simulator test method and device, electronic equipment and storage medium | |
US6968523B2 (en) | Design method of logic circuit using data flow graph | |
Cui et al. | Binary Code Vulnerability Location Identification with Fine-grained Slicing | |
KR20150041541A (en) | Method and apparatus for generating test bench for verification of a processor decoder | |
US9519567B2 (en) | Device, method of generating performance evaluation program, and recording medium | |
Gustafsson | Usability aspects of WCET analysis | |
Kanade et al. | Structuring optimizing transformations and proving them sound | |
Sri et al. | A Holistic Approach to CPU Verification using Formal Techniques |
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 |