KR20080100330A - 결정 처리를 수행하는 시스템 및 방법 - Google Patents

결정 처리를 수행하는 시스템 및 방법 Download PDF

Info

Publication number
KR20080100330A
KR20080100330A KR1020087008045A KR20087008045A KR20080100330A KR 20080100330 A KR20080100330 A KR 20080100330A KR 1020087008045 A KR1020087008045 A KR 1020087008045A KR 20087008045 A KR20087008045 A KR 20087008045A KR 20080100330 A KR20080100330 A KR 20080100330A
Authority
KR
South Korea
Prior art keywords
time
execution
instructions
act
execution time
Prior art date
Application number
KR1020087008045A
Other languages
English (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 KR20080100330A publication Critical patent/KR20080100330A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • 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
    • 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/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter

Abstract

비결정적 컴퓨터 시스템에 결정 처리를 수행하는 시스템 및 방법이 제공된다. 일례에서, 시스템은 하나 이상의 컴퓨터 명령어의 실행이 일정 실행 시간 내에 실행되도록 한다. 필요하다면 결정 엔진은 컴퓨터 명령어의 실행이 일정 실행 시간에 걸쳐 수행되는 것을 보증하기 위한 가변 시간량을 대기시킨다. 실행 시간이 일정하기 때문에 실행은 결정적이므로 결정적 행위를 요구하는 어플리케이션에 사용될 수 있다. 예를 들면, 결정 엔진은 자동화 테스트 장비(ATE) 어플리케이션에서 사용될 수 있다.
결정 처리 수행 시스템, 처리 엔티티, 컴포넌트

Description

결정 처리를 수행하는 시스템 및 방법{SYSTEM AND METHOD FOR PERFORMING DETERMINISTIC PROCESSING}
본 발명은 일반적으로 처리에 관한 것이고, 특히 비결정적 컴퓨터 시스템에서의 처리에 관한 것이다.
자동화 테스트 시스템(ATE)에서의 성공 열쇠는 반복성이다. 반복가능한 테스트 시스템을 갖는 것은 2개의 동일한 디바이스 상의 소정의 테스트 시퀀스의 실행은 동일한 결과를 생성한다는 것을 의미한다. 그러므로, 테스트된 모든 디바이스에 적용되는 스티뮬러스와 동일하면 테스트 출력은 디바이스 품질을 평가하는데 사용되는 신뢰할 수 있는 소스이다. "동일한" 스티뮬러스는 관련 테스트 조건(전압, 전류, 온도 등)의 모듈이 동일한 것뿐만 아니라 테스트 조건이 적용될 때의 상대적인 시간이 동일한 것도 의미한다.
최근, ATE 영역에서의 대부분의 테스트 장비는 하나 이상의 컴퓨터 시스템을 포함한다. 테스트 단계가 실행되는 컴퓨터 시스템은 전반적인 결정론이 유지되도록 결정적 방식에서의 테스트 단계를 발생하여야하는 것이 동반된다. 테스팅(예를 들면, 일관된 결과를 생성하는 것)에서의 사용에 적합한 완전한 컴퓨팅 시스템의 설계는 고가의 하드웨어 설계 및 유지뿐만 아니라 오퍼레이팅 시스템, 유저 인터페이 스, 드라이버, 툴 등을 포함하는 고가의 소프트웨어 설계도 요구하므로 그러한 컴퓨터의 한가지 문제는 비용이다. 그 결과, ATE에 적합한 컴퓨터 시스템은 구매 및 유지를 위해 대부분의 회사에게 매우 고가이다.
그러한 시스템의 가격을 감소시키는 한 방법은 재고품 컴퓨터 컴포넌트 및 시스템을 사용하는 것을 포함한다. 그러나, 재고품 범용 컴퓨터 시스템은 상술된 결정적 조건 때문에 그러한 어플리케이션에 일반적으로 적합하지 않다. 범용 컴퓨터 시스템이 ATE에서 사용될 수 있으면 ATE의 소유권 및 작동의 가격은 감소될 수 있다.
본 발명의 하나의 양상에 의하면 결정 처리를 수행하는 시스템이 제공된다. 시스템은 하나 이상의 명령어를 실행하도록 된 처리 엔티티(processing entity), 및 하나 이상의 명령어의 실행 시간을 일정값이 되게 조정하도록 된 컴포넌트를 포함한다. 일실시예에 의하면, 컴포넌트는 하나 이상의 명령어의 최대 실행 시간으로 조정되도록 실행 시간을 조정하기에 적합하다. 다른 실시예에 의하면, 컴포넌트는 하나 이상의 명령어의 다중 실행에 걸쳐 동일한 일정값이 되도록 하나 이상의 명령어의 실행 시간을 조정하기에 적합하다. 다른 실시예에 의하면, 다중 실행은 다른 컴퓨터 시스템에서 발생된다. 다른 실시예에 의하면, 다른 컴터 시스템은 다른 처리 능력을 갖는다. 다른 실시예에 의하면, 컴포넌트는 소정의 기간 내에 하나 이상의 명령어의 실행을 수행하기에 적합하다. 다른 실시예에 의하면, 컴포넌트는 실행 시간을 일정값으로 조정하기 위한 기간을 대기하기에 적합하다.
일실시형태에 의하면, 시스템은 시간 기준을 더 포함하며, 컴포넌트는 시간 기준을 사용하여 상대 시간을 결정하기에 적합하다. 다른 실시예에 의하면, 컴포넌트는 프로세서 사이클의 카운터값에 의거하여 상대 시간을 결정하기에 적합하다. 다른 실시예에 의하면, 시간 기준은 인터페이스를 포함하고, 컴포넌트는 인터페이스를 통하여 처리 사이클의 카운터를 얻기에 적합하다. 다른 실시예에 의하면, 컴포넌트는 하나 이상의 명령어를 실행하는데 사용되는 시간량을 결정하기에 적합하고, 실행 시간을 일정값으로 조정하기 위한 기간을 대기하기에 적합하다. 다른 실시예에 의하면, 컴포넌트는 다수의 카운터값에 의거하여 경과 시간을 결정하기에 적합하다. 다른 실시예에 의하면, 카운터값은 프로세서의 타임 스탬프 카운터이다. 다른 실시예에 의하면, 프로세서는 PENTIUM형 프로세서이다. 다른 실시예에 의하면, 시스템은 자동화 테스트 시스템의 부분이다.
본 발명의 하나의 양상에 의하면, 결정 처리를 수행하는 컴퓨터 구현 방법이 제공된다. 방법은 실행 액트(act)의 실행 시간을 측정하고 실행 시간을 일정값으로 저정하기 위한 기간을 대기하는 컴퓨터 시스템에 하나 이상의 명령어를 실행하는 액트를 포함한다. 일실시예에 의하면 기간의 대기 액트는 실행의 액트 후 실행 시간의 일정값을 경과했을 때까지의 기간을 대기하는 것을 포함한다. 다른 실시예에서 방법은 하나 이상의 명령어의 실행을 측정하는 액트, 및 측정의 액트에 의거하여 하나 이상의 명령어의 최대 실행 시간을 결정하는 액트를 더 포함한다. 다른 실시예에 의하면, 방법은 일정값을 최대 실행 시간으로 설정하는 액트를 더 포함한다. 다른 실시예에 의하면, 방법은 하나 이상의 명령어의 최대 실행 시간을 결정하는 액트를 더 포함한다. 다른 실시예에 의하면, 방법은 일정값을 최대 실행 시간으로 설정하는 액트를 더 포함한다.
일실시예에 의하면, 방법은 하나 이상의 명령어의 다중 실행에 걸쳐 동일한 일정값으로 하나 이상의 명령어의 실행 시간을 조정하는 액트를 더 포함한다. 다른 실시예에 의하면, 다중 실행은 다른 컴퓨터 시스템에서 발생된다. 다른 실시예에 의하면, 다른 컴퓨터 시스템은 다른 처리 능력을 갖는다. 다른 실시예에 의하면, 방법은 소정의 기간 내에 컴퓨터 시스템에 하나 이상의 명령어를 실행하는 액트를 수행하는 액트를 더 포함한다. 다른 실시예에 의하면, 방법은 일정값으로 실행 시간을 조정하기 위한 기간을 대기하는 액트를 더 포함한다. 다른 실시예에 의하면, 방법은 상대 시간을 결정하는 액트를 더 포함한다.
일실시예에 의하면, 방법은 시간 기준을 제공하는 액트, 및 시간 기준을 이용하여 상대 시간을 결정하는 액트를 더 포함한다. 다른 실시예에 의하면, 방법은 프로세서 사이클의 카운터값에 의거하여 상대 시간을 결정하는 액트를 더 포함한다. 다른 실시예에 의하면, 방법은 하나 이상의 명령어를 실행하는데 사용되는 시간량을 결정하는 액트, 및 일정값으로 실행 시간을 조정하기 위한 기간을 대기하는 액트를 더 포함한다. 다른 실시예에 의하면, 방법은 다수의 다운터값에 의거하여 경과 시간을 결정하는 액트를 더 포함한다. 다른 실시예에 의하면, 카운터값은 프로세서의 타임 스탬프 카운터이다. 다른 실시예에 의하면, 프로세서는 PENTIUM형 프로세서이다. 다른 실시예에 의하면, 방법은 자동화 테스트 시스템에 의해 수행된다.
본 발명의 각종 실시예의 구조 및 오퍼레이션뿐만 아니라 본 발명의 다른 특징 및 이점이 동반하는 도면을 참조하여 이하 상세히 설명된다. 도면에서, 동일한 참조 번호는 동일한 또는 기능적으로 유사한 요소를 나타낸다. 게다가, 참조 번호의 가장 좌측의 하나 또는 두자리 숫자는 참조 번호가 처음 출현한 도면과 동일하다.
도 1은 본 발명의 각종 양상이 구현될 수 있는 컴퓨터 시스템의 예를 나타낸다.
도 2는 본 발명의 일실시예에 의한 시스템 아키텍처의 예를 나타낸다.
도 3은 본 발명의 일실시예에 의한 결정 처리를 수행하는 프로세서이다.
도 4는 본 발명의 일실시예에 의한 결정 엔진의 예의 블럭도이다.
도 5는 본 발명의 다른 실시예에 의한 결정 처리를 수행하는 다른 프로세서이다.
도 6은 비결정적 시스템에 의한 코드 실행의 예를 나타낸다.
도 7은 본 발명의 일실시예에 의한 하나 이상의 결정적 시스템에 의한 코드 실행의 예를 나타낸다.
도 8은 본 발명의 양상을 나타내는 가상 디바이스 출력 및 측정을 나타낸다.
동반 도면은 일정한 비례로 그려진 것이 아니다. 도면에서, 여러 도면에서 나타낸 동일한 또는 거의 동일한 컴포넌트의 각각은 동일한 번호에 의해 나타내어 진다. 간결함을 위해서 모든 컴포넌트가 모든 도면에 라벨되지 않을 수 있다.
본 발명은 하기 명세서에 기재되고 도면에서 나타내어지는 컴포넌트의 상세 구조 및 배치에 대하여 그 어플리케이션에서 한정되지 않는다. 본 발명은 다른 실시예예일 수 있고, 각종 방식으로 시행되거나 수행될 수 있다. 또한, 여기서 사용되는 어구 또는 용어는 설명의 목적을 위한 것이고 한정으로서 간주되지 않아야 한다. 여기서, "포함하는", "구성되는" 또는 "갖는", "함유하는", "수반하는"의 사용, 및 그 변형은 추가 항목뿐만 아니라 이후 리스트되는 항목 및 그와 동등한 것을 포함하는 것을 의미한다.
시스템 및 방법은 결정 처리를 수행하기 위해 제공된다. 본 발명의 하나의 양상에 의하면, 결정적 결과를 요구하는 시스템에서 비결정적 컴퓨터 시스템을 구현하는 것이 유익할 수 있다. 예를 들면, ATE 시스템에서 그러한 시스템의 소유 및 유지의 가격을 감소하도록 범용 컴퓨터 시스템, 프로세서 및/또는 소프트웨어를 구현하는데 유용할 수 있다. 일례에서, ATE 시스템을 구현하는 범용 컴퓨터 시스템은 특별히 설계된 시스템의 1/10 가격일 수 있다. 이 때문에 방법은 비결정적 시스템을 결정적 방식으로 운영되게 하도록 제공된다.
본 발명의 하나의 양상에 의하면, 테스트 엔지니어에 의해 사용되는 ATE 시스템 등의 결정적 시스템의 여러 양상이 있다고 인식되어야 한다.
(a) 다음의 테스트 단계가 기준되는 기준 시간[예를 들면, 시간 0(t0)]로서 테스트 엔지니어가 기준이 될 수 있는 완화점이 있다.
(b) 기준 시간(t0)으로부터 기준되는 미리 정해진 상대 시간에서 테스트 단계를 시작하는 결정적 테스트 스케줄러가 있다.
조건 (a)는 종래의 시스템을 사용하여 충족되기 쉽고, 그 구현은 대체적으로 진부하다. 예를 들면, 기준 시간(t0)에서 디바이스는 스티뮬러스가 단절되고, 그 온도는 실온(조정 온도)으로 설정될 수 있다. 동시에, 테스트 시스템에서 테스트 엔지니어는 "테스트의 시작"(SOT) 조건으로 스티뮬러스를 설정할 수 있다.
그러나, 조건 (b)는 충족되기 더 어렵다. 일례에서, 조건 (b)를 충족시키는데 사용된 해결책은 테스트 단계를 실행하기 위해 적합한 안정된 시간 기준을 사용하는 순서 회로를 포함할 수 있다. 순수 순서 회로로서 컴퓨터를 설계하면 상기 컴퓨터에 대하여 기록된 프로그램은 결정적인 방식으로 테스트 단계를 생성하는 시퀀서이다. 그러나, 그러한 컴퓨터는 결정적 방식으로 단계가 수행되는 것을 보증하기 위해 특별히 개발된 오퍼레이팅 시스템 및 대응 어플리케이션 프로그램을 일반적으로 요구한다.
본 발명의 하나의 양상에 의하면, 예를 들면 재고품 컴퓨터를 사용하여 조건 (b)를 충족시키도록 하면 문제가 초래된다고 인식되어야 한다. 특히, 범용 컴퓨터 시스템에 관하여 하드웨어 및 소프트웨어 설계는 최대 성능을 성취하려고 한다고 인식되어야 한다. ATE 프로그램의 실행의 경우에서 범용 컴퓨터는 가능한 어떤 방식으로 가능한 신속하게 모든 테스트 단계를 완료하려고 한다. 반대로, 본 발명의 하나의 양상에 의하면, 조건 (b)는 현재의 재고품 컴퓨터 및 그 관련 소프트웨어에 의해 가능한 신속하게 수행되는 것보다 미리 정해진 시간에서 새로운 테스트 단계를 시작하는 것을 정의한다고 인식되어야 한다.
현재 재고품 컴퓨터는 예를 들면, 캐시 메모리, 파이프라인, 다중 실행 경로[예비 실행(exploratory execution)], 분기 예측 및 다른 메커니즘을 포함한 각종 메커니즘을 이용하여 최대 성능을 성취한다. 그러한 메커니즘의 대부분은 프로세서 상태의 히스토리의 및/또는 현재 컨텍스트에 의존한 추측에 의거하여 결정된다. 즉, 실행(예를 들면, 데이터 액세스 등)의 히스토리(또는 패턴)에 의거하여 다음 태스크 단계가 예측된다(예를 들면, 캐시 메모리로의 특정 데이터 로드, 각 파인프라인 레벨에서 명령어 디코딩, 디스크로부터의 특정 데이터 검색 등). 물론, 추측이 틀리면 감소된 속도에서의 성능 및 태스크 실행이 따른다. 게다가, 컴퓨터의 오퍼레이팅 시스템 상태 및/또는 다른 프로그램의 성능에 의거하는 그러한 메커니즘은 일반적으로 다른 실행 시간으로 다르게 운영된다. 결과로서, 컴퓨터 성능을 증가시키는 가장 최근의 테그닉은 성능이 실행 시간에서 결정되는 시스템에서의 변수로 인해 예측되거나 모사되기 어려운 컴퓨터 시스템에서 한다.
성능은 예측되기 어렵기 때문에 대부분의 ATE 회사는 (증가된 설계 비용에 의해 정당해 지는 바와 같이) 시스템 설계 시간에서 상기 논의된 조건 (b)을 무시하고, 만족스런 반복성이 성취될 때까지 테스트 어플리케이션을 조정하는 문제를 테스트 엔지니어와 함께 단순히 남겨둔다. 물론, 테스트 어플리케이션을 세심하게 테일러링하는 것은 조건 (b)을 시뮬레이트하기 위한 전략이지만, 그러한 전략은 방해가 되고 결과 어플리케이션은 매우 빈약하다. 기본적인 컴퓨터 하드웨어 또는 소 프트웨어 오퍼레이팅 파라미터 또는 구성에서의 어떠한 변화도 그러한 커스텀 테일러링(custom tailoring)에 영향을 미칠 수 있으므로 어떠한 결정적 오퍼레이션도 제거한다.
그러므로, 충분히 반복가능한 시스템뿐만 아니라 기본적인 컴퓨터 하드웨어 및 소프트웨어와 독립된 시스템에서도 초래되는 테크닉은 ATE 시스템 등의 결정적 어플리케이션에 대해 유익할 것이다. 본 발명의 하나의 양상에 의하면, 최대 실행 시간이 컴퓨터 오퍼레이션을 위해 예측될 수 있는 경우 컴퓨터 오퍼레이션은 결정적 방식으로 운영되게 할 수 있다. 더 특히, 컴퓨터 오퍼레이션이 최대 실행 시간에서 수행될 수 있는 경우 컴퓨터 시스템의 실행은 예측가능하다. 일례에서, 특정 오퍼레이션의 컴퓨터 실행은 보정된 실행 시간에서 오퍼레이션의 성능을 보증하기 위해 지연될 수 있다.
본 발명의 하나의 양상에 의하면, 결정 엔진은 범용 컴퓨터 시스템을 위해 제공된다. 일실시예에 의하면, 결정 엔진은 명령어의 어떤 특정 세트을 위해 전체 실행 시간 상수를 만들 수 있다. 소망의 전체 실행 시간이 최대 실행 시간 이상이면 전체 실행 시간은 일정값으로 설정될 수 있다. 최대 실행 시간은 관련된 명령어을 분석함으로써 (그러므로 그 최대 실행 시간을 측정함으로써) 또는 경험적으로 다른 프로세서 컨텍스트에서 명령어 세트를 실행함으로써 결정될 수 있다.
소망의 실행 시간은 일정값으로 설정되므로 실제 실행 시간이 최대 실행 시간을 초과하지 않는다고 가정되는 다른 컴퓨터 시스템 사이의 실행은 동일하게 될 것이다. 많은 능력과 높은 성능을 갖는 새로운 프로세서가 도입되면 그러한 결정 엔진을 이용한 소프트웨어 어플리케이션은 결정적 행위를 제거하지 않고 새로운 그러한 새로운 환경으로 포트(port)될 수 있다. 즉, 소망의 실행 시간은 하나의 특정 컴퓨터 시스템 상의 최대 실행 시간 이상이므로 어떠한 소프트웨어 어플리케이션도 명령어의 특정 세트를 위해 더 작은 최대 실행 시간을 가질 수 있는 더 유능한 컴퓨터 시스템으로 포트될 수 있다. 이러한 방식으로 소프트웨어 어플리케이션은 다름 컴퓨터 시스템에 실행될 때 결정적으로 수행될 수 있고, 어플리케이션 설계로의 투입은 시스템 사이에 보존된다. 능력이 낮거나 의심되는 시스템에 어플리케이션을 포트하기 위해 검증이 설계된 최대 실행 시간이 초과되지 않는다는 것을 보증하기 위해 수행될 수 있다.
범용 컴퓨터 시스템
본 발명에 의한 각종 실시예는 하나 이상의 컴퓨터 시스템에 구현될 것이다. 그러한 컴퓨터 시스템은 예를 들면, Intel PENTIUM형 프로세서, Motorola PowerPC, AMD Athlon 또는 Turion, Sun UltraSPARC, Hewlett-Packard PA-RISC 프로세서, 또는 어떤 다른 유형의 프로세서에 의거한 것과 같은 범용 컴퓨터일 수 있다. 하나 이상의 어떠한 유형의 컴퓨터 시스템도 본 발명의 각종 실시예에 의한 결정 처리를 수행하기 위해 사용될 수 있다고 인식되어야 한다. 또한, 시스템은 단일 컴퓨터에 배치되거나, 또는 통신 네크워크에 의해 부착되는 복수의 컴퓨터 사이에 분산될 수 있다.
본 발명의 일실시예에 의한 범용 컴퓨터 시스템은 기재된 결정적 함수 중 어느 하나를 수행하도록 구성되고 테스팅 프로그램의 테스트 단계를 수행하지만 거기 에 한정되지 않는다. 결정적 함수를 요구하는 다른 어플리케이션을 포함하는 시스템은 다른 함수를 수행할 수 있다고 인식되어야 하고, 본 발명은 어떤 특정 함수 또는 함수 세트를 갖는 것에 한정되지 않는다.
도 1은 본 발명의 각종 양상이 실행될 수 있는 범용 컴퓨터 및 네트워크 시스템의 블럭도를 나타낸다. 예를 들면, 본 발명의 각종 양상은 도 1에 나타낸 범용 컴퓨터(101)를 포함하는 하나 이상의 컴퓨터 시스템에서 실행하는 전문 소프트웨어로서 구현될 수 있다. 컴퓨터 시스템(101)은 디스크 드라이브, 메모리, 또는 데이터를 저장하는 다른 디바이스 등의 하나 이상의 메모리 디바이스(105)에 접속된 프로세서(104)를 포함할 수 있다. 메모리(105)는 전형적으로 컴퓨터 시스템(101)의 오퍼레이션 동안에 프로그램 및 데이터를 저장하기 위해 사용된다. 컴퓨터 시스템(101)의 컴포넌트는 하나 이상의 (예를 들면, 동일한 머신 내에 통합되는 컴포넌트 사이의) 버스 및/또는 (예를 들면, 분리된 개별의 머신에 있는 컴포넌트 사이의) 네트워크를 포함하는 네트워크(110)와 같은 상호 접속 메커니즘에 의해 결합될 수 있다. 상호 접속 메커니즘은 시스템(101)의 시스템 컴포넌트 사이에 교환될 (예를 들면, 데이터, 명령어의) 통신이 가능하다.
또한, 컴퓨터 시스템(101)은 예를 들면, 키보드, 마우스, 트랙볼, 마이크로폰, 터치 스크린, 프린팅 디바이스, 디스플레이 스크린, 스피커 등의 하나 이상의 입출력(I/O) 디바이스(106)를 포함한다. 게다가, 컴퓨터 시스템(101)은 통신 네트워크[그 위에 또는 대안으로 네트워크(110)]에 컴퓨터 시스템(101)을 접속하는 하나 이상의 인터페이스[예를 들면, 네트워크 통신 디바이스(108)]를 포함할 수 있 다.
저장 시스템(109)은 전형적으로 프로세서에 의해 실행될 프로그램을 정의하는 신호가 저장되는 컴퓨터 판독가능 및 기록가능 비휘발성 기록 매체, 및 프로그램에 의해 처리될 매체 상에 또는 내에 저장된 정보를 포함한다. 매체는 예를 들면, 디스크 또는 플래시 메모리일 수 있다. 전형적으로, 오퍼레이션에서 매체보다 프로세서에 의해 정보를 더 빠르게 액세스한다는 것을 감안하여 프로세서가 데이터를 비휘발성 기록 매체로부터 다른 메모리로 판독되게 한다. 이 메모리는 전형적으로 동적 랜덤 액세스 메모리(DRAM) 또는 정적 랜덤 액세스 메모리(SRAM) 등의 휘발성 랜덤 액세스 메모리이다. 메모리는 나타낸 바와 같이, 저장 시스템(109) 또는 메모리 시스템(105)에 위치될 수 있다. 프로세서(104)는 일반적으로 직접 회로 메모리(104) 내에 테이터를 조정한 다음 처리 완료 후 저장 시스템(109)과 관련된 매체에 데이터를 복사한다. 매체 및 직접 회로 메모리 사이의 데이터 이동을 관리하는 다양한 메커니즘이 알려져 있고, 본 발명은 거기에 한정되지 않는다. 본 발명은 특정 메모리 시스템 또는 저장 시스템에 한정되지 않는다.
컴퓨터 시스템은 예를 들면, 주문형 반도체(application specific integrated circuit: ASIC)의 특별히 프로그래밍된 특수용 하드웨어를 포함할 수 있다. 본 발명의 양상은 소프트웨어, 하드웨어 또는 펌웨어, 또는 어떤 그 조합으로 구현될 수 있다. 또한, 그러한 방법, 단계, 시스템, 시스템 요소 및 그 컴포넌트는 상기 기재된 컴퓨터 시스템의 일부 또는 독립된 컴포넌트로서 구현될 수 있다.
컴퓨터 시스템(101)은 본 발명의 각종 양상이 시행될 수 있는 컴퓨터 시스템의 한 유형으로서 예를 들어 나타내었지만 본 발명의 양상은, 도 1에 나타낸 바와 같은 컴퓨터 시스템에 구형되는 것에 한정되지 않는다고 인식되어야 한다. 본 발명의 각종 양상은, 도 1에 나타낸 다른 아키텍처 또는 컴포넌트를 가지는 하나 이상의 컴퓨터에 시행될 수 있다.
컴퓨터 시스템(101)은 고급컴퓨터 프로그래밍 언어를 사용하여 프로그래밍가능한 범용 컴퓨터 시스템일 수 있다. 또한, 컴퓨터 시스템(101)은 특별히 프로그래밍된 특수용 하드웨어를 사용하여 구현될 수도 있다. 컴퓨터 시스템(101)에서 프로세어(104)는 전형적으로 Intel Corporation로부터 이용할 수 있는 잘 알려진 Pentium급 프로세서 등의 상업적으로 이용가능한 프로세서이다. 다른 많은 프로세서가 이용될 수 있다.
그러한 프로세서는 예를 들면 Microsoft Corporation로부터 이용할 수 있는 Windows 기반 오퍼레이팅 시스템[예를 들면, Windows NT, Windows 2000(Windows ME), Windows XP 오퍼레이팅 시스템], Apple Computer로부터 이용할 수 있는 MAC OS System X 오퍼레이팅 시스템, Sun Microsystems로부터 이용할 수 있는 Solaris 오퍼레이팅 시스템, 또는 각종 소스로부터 이용할 수 있는 UNIX 오퍼레이팅 시스템일 수 있는 오퍼레이팅 시스템을 통상적으로 실행한다. 많은 다른 오퍼레이팅 시스템이 사용될 수 있고 본 발명은 어떤 특정 오퍼레이팅 시스템에 한정되지 않는다.
프로세서 및 오퍼레이팅 시스템은 고급 프로그래밍 언어에서의 어플리케이션 프로그램이 기록되기 위한 컴퓨터 플랫폼을 함께 정의한다. 본 발명은 하나 이상의 청구항에 지정되어 있지 않으면 특정 컴퓨터 플랫폼, 프로세서, 오퍼레이팅 시스템, 또는 네트워크에 한정되지 않는다는 것을 이해해야 한다. 또한, 본 발명은 특정 프로그래밍 언어 또는 컴퓨터 시스템에 한정되지 않는다는 것이 당업자에게 명백해져야 한다. 또한, 다른 적절한 프로그래밍 언어 및 적절한 컴퓨터 시스템이 사용될 수도 있다고 인식되어야 한다.
컴퓨터 시스템의 하나 이상의 부분은 통신 네트워크로 결합된 하나 이상의 컴퓨터 시스템에 걸쳐 분산될 수 있다. 또한, 그러한 컴퓨터 시스템은 범용 컴퓨터 시스템일 수 있다. 예를 들면, 본 발명의 각종 양상은 하나 이상의 클라이언트 컴퓨터로 서비스를 제공하기 위해, 또는 분산된 시스템의 일부로서 전체 태스크를 수행하기 위해 구성되는 하나 이상의 컴퓨터 시스템(예를 들면, 서버) 사이에 분산될 수 있다. 예를 들면, 본 발명의 각종 양상은 본 발명의 각종 실시예에 의한 각종 함수를 수행하는 하나 이상의 서버 시스템 사이에 분산된 컴포넌트를 포함하는 클라이언트-서버 또는 멀티-서버 또는 다중 계층(multi-tier) 시스템에 수행될 수 있다. 그러한 컴포넌트는 통신 프로토콜(예를 들면, TCP/IP)을 사용하여 통신 네트워크(예를 들면, 인터넷)에 걸쳐 통신하는 실행가능한 중간(예를 들면, IL) 또는 해석(interprete)(예를 들면, Java) 코드일 수 있다.
본 발명은 어떤 특정 시스템 또는 시스템 그룹에 실행하는 것에 한정되지 않는다는 것이 인식되어야 한다. 또한, 본 발명은 어떤 특정 분산된 아키텍처, 네트워크, 또는 통신 프로토콜에 한정되지 않는다는 것이 인식되어야 한다.
본 발명의 각종 실시예는 SmallTalk, Java, C++, Ada, 또는 C# (C-Sharp) 등 의 객체 지향형 프로그래밍 언어를 사용하여 프로그래밍될 수 있다. 또한, 다른 객체 지향형 프로그래밍 언어도 사용될 수 있다. 대안으로, 함수형, 스크립팅, 어셈블리 언어, 및/또는 논리 프로그래밍 언어가 사용될 수 있다. 본 발명의 각종 양상은 논-프로그램(non-program) 환경으로 구현될 수 있다[예를 들면, 브라우저 프로그램의 윈도우에서 보여질 때 그래픽 유저 인터페이스(graphical-user interface: GUI)의 양상을 나타내거나 다른 함수를 수행하는 HTML, XML 또는 다른 포멧으로 생성된 문서). 본 발명의 각종 양상은 프로그램 또는 논-프로그램 요소, 또는 어떤 그 조합으로서 구현될 수 있다.
이 시스템의 각종 양상은 시스템(100) 내의 하나 이상의 시스템에 의해 구현될 수 있다. 예를 들면, 시스템은 단일 또는 다중 프로세서 시스템일 수 있다. 일례에서, 시스템은 퍼스널 컴퓨터(PC) 등의 시스템에 실행하는 소프트웨어 프로세스를 포함한다. 예를 들면, 그러한 시스템은 유저가 결정적 행위를 요구하는 하나 이상의 함수를 수행하도록 할 수 있다. 그러한 시스템은, 예를 들면, 특히 테스트 시스템, 컨트롤 시스템, 항공 우주 사업에 사용되는 시스템을 포함할 수 있다.
시스템 아키텍처의 예
도 2는 본 발명의 일실시예에 의한 시스템 예의 아키텍처 다이아그램을 나타낸다. 도 2는 설명의 목적으로만 사용되고, 다른 아키텍처는 본 발명의 하나 이상의 양상을 용이하게 하기 위해 사용될 수 있다는 것이 인식되어야 한다.
도 2에 나타낸 바와 같이, 컴퓨터 시스템(200)(예를 들면, 도 1를 참조하여 상기 설명된 바와 같은 범용 컴퓨터)은 결정적 시스템을 구현하는데 사용될 수 있 다. 컴퓨터 시스템(200)은 어플리케이션 프로그램(204)이 결정적 방식으로 운영되게 하는 결정 엔진 프로그램(201)을 포함할 수 있다. 본 발명이 일실시예에 의하면, 시스템(200)은 결정적 시스템일 필요는 없지만, 도 1를 참조하여 상기 설명된 바와 같은 범용 컴퓨터 시스템일 수 있다. 이것 때문에, 시스템(200)은 오퍼레이팅 시스템(202), 하나 이상의 프로세서(203), 및 하나 이상의 I/O 컴포넌트(206)를 포함할 수 있다. 선택적으로, 컴퓨터 시스템(200)은 실시간 오퍼레이팅 시스템, 및/또는 실시간 오퍼레이팅으로 어플리케이션 프로그램을 돕는 실시간 컴포넌트(205)를 포함할 수 있다. 그렇나 실시간 컴포넌트는 예를 들면, TenAsys Corporation, Beaverton, OR으로부터 상업적으로 이용할 수 있는 INtime 실시간 프로그래밍 확장자를 포함할 수 있다.
본 발명의 일실시예에 의한 결정 엔진은 오퍼레이션이 컴퓨터 시스템(200)에 실행될 때 결정되는 안정 시간 기준을 제공한다. 또한, 결정 엔진 프로그램은 다른 프로그램으로 지시를 제공하고 오퍼레이션이 실행되어야 할 때 지시할 수 있다.
상기 논의된 바와 같이, 최대 실행 시간은 특정 오퍼레이션 또는 오퍼레이션 세트(예를 들면, 컴퓨터 명령어)에 대하여 결정될 수 있다. 최대 실행 시간은, 예를 들면, 오퍼레이션의 실행을 직접 측정함으로써 결정(예를 들면, 여러 실행에 걸쳐 결정)될 수 있거나, 또는 알려진 방법을 사용하여 발견적으로 결정될 수 있다. 최대 실행 시간이 컴퓨터 시스템[예를 들면, 컴퓨터 시스템(200)]에 의한 오퍼레이션의 실행에 의해 초과되지 않으면 컴퓨터 시스템은 결정적 방식으로 운영되게 될 수 있다.
상기 구상을 구현하는 해결책을 결정하기 위해 임의의 횟수만큼 반복될 수 있는 어떤 컴퓨터 태스크, 및 그 실행 시간이 측정될 수 있는 오퍼레이션이 고려된다.
다음의 정리가 제안된다.
오퍼레이션 실행이 시간에서의 상한이면 오퍼레이션 실행이 고정된 실행 시간으로 되게 할 수 있다.
증명: O이 오퍼레이션을 나타낸다고 하자. 오퍼레이션(O)은 반복가능하므로 To(n)은 n번째 실행에서 실행될 오퍼레이션(O) 태스크의 시간으로서 정의될 수 있다. 정리가 오퍼레이션(O)이 시간에서 상한이라고 가정하면 다음 식이 참이 되는 Tmax가 존재한다.
Figure 112008024102933-PCT00001
다음의 오퍼레이션은 식에 의해 정의되는 실행 시간을 갖고, 이하 오퍼레이션 웨스트(operation waste)라 불리는 오퍼레이션이 정의될 수 있다고 가정된다.
Figure 112008024102933-PCT00002
여기서 E값은 오퍼레이션 웨스트가 실행될 때 발생하는 내재 오차(intrinsic error)(예를 들면, 오버헤드)이다. 컴퓨터 시스템이 본래의 오퍼래이션을 실행할 때마다 오퍼레이션 웨스트를 실행하면 결합된 실행 시간은 일정값이다.
Figure 112008024102933-PCT00003
상기 정리는 기재된 특정을 갖는 오퍼레이션으로서 구현될 수 있다. 즉, 그 결합된 실행이 일정값이 되도록 시간을 웨스트하는 오퍼레이션이 정의될 수 있다. 그러므로, 예를 들면,범용 컴퓨터 시스템 등의 비결정적 시스템에 실행 시간이 일정하므로 예측가능한 것처럼 결정적으로 오퍼레이션을 실행할 수 있다.
그러므로, 오퍼레이션 세트의 실행 시간이 고정 실행 기간 내에 제한될 수 있으면 실행은 예측가능하므로 반복가능할 수 있다. 도 3은 본 발명의 일실시예에 의한 결정 처리를 수행하는 프로세스(300)의 예를 나타내고, 전체 실행 시간은 일정하게 유지된다. 블럭(301)에서 프로세스(300)가 시작한다. 블럭(302)에서 최대 실행 시간이 결정된다. 예를 들면, 하나 이상의 오퍼레이션의 최대 실행 시간은 발견적 등으로 측정됨으로써 결정될 수 있다. 블럭(303)에서 하나 이상의 오퍼레이션이 실행되어 경과 시간에 대해 측정이 수행된다. 블럭(304)에서 결정 엔진은 오퍼레이션에 대한 전체 실행 시간이 일정값이 되도록 결정된 최대 실행 시간까지 지연된다. 블럭(305)에서 프로세서(300)는 종료된다.
상기 논의된 바와 같이, 안정 시간 기준은 경과 시간이 측정될 수 있도록 결정 엔진 프로그램에 의해 제공된다. 일실시예에 의하면, 결정 엔진 프로그램은 결정 엔진이 실행되는 컴퓨터 시스템의 프로세서 또는 다른 요소에 의해 제공되는 정보에 의거하여 시간을 결정할 수 있다. 일례에서, 결정 엔진은 잘 알려진 PENTIUM형 프로세서를 통합한 Intel 기반의 범용 컴퓨터 시스템을 실행한다. 예를 들면, PENTIUM급 프로세서로 도입된 CPU 명령어 RDTSC(read timestamp counter)는 프로세서가 마지막으로 리셋된 이후로 지나간 클럭 사이클의 수를 판독한다. 타임 스탬프 카운터는 컴퓨터 수명 이상 동안 카운트되는 충분한 데이터를 제공하는 폭 64비트이다(1.0㎓에서 584년 이상 이후 타임 스탬프 카운터는 구름).
컴퓨터 프로그램(예를 들면, 결정 엔진)이 분석 하에 코드 영역 전후의 타임 스탬프 카운터를 판독하면, 2개의 측정 사이의 차이는 문제의 코드를 실행하는데 소비된 CPU 클럭 사이클의 전체 수를 제공한다. 어떻게 클럭 사이클의 수를 시간과 관련시킬지를 결정하는 문제만이 남는다. K가 오퍼레이션(O)에 소비된 클럭 사이클의 수라고 가정하면 다음의 식이 그 오퍼레이션을 실행하기 위한 시간을 결정한다.
Figure 112008024102933-PCT00004
여기서 fcpu는 CPU 클럭 주파수이다. 불행하게도, CPU 클럭 주파수를 검색하기 위한 CPU 명령어가 없으므로 이 값을 제공하기 위한 방법이 전개될 수 있다.
CPU 주파수 측정
일례에서, 프로그래밍가능한 타이머는 1.1931817㎒의 알려진 고정 카운터 주파수를 갖는다. 컴퓨터 프로그램이 오퍼레이션 전후에 타이머 카운터를 판독할 수 있으면 실행된 오퍼레이션의 실행 시간을 결정하는 것이 가능하다. Kt를 오퍼레이션(O)를 실행하는데 소비된 타인 카운트의 수라고 하면 그 오퍼레이션을 실행하기 위한 시간은 다음에 의해 측정된다.
Figure 112008024102933-PCT00005
기재된 모든 방법이 동일한 오퍼레이션(O)으로 적용되면 실행 시간(To)은 정확히 동일하고 다음의 식에 이른다.
Figure 112008024102933-PCT00006
최종적으로,
Figure 112008024102933-PCT00007
상기 논의에 의거하여 상기 식 (2)에 기재된 오퍼레이션 웨스트[W(n)]의 예를 구현할 수 있게 된다.
(a) 타임 스탬프 카운터를 판독 및 저장한다.
(b) 오퍼레이션(O)을 실행한다.
(c) 저장된 타임 스탬프 카운터에 Tmax에 상응하는 클럭 사이클의 수를 부가한다. 이 값은 kend라고 부를 수 있다.
(d) 타임 스탬프 카운터를 판독한다.
(e) 타임 스탬프 카운터의 값이 kend 이하인 동안에 (d)로 루프한다.
다음을 주목하라:
Figure 112008024102933-PCT00008
식 (2) 및 (3)에 의해 나타내어지는 오차(E)는 단계 (a), (c), (d) 및 (e) 때문이다.
Figure 112008024102933-PCT00009
단계 (d) 및 (e)는 실행되기 위해 약간의 시간이 걸리므로 이 루프는 오차(E)에서의 변동(루프 에러)을 일으킬 수 있다.
Figure 112008024102933-PCT00010
시퀀스 (a)~(e)는 여기서 결정적 오퍼레이션(OD)이라고 한다.
Figure 112008024102933-PCT00011
오퍼레이션 (a) 및 (c)~(e)는 여기서 결정 엔진에 의해 수행되는 결정적 엔벨로프(envelope) 또는 함수라고 한다.
도 4는 본 발명의 일실시예에 의한 결정 처리를 수행하기 위해 사용되는 시스템(400)의 일례를 나타낸다. 더 특히, 시스템(400)은 상기 논의된 하나 이상의 오퍼레이션을 구현할 수 있는 결정 엔진(406)을 포함한다. 시스템(400)은 결정 엔진(406) 및 외부 엔티티(403)를 포함한다. 외부 엔티티(403)는 예를 들면, 결정적 방식으로 하나 이상의 오퍼레이션을 수행하는 결정 엔진을 사용하는 하드웨어 및/또는 소프트웨어 컴포넌트(예를 들면, 어플리케이션)일 수 있다.
결정적 시스템(406)은 시간 기준(401) 및 프로세서(402)를 포함한다. 시간 기준(402)은 시간 키핑(keeping) 오퍼레이션을 수행한다. 프로세서(402)는 예를 들면, 결정 엔진(406)의 하나 이상의 함수를 수행하는 범용 컴퓨터 시스템에 실행하는 소프트웨어 프로그램을 포함할 수 있다. 엔진(406)은 일정값에서 최대 실행 시간을 키핑하는 것을 용이하게 하기 위한 명령어를 수용 및/또는 제공할 수 있다. 이것 때문에, 프로세서는 외부 엔티티(403)로 하나 이상의 명령어(404)를 제공할 수 있다. 유사하게, 외부 엔티티(403)는 프로세서(402)로 하나 이상의 명령어(405)를 제공할 수 있다.
도 4에 나타낸 바와 같은 구현의 예에서 시간 기준(401)은 시간 통과의 트랙을 키핑하기 위해 제공된다. 또한, 시간 기준(401)은 알려진 이벤트로부터 시간에서의 거리와 (직접 또는 간접으로) 서로 관련된 값을 제공한다. 이 값은 시간이 지남에 따라 연속적으로 변한다. 이 값은 여기서 시간 카운트라고 한다.
또한, 시간 카운트에서의 변동에 대하여 시간 단위를 플롯(plot)하는 수학적 함수가 사용될 수 있다. 즉, 시간 카운트의 어떤 2개의 값 사이의 차이가 주어지면 이러한 수학적 함수는 2개의 시간 카운트가 얻어진 2개의 순간 사이에 몇번 통과되었는지를 나타낸다. 이러한 수학적 함수는 이하 델타 시간 함수라고 한다.
시간 기준 및 델타 시간 함수의 특정 구현이 주어지면 시간 카운트의 어떤 2개의 연속값 사이의 차이와 관련된 최대 타임 스팬(span)이 있다. 이러한 최대 타임 스팬은 이하 시간 기준 리솔루션이라 한다.
일례에서, 기준(401)은 외부 엔티티로 인터페이스를 제공한다. 인터페이스는 프로세서가 시간 기준으로부터 시간 카운트의 값을 얻게 한다. 프로세서가 시간 기준으로부터 시간 카운트를 요청하면 프로세서에 의한 요청의 발행, 및 프로세서 시스템에 의한 시간 카운트의 접수(receipt) 사이의 지연이 있을 수 있다. 이러한 지연은 여기서 인터페이스 지연라 한다. 일실시예에 의하면, 인터페이스 지연은 인터페이스의 어떤 구현을 위해 예측될 수 있다. 인터페이스의 어떤 특정 구현에 대하여 최소 및 최대 인터페이스 지연 사이의 차이는 인터페이스 지터(jitter)라고 한 다.
도 5는 본 발명의 일실시예에 의한 결정적 오퍼레이션을 수행하는 프로세서(500)를 나타낸다. 프로세서(500)와 관련된 하나 이상의 단계는 예를 들면, 도 4를 참조하여 상기 기재된 시스템(400)의 하나 이상의 요소에 의해 수행될 수 있다.
블럭(501)에서 프로세서(500)는 시작한다. 블럭(502)에서 외부 엔티티[예를 들면, 엔티티(403)]에 의해 모니터링될 수 있는 홀드/고(hold/go) 신호가 발생된다. 더 특히, 홀드/고 신호는 결정 엔진에 의해 발생될 수 있다. 일실시예에 의하면, 홀드/고 신호는 외부 엔티티에 의해 처리의 타이밍을 제어하기 위한 외부 엔티티로의 지시자로서 기능을 한다.
블럭(503)에서 결정 엔진은 외부 엔티티로부터의 대기 요청을 수신한다. 대기 요청은 홀드/고 신호가 상태를 변경한 후의 특정 시간량을 지정할 수 있다. 블럭(504)에서 결정 엔진은 대기 기간을 시간 카운트 단위로 변환한다. 블럭(505)에서 결정 엔진은 시간 기준으로부터 시간 카운트값을 얻고, 블럭(506)에서 시간 카운트값에 의거하여 경과 시간(예를 들면, 타임 스팬)을 결정한다.
블럭(507)에서 결정 엔진은 대기 상태로 들어가고, 블럭(508)에서 홀드/고 신호가 세트(set)된 후 경과 시간이 대기 요청보다 크거나 같을 때까지 이 상태로 남는다. 블럭(509)에서 프로세서(500)은 종료한다.
본 발명의 특정 일실시예에 의하면, 프로세서는 예를 들면, 다음의 태스크를 수행할 수 있는 컴퓨터를 포함한다.
1. 외부 엔티티[예를 들면, 외부 엔티티(403)]에 의해 모니터링될 수 있는 홀드/고 신호[예를 들면, 신호(404)]를 [예들 들면, 결정 엔진(406)에 의해] 발생한다.
2. 외부 엔티티로부터의 대기 요청[예를 들면, 신호 (405)]을 수신한다. 대기 요청(10)은 홀드/고 신호가 상태를 변경한 후의 특정 시간량을 나타낸다.
3. 시간 단위로부터의 요청된 대기 기간을 그 상응하는 시간 카운트 단위로 변환한다.
4. 시간 기준으로부터 (예를 들면, 인터페이스를 통하여) 시간 카운트값을 얻는다.
5. 2개의 시간 카운트값 사이의 차이와 관련된 타임 스팬을 결정하기 위해 시간 카운트의 2개의 값을 사용하여 델타 시간 함수를 적용한다.
6. 다음과 같이 정의되는 결정적 루프 알고리즘을 실행한다.
a. 대기 요청을 수신한다.
b. 요청된 기간을 시간 카운트 단위로 변환한다.
c. 홀드/고 신호를 클리어한다.
d. 초기 시간 카운트를 얻는다.
e. 델타 시간 결과가 대기 요청보다 크거나 같을(>=) 때까지 아래의 블럭을 수행한다.
{
현재 시간 카운트를 얻는다.
현재 - 초기 시간 카운트에 델타 시간 함수를 적용한다.
}
홀드/고 신호를 세트한다.
역 델타 시간 함수가 사용될 수 있으면 다른 실시예에 의한 결정적 루프 알고리즘의 대안 버전이 아래 나타내어지는 바와 같이 구현될 수 있다.
a. 대기 요청을 수신한다.
b. 요청된 기간을 시간 카운트 단위로 변환한다.
c. 홀드/고 신호를 클리어한다.
d. 대기 요청에 역 델타 시간 함수를 적용한다.
e. 역 델타 시간 결과 > 현재 시간 카운트인 동안 아래의 블럭을 수행한다.
{
현재 시간 카운트를 얻는다.
}
홀드/고 신호를 세트한다.
프로세서에서의 결정적 루프 알고리즘의 실행은 얼마나 신속하게 프로세서가 알고리즘을 실행할 수 있는지에 의거하는 특정량의 시간이 걸린다. 이러한 시간량은 여기서 결정적 루프 알고리즘 오버헤드라 한다.
결정적 루프 알고리즘 오버헤드는 세트업 오버헤드 및 루프 오버헤드의 2개의 요소를 포함한다. 세트업 오버헤드는 프로세서 시스템의 구현에 의거하고, 시간 카운트의 새로운 값을 검색하는 루프 전의 초기화 명령어에 관련된다. 루프 오버헤드는 프로세스가 하나의 반복을 실행하는데 걸리는 시간이고, 타이밍 기준이 프로세서와 무관한 경우 프로세서 시스템에 관련될 수 없는 인터페이스 오버헤드를 포함한다.
일실시예에 의한 세트업 오버헤드 및 루프 오버헤드 (및 따라서 결정적 루프 알고리즘 오버헤드) 모두는 프로세서 및 결정적 루프 알고리즘의 어떤 구현에 대하여 예측하기 위해 요구된다. 프로세서 및 결정적 루프 알고리즘의 어떤 특정 구현에 대하여 세트업 오버헤드의 최소 및 최대값 사이의 차이는 여기서 세트업 지터라 한다. 유사하게, 루프 오버헤드의 최소 및 최대값 사이의 차이는 루프 지터라 하고 인터페이스 지터를 포함한다. 전체 시스템 지터는 주어진 구현에서의 세트업 지터 및 루프 지터 모두의 전체 효과를 반영한다.
상기 설명된 시스템의 어떤 구현에 대하여 전체 시스템 지터와 같은 정확도를 가지는 대기 요청으로 요청되는 기간 내에 홀드/고 신호의 상태를 변경할 수 있고, 대기 요청으로 요청된 기간은 시간 리솔루션 + 셋트업 오버헤드 + 루프 오버헤드 + 세트 홀드/고 신호 변환 시간보다 크거나 같다는 것이 제공된다.
외부 시스템은 결정 엔진으로 대기 요청을 전송되고 어설트(assert)될 홀드/고 신호를 위해 대기한다. 결정 엔진에 도달하기 위한 대기 요청에 대하여 요구되는 시간량은 대기 요청 지연로서 알려진다. 본 발명의 일실시예에 의하면, 대기 요청 지연은 결정 엔진의 유저의 어떤 구현을 위해 예측되기 위해 요구된다. 상기 기재된 다른 지연와 유사하게, 대기 요청의 시그널링과 관련된 대기 요청 지터가 있 을 수도 있다. 대기 요청 지연이 외부 시스템으로 알려지면 대기 요청을 통하여 전송되는 기간의 수학적 조정을 통하여 지연을 보상할 수 있다.
외부 시스템에 도달하기 위한 홀드/고 신호에 대하여 요구되는 시간량은 홀드/고 신호 지연로서 알려진다. 본 발명의 일실시예에 의하면, 홀드/고 신호 지연은 결정 엔진의 유저의 어떤 구현에 대하여 예측되기 위해 요구된다. 또한, 상기 기재된 다른 지연와 유사하게, 홀드/고 신호와 관련된 홀드/고 신호 지터도 있다.
외부 시스템이 홀드/고 신호의 상태 변경에 응답하는데 걸리는 시간량은 여기서 시스템 응답 지연(reaction latency)라 한다. 일실시예에 의하면, 시스템 응답 지연은 결정걱 엔진[예를 들면, 외부 엔티티(403)]의 유저의 구현에 대하여 예측하기 위해 요구된다. 상기 기재된 다른 지연와 유사하게, 시스템 응답 지연과 관련된 시스템 응답 지터도 있다.
결정 엔진의 유저의 정밀도는 주어진 대기 요청이 전체 시스템 지터 + 시스템 응답 지터와 같도록 성취될 수 있고, 최소 대기 요청 기간은 시간 리솔루션 + 셋트업 오버헤드 + 인터페이스 지연 + 세트 홀드/고 신호 변환 시간 + 시스템 응답 지연보다 크거나 같다고 제공된다.
각종 실시예에 의한 결정 엔진의 어플리케이션은 예를 들면, 소프트웨어 자동화 테스트 장비(ATE) 영역에서 찾을 수 있고, 테스트 함수가 고정밀도의 미리 정해진 기간이 걸기게 하기 위해 사용될 수 있다. 현재의 자동화 테스트 장비 소프트웨어의 결정적 정확도는 최고 몇십 마이크로세컨드이다. 본 발명의 일실시예에 의하면, 상대적으로 작은 전체 시스템 지터 및 작은 시스템 응답 지터, 및 최소 지연 및 오버헤드를 갖는 결정 엔진의 소프트웨어 구현은 ATE 소프트웨어의 결정적 행위에서의 충분한 향상이 제공될 수 있다.
본 발명의 일실시예에 의하면, 상기 기재된 결정 엔진은 Intel Corporation, Santa Clara, CA로부터 이용할 수 있는 잘 알려진 Intel PENTIUM IV 프로세서를 이용하여 구현될 수 있다. Intel PENTIUM급 프로세서는 그 액세스와 관련된 상대적으로 높은 리솔루션 및 매우 짧은 릴레이를 가지는 임베디드 시간 기준을 포함한다. 이러한 임베디드 시간 기준은 타임 스탬프 카운터(Time-Stamp Counter: TSC)라 한다.
TSC는 카운터의 초기화 이후에 발생하는 프로세서 클럭 사이클의 수를 누적하는 카운터이다. 시간 기준 리솔루션이 일정하고 1/프로세서 주파수와 같다는 것을 의미하는 PENTIUM 프로세서 클럭 주파수는 (특정 조건 하에) 고정된다고 고려될 수 있다. 예를 들면, 3.0㎓의 공칭 주파수에서의 PENTIUM IV 프로세서 실행은 333ps의 시간 기준 리솔루션을 제공한다.
게다가, TSC의 콘텐츠는 단일 프로세서 명령어(RDTSC)로 판독될 수 있다. 이것은 3.0㎓에서의 PENTIUM IV 프로세서 실행이 약 40ns인 인터페이스 지연이 그 단일 명령어의 실행 시간이 될 수 의미한다. 이러한 동일한 프로세서에 대하여 인터페이스 지연 지터는 약 3ns이다.
PENTIUM IV 프로세서를 이용하여 상기 아웃라인된 특정 구현은 대략의 결정적 루프 알고리즘 오버헤드 356ns, 세트업 오버헤드 312ns, 및 루프 오버헤드 44ns를 갖는다. PENTIUM IV 프로세서의 내부 아키텍처 때문에 인스트럭션 파이프라인이 충분히 사용되고 전형적인 실제 측정 전체 시스템 지터값은 검출될 수 없다.
일실시예에 의하면 결정 엔진에 의해 수행되는 오퍼레이션은 범용 컴퓨터 시스템에 실행하는 소프트웨어 프로그램에 의해 수행될 수 있다. 예를 들면, 본 발명의 각종 양상은 하나 이상의 소프트웨어 프로그램으로 구현될 수 있다. 특정 일례에서 결정 엔진은 이하 SMX_Timing이라고 하는 단일 클래스로 구현될 수 있다. 다음의 섹션은 그러한 클래스의 하나의 구현을 설명한다. 다음의 방법은 예시의 방식으로만 제공되고, 본 발명은 어떤 특정 방법 또는 그 방법의 조합에 제한되지 않는다는 것이 인지되어야 한다.
베이직 오퍼레이션
SMX_Timing 클래스는 인클루드 파일(예를 들면, SMX_Timing.hxx) 및 서포팅 DLL(예를 들면, SMX_Timing.xyz, 여기서 'xyz'는 Windows 프로그래밍 환경에서의 'dll' 또는 INtime 프로그래밍 환경에서의 'rsl'일 수 있다.)로서 구현될 수 있다. 인클루드 파일은 타임 크리티컬(time critical) 메소드의 구현(인라인 메소드로서)을 포함하는 클래스 디스크립션을 함유한다. DLL 파일은 클래스 교정(calibration) 루틴을 포함하는 유틸리티 메소드을 제공할 수 있다.
로드 타임에서 SMX_Timing DLL은 클래스 교정을 수행하고 CPU 주파수를 결정한다. 일실시예에 의하면, 교정 프로세스는 자동적으로 실행하고 프로세서는 CPU 클럭이 변하지 않는 한은 실행될 필요가 없다. 클럭은 예를 들면, 전력 낭비를 줄이기 위해 CPU 보호 메커니즘이 속력 조절판(throttle)을 사용하지 않는 한은 변경되지 않는다.
클래스가 교정되고 CPU 주파수가 결정되면 새로운 클래스 오브젝트가 생성될 수 있고 이용가능한 유틸리티 메소드 중 어느 하나가 사용될 수 있다. 보정 프로세스는 매우 중요하므로 그 성공은 클래스의 어떤 오브젝트를 예시하거나, 또는 DLL로 이용할 수 있는 대부분의 유틸리티 함수를 이용하기 전에 체크되어야 한다. 보정 프로세스의 유효성(validation)은 예를 들면, 정적 클래스 메소드(예를 들면, 이하 Islnitialized 메소드라 함)을 호출함으로써 용이하게 수행될 수 있다. 루틴의 모든 다른 예에 따른 그러한 메소드의 사용은 이하 더 상세하게 설명된다.
SMX_Timing 클래스 메소드
일실시예에 의하면, 클래스에서의 타임 크리티컬 메소드는 성능 이유로 인한 인라인 함수로서 어셈블리 언어로 구현된다. 그 간결함 때문에 키 메소드가 이하 기재된다.
SMX_Timing (void)
일실시예에 의하면 타이밍 클래스에서 생성된 오브젝트는 그 자신의 교정 인자를 포함한다. 타이밍 클래스 생성자(constructor)는 오브젝트로 글로벌 교정 인자를 카피하므로 오브젝트는 필요하면 오브젝트 기반마다에 수정될 수 있다.
SMX_U64 Start (void)
Start 메소드는 현재 타임 스탬프 카운터를 판독하고 마커 속성(marker attribute)으로 카운터값을 저장한다. 마커 속성은 (예를 들면, Elapsed 메소드라 불리는 메소드를 사용하여) 경과 시간을 산출하기 위해, 또는 (WaitUntil 메소드라 불리는 메소드를 사용하여) 특정 시간량이 경과될 때까지 대기하기 위해 기준으로 서 이용될 수 있다. 다음의 코드 예는 기재된 함수다.
Figure 112008024102933-PCT00012
상기 특정된 코드는 다음과 같이 기능한다. 라인 1 및 2는 CPU를 동기화한다. 라인 4에 시간 스탬프 카운터가 샘플링되기 전에 실행될 모든 명령어가 완료된다. 라인 6은 현재 오브젝트 데이터 영역으로 포인터를 검색(retrieve)한다. 라인 8 및 9는 마커 속성으로 시간 스탬프를 저장한다. 종료시에 메소드는 CPU 클럭 틱에서 시간 스탬프 카운터를 나타내는 언사인드(unsigned) 64비트 값을 리턴한다.
SMX_S64 Elapsed (void)
Elapsed 메소드는 현재 타임 스탬프와 Start 메소드가 호출된 마지막 시간에 의함 샘플링된 타임 스탬프 사이의 차이를 산출한다. 선택적인 교정 인자는 어떤 소망의 오버헤드의 제거를 허락하기 위해 존재될 수 있다. Elapsed 메소드의 구현은 다음의 코드 예에 의해 설명된다.
Figure 112008024102933-PCT00013
상기 코드는 라인 8 및 9만 다른 Start 메소드와 매우 유사하고, 여기서 방금 샘플링된 타임 스탬프와 마커로서 저장된 타임 스탬프 사이의 차이를 산출하고, 라인 11 및 12에서 속성 eCF에 저장된 교정 인자(calfactor)를 뺀다. 산출 결과는 사인드(signed) 64비트 값으로서 메소드에 의해 리턴된다(리턴된 값은 교정 인자에 의거하여 네가티브될 수 있다).
클래스 초기화 프로세스에서(예를 들면, DLL이 로드되거나 메소드 CalibrateTiming이 호출될 때) 산출된 호출 인자는 메소드 Start 및 Elapsed을 연속적으로 호출하는 사이에 존재하는 오버헤드이다. 교정 인자는 다음의 코드 시퀀스에서 Elapsed 메소드에 의해 리턴되는 값이 0인 것과 같다.
Figure 112008024102933-PCT00014
디폴트 교정 인자를 사용하는 것은 오퍼레이션이 얼마나 오래 걸리는지를 산출하기위한 좋은 방법이다. 다음 예에 나타낸 바와 같이, 호출은 오퍼레이션 전 메소드 Start에, 다른 호출은 오퍼레이션 후 메소드 Elapsed에 첨가될 우 있다.
Figure 112008024102933-PCT00015
디폴트 교정 인자가 만족스럽지 않으면 교정 인자를 변경하기 위해 메소드 SetElapsedCalFactor가 호출될 수 있다.
SMX_U64 WaitUntil (SMX_U64 delta)
WaitUntil 메소드는 상기 기재된 웨스트 함수를 구현하기 위한 루틴의 일례이다. 메소드 예는 Start 메소드가 호출된 마지막 시간으로부터의 포워드 델타를 산출하고, 타임 스탬프가 산출된 엔드 시간과 같거나 초과할 때까지 타이트 루프(tight loop)에서 대기한다.
이러한 메소드 예에 의해 실행 시간(평균 루프 에러)를 조정하기 위한 교정 인자, 및 그 값에 의거하여 메소드를 인에이블/디스에이블하는 인에이블 플래그의 2개의 변경가능한 옵션이 인지된다. 교정 인자는 메소드 SetWaitUntilCalFactor에 의해 변결될 수 있고, 인에이블 플래그는 Enable 및 Disable 메소드를 사용하여 변경될 수 있다. 일실시예에 의하면, 인에이블 플래그에 대한 델타값은 거짓이다(WaitUntil 메소드는 디스에이블된다).
다음의 코드 예는 WaitUntil 메소드를 구현한다.
Figure 112008024102933-PCT00016
리스트된 코드는 다음과 같이 작업한다. 라인 1 및 2는 실행 플로울를 동기화한다. 라인 4는 현재 오브젝트(this)에 포인터를 검색한다. 라인 6~8은 요청된 대기 기간을 로드한다. 라인 10 및 11은 메소드가 인에이블인지의 여부를 체크한다. 라인 12 및 13은 메소드가 인에이블이 아닐 경우 요청된 기간을 0으로 변경한다. 라인 17 및 18은 요청된 대기 기간으로부터 프로그래밍된 교정 인자를 뺀다. 라인 20 및 21은 결과가 네가티브인 경우 이전의 교정을 0으로 조정한다. 라인 23 및 24는 마지막 타임 스탬프를 산출한다. 최종적으로 라인 26~29 상의 루프는 산출된 타임 스탬프가 도달될 때까지 대기한다. 리턴된 값은 CPU 클럭 틱에서 측정된 루프 에러를 나타내는 언사인드 64비트 값이다.
교정 시간에서 WaitUntil 메소드는 변수 델타값으로 행해진다. 이러한 처리 절차는 메소드를 실행하기 위해 걸리는 최소 시간(오버헤드), 및 루프 에러의 2개의 흥미있는 수에 인도된다. 디폴트 교정 인자는 오버헤드와 루프 에러의 1/2의 합이다.
상기 제안된 바와 같이 WaitUntil 메소드를 사용하기 위해서 다음의 코드 예가 구현될 수 있다.
Figure 112008024102933-PCT00017
상기 예에서 computedDelay에 상당하는 시간이 함수 RunCodeHere의 최대 실행 시간보다 큰 경우 상기 인용은 상기 기재된 바와 같은 결정적 오퍼레이션(OD)이다. 반면에, 함수 RunCodeHere의 실행 시간이 computedDelay값에 상당하는 시간보다 큰 경우 오퍼레이션은 결정적이 아니고 Start 및 WaitUntil 메소드에 의해 수행되는 함수 RunCodeHere 주위의 인벨럽은 무용하다. 상기 코드를 결정적으로 하기 위한 computedDelay값을 결정하는 방법이 이하 리스트된다.
SMX_U64 WaitUntilEx (SMX_U64 delta)
WaitUntil 메소드와 반대로, 여기서 WaitUntilEx라고 하는 메소드 예는 시간을 웨스팅하는 것을 돕기 위해 오퍼레이팅 시스템(예를 들면, Windows 또는 INtime 오퍼레이팅 시스템 함수)를 사용한다. 그러한 메소드는 소비 시간의 제어를 여전히 유지하면서 마우스 이동, 네트워크에 걸친 패킷 교환 등의 작업을 하기 위해 오퍼레이팅 시스템의 약간의 시간을 허락하는 장기간(예를 들면, 100밀리세컨드) 동안 개발자가 대기하게 하기 위해 사용된다. 상기 WaitUntil 메소드의 예를 사용하여 라이트 타임 스탬프(right timestamp)를 위해 대기하는 타이트 루프는 CPU를 락(lock)하고, CPU를 행잉(hange)하는 거짓 인상을 유저에게 주는 명백한 활동이 존재하지 않는다.
WaitUntilEx 메소드 예는 2개의 파트로 웨스트하기 위한 시간을 나누며, 제 2 파트는 그 수면 함수(예를 들면, Windows 경우에서 Sleep 함수 및 INtime 경우에서 knRtSleep 함수) 중 하나를 사용하여 오퍼레이팅 시스템에 의해 웨스트되고, 제 2 파트는 전체 시간 소비에 걸쳐 양호한 제어를 제공하기 위해 WaitUntil 메소드에 의해 웨스트될 수 있다. 리턴 값은 WaitUntil 메소드에 의해 리턴된 루프 에러이다.
SMX_U64 Wait (SMX_U64 clks)
이 메소드는 예를 들면, 다음과 같이 구현될 수 있다.
Figure 112008024102933-PCT00018
메소드 Wait는 웨스트되기 위해 특정 수의 클럭(clks) 동안 단순히 대기한 다. 리턴된 값은 WaitUntil 메소드에 의해 리턴된 루프 에러이다.
SMX_U64 WaitEx (SMX_U64 clks)
이 메소드는 예를 들면, 다음과 같이 구현될 수 있다.
Figure 112008024102933-PCT00019
메소드 WaitEx는 웨스트되기 위해 특정 수의 클럭(clks) 동안 대기한다. 리턴된 값은 WaitUntilEx 메소드에 의해 리턴된 루프 에러이다.
SMX_U64 GetElapsedCalFactor (void)
이 메소드 예는 Elapsed 메소드에 의해 교정 인자로서 사용되는 CPU 클럭 틱의 수를 나타내는 언사인드 64비트 값을 리턴한다.
void SetElapsedCalFactor (SMX_U64 newCF)
이 메소드는 파라미터로서 통과되는 언사인드 64비트 값으로 Elapsed 메소드에 의해 사용되는 교정 인자를 세트한다. 파라미터는 CPU 클럭 틱에서로 기대된다.
void ResetElapsedCalFactor (void)
ResetElapsedCalFactor 메소드는 Elapsed 메소드에 의해 사용되는 본래의 교정 인자를 되찾는다. 현재 교정 인자는 잃는다.
SMX_U64 GetWaitUntilCalFactor (void)
이 메소드는 WaitUntil 메소드에 의해 교정 인자로서 사용되는 CPU 클럭 틱의 수를 나타내는 언사인드 64비트 값을 리턴한다.
void SetWaitUntilCalFactor (SMX_U64 newCF)
이 메소드는 파라미터로서 통과되는 언사인드 64비트 값으로 WaitUntil 메소드에 의해 사용되는 교정 인자를 세트한다. 파라미터는 CPU 클럭 틱에서로 기대된다.
void ResetWaitUntilCalFactor (void)
ResetWaitUntilCalFactor 메소드는 WaitUntil 메소드에 의해 사용되는 본래의 교정 인자를 되찾는다. 현재 교정 인자는 잃는다.
SMX_U64 GetCPUFrequency (void)
교정 프로세스에서 찾아지는 이 정적 메소드는 Hertz에서의 CPU 주파수를 리턴한다. 리턴되는 값은 언사인드 64비트 수이다.
SMX_U64 GetKernelTickClk (void)
정적 메소드 GetKernelTickClk는 하나의 커널 틱과 같은 CPU 클럭 틱의 수를 나타내는 언사인드 64비트 수를 리턴한다. Windows 오퍼레이팅 시스템에서 커널 틱은 10㎳이고, INtime 환경에서 커널 틱은 l00㎲, 200㎲, 250㎲, 500㎲, l㎳, 2㎳, 5㎳, 및 10㎳ 값 중 하나일 수 있다.
bool Islnitialized (void)
이 정적 메소드는 교정 결과의 검증을 위해 사용될 수 있다. 교정이 실패하면 클래스 오브젝트는 엉뚱한 행위를 나타낼 수 있고 사용되지 않아야 한다. 메소드는 마지막 교정이 충분하면 진실을 리턴하고 그렇지 않으면 거짓을 리턴한다.
void Enable (void)
이 정적 메소드는 진실로 인에이블된 속성을 세트한다. 속성은 그 함수를 인 에이블/디스에이블하기 위해 WaitUntil 메소드에 의해 사용될 수 있다. 또한, INtime 환경에서 실행되는 경우 이 메소드는 커널 스케줄러를 정지한다. 일실시예에 의하면, WaitUntil 메소드는 디폴트에 의해 디스에이블된다.
void Disable (void)
이 정적 메소드는 거짓으로 인에이블된 속성을 리셋한다. 속성은 그 함수를 에이블/디스에이블하기 위해 WaitUntil 메소드에 의해 사용될 수 있다. 더 많은 정보를 위해 WaitUntil 메소드 설명을 참조한다. 또한, INtime 환경 하에 실행하는 경우 이 메소드는 커널 스케줄러를 재시작한다. 일실시예에 의하면, WaitUntil 메소드는 디폴트에 의한다.
bool IsEnabled (void)
이 정적 메소드는 메소드 WaitUntil의 상태를 검증하고, 인에이블이면 진실을 그렇지 않으면 거짓을 리턴한다.
SMX_U64 GetLoopError (void)
WaitUntil 메소드의 코드 리스팅의 예에서 상기 알 수 있는 것처럼, 라인 26~29 상의 루프는 루프 에러에 의해 타임 스탬프 카운터가 (마커+델타-교정 인자)값과 같거나 초과하자마자 완료한다. 교정 동안에 WaitUntil 메소드는 루프 에러에 대한 값의 스펙트럼으로 초래되는 델타 파라미터에 대한 각종 값으로 행해질 수 있다.
교정 프로세서에서 찾아지는 이 정적 메소드는 CPU 클럭 틱에서 최대 루프 에러를 나타내는 언사인드 64비트 수를 리턴한다.
SMX_U64 GetWaitUntilOverhead (void)
이 메소드는 WaitUntil 메소드를 실행하기 위해 걸리는 최소 실행 시간으로서 찾아지는 CPU 클럭 틱의 수를 나타내는 언사인드 64비트 값을 리턴한다.
void DisableAllInterrupts (void)
현재 인에이블된 인터럽트를 저장하는 이 정적 메소드는 모든 인터럽트를 디스에이블한다. 이것은 외부 이벤트가 실행되는 프로그램의 결정적 행위에 영향을 미치지 않는 것을 보증하기 위해 사용될 수 있다. 인터럽트는 어떤 I/O 오퍼레이션이나 오퍼레이팅 시스템 호출 전에 메소드 Restorelnterrupts를 사용하여 복원될 수 있다.
void Restorelnterrupts (void)
이 정적 메소드는 상기 DisableAllInterrupts 메소드가 호출될 때 활성화되는 인터럽터를 인에이블한다.
bool CalibrateTiming (void)
CPU 주파수뿐만 아니라 Elapsed 및 WaitUntil 메소드에 의해 사용되는 교정 인자를 결정하는 교정 프로세스를 실행한다. 이 메소드는 교정이 성공하면 진실을 리턴하고 그렇지 않으면 거짓을 리턴한다.
SMX_U64 Clk2Time (SMX_U64 clks, enum TimeUnits unit)
이것은 특정 시간 단위에서의 시간으로 CPU 클럭 틱을 변환하기 위해 사용되는 정적 메소드이다. 이용가능한 시간 단위는, 예를 들면 세컨드(SEC), 밀리세컨드(MELLISEC), 마이크로세컨드(MICROSEC), 나노세컨드(NANOSEC) 및 피코세컨 드(PICOSEC)이다.
SMX_U64 Time2Clk (SMX_U64 time, enum TimeUnits unit)
이것은 특정 시간 단위에서의 시간을 CPU 클럭 틱으로 변환하기 위해 사용되는 정적 메소드이다. 이용가능한 시간 단위는, 예를 들면 세컨드(SEC), 밀리세컨드(MELLISEC), 마이크로세컨드(MICROSEC), 나노세컨드(NANOSEC) 및 피코세컨드(PICOSEC)이다.
void FlushCaches (void)
이것은 모든 캐시를 플러시하기 위해 사용될 수 있는 정적 메소드이다. 이 메소드는 예상할 수 있는 최악의 경우 촉진하기 위해 벤치마킹하기 전에 사용될 수 있다.
결정적 드라이버를 생성하기 위한 단계의
결정적 드라이버를 생성하는 것은 일반적으로 많은 시간 측정을 요구하는 프로세스이고, 일반적으로 시간이 걸리는(time-consuming) 오퍼레이션이다. 노출되는 각 API는 다른 파라미터로 행해지면서 타이밍되어야 한다. 결정적 드라이버를 설계하는 소프트웨어 개발자를 돕기 위해서 여러 가이드라인을 포함한 결정적 드라이버 생성을 위한 프로세서가 이하 설명된다.
단계 1 - 알고리즘 선택
개발 프로세스에서 드라이버 라이터는 알고리즘 선택에 신중을 가한다. 결정적 드라이버를 생성하는 것은 변동에 대한 보정을 위한 그 실행 시간에 어떤 "쿠션"를 부가하는 것을 포함하므로 안정적이고 빠른 알고리즘을 선택하는 것은 중요 하다.
실행 시간이 동일하지 않으면 유사한 실행 경로가 생성된다. 이것은 균형잡힌 실행을 호출한다. 이러한 메소드는 일반적으로 구현되지 어렵지만, 성취될 수 있으면 가치가 있다. 이러한 균형잡힌 실행 테그닉을 설명하기 위한 일례가 이하 나타내어진다.
Figure 112008024102933-PCT00020
상기 예에서, 비교에서 b보다 항상 크거나 또는 작은 강한 경향이 있으면 이 방법은 실효가 없고 실행 시간 최적화가 우선되어야 한다.
Figure 112008024102933-PCT00021
균형잡힌 실행을 제공하는 또 따른 테크닉은 명령문이 완료되면 제거되는 것을 포함한다. 상기 동일한 오퍼레이션이 예를 들면, 다음과 같이 구현될 수 있다.
Figure 112008024102933-PCT00022
상기 경우보다 조금 더 복잡하게 된 경우도 상기 해결책은 균일한 실행을 갖고 분기되지 않는다. 명령문이 채용되면 조건이 실패할 때마다 실행 시간에 페널티 가 있는 것과 같은 조건부 분기가 사용되는 경우를 주목해라.
단계 2 - 실행 시간 분석
알고리즘이 신중하게 선택되면 입력 파라미터에 따라 그 실행 시간이 분석되기 위해 타이밍된다. 다음의 2개의 예는 API의 입력이 어떻게 다른 방식으로 그 실행 시간에 영향을 미칠 수 있는지를 나타낸다.
Figure 112008024102933-PCT00023
상기 함수의 논리적 분석은 func1은 그 입력과 독립적으로 일정 실행 시간을 갖어야 하는 반면에, func2는 그 입력과 강한 의존도로 가변 실행 시간을 갖아야 함을 나타낸다. 여기서 func1은 심플 함수라 하는 것처럼 기능하는 반면에 func2는 컴플렉스 함수라 하는 것처럼 기능한다.
주어진 루틴의 실행 시간이 그 입력의 변화에 의해 두드러지게 영향을 받지 않으면 심플 함수로서 루틴을 다루기에 더 편리하다. 예를 들면, 상기 함수 func2가 10보다 작은 값으로만 호출되면 심플 함수로서 그 실행 시간을 모델링하는 것은 매우 용이하다. func2는 0보다 작거나 같은 입력에 대하여 심플 함수로서 행해지고 x가 증가할 때 그 실행 시간이 선형으로 증가해야 한다.
단계 3 - 벤치마킹
불행하게도, 함수 행위의 단순 논리 분석은 그 실행 시간을 결정하기에 충분하지 않다. 반면에, 분석은 옳은 벤치마킹 처리 절차를 설게하기 위해 중요하다. 상기 섹션에 나타낸 바와 같이, 심플 함수는 그 변경된 스티뮬러스를 가질 필요가 없는 반면 컴플렉스 함수는 그렇다. 몇몇 단순한 벤치마킹 루틴을 이하 나타낸다.
심플 함수 벤치마킹
심플 함수 벤치마킹은 아래 리스트된 것과 같은 루틴에 의해 수행될 수 있다. 입력 파라미터는 중요하지 않으므로 어떤 타당한 파라미터가 선택될 수 있다.
Figure 112008024102933-PCT00024
상기 벤치 마킹 루틴의 실행은 다음과 같이 처리된다. 라인 1은 WaitUntil 메소드(및 결정 엔진)를 디스에이블하므로 라인 8, 9 및 10에 의해 형성되는 결정적 오퍼레이션(OD)은 레귤러 오퍼레이션(비결정적)이 된다. WaitUntil 메소드는 디스에이블되므로 anyValue 값은 중요하지 않다.
라인 5는 실행 시간에서 최악의 경우를 일으키기 위해 모든 캐시(코드 및 데이터)를 플러시하고, 라인 6 및 12는 라인 8, 9 및 10에 의해 형성된 함수 func1 및 그 결정적 인벨럽을 실행하기 위한 시간을 측정한다. t0이 라인 8, 9 및 10에 의해 형성된 결정적 오퍼레이션(OD)에 의해 소비되는 전체 시간을 측정한 것이라는 것에 주목해라.
결정 엔진은 디스에이블되므로 라인 12에서 측정된 값은 함수 func1의 실행 시간 플러스 결정 엔진에 내재된 작은 오버헤드[상기 식 (2) 및 (3)에서의 E]에 대응된다.
상기 코드 단편의 실행 이후 최대값이 샘플의 어레이에서 서치될 수 있다. 일실시예에 의하면, 실행 시간은 어레이에서 샘플링되므로 통계 분석이 수집된 데이터에 수행될 수 있다. 특히, 피크-투-피크 실행 시간 변동(지터) 및 평균 실행 시간을 체크하는 것은 함수 행위의 더 양호한 이해를 제공하거나 이미 수행된 분석에서의 에러를 가리킨다.
벤치마크되는 함수의 실행 시간에 대한 최대값이 정의되면 변수 computedDelay가 정의될 수 있고 다음의 코드 발췌의 예는 예측된 행위를 확신하기 위해 실행될 수 있다.
Figure 112008024102933-PCT00025
샘플 어레이 플로팅은 작은 변동이 있으면 플렛 라인으로 결과되어야 한다. 메소드 WaitUntil에서의 내재 에러, 및 루프 에러의 범위에서의 에러가 있다고 상 기되는 한점이 기대된다. 루프 에러값을 결정하기 위해 개발자는 상기 설명한 바와 같은 메소드 GetLoopError를 호출할 수 있다. 상기 예에서 함수 fun1은 본래의 분석이 보정되면 체크되기 위해 안전성을 측정하는 것처럼 가변 인수 j로 호출될 수 있다.
컴플렉스 함수 벤치마킹
컴플렉스 함수는 기대되는 바와 같이 벤치마크하기 위해 더 복잡하게 된다. 상기 리스트된 샘플 함수 func2에서 2차원 매트릭스가 생성될 필요가 있다. 하나의 디멘젼이 가능한 입력값(x값)을 나타내고 다른 디멘젼이 특정 입력값(고정된 x)에 대해 취해지는 샘플을 나타낸다. func2는 하나의 의존(dependence)만 가지고 매트릭스는 2개의 디멘젼을 가지고 생성될 수 있다. 일반적으로 하나의 디멘전은 각 종속 변수에 대하여, 하나의 여분은 모든 변수가 고정될 때 취해지는 샘플에 대하여 생성된다. 다음 리스팅은 함수 func2에 대한 벤치마킹 루틴의 일례이다
Figure 112008024102933-PCT00026
상기 리스팅과 심플 함수에 대하여 사용된 리스팅 사이의 주요 차이점은 함수 func2의 입력 x를 변경하기 위해 또 다른 루프가 첨가된다는 것이다. 스티뮬러 스는 가능한 값의 전체 범위에 미칠 필요는 없지만, 벤치마크 하의 함수에서의 모든 실행 경로에 행해져야 한다. func2는 입력 파라미터가 0보다 작거나 같은 경우와 포지티브인 경우 사이의 행위의 차이를 가지므로 상기 벤치마크 루틴은 0보다 작게 설정된 MIN값 및 0보다 높은 MAX값을 가져야 한다. 실행 경로마다의 포인트 우측 (최소) 수는 함수에 의거하고, 개발자는 행위 패턴이 실행 시간에서 관찰될 때까지 벤치마킹을 수행할 필요가 있다.
함수는 모든 x값에 대한 최소를 가지므로 개발자는 가능한 입력 x마다 특정 입력에 대하여 얻어지는 최대값과 관련시킨 테이블 생성, 또는 실행 시간 대 입력 x를 나타내는 함수 생성의 2가지 옵션을 가진다. 첫번째 옵션은 입력 스팬이 거대하여 메모리에서의 테이블에 맞추기에 적합하지 않으므로 항상 가능하지는 않다. 두번째 옵션은 구현하기 더 복잡하지만 일반적으로 사용되는 방법이다.
상기 분석으로부터 함수 func2는 0보다 작거나 같은 x값의 일정 실행 시간 및 x값을 증가시키는 램프 실행 시간을 갖는다고 추측한다.
이 행위 모델링한 함수가 다음과 같을 수 있다.
Figure 112008024102933-PCT00027
상기 함수는 다음과 같이 실행된다. x가 0보다 작거나 같으면 논리 연산은 o으로 구해지고 executionTime 함수는 B㎱를 리턴한다. x의 값이 0보다 크면 실행 시간은 x의 단위당 A㎱만큼 증가된다. 예를 들어 x가 100으로 설정되면 실행 시간은 (100 * A + B)㎱일 것이다. A 및 B의 값은 벤치마크가 실행된 후에 결정된다. WaitUntil 메소드는 실행을 위한 클럭 틱에서의 값을 기대하므로 클럭 틱으로의 변환은 메소드 Time2Clk을 호출하는 executionTime 함수로 수행된다는 것을 주목해라. 벤치마크 루틴은 새로운 아키텍처를 고려하여 변경될 수 있다. 변수 anyValue는 이하 나타낸 바와 같이 함수 호출에 의해 대체될 수 있다.
Figure 112008024102933-PCT00028
실행 시간을 산출하는 새로운 함수 호출에 관하여 전체 실행은 증가되는 것을 주목해라. 그 사실은 WaitUntil 메소드가 단계되기 전에 executionTime 함수가 호출되므로 그 실행 시간을 증가시키는 것 외에 결정적 오퍼레이션(OD)에 영향을 미치지 않는다.
목표는 개발자는 벤치마크 루틴을 가지므로 A 및 B 값은 정의될 수 있다. 함수 executionTime으로 대체되는 경우 한쌍의 값을 생성하는 것이 목표이고, 결과는 함수는 실제 실행 시간(비결정적 시간)보다 항상 높아짐에 의해 돌아온다. 선택된 한쌍의 값은 이러한 목표를 만족시키는지 확인하기 위해서 벤치마크 루틴은 심플 함두 func1에 대해 수행되는 것과 유사한 방식으로 다시 실행될 수 있다.
executionTime 함수에서 계산된 시간은 ㎱에서 양으로 산출되어 클럭 틱으로 변환된다는 것이 주목될 것이다. 일실시예에 의하면, 이것은 ATE 시스템의 소망의 특성 중 하나가 상호 관련이기 때문이다.
2개의 시스템이 비교되는 경우 부득이한 차이 중 하나는 CPU 클럭 주파수이다. 명세 사항을 매치시킨 경우에도 각 CPU의 유효 속도는 변할 것이다. 테스트 어플리케이션의 수명에 걸쳐 일정하게 실행 시간이 유지될 필요가 있으므로 기능 불량 및 설치 기반 확장 등의 많은 요소로 인한 자연적인 컴퓨터 업그레이드가 필요할 것이다. 주의하여, 개발자는 클럭 틱으로 측정된 실행 시간을 가지는 것이 왜 좋은 생각이 아닌지를 이해할 수 있다.
단계 4 - 타이밍 테이블 어셈블링
SMX 아키텍처에서 모든 드라이버는 하나 이상의 타이밍 테이블을 갖는다. 이로상 하나의 타이밍 테이블은 고객에게 발송되는 다른 컴퓨터마다에 대하여 생성될 수 있다.
타이밍 테이블은 데이터 테이블을 운반하는 DLL로서 구현될 수 있고, 실행 시간은 컴플레스 함수의 타이밍 행위를 나타내기 위해 (타이밍 함수), 및 타이밍 테이블에 대하여 정보를 보고하기 위한 어떤 스탠다드 함수를 모델링한다.
일실시예에 의한 데이터 테이블은 어레이고, 여기서 각 엘리먼트는 다음의 스트럭쳐(structure) 예에 의해 나타내어진다.
Figure 112008024102933-PCT00029
상기 스트럭쳐의 예에서 pFunc는 컴플렉스 함수에 의해 사용되는 타이밍 함수의 어드레스를 갖는 보이드(void) 포인터이고, time은 심플 함수에 의해 사용되는 실행 시간을 가지며, unit은 필드 시간에 의해 사용되는 단위이고, clockTicks는 페어(시간, 단위)를 CPU 클럭 속도로 변환한 결과를 함유한다. 이러한 변환 프로세스는 DLL이 로드될 때만 발생한다는 것을 주목해라.
타이밍 함수는 어떤 수의 파라미터도 가질 수 있지만 일례에서 클럭 틱에서 실행 시간을 리턴해야 한다. 실제로 함수는 매우 자주 사용되므로 가능하면 타이밍 함수는 빨라야 한다. 실제 드라이버에서 상기 리스트된 executionTime 함수는 다음과 유사하게 함수가 구현된다면 매우 유용하고 빨라질 수 있다.
Figure 112008024102933-PCT00030
여기서 값 A 및 B는 시간을 DLL 로드 시간에서의 클럭 틱으로 변환된다. 이러한 방법을 사용하여, 시간이 걸리는 변환 프로세스는 한번에 수행될 수 있다.
다은의 타이밍 테이블은 하나의 심플 함수 및 하나의 컴플렉스 함수가 리스 트된 예를 나타낸다.
타이밍 테이블 DLL은 타이밍 테이블에 대한 정보를 제공하기 위한 3개의 루틴을 포함할 수 있다. 그들은 일정할 수 있고, 다음과 유사할 수 있다.
Figure 112008024102933-PCT00031
첫번째 루틴은 타이밍 테이블 어드레스를 리턴하고, 두번째 루틴은 타이밍 테이블 엘리먼트 사이즈를 리턴하며 마지막 루틴은 타이밍 테이블에서 얻을 수 있는 엘리먼트의 수를 리턴한다.
스탠다드 처리 절차로서 DLL main (SMX_DLL_MAIN)은 시간을 나타내는 모든 상수를 클럭 틱으로 변환해야하는 코드를 함유한다. 다음의 리스팅은 그것을 위한 구현을 나타낸다.
Figure 112008024102933-PCT00032
타이밍 테이블을 관리하는 개발자를 돕는 SMX_Timing 프로젝트에서 정의되는 클래스를 정의할 수 있다. 글래스 이름은 SMX_TimingTableManager이고 사용될 드라이버에 의해 인계될 수 있다.
Figure 112008024102933-PCT00033
결정 엔진 어플리케이션
일실시예에 의한 결정 엔진의 하나의 어플리케이션은 시간에 관하여 비결정 적 설계에 의한 시스템에 결정적 행위를 제공하는 것이다. 논의된 바와 같이, Intel PENTIUM급 프로세서를 사용한 컴퓨터 시스템은 비결정적 설계에 의한다. PENTIUM 프로세서는 어떤 특정 명령어 세트의 실행 시간은 프로세서의 현재 "컨텍스트"에 의존하는 여러 레벨의 파이프라이닝, 분기 예측 알고리즘, 및 내부 캐시 메모리를 사용한다(즉, 명령어는 각 파인프라인 레벨, 내부 캐시 메모리의 콘텐츠 및 배열 등에서 디코딩되는 것). 이것은 여분의 실행 시간을 어떤 특정 명령어 세트에 연역적으로 정의할 수 있게 한다. 정의될 수 있는 것은 최대 실행 시간이다. 이것은 PENTIUM형 프로세서 기반의 시스템이 예측될 수 있지만 결정적이지 않게 한다.
본 발명의 일실시예에 의하면, 결정 엔진은 어떤 특정 명령어 세트에 대하여 전체 실행 시간을 일정하게 할 수 있고, 소망의 일정 시간은 최대 실행 시간보다 크거나 같다고 제공된다. 최대 실행 시간은 관련된 명령어를 분석(및 그 최대 실행 시간 구함)으로써, 또는 다른 프로세스 컨텐츠에서의 명령어 세트를 실행함으로써 경험적으로 결정될 수 있다.
본 발명의 여러 실시예에 의해 오퍼레이션을 결정적으로 실행한 결과는 도 6 및도 7에 나타낼 수 있다. 도 6은 비결정적 시스템에 의한 코드 실행의 예를 나타낸다. 나타낸 예에서 동일한 코드 세그먼트의 3개의 실행이 수행된다. 이러한 실행은 동일한 컴퓨터에 의해 또는 다른 컴퓨터에 의해 수행될 수 있다. 나타낸 바와 같이, 다른 실행은 3개의 전체 실행 시간(t1,t2,t3)으로 초래될 수 있다. 결정적 실 행을 요구하는 소프트웨어 시스템은 도 6에 나타낸 실행 시간을 제공하는 컴퓨터 시스템으로부터 일괄된 실행에 의지될 수 없다.
도 7은 본 발명의 각종 양상을 구현하는 하나 이상의 시스템에 의한 코드 실행의 예를 나타낸다. 나타낸 예에서 동일한 코드 세그먼트의 실행은 동일한 전체 실행 시간(t)으로 실행된다. 개별의 실행 사이에 실행 시간은 일정하므로 코드에 의해 수행된 오퍼레이션은 반복될 수 있다.
예를 들면, 결정 엔진은 도 7에 나타낸 바와 같은 오브젝트 호출 "DE"의 C++ 메소드의 쌍으로서 소프트웨어로 구현될 수 있다. Start() 메소드는 실행 시작 시점을 마크하고 Wait() 메소드는 시간(t)가 경과할 때까지 결정 엔진을 보증한다. 이것은 이 명령어 세트에 대한 전체 실행 시간이 t와 동일하게 항상 일정할 것이라는 것을 보증한다.
결정 엔진은 실행 속도보다 이전에 실행 시간을 확인할 수 있는 환경에서의 많은 어플리케이션을 갖는 것이 더 바람직하다. 이러한 특징은 반도체 자동화 테스트 장비(ATE) 산업, 특히 선형 (아날로그) 및 혼성 신호 디바이스 테스트의 경우에서의 시스템의 공통 특징이다. 그러한 시스템에서 다양한 다른 입력이 피검사 장치(device under test: DUT)로 제공되고, 측정은 그러한 입력에 대한 DUT의 응답에서 이루어진다. DUT는 얻어진 측정에 의거하여 기능적 또는 불완전하다고 생각된다. 선형 및 혼성 신호 디바이스는 측정되어야 하는 아날로그 신호를 생성하므로 측정이 이루어지는 정확한 시점은 결정적인 가치가 된다.
도 8은 가정의 디바이스 출력 및 디바이스가 기능적인지의 여부를 검증하기 위해 이루어진 2개의 측정(M1 및 M2)을 나타낸다. 이러한 측정이 비결정적 시스템에 공통인 소프트웨어를 통하여 이루어지는 경우 측정이 이루어지는 정확한 시간과 관련된 부정확(지터)이 있을 것이다. 측정을 이루는 소프트웨어의 어떤 조각이 연속적으로 여러번 (이 예에서는 3번) 실행되면 M1 및 M2는 디바이스 출력이 실행마다 정확히 동일한 경우에도 측정 소프트웨어의 각 실행에 대한 다른 값을 나타내는 것이 가장 좋다.
도 8은 측정 실행과 관련된 타이밍 지터가 측정값에서 직접 에러를 발생하는 것을 나타낸다. 타이밍 지터의 범위에 의거하여 측정에서의 에러는 잠재적으로 매우 클 수 있고, 기능적 디바이스는 잘못된 비기능적으로 생각될 수 있고, 그 반대도 마찬가지이다. 선형 및 혼성 신호 디바이스를 위한 테스트 어플리케이션은 이러한 유형의 문제를 역사적으로 다루어야 하고, 여러 해결책이 이용될 수 있지만 그들 모두는 상당한 여분의 (많은 수의 측정을 평균하는) 테스트 시간 또는 (더 정교한 측정 하드웨어) 비용과 관련된다.
결정 엔진의 구현이 측정이 제시간에 이루지는 경우 제어하기 위해 사용되면 타이밍 지터가 제거되거나 극히 감소되고 의미있는 시간 패널티 없이 가능하면 덜 정교한 측정 하드웨어를 이용한 더 반복가능한 결과를 제공한다.
측정이 제시간에 일어날 때 지정될 수 있는 직접적인 결과는 테스트 어프리케이션 소프트웨어가 실행되는 프로세서 속도와 독립된다는 것이다. 예를 들면, 테스트 어플리케이션이 특정 속도(예를 들면, 2.0㎓)에서 실행하는 컴퓨터 플랫폼에서 개발되면 그 어플리케이션에 의해 수행되는 측정은 그 프로세서 속도와 간접적 으로 같아진다. 테스트 어플리케이션이 더 빠른 컴퓨터(예를 들면, 3.0㎓)로 이동되어 모든 측정은 더 빠르게 실행되기 쉬워지면 그러한 빠른 오퍼레이션은 잘못된 결과를 (다시 한번) 생성할 것이다. 더 빠른 프로세서 시스템으로 현재의 테스트 어플리케이션을 포트하는 것은 시스템 개발자에게 더 시간이 걸리고 비용이 들게 할 수 있다.
오히려, 테스트 어플리케이션이 결정 엔진의 사용을 이루면 모든 측정은 항상 정의에 의해 미지 정해진 동일한 시점에서 일어난다. 이것은 테스트 어플리케이션을 더 빠른 프로세서로 포트하는 것은 어플리케이션에 변화를 요구하지 않는 다는 것을 의미한다. 이러한 특징은 유저가 (항상 수천의 측정으로) 전체 테스트 어플리케이션을 포팅으로 다루는 것 대신에 선택된 측정에 대해서만 테스트 시간을 향하여 향상되게 한다.
그러므로, 본 발명의 하나 이상의 실시예의 여러 양상을 설명하여 각종 변경, 수정 및 향상이 당업자에게 쉽게 일어날 수 있다는 것이 인지된다. 그러한 변경, 수정 및 향상은 이러한 개시의 부분이 되도록 의도되고 본 발명의 정신 및 범위 내가 되도록 의도된다. 따라서, 상기 설명 및 도면은 예시만을 위한 것이다.

Claims (34)

  1. 결정 처리를 수행하는 시스템으로서:
    하나 이상의 명령어를 실행하도록 된 처리 엔티티; 및
    상기 하나 이상의 명령어의 실행 시간을 일정값으로 조정하도록 된 컴포넌트를 포함하는 것을 특징으로 하는 결정 처리 수행 시스템.
  2. 제 1 항에 있어서,
    상기 컴포넌트는 하나 이상의 명령어의 최대 실행 시간을 조정하도록 된 것을 특징으로 하는 결정 처리 수행 시스템.
  3. 제 1 항에 있어서,
    상기 컴포넌트는 하나 이상의 명령어의 실행 시간을 하나 이상의 명령어의 다중 실행에 걸쳐 동일한 일정값으로 조정하도록 된 것을 특징으로 하는 결정 처리 수행 시스템.
  4. 제 3 항에 있어서,
    상기 다중 실행은 다른 컴퓨터 시스템에서 발생되는 것을 특징으로 하는 결정 처리 수행 시스템.
  5. 제 4 항에 있어서,
    상기 다른 컴퓨터 시스템은 다른 처리 능력을 갖는 것을 특징으로 하는 결정 처리 수행 시스템.
  6. 제 1 항에 있어서,
    상기 컴포넌트는 미리 결정된 기간 내에 하나 이상의 명령어의 실행을 수행하도록 된 것을 특징으로 하는 결정 처리 수행 시스템.
  7. 제 1 항에 있어서,
    상기 컴포넌트는 기간을 대기시켜 실행 시간을 일정값으로 조정하도록 된 것을 특징으로 하는 결정 처리 수행 시스템.
  8. 제 7 항에 있어서,
    시간 기준을 더 포함하고, 상기 컴포넌트는 상기 시간 기준을 이용하여 상대 시간을 결정하도록 된 것을 특징으로 하는 결정 처리 수행 시스템.
  9. 제 8 항에 있어서,
    상기 컴포넌트는 프로세서 사이클의 카운터값에 의거하여 상대 시간을 결정하도록 된 것을 특징으로 하는 결정 처리 수행 시스템.
  10. 제 8 항에 있어서,
    상기 시간 기준은 인터페이스를 포함하고, 상기 컴포넌트는 상기 인터페이스를 통하여 처리 사이클의 카운터를 획득하도록 된 것을 특징으로 하는 결정 처리 수행 시스템.
  11. 제 1 항에 있어서,
    상기 컴포넌트는 하나 이상의 명령어를 실행하기 위해 사용되는 시간량을 결정하도록 되고, 기간을 대기시켜 실행 시간을 일정값으로 조정하도록 된 것을 특징으로 하는 결정 처리 수행 시스템.
  12. 제 9 항에 있어서,
    상기 컴포넌트는 복수의 카운터값에 의거하여 경과 시간을 결정하도록 된 것을 특징으로 하는 결정 처리 수행 시스템.
  13. 제 9 항에 있어서,
    상기 카운터값은 프로세서의 타임 스탬프 카운터인 것을 특징으로 하는 결정 처리 수행 시스템.
  14. 제 13 항에 있어서,
    상기 프로세서는 PENTIUM형 프로세서인 것을 특징으로 하는 결정 처리 수행 시스템.
  15. 제 1 항에 있어서,
    상기 시스템은 자동화 테스트 시스템의 일부인 것을 특징으로 하는 결정 처리 수행 시스템.
  16. 결정 처리를 수행하는 컴퓨터 구현 방법으로서:
    컴퓨터 시스템에 하나 이상의 명령어를 실행하는 액트;
    상기 실행 액트의 실행 시간을 측정하는 액트; 및
    기간을 대기시켜 실행 시간을 일정값으로 조정하는 액트를 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  17. 제 16 항에 있어서,
    상기 기간을 대기시키는 액트는 상기 실행 액트 후 실행 시간의 일정값이 경과될 때까지 기간을 대기시키는 액트를 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  18. 제 16 항에 있어서,
    상기 하나 이상의 명령어의 실행을 측정하는 액트, 및 상기 측정 액트에 의거하여 상기 하나 이상의 명령어의 최대 실행 시간을 결정하는 액트를 더 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  19. 제 18 항에 있어서,
    상기 일정값을 최대 실행 시간으로 설정하는 액트를 더 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  20. 제 16 항에 있어서,
    상기 하나 이상의 명령어의 최대 실행 시간을 결정하는 액트를 더 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  21. 제 20 항에 있어서,
    상기 일정값을 최대 실행 시간으로 설정하는 액트를 더 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  22. 제 16 항에 있어서,
    상기 하나 이상의 명령어의 실행 시간을 하나 이상의 명령어의 다중 실행에 걸쳐 동일한 일정값으로 조정하는 액트를 더 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  23. 제 22 항에 있어서,
    상기 다중 실행은 다른 컴퓨터에서 발생되는 것을 특징으로 하는 컴퓨터 구현 방법.
  24. 제 16 항에 있어서,
    다른 컴퓨터는 다른 처리 능력을 갖는 것을 특징으로 하는 컴퓨터 구현 방법.
  25. 제 16 항에 있어서,
    소정의 기간 내에 컴퓨터 시스템에 하나 이상의 명령어를 실행하는 액트를 수행하는 액트를 더 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  26. 제 16 항에 있어서,
    기간을 대기시켜 실행 시간을 일정값으로 조정하는 액트를 더 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  27. 제 16 항에 있어서,
    상대 시간을 결정하는 액트를 더 포함하는 것을 특징으 로 하는 컴퓨터 구현 방법.
  28. 제 27 항에 있어서,
    시간 기준을 제공하는 액트, 및 상기 시간 기준을 이용하여 상대 시간을 결정하는 액트를 더 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  29. 제 27 항에 있어서,
    프로세서 사이클의 카운터값에 의거하여 상대 시간을 결정하는 액트를 더 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  30. 제 16 항에 있어서,
    상기 하나 이상의 명령어를 실행하기 위해 사용되는 시간량을 결정하는 액트, 및 기간을 대기시켜 실행 시간을 일정값으로 조정하는 액트를 더 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  31. 제 16 항에 있어서,
    복수의 카운터값에 의거하여 경과 시간을 결정하는 액트액트 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  32. 제 16 항에 있어서,
    상기 카운터값은 프로세서의 타임 스탬프 카운터인 것을 특징으로 하는 컴퓨터 구현 방법.
  33. 제 32 항에 있어서,
    상기 프로세서는 PENTIUM형 프로세서인 것을 특징으로 하는 컴퓨터 구현 방법.
  34. 제 16 항에 있어서,
    상기 방법은 자동화 테스트 시스템에 의해 수행되는 것을 특징으로 하는 컴퓨터 구현 방법.
KR1020087008045A 2005-09-02 2006-08-29 결정 처리를 수행하는 시스템 및 방법 KR20080100330A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/218,915 2005-09-02
US11/218,915 US8074059B2 (en) 2005-09-02 2005-09-02 System and method for performing deterministic processing

Publications (1)

Publication Number Publication Date
KR20080100330A true KR20080100330A (ko) 2008-11-17

Family

ID=37809407

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087008045A KR20080100330A (ko) 2005-09-02 2006-08-29 결정 처리를 수행하는 시스템 및 방법

Country Status (7)

Country Link
US (3) US8074059B2 (ko)
EP (1) EP1922611A2 (ko)
JP (1) JP2009507299A (ko)
KR (1) KR20080100330A (ko)
CN (1) CN101278259A (ko)
TW (1) TW200720968A (ko)
WO (1) WO2007027595A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210137642A (ko) * 2020-05-11 2021-11-18 한국과학기술원 정형 검증을 이용한 i/o 커널 구현의 강화

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8074059B2 (en) 2005-09-02 2011-12-06 Binl ATE, LLC System and method for performing deterministic processing
US8370537B2 (en) * 2008-09-07 2013-02-05 EADS North America, Inc. Trigger router and test system including the trigger router
US8700943B2 (en) * 2009-12-22 2014-04-15 Intel Corporation Controlling time stamp counter (TSC) offsets for mulitple cores and threads
US20110191675A1 (en) * 2010-02-01 2011-08-04 Nokia Corporation Sliding input user interface
US9572648B2 (en) 2010-12-21 2017-02-21 Justin M. Crank Implantable slings and anchor systems
US8910188B1 (en) 2011-07-14 2014-12-09 Google Inc. Deterministic data processing
US9111072B1 (en) * 2011-08-23 2015-08-18 Tectonic Labs, LLC Anti-reverse engineering unified process
WO2013100896A1 (en) * 2011-12-27 2013-07-04 Intel Corporation Methods and apparatus to manage workload memory allocation
US9348359B2 (en) * 2013-01-31 2016-05-24 Red Hat, Inc. Updating a desired tick rate for a kernel
CN103530227B (zh) * 2013-09-24 2016-02-17 福建星云电子股份有限公司 一种开放式脚本编程系统
CN104572383B (zh) * 2014-11-28 2017-05-03 深圳市芯海科技有限公司 一种基于ate的mcu/soc芯片的测试方法
JP5901870B1 (ja) * 2015-09-15 2016-04-13 株式会社ワコム タッチ検出方法、タッチ検出装置、及びタッチセンサコントローラ
DE102015226249A1 (de) * 2015-12-21 2017-06-22 Siemens Aktiengesellschaft Vorrichtung und Verfahren zum Bereitstellen einer Mehrzahl von reproduzierbaren Werten
CN107665159B (zh) * 2016-07-27 2022-07-12 上海华虹集成电路有限责任公司 安全处理器跳转指令固定执行时间的测试方法
DE102017109239A1 (de) * 2017-04-28 2018-10-31 Ilnumerics Gmbh Computerimplementiertes verfahren, computerlesbares medium und heterogenes rechnersystem
DE102020118563A1 (de) * 2019-07-17 2021-01-21 Steering Solutions Ip Holding Corporation Middleware-system und -verfahren
US11726817B2 (en) 2020-09-25 2023-08-15 Red Hat, Inc. Scheduling multiple processes with varying delay sensitivity

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3810119A (en) * 1971-05-04 1974-05-07 Us Navy Processor synchronization scheme
US4733353A (en) * 1985-12-13 1988-03-22 General Electric Company Frame synchronization of multiply redundant computers
US4965717A (en) * 1988-12-09 1990-10-23 Tandem Computers Incorporated Multiple processor system having shared memory with private-write capability
JPH03189823A (ja) * 1989-12-20 1991-08-19 Fujitsu Ltd 命令実行方式
JPH04205028A (ja) * 1990-11-29 1992-07-27 Toshiba Corp プログラマブルウェイト信号生成装置
US5636367A (en) * 1991-02-27 1997-06-03 Vlsi Technology, Inc. N+0.5 wait state programmable DRAM controller
JPH0573296A (ja) * 1991-09-13 1993-03-26 Nec Ic Microcomput Syst Ltd マイクロコンピユータ
JPH05233277A (ja) * 1992-02-21 1993-09-10 Fujitsu Ltd マイクロプロセッサ
JPH0773059A (ja) * 1993-03-02 1995-03-17 Tandem Comput Inc フォールトトレラント型コンピュータシステム
US5802360A (en) * 1996-05-01 1998-09-01 Lucent Technologies Inc. Digital microprocessor device having dnamically selectable instruction execution intervals
US5987598A (en) * 1997-07-07 1999-11-16 International Business Machines Corporation Method and system for tracking instruction progress within a data processing system
US6230263B1 (en) * 1998-09-17 2001-05-08 Charles P. Ryan Data processing system processor delay instruction
US6336191B1 (en) * 1999-03-08 2002-01-01 International Business Machines Corporation Method and system for clock compensation in instruction level tracing in a symmetrical multi-processing system
JP2000330785A (ja) * 1999-05-18 2000-11-30 Sharp Corp 実時間プロセッサおよび命令実行方法
GB2406943B (en) * 2002-12-12 2005-10-05 Advanced Risc Mach Ltd Processing activity masking in a data processing system
US8074059B2 (en) 2005-09-02 2011-12-06 Binl ATE, LLC System and method for performing deterministic processing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210137642A (ko) * 2020-05-11 2021-11-18 한국과학기술원 정형 검증을 이용한 i/o 커널 구현의 강화

Also Published As

Publication number Publication date
WO2007027595A2 (en) 2007-03-08
US20150012733A1 (en) 2015-01-08
TW200720968A (en) 2007-06-01
EP1922611A2 (en) 2008-05-21
JP2009507299A (ja) 2009-02-19
US8074059B2 (en) 2011-12-06
US8719556B2 (en) 2014-05-06
WO2007027595A3 (en) 2007-10-11
US20120159131A1 (en) 2012-06-21
CN101278259A (zh) 2008-10-01
US20070055846A1 (en) 2007-03-08
US9189239B2 (en) 2015-11-17

Similar Documents

Publication Publication Date Title
KR20080100330A (ko) 결정 처리를 수행하는 시스템 및 방법
Li et al. Calculating source line level energy information for android applications
Hong et al. QED: Quick error detection tests for effective post-silicon validation
US6973417B1 (en) Method and system for simulating execution of a target program in a simulated target system
US8898049B2 (en) System level power profiling of embedded applications executing on virtual multicore system-on-chip platforms
Bose et al. Performance analysis and its impact on design
Alameldeen et al. Evaluating non-deterministic multi-threaded commercial workloads
Shafi et al. Design and validation of a performance and power simulator for PowerPC systems
Schürmans et al. ESL power estimation using virtual platforms with black box processor models
Sieh et al. An end-to-end toolchain: From automated cost modeling to static WCET and WCEC analysis
US7684971B1 (en) Method and system for improving simulation performance
Djupdal et al. Lynsyn and LynsynLite: The STHEM power measurement units
Wolf et al. Execution cost interval refinement in static software analysis
Plyaskin et al. A method for accurate high-level performance evaluation of MPSoC architectures using fine-grained generated traces
Mittal et al. Integrating sampling approach with full system simulation: Bringing together the best of both
Johansson Real-time linux testbench on raspberry pi 3 using xenomai
Kim FPGA-Accelerated Evaluation and Verification of RTL Designs
Massari et al. Towards fine-grained DVFS in embedded multi-core CPUs
CN114115887A (zh) 具有用于快速分区编译的动态分区负载均衡的自适应调度
Davis et al. The RASE (rapid, accurate simulation environment) for chip multiprocessors
Ferdinand et al. Integration of code-level and system-level timing analysis for early architecture exploration and reliable timing verification
Reischer et al. Bio-algebras
Trapp et al. How to Handle CPU Bound Systems: A Specialization of Dynamic Performance Stubs to CPU Stubs
Roloff et al. InvadeSIM-A Simulation Framework for Invasive Parallel Programs and Architectures
Herdt et al. An Open-Source RISC-V Evaluation Platform

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid