KR20040004549A - 임베딩된 소프트웨어 실행 시간의 통계적 기준의 추정을위한 방법 및 장치 - Google Patents
임베딩된 소프트웨어 실행 시간의 통계적 기준의 추정을위한 방법 및 장치 Download PDFInfo
- Publication number
- KR20040004549A KR20040004549A KR10-2003-7011654A KR20037011654A KR20040004549A KR 20040004549 A KR20040004549 A KR 20040004549A KR 20037011654 A KR20037011654 A KR 20037011654A KR 20040004549 A KR20040004549 A KR 20040004549A
- Authority
- KR
- South Korea
- Prior art keywords
- software
- instructions
- virtual
- benchmark
- programs
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
-
- 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/3447—Performance evaluation by modeling
-
- 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/3457—Performance evaluation by simulation
-
- 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/3428—Benchmarking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/815—Virtual
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
소프트웨어 실행 시간을 추정하기 위한 통계적 접근법이 타겟 처리 장치의 모델을 준비하고, 그 모델의 준비에 사용되는 벤치마크 프로그램들로 추정될 소프트웨어를 상관시키고, 이어서 추정될 소프트웨어를 그 모델에 적용시킴으로써, 구현된다. 그 모델은 벤치마크 프로그램들의 실제 실행 시간을 결정하고, 그 벤치마크 프로그램들 내의 가상 명령(virtual instruction)들의 수를 결정하고, 그 실제 실행 시간에 가상 명령들을 상관시키는 예측 방정식(predictor equation)(도 4의 420)을 결정함으로써 개발된다. 그 예측 방정식은 가상 명령들의 상관 분석, 높게 상관된 명령들의 제거(도 4의 410), 및 예측 방정식을 결정하기 위한 스텝식 선형 회기(stepwise linear regression)와 다중 선형 회기의 조합(도 4의 422)에 의해 결정된다. 2-샘플 t-테스트는 벤치마크 프로그램들로부터 개발된 모델의 추정에 의해 소프트웨어 특성을 평가한다.
Description
저작권 공고
본 특허 문서의 공개 중 일부가 저작권 보호의 적용을 받는 재료를 포함한다. 저작권 소유자는 특허청 및 상표국의 특허 파일 또는 기록들에 있는 특허 문서 또는 특허 공개는 아무나 팩시밀리 복제해도 이의가 없지만, 그 밖의 것은 무엇이든지 모든 저작권이 보호되어야 한다.
발명의 배경
임베딩된 시스템 설계자들은 종종 동시에 계속적으로 변화하는 사양들에 직면하는 소프트웨어 및 전자공학의 설계 소요시간(turnaround)을 감소시키기 위해 증가된 압박을 끊임없이 받고 있다. 최대의 설계 비준 문제들 중 하나는 다른HW/SW 분할들의 추정이다.
오늘날의 접근법들은 종종 공동-검증 레벨로 수행된다 - 비준하에서 시스템의 가상의 프로토타입이 구상된다. 예를 들어, 도 1은 물리적 프로토타입을 통한 전-분할로부터의 하드웨어/소프트웨어 공동-검증에 대한 예의 구조를 제공한다. 그 구조는 하드웨어 시뮬레이션 및 소프트웨어 개발 도구들을 지원한다.
오늘날의 접근법들에서, 그 임베딩된 SW는 명령 세트 시뮬레이터(ISS: Instruction Set Simulator)에서 컴파일되고 실행되는 반면, 하드웨어 부분은 논리 시뮬레이터로 실제의 VHDL 또는 베릴로그(Verilog) 구현들을 수행함으로서 시뮬레이팅된다 - 그 두 분할들 간의 통신은 버스 트랜잭션 레벨로 시뮬레이팅된다. 이러한 접근법의 명백한 이점은 시뮬레이션 결과의 정확성에 있다. 단점은 시뮬레이션 속도에 있다 - 완전 시스템 시뮬레이션들은 설계 공간을 효율적으로 익스플로링하는데 너무 느릴 수 있다. 그러므로, 설계 소요시간을 감소시키기 위해서는, 추상화 레벨(level of abstraction)이 상승된다.
구조로부터 동작을 분리시키는 것은 그러한 목적을 달성하기 위한 키 패러다임(key paradigm)이다. 이러한 방식으로, 동작과 구조가 공진화(co-evolve)할 수 있다: 한편 구조 요구조건들(예를 들어, 비용)은 동작 변경들을 유도할 수 있으며, 동작의 새로운 제약조건들이 구조의 변화들을 요구할 수 있다. 좋은 시스템 설계 실행은 추상적 사양을 유지하면서 구조로의 동작의 독립적인 매핑을 허용하는 것이다. 이것은 기능/구조 공동-설계로 언급되어 온 것의 본질이며, VCC 방법론에 대한 기준을 제공한다.
VCC는 가상 구성요소 공동-설계에 대한 케이던스 설계 시스템들에 의해 개발된 설계 도구이다. 그 VCC 환경은 그 구조적인 IP들이 그들의 성능 모델들에 의해 표현되고 타이밍 정보를 갖는 설계의 행동 묘사를 백-애노테이팅(back-annotate)하는데 사용되는 지적 재산 및 가상 구성요소에 기초한 설계 둘 모두를 지원한다. HW-SW 트레이드-오프들이 정확하게 익스플로링됨을 확인하기 위해서는, SW 구현으로 매핑되는 행동들의 실행 시간의 정확한 추정들을 제공하는 것이 키(key)이다.
VCC SW 추정 프레임워크(framework)는 타겟 시스템(CPU 명령 세트, 타겟 컴파일러 등)과 너무 많은 정확도를 잃지 않으면서 추정 시간을 적당하게 하는 추상 레벨의 소프트웨어 프로그램의 구조 둘 모두를 모델링한다. 그러나, 앞서 언급된 바와 같이, 설계자들은 여전히 설계 시간을 감소시키는데 증가된 압박에 직면해 있으며, 증가된 정확도 역시 소요시간 및 제품 품질에 도움이 된다.
발명의 분야
본 발명은 일반적으로 소프트웨어 설계에 관한 것이다. 본 발명은 특히 소프트웨어의 실행 시간의 추정에 관한 것이다. 본 발명은 특히 마이크로프로세서 기반 (임베딩된) 소프트웨어의 실행 시간의 추정에 관한 것이다.
도 1은 물리적 프로토타입을 통한 후-분할로부터의 하드웨어/소프트웨어 공동-검증에 대한 예시적인 구조의 블록도.
도 2는 본 발명의 실시예의 전체적인 흐름의 플로우차트.
도 3은 본 발명에 따른 타겟 프로세서의 모델을 준비하기 위한 처리의 실시예의 플로우차트.
도 4는 본 발명의 실시예에 따른 선형 회귀(linear regression)를 수행하기 위한 단계들의 플로우차트.
발명의 개요
본 발명자들은 통계적 접근법이 현재의 소프트웨어 추정 기술들의 결과들을 개선할 수 있음을 알았다. 이는 두 개의 단계들로 달성된다. 제 1 단계에서, 타겟 프로세서의 모델이 유일한 방식으로 현존하는 구성 블록들을 조합함으로써 가상의 프로세서 명령 세트에 의해 얻어진다:
1. 프런트-엔드 컴파일러 최적화기가 데드 코드(dead code), 일정-루프 할당 등과 같은 추정될 코드 내의 부정확성들의 소스들을 제거하는데 사용된다;
2. 한 세트의 특정(무선, 멀티미디어, 자동-동기) 벤치마크 프로그램들이 선택된다;
3. VCC 가상 컴파일러 및 추정기가 벤치마크 프로그램들에 대한 실행된 가상 명령들의 수를 결정하는데 이용된다;
4. 타겟 환경에 대한 명령 세트 시뮬레이터(ISS)가 벤치마크 프로그램들의 정확한 실행 시간을 측정하는데 사용된다;
5. 다중 선형 회귀법(multiple linear regression)이 추정의 오차의 신뢰성 정도에 따라 추정된 시간에 대해 예측 방정식을 결정하도록 수행되며, SW의 추정오차 대 제어/계산 비가 추정될 것이고, 가상 프로세서 모델을 구성하는 각각의 가상 기계 명령의 사이클 수가 다음 단계에서 사용될 것이다.
제 2 단계에서, 프로세서 모델을 얻는데 사용되는 벤치마크들의 현존하는 세트에 대해 추정될 실제 응용 코드의 유사성(similarity)은 2-샘플 t-테스트에 의해 결정된다. 이것이 그러한 경우라면, 그 응용 코드는 똑같은 프런트-엔드 최적화기로 최적화되며, 애노테이팅된 실행 시간을 갖는 시뮬레이션 모델이 VCC 컴파일-코드 발생기/애노테이터(generator/annotator)에 의해 생성된다.
본 발명은, 적어도 하나의 벤치마크 프로그램 세트의 실행 시간에 기초한 타겟 프로세서의 모델과, 그 적어도 하나의 벤치마크 프로그램 세트로 추정될 소프트웨어 프로그램을 상관시키도록 구성된 상관 장치와, 소프트웨어의 추정된 실행 시간을 결정하기 위해 추정될 소프트웨어 프로그램을 그 모델에 적용시키도록 구성된 추정 장치를 포함하는, 소프트웨어 실행 시간의 추정들을 수행하기 위한 장치로서 구현된다. 본 발명은 또한 소프트웨어의 실행 시간을 추정하기 위한 장치를 포함한다. 타겟 프로세서를 모델링하기 위한 모델링 수단과, 그 모델링 수단에 기초로 사용되었던 벤치마크 소프트웨어 프로그램 세트로 추정될 소프트웨어를 상관시키기 위한 상관 수단과, 그 소프트웨어의 추정된 실행 시간을 결정하기 위해 상기 모델링 수단에 그 상관된 소프트웨어를 적용시키도록 구성된 추정 장치를 포함한다.
본 발명은 벤치마크 프로그램들의 세트에 기초하여 타겟 프로세서의 모델을 준비하는 단계와, 그 벤치마크 프로그램들로 추정될 소프트웨어를 상관시키는 단계와, 그 소프트웨어의 실행 시간의 추정을 결정하기 위해 모델에 그 상관 소프트웨어를 적용시키는 단계를 포함한다.
장치 및 방법 둘 모두의 적어도 일부는 일반적인 목적으로 출력 또는 디스플레이하기 위해, 컴퓨터, 또는 네트워킹된 컴퓨터들로 편리하게 구현될 수 있고, 그 결과들은 일반적인 목적 중 어느 것에 접속되거나 리모트 장치에 전송된 출력 장치에 출력될 수 있다. 또한, 본 발명의 적어도 일부는 실행가능하거나(executable), 해석가능하거나(interpretable), 또는 컴파일가능한(compilable) 명령들의 세트로서 구현될 수 있으며, 컴퓨터 판독가능 매체 또는 임의의 매체에 전송되는 전자 신호들(예를 들어, 네트워크, 패킷들, 무선 전송 등)에 저장될 수 있다.
본 발명의 보다 완전한 이해와 많은 부수적인 이점들이 쉽게 이해될 것이며, 이는 첨부 도면들과 관련하여 고려될 때 다음의 상세한 설명을 참조하여 보다 잘 이해될 것이다.
바람직한 실시예들의 상세한 설명
본 발명의 상세한 분석을 계속하기 전에, 본 발명이 개발된 환경을 설정하는 현재의 방법론들을 좀 더 근접하여 고찰해보고, 본 발명자들의 관찰들을 정리해 보자. 현재, 소프트웨어(SW) 성능 추정은 효과적인 사용을 제한하는 경고들 및 단점들을 제시한다. 이 영역에 개발된 기술들은 다음의 특징들로 기재될 수 있다:
- 추상의 레벨: 소스 코드 기준, 개체 코드 기준, ISS 기준 등;
- 성능 추정이 작동하는 SW의 형태에 대한 제약 조건들: 제어 중심 대 계산 중심, 포인터들 대 정적 데이터 구조들 등;
- 분석 형태: 정적(어떠한 시뮬레이션들도 요구되지 않음) 대 동적;
- 실제의 방법: 추정 대 모델링, 통계 등;
- 모델러(modeler)를 위한 비용: 높음, 중간, 낮음;
- 시뮬레이션 속도: 느림, 빠름, 비교적 빠름, 비교적 느림;
- 분석의 입도; 및
- 결과들의 정확도.
소프트웨어 성능 추정은 일반적으로 두 개의 다른 접근법들, 소스 기준의 접근법들 및 개체 기준의 접근법들로 분류될 수 있다. 소스-기준의 접근법은 가상의 명령 세트에 대해 컴파일을 사용하고, 하나가 타겟 프로세서에 대해 컴파일러를 필요로 하지 않고 추정들을 신속하게 획득하도록 허용한다. 개체-기준의 접근법은 어셈블리 레벨-기능적으로 동등한 C에 대해 타겟 컴파일러에 의해 생성된 어셈블러를 번역한다. 두 가지 경우에서, 코드는 타이밍 및 다른 실행 관련 정보(예를 들어, 추정된 메모리 억세스들)로 애노테이팅되며, 정확하지만 빠른 소프트웨어 시뮬레이션 모델로서 사용된다.
몇가지 결과들이 제한된 구조를 갖는 소프트웨어에 대해, 개체 코드 레벨(상대적으로 낮은 추상 레벨)로 사용가능하다 - 동적 데이터 구조들, 순환적인 절차들 및 무한 루프와 같은 구성들을 이용한 프로그램들은 통계적으로 추정하기 어렵다. 하나의 소프트웨어 합성 시스템에서, 프로그램을 구성하기 위한 모든 프리미티브(primitive)들이 명령들의 고정된 시퀀스로서 정의된다. 그 실행 시간 및 이러한 명령들의 코드 사이즈는 미리-계산되고, 그러므로, 그들은 성능의 정확한 예측들을 산출하는데 이용될 수 있다.
임의의 코드의 정적인 분석은 부가적인 문제들을 제시한다. 하나의 시스템에서, 한 세트의 선형 방정식들은 실행가능한 경로들을 함축적으로 기재하는데 이용된다. 이러한 접근법은 프로그램의 시뮬레이션을 요구하지 않는 이점을 가지므로, 보수적인 최악의 경우의 실행 시간 정보를 제공할 수 있다. 그러나, 이러한 분석이효과적인 사용을 제한하는 단일의 프로그램에 대한 분석으로 타게팅되기 때문이다. 다른 한편, 임베딩된 시스템들은 공통의 자원들을 억세스하는 다수의 태스크들로 구성되며, 동적 활성화는 (예를 들어, 캐쉬의 상태를 변화시킴으로써) 각각 다른 것의 실행 경로 또는 타이밍 동작을 현저하게 변경할 수 있다.
소프트웨어 성능 추정은 실시간 임베딩된 시스템들의 합성 및 검증에 대한 새로운 접근법들이 개발됨으로서 보다 더 중요하게 되었다. 이러한 상황에서, 몇가지 접근법들이 제안되었다. 예를 들어, 예측 방법의 실행 시간은 실행된 명령들의 수와 타겟 시스템의 MIPS 비율의 곱에 비례한다. 몇가지 경우들에서, 통계적 방법들이 몇몇 CPU들이 그들을 실행해야하는 코드에 대해 추정될 수 있도록 타겟 CPU의 성능을 모델링하도록 제안된다. 한가지 모델은 프로그램 내의 각각의 명령에 대해 요구되는 실행 사이클들의 수, 메모리 판독/기록들의 수 및 메모리 억세스당 사이클 수에 의한 소프트 웨어 성능을 추정한다. 또 다른 시스템에서, 주어진 소프트웨어 프로그램은 합성된 RT 레벨 타겟 시스템을 실행하고, SW 타이밍 특성들이 그 시뮬레이션 결과들로부터 추출된다.
도 1의 구조와 같은 시스템들에서, 필터링된 정보는 사이클-정확 ISS와 하드웨어 시뮬레이터 사이로 전달된다(예를 들어, 하드웨어 시뮬레이터에서 명령 및 데이터 페치-관련된 동작을 억제함으로써). 이러한 접근법은 정확하지만 느리고, 하드웨어 및 소프트웨어의 상세한 모델을 요구한다. 성능 분석이 구조 선택들이 변화하기 어려울 때, 그 설계를 완료한 후에만 행해질 수 있다. 또 다른 시스템에서, 소프트웨어 설명의 제어 흐름 그래프(CFG: control flow graph)는 사이클-정확 성능 모델(예를 들어, 파이프라인 및 캐쉬를 고려하는)을 얻는데 유용한 정보와 애노테이팅된다. 그 분석은 각각의 기초 블록에 대해 발생되는 코드로 수행되며, 실제 편집 처리에 의해 수행되는 최적화에 대한 정보가 통합된다. 레지스터 할당, 명령 선택 및 스케줄링 등을 고려한다. 물체 코드-기초의 접근법 또한 이 구성을 사용한다.
입력을 제한하는 대신, 대안으로, 몇몇 샘플 데이터에 대한 프로그램의 실행의 트레이스(trace)가 분석을 구동하는데 사용되어야 할 것을 요구할 수 있다. 이러한 접근법은 프로파일링(profiling)으로서 언급되고, 현존하는 소프트웨어 시스템들에 종종 적용된다. 레지스터-전달(RT: Register Tranfer) 레벨에서의 트레이스-구동된 구성들 및 통계적으로-생성된 부하들을 사용하는 것이 또한 제안되어 왔다. 변경되지 않은 형태에서, 이러한 방법들은 매우 상세한 모델 또는 지정된 것과 유사한 시스템의 예를 요구한다. 본 명세서에서는, 그러한 디테일이 사용가능하기 전에 추정들이 사용가능해야 한다. 이러한 요구조건을 피하기 위해, 트레이스-구동된 접근법이 사용될 수 있다. 시간 축을 독립적으로 다루고 그 프로그램의 실행을 샘플링하는 순수한 프로파일링 접근법 대신에, 그 기능성 모델의 실행은 독립 변수이며, 실행 지연들은 시뮬레이팅된 미래로 포워딩된다. 성능 분석은 통계적으로 벤치마크들의 관련 세트가 적용되는 시스템의 레벨에서 발생할 수 있다. 이것은 너무 비싸므로, 분석이 독립 경로를 따라 지연을 결정하도록 요구되는 정확성 및 비용 없이 제어 흐름 경로들의 세트들의 레벨을 발생하는 것이 제안되어 왔다.
컴퓨터-중심의 코드(computational-dominated code) 도메인에서, DSP를 실행하는 SW의 실행 시간을 추정하기 위한 하나의 방법론이 제안되었다. 그 기술은 실행 시간이 예를 들어 프로파일링을 통해, 이전에 특징으로 된 한 세트의 커널 함수(kerner function)를 정의하는 것을 기초로 한다. 이어서 추정될 알고리즘은 DSP 응용들(동기 데이터플로우)에 대해 커널들의 정적인 합성으로부터 구상된다. POLIS SW 추정 방법이 또한 사용될 수 있다: 최초의 C 코드는 컴파일러 최적화들을 추측하려고 하는 타이밍 추정들과 애노테이팅된다. 이러한 소스-기준 접근법은 그 성능 모델이 비교적 간단하기 때문에(고레벨의 언어 진술 각각에 대해 선택된 프로세서의 추정된 실행 시간), 그 선택된 프로세서(들)에 대해 완전한 설계 환경을 요구하지는 않는다는 이점을 갖는다. 그 접근법은 타게팅된다. 제어-중심의 코드(control-dominated code)는 컴파일러 및 복잡한 구조적 특징들(예를 들어, 데이터 의존성들에 기인한 파이프라인 스톨들)을 고려할 수 없다.
본 발명의 접근법
본 발명의 접근법은 SW에 어떠한 제약조건 없이(임의의 C 코드), 비교적 낮은 가격의 모델러를 가지며, 비교적 빠른 시뮬레이션 속도의, 다이나믹하고(시뮬레이션들이 요구됨) 통계적인 분석 기준의 접근법의 소스-기준 접근법으로 분류될 수 있다. 본 발명은 위에서 기재된 접근법들 중 몇몇에는 없었던 추정들의 추정들의 신뢰성 정도를 제공한다. 본 발명은 또한 성능 모델을 찾아서 커널 함수에 할당하기 위해 예측 방정식을 통해 반자동 방식을 제공하므로, 알맞은 프로그램 경로들을 기재하기 위한 선형 방정식 세트들을 이용한 방법들을 개선한다. 또한, 현존하는 세트와 새로운 벤치마크 프로그램의 유사성이 추론될 수 있으며, SW의 추정 대 제어/계산 비의 오차도 추정될 수 있다.
본 발명은 물체-기준 또는 ISS 기준의 접근법의 정확성을 반드시 제공할 필요는 없다. 그러나, 본 발명은 통계적 신뢰의 정도를 갖는 추정들의 오차를 제공하므로, 설계자가 그 추정들이 트레이드오프를 결정하는데 사용될 수 있는지 그렇지 않으면, 물체 또는 ISS 기준의 보다 비싼 기술이 사용되어야 하는지를 평가할 수 있다.
신뢰할만한 실행 시간 추정
다이나믹한 소스-기준의 SW 추정 기술이 가상 명령들의 세트에서 타겟 프로세서를 동작하는 SW 태스크에 의해 실행되는 실제 기계 명령들을 추출하는 사고에 기초한다. 가상 명령들은 마이크로프로세서 명령들(예를 들어, If문들, GOTO문들, 메모리로부터의 로드(LD), 메모리에 저장(STO), OPi- 정수의 32비트 연산자, MULi- 정수곱, 등)의 제너릭 패밀리로 분류된 명령들이다. 마이크로프로세서 명령들의 제너릭 패밀리에 포함되는 몇몇 명령들이 직접적으로 기계 명령들로 매핑하고, 통상적으로 임의의 특정 제너릭 패밀리 멤버가 매핑될 수 있는(예를 들어, 다른 형태들의 IF문들은 다른 기계 명령들로 매핑됨) 다수의 다른 실제 기계 명령들이 존재하지만, 명령들의 전체 패밀리는 가상 명령의 단일 형태에 의해 표현된다(즉, 모든 다른 IF 변수들은 단일의 IF 가상 명령에 의해 표현되고, 모든 GOTO 변수들은 단일의 GOTO 가상 명령으로 표현됨. 등). 블록의 실행을 포함하는 가상의 명령들의 수의 카운트는 SW 태스크의 각각의 기준 블록에 응한다; 시뮬레이션 동안, SW 태스크는 선천적으로 호스트 워크스테이션(host workstation)에서 실행되지만, 실제 타겟 프로세서에서 실행되는 많은 가상의 명령들이 축적된다.
이 추상 레벨에서 조합 CPU/컴파일러를 모델링하는 것은 매우 어려운 태스크로 증명되었다. 실제로, 상이한 컴파일러들이 발생되고 실행되는 어셈블리 명령들에 의해 매우 동일한 코드의 상이한 결과들을 생성할 수도 있다. 동일한 컴파일러는 최적화 플래그들에 의존하여 상이한 코드를 생성할 수 있다. 그러므로, 임의의 소스-기반 접근법은 푸쉬 버튼 솔루션이 아니라고 생각한다. 키 아이디어는 VCC 컴파일러/추정기가 CPU/컴파일러 쌍을 모델화하는 방법에 의존하여 가상 머신(Virtual Machine) 명령들에 대해 정확한 해석을 제공할 것이다 - 2가지 상이한 해석들이 이용 가능하다:
1)엄격한 해석: VCC 컴파일러는 타겟 환경을 모델화한다; 그러므로 각 가상 명령은 실제로 대응하는 클래스의 어셈블리 명령(들)을 나타낸다. 그 다음 실제 사이클들의 양호한 근사치로서 데이터 북에 의해 제공된 사이클들을 고려하고 그 사이클들을 가상 명령들에 할당한다.
2)관대한 해석: VCC 컴파일러는 타겟 환경을 모델화하지 않으므로 가상 명령은 예측 방정식에서 팩터(factor)이다.
관대한 해석은 예측에 있어 신뢰의 정도를 갖는 통계 접근법에 따른다. 엄격한 해석과 관대한 해석 사이에서 무엇이든 사례별로 평가될 것이다.
일반적으로, VCC에서, 가상 명령들은 LD(load from memory), LI(load immediate), ST(store), OP(i, c, s, l, f, d)(integer, char, short, long,float, double에 대한 기본 ALU 연산자들) 등을 포함하는, RISC 명령 세트의 간략화된 뷰이다.
타겟 프로세서상의 각 가상 명령은 가상 명령들에 의해 커버되는 실제 타겟 프로세서 사이클들의 수에 대한 다수의 방법들을 통해 특징지워진다. 이는 예측 방정식을 유도한다:
여기서, Ni는 타입 i의 가상 명령들의 수와 동일하며, Pi은 가상 명령을 사이클 카운트로 변환한 파라미터와 동일하다. Ni는 VCC에서 SW 태스크의 편집과, 호스트 기준 실행 동안 가상 명령의 각 발생을 축적하는 태스크의 주석을 단 버전의 발생에 의해 계산된다.
Pi는 몇 가지 방식들로 결정될 수 있다:
1) 타겟 프로세서의 데이터시트로부터(엄격한 해석);
2) 교정 슈트(calibration suite)에 최적합 최소 제곱(best fit least square) 접근법을 사용하여;
3) 유사한 도메인(관대한 해석)으로부터 추출된 태스크들의 세트들에 대해 스텝식 다중 선형 회귀 접근법을 사용하여. 이 접근법은 상기 방법으로부터 도출된 솔루션에서 시작할 수 있으며 그 다음 결과들을 조정(tuning)하는데 사용될 수 있음을 유념하라.
후자의 경우에, 한 세트의 선형 방정식들에 대한 제한들은 가상 명령들이 타겟 프로세서 어셈블리 명령들에 대해 의미론적인 대응을 갖지 않으므로 관대해야만 한다. 테이블 1에서, 본 발명자들은 가상 명령들의 상이한 해석들이 포함되는 트레이드오프들을 도시한다. 또한, ISS 기반 기술들뿐만 아니라 객체-기반(object-based)에 대한 기술의 위치가 도시된다.
표 1. SW 추정 기술들
추정 접근법 | 형태 | 생성 효과 | 정확성 | 속도 |
통계적 VI(제약조건없음)데이터 북 Ⅵ동조된(Ⅵ)(제약조건들)커널 함수컴파일링된 코드ISSISS 통합 | 릴렉스 소스코드 기준리지드 소스코드 기준반-리지드 동조된소스 코드 기준DSP 동향물체-기준루프 내의 ISS | 쉬운 w/SW벤치마크들쉬운 w/SW벤치마크들쉬운 w/SW벤치마크들적당한w/프로파일링적당함매우 높음 | 중간중간중간양호 또는매우 양호매우 양호우수함 | 100+배100+배100+배N/A50+배1 |
아래에서, 예로서 프로세서 A를 사용하여, 이 기술들을 도시할 것이며, 이들의 이점들과 단점들을 논의할 것이다. 이 연구 논문들에 사용된 샘플 세트는 태스크당 대략 200 사이클을 실행하는 35 제어(control-oriented)(우위 결정) SW 태스크들로 구성된다. 이는 자동 추진 제어 도메인(automotive control domain)으로부터 추출된다.
기준 결정들의 예
소프트웨어 추정들에 기초한 결정은 다수의 상이한 방식들로 실행될 수 있다. 성과의 정도를 변화시키는데 적용되는 2가지 중요한 예들은 데이터시트 접근법 및 교정 접근법이다.
데이터시트 접근법은 파라미터(Pi)들을 공고된 프로세서 A 데이터시트의 연구 논문으로부터 추출하며, 실제 머신 명령 세트 및 가상 명령 세트간을 유추하여 추출한다. 이는 2개의 주된 논쟁들을 갖는다:
1) 명령당 보고된 사이클들의 몇몇 해석은 파이프라이닝이 효과를 갖는 것과 같은 요청된 효과들이다.
2) 사이클들의 수에서 변화성을 갖는 예들에 대해, 프로세서 상태에 기초하여, 최악, 최상 또는 몇몇 공칭의 경우를 사용하는지에 관하여 결정해야만 한다.
예를 들어, 프로세서 A에서, LD 및 ST 명령들(메모리에 로드 및 저장)은 공칭 3 사이클들을 취한다. 그러나, 프로세서는 3단계 파이프라인을 가지며, 컴파일러의 질 및 태스크에 의존하여, 프로세서는 메모리에서 대기하고 넣어지지 않는 동안 다른 명령들을 실행할 수 있다. 실제로, 대부분의 경우들에서 지능형 편집은 실제 LD 및 ST 유효 사이클 카운트를 1까지 감소시키거나 그것에 매우 근접하게 한다. 원래의 사이클 카운트 3을 사용하는 것은 매우 비관적인 추정기를 제공한다.
또 다른 유사한 논쟁은 SUB 및 RET(서브루틴 호출들 및 리턴들)을 발생시킨다. 0에서 15까지의 레지스터들을 변화시킬 수 있는 프로세서 A는 루틴에 대한 호출에 대해 실제로 쓰이고 있는 레지스터 세트의 일부만을 메모리에 저장할 것이다.유사하게 리턴에 대해, 요청된 수의 레지스터들만이 메모리로부터 재생된다. 모두 15개의 사용자 레지스터들이 절약되어야 한다면 SUB 및 RET에서 최악의 경우의 사용은 대부분의 경우들에서 매우 비관적 또는 보수적인 SUB 및 RET에 대해 19 및 21의 파라미터들에 이르게 한다. 그러나, 전형적으로 사용된 레지스터들의 실제 수는 동적 방식으로 태스크에서 태스크로 변하며 몇몇 종류의 통계적인 연구 없이 공칭 또는 전형적인 값을 구할 수 없다.
본 발명자들은 35개의 벤치마크들의 세트를 통한 사이클 카운트들의 데이터시트 분석으로부터 얻어진 2개의 파라미터 파일들(기준 파일들로 명명됨)을 사용했다. 첫째로, 모든 가상 명령들은 가장 보수적인 기초로 추정된다; 둘째로 로드들 및 저장들은 3에서 1 사이클로 감소된다. 제 1 추정기를 사용하면, 오차 %(예측과 실제 사이클들을 비교)는 -8.5%에서 44% 범위에 있으며, 양의 오차는 비관적 추정기를 나타낸다. 일반적으로, 더 현실적인 로드 및 저장 사이클 카운트들을 갖는 제 2 기초 파일을 사용하면, 46%의 총 오차 범위를 갖는 명확하게 덜 비관적인(실제로 이제 약간 낙관적인) -28%에서 18%의 오차 범위를 얻는다.
그러나, 본 발명은 예측된 오차 범위들의 감소를 포함하는 기술의 개선이다. 데이터시트 방법은 불충분하게 동적이며, 특정 SW 태스크 도메인들과 동조되지 않으며, 그리하여 특정 종류들의 태스크들에 대해 매우 양호한 추정기를 제공하도록 예측될 수 없다. 이것이 로드/저장 사이클 카운트들을 정확하게 할 수 있다하더라도, 서브루틴 호출 및 리턴 오버헤드들을 정확하게 하는 용이한 방법은 없다. 그러므로 일반적으로 많은 계층적인 기능의 호출 구조를 갖는 큰 태스크에 대해 기술은여전히 매우 보수적일 것이다. 이는 사실상 VCC를 사용한 본 발명자들의 경험이었다.
교정 접근법은 프로세서 기본 파일을 유도하는 상이한 접근법이며, 프로세서 기본 파일은 몇몇 부분의 가상 명령 세트를 강조하고, 그 다음 각각의 태스크에서 가상 명령들의 발생 수들로 세트의 태스크들에 대해 실제 사이클들의 적합 최소 제곱을 행하도록 각각 시도하는 프로그램들의 특정 교정 슈트를 생성하는 것이다. 이는 각각의 가상 명령에 대한 파라미터들이 교정 슈트로부터 경험에 의한 데이터에 기초한 기본 파일을 유도하는데 사용되었다.
이 기본 파일에서, 로드들 및 저장들에 대한 파라미터는 IF 1.6 등에 대해, 2.6에서 149.3까지(피연산자 타입에 의존하여)의 범위를 승산하기 위해 0.1이였다.
이를 세트 35 벤치마크들에 적용함에 있어, 55 내지 15%(모두 낙관적으로 추정, 사이클들의 수를 과소 평가)의 오차 범위, 총 40%의 오차 범위를 갖는다.
교정 접근법에는 몇몇 문제점들이 있다:
1) 교정 테스트 슈트의 선택 - 본 발명자들의 경우에서 경험들은 소수의 표준 프로그램들(예를 들어, 8 queens, sort, FFT 및 특정 가상 명령들을 강조하기 위해 생성된 한 세트의 고도의 합성 프로그램과 같은 SPEC 타입 프로그램들)로 행해졌다. 이런 종류의 슈트 및 특성들에 관한 임의의 특정 매입된(embedded) SW 도메인간의 관계는 기껏해야 마진이다. 특히, 이는 양호한 제어 예측들의 비용면에서 수학적인 처리(많은 합성 프로그램들이 MUL 및 DIV 변화들에 대한 값들을 구할 것이므로)를 지나치게 강조할 수 있다.
2) 상기 결정된 분석 - 25 가상 명령들과 약 20-30 프로그램들의 교정 슈트로 이는 적합 최소 제곱들이 교정 슈트에 대해 완성 또는 거의 완성을 달성하지만 이를 다른 프로그램들에 적용할 수 있는 선행 기본을 거의 갖지 않는 상기 결정된 시스템이다.
3) 가능한 강인성의 부족 - 교정 슈트 및 상기 결정된 분석은 상이한 도메인으로부터 프로그램들에 대해, 교정 슈트 기본 파일이 매우 부정확한 결과들을 제공할 수 있음을 의미한다. 실제로, 이는 극단적으로 낙관적이고 데이터 북 접근법 보다 집합에 대해 최악의 결과들을 제공하는 본 발명자들의 35개의 제어 프로그램들의 세트에 도시된다.
4) 가상 명령들간의 높은 상관성들 - 종속 변수만 있는 사이클 카운트를 갖는 모든 독립 변수들인 이 명령들이 모두 통계적으로 상관성이 없다고 가정한다. 그러나, 실제 프로그램들에서 한 가상 명령의 상대 주파수는 종종 다른 것들(예를 들어, 기본 ALU 연산자들을 갖는 로드들, 또는 IF들을 갖는 로드들)과 매우 높은 상관성을 갖는다. 이는 더 간단하고, 더 강인한 추정기들이 독립 변수들의 수가 최소로 감소되는 것을 가능하게 할 수 있다.
5) 사용자 해석에서의 어려움들 - 사용자들은 의미하는 파라미터들을 제공하기 위해 교정 접근법을 기대한다. 즉, 모든 가상 명령 파라미터들은 1이거나 또는 바람직하게 정수로 더 커야만 하며, 논리적으로 스케일링이다(어떠한 실제 명령도 실행하기 위해 사이클보다 작게 취하므로). 그러나, 최적합 접근법은 단지 방정식에서 파라미터들을 구한다. 이 접근법을 취하면, 파라미터들은 더 이상 가상 명령에 대해 사이클 카운터에 어떠한 실제 관계도 갖지 않는다. 이것은 이러한 종류의 접근법에 친숙하지 않는 사용자들에게 어려운 점이다.
그러나, 교정 접근법은 보다 견고하게 근거를 둔 통계적 접근법에 관한 방식을 나타내지만, 3가지 전제들:
1) 특정 도메인들로부터 나온 - 자동 추진, 통신들, 제어-지향, 수학적으로 우위의 - 실제 SW 프로그램들에 기초한 분석과;
2) 예측기에서 사용된 가상 명령들의 수를 독립 변수들의 최소 수로 감소시키고 그래서 더 강인하고 중요한 추정기를 제공하기 위한 시도와;
3) 파라미터들 및 팩터들이 사이클 카운트 의미를 갖는다는 생각으로부터 벗어나기 위해 다양한 가상 명령들과 사이클 카운트간의 포지티브 및 네가티브 상관성들에 근거를 둔다.
본 발명의 통계적 추정 접근법
본 발명은 모든 SW 태스크들에 대해 단일 예측을 생성하기 위한 이전의 아이디어를 버린다. 대신에, 본 발명은 특정 SW 태스크 도메인에 대해 예측을 유도하기 위해 통계적인 기술을 사용하며 그 다음 다른 도메인들에 대한 예측의 적응성을 연구한다.
사용된 접근법은 기본적인 다수의 선형 회귀 및 상관성 분석과 함께, 스텝식 다중 선형 회귀 접근법이다. SW 태스크 도메인은 보다 앞서 논의된 세트의 35 제어 자동 추진의 벤치마크들이다.
제어 세트로서, 본 발명자들은 에스뜨렐 프로그래밍 언어로 쓰여진 한 세트의 6 제어 소프트웨어 태스크들을 이용했다. 35 태스크들로부터 유도된 추정기들은 그 다음 오차를 결정하기 위해 제어 세트에 적용된다. 그러나, 35의 세트로부터 유도된 결과들은 6의 제어 세트에 불량 결과들을 제공한다. 그 다음 제어 샘플이 벤치마크 샘플과 동일한 모집단으로부터 추출되지 않음을 추정하기 위한 기초를 제공하기 위해 간단한 2-샘플 t-테스트를 수행한다.
35-샘플 세트에서 VCC 주석 작성기(annotator)에 의해 실제로 발생된 한 세트의 가상 명령들은 10개다: LD, LI, ST, OPi, MULi, DIM, IF, GOTO, SUB 및 RET. 본 발명자들은 이들이 모두 독립 변수들이라고 가정하며, 종속 변수로서 태스크(사이클들)에 대해 총 사이클 카운트를 사용한다.
실행 시간 태스크 상호 작용을 포착하기 위해 평가가 시뮬레이션 환경에서 동적으로 행해진다. 더욱이, 최상의 실행을 구해서 몇몇 구조적인 매핑들을 검사하기에 충분히 빠를 것이다. 본 발명자들은 주로 C로 쓰여진 소프트웨어에 초점을 맞추는데, 이는 매입된 시스템 프로그래밍에서 우위의 고레벨 언어이기 때문이다. 그러나, 본 발명은 다른 언어들에 적용될 수 있다. 더욱이, 본 발명자들의 접근법은 또한 계산적으로 우위의 코드 소프트웨어를 추정하는데 사용될 수 있다.
스텝식 다중 회귀를 적용하면, 본 발명자들은 몇몇 흥미로운 결과들을 얻는다.
1) 밴드마크 세트내의 MULi 및 DIM의 수들은 상수이며, 그러므로 버려져야 한다(변화 없이, 가정된 독립 변수는 사이클 카운트의 종속 변수와 상관성이 없을 것이다);
2) 단지 한 독립 변수, LD는 방정식에 부가되며, 방정식을 제공하면,
(1)
및
그 R2측정법은 회귀의 주요 방법이다. 본질적으로, 종속 변수(이 경우, 사이클)에서 얼마나 많은 총 편차가 회귀된 독립 변수들에서의 편차로 설명될 수 있는지를 측정한다. 그래서 사이클 카운트에서 36%의 편차는 LD 가상 명령의 편차로 설명된다.
게다가, 일반적으로 회귀는 인터셉트들(즉, 상수 팩터)을 갖는 방정식들을 제공할 것임을 유념하라. 이는 몇 가지 방식들로 해석될 수 있는데, 그 중 하나는 소프트웨어 태스크를 실행 및 중지하는데 요청되는 셋업의 양이다. 그러나, 다른 뷰는 단지 회귀 최적합을 만드는 상수이다. 회귀 파라미터들이 상관성 이외에 무엇이든지 측정한다고 가정하는 것은 잘못일 수 있다. 그래서 LD 파라미터에 대한 4는 평균에 대한 각 LD가 그 자체를 포함하는 다양한 명령들의 4 사이클들을 유인하는 것으로 해석될 수 있으며; 또한 이는 고유의 의미를 가지고 있지 않지만 사이클들을 예측하는데 사용될 수 있는 본질적으로 무의미한, 통계적인 현상으로 해석될 수 있다.
우리가 이 식을 한 세트의 35 샘플들에 재적용할 때, 본 발명자들은 -13 내지 +17%의 오차 범위, 총 30% 범위를 얻는다. 이는 양호하게는 가운데에 있으며, 임의의 데이터북 또는 교정 슈트들보다 더 작은 오차임에 유념하라. 다른 샘플들에대한 이 방정식의 적응성은 이후에 논의될 것이다.
우리가 보통 다수의 선형 회귀를 실행한다면, MULi 및 DIVi를 제외하고 모든 변수들을 사용하면, 본 발명자들은 몇몇 더 많은 결과들을 얻는다:
1) RET는 샘플에서 SUB에 직접적으로 관련되므로 제로로 된다(그러므로 2는 100% 상관된다.).
2) 본 발명자들은 다음 방정식을 얻는다:
(2)
이때,이다. 이 방정식은 사이클 카운트의 49.65%의 변화성을 설명한다. 재적용될 때 본 발명자들은 10.3 내지 +19.4%의 오차 범위를 얻었다.
1) 본 발명자들은 대부분의 샘플 세트의 사이클들(200-250)의 수보다 큰 인터셉트(354)를 갖는다;
2) 본 발명자들은 음의 계수들 또는 파라미터들을 갖는다;
3) 그들 중 대부분은 크다(LI에 대해 31.9)(SUB에 대해 51.5);
4) 다중공선성(multicollinearity)이 몇 가지 문제점이 있다고 패키지가 고발된다(즉, 가정된 독립 변수들 LD, LI, ST, OPi, IF, GOTO 및 SUB 중 몇몇은 실제로 높게 상관된다). 이는 스텝식 회귀 결과들로부터 명백해진다.
다시 말하면, 이 방정식은 명령당 사이클들과 관련된 동작적 의미를 갖는 파라미터들과 관계없이 입력 변수들에 대해 사이클 카운트의 순수한 통계적 적합이다.
다중 공선성 문제를 감소시키기 위해 본 발명자들은 독립 변수들에 대해 상관성 매트릭스를 산출했으며 LD-OPi .92, OPi-IF .99 및 LDIF .88의 상관성들을 얻었다. 이는 모두 높게 상관되어 있으므로 이들 3개의 변수들 중 2개가 제거될 수 있음을 의미한다. 단지 5개의 독립 변수들: LD, LI, ST, GOTO 및 SUB를 갖는 재실행 회귀는 다음 방정식을 초래한다:
(3)
이때,이며, 오차 범위는 10 내지 +22.5%이다.
인터셉트 및 계수들에 대한 동작적 또는 내포된 의미가 없음에 다시 유념하라. 그 패키지는 다중 공선성이 가벼운 문제임을 보고했다(본 발명자들은 결국 다른 변수들을 버릴 수 있었으며, 그 방정식에서 단지 LD를 갖는 스텝식 회귀로 보고된 결과로 끝낼 것이다).
결과들
본 발명자들은 2개의 상기 회귀 방정식들 (1) 및 (3)을 몇몇 에스뜨렐 벤치마크들로부터 6의 샘플 세트에 적용한다. 이는 불완전하게 실행되는데, 사이클 카운트들을 (1)에 대해 23%내지 60%로, (3)에 대해 87% 내지 184%로 과대 평가한다. 이 샘플 세트에서, 본 발명자들은 또한 가상 명령 OPc를 가지며, 적용할 수 있는((3)에서) ON에 대한 파라미터를 사용했다.
나쁜 결과들은 샘플 A에 기초하여 새로운 샘플 B에 대해 통계적으로 유도된 예측의 적응성에 의해 설명되며, 샘플 B가 A에 대해 유사한 특성들을 갖는 유사성에 대한 논증에 기초를 두어야만 한다. 다른 관점에서, 이는 샘플들 A 및 B가 동일한 근본적인 모집단으로부터 추출될 수 있음을 주장할 수 있다. 이러한 가정을 테스트하는 한 방법은 2-샘플 t- 테스트이다. 이는 2 샘플들이 동일한 평균 및 편차를 갖는 동일한 근원적인 정규 분포로부터 추출된다는 가정을 테스트한다.
우리는 비교하기 위해 몇몇의 특징적인 SW 태스크들을 필요로 하며, 이는 예를 들어 사이클 카운트와 같이 독립적이다. 한 아이디어는 총 사이클 카운트에 대한 가상 IF 명령들의 수의 비가 SW 태스크의 제어 우위의 측정인 것인데, 즉, 제어 우위인 태스크들이 알고리즘적으로 또는 수학적으로 우위인 태스크들보다 더 높은 비를 가질 것이다. 이는 아마 중요하지 않는 논쟁이지만, 태스크들에 대한 제어 우위의 명확한 측정을 달성하는 것은 어렵다.
이 비를 사용하여, 본 발명자들은 다음의 통계를 얻었다:
35-샘플 자동추진 제어 배치:
평균 비 = .1077, 표준 편차 = .016
6-샘플 에스뜨렐 배치:
평균 비율=.0300, 표준 편차=.0168
2-샘플 t-테스트는 이 2 샘플들이 동일한 근원적인 정규 분포로부터 추출될 수 있다는 가설을 받아들이지 않았다; 사실상, 정상 그 자체가 제 2 샘플을 받아들이지 않는다.
이 2-샘플 t-테스트 아이디어를 사용하여, 본 발명자들은 다른 샘플로부터 추출된 예측 방정식을 새로운 샘플에 적용하는 것이 이치에 맞는지를 결정하기 위해 이러한 종류의 차별적인 기능을 새로운 일괄들에 적용할 수 있다. 따라서 이는 본 발명자들이 예측들의 적응성의 도메인들간을 구별하도록 허락할 수 있다. 이를 다시 테스트하기 위해, 우리는 35 자동 추진 제어 예들의 제 1 일괄로 되돌아가며, 그들 중 18개를 랜덤하게 선택하며, 5개의 변수들 LD, LI, ST, GOTO, 및 SUB에 대한 회귀를 재실행한다: 이는 다음의 식을 제공한다.
이때,이다.
본 발명자들은 이 방정식을 제 1 일괄(17 샘플들)의 나머지 절반에 적용했으며 12% 내지 +5%의 예측의 오차 범위를 얻었다. 2-샘플 t-테스트를 18 및 17 태스크들의 이 일괄들에 적용하면, 총 사이클들에 대한 IF들의 비의 특성을 사용하여, Null 가설을 취한다-즉, 2 샘플들이 동일한 모집단(이들이 있는)으로부터 추출될 수 있다는 높은 확률이 있다.
이는 특정 도메인 샘플로부터 추출되는 예측이 그 도메인으로부터 다른 샘플들에 공평하게 적용될 수 있고 SW 태스크들의 샘플들이 동일한 모집단으로부터 실제로 추출될 수 있는지(따라서 식별기의 적응성)를 체크하는데 간단한 식별기가 사용될 수 있음을 증명한다.
기술들을 또 다시 연구하기 위해, 본 발명자들은 한 세트의 가상 명령과 18 FFT 태스크들에 대한 사이클 카운트들을 이용했다. 여기서 본 발명자들은 상기의 예측 (4)을 사용했으며, 이것이 100% 오차를 넘어 매우 불충분함을 발견했다. 본발명자들은 FFT에 대해 회귀를 사용하여 예측을 산출했으며 Cycles = 286,387 + 2153 * MULd(MULd= 이중 정밀도 승산)을 얻었다. 사실상 286,387의 인터셉트는 버려질 수 있으며, 본 발명자들은 Cycles = 2153 * MULd를 사용할 수 있다-이 벤치마크들은 다수의 사이클들(예를 들어, 564,038,767 또는 다른 것들에 대해 10억을 넘어) 동안 실행되며, 따라서 286000의 인터럽트는 비교에 있어서 사소한 것이다. 이 벤치마크들에서, 이 예측을 사용하는 오차는 +/-1%이다. 본 발명자들은 실제로 커널 기능- 외부 커널 기능 보다 오히려 내부 커널 기능-을 발견했다. 커널 기능은 사이클 카운트가 동적 제어 우위 브랜칭보다 오히려 통계적으로 예측 가능한 수학적인 연산들에 의해 우위를 차지하게 되는 매우 수학적인 SW 태스크에 대한 예측이다. 계산들에 대한 정적 성질로 인해(예를 들어, 동적 반복 카운트들 또는 수렴 테스트들에 기초한 것보다 오히려 이전에 알려진 반복 사이즈들을 갖는 루프들) 커널 기능들은 매우 예측 가능할 수 있으며, 매우 낮은 오차를 가질 수 있다. FFT 예들은 명백하게 이 현상을 설명한다. 이 경우에, 커널 기능은 외부 특성(샘플 사이즈, 등)보다 오히려, 태스크에서 내부 특성(MULd의 수가 2배 승산과 동일하다)에 의해 표현된다. 둘 중 한 종류의 커널 기능이 가능하다.
모집단들에 대한 본 발명자들의 분석과 다른 도메인에 사용되고 있는 한 도메인내의 한 샘플 세트로부터 유도된 예측 방정식의 적응성을 강화하기 위해, 본 발명자들은 45 제어-샘플 및 18-FFT 샘플에 대한 또 다른 2-샘플 t-테스트를 실행했다. 본 발명자들은 다시 식별기로서 총 사이클들에 대한 가상 IF들의 비율을 사용했다. 18-FFT 예에 대해, 평균 비율은 매우 낮은 표준 편차를 갖는 약 .00035였다(즉, 45-샘플 평균에 대해 약 10%에 반하는 것으로 .035%). 2-샘플 t-테스트는 이 2-샘플들이 동일한 모집단으로부터 추출될 수 있다는 가설을 매우 확실하게 받아들이지 않았다. 따라서 한 일괄로부터 추출된 예측은 본 발명자들의 결과들이 나타난 바와 같이 다른 것에 사용되는 경우 약간의 타당성을 가질 것이다.
본 발명은 회귀 분석을 사용하여, 특정 도메인들로부터 태스크 샘플들에 기초하여, SW 추정을 위해 통계적 기반 예측 방정식들을 유도하기 위한 방법을 제공한다. 상기 논의된 벤치마크들이 자동 추진 엔진 모델로부터 추출된다 하더라도, 산업용 제어에 한정되지 않지만, 무선 및 유선 통신들을 포함하는 다른 도메인들 및 멀티미디어가 또한 이용될 수 있다. 애플리케이션 영역을 특정 짓고 경계지을수록 정확할 가능성이 점점 더 커질 것이다.
도면들을 다시 참조하면, 예기서 동일한 참조 번호들은 동일하거나 대응하는 부분들을 표기하며, 특히 도 2를 참조하면, 본 발명의 실시예의 전체 처리의 흐름도가 도시된다. 단계 200에서, 타겟 프로세서의 모델이 준비된다. 도 3은 타겟 프로세서 모델을 준비하기 위한 처리 예를 도시한다.
도 3에서, 단계 300에서, 한 세트의 벤치마크 프로그램들이 결정된다. 상기에 논의된 바와 같이, 벤치마크 프로그램들은 바람직하게 단일 도메인으로부터 추출되며, 광범위한 프로그램 흐름들, 명령들 및 전체 프로그램 구조를 나타낸다. 벤치마크 프로그램들 각각의 가상 명령들의 수(단계 310)와, 벤치마크 프로그램들의 실제 실행 시간이 결정된다(단계 320).
이어서, 단계 330에서, 한 세트의 예측 방정식들 및 다른 데이터(추정의 오차, 가상 명령당 사이클 등)가 준비된다. 단계 330은 선형 회귀에 의해 실행될 수 있다. 도 4는 본 발명에 따라 선형 회귀를 실행하는 단계들의 예를 도시하는 흐름도를 제공한다.
도 4에서의 단계(400)에서, 상관성 분석이 벤치마크 프로그램들의 가상 명령들로 수행된다. 어떤 높게 상관된 명령들이 제거된다(단계 410). 높게 상관된 명령들은 제 1 명령과 제 2 명령의 발생 주파수간의 매우 예측 가능한 관계 또는 선험 관계를 갖는 명령들이다.
단계(420)에서, 각각의 명령 형태의 발생 주파수(패밀리형 명령들의 발생 주파수)에 기초하여 컴퓨터에서 실행될 사이클 수의 예측을 허용하는 예측 방정식(predictor equation)을 결정하기 위해 선형 회귀(regression)가 수행된다. 단계(420)는 예를 들어, 예측 변수들을 결정하기 위해 스텝식 선형 회귀를 수행하는 단계(422), 및 상기 예측 방정식을 얻기 위해 예측 변수들로 다중 선형 회귀를 수행하는 단계(424)로서, 구현될 수 있다.
단계(430)에서, 단계(420)의 선형 회귀에서 결정되는 예측 변수들의 세트는 미리 결정된 임계값까지 감소된다. 그 예측 변수는 독립 변수들(예를 들어, Ni)이며, 그 예측 변수들이 감소되기 때문에, 예측 정확성 또한 감소된다. 그러므로, 예측 변수들의 감소는 계산의 복잡성(보다 많은 예측 변수들 = 보다 높은 복잡성)과 예측 정확성간의 트레이드오프(tradeoff)를 초래한다. 본 발명자들은, 예를 들어,R2값인 임계값을 사용하면, R2값이 감소된 독립 변수들로 얼마나 내려가는지를 관찰하여 R2임계값이 3.5인 양호한 결과들을 얻었다.
단계(440)에서, 예측 방정식은 오차의 양을 결정함으로써 품질을 측정하기 위해 제 2의 벤치마크 프로그램들의 세트에 적용된다. 완전한 정보의 세트가 벤치마크 프로그램들에 사용가능하기 때문에, 제 2의 벤치마크 프로그램들 세트에 예측 방정식을 적용하는 결과들은 제 2의 벤치마크 프로그램들의 세트의 실행 시간의 추정을 제공한다. 실제의 실행 시간과 추정된 실행 시간간의 차는 예측 방정식의 품질의 측정을 제공한다.
이제, 도 2를 계속하면, 타겟 프로세서의 모델이 준비된 후, 추정될 실제의 소프트웨어가 적용 가능한지를 결정하기 위해 평가되며, 단계 200에서 타겟 프로세서의 모델을 개발하는데 사용된 벤치마크 프로그램들을 이용하여 준비된 모델에 기초하여 추정될 수 있다. 추정될 소프트웨어와 벤치마크 프로그램들 간에 많은 상관성을 제공하는 결정이 임의의 방식으로 수행될 수 있다. 바람직하게, 그 결정은 2-샘플 t-테스트를 사용하여 이루어진다. 2-샘플 t-테스트가 추정될 소프트웨어와 벤치마크 프로그램 사이에서 식별할 수 있다면, 벤치마크 프로그램을 사용하여 생성된 모델은 부정확한 결과들을 제공할 것이다. 그 테스트가 성공적으로 식별되면, 그 모델은 양호한 추정 결과들을 제공할 것이다. 일례로서, 벤치마크 프로그램들 각각은 30과 90 사이의 IF문(statement)들의 수를 가진다면, 100,000과 200,000 사이의 사이클들의 총수를 가진다. 그리고, 추정될 SW에서 IF문들의 수가 60이고, 사이클들의 수가 125,000이면, 2-샘플 t-테스트는 그 샘플들이 유사한 집단으로부터 나온 것이기 때문에 중요하게 식별하지 못한다.
단계 220에서, 소프트웨어의 실제 실행 시간들이 추정된다. 추정될 소프트웨어는 예를 들어 가상 명령들의 주파수를 결정하기 위해 VCC에서 동작하며, 이어서 실행 시간 추정을 제공하기 위해 (단계 200으로부터) 모델 또는 예측 방정식에 적용된다. 결과의 추정된 동작 시간은 현재 사용가능한 것 중 최고의 정확성과 최저의 가격을 조합한 추정된 소프트웨어 실행 시간을 제공한다.
요약하면, 본 발명은 다음의 단계들을 포함한, 프로세스 또는 방법으로서 구현될 수 있다:
1) 베이스 파일이 응용할 수 있는 응용 또는 설계 도메인을 결정하라. 그 베이스 파일은 그 도메인을 수학적으로 기재한 계수들의 세트이다.
2) 그 도메인(설계 도메인)의 통상적인 벤치마크 프로그램들의 세트를 생성하거나 또는 획득하라.
3) VCC(또는 또 다른 EDA 타입 도구)에서 그 벤치마크 프로그램들을 실행하고, 가상의 명령 카운트들을 획득하라. 이러한 카운트들은 앞서 기재된 바와 같이 여러 가지 가상의 명령들(예를 들어, GOTO의 수, 곱셈, 및 가상 명령들)의 주파수를 포함한다.
4) 사이클-정확성, 명령 세트 시뮬레이터(ISS)를 카운팅하는 사이클, 또는 실제 하드웨어의 벤치마크들을 실행하고, 정확한 사이클 카운트를 획득하라.
5) 그 벤치마크 결과들을 이용하여, 모든 가상의 명령들에 대한 상관성 분석을 실행하라.
6) 그 샘플로부터 높게 상관된 명령들을 제거하라.
7) 그 제거된 가상 명령 샘플 세트와 총 사이클 카운트들에 스텝식 다중 선형 회귀를 적용하고, 통계적으로 중요한 예측 변수들의 세트를 결정하라.
8) 그 예측 변수들의 세트(가상 명령들)에 다중 선형 회귀를 적용하고, 예측 방정식을 획득하라.
9) (R-제곱법에 의해 측정된) 샘플 세트를 통한 예측의 품질이 몇몇 미리 결정된 임계값이 될 때까지, 예측 변수들의 세트를 감소하라.
10) 몇몇 도메인으로부터의 벤치마크 소프트웨어 태스크들의 제 2 세트에 예측 방정식을 적용하고, 예측 방정식에 의한 결과들의 품질을 측정하라.
11) 두 샘플들이 동일한 집단으로부터 나온 것임을 보증하기 위해 그 예측 방정식을 산출하는데 사용된 벤치마크 샘플과 독립 품질 메트릭 샘플에 대해 2-샘플 t-테스트를 수행하라. 사용할 하나의 측정법은 총 사이클 카운트에 대해 각 태스크에서의 가상 명령과 'IF' 명령들의 비를 식별자(discriminator)로서 사용하는, 비교적 '제어-중심의' 소프트웨어 태스크들이다.
12) 예측되지 않은 태스크들의 새로운 세트가 최초의 벤치마크 세트와 동일한 집단으로부터 나올 적절한 통계적 가능성이 있는지를 결정하기 위해 예측 방정식을 얻는데 사용되는 벤치마크들의 세트와 표면상 동일한 도메인으로부터 나온 새로운 소프트웨어 태스크들을 갖는 제어-중심의 식별자를 사용하라. 이는 2-샘플 t-테스트로 행해진다.
컴퓨터 기술 분야의 숙련자들에게 명백할 것처럼, 본 발명은 종래의 일반적인 목적 또는 전문화된 디지털 컴퓨터 또는 본 명세서의 가르침에 따라서 프로그램된 마이크로프로세서를 사용하여 편리하게 구현될 수 있다.
소프트웨어 분야의 숙련자들에게 명백할 것처럼, 적절한 소프트웨어 코딩은 본 명세서의 가르침들에 기초하여 숙련된 프로그래머들에 의해 용이하게 준비될 수 있다. 본 발명은 또한 본 기술 분야의 숙련자들에게 쉽게 명백해 질 것처럼, 종래의 컴퓨터 회로들의 적절한 네트워크를 서로 접속시키거나 또는 특정 집적 회로들의 적용 준비에 의해 구현될 수 있다.
본 발명은 명령들을 갖는 저장 매체(미디어)인 컴퓨터 프로그램 제품을 포함하며, 그 위/내에서 본 발명의 임의의 프로세스들을 수행하기 위해 컴퓨터를 제어하거나 야기하는데 사용될 수 있다. 그 저장 매체는 플로피 디스크들, 미니 디스크들(MD들), 광 디스크들, DVD, CD-ROM들, 마이크로-드라이브, 및 자기-광 디스크들, ROM들, RAM들, EPROM들, EEPROM들, DRAM들, VRAM들, (플래쉬 카드들을 포함한) 플래쉬 메모리 장치들, 자기 또는 광카드들, (분자 메모리 IC들을 포함한) 나노시스템들, RAID 장치들, 리모트 데이터 저장/달성/수용, 또는 명령들 및/또는 데이터를 저장하기에 적절한 미디어 또는 장치의 임의의 형태를 포함할 수 있지만 이에 제한되는 것은 아니다.
그 컴퓨터 판독가능 매체(미디어) 중 어느 한 매체에 저장되면, 본 발명은 일반적인 목적의/전문화된 컴퓨터의 하드웨어 또는 마이크로프로세서를 제어하고, 컴퓨터 또는 마이크로프로세서가 본 발명의 결과들을 이용하여 사용자 또는 다른메카니즘과 상호작용하도록 하기 위한 소프트웨어를 포함한다. 그러한 소프트웨어는 장치 드라이버들, 운영 시스템들, 및 사용자 어플리케이션들을 포함할 수 있지만, 이에 제한되는 것은 아니다. 궁극적으로, 그러한 컴퓨터 판독가능 매체는 앞서 기재된 바와 같이, 본 발명을 수행하기 위한 소프트웨어를 더 포함한다.
일반적인/전문화된 컴퓨터 또는 마이크로프로세서의 프로그래밍 (소프트웨어)에 포함되는 것은, 처리 장치들의 모델들을 준비하는 것과, 벤치마크 프로그램들의 세트를 선택하는 것과, 가상 명령들을 결정하는 것과, 실제 실행 시간들을 특정하는 것과, 그 벤치마크 프로그램들로 추정될 소프트웨어를 상관시키는 것과, 높게 상관된 명령들을 제거하는 것과, 선형 회귀를 수행하는 것과, 예측 방정식(들)을 얻는 것과, 품질을 측정하기 위해 제 2 벤치마크들의 세트에 예측 방정식들을 적용하는 것과 본 발명의 처리들에 따른 결과들의 디스플레이, 저장, 또는 통신을 포함하지만 이에 제한되는 것은 아닌, 본 발명의 가르침들을 구현하기 위한 소프트웨어 모듈들이다.
명확하게는, 위의 가르침들의 관점에서 본 발명의 많은 변경들 및 변화들이 가능하다. 그러므로, 첨부 청구항들의 범위 내에서 본 발명은 특히 본 명세서에 기재된 것과는 달리 실행될 수 있음을 이해해야 한다.
Claims (23)
- 소프트웨어의 실행 시간을 추정하는 방법에 있어서,한 세트의 벤치마크 프로그램들에 기초하여 타겟 프로세서의 모델을 준비하는 단계와;추정될 소프트웨어를 상기 벤치마크 프로그램들과 상관시키는 단계와;상기 소프트웨어의 실행 시간의 추정을 결정하기 위해 상기 상관된 소프트웨어를 상기 모델에 적용하는 단계를 포함하는, 추정 방법.
- 제 1 항에 있어서,상기 모델은 명령들을 실행 시간에 상관시키는 선형 모델을 포함하는, 추정 방법.
- 제 1 항에 있어서,상기 모델을 준비하는 단계는,추정될 소프트웨어와 동일한 영역으로부터 한 세트의 벤치마크 프로그램들을 선택하는 단계와;상기 세트의 벤치마크 프로그램들에서 한 세트의 가상 명령들을 결정하는 단계와;상기 세트의 벤치마크 프로그램들의 실제 실행 시간들을 측정하는 단계와;상기 가상 명령들을 상기 실제 실행 시간들에 상관시킴으로써 예측 방정식을 결정하는 단계를 포함하는, 추정 방법.
- 제 3 항에 있어서,상기 예측 방정식을 결정하는 단계는,가상 명령들이 다른 가상 명령들과 높게 상관되는지를 결정하기 위해 상기 벤치마크 프로그램들에 포함된 가상 명령들 간의 상관 분석을 수행하는 단계와;제거된 가상 명령 세트를 생성하기 위해 높게 상관된 요소들 중 하나가 남을 때까지 각각의 세트의 높게 상관된 가상 명령들로부터 하나 또는 그 이상의 요소들을 제거하는 단계와;한 세트의 예측 변수들을 가진 예측 방정식을 도출하기 위해 상기 제거된 가상 명령 세트에 대해 선형 회귀를 수행하는 단계와;상기 세트의 예측 변수들을 소정의 임계값까지 감소시키는 단계와;감소된 변수 예측 방정식에서 오차의 양을 측정하기 위해 상기 감소된 변수 예측 방정식을 제 2 세트의 벤치마크 프로그램들에 적용하는 단계를 포함하는, 추정 방법.
- 제 4 항에 있어서,상기 실제 실행 시간들을 측정하는 단계는 상기 벤치마크 프로그램들의 각각에 대한 총 사이클 카운트를 결정하는 단계를 포함하고,상기 선형 회귀를 수행하는 단계는,만족스러운 중요 세트의 예측 변수들을 결정하기 위해 스텝식 다중 선형 회귀를 제거된 가상 명령 세트 및 총 사이클 카운트들에 적용하는 단계와;예측 방정식을 결정하기 위해 다중 선형 회귀를 상기 세트의 예측 변수에 적용하는 단계를 더 포함하는, 추정 방법.
- 제 4 항에 있어서,상기 감소시키는 단계는 상기 벤치마크 프로그램들 상에서의 예측의 품질이 소정의 임계치에 도달할 때까지 상기 세트의 예측 변수들을 감소시키는 단계를 포함하는, 추정 방법.
- 제 6 항에 있어서,상기 예측의 품질은 회귀되고 있는 예측 변수들의 변화에 의해 설명되는 다수의 사이클들에서의 변화의 양을 측정하는 R-제곱 함수를 통해 측정되는, 추정 방법.
- 제 7 항에 있어서,상기 임계치는 상기 R-제곱 함수의 대략 .35 결과인, 추정 방법.
- 제 1 항에 있어서,상기 상관시키는 단계는 추정될 소프트웨어와 벤치마크 프로그램들 간에 2-샘플 t-테스트를 적용하는 단계를 포함하는, 추정 방법.
- 제 1 항에 있어서,상기 방법은 컴퓨터 판독 가능 매체 상에 저장되는 한 세트의 컴퓨터 명령들로 구현되고,상기 컴퓨터 명령들은 컴퓨터에 로딩될 때 상기 컴퓨터가 상기 방법의 단계들을 수행하게 하는, 추정 방법.
- 제 5 항에 있어서,상기 방법은 컴퓨터 판독 가능 매체 상에 저장되는 한 세트의 컴퓨터 명령들로 구현되고,상기 컴퓨터 명령들은 컴퓨터에 로딩될 때 상기 컴퓨터가 상기 방법의 단계들을 수행하게 하는, 추정 방법.
- 제 9 항에 있어서,상기 컴퓨터 명령들은 상기 컴퓨터 판독 가능 매체 상에 실행 가능 프로그램으로서 저장된, 컴파일된 컴퓨터 명령들인, 추정 방법.
- 제 1 항에 있어서,상기 방법은 전자 신호에 저장된 한 세트의 컴퓨터 판독 가능 명령들로 구현된, 추정 방법.
- 소프트웨어의 실행 시간들을 추정하는 장치에 있어서,타겟 프로세서를 모델링하는 모델링 수단과;상기 모델링 수단에서 기초로서 사용된 한 세트의 벤치마크 소프트웨어 프로그램들에 추정될 소프트웨어를 상관시키는 상관 수단과;상기 소프트웨어의 추정된 실행 시간을 결정하기 위해 상기 상관된 소프트웨어를 상기 모델링 수단에 적용하도록 구성된 추정 장치를 포함하는, 추정 장치.
- 제 14 항에 있어서,상기 모델링 수단은,상기 벤치마크 프로그램들에서 가상 명령들의 빈도를 결정하는 수단과;상기 벤치마크 프로그램들의 실제 실행 시간들을 결정하는 수단과;상기 벤치마크 프로그램들의 가상 명령마다의 사이클들, 예측 방정식, 및 추정의 오차 중 적어도 하나를 결정하는 수단을 포함하는, 추정 장치.
- 제 15 항에 있어서,상기 결정하는 수단은,상기 가상 명령들에 대해 상관 분석을 수행하는 수단과;높게 상관된 명령들을 제거하는 수단과;높지 않게 상관된 가상 명령들 및 상기 벤치마크 프로그램의 실제 실행 시간에 기초하여 예측 방정식을 도출하는 수단과;상기 도출된 예측 방정식에서의 한 세트의 변수들을 소정의 임계치까지 감소시키는 수단을 포함하는, 추정 장치.
- 제 16 항에 있어서,상기 결정하는 수단은,상기 예측 방정식의 추정 능력의 품질을 측정하기 위해 제 2 세트의 벤치마크 프로그램들에 상기 도출된 예측 방정식을 적용하는, 추정 장치.
- 제 16 항에 있어서,상기 예측 방정식을 도출하는 수단은 상기 가상 명령들에 적용된 선형 회귀 툴을 포함하는, 추정 장치.
- 제 16 항에 있어서, 상기 예측 방정식을 도출하는 수단은,한 세트의 예측 방정식을 결정하기 위해 스텝식 선형 회귀를 수행하는 수단과;상기 예측 방정식을 도출하기 위해 상기 예측기 값들에 대해 선형 회귀를 수행하는 수단을 포함하는, 추정 장치.
- 제 16 항에 있어서,상기 임계치는 회귀되고 있는 예측 변수들의 변화에 의해 설명되는 다수의 사이클들에서의 변화의 양을 측정하는 R-제곱 함수 값을 포함하는, 추정 장치.
- 제 20 항에 있어서,상기 임계치는 대략 .35인, 추정 장치.
- 소프트웨어 실행 시간들의 추정들을 수행하는 장치에 있어서,한 세트의 적어도 하나의 벤치마크 프로그램의 실행 시간에 기초하는 타겟 프로세서의 모델과;추정될 소프트웨어 프로그램을 상기 세트의 적어도 하나의 벤치마크 프로그램에 상관시키도록 구성된 상관 장치와;상기 소프트웨어의 추정된 실행 시간을 결정하기 위해, 추정될 상기 소프트웨어 프로그램을 상기 모델에 적용하도록 구성된 추정 장치를 포함하는, 장치.
- 제 22 항에 있어서,상기 타겟 프로세서의 모델은 상기 세트의 벤치마크 프로그램들의 높지 않게 상관된 가상 명령들의 선형 회귀 및 상기 벤치마크 프로그램의 실행 시간에 의해 구성된 예측 방정식인, 장치.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/799,643 US7007270B2 (en) | 2001-03-05 | 2001-03-05 | Statistically based estimate of embedded software execution time |
US09/799,643 | 2001-03-05 | ||
PCT/US2002/006620 WO2002071214A1 (en) | 2001-03-05 | 2002-03-05 | Method and apparatus for a statistically based estimate of embedded software execution time |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20040004549A true KR20040004549A (ko) | 2004-01-13 |
KR100901663B1 KR100901663B1 (ko) | 2009-06-08 |
Family
ID=25176407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020037011654A KR100901663B1 (ko) | 2001-03-05 | 2002-03-05 | 임베딩된 소프트웨어 실행 시간의 통계적 기반 추정을 위한 방법 및 장치 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7007270B2 (ko) |
EP (1) | EP1366415B1 (ko) |
JP (2) | JP2004530193A (ko) |
KR (1) | KR100901663B1 (ko) |
AT (1) | ATE517385T1 (ko) |
WO (1) | WO2002071214A1 (ko) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100943887B1 (ko) * | 2008-02-05 | 2010-02-24 | 재단법인서울대학교산학협력재단 | 핫스팟 메소드의 동적 컴파일을 위해 수행 시간을 추정하는방법 |
WO2014003921A1 (en) * | 2012-06-29 | 2014-01-03 | Intel Corporation | Application-provided context for potential action prediction |
US9483308B2 (en) | 2012-06-29 | 2016-11-01 | Intel Corporation | Performance of predicted actions |
KR20200132460A (ko) * | 2019-05-17 | 2020-11-25 | 삼성에스디에스 주식회사 | 프로그램 분석 방법 및 그 시스템 |
KR102341827B1 (ko) * | 2021-08-06 | 2021-12-21 | 주식회사 에너자이(ENERZAi) | 테스트 벤치 생성 방법, 테스트 벤치 생성 장치, 및 테스트 벤치 생성 시스템 |
WO2023014041A1 (ko) * | 2021-08-06 | 2023-02-09 | 주식회사 에너자이 | 테스트 벤치 생성 방법, 테스트 벤치 생성 장치, 및 테스트 벤치 생성 시스템 |
Families Citing this family (81)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6986128B2 (en) * | 2000-01-07 | 2006-01-10 | Sony Computer Entertainment Inc. | Multiple stage program recompiler and method |
JP2003131902A (ja) * | 2001-10-24 | 2003-05-09 | Toshiba Corp | ソフトウェアデバッガ、システムレベルデバッガ、デバッグ方法、及びデバッグプログラム |
EP1331565B1 (en) * | 2002-01-29 | 2018-09-12 | Texas Instruments France | Application execution profiling in conjunction with a virtual machine |
JP2004021756A (ja) * | 2002-06-19 | 2004-01-22 | Hitachi Ltd | 情報システム性能の統計的予測方法 |
US7228531B1 (en) * | 2003-02-03 | 2007-06-05 | Altera Corporation | Methods and apparatus for optimizing a processor core on a programmable chip |
US20040199913A1 (en) * | 2003-04-07 | 2004-10-07 | Perrow Michael S. | Associative memory model for operating system management |
US7739661B2 (en) * | 2003-05-14 | 2010-06-15 | Microsoft Corporation | Methods and systems for planning and tracking software reliability and availability |
US7406686B2 (en) * | 2003-06-09 | 2008-07-29 | Sun Microsystems, Inc. | Systems and methods for software performance tuning |
US20040250235A1 (en) * | 2003-06-09 | 2004-12-09 | Sun Microsystems, Inc. | Methods and apparatus for enhanced statistical performance |
US20050021655A1 (en) * | 2003-06-09 | 2005-01-27 | Sun Microsystems, Inc. | System for efficiently acquiring and sharing runtime statistics |
EP1494104B1 (fr) * | 2003-06-26 | 2006-06-21 | St Microelectronics S.A. | Contrôle d'intégrité d'un programme en utilisant des statistiques |
US7546598B2 (en) * | 2003-09-03 | 2009-06-09 | Sap Aktiengesellschaft | Measuring software system performance using benchmarks |
US8266595B2 (en) * | 2004-02-12 | 2012-09-11 | International Business Machines Corporation | Removal of asynchronous events in complex application performance analysis |
US7496900B2 (en) * | 2004-02-12 | 2009-02-24 | International Business Machines Corporation | Method for automatic detection of build regressions |
US7765539B1 (en) | 2004-05-19 | 2010-07-27 | Nintendo Co., Ltd. | System and method for trans-compiling video games |
US7614037B2 (en) * | 2004-05-21 | 2009-11-03 | Microsoft Corporation | Method and system for graph analysis and synchronization |
US7343592B2 (en) * | 2004-06-17 | 2008-03-11 | International Business Machines Corporation | Benchmark synthesis using workload statistics |
US7647581B2 (en) * | 2004-06-30 | 2010-01-12 | International Business Machines Corporation | Evaluating java objects across different virtual machine vendors |
US7493596B2 (en) * | 2004-06-30 | 2009-02-17 | International Business Machines Corporation | Method, system and program product for determining java software code plagiarism and infringement |
US8136096B1 (en) | 2004-07-23 | 2012-03-13 | Green Hills Software, Inc. | Backward post-execution software debugger |
US8271955B1 (en) | 2004-07-23 | 2012-09-18 | Green Hille Software, Inc. | Forward post-execution software debugger |
US8015552B1 (en) | 2004-07-23 | 2011-09-06 | Green Hills Software, Inc. | Post-execution software debugger with coverage display |
US8132159B1 (en) | 2004-07-23 | 2012-03-06 | Green Hills Software, Inc. | Post-execution software debugger with event display |
US7653899B1 (en) | 2004-07-23 | 2010-01-26 | Green Hills Software, Inc. | Post-execution software debugger with performance display |
US20060020413A1 (en) * | 2004-07-26 | 2006-01-26 | Septon Daven W | Methods and apparatus for providing automated test equipment with a means to jump and return in a test program |
US20060129990A1 (en) * | 2004-12-13 | 2006-06-15 | International Business Machines Corporation | System, method, and article of manufacture for determining execution counts associated with a software program of an embedded system |
US7475387B2 (en) * | 2005-01-04 | 2009-01-06 | International Business Machines Corporation | Problem determination using system run-time behavior analysis |
US7934079B2 (en) * | 2005-01-13 | 2011-04-26 | Nxp B.V. | Processor and its instruction issue method |
US7490269B2 (en) * | 2005-08-24 | 2009-02-10 | Microsoft Corporation | Noise accommodation in hardware and software testing |
JP2007286671A (ja) * | 2006-04-12 | 2007-11-01 | Fujitsu Ltd | ソフトウェア/ハードウェア分割プログラム、および分割方法。 |
US8578347B1 (en) * | 2006-12-28 | 2013-11-05 | The Mathworks, Inc. | Determining stack usage of generated code from a model |
US20080235658A1 (en) * | 2007-03-21 | 2008-09-25 | Asaf Adi | Code generation for real-time event processing |
US8522209B2 (en) * | 2007-03-30 | 2013-08-27 | Sap Ag | Method and system for integrating profiling and debugging |
US8356286B2 (en) * | 2007-03-30 | 2013-01-15 | Sap Ag | Method and system for providing on-demand profiling infrastructure for profiling at virtual machines |
US8667471B2 (en) * | 2007-03-30 | 2014-03-04 | Sap Ag | Method and system for customizing profiling sessions |
US8336033B2 (en) * | 2007-03-30 | 2012-12-18 | Sap Ag | Method and system for generating a hierarchical tree representing stack traces |
US8601469B2 (en) * | 2007-03-30 | 2013-12-03 | Sap Ag | Method and system for customizing allocation statistics |
US20080312980A1 (en) * | 2007-06-13 | 2008-12-18 | International Business Machines Corporation | Method and system for staffing and cost estimation models aligned with multi-dimensional project plans for packaged software applications |
US8006223B2 (en) * | 2007-06-13 | 2011-08-23 | International Business Machines Corporation | Method and system for estimating project plans for packaged software applications |
US20080313008A1 (en) * | 2007-06-13 | 2008-12-18 | International Business Machines Corporation | Method and system for model-driven approaches to generic project estimation models for packaged software applications |
US8055606B2 (en) * | 2007-06-13 | 2011-11-08 | International Business Machines Corporation | Method and system for self-calibrating project estimation models for packaged software applications |
US8032404B2 (en) * | 2007-06-13 | 2011-10-04 | International Business Machines Corporation | Method and system for estimating financial benefits of packaged application service projects |
US7971180B2 (en) * | 2007-06-13 | 2011-06-28 | International Business Machines Corporation | Method and system for evaluating multi-dimensional project plans for implementing packaged software applications |
US8117598B2 (en) * | 2007-09-27 | 2012-02-14 | Oracle America, Inc. | Method and apparatus to automatically identify specific code changes to probabilistically exclude from regression |
US8020147B2 (en) * | 2007-10-12 | 2011-09-13 | Infosys Limited | Software package implementation sizing |
US8881112B2 (en) * | 2007-12-19 | 2014-11-04 | International Business Machines Corporation | Quality measure tool for a composite application |
US20110022551A1 (en) * | 2008-01-08 | 2011-01-27 | Mark Dixon | Methods and systems for generating software quality index |
US8448140B2 (en) * | 2008-07-02 | 2013-05-21 | Tokyo Institute Of Technology | Execution time estimation method and device |
JP5326442B2 (ja) * | 2008-09-04 | 2013-10-30 | 富士通株式会社 | 統計量推定装置、統計量推定プログラム、統計量推定方法 |
WO2011052147A1 (ja) * | 2009-10-30 | 2011-05-05 | 日本電気株式会社 | 評価モデル分析システム、評価モデル分析方法およびプログラム |
JP2011100388A (ja) * | 2009-11-09 | 2011-05-19 | Fujitsu Ltd | トレース情報収集装置,トレース情報処理装置,およびトレース情報収集方法 |
US8402471B2 (en) * | 2009-12-21 | 2013-03-19 | At&T Intellectual Property I, L.P. | Methods and apparatus to benchmark a computer system based on executing instructions using different numbers of threads |
US20110153529A1 (en) * | 2009-12-23 | 2011-06-23 | Bracy Anne W | Method and apparatus to efficiently generate a processor architecture model |
JP5412305B2 (ja) * | 2010-01-27 | 2014-02-12 | 株式会社日立アドバンストデジタル | モデルベースの性能予測システム |
EP2477085B1 (de) * | 2011-01-13 | 2013-07-17 | Siemens Aktiengesellschaft | Verfahren und System zur Analyse eines zeitlichen Ablaufverhaltens eines Steuerungsprogramms einer Industriesteuerung |
US20120185231A1 (en) * | 2011-01-19 | 2012-07-19 | National Tsing Hua University | Cycle-Count-Accurate (CCA) Processor Modeling for System-Level Simulation |
JP4905597B1 (ja) | 2011-03-15 | 2012-03-28 | オムロン株式会社 | コントローラサポート装置、その装置において実行されるためのコントローラサポートプログラム、およびそのプログラムを格納する記録媒体 |
US9495139B2 (en) * | 2011-04-11 | 2016-11-15 | University Of Florida Research Foundation, Inc. | Elastic computing |
EP2610773A1 (de) * | 2011-12-28 | 2013-07-03 | Siemens Aktiengesellschaft | Verfahren zum Herstellen einer Hardwareeinrichtung und Hardwareeinrichtung |
US8881125B2 (en) * | 2012-06-11 | 2014-11-04 | International Business Machines Corporation | Indirect software performance analysis |
US9063796B2 (en) | 2012-08-02 | 2015-06-23 | GM Global Technology Operations LLC | Method and apparatus for improving processing performance of a multi-core processor |
US9471347B2 (en) | 2013-01-31 | 2016-10-18 | International Business Machines Corporation | Optimization of virtual machine sizing and consolidation |
JP6163898B2 (ja) * | 2013-06-11 | 2017-07-19 | 富士通株式会社 | 計算装置、計算方法、および計算プログラム |
RU2013143925A (ru) * | 2013-09-30 | 2015-04-10 | ИЭмСи КОРПОРЕЙШН | Система и способ прогнозирования эффективности памяти |
US9262190B2 (en) * | 2013-11-19 | 2016-02-16 | Xerox Corporation | Method and system for managing virtual machines in distributed computing environment |
US10133775B1 (en) * | 2014-03-19 | 2018-11-20 | Amazon Technologies, Inc. | Run time prediction for data queries |
EP2927763B1 (en) * | 2014-04-04 | 2019-06-19 | Abb Ag | System and method for an optimized operation of real-time embedded solutions in industrial automation |
JP6333656B2 (ja) * | 2014-07-28 | 2018-05-30 | ファナック株式会社 | Ncプログラム修正後の加工時間を予測する加工時間予測装置 |
JP6503774B2 (ja) * | 2015-02-17 | 2019-04-24 | 富士通株式会社 | プログラム実行解析方法、情報処理装置及びプログラム実行解析プログラム |
US9804849B2 (en) * | 2015-10-20 | 2017-10-31 | International Business Machines Corporation | Space reduction in processor stressmark generation |
US11023351B2 (en) | 2017-02-28 | 2021-06-01 | GM Global Technology Operations LLC | System and method of selecting a computational platform |
US10372585B2 (en) * | 2017-11-07 | 2019-08-06 | Facebook, Inc. | Incident tracker |
JP7091726B2 (ja) * | 2018-03-08 | 2022-06-28 | 富士通株式会社 | 情報処理装置,プログラム及び情報処理方法 |
WO2019216404A1 (ja) * | 2018-05-10 | 2019-11-14 | パナソニックIpマネジメント株式会社 | ニューラルネットワーク構築装置、情報処理装置、ニューラルネットワーク構築方法及びプログラム |
CN111324353B (zh) * | 2018-12-14 | 2022-09-13 | 中移(杭州)信息技术有限公司 | 一种持续集成任务的优化方法及装置 |
CN109933748B (zh) * | 2019-03-21 | 2023-05-12 | 武汉轻工大学 | 椭球面方程的模型识别方法、装置、终端设备及可读存储介质 |
WO2020198566A1 (en) * | 2019-03-27 | 2020-10-01 | F0Cal, Inc. | Systems and methods for analyzing computational architectures |
CN110888813A (zh) * | 2019-11-27 | 2020-03-17 | 泰康保险集团股份有限公司 | 项目排期管理方法、装置、设备及存储介质 |
US11068592B1 (en) * | 2021-01-26 | 2021-07-20 | Malwarebytes Inc. | Lookahead signature-based malware detection |
US20230070393A1 (en) * | 2021-09-02 | 2023-03-09 | Huawei Technologies Co., Ltd. | Methods and devices for assessing generalizability of benchmarks |
CN116483482B (zh) * | 2023-05-19 | 2024-03-01 | 北京百度网讯科技有限公司 | 深度学习任务处理方法、系统、装置、设备及介质 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CH680455A5 (ko) * | 1988-11-10 | 1992-08-31 | Benninger Ag Maschf | |
US5270935A (en) * | 1990-11-26 | 1993-12-14 | General Motors Corporation | Engine with prediction/estimation air flow determination |
JPH07262055A (ja) * | 1994-03-17 | 1995-10-13 | Fujitsu Ltd | 計算機プログラムの処理時間予測方法およびその計算機 |
US5590323A (en) * | 1994-05-13 | 1996-12-31 | Lucent Technologies Inc. | Optimal parallel processor architecture for real time multitasking |
US5696942A (en) | 1995-03-24 | 1997-12-09 | Sun Microsystems, Inc. | Cycle-based event-driven simulator for hardware designs |
US5696943A (en) * | 1995-07-27 | 1997-12-09 | Advanced Micro Devices, Inc. | Method and apparatus for quick and reliable design modification on silicon |
US6151618A (en) * | 1995-12-04 | 2000-11-21 | Microsoft Corporation | Safe general purpose virtual machine computing system |
US5761477A (en) * | 1995-12-04 | 1998-06-02 | Microsoft Corporation | Methods for safe and efficient implementations of virtual machines |
US5801975A (en) * | 1996-12-02 | 1998-09-01 | Compaq Computer Corporation And Advanced Micro Devices, Inc. | Computer modified to perform inverse discrete cosine transform operations on a one-dimensional matrix of numbers within a minimal number of instruction cycles |
US5790425A (en) * | 1997-02-19 | 1998-08-04 | Sun Microsystems, Inc. | Generic server benchmarking framework in a client-server environment |
US5966537A (en) * | 1997-05-28 | 1999-10-12 | Sun Microsystems, Inc. | Method and apparatus for dynamically optimizing an executable computer program using input data |
US6421653B1 (en) * | 1997-10-14 | 2002-07-16 | Blackbird Holdings, Inc. | Systems, methods and computer program products for electronic trading of financial instruments |
US6026237A (en) * | 1997-11-03 | 2000-02-15 | International Business Machines Corporation | System and method for dynamic modification of class files |
US6118940A (en) * | 1997-11-25 | 2000-09-12 | International Business Machines Corp. | Method and apparatus for benchmarking byte code sequences |
US5809450A (en) * | 1997-11-26 | 1998-09-15 | Digital Equipment Corporation | Method for estimating statistics of properties of instructions processed by a processor pipeline |
US6662358B1 (en) * | 1997-12-12 | 2003-12-09 | International Business Machines Corporation | Minimizing profiling-related perturbation using periodic contextual information |
US6732357B1 (en) * | 1997-12-12 | 2004-05-04 | International Business Machines Corporation | Determining and compensating for temporal overhead in trace record generation and processing |
US6286046B1 (en) * | 1997-12-22 | 2001-09-04 | International Business Machines Corporation | Method of recording and measuring e-business sessions on the world wide web |
US6189141B1 (en) * | 1998-05-04 | 2001-02-13 | Hewlett-Packard Company | Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control |
US6381558B1 (en) * | 1998-12-18 | 2002-04-30 | International Business Machines Corporation | Alternative profiling methodology and tool for analyzing competitive benchmarks |
US6507946B2 (en) * | 1999-06-11 | 2003-01-14 | International Business Machines Corporation | Process and system for Java virtual method invocation |
US6463457B1 (en) * | 1999-08-26 | 2002-10-08 | Parabon Computation, Inc. | System and method for the establishment and the utilization of networked idle computational processing power |
US6618737B2 (en) * | 2000-03-09 | 2003-09-09 | International Business Machines Corporation | Speculative caching of individual fields in a distributed object system |
US6457023B1 (en) * | 2000-12-28 | 2002-09-24 | International Business Machines Corporation | Estimation of object lifetime using static analysis |
US6609084B2 (en) * | 2001-08-10 | 2003-08-19 | Hewlett-Packard Development Company, Lp. | Data transfer performance measuring system and method |
-
2001
- 2001-03-05 US US09/799,643 patent/US7007270B2/en not_active Expired - Fee Related
-
2002
- 2002-03-05 AT AT02725074T patent/ATE517385T1/de not_active IP Right Cessation
- 2002-03-05 WO PCT/US2002/006620 patent/WO2002071214A1/en active Application Filing
- 2002-03-05 KR KR1020037011654A patent/KR100901663B1/ko not_active IP Right Cessation
- 2002-03-05 EP EP02725074A patent/EP1366415B1/en not_active Expired - Lifetime
- 2002-03-05 JP JP2002570070A patent/JP2004530193A/ja active Pending
-
2008
- 2008-09-18 JP JP2008239668A patent/JP2009076073A/ja active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100943887B1 (ko) * | 2008-02-05 | 2010-02-24 | 재단법인서울대학교산학협력재단 | 핫스팟 메소드의 동적 컴파일을 위해 수행 시간을 추정하는방법 |
WO2014003921A1 (en) * | 2012-06-29 | 2014-01-03 | Intel Corporation | Application-provided context for potential action prediction |
US8990143B2 (en) | 2012-06-29 | 2015-03-24 | Intel Corporation | Application-provided context for potential action prediction |
US9483308B2 (en) | 2012-06-29 | 2016-11-01 | Intel Corporation | Performance of predicted actions |
US9886667B2 (en) | 2012-06-29 | 2018-02-06 | Intel Corporation | Performance of predicted actions |
KR20200132460A (ko) * | 2019-05-17 | 2020-11-25 | 삼성에스디에스 주식회사 | 프로그램 분석 방법 및 그 시스템 |
KR102341827B1 (ko) * | 2021-08-06 | 2021-12-21 | 주식회사 에너자이(ENERZAi) | 테스트 벤치 생성 방법, 테스트 벤치 생성 장치, 및 테스트 벤치 생성 시스템 |
WO2023014041A1 (ko) * | 2021-08-06 | 2023-02-09 | 주식회사 에너자이 | 테스트 벤치 생성 방법, 테스트 벤치 생성 장치, 및 테스트 벤치 생성 시스템 |
Also Published As
Publication number | Publication date |
---|---|
US7007270B2 (en) | 2006-02-28 |
KR100901663B1 (ko) | 2009-06-08 |
EP1366415B1 (en) | 2011-07-20 |
US20020166112A1 (en) | 2002-11-07 |
EP1366415A1 (en) | 2003-12-03 |
JP2004530193A (ja) | 2004-09-30 |
WO2002071214A1 (en) | 2002-09-12 |
ATE517385T1 (de) | 2011-08-15 |
JP2009076073A (ja) | 2009-04-09 |
EP1366415A4 (en) | 2008-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100901663B1 (ko) | 임베딩된 소프트웨어 실행 시간의 통계적 기반 추정을 위한 방법 및 장치 | |
Giusto et al. | Reliable estimation of execution time of embedded software | |
Lim et al. | An accurate worst case timing analysis for RISC processors | |
Schnerr et al. | High-performance timing simulation of embedded software | |
Gibson et al. | FLASH vs.(simulated) FLASH: Closing the simulation loop | |
Kroening et al. | Formal verification of SystemC by automatic hardware/software partitioning | |
US6263302B1 (en) | Hardware and software co-simulation including simulating the cache of a target processor | |
US6968542B2 (en) | Method for dynamically identifying pseudo-invariant instructions and their most common output values on frequently executing program paths | |
Lin et al. | Source-level timing annotation for fast and accurate TLM computation model generation | |
Wilhelm et al. | Static timing analysis for hard real-time systems | |
EP3391224B1 (en) | Method and apparatus for data mining from core traces | |
Posadas et al. | System-level performance analysis in SystemC | |
Gerstlauer | Host-compiled simulation of multi-core platforms | |
Schlickling et al. | Semi-automatic derivation of timing models for WCET analysis | |
US7684971B1 (en) | Method and system for improving simulation performance | |
Posadas et al. | M3-SCoPE: performance modeling of multi-processor embedded systems for fast design space exploration | |
Oyamada et al. | Applying neural networks to performance estimation of embedded software | |
Stärner et al. | Measuring the cache interference cost in preemptive real-time systems | |
Uddin et al. | Collecting signatures to model latency tolerance in high-level simulations of microthreaded cores | |
Plyaskin et al. | A method for accurate high-level performance evaluation of MPSoC architectures using fine-grained generated traces | |
Schnerr et al. | Systemc-based performance analysis of embedded systems | |
Uddin et al. | Signature-based high-level simulation of microthreaded many-core architectures | |
Ferdinand et al. | Integration of code-level and system-level timing analysis for early architecture exploration and reliable timing verification | |
Staschulat et al. | Context sensitive performance analysis of automotive applications | |
Kriegel et al. | A performance estimation flow for embedded systems with mixed software/hardware modeling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
J201 | Request for trial against refusal decision | ||
B701 | Decision to grant | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20120523 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20130523 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |