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 PDF

Info

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
Application number
KR1020160101851A
Other languages
Korean (ko)
Other versions
KR20170020251A (en
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 충남대학교산학협력단
Publication of KR20170020251A publication Critical patent/KR20170020251A/en
Application granted granted Critical
Publication of KR101788279B1 publication Critical patent/KR101788279B1/en

Links

Images

Classifications

    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/263Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test 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

테스트 기법을 이용한 최악 실행 시간 측정 시스템 및 방법{MEASURING SYSTEM AND METHOD OF WORST-CASE EXECUTION TIME USING TEST TECHNIQUES}TECHNICAL FIELD [0001] The present invention relates to a method and a system for measuring a worst execution time using a test method,

본 발명은 사이클 테이블과 테스트 케이스를 함께 이용하여 실시간 응용 프로그램의 최악 실행 시간을 측정하는 시스템 및 방법에 관한 것이다.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 table generation unit 100, a program code analysis unit 200, a program code extension unit 300, a test case generation unit 400, a program execution unit 500, And an execution time extracting unit 600.

사이클 테이블 생성부(100)는 제1 프로그램의 소스 코드의 단위 문장과 이에 대응하는 어셈블리 명령어의 관계를 분석하여 사이클 테이블(cycle table)을 생성하며, 문장 분류부(110), 패턴 생성부(120), 그리고 소요 사이클 산출부(130)를 포함한다. 이때, 어셈블리 명령어에 대응하는 사이클 테이블은 특정 프로세서(인텔, 모토로라 등)에 종속적이다. 여기서, 제1 프로그램은 복수의 프로그램일 수 있다. The cycle table generation unit 100 generates a cycle table by analyzing the relationship between the unit sentence of the source code of the first program and the corresponding assembly instruction and outputs the cycle table to the sentence classifying unit 110, ), And a required cycle calculation unit 130. At this time, the cycle table corresponding to the assembly instruction is dependent on a specific processor (Intel, Motorola, etc.). Here, the first program may be a plurality of programs.

문장 분류부(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 sentence classifying section 110 classifies sentences constituting the source code of the first program. The sentence classifying unit 110 according to the embodiment of the present invention classifies the sentence of the C language into an expression, a conditional statement, a loop statement, a function, and a function call unit. An expression is a statement written on the basis of an operator provided by the C language, and the conditional statement includes an if statement and a switch statement. The loop contains a for statement, a while statement, and a do while statement. Functions and function calls are statements that declare a function or call a declared function. These elements are described through operators and keywords provided by C language and are used as a criterion for classifying C language sentences. For example, all expressions provided by C language (assignment operator, unary operator, binary operator, ternary operator, casting operator, etc.) are used to create an expression and use it as input. In the case of an if statement, four types of expressions such as if, if-else, and if-else if-else can be created using two keywords, if and else. In addition, data type keywords do not have any relationship with assembly instructions alone, but they affect assembly instructions that are generated when combined with an operator. For example, multiplication of short type and multiplication of int type have the same operators but different type of MPY instruction and MPYI instruction type, respectively.

패턴 생성부(120)는 제1 프로그램의 소스 코드를 구성하는 문장과 이에 대응하는 어셈블리 명령어와의 관계를 분석하여 패턴을 생성한다. 본 발명의 실시예에 따른 패턴 생성부(120)는 제1 프로그램의 소스 코드를 구성하는 문장이 컴파일러를 통해 미리 설정되어 있는 규칙에 따라 어셈블리 명령어로 변환되는 점을 고려하여 문장과 어셈블리 명령어 사이의 패턴을 도출한다.The pattern generation unit 120 generates a pattern by analyzing a relation between a sentence constituting the source code of the first program and the corresponding assembly command. The pattern generating unit 120 according to the embodiment of the present invention may be configured such that the sentence constituting the source code of the first program is converted into an assembly instruction according to a rule preset by the compiler, The pattern is derived.

도 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와 같은 패턴을 도출할 수 있다.Assembly instructions 13 through 15 in FIG. 2 are instructions for preparing values for two operands, numbers 16 and 17 are instructions for multiplication operations, assembly instructions 13 through 15 in FIG. 3 are for two operands And 16 and 17 are instructions corresponding to multiplication operations. 2 and Fig. 3, the pattern shown in Fig. 4 can be derived.

다시 도 1의 설명으로 돌아가서, 소요 사이클 산출부(130)는 패턴 생성부(120)의 패턴 생성 결과에 기초하여 어셈블리 명령어의 소요 사이클 수를 산출하고 사이클 테이블을 생성한다.Referring back to FIG. 1, the required cycle calculating unit 130 calculates the required cycle number of the assembly instruction word based on the pattern generation result of the pattern generating unit 120, and generates the cycle table.

실제 명령어가 실행 상태로 들어가는데 소요되는 사이클은 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 cycle calculating unit 130 according to the embodiment of the present invention applies the pattern for performing the product operation after preparing the two values of the operands of FIG. 4 to the assembly instruction of FIG. 2 and FIG. 3, . For example, in FIG. 2, the multiply operation of the short data type corresponds to MPY.M2, B5, B4 and B4 instructions (one cycle) and one NOP instruction (one cycle) . It corresponds to .M2, B5, B4, B4 instruction (1 cycle) and 8 NOP instructions (8 cycles). For this reason, the multiplication of short data types can be computed in 2 cycles, and the multiplication of int data types can be computed in 9 cycles. In addition, the cycle table shown in FIG. 5 can be generated by storing the calculated required cycles for each calculated instruction word.

도 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 code analyzing unit 200 analyzes a source code of a real-time application program (hereinafter referred to as a 'second program') which is a schedulability test target. The program code analyzing unit 200 according to the embodiment of the present invention includes a parser module and defines a class for a node for each component of the second program and stores data type information (context information) of the operator and the operand And generates an abstract syntax tree (AST) based on the generated node.

프로그램 코드 확장부(300)는 최악 실행 시간 분석을 위해 제2 프로그램의 소스 코드를 확장하며, 소요 사이클 계산 코드 삽입부(310)와 탐침 코드 삽입부(320)를 포함한다.The program code extension unit 300 extends the source code of the second program for the worst case execution time analysis and includes a required cycle calculation code inserting unit 310 and a probe code inserting unit 320.

소요 사이클 계산 코드 삽입부(310)는 제2 프로그램의 소스 코드에 대응하는 소요 사이클의 합을 구하는 코드를 삽입한다. The required cycle calculation code inserting unit 310 inserts a code for obtaining a sum of required cycles corresponding to the source code of the second program.

탐침 코드 삽입부(320)는 제2 프로그램의 소스 코드에 최악 실행 시간을 소요하는 경로를 파악하기 위한 탐침 코드를 삽입한다. 본 발명의 실시예에 따른 탐침 코드 삽입부(320)는 제2 프로그램을 구성하는 선형적 독립 실행 경로(linearly independent execution path)에 하나 이상의 탐침 코드를 삽입한다.The probe code inserting unit 320 inserts a probe code for identifying a path that takes the worst execution time to the source code of the second program. The probe code inserting unit 320 according to the embodiment of the present invention inserts one or more probe codes into a linearly independent execution path constituting the second program.

테스트 케이스 생성부(400)는 제2 프로그램의 제어 흐름(control flow)을 파악한 결과에 기초하여 선형적 독립 실행 경로를 파악하고 해당 경로를 수행하는데 필요한 입력 데이터를 포함하는 테스트 케이스를 생성한다. 여기서, 테스트 케이스는 화이트 박스 테스트(소스 코드와 내부구조를 하나하나 짚어가면서 입력값에 따른 출력값이 어떠한 원리로 계산되는지 테스트하는 방법)에서 사용하는 경로 커버리지를 만족하며 제2 프로그램에서 선형적 독립 실행 경로를 최소한 한번씩 수행한다.The test case generation unit 400 recognizes the linear independent execution path based on the result of grasping the control flow of the second program and generates a test case including input data necessary for executing the path. In this case, the test case satisfies the path coverage used in the white-box test (how to test how the output value according to the input value is calculated by examining the source code and the internal structure one by one) Run the path at least once.

프로그램 실행부(500)는 테스트 케이스 생성부(400)를 통해 생성된 테스트 케이스에 기초하여 제2 프로그램을 실행시키고 실행 경로와 소요 시간을 저장한다.The program execution unit 500 executes the second program based on the test case generated through the test case generation unit 400, and stores the execution path and the required time.

최악 실행 시간 추출부(600)는 프로그램 실행부(500)의 실행 결과에 기초하여 최장 실행 시간을 추출한다. 여기서, 추출된 최장 실행 시간은 제2 프로그램의 최악 실행 시간이다.The worst-case execution time extraction unit 600 extracts the longest execution time based on the execution result of the program execution unit 500. [ Here, the extracted longest execution time is the worst execution time of the second program.

도 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 table generating unit 100 analyzes a relationship between a sentence constituting the first program and an assembly instruction, and generates a cycle table based on the analysis result (S100).

본 발명의 실시예에 따른 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 table generation unit 100 of FIG. 1, redundant description is omitted.

이후, 프로그램 코드 분석부(200)를 통해 파싱(Parsing) 모듈을 이용하여 제2 프로그램을 파싱하고 소스 코드를 분석한다(S200). Thereafter, the program code analyzing unit 200 parses the second program using a parsing module and analyzes the source code (S200).

본 발명의 실시예에 따른 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 code inserting unit 310, and the probe code is inserted into the source code of the second program through the probe code inserting unit 320 ( S300).

본 발명의 실시예에 따른 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 cycle calculation codes 720, 730, 740 and 750 are inserted into the source code 710 of the second program.

도 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 first code 720 means adding the number of cycles int_LOAD, int_MV, and int_GT to the required number of cycles calculated before the corresponding code. In order to compute the expression k> 10, the operation (int_LOAD) to read the variable k value from the memory and store it in the register, the operation (int_MV) to store the constant 10 in the register, and the operation (int_GT) .

도 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 first code 720 is included in the third code 740. This is because when the actual program is executed, This is to reflect the time required to execute the condition statement even if the control flows. The NOP of the first code 720 is an operation that is performed when control is immediately passed to the next area of the comparison statement after the comparison operation. On the other hand, the BRANCH operation of the else region is an operation that reflects a situation where control is shifted to the else region after the comparison operation is completed. Accordingly, it can be confirmed that there is a BRANCH operation in the second code 730, which is the end of the then area, but no BRANCH operation, in the fourth code 750, which is the end of the else area.

다시 도 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 statement 810 of the branch structure and the while statement 820 of the repetition structure.

도 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 first probe code 910 is inserted into the then region of the first conditional and the third probe code 930 is inserted into the second And then inserted into the then area of the conditional part. If the second program execution is started, initialize all probe values to 0, and increase the probe value every time the second program is executed to enter the then or else region, thereby confirming the path of the program. For example, if the value of the first probe code 910 is 1 and the value of the fourth probe code 940 is 1, it can be confirmed that the then region of the first branch and the else region of the second branch are performed .

다시 도 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 program executing unit 500 using the test case generated in step S400 (S500). In step S500, the path where the second program is executed and the time required for executing the path are recorded in the log. For example, when executing the true path (then region) in FIG. 7, the maximum execution time is int_LOAD + int_MV + int_GT + NOP + int_STORE + int_LOAD + int_LOAD + int_ADD + BRANCH. 5 + 2 + 1 + 1 + 3 + 5 + 5 + 1 + 6 = 29 cycles are obtained by converting the number of cycles into the number of cycles based on the cycle table of FIG.

이후, 최악 실행 시간 추출부(600)를 통해 S500 단계의 실행 결과에 기초하여 프로그램의 최악 실행 시간을 추출한다(S600). Thereafter, the worst execution time extracting unit 600 extracts the worst execution time of the program based on the execution result of step S500 (S600).

도 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 original source code 710 of FIG. 7 as a node, and has two execution paths. The first execution path 1010 is a node-> b node-> d node-> f node-> g node and the second execution path 1020 is a node-> c node-> e node-> g node to be. The sum of the weights of the nodes included in the first execution path 1010 is 29 cycles and the sum of the weights of the nodes included in the second execution path 1020 is 28 cycles so that the first execution path 1010 is connected to the second execution path 1020). ≪ / RTI > As a result, the longest execution time of the program can be determined to be 29 cycles. At this time, assuming that one cycle is 10 ns, the longest execution time is 29 * 10 = 290 ns.

본 발명의 실시예에 따른 최악 실행 시간 측정 시스템을 이용하면 동일한 프로그램이 복수의 프로세서를 기반으로 실행되는 경우 해당 프로세서에 종속적인 사이클 테이블을 이용하여 서로 다른 프로세서에서 동작하는 프로그램의 최악실행시간을 측정하고 최악실행시간 측정 결과에 기초하여 프로그램을 구동하기 위한 최적의 프로세서를 선택할 수 있다.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.
삭제delete 제1항에서,
상기 제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 실시간 응용 프로그램의 소스 코드에서 문장의 종류를 분류하고, 분류된 문장과 이에 대응하는 어셈블리 명령어의 관계를 분석하여 패턴을 도출하고, 도출된 패턴에 기초하여 상기 분류된 문장에 대응하는 어셈블리 명령어의 소요 사이클 수를 산출하여 사이클 테이블을 생성하는 단계,
프로그램 코드 분석부를 통해 상기 제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.
삭제delete 제4항에서,
상기 제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.
제4항에서,
상기 경로 파악 탐침 코드 삽입 단계는,
상기 제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.
KR1020160101851A 2015-08-12 2016-08-10 Measuring system and method of worst-case execution time using test techniques KR101788279B1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
"소프트웨어 감시 기법을 활용한 정적 실행시간 분석의 신뢰성 향상", 한국컴퓨터정보학회 논문집(2010)
"실행정보를 적용한 최악실행시간 분석도구", 2007 한국컴퓨터종합학술대회 논문집 Vol.34, No.1(2007)

Cited By (1)

* Cited by examiner, † Cited by third party
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