KR20150117584A - 시스템 온 칩 및 그것의 검증 방법 - Google Patents

시스템 온 칩 및 그것의 검증 방법 Download PDF

Info

Publication number
KR20150117584A
KR20150117584A KR1020140091962A KR20140091962A KR20150117584A KR 20150117584 A KR20150117584 A KR 20150117584A KR 1020140091962 A KR1020140091962 A KR 1020140091962A KR 20140091962 A KR20140091962 A KR 20140091962A KR 20150117584 A KR20150117584 A KR 20150117584A
Authority
KR
South Korea
Prior art keywords
instruction
processor
test
exception
test program
Prior art date
Application number
KR1020140091962A
Other languages
English (en)
Other versions
KR102147172B1 (ko
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 삼성전자주식회사
Priority to TW104111119A priority Critical patent/TWI643064B/zh
Priority to US14/680,337 priority patent/US9448917B2/en
Priority to JP2015079540A priority patent/JP2015201208A/ja
Priority to CN201510167012.8A priority patent/CN104978249B/zh
Publication of KR20150117584A publication Critical patent/KR20150117584A/ko
Priority to US15/257,063 priority patent/US9990205B2/en
Application granted granted Critical
Publication of KR102147172B1 publication Critical patent/KR102147172B1/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering

Landscapes

  • Engineering & Computer Science (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명의 실시 예에 따른 시스템 온 칩의 검증 방법은 테스트 생성기 및 예외 처리기를 제공받는 단계, 테스트 템플릿에 기초하여 상기 테스트 생성기에 의해 예외 유발 명령어를 포함하는 테스트 프로그램을 생성하는 단계, 상기 테스트 프로그램의 실행에 따라 제 1 동작 상태에서 제 1 명령어를 수행하는 단계, 상기 테스트 프로그램을 실행하는 동안 상기 예외 유발 명령어를 수행하는 경우, 상기 테스트 프로그램의 실행을 중단하고 상기 예외 처리기에 포함된 고정된 명령어 시퀀스를 수행하는 단계, 그리고 상기 고정된 명령어 시퀀스를 수행한 후 변경된 제 2 동작 상태에서 상기 예외 유발 명령어 주소의 바로 다음 주소에 위치한 제 2 명령어부터 상기 테스트 프로그램의 실행을 재개하는 단계를 포함한다.

Description

시스템 온 칩 및 그것의 검증 방법{SYSTEM ON CHIP AND VERIFICATION METHOD THEREOF}
본 발명은 시스템 온 칩에 관한 것으로, 좀 더 구체적으로는 시스템 온 칩 및 그것의 검증 방법에 관한 것이다.
반도체 공정이 발전하면서 최근 개발되고 있는 반도체 집적 회로는 프로세서, 캐시 메모리, 입/출력 인터페이스 회로 등이 단일 칩으로 집적된 시스템 온 칩(System on Chip, SoC) 형태로 개발되는 경향을 보이고 있다. 프로세서와 캐시 메모리를 단일 칩으로 집적하는 경우, 데이터 입/출력 속도가 향상되고, 그 결과 프로세서의 전체 성능이 향상되는 효과를 얻을 수 있다. 그러나 제조 공정 등의 불균형 등으로 인해 반도체 집적 회로에 불량이 발생될 수 있으며, 불량의 원인을 밝히기 위한 노력이 필요하다.
최근에 SoC는 복수의 프로세서들을 포함할 수 있다. 또한, 각 프로세서는 복수의 권한 레벨(Privilege Level)들 또는 복수의 명령어 세트(Instruction Set)들을 변경하며 동작할 수 있다. 따라서, 이러한 복수의 프로세서들, 복수의 권한 레벨들 또는 복수의 명령어 세트들을 고려하여 자동으로 SoC를 검증하는 방법이 필요하다.
본 발명의 목적은 다양한 상황에서 검증 동작이 수행되는 시스템 온 칩 및 그것의 검증 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 시스템 온 칩의 검증 방법은 테스트 생성기 및 예외 처리기를 제공받는 단계; 테스트 템플릿에 기초하여 상기 테스트 생성기에 의해 예외 유발 명령어를 포함하는 테스트 프로그램을 생성하는 단계; 상기 테스트 프로그램의 실행에 따라 제 1 동작 상태에서 제 1 명령어를 수행하는 단계; 상기 테스트 프로그램을 실행하는 동안 상기 예외 유발 명령어를 수행하는 경우, 상기 테스트 프로그램의 실행을 중단하고 상기 예외 처리기에 포함된 고정된 명령어 시퀀스를 수행하는 단계; 그리고 상기 고정된 명령어 시퀀스를 수행한 후 변경된 제 2 동작 상태에서 상기 예외 유발 명령어 주소의 바로 다음 주소에 위치한 제 2 명령어부터 상기 테스트 프로그램의 실행을 재개하는 단계를 포함한다.
실시 예로서, 상기 제 1 동작 상태로부터 상기 제 2 동작 상태로의 변경에 따라 상기 제 2 명령어는 상기 제 1 명령어와는 다른 프로세서에서 수행되거나, 상기 제 1 명령어와는 다른 권한 레벨에서 수행되거나, 또는 상기 제 1 명령어와는 다른 명령어 세트를 사용하여 수행된다.
실시 예로서, 상기 테스트 프로그램을 생성하는 단계는: 상기 테스트 템플릿에 포함된 적어도 하나의 제 1 명령문을 읽는 단계; 상기 제 1 동작 상태에서 수행되도록 상기 적어도 하나의 제 1 명령문에 대응하는 상기 제 1 명령어를 생성하는 단계; 상기 테스트 템플릿에 포함된 상태 변환 명령문을 읽는 단계; 상기 상태 변환 명령문에 대응하여 동작 상태 전환 의도를 포함하는 상기 예외 유발 명령어를 생성하는 단계; 상기 상태 변환 명령문의 다음에 위치하는 적어도 하나의 제 2 명령문을 읽는 단계; 그리고 상기 예외 유발 명령어 주소의 바로 다음 주소에 상기 제 2 동작 상태에서 수행되도록 상기 적어도 하나의 제 2 명령문에 대응하는 상기 제 2 명령어를 생성하는 단계를 포함한다.
실시 예로서, 상기 동작 상태 전환 의도는 상기 테스트 생성기의 제 1 하위 구성요소를 통해 검출된다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 적어도 두 명령어 세트를 지원하는 시스템 온 칩의 검증 방법은 테스트 생성기 및 예외 처리기를 제공받는 단계; 테스트 템플릿에 기초하여 상기 테스트 생성기에 의해 예외 유발 명령어를 포함하는 테스트 프로그램을 생성하는 단계; 상기 테스트 프로그램의 실행에 따라 상기 적어도 두 명령어 세트 중 제 1 명령어 세트에 기초하여 생성된 제 1 명령어를 수행하는 단계; 상기 테스트 프로그램을 실행하는 동안 상기 예외 유발 명령어를 수행하는 경우, 상기 테스트 프로그램의 실행을 중단하고 상기 예외 처리기에 포함된 고정된 명령어 시퀀스를 수행하는 단계; 그리고 상기 고정된 명령어 시퀀스를 수행한 후 상기 예외 유발 명령어 주소의 바로 다음 주소에 위치한 제 2 명령어부터 상기 테스트 프로그램의 실행을 재개하는 단계를 포함하되, 상기 제 2 명령어는 상기 적어도 두 명령어 세트 중 제 2 명령어 세트에 기초하여 생성된다.
실시 예로서, 상기 테스트 프로그램을 생성하는 단계는: 상기 테스트 템플릿에 포함된 적어도 하나의 제 1 명령문을 읽는 단계; 상기 제 1 명령어 세트에 기초하여 상기 적어도 하나의 제 1 명령문에 대응하는 상기 제 1 명령어를 생성하는 단계; 상기 테스트 템플릿에 포함된 상태 변환 명령문을 읽는 단계; 상기 상태 변환 명령문에 대응하여 명령어 세트 전환 의도를 포함하는 상기 예외 유발 명령어를 생성하는 단계; 상기 상태 변환 명령문의 다음에 위치한 적어도 하나의 제 2 명령문을 읽는 단계; 상기 예외 유발 명령어 주소의 바로 다음 주소에 상기 제 2 명령어 세트에 기초하여 상기 적어도 하나의 제 2 명령문에 대응하는 상기 제 2 명령어를 생성하는 단계를 포함한다.
실시 예로서, 상기 상태 변환 명령문은 상기 명령어 세트 전환 의도를 포함한다.
실시 예로서, 상기 명령어 세트 전환 의도는 상기 테스트 생성기의 제 1 하위 구성요소에 의해 검출된다.
실시 예로서, 상기 제 1 및 제 2 명령어의 내용은 상기 테스트 생성기의 제 2 하위 구성요소에 의해 결정된다.
실시 예로서, 상기 명령어 세트 전환 의도는 상기 예외 유발 명령어에 포함된 인수들을 통하여 검출된다.
실시 예로서, 상기 제 1 명령어, 상기 제 2 명령어, 또는 상기 예외 유발 명령어를 참조 모델에 주입하여 모델링 결과를 획득하는 단계를 더 포함하되, 상기 모델링 결과는 상기 제 1 명령어, 상기 제 2 명령어 또는 상기 예외 유발 명령어의 수행에 따른 검증 대상 프로세서의 상태 변화 정보를 포함한다.
실시 예로서, 상기 모델링 결과를 획득하는 단계는: 상기 검증 대상 프로세서가 적어도 두 프로세서를 포함하는 경우, 상기 예외 유발 명령어에 포함된 프로세서 전환 의도를 검출하는 단계; 상기 프로세서 전환 의도가 검출된 경우, 상기 예외 유발 명령어의 주입없이 상기 참조 모델에 비동작 명령어를 주입하는 단계를 포함하되, 상기 비동작 명령어는 상기 참조 모델의 상태 변화없이 다음에 생성될 명령어의 위치를 설정한다.
실시 예로서, 상기 테스트 프로그램을 생성하는 단계는 상기 검증 대상 프로세서를 불포함하는 호스트 시스템 온 칩에서 수행되고, 상기 제 1 명령어를 수행하는 단계, 상기 고정된 명령어 시퀀스를 수행하는 단계, 및 상기 테스트 프로그램의 실행을 재개하는 단계는 상기 검증 대상 프로세서를 포함하는 시스템 온 칩에서 수행된다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 적어도 두 권한 레벨을 지원하는 프로세서를 포함하는 시스템 온 칩의 검증 방법은 테스트 생성기 및 예외 처리기를 제공받는 단계; 테스트 템플릿에 기초하여 상기 테스트 생성기에 의해 예외 유발 명령어를 포함하는 테스트 프로그램을 생성하는 단계; 상기 테스트 프로그램의 실행에 따라 상기 적어도 두 권한 레벨 중 제 1 권한 레벨에서 제 1 명령어를 수행하는 단계; 상기 테스트 프로그램을 실행하는 동안 상기 예외 유발 명령어를 수행하는 경우, 상기 테스트 프로그램의 실행을 중단하고 상기 예외 처리기에 포함된 고정된 명령어 시퀀스를 수행하는 단계; 그리고 상기 고정된 명령어 시퀀스를 수행한 후 상기 예외 유발 명령어 주소의 바로 다음 주소에 위치한 제 2 명령어부터 상기 테스트 프로그램의 실행을 재개하는 단계를 포함하되, 상기 제 2 명령어는 상기 적어도 두 권한 레벨 중 제 2 권한 레벨에서 수행된다.
실시 예로서, 상기 테스트 프로그램을 생성하는 단계는: 상기 테스트 템플릿에 포함된 적어도 하나의 제 1 명령문을 읽는 단계; 상기 제 1 권한 레벨에서 수행되도록 상기 적어도 하나의 제 1 명령문에 대응하는 상기 제 1 명령어를 생성하는 단계; 상기 테스트 템플릿에 포함된 상태 변환 명령문을 읽는 단계; 상기 상태 변환 명령문에 대응하여 권한 레벨 전환 의도를 포함하는 상기 예외 유발 명령어를 생성하는 단계; 상기 테스트 템플릿 내에서 상기 상태 변환 명령문의 다음에 위치한 적어도 하나의 제 2 명령문을 읽는 단계; 그리고 상기 예외 유발 명령어 주소의 바로 다음 주소에 상기 제 2 권한 레벨에서 수행되도록 상기 적어도 하나의 제 2 명령문에 대응하는 상기 제 2 명령어를 생성하는 단계를 포함한다.
실시 예로서, 상기 고정된 명령어 시퀀스를 수행하는 단계는: 상기 제 1 권한 레벨에서 동작하는 상기 시스템 온 칩의 제 1 상태 정보를 저장하는 단계; 상기 고정된 명령어 시퀀스를 수행하는 동안 상기 제 2 권한 레벨에서 동작하는 상기 시스템 온 칩의 제 2 상태 정보를 복구하는 단계를 포함한다.
실시 예로서, 상기 제 1 및 제 2 상태 정보는 상기 제 1 권한 레벨을 위해 할당된 상기 시스템 온 칩에 연결된 메모리 장치의 제 1 영역에 저장된다.
실시 예로서, 상기 제 1 및 제 2 상태 정보는 상기 제 2 권한 레벨을 위해 할당된 상기 시스템 온 칩에 연결된 메모리 장치의 제 2 영역에 저장된다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 적어도 두 프로세서를 포함하는 시스템 온 칩의 검증 방법은 테스트 생성기 및 예외 처리기를 제공받는 단계; 테스트 템플릿에 기초하여 상기 테스트 생성기에 의해 예외 유발 명령어를 포함하는 테스트 프로그램을 생성하는 단계; 상기 테스트 프로그램의 실행에 따라 상기 적어도 두 프로세서 중 제 1 프로세서에서 제 1 명령어를 수행하는 단계; 상기 테스트 프로그램을 실행하는 동안 상기 예외 유발 명령어를 수행하는 경우, 상기 테스트 프로그램의 실행을 중단하고 상기 예외 처리기에 포함된 고정된 명령어 시퀀스를 수행하는 단계; 그리고 상기 고정된 명령어 시퀀스를 수행한 후 상기 예외 유발 명령어 주소의 바로 다음 주소에 위치한 제 2 명령어부터 상기 테스트 프로그램의 실행을 재개하는 단계를 포함하되, 상기 제 2 명령어는 상기 적어도 두 프로세서 중 제 2 프로세서에서 수행된다.
실시 예로서, 상기 테스트 프로그램을 생성하는 단계는: 상기 테스트 템플릿에 포함된 적어도 하나의 제 1 명령문을 읽는 단계; 상기 제 1 프로세서에서 수행되도록 상기 적어도 하나의 제 1 명령문에 대응하는 상기 제 1 명령어를 생성하는 단계; 상기 테스트 템플릿에 포함된 상태 변환 명령문을 읽는 단계; 상기 상태 변환 명령문에 대응하여 프로세서 변환 의도를 포함하는 상기 예외 유발 명령어를 생성하는 단계; 상기 테스트 템플릿 내에서 상기 상태 변환 명령문의 다음에 위치한 적어도 하나의 제 2 명령문을 읽는 단계; 그리고 상기 예외 유발 명령어 주소의 바로 다음 주소에 상기 제 2 프로세서에서 수행되도록 상기 적어도 하나의 제 2 명령문에 대응하는 상기 제 2 명령어를 생성하는 단계를 포함한다.
실시 예로서, 상기 고정된 명령어 시퀀스를 수행하는 단계는: 상기 제 1 프로세서에 대응하는 제 1 문맥을 저장하는 단계; 그리고 상기 제 2 명령어를 수행하기 전에 상기 제 1 문맥을 상기 제 2 프로세서에서 복구하는 단계를 포함하되, 상기 예외 유발 명령어는 상기 제 1 프로세서에서 수행된다.
실시 예로서, 상기 제 1 명령어를 수행하기 전에 제 1 가상 프로세서 아이디를 상기 제 1 물리 프로세서 아이디에 맵핑하는 단계; 그리고 상기 고정된 명령어 시퀀스를 수행하는 동안 상기 제 1 가상 프로세서 아이디를 상기 제 2 물리 프로세서 아이디에 맵핑하는 단계를 더 포함하되, 상기 제 1 및 제 2 명령어는 상기 제 1 가상 프로세서 아이디를 기준으로 수행된다.
실시 예로서, 상기 고정된 명령어 시퀀스를 수행하는 단계는: 상기 제 1 프로세서에 대응하는 제 1 문맥을 저장하는 단계; 상기 제 1 프로세서로부터 상기 제 2 프로세서로 제 1 인터럽트를 전송하는 단계; 상기 제 1 인터럽트에 따라 상기 제 2 프로세서에 대응하는 제 2 문맥을 저장하는 단계; 상기 제 2 프로세서로부터 상기 제 1 프로세서로 제 2 인터럽트를 전송하는 단계; 상기 제 2 인터럽트에 따라 상기 제 1 프로세서에서 상기 제 2 문맥을 복구하는 단계; 그리고 상기 제 2 프로세서에서 상기 제 1 문맥을 복구하는 단계를 포함하되, 상기 예외 유발 명령어는 상기 제 1 프로세서에서 수행된다.
실시 예로서, 상기 테스트 프로그램의 실행 전에 제 1 및 제 2 가상 프로세서 아이디 각각을 제 1 및 제 2 물리 프로세서 아이디 각각에 맵핑하는 단계; 상기 고정된 명령어 시퀀스를 수행하는 동안 상기 제 1 가상 프로세서 아이디를 상기 제 2 물리 프로세서 아이디에 맵핑하는 단계; 그리고 상기 고정된 명령어 시퀀스를 수행하는 동안 상기 제 2 가상 프로세서 아이디를 상기 제 1 물리 프로세서 아이디에 맵핑하는 단계를 더 포함하되, 상기 제 1 및 제 2 명령어는 상기 제 1 가상 프로세서 아이디를 기준으로 수행된다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 컴퓨팅 시스템은 테스트 프로그램을 생성하기 위한 제 1 데이터, 테스트 생성기 및 예외 처리기를 저장하는 메모리 장치; 그리고 상기 제 1 데이터에 따라 상기 테스트 생성기를 사용하여 상기 테스트 프로그램을 생성하는 적어도 두 프로세서들을 포함하되, 상기 테스트 프로그램 생성 시, 상기 테스트 생성기는 상기 제 1 데이터에서 프로세서 변환 의도가 검출된 경우 제 2 데이터를 생성하고, 상기 테스트 프로그램 실행 시, 상기 적어도 두 프로세서들은 상기 제 2 데이터에 따라 상기 테스트 프로그램의 실행을 중단하고, 상기 예외 처리기는 상기 제 2 데이터에 따라 고정된 명령어 시퀀스를 수행하여 상기 적어도 두 프로세서들 사이의 변경이 이루어진 후 테스트 프로그램의 실행을 재개시킨다.
이상과 같은 본 발명의 실시 예에 따르면, 다양한 상황에서 검증 동작이 수행되는 시스템 온 칩 및 그것의 검증 방법을 제공할 수 있다.
도 1은 본 발명의 실시 예에 따른 시스템 온 칩(System On Chip, 이하 SoC)을 보여주는 블록도이다.
도 2는 검증 대상 내 테스트 생성 방식을 이용하여 도 1의 시스템 온 칩을 검증하기 위한 구성을 보여주는 블록도이다.
도 3은 참조 모델(Reference Model)을 사용하는 검증 대상 외 테스트 생성 방식을 이용하여 도 1의 시스템 온 칩을 검증하기 위한 구성을 보여주는 블록도이다.
도 4는 시스템 온 칩을 검증하기 위한 본 발명에 따른 구성의 실시 예를 보여주는 블록도이다.
도 5는 명령어 세트(Instruction Set)의 전환을 수반하는 테스트 템플릿의 실시 예를 보여주는 도면이다.
도 6은 권한 레벨(Privilege Level)의 전환을 수반하는 테스트 템플릿의 실시 예를 보여주는 도면이다.
도 7은 프로세서(Processor)의 전환을 수반하는 테스트 템플릿의 실시 예를 보여주는 도면이다.
도 8은 도 4의 맵핑 테이블을 예시적으로 보여주는 도면이다.
도 9는 본 발명의 실시 예에 따른 테스트 프로그램(Test Program)의 생성 방법을 보여주는 순서도이다.
도 10은 본 발명의 실시 예에 따른 테스트 프로그램(Test Program)의 실행 동작을 보여주는 순서도이다.
도 11은 본 발명에 실시 예에 따른 권한 레벨 및 명령어 세트의 전환을 포함하는 테스트 프로그램의 실행 동작을 보여주는 순서도이다.
도 12는 프로세서 이주(Processor Migration) 시 착수 프로세서(Initiating Processor)의 동작을 보여주는 순서도이다.
도 13은 프로세서 이주(Processor Migration) 시 목표 프로세서(Victim Processor)의 동작을 보여주는 순서도이다.
도 14는 프로세서 교환(Processor Swap) 시 착수 프로세서(Initiating Processor)의 동작을 보여주는 순서도이다.
도 15는 프로세서 교환(Processor Swap) 시 목표 프로세서(Victim Processor)의 동작을 보여주는 순서도이다.
도 16은 시스템 온 칩을 검증하기 위한 본 발명에 따른 구성의 다른 실시 예를 보여주는 블록도이다.
도 17은 도 16의 호스트 시스템 온 칩에서 테스트 프로그램을 생성하는 방법을 보여주는 순서도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 시스템 온 칩(System on Chip, SoC)이 본 발명의 특징 및 기능을 설명하기 위한 전자 장치의 한 예로서 사용될 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 또한, 본 발명은 다른 실시 예들을 통해 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고, 관점 및 응용에 따라 수정되거나 변경될 수 있다.
도 1은 본 발명의 실시 예에 따른 시스템 온 칩(System On Chip, 이하 SoC)을 보여주는 블록도이다. 도 1의 참조하면, 컴퓨팅 장치(100)는 시스템 온 칩(110) 및 메모리 장치(120)를 포함할 수 있다.
시스템 온 칩(110)은 메모리 컨트롤러(111)를 포함할 수 있다. 메모리 컨트롤러(111)는 메모리 장치(120)와의 인터페이스를 제공할 수 있다. 시스템 온 칩(110)은 메모리 컨트롤러(111)를 통해 메모리 장치(120)에 데이터를 저장하거나 메모리 장치(120)로부터 데이터를 독출할 수 있다.
시스템 온 칩(110)은 제 1 및 제 2 캐시 메모리들(112, 113)을 포함할 수 있다. 이는 예시적인 것으로 시스템 온 칩(110)은 복수의 캐시 메모리들을 포함할 수 있다. 제 1 및 제 2 캐시 메모리들(112, 113)은 시스템 버스(Bus)를 통하여 메모리 컨트롤러(111)와 연결될 수 있다. 제 1 및 제 2 캐시 메모리들(112, 113)은 각각의 프로세서(114-1~114-8)에서 사용될 데이터를 임시로 저장할 수 있다. 예를 들면, 제 1 및 제 2 캐시 메모리들(112, 113)은 DRAM, 모바일 DRAM, SRAM, 또는 불휘발성 메모리 장치 등으로 구성될 수 있다.
시스템 온 칩(110)은 제 1 내지 제 8 프로세서들(114-1~114-8)을 포함할 수 있다. 이는 예시적인 것으로 시스템 온 칩(110)은 복수의 프로세서들을 포함할 수 있다. 예를 들면, 제 1 내지 제 8 프로세서들(114-1~114-8)은 중앙 처리 장치(Central Processing Unit, CPU) 또는 코어(Core)일 수 있다. 제 1 내지 제 8 프로세서들(114-1~114-8)은 기능 및 성능에 있어서 동일할 수 있다. 또한, 제 1 내지 제 8 프로세서들(114-1~114-8)은 서로 다른 기능 또는 성능을 가질 수 있다. 예를 들면, 제 1 내지 제 8 프로세서들(114-1~114-8)은 빅 코어(Big Core) 및 리틀 코어(Little Core)를 포함할 수 있다. 제 1 내지 제 4 프로세서들(114-1~114-4)은 리틀 코어(Little Core)일 수 있다. 제 5 내지 제 8 프로세서들(114-5~114-8)은 빅 코어(Big Core)일 수 있다. 빅 코어(Big Core)는 전력을 많이 소비하지만 처리 속도가 빠른 프로세서일 수 있다. 리틀 코어(Little Core)는 처리 속도가 느리지만 전력을 적게 소비하는 프로세서일 수 있다. 하지만, 제 1 내지 제 8 프로세서들(114-1~114-8)은 이것에 한정되지 않는다.
도 1에서, 제 1 내지 제 4 프로세서들(114-1~114-4)은 제 1 캐시 메모리(112)에 연결될 수 있다. 제 5 내지 제 8 프로세서들(114-5~114-8)은 제 2 캐시 메모리(113)에 연결될 수 있다.
제 1 내지 제 8 프로세서들(114-1~114-8) 및 메모리 컨트롤러(111) 사이의 명령, 데이터 및 제어 신호 등은 시스템 버스(Bus)를 통하여 전달될 수 있다.
메모리 장치(120)는 메모리 컨트롤러(111)로부터 수신되는 데이터를 저장할 수 있다. 또한, 메모리 장치(120)는 본 발명의 시스템 온 칩(110)을 검증하기 위한 프로그램들 및 데이터를 저장할 수 있다.
도 2는 검증 대상 내 테스트 생성 방식을 이용하여 도 1의 시스템 온 칩을 검증하기 위한 구성을 보여주는 블록도이다. 도 2를 참조하면, 메모리 장치(120)는 테스트 템플릿(Test Template) 및 테스트 생성기(Test Generator)를 제공받아 저장할 수 있다. 예를 들면, 시스템 온 칩(110)은 테스트 템플릿(Test Template) 및 테스트 생성기(Test Generator)를 이용하여 테스트 프로그램(Test Program)을 생성할 수 있다. 시스템 온 칩(110)은 생성된 테스트 프로그램(Test Program)을 이용하여 검증 대상 내 테스트 생성 방식(In-situ)의 검증 동작을 수행할 수 있다.
검증 대상 내 테스트 생성 방식(In-situ)의 검증 동작 시 테스트 템플릿(Test Template) 및 테스트 생성기(Test Generator)는 검증 대상인 시스템 온 칩(110)과 연결된 메모리 장치(120)에 저장될 수 있다. 테스트 생성기(Test Generator)는 일종의 프로그램일 수 있다. 테스트 생성기(Test Generator)는 테스트 템플릿(Test Template)을 이용하여 자동으로 테스트 프로그램(Test Program)을 생성할 수 있다. 테스트 프로그램(Test Program)은 시스템 온 칩(110)에 의해 수행될 적어도 하나의 명령어(Instruction)를 포함할 수 있다. 예를 들면, 적어도 하나의 명령어(Instruction)는 랜덤 명령어 시퀀스(Random Instruction Sequence)를 이룰 수 있다.
테스트 생성기(Test Generator)는 테스트 템플릿(Test Template) 내의 명령문(Instruction Statement)을 읽어서 테스트 프로그램(Test Program)을 구성하는 명령어(Instruction)를 생성할 수 있다. 예를 들면, 테스트 생성기(Test Generator)는 하나의 명령문(Instruction Statement)을 읽어서 하나의 명령어(Instruction)를 생성할 수 있다. 또한, 테스트 생성기(Test Generator)는 복수의 명령문(Instruction Statement)들을 읽어서 하나의 명령어(Instruction)를 생성할 수 있다. 테스트 생성기(Test Generator)는 하나의 명령문(Instruction Statement)을 읽어서 복수의 명령어(Instruction)들을 생성할 수 있다.
생성된 테스트 프로그램(Test Program)은 시스템 온 칩(110)에 의해 실행될 수 있다. 시스템 온 칩(110)은 테스트 프로그램(Test Program)을 실행하여 그 성능을 검증할 수 있다.
도 3은 참조 모델(Reference Model)을 사용하는 검증 대상 외 테스트 생성 방식을 이용하여 도 1의 시스템 온 칩을 검증하기 위한 구성을 보여주는 블록도이다. 도 3을 참조하면, 호스트 컴퓨팅 장치(200)는 테스트 프로그램(Test Program)을 생성하여 검증 대상 컴퓨팅 장치(300)로 전달할 수 있다. 호스트 컴퓨팅 장치(200)는 호스트 시스템 온 칩(210) 및 호스트 메모리 장치(220)를 포함할 수 있다. 검증 대상 컴퓨팅 장치(300)는 검증 대상 시스템 온 칩(310) 및 검증 대상 메모리 장치(320)를 포함할 수 있다. 호스트 및 검증 대상 시스템 온 칩(210, 310)은 도 1의 시스템 온 칩(110)과 동일한 구성을 포함할 수 있다.
호스트 메모리 장치(220)는 테스트 템플릿(Test Template), 참조 모델(Reference Model) 및 테스트 생성기(Test Generator)를 제공받아 저장할 수 있다. 참조 모델(Reference Model) 및 테스트 생성기(Test Generator)는 일종의 프로그램일 수 있다. 테스트 생성기(Test Generator)는 테스트 템플릿(Test Template)을 이용하여 자동으로 테스트 프로그램(Test Program)을 생성할 수 있다. 테스트 프로그램(Test Program) 생성 시 생성된 명령어(Instruction)는 참조 모델(Reference Model)에 주입(Feed)될 수 있다. 참조 모델(Reference Model)은 검증 대상 시스템 온 칩(310)에 포함된 프로세서를 참조하여 구성될 수 있다. 예를 들면, 참조 모델(Reference Model)은 검증 대상 시스템 온 칩(310)에 포함된 프로세서를 모델링(Modeling)한 소프트웨어일 수 있다. 참조 모델(Reference Model)은 테스트 프로그램(Test Program)의 각 명령어의 수행에 의한 검증 대상 시스템 온 칩(310)에 포함된 프로세서의 상태 변화 정보를 제공할 수 있다. 즉, 참조 모델(Reference Model)은 주입(Feed)된 명령어(Instruction)에 따라 검증 대상 시스템 온 칩(310)에 포함된 프로세서의 상태 변화를 추적한 모델링 결과(Modeling Result)를 출력할 수 있다. 참조 모델(Reference Model)은 주입(Feed)된 명령어(Instruction)에 따른 모델링 결과(Modeling Result)를 테스트 생성기(Test Generator)로 전송할 수 있다. 테스트 생성기(Test Generator)는 참조 모델(Reference Model)로부터 전송된 모델링 결과(Modeling Result)를 참조하여 다음 명령어(Next Instruction)를 생성할 수 있다. 생성된 테스트 프로그램(Test Program)은 검증 대상 컴퓨팅 장치(300)로 전달될 수 있다.
전달된 테스트 프로그램(Test Program)은 검증 대상 컴퓨팅 장치(300)의 메모리 장치(320)에 저장될 수 있다. 테스트 프로그램(Test Program)은 검증 대상 시스템 온 칩(310)에 의해 수행될 수 있다. 검증 대상 시스템 온 칩(310)은 테스트 프로그램(Test Program)을 이용하여 검증 동작을 수행할 수 있다.
도 4는 시스템 온 칩을 검증하기 위한 본 발명에 따른 구성의 실시 예를 보여주는 블록도이다. 도 4를 참조하면, 컴퓨팅 장치(400)는 검증 대상 내 테스트 생성 방식(In-situ)의 검증 방법을 수행할 수 있다. 시스템 온 칩(410)에 포함된 프로세서는 도 1의 시스템 온 칩(110)과 동일한 구성을 포함할 수 있다. 시스템 온 칩(410)에 포함된 프로세서는 복수의 프로세서(Processor)들을 포함할 수 있다. 또한, 각 프로세서(Processor)는 복수의 권한 레벨(Privilege Level)들을 지원할 수 있다.
테스트 프로그램(Test Program) 생성 시, 시스템 온 칩(410)에 연결된 메모리 장치(420)는 테스트 생성기(Test Generator) 및 테스트 템플릿(Test Template)을 저장할 수 있다. 시스템 온 칩(410)에 포함된 프로세서는 테스트 생성기(Test Generator)를 실행하여 테스트 프로그램(Test Program)을 생성할 수 있다. 테스트 생성기(Test Generator)는 일종의 프로그램일 수 있다. 테스트 생성기(Test Generator)는 테스트 템플릿(Test Template) 내의 명령문(Instruction Statement)을 읽어서 테스트 프로그램(Test Program)을 구성하는 명령어(Instruction)를 생성할 수 있다. 예를 들면, 테스트 생성기(Test Generator)는 하나의 명령문(Instruction Statement)을 읽어서 하나의 명령어(Instruction)를 생성할 수 있다. 또한, 테스트 생성기(Test Generator)는 복수의 명령문(Instruction Statement)들을 읽어서 하나의 명령어(Instruction)를 생성할 수 있다. 테스트 생성기(Test Generator)는 하나의 명령문(Instruction Statement)을 읽어서 복수의 명령어(Instruction)들을 생성할 수 있다.
테스트 생성기(Test Generator)가 템플릿 문장(Template Statement)을 읽는 동안, 테스트 생성기(Test Generator)에 포함된 제 1 하위 구성요소(1st Sub-component)는 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 또는 프로세서(Processor) 전환 의도를 검출할 수 있다. 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 또는 프로세서(Processor)를 시스템 온 칩(410)을 동작시키기 위한 동작 상태라고 정의한다. 동작 상태 전환 의도가 검출된 경우, 테스트 생성기(Test Generator)는 예외 유발 명령어(Exception-causing Instruction)를 생성할 수 있다.
동작 상태 전환 의도는 다양한 방법으로 표시될 수 있다. 예를 들면, 동작 상태 전환 의도는 템플릿 문장(Template Statement)의 내용으로 표시될 수 있다. 또한, 동작 상태 전환 의도는 특정한 바이너리 코드를 가진 예외 유발 명령어(Exception-causing Instruction)를 생성하는 템플릿 문장(Template Statement)을 이용하여 표시될 수 있다. 또한, 동작 상태 전환 의도는 두 개의 명령어(Instruction)들을 생성하는 템플릿 문장(Template Statement)을 이용하여 표시될 수 있다. 두 개의 명령어(Instruction)들은 레지스터에 특정한 값을 할당하는 명령어 및 시스템 호출(System Call) 명령어로 구성될 수 있다. 하지만, 동작 상태 전환 의도의 표시 방법은 이것에 제한되지 않는다. 위와 같이 동작 상태 전환 의도를 포함하는 명령문(Instruction Statement)을 상태 변환 문장(State Modifying Statement)이라고 정의한다.
테스트 생성기(Test Generator)가 템플릿 문장(Template Statement)을 읽는 동안, 테스트 생성기(Test Generator)에 포함된 제 2 하위 구성요소(2nd Sub-component)는 템플릿 문장(Template Statement)에 대응하는 명령어(Instruction)의 내용을 결정할 수 있다. 예를 들면, 제 2 하위 구성요소(2nd Sub-component)는 템플릿 문장(Template Statement)에 대응하는 명령어 집합을 선택할 수 있다. 테스트 생성기(Test Generator)는 선택된 명령어 집합에서 새로운 명령어(Instruction)를 생성할 수 있다.
테스트 생성기(Test Generator)에 포함된 메인 구성요소(Main Component)는 테스트 생성기(Test Generator)의 전반적인 동작을 제어할 수 있다. 메인 구성요소(Main Component)는 테스트 템플릿(Test Template)으로부터 템플릿 문장(Template Statement)들을 하나씩 읽을 수 있다. 메인 구성요소(Main Component)는 제 1 및 제 2 하위 구성요소(1st Sub-component, 2nd Sub-component)들에 의해 결정된 사항에 따라 테스트 프로그램(Test Program)의 명령어(Instruction)를 생성할 수 있다.
검증 동작 시, 시스템 온 칩(410)에 포함된 프로세서(Processor)는 생성된 테스트 프로그램(Test Program)을 실행할 수 있다. 시스템 온 칩(410)에 포함된 프로세서(Processor)는 테스트 프로그램(Test Program)에 포함된 명령어(Instruction)들을 하나씩 순차적으로 수행할 수 있다. 테스트 프로그램(Test Program)을 실행하는 동안 예외 유발 명령어(Exception-causing Instruction)를 발견하는 경우, 시스템 온 칩(410)에 포함된 프로세서(Processor)는 테스트 프로그램(Test Program)의 실행을 중단하고, 예외 처리기(Exception Handler)를 실행할 수 있다. 예외 처리기(Exception Handler)는 시스템 온 칩(410)에 연결된 메모리 장치(420)에 저장될 수 있다. 예외 처리기(Exception Handler)는 일종의 프로그램일 수 있다. 예를 들면, 예외 처리기(Exception Handler)는 예외 유발 명령어(Exception-causing Instruction)의 바이너리 부호를 확인할 수 있다. 또는 예외 처리기(Exception Handler)는 레지스터에 저장된 인수(Argument)들을 확인할 수 있다. 따라서, 예외 처리기(Exception Handler)는 바이너리 부호 또는 레지스터에 저장된 인수(Argument)들을 통하여 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 또는 프로세서(Processor) 전환 의도를 확인할 수 있다. 예외 처리기(Exception Handler)는 고정된 명령어 시퀀스(Fixed Instruction Sequence)를 포함할 수 있다. 이때 바이너리 부호 또는 레지스터에 저장된 인수(Argument)들의 확인 결과 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 또는 프로세서(Processor)를 전환하는 경우, 시스템 온 칩(410)에 포함된 프로세서(Processor)는 고정된 명령어 시퀀스(Fixed Instruction Sequence)를 순차적으로 수행할 수 있다. 고정된 명령어 시퀀스(Fixed Instruction Sequence) 중 하나의 명령어는 예외 처리를 끝낸 후 예외 유발 명령어(Exception-causing Instruction) 주소의 바로 다음 주소로 복귀하는 내용을 포함할 수 있다. 따라서, 시스템 온 칩(410)에 포함된 프로세서(Processor)는 예외 처리기(Exception Handler)의 실행을 중단하고, 테스트 프로그램(Test Program)의 실행을 재개할 수 있다. 테스트 프로그램(Test Program)의 실행을 재개할 때, 시스템 온 칩(410)에 포함된 프로세서(Processor)는 변경된 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 상태에서 테스트 프로그램(Test Program)을 실행할 수 있다. 또한, 테스트 프로그램(Test Program)은 변경된 프로세서(Processor)에서 수행될 수 있다.
시스템 온 칩(410)에 포함된 프로세서(Processor)는 테스트 프로그램(Test Program)의 실행에 따라 문맥(Context)을 메모리 장치(420)에 저장 또는 메모리 장치(420)로부터 복구할 수 있다. 시스템 온 칩(410)에 포함된 프로세서(Processor)는 테스트 프로그램(Test Program) 실행의 중단 시 문맥(Context)을 저장할 수 있다. 또한, 시스템 온 칩(410)에 포함된 프로세서(Processor)는 테스트 프로그램(Test Program) 실행의 재개 시 문맥(Context)을 복구할 수 있다. 문맥(Context)은 테스트 프로그램(Test Program)의 실행을 중단한 후 다시 재개하기 위해 필요한 정보를 의미한다. 즉, 문맥(Context)은 테스트 프로그램(Test Program) 중단 시 시스템 온 칩(410)에 포함된 프로세서(Processor)의 중단 직전의 상태를 의미할 수 있다. 예를 들면, 문맥(Context)은 각 프로세서의 레지스터 정보를 포함할 수 있다. 시스템 온 칩(410)의 각 프로세서가 6개의 권한 레벨(Privilege Level)을 지원하는 경우, 각 프로세서의 문맥(Context)은 제 1 내지 제 6 레벨에 대응하는 문맥(Context)들을 포함할 수 있다.
맵핑 테이블(Mapping Table)은 시스템 온 칩(410)과 연결된 메모리 장치(420)에 저장될 수 있다. 맵핑 테이블(Mapping Table)은 프로세서(Processor) 전환과 무관하게 테스트 프로그램(Test Program)을 생성하기 위해 사용될 수 있다. 맵핑 테이블(Mapping Table)은 프로세서(Processor)의 물리 아이디(Physical ID)와 가상 아이디(Virtual ID)를 맵핑할 수 있다. 테스트 프로그램(Test Program)의 명령어(Instruction)들은 고정된 프로세서 아이디(Processor ID)를 기준으로 실행될 수 있다. 예를 들면, 테스트 프로그램(Test Program)의 명령어(Instruction)는 가상 아이디(Virtual ID)를 기준으로 생성될 수 있다. 그러면, 맵핑 테이블(Mapping Table)의 변경을 통해 실질적으로 프로세서(Processor) 전환의 효과가 발생할 수 있다.
도 5 내지 도 7은 도 4의 테스트 템플릿의 실시 예를 보여주는 도면이다. 도 5는 명령어 세트(Instruction Set)의 전환을 수반하는 테스트 템플릿의 실시 예를 보여주는 도면이다. 도 5를 참조하면, 테스트 템플릿(Test Template)은 복수의 템플릿 문장(Template Statement)들을 포함할 수 있다. 예를 들면, 테스트 템플릿(Test Template)은 서로 다른 명령어 세트(A32, A64)에 대응하는 명령문들(Instruction Statement A ~ Instruction Statement F)을 포함할 수 있다. 또한, 테스트 템플릿(Test Template)은 상태 변환 문장들(State Modifying Statement 1, State Modifying Statement 2)을 포함할 수 있다.
시스템 온 칩(410)에 포함된 프로세서는 테스트 생성기(Test Generator)를 실행하여 테스트 프로그램(Test Program)을 생성할 수 있다. 테스트 생성기(Test Generator)는 테스트 템플릿(Test Template)에 포함된 템플릿 문장(Template Statement)들을 하나씩 읽을 수 있다. 테스트 생성기(Test Generator)는 명령문들(Instruction Statement A, Instruction Statement B)에 대응하여 64 비트 명령어(A64)를 생성할 수 있다.
테스트 생성기(Test Generator)는 상태 변환 문장(State Modifying Statement 1)에 대응하여 명령어 세트(Instruction Set)를 전환하는 명령어를 생성할 수 있다. 예를 들면, 상태 변환 문장(State Modifying Statement 1)을 검출하면, 테스트 생성기(Test Generator)는 예외 유발 명령어(Exception-causing Instruction)를 생성할 수 있다. 예외 유발 명령어(Exception-causing Instruction)는 32 비트로 명령어 세트(Instruction Set)를 전환하는 인수(Argument)들을 포함할 수 있다.
상태 변환 문장(State Modifying Statement 1)에 따라 예외 유발 명령어(Exception-causing Instruction)를 생성한 후, 테스트 생성기(Test Generator)는 명령문들(Instruction Statement C, Instruction Statement D)에 대응하여 32 비트 명령어(A32)를 생성할 수 있다.
테스트 생성기(Test Generator)는 상태 변환 문장(State Modifying Statement 2)에 대응하여 명령어 세트(Instruction Set)를 전환하는 명령어를 생성할 수 있다. 예를 들면, 상태 변환 문장(State Modifying Statement 2)을 검출하면, 테스트 생성기(Test Generator)는 예외 유발 명령어(Exception-causing Instruction)를 생성할 수 있다. 예외 유발 명령어(Exception-causing Instruction)는 64 비트로 명령어 세트(Instruction Set)를 전환하는 인수(Argument)들을 포함할 수 있다.
상태 변환 문장(State Modifying Statement 2)에 따라 예외 유발 명령어(Exception-causing Instruction)를 생성한 후, 테스트 생성기(Test Generator)는 명령문들(Instruction Statement E, Instruction Statement F)에 대응하여 64 비트 명령어(A64)를 생성할 수 있다.
이상과 같이 본 발명에 따른 시스템 온 칩(410)에 포함된 프로세서는 상태 변환 문장들(State Modifying Statement 1, State Modifying Statement 2)을 이용하여 명령어 세트(Instruction Set)를 전환하는 테스트 프로그램(Test Program)을 생성할 수 있다.
도 6은 권한 레벨(Privilege Level)의 전환을 수반하는 테스트 템플릿의 실시 예를 보여주는 도면이다. 도 6을 참조하면, 테스트 템플릿(Test Template)은 복수의 템플릿 명령문(Template Statement)들을 포함할 수 있다. 예를 들면, 테스트 템플릿(Test Template)은 서로 다른 권한 레벨(Privilege Level)에 대응하는 명령문들(Instruction Statement A ~ Instruction Statement E)을 포함할 수 있다. 또한, 상태 변환 문장들(State Modifying Statement 1 ~ State Modifying Statement 4)을 포함할 수 있다.
테스트 생성기(Test Generator)는 테스트 템플릿(Test Template)에 포함된 템플릿 명령문(Template Statement)들을 하나씩 읽을 수 있다. 테스트 생성기(Test Generator)는 명령문(Instruction Statement A)에 대응하여 명령어(Instruction A)를 생성할 수 있다. 검증 동작 시 명령어(Instruction A)는 권한 레벨(PL1-1)에서 수행되는 명령어이다.
테스트 생성기(Test Generator)는 상태 변환 문장(State Modifying Statement 1)에 대응하여 권한 레벨(Privilege Level)을 전환하는 명령어를 생성할 수 있다. 예를 들면, 상태 변환 문장(State Modifying Statement 1)을 검출하면, 테스트 생성기(Test Generator)는 예외 유발 명령어(Exception-causing Instruction)를 생성할 수 있다. 예외 유발 명령어(Exception-causing Instruction)는 권한 레벨(PL1-2)로 권한 레벨(Privilege Level)을 전환하는 인수(Argument)들을 포함할 수 있다.
상태 변환 문장(State Modifying Statement 1)에 따라 예외 유발 명령어(Exception-causing Instruction)를 생성한 후, 테스트 생성기(Test Generator)는 명령문(Instruction Statement B)에 대응하여 명령어(Instruction B)를 생성할 수 있다. 검증 동작 시 명령어(Instruction B)는 권한 레벨(PL1-2)에서 수행되는 명령어이다.
테스트 생성기(Test Generator)는 상태 변환 문장(State Modifying Statement 2)에 대응하여 권한 레벨(Privilege Level)을 전환하는 명령어를 생성할 수 있다. 예를 들면, 상태 변환 문장(State Modifying Statement 2)을 검출하면, 테스트 생성기(Test Generator)는 예외 유발 명령어(Exception-causing Instruction)를 생성할 수 있다. 예외 유발 명령어(Exception-causing Instruction)는 권한 레벨(PL1-3)로 권한 레벨(Privilege Level)을 전환하는 인수(Argument)들을 포함할 수 있다.
앞에서 설명한 바와 같이 상태 변환 문장들(State Modifying Statement 3 ~ State Modifying Statement 4)에 따라 예외 유발 명령어(Exception-causing Instruction)는 생성될 수 있다. 그러므로 자세한 설명은 생략한다. 예외 유발 명령어(Exception-causing Instruction)는 권한 레벨(Privilege Level)을 전환하는 의도를 표시하는 인수(Argument)들을 포함할 수 있다. 따라서, 명령어들(Instruction C ~ Instruction E)은 변경된 권한 레벨(Privilege Level)에서 수행될 수 있다.
도 6에서, 시스템 온 칩(410)에 포함된 프로세서는 8개의 권한 레벨들(PL1-1~PL1-4, PL2-1~PL2-4)을 지원할 수 있다. 예를 들면, 권한 레벨들(PL1-1~PL1-4)는 비보안(Non-secure) 레벨일 수 있다. 권한 레벨들(PL1-1~PL1-4)는 보안(Secure) 레벨일 수 있다. 하지만, 시스템 온 칩(410)에 포함된 프로세서는 이것에 국한되지 않는다. 시스템 온 칩(410)에 포함된 프로세서는 적어도 하나의 권한 레벨(Privilege Level)을 지원할 수 있다.
이상과 같이 본 발명에 따른 시스템 온 칩(410)에 포함된 프로세서는 상태 변환 문장들(State Modifying Statement 1 ~ State Modifying Statement 4)을 이용하여 권한 레벨(Privilege Level)을 전환하는 테스트 프로그램(Test Program)을 생성할 수 있다.
도 7은 프로세서(Processor)의 전환을 수반하는 테스트 템플릿의 실시 예를 보여주는 도면이다. 도 7을 참조하면, 테스트 템플릿(Test Template)은 복수의 템플릿 명령문(Template Statement)들을 포함할 수 있다. 예를 들면, 테스트 템플릿(Test Template)은 서로 다른 프로세서(Processor)들에 대응하는 명령문들(Instruction Statement A ~ Instruction Statement F)을 포함할 수 있다. 또한, 상태 변환 문장들(State Modifying Statement 1, State Modifying Statement 2)들을 포함할 수 있다.
시스템 온 칩(410)에 포함된 프로세서는 테스트 생성기(Test Generator)를 실행하여 테스트 프로그램(Test Program)을 생성할 수 있다. 테스트 생성기(Test Generator)는 테스트 템플릿(Test Template)에 포함된 템플릿 문장(Template Statement)들을 하나씩 읽을 수 있다. 테스트 생성기(Test Generator)는 명령문들(Instruction Statement A, Instruction Statement B)에 대응하여 명령어들(Instruction A, Instruction B)을 생성할 수 있다. 검증 동작 시 명령어들(Instruction A, Instruction B)은 제 5 프로세서(Processor 5)에서 수행되는 명령어이다.
테스트 생성기(Test Generator)는 상태 변환 문장(State Modifying Statement 1)에 대응하여 프로세서(Processor)를 전환하는 명령어를 생성할 수 있다. 예를 들면, 상태 변환 문장(State Modifying Statement 1)을 검출하면, 테스트 생성기(Test Generator)는 예외 유발 명령어(Exception-causing Instruction)를 생성할 수 있다. 예외 유발 명령어(Exception-causing Instruction)는 제 4 프로세서(Processor 4)로 프로세서(Processor)를 전환하는 인수(Argument)들을 포함할 수 있다.
상태 변환 문장(State Modifying Statement 1)에 따라 예외 유발 명령어(Exception-causing Instruction)를 생성한 후, 테스트 생성기(Test Generator)는 명령문들(Instruction Statement C, Instruction Statement D)에 대응하여 명령어들(Instruction C, Instruction D)을 생성할 수 있다. 검증 동작 시 명령어들(Instruction C, Instruction D)은 제 4 프로세서(Processor 4)에서 수행되는 명령어이다.
테스트 생성기(Test Generator)는 상태 변환 문장(State Modifying Statement 2)에 대응하여 프로세서(Processor)를 전환하는 명령어를 생성할 수 있다. 예를 들면, 상태 변환 문장(State Modifying Statement 2)을 검출하면, 테스트 생성기(Test Generator)는 예외 유발 명령어(Exception-causing Instruction)를 생성할 수 있다. 예외 유발 명령어(Exception-causing Instruction)는 제 7 프로세서(Processor 7)로 프로세서(Processor)를 전환하는 인수(Argument)들을 포함할 수 있다.
상태 변환 문장(State Modifying Statement 2)에 따라 예외 유발 명령어(Exception-causing Instruction)를 생성한 후, 테스트 생성기(Test Generator)는 명령문들(Instruction Statement E, Instruction Statement F)에 대응하여 명령어들(Instruction E, Instruction F)을 생성할 수 있다. 검증 동작 시 명령어들(Instruction E, Instruction F)은 제 7 프로세서(Processor 7)에서 수행되는 명령어이다.
이상과 같이 본 발명에 따른 시스템 온 칩(410)에 포함된 프로세서는 상태 변환 문장들(State Modifying Statement 1, State Modifying Statement 2)을 이용하여 프로세서(Processor)를 전환하는 테스트 프로그램(Test Program)을 생성할 수 있다.
도 8은 도 4의 맵핑 테이블을 예시적으로 보여주는 도면이다. 도 8을 참조하면, 맵핑 테이블(Mapping Table)은 물리 프로세서 아이디(Physical ID)와 가상 프로세서 아이디(Virtual ID) 사이의 관계를 보여준다.
도 7에서 살펴본 바와 같이 테스트 생성기(Test Generator)는 테스트 템플릿(Test Template)을 읽어서 서로 다른 프로세서에서 수행되는 명령어들을 포함하는 테스트 프로그램(Test Program)을 생성할 수 있다. 하지만, 원칙적으로 테스트 프로그램(Test Program) 내의 명령어들은 지정된 프로세서에서 동작하도록 생성될 수 있다. 따라서, 테스트 프로그램(Test Program) 내의 명령어들은 가상 프로세서 아이디(Virtual ID)를 기준으로 동작하도록 생성될 수 있다. 가상 프로세서 아이디(Virtual ID)와 물리 프로세서 아이디(Physical ID)의 맵핑을 변경하면, 실질적으로 테스트 프로그램(Test Program)은 프로세서들(Processor 1~Processor 8)을 변경하여 동작할 수 있다.
프로세서들(Processor 1~Processor 8)은 각각 고정된 물리 프로세서 아이디(Physical ID)를 가질 수 있다. 가상 프로세서 아이디(Virtual ID)는 물리 프로세서 아이디(Physical ID)에 일대일로 맵핑될 수 있다. 하지만, 가상 프로세서 아이디(Virtual ID)는 물리 프로세서 아이디(Physical ID)와 다르게 맵핑될 수 있다. 예를 들면, 가상 프로세서 아이디(Virtual ID) 1은 물리 프로세서 아이디(Physical ID) 3에 맵핑될 수 있다. 가상 프로세서 아이디(Virtual ID) 2는 물리 프로세서 아이디(Physical ID) 8에 맵핑될 수 있다. 가상 프로세서 아이디(Virtual ID) 3은 물리 프로세서 아이디(Physical ID) 1에 맵핑될 수 있다. 가상 프로세서 아이디(Virtual ID) 4는 물리 프로세서 아이디(Physical ID) 6에 맵핑될 수 있다. 가상 프로세서 아이디(Virtual ID) 5는 물리 프로세서 아이디(Physical ID) 7에 맵핑될 수 있다. 가상 프로세서 아이디(Virtual ID) 6은 물리 프로세서 아이디(Physical ID) 2에 맵핑될 수 있다. 가상 프로세서 아이디(Virtual ID) 7은 물리 프로세서 아이디(Physical ID) 4에 맵핑될 수 있다. 프로세서 교환(Swap) 동작 시 가상 프로세서 아이디(Virtual ID) 8은 물리 프로세서 아이디(Physical ID) 5에 맵핑될 수 있다. 프로세서 이주(Migration) 동작 시 물리 프로세서 아이디(Physical ID) 5는 맵핑되지 않은(Undifined) 상태를 가질 수 있다.
또한, 가상 프로세서 아이디(Virtual ID)는 프로세서 이주(Migration) 또는 교환(Swap) 동작에 따라 변경될 수 있다. 예를 들면, 프로세서 이주(Migration) 동작 시 가상 프로세서 아이디(Virtual ID)는 변경될 수 있다. 프로세서 이주(Migration) 동작 시에는 맵핑되지 않은(Undefined) 적어도 하나의 가상 프로세서 아이디(Virtual ID)가 존재할 수 있다. 프로세서 이주(Migration) 동작 전에 가상 프로세서 아이디(Virtual ID) 1은 물리 프로세서 아이디(Physical ID) 3에 맵핑될 수 있다. 프로세서 이주(Migration) 동작이 수행되면 가상 프로세서 아이디(Virtual ID) 1은 물리 프로세서 아이디(Physical ID) 5에 맵핑될 수 있다. 따라서, 물리 프로세서 아이디(Physical ID) 3은 맵핑되지 않은(Undefined) 상태가 될 수 있다.
예를 들면, 프로세서 교환(Swap) 동작 시 가상 프로세서 아이디(Virtual ID)는 변경될 수 있다. 프로세서 교환(Swap) 동작 전에 가상 프로세서 아이디(Virtual ID) 6은 물리 프로세서 아이디(Physical ID) 2에 맵핑되고, 가상 프로세서 아이디(Virtual ID) 4는 물리 프로세서 아이디(Physical ID) 6에 맵핑될 수 있다. 프로세서 교환(Swap) 동작이 수행되면, 가상 프로세서 아이디(Virtual ID) 6은 물리 프로세서 아이디(Physical ID) 6에 맵핑되고, 가상 프로세서 아이디(Virtual ID) 4는 물리 프로세서 아이디(Physical ID) 2에 맵핑될 수 있다.
이상과 같이 물리 프로세서 아이디(Physical ID)와 다르게 가상 프로세서 아이디(Virtual ID)는 프로세서 이주(Migration) 또는 교환(Swap) 후에 변경될 수 있다. 테스트 프로그램(Test Program)은 가상 프로세서 아이디(Virtual ID)를 기준으로 동작할 수 있다. 따라서, 가상 프로세서 아이디(Virtual ID)를 변경하면, 테스트 프로그램(Test Program)은 실질적으로 변경된 프로세서 상에서 수행될 수 있다.
도 9는 본 발명의 실시 예에 따른 테스트 프로그램(Test Program)의 생성 방법을 보여주는 순서도이다. 도 4 및 9를 참조하면, 시스템 온 칩(410)에 포함된 프로세서는 테스트 생성기(Test Generator)를 실행시켜 테스트 프로그램(Test Program)을 생성할 수 있다.
S110 단계에서, 테스트 생성기(Test Generator)는 테스트 템플릿(Test Template)에 포함된 명령문(Instruction Statement)을 읽을 수 있다.
S120 단계에서, 테스트 생성기(Test Generator)는 제 1 하위 구성요소(1st Sub-component)를 이용하여 명령문(Instruction Statement) 내에 특별한 조건이 있는지 여부를 검출할 수 있다. 예를 들면, 특별한 조건은 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 또는 프로세서(Processor) 전환 의도에 대한 표시일 수 있다. 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 또는 프로세서(Processor) 전환 의도는 다양한 방법으로 표시될 수 있다. 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 또는 프로세서(Processor) 전환 의도는 템플릿 문장(Template Statement)의 내용으로 표시될 수 있다. 또한, 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 또는 프로세서(Processor) 전환 의도는 특정한 바이너리 코드를 가진 예외 유발 명령어(Exception-causing Instruction)를 생성하는 템플릿 문장(Template Statement)을 이용하여 표시될 수 있다. 또한, 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 또는 프로세서(Processor) 전환 의도는 두 개의 명령어(Instruction)들을 생성하는 템플릿 문장(Template Statement)을 이용하여 표시될 수 있다. 두 개의 명령어(Instruction)들은 레지스터에 특정한 값을 할당하는 명령어 및 시스템 호출(System Call) 명령어로 구성될 수 있다. 하지만, 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 또는 프로세서(Processor) 전환 의도의 표시 방법은 이것에 한정되지 않는다.
명령문(Instruction Statement) 내에 특별한 조건이 없는 경우, S130 단계로 이동한다. 명령문(Instruction Statement) 내에 특별한 조건이 있는 경우, S150 단계로 이동한다.
S130 단계에서, S120 단계의 검출 결과 특별한 조건이 없는 경우, 테스트 생성기(Test Generator)는 명령문(Instruction Statement)에 대응하는 명령어(Instruction)를 생성할 수 있다.
S140 단계에서, 테스트 생성기(Test Generator)는 다음 명령어(Next Instruction)를 생성할 메모리 상의 주소를 계산할 수 있다. 예를 들면, 테스트 생성기(Test Generator)는 프로그램 카운터(Program Counter)를 이용하여 다음 명령어(Next Instruction)의 주소를 계산할 수 있다. 프로그램 카운터(Program Counter)는 다음 명령어(Next Instruction)를 저장할 메모리 내의 위치를 알려준다.
S150 단계에서, S120 단계의 검출 결과 특별한 조건이 검출된 경우, 테스트 생성기(Test Generator)는 예외 유발 명령어(Exception-causing Instruction)를 생성할 수 있다. 예를 들면, 테스트 생성기(Test Generator)가 템플릿 문장(Template Statement)을 읽는 동안, 테스트 생성기(Test Generator)에 포함된 제 1 하위 구성요소(1st Sub-component)는 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 또는 프로세서(Processor) 전환 의도를 검출할 수 있다. 생성된 예외 유발 명령어(Exception-causing Instruction)는 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 또는 프로세서(Processor) 전환 의도를 포함할 수 있다.
S160 단계에서, 테스트 생성기(Test Generator)는 다음에 생성될 명령어의 주소를 설정할 수 있다. 다음 명령어(Next Instruction)의 주소는 예외 유발 명령어(Exception-causing Instruction) 주소의 바로 다음에 인접한 메모리 상의 주소로 설정될 수 있다. 예를 들어, 예외 유발 명령어(Exception-causing Instruction)의 크기가 4 바이트(Byte)인 경우, 테스트 생성기(Test Generator)는 현재의 프로그램 카운터(Program Counter)에 4를 더하여 다음 명령어(Next Instruction)의 프로그램 카운터(Program Counter)로 설정할 수 있다. 즉, 다음 명령어(Next Instruction)는 예외 유발 명령어(Exception-causing Instruction)를 저장한 주소의 바로 다음 주소에 저장될 수 있다.
S170 단계에서, 테스트 생성기(Test Generator)는 테스트 템플릿(Test Template) 내에 다음에 읽혀질 명령문(Instruction Statement)이 있는지 확인할 수 있다. 더 이상 읽을 명령문(Instruction Statement)이 없는 경우, 테스트 생성기(Test Generator)는 테스트 프로그램(Test Program) 생성을 종료한다. 테스트 템플릿(Test Template) 내에 다음에 읽혀질 명령문(Instruction Statement)이 있는 경우, 다시 S110 단계로 돌아가서 테스트 생성기(Test Generator)는 다음의 명령문(Instruction Statement)을 읽을 수 있다.
이상의 테스트 프로그램(Test Program) 생성 방법에 따라 테스트 생성기(Test Generator)는 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 또는 프로세서(Processor) 전환 의도를 가지는 예외 유발 명령어(Exception-causing Instruction)를 포함하는 테스트 프로그램(Test Program)을 생성할 수 있다. 본 발명에 따른 시스템 온 칩(410)에 포함된 프로세서는 예외 유발 명령어(Exception-causing Instruction)에 따라 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 또는 프로세서(Processor)를 전환하여 검증 동작을 수행할 수 있다.
도 10은 본 발명의 실시 예에 따른 테스트 프로그램(Test Program)의 실행 동작을 보여주는 순서도이다. 도 4 및 도 10을 참조하면, 시스템 온 칩(410)에 포함된 프로세서는 도 9에서 생성된 테스트 프로그램(Test Program)을 실행하여 검증 동작을 수행할 수 있다.
S210 단계에서, 검증 대상 프로세서는 테스트 프로그램(Test Program)에 포함된 명령어(Instruction)를 읽을 수 있다.
S220 단계에서, 검증 대상 프로세서는 S210 단계에서 읽은 명령어(Instruction)가 예외 유발 명령어(Exception-causing Instruction)인지 판단할 수 있다. 판단 결과 예외 유발 명령어(Exception-causing Instruction)가 아닌 경우, S280 단계로 이동하여 검증 대상 프로세서는 S210 단계에서 읽은 명령어(Instruction)를 수행할 수 있다. 판단 결과 예외 유발 명령어(Exception-causing Instruction)인 경우, S230 단계로 이동한다.
예를 들면, 검증 대상 프로세서는 명령어(Instruction)의 프로그램 카운터(Program Counter)를 확인하여 예외 유발 명령어(Exception-causing Instruction)인지 여부를 판단할 수 있다. 검증 대상 프로세서는 명령어(Instruction)에 대응하는 프로그램 카운터(Program Counter)가 예외 처리기(Exception Handler) 내에 있는지 여부를 확인할 수 있다. 명령어(Instruction)에 대응하는 프로그램 카운터(Program Counter)가 예외 처리기(Exception Handler) 내에 있지 않은 경우, 명령어(Instruction)는 일반적인 명령어(Instruction)로 판단될 수 있다. 명령어(Instruction)에 대응하는 프로그램 카운터(Program Counter)가 예외 처리기(Exception Handler) 내에 있는 경우, 명령어(Instruction)는 예외 유발 명령어(Exception-causing Instruction)로 판단될 수 있다.
S230 단계에서, 검증 대상 프로세서는 예외 유발 명령어(Exception-causing Instruction)에 포함된 인수(Argument)들을 검사할 수 있다. 예외 유발 명령어(Exception-causing Instruction)를 수행하면, 검증 대상 프로세서는 테스트 프로그램(Test Program)을 잠시 중단하고, 예외 처리기(Exception Handler)를 실행시킬 수 있다. 예외 처리기(Exception Handler)는 예외 유발 명령어(Exception-causing Instruction)에 포함된 인수(Argument)들을 검사할 수 있다. 인수(Argument)들을 검사하면, 예외 처리기(Exception Handler)는 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 또는 프로세서(Processor) 전환 의도를 확인할 수 있다.
S240 단계에서, 인수(Argument)들의 검사 결과에 따라 검증 대상 프로세서는 문맥(Context)들을 선택적으로 저장할 수 있다. 인수(Argument)들의 검사 결과에 따라 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 또는 프로세서(Processor) 전환 의도가 확인되면, 예외 처리기(Exception Handler)는 고정된 명령어 시퀀스(Fixed Instruction Sequence)를 수행할 수 있다. 고정된 명령어 시퀀스(Fixed Instruction Sequence)를 수행하는 동안, 검증 대상 프로세서는 문맥(Context)들을 선택적으로 저장할 수 있다.
결국, 검증 대상 프로세서는 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 또는 프로세서(Processor) 전환 전의 상태 정보를 저장할 수 있다.
S250 단계에서, 검증 대상 프로세서는 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 또는 프로세서(Processor)를 전환할 수 있다. 예를 들면, 검증 대상 프로세서는 32 비트에서 64 비트로 명령어 세트를 전환할 수 있다. 검증 대상 프로세서는 권한 레벨(PL1-1, 도 6 참조)을 권한 레벨(PL1-2)로 전환할 수 있다. 검증 대상 프로세서는 시스템 온 칩(410) 내의 다른 프로세서로 전환될 수 있다. 결국, 테스트 프로그램(Test Program)의 실행은 변경된 프로세서에서 재개될 수 있다.
S260 단계에서, 검증 대상 프로세서는 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 또는 프로세서(Processor)의 전환 후 문맥(Context)들을 선택적으로 복구할 수 있다. 프로세서 전환 후에는 변경된 프로세서가 검증 대상 프로세서이다.
S270 단계에서, 검증 대상 프로세서는 테스트 프로그램(Test Program) 내에서 예외 유발 명령어(Exception-causing Instruction) 주소의 바로 다음 주소로 돌아갈 수 있다. 따라서, 검증 대상 프로세서는 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 또는 프로세서(Processor)의 변경된 상태에서 예외 유발 명령어(Exception-causing Instruction)의 다음 명령어(Instruction)를 수행할 수 있다.
S290 단계에서, 검증 대상 프로세서는 테스트 프로그램(Test Program) 내에 수행될 다음 명령어(Next Instruction)의 유무를 확인할 수 있다. 수행할 다음 명령어(Next Instruction)가 있는 경우, S210 단계로 이동하여 검증 대상 프로세서는 S210 단계부터 S280 단계까지 반복하여 수행할 수 있다. 수행할 다음 명령어(Next Instruction)가 없는 경우, 검증 대상 프로세서는 테스트 프로그램(Test Program)을 종료할 수 있다.
이상의 검증 방법을 통해서 검증 대상 프로세서는 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 또는 프로세서(Processor)를 변경하여 테스트 프로그램(Test Program)을 실행할 수 있다. 따라서, 검증 대상 프로세서는 다양한 환경에서 검증 동작을 수행할 수 있다.
도 11은 본 발명의 실시 예에 따른 권한 레벨 및 명령어 세트의 전환을 포함하는 테스트 프로그램의 실행 동작을 보여주는 순서도이다. 도 4 및 도 11을 참조하면, 검증 대상 프로세서는 도 9에서 생성된 테스트 프로그램(Test Program)을 실행하여 검증 동작을 수행할 수 있다.
S305 단계에서, 검증 대상 프로세서는 테스트 프로그램(Test Program)에 포함된 명령어(Instruction)를 실행할 수 있다.
S310 단계에서, 검증 대상 프로세서는 S305 단계에서 읽은 명령어(Instruction)가 예외 유발 명령어(Exception-causing Instruction)인지 판단할 수 있다. 판단 결과 예외 유발 명령어(Exception-causing Instruction)가 아닌 경우, S315 단계로 이동하여 검증 대상 프로세서는 S305 단계에서 읽은 명령어(Instruction)를 수행할 수 있다. 판단 결과 예외 유발 명령어(Exception-causing Instruction)인 경우, S320 단계로 이동한다.
예를 들면, 검증 대상 프로세서는 명령어(Instruction)의 프로그램 카운터(Program Counter)를 확인하여 예외 유발 명령어(Exception-causing Instruction)인지 여부를 판단할 수 있다. 검증 대상 프로세서는 명령어(Instruction)에 대응하는 프로그램 카운터(Program Counter)가 예외 처리기(Exception Handler) 내에 있는지 여부를 확인할 수 있다. 명령어(Instruction)에 대응하는 프로그램 카운터(Program Counter)가 예외 처리기(Exception Handler) 내에 있지 않은 경우, 명령어(Instruction)는 일반적인 명령어(Instruction)로 판단될 수 있다. 명령어(Instruction)에 대응하는 프로그램 카운터(Program Counter)가 예외 처리기(Exception Handler) 내에 있는 경우, 명령어(Instruction)는 예외 유발 명령어(Exception-causing Instruction)로 판단될 수 있다.
S320 단계에서, 검증 대상 프로세서는 예외 유발 명령어(Exception-causing Instruction)에 포함된 인수(Argument)들을 검사할 수 있다. 예외 유발 명령어(Exception-causing Instruction)를 수행하면, 검증 대상 프로세서는 테스트 프로그램(Test Program)을 잠시 중단하고, 예외 처리기(Exception Handler)를 실행시킬 수 있다. 예외 처리기(Exception Handler)는 예외 유발 명령어(Exception-causing Instruction)에 포함된 인수(Argument)들을 검사할 수 있다. 인수(Argument)들을 검사하면, 예외 처리기(Exception Handler)는 명령어 세트(Instruction Set) 또는 권한 레벨(Privilege Level) 전환 의도를 확인할 수 있다.
S325 단계에서, 예외 처리기(Exception Handler)는 명령어 세트(Instruction Set) 및 권한 레벨(Privilege Level) 모두의 전환 의도를 확인할 수 있다. 명령어 세트(Instruction Set) 및 권한 레벨(Privilege Level)이 모두 전환되는 것이 아닌 경우, S340 단계로 이동한다. 명령어 세트(Instruction Set) 및 권한 레벨(Privilege Level)이 모두 전환되는 경우, S330 단계로 이동한다.
S330 단계에서, 인수(Argument)들의 검사 결과에 따라 검증 대상 프로세서는 문맥(Context)들을 선택적으로 저장할 수 있다. 인수(Argument)들의 검사 결과에 따라 명령어 세트(Instruction Set) 및 권한 레벨(Privilege Level) 모두의 전환 의도가 확인되면, 예외 처리기(Exception Handler)는 고정된 명령어 시퀀스(Fixed Instruction Sequence)를 수행할 수 있다. 고정된 명령어 시퀀스(Fixed Instruction Sequence)를 수행하는 동안, 검증 대상 프로세서는 명령어 세트(Instruction Set) 및 권한 레벨(Privilege Level) 모두에 대응하는 문맥(Context)을 선택적으로 저장할 수 있다.
S335 단계에서, 검증 대상 프로세서는 명령어 세트(Instruction Set) 및 권한 레벨(Privilege Level) 모두를 전환할 수 있다.
S340 단계에서, 예외 처리기(Exception Handler)는 명령어 세트(Instruction Set)만 전환되는지 여부를 확인할 수 있다. 명령어 세트(Instruction Set)의 전환 없이 권한 레벨(Privilege Level)만 전환되는 경우, S355 단계로 이동한다. 권한 레벨(Privilege Level)의 전환 없이 명령어 세트(Instruction Set)만 전환되는 경우, S345 단계로 이동한다.
S345 단계에서, 인수(Argument)들의 검사 결과에 따라 검증 대상 프로세서는 문맥(Context)들을 선택적으로 저장할 수 있다. 인수(Argument)들의 검사 결과에 따라 명령어 세트(Instruction Set)만의 전환 의도가 확인되면, 예외 처리기(Exception Handler)는 고정된 명령어 시퀀스(Fixed Instruction Sequence)를 수행할 수 있다. 고정된 명령어 시퀀스(Fixed Instruction Sequence)를 수행하는 동안, 검증 대상 프로세서는 명령어 세트(Instruction Set)에 대응하는 문맥(Context)을 선택적으로 저장할 수 있다.
S350 단계에서, 검증 대상 프로세서는 명령어 세트(Instruction Set)만을 전환할 수 있다.
S355 단계에서, 인수(Argument)들의 검사 결과에 따라 검증 대상 프로세서는 문맥(Context)들을 선택적으로 저장할 수 있다. 인수(Argument)들의 검사 결과에 따라 권한 레벨(Privilege Level)만의 전환 의도가 확인되면, 예외 처리기(Exception Handler)는 고정된 명령어 시퀀스(Fixed Instruction Sequence)를 수행할 수 있다. 고정된 명령어 시퀀스(Fixed Instruction Sequence)를 수행하는 동안, 검증 대상 프로세서는 권한 레벨(Privilege Level)에 대응하는 문맥(Context)을 선택적으로 저장할 수 있다.
S360 단계에서, 검증 대상 프로세서는 권한 레벨(Privilege Level)만을 전환할 수 있다.
S365 단계에서, 예외 처리기(Exception Handler)는 명령어 세트(Instruction Set) 또는 권한 레벨(Privilege Level)이 전환된 후 문맥(Context)을 선택적으로 복구할 수 있다.
S370 단계에서, 검증 대상 프로세서는 테스트 프로그램(Test Program) 내에서 예외 유발 명령어(Exception-causing Instruction) 주소의 바로 다음 주소로 돌아갈 수 있다. 따라서, 검증 대상 프로세서는 명령어 세트(Instruction Set) 또는 권한 레벨(Privilege Level)의 변경된 상태에서 예외 유발 명령어(Exception-causing Instruction)의 다음 명령어(Instruction)를 수행할 수 있다.
S375 단계에서, 검증 대상 프로세서는 테스트 프로그램(Test Program) 내에 수행될 다음 명령어(Next Instruction)가 있는지 확인할 수 있다. 수행할 다음 명령어(Next Instruction)가 있는 경우, S305 단계로 이동하여 검증 대상 프로세서는 S305 단계부터 S370 단계까지 반복하여 수행할 수 있다. 수행할 다음 명령어(Instruction)가 없는 경우, 검증 대상 프로세서는 테스트 프로그램(Test Program)을 종료할 수 있다.
이상의 검증 방법을 통해서 검증 대상 프로세서는 명령어 세트(Instruction Set) 및 권한 레벨(Privilege Level)을 동시에 변경하여 테스트 프로그램(Test Program)을 실행할 수 있다. 하지만, 검증 대상 프로세서는 이것에 국한되지 않는다. 검증 대상 프로세서는 명령어 세트(Instruction Set), 권한 레벨(Privilege Level) 및 프로세서(Processor)를 동시에 변경하여 테스트 프로그램(Test Program)을 실행할 수 있다.
도 12 및 도 13은 본 발명에 따른 프로세서 이주(Processor Migration)를 포함하는 검증 방법을 보여주는 순서도이다. 시스템 온 칩(410)은 복수의 프로세서(Processor)들을 포함할 수 있다. 테스트 프로그램(Test Program)은 각각의 프로세서(Processor)에서 실행될 수 있다. 프로세서 이주(Processor Migration)는 착수 프로세서(Initiating Processor)와 목표 프로세서(Victim Processor) 사이에 발생할 수 있다. 착수 프로세서(Initiating Processor)는 현재 테스트 프로그램(Test Program)을 실행 중인 프로세서(Processor)이다. 목표 프로세서(Victim Processor)는 프로세서 전환 후 테스트 프로그램(Test Program)을 실행하게 될 프로세서(Processor)이다.
도 12는 프로세서 이주(Processor Migration) 시 착수 프로세서(Initiating Processor)의 동작을 보여주는 순서도이다.
S410 단계에서, 테스트 프로그램(Test Program)을 실행하는 동안, 착수 프로세서(Initiating Processor)는 예외 유발 명령어(Exception-causing Instruction)를 수행할 수 있다. 예외 유발 명령어(Exception-causing Instruction)를 수행하면, 착수 프로세서(Initiating Processor)는 테스트 프로그램(Test Program)을 잠시 중단하고, 예외 처리기(Exception Handler)를 실행시킬 수 있다.
S420 단계에서, 예외 처리기(Exception Handler)는 예외 유발 명령어(Exception-causing Instruction)에 포함된 인수(Argument)들을 검사할 수 있다. 인수(Argument)들을 검사하면, 프로세서 이주(Processor Migration) 여부가 확인될 수 있다.
S430 단계에서, 프로세서 이주(Processor Migration) 여부가 확인되면, 예외 처리기(Exception Handler)는 메모리 장치(420)의 할당된 영역에 착수 프로세서(Initiating Processor)의 문맥(Context)을 저장할 수 있다.
S440 단계에서, 착수 프로세서(Initiating Processor)는 목표 프로세서(Victim Processor)로 인터럽트(Interrupt)를 보낼 수 있다. 프로세서 이주(Processor Migration) 동작 시, 목표 프로세서(Victim Processor)는 슬립-모드(Sleep-mode) 상태일 것이다. 따라서, 착수 프로세서(Initiating Processor)는 인터럽트(Interrupt)를 통해 목표 프로세서(Victim Processor)를 깨울 수 있다.
S450 단계에서, 착수 프로세서(Initiating Core)는 슬립-모드(Sleep-mode)로 들어갈 수 있다.
도 13은 프로세서 이주(Processor Migration) 시 목표 프로세서(Victim Processor)의 동작을 보여주는 순서도이다.
S510 단계에서, 목표 프로세서(Victim Processor)는 착수 프로세서(Initiating Processor)로부터 인터럽트(Interrupt)를 수신할 수 있다. 인터럽트(Interrupt)를 수신하면, 목표 프로세서(Victim Processor)는 슬립-모드(Sleep-mode)에서 깨어날 수 있다.
S520 단계에서, 목표 프로세서(Victim Processor)는 도 12에서 저장된 착수 프로세서(Initiating Processor)의 문맥(Context)을 복구할 수 있다. 목표 프로세서(Victim Processor)는 복구된 착수 프로세서(Initiating Processor)의 문맥(Context)에 따라 테스트 프로그램(Test Program) 내의 예외 유발 명령어(Exception-causing Instruction)의 다음 명령어(Instruction)부터 수행할 수 있다.
S530 단계에서, 목표 프로세서(Victim Processor)는 도 8에서 설명된 맵핑 테이블(Mapping Table)을 업데이트할 수 있다. 따라서, 테스트 프로그램(Test Program)은 프로세서를 전환하여 수행될 수 있다.
도 14 및 도 15는 본 발명에 따른 프로세서 교환(Processor Swap)을 포함하는 검증 방법을 보여주는 순서도이다. 시스템 온 칩(410)은 복수의 프로세서(Processor)들을 포함할 수 있다. 테스트 프로그램(Test Program)은 각각의 프로세서(Processor)에서 실행될 수 있다. 프로세서 교환(Processor Swap)는 착수 프로세서(Initiating Processor)와 목표 프로세서(Victim Processor) 사이에 발생할 수 있다. 착수 프로세서(Initiating Processor)는 테스트 프로그램(Test Program)을 교환할 목표 프로세서(Victim Processor)를 지정하는 프로세서(Processor)이다. 목표 프로세서(Victim Processor)는 착수 프로세서(Initiating Processor)와 테스트 프로그램(Test Program)을 교환하게 될 프로세서(Processor)이다.
도 14는 프로세서 교환(Processor Swap) 시 착수 프로세서(Initiating Processor)의 동작을 보여주는 순서도이다.
S610 단계에서, 테스트 프로그램(Test Program)을 실행하는 동안, 착수 프로세서(Initiating Processor)는 예외 유발 명령어(Exception-causing Instruction)를 수행할 수 있다. 예외 유발 명령어(Exception-causing Instruction)를 수행하면, 착수 프로세서(Initiating Processor)는 테스트 프로그램(Test Program)을 잠시 중단하고, 예외 처리기(Exception Handler)를 실행시킬 수 있다.
S620 단계에서, 예외 처리기(Exception Handler)는 예외 유발 명령어(Exception-causing Instruction)에 포함된 인수(Argument)들을 검사할 수 있다. 인수(Argument)들을 검사하면, 예외 처리기(Exception Handler)는 프로세서 교환(Processor Swap) 의도를 확인할 수 있다.
S630 단계에서, 프로세서 교환(Processor Swap) 의도가 확인되면, 예외 처리기(Exception Handler)는 메모리 장치(420)의 할당된 영역에 착수 프로세서(Initiating Processor)의 문맥(Context)을 저장할 수 있다.
S640 단계에서, 착수 프로세서(Initiating Processor)는 목표 프로세서(Victim Processor)로 제 1 인터럽트(First Interrupt)를 보낼 수 있다. 프로세서 교환(Processor Swap) 동작 시, 목표 프로세서(Victim Processor)는 다른 테스트 프로그램(Test Program)을 실행 중일 것이다. 따라서, 착수 프로세서(Initiating Processor)는 제 1 인터럽트(First Interrupt)를 통해 목표 프로세서(Victim Processor)로 프로세서 교환(Processor Swap) 의사를 전달할 수 있다.
S650 단계에서, 착수 프로세서(Initiating Processor)는 목표 프로세서(Victim Processor)로부터 제 2 인터럽트(Second Interrupt)를 수신할 수 있다. 예를 들면, S640 단계에서 제 1 인터럽트(First Interrupt)를 수신한 목표 프로세서(Victim Processor)는 자신의 문맥(Context)을 메모리 장치(420)의 할당된 영역에 저장할 수 있다. 자신의 문맥(Context)을 저장한 후 목표 프로세서(Victim Processor)는 제 2 인터럽트(Second Interrupt)를 착수 프로세서(Initiating Processor)로 전송할 수 있다. 착수 프로세서(Initiating Processor)는 제 2 인터럽트(Second Interrupt)를 수신할 때까지 대기할 수 있다.
S660 단계에서, 착수 프로세서(Initiating Processor)는 메모리 장치(420)에 저장된 목표 프로세서(Victim Processor)의 문맥(Context)을 복구할 수 있다. 그 후 착수 프로세서(Initiating Processor)는 목표 프로세서(Victim Processor)의 문맥(Context)에 따라 목표 프로세서(Victim Processor)에 의해 실행되던 테스트 프로그램(Test Program)을 실행할 수 있다.
도 15는 프로세서 교환(Processor Swap) 시 목표 프로세서(Victim Processor)의 동작을 보여주는 순서도이다.
S710 단계에서, 목표 프로세서(Victim Processor)는 착수 프로세서(Initiating Processor)로부터 제 1 인터럽트(First Interrupt)를 수신할 수 있다.
S720 단계에서, 목표 프로세서(Victim Processor)는 제 1 인터럽트(First Interrupt)에 따라 목표 프로세서(Victim Processor)의 문맥(Context)을 메모리 장치(420)의 할당된 영역에 저장할 수 있다.
S730 단계에서, 목표 프로세서(Victim Processor)는 제 2 인터럽트(Second Interrupt)를 착수 프로세서(Initiating Processor)로 전송할 수 있다.
S740 단계에서, 목표 프로세서(Victim Processor)는 도 14에서 저장된 착수 프로세서(Initiating Processor)의 문맥(Context)을 복구할 수 있다. 목표 프로세서(Victim Processor)는 복구된 착수 프로세서(Initiating Processor)의 문맥(Context)에 따라 착수 프로세서(Initiating Processor)에 의해 실행되던 테스트 프로그램(Test Program) 내의 예외 유발 명령어(Exception-causing Instruction)의 다음 명령어(Instruction)부터 수행할 수 있다.
S750 단계에서, 목표 프로세서(Victim Processor)는 도 8에서 설명된 맵핑 테이블(Mapping Table)을 업데이트할 수 있다. 따라서, 착수 및 목표 프로세서(Initiating Processor, Victim Processor)는 각자가 실행하던 테스트 프로그램(Test Program)을 교환하여 수행할 수 있다. 즉, 착수 프로세서(Initiating Processor)에 의해 실행되던 테스트 프로그램(Test Program)은 프로세서를 전환하여 수행될 수 있다.
도 16은 시스템 온 칩을 검증하기 위한 본 발명에 따른 구성의 다른 실시 예를 보여주는 블록도이다. 도 16을 참조하면, 호스트 컴퓨팅 장치(500)는 테스트 프로그램(Test Program)을 생성하여 검증 대상 컴퓨팅 장치(600)로 전달할 수 있다. 호스트 컴퓨팅 장치(500)는 호스트 시스템 온 칩(510) 및 호스트 메모리 장치(520)를 포함할 수 있다. 검증 대상 컴퓨팅 장치(600)는 검증 대상 시스템 온 칩(610) 및 검증 대상 메모리 장치(620)를 포함할 수 있다. 호스트 및 검증 대상 시스템 온 칩(510, 610)은 도 1의 시스템 온 칩(110)과 동일한 구성을 포함할 수 있다.
호스트 메모리 장치(520)는 테스트 템플릿(Test Template), 참조 모델(Reference Model) 및 테스트 생성기(Test Generator)를 저장할 수 있다. 참조 모델(Reference Model) 및 테스트 생성기(Test Generator)는 일종의 프로그램일 수 있다. 테스트 생성기(Test Generator)는 테스트 템플릿(Test Template)을 이용하여 자동으로 테스트 프로그램(Test Program)을 생성할 수 있다. 테스트 프로그램(Test Program) 생성 시 생성된 명령어(Instruction)은 참조 모델(Reference Model)에 주입(Feed)될 수 있다.
예를 들면, 참조 모델(Reference Model)은 검증 대상 시스템 온 칩(610)에 포함된 프로세서를 참조하여 구성될 수 있다. 예를 들면, 참조 모델(Reference Model)은 검증 대상 시스템 온 칩(610)에 포함된 프로세서를 모델링(Modeling)한 소프트웨어일 수 있다. 참조 모델(Reference Model)은 테스트 프로그램(Test Program)의 각 명령어의 수행에 의한 검증 대상 시스템 온 칩(610)에 포함된 프로세서의 상태 변화 정보를 제공할 수 있다. 즉, 참조 모델(Reference Model)은 주입(Feed)된 명령어(Instruction)에 따라 검증 대상 시스템 온 칩(610)에 포함된 프로세서의 상태 변화를 추적한 모델링 결과(Modeling Result)를 출력할 수 있다. 참조 모델(Reference Model)은 주입(Feed)된 명령어(Instruction)에 따른 모델링 결과(Modeling Result)를 테스트 생성기(Test Generator)로 전송할 수 있다. 테스트 생성기(Test Generator)는 참조 모델(Reference Model)로부터 전송된 모델링 결과(Modeling Result)를 참조하여 다음 명령어(Next Instruction)를 생성할 수 있다. 생성된 테스트 프로그램(Test Program)은 검증 대상 컴퓨팅 장치(600)로 전달될 수 있다.
또한, 테스트 생성기(Test Generator)의 제 3 하위 구성요소(3rd Sub-component)는 테스트 프로그램(Test Program)의 명령어(Instruction)들 각각을 생성한 후 참조 모델(Reference Model)의 상태를 갱신해줄 수 있다. 따라서, 테스트 생성기(Test Generator)는 다양한 테스트 환경을 조성할 수 있다.
전달된 테스트 프로그램(Test Program)은 검증 대상 컴퓨팅 장치(600)의 메모리 장치(620)에 저장될 수 있다. 테스트 프로그램(Test Program)은 검증 대상 시스템 온 칩(610)에 의해 수행될 수 있다. 검증 대상 시스템 온 칩(610)은 테스트 프로그램(Test Program)을 이용하여 검증 동작을 수행할 수 있다. 테스트 프로그램(Test Program)의 실행 방법은 도 4에서 설명된 검증 동작 방법과 동일 또는 유사하므로 생략하도록 한다.
도 17은 도 16의 호스트 시스템 온 칩에서 테스트 프로그램을 생성하는 방법을 보여주는 순서도이다. 도 16 및 도 17을 참조하면, 호스트 시스템 온 칩(510)에 포함된 프로세서는 참조 모델(Reference Model)을 이용하여 테스트 프로그램(Test Program)을 생성할 수 있다.
S805 단계에서, 테스트 생성기(Test Generator)는 테스트 템플릿(Test Template)에 포함된 명령문(Instruction Statement)을 읽을 수 있다.
S810 단계에서, 테스트 생성기(Test Generator)의 제 1 하위 구성요소(1st Sub-component)는 특별한 조건의 유무를 검출할 수 있다.
S815 단계에서, S810 단계의 검출 결과 특별한 조건이 없는 경우, 테스트 생성기(Test Generator)는 명령문(Instruction Statement)에 대응하는 명령어(Instruction)를 생성할 수 있다.
S820 단계에서, 테스트 생성기(Test Generator)는 생성된 명령어(Instruction)를 참조 모델(Reference Model)에 주입(Feed)할 수 있다.
S825 단계에서, S810 단계의 검출 결과 특별한 조건이 검출된 경우, 테스트 생성기(Test Generator)는 예외 유발 명령어(Exception-causing Instruction)를 생성할 수 있다.
S830 단계에서, 테스트 생성기(Test Generator)는 예외 유발 명령어(Exception-causing Instruction)에 포함된 프로세서 전환 의도를 검출할 수 있다. 검출 결과 프로세서 전환 의도가 있는 경우, S835 단계로 이동한다. 검출 결과 프로세서 전환 의도가 없는 경우, S840 단계로 이동한다.
S835 단계에서, 검출 결과 프로세서 전환 의도가 있는 경우, 테스트 생성기(Test Generator)는 비동작 명령어(No Operation Instruction, 이하 NOP Instruction)를 참조 모델(Reference Model)에 주입(Feed)할 수 있다. 비동작 명령어(NOP Instruction)는 참조 모델(Reference Model)에서 동작 상태의 변화없이 다음 명령어가 생성될 위치만 변동시킬 수 있다.
S840 단계에서, 검출 결과 프로세서 전환 의도가 없는 경우, 테스트 생성기(Test Generator)는 예외 유발 명령어(Exception-causing Instruction) 자체를 참조 모델(Reference Model)에 주입(Feed)할 수 있다.
S845 단계에서, 테스트 생성기(Test Generator)는 예외 처리기(Exception Handler)에 포함된 고정된 명령어 시퀀스(Fixed Instruction Sequence)를 참조 모델(Reference Model)에 주입(Feed)할 수 있다.
S850 단계에서, 테스트 생성기(Test Generator)는 S820, S835 또는 S845 단계의 명령어 주입(Instruction Feed)에 따른 참조 모델(Reference Model)의 상태 변화를 획득할 수 있다. 테스트 생성기(Test Generator)는 획득된 참조 모델(Reference Model)의 상태 변화를 다음 명령어(Next Instruction) 생성에 반영할 수 있다.
S855 단계에서, 테스트 생성기(Test Generator)는 테스트 템플릿(Test Template) 내에 다음에 읽혀질 명령문(Instruction Statement)의 유무를 확인할 수 있다. 더 이상 읽을 명령문(Instruction Statement)이 없는 경우, 테스트 생성기(Test Generator)는 테스트 프로그램(Test Program) 생성을 종료한다. 테스트 템플릿(Test Template) 내에 다음에 읽혀질 명령문(Instruction Statement)이 있는 경우, 다시 S805 단계로 돌아가서 테스트 생성기(Test Generator)는 다음의 명령문(Instruction Statement)을 읽을 수 있다.
이상의 테스트 프로그램(Test Program) 생성 방법에 의해 호스트 시스템 온 칩(510)에 포함된 프로세서는 참조 모델(Reference Model)을 이용하여 더욱 다양한 테스트 환경이 반영된 테스트 프로그램(Test Program)을 생성할 수 있다.
상기 메모리들의 칩과 시스템 온 칩은 각기 혹은 함께 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 칩은 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등의 패키지로서 패키지화될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100, 200, 300, 400, 500, 600 : 컴퓨팅 장치
110, 210, 310, 410, 510, 610 : 시스템 온 칩
120, 220, 320, 420, 520, 620 : 메모리 장치

Claims (20)

  1. 시스템 온 칩의 검증 방법에 있어서:
    테스트 생성기 및 예외 처리기를 제공받는 단계;
    테스트 템플릿에 기초하여 상기 테스트 생성기에 의해 예외 유발 명령어를 포함하는 테스트 프로그램을 생성하는 단계;
    상기 테스트 프로그램의 실행에 따라 제 1 동작 상태에서 제 1 명령어를 수행하는 단계;
    상기 테스트 프로그램을 실행하는 동안 상기 예외 유발 명령어를 수행하는 경우, 상기 테스트 프로그램의 실행을 중단하고 상기 예외 처리기에 포함된 고정된 명령어 시퀀스를 수행하는 단계; 그리고
    상기 고정된 명령어 시퀀스를 수행한 후 변경된 제 2 동작 상태에서 상기 예외 유발 명령어 주소의 바로 다음 주소에 위치한 제 2 명령어부터 상기 테스트 프로그램의 실행을 재개하는 단계를 포함하는 검증 방법.
  2. 제 1 항에 있어서,
    상기 제 1 동작 상태로부터 상기 제 2 동작 상태로의 변경에 따라 상기 제 2 명령어는 상기 제 1 명령어와는 다른 프로세서에서 수행되거나, 상기 제 1 명령어와는 다른 권한 레벨에서 수행되거나, 또는 상기 제 1 명령어와는 다른 명령어 세트를 사용하여 수행되는 검증 방법.
  3. 제 1 항에 있어서,
    상기 테스트 프로그램을 생성하는 단계는:
    상기 테스트 템플릿에 포함된 적어도 하나의 제 1 명령문을 읽는 단계;
    상기 제 1 동작 상태에서 수행되도록 상기 적어도 하나의 제 1 명령문에 대응하는 상기 제 1 명령어를 생성하는 단계;
    상기 테스트 템플릿에 포함된 상태 변환 명령문을 읽는 단계;
    상기 상태 변환 명령문에 대응하여 동작 상태 전환 의도를 포함하는 상기 예외 유발 명령어를 생성하는 단계;
    상기 상태 변환 명령문의 다음에 위치하는 적어도 하나의 제 2 명령문을 읽는 단계; 그리고
    상기 예외 유발 명령어 주소의 바로 다음 주소에 상기 제 2 동작 상태에서 수행되도록 상기 적어도 하나의 제 2 명령문에 대응하는 상기 제 2 명령어를 생성하는 단계를 포함하는 검증 방법.
  4. 적어도 두 명령어 세트를 지원하는 프로세서를 포함하는 시스템 온 칩의 검증 방법에 있어서:
    테스트 생성기 및 예외 처리기를 제공받는 단계;
    테스트 템플릿에 기초하여 상기 테스트 생성기에 의해 예외 유발 명령어를 포함하는 테스트 프로그램을 생성하는 단계;
    상기 테스트 프로그램의 실행에 따라 상기 적어도 두 명령어 세트 중 제 1 명령어 세트에 기초하여 생성된 제 1 명령어를 수행하는 단계;
    상기 테스트 프로그램을 실행하는 동안 상기 예외 유발 명령어를 수행하는 경우, 상기 테스트 프로그램의 실행을 중단하고 상기 예외 처리기에 포함된 고정된 명령어 시퀀스를 수행하는 단계; 그리고
    상기 고정된 명령어 시퀀스를 수행한 후 상기 예외 유발 명령어 주소의 바로 다음 주소에 위치한 제 2 명령어부터 상기 테스트 프로그램의 실행을 재개하는 단계를 포함하되,
    상기 제 2 명령어는 상기 적어도 두 명령어 세트 중 제 2 명령어 세트에 기초하여 생성되는 검증 방법.
  5. 제 4 항에 있어서,
    상기 테스트 프로그램을 생성하는 단계는:
    상기 테스트 템플릿에 포함된 적어도 하나의 제 1 명령문을 읽는 단계;
    상기 제 1 명령어 세트에 기초하여 상기 적어도 하나의 제 1 명령문에 대응하는 상기 제 1 명령어를 생성하는 단계;
    상기 테스트 템플릿에 포함된 상태 변환 명령문을 읽는 단계;
    상기 상태 변환 명령문에 대응하여 명령어 세트 전환 의도를 포함하는 상기 예외 유발 명령어를 생성하는 단계;
    상기 상태 변환 명령문의 다음에 위치한 적어도 하나의 제 2 명령문을 읽는 단계;
    상기 예외 유발 명령어 주소의 바로 다음 주소에 상기 제 2 명령어 세트에 기초하여 상기 적어도 하나의 제 2 명령문에 대응하는 상기 제 2 명령어를 생성하는 단계를 포함하는 검증 방법.
  6. 제 5 항에 있어서,
    상기 상태 변환 명령문은 상기 명령어 세트 전환 의도를 포함하는 검증 방법.
  7. 제 6 항에 있어서,
    상기 명령어 세트 전환 의도는 상기 테스트 생성기의 제 1 하위 구성요소에 의해 검출되는 검증 방법.
  8. 제 7 항에 있어서,
    상기 제 1 및 제 2 명령어의 내용은 상기 테스트 생성기의 제 2 하위 구성요소에 의해 결정되는 검증 방법.
  9. 제 5 항에 있어서,
    상기 명령어 세트 전환 의도는 상기 예외 유발 명령어에 포함된 인수들을 통하여 검출되는 검증 방법.
  10. 제 5 항에 있어서,
    상기 제 1 명령어, 상기 제 2 명령어, 또는 상기 예외 유발 명령어를 참조 모델에 주입하여 모델링 결과를 획득하는 단계를 더 포함하되,
    상기 모델링 결과는 상기 제 1 명령어, 상기 제 2 명령어 또는 상기 예외 유발 명령어의 수행에 따른 검증 대상 프로세서의 상태 변화 정보를 포함하는 검증 방법.
  11. 제 10 항에 있어서,
    상기 모델링 결과를 획득하는 단계는:
    상기 검증 대상 프로세서가 적어도 두 프로세서를 포함하는 경우, 상기 예외 유발 명령어에 포함된 프로세서 전환 의도를 검출하는 단계;
    상기 프로세서 전환 의도가 검출된 경우, 상기 예외 유발 명령어의 주입없이 상기 참조 모델에 비동작 명령어를 주입하는 단계를 포함하되,
    상기 비동작 명령어는 상기 참조 모델의 상태 변화없이 다음에 생성될 명령어의 위치를 설정하는 검증 방법.
  12. 제 10 항에 있어서,
    상기 테스트 프로그램을 생성하는 단계는 상기 검증 대상 프로세서를 불포함하는 호스트 시스템 온 칩에서 수행되고,
    상기 제 1 명령어를 수행하는 단계, 상기 고정된 명령어 시퀀스를 수행하는 단계, 및 상기 테스트 프로그램의 실행을 재개하는 단계는 상기 검증 대상 프로세서를 포함하는 시스템 온 칩에서 수행되는 검증 방법.
  13. 적어도 두 권한 레벨을 지원하는 프로세서를 포함하는 시스템 온 칩의 검증 방법에 있어서:
    테스트 생성기 및 예외 처리기를 제공받는 단계;
    테스트 템플릿에 기초하여 상기 테스트 생성기에 의해 예외 유발 명령어를 포함하는 테스트 프로그램을 생성하는 단계;
    상기 테스트 프로그램의 실행에 따라 상기 적어도 두 권한 레벨 중 제 1 권한 레벨에서 제 1 명령어를 수행하는 단계;
    상기 테스트 프로그램을 실행하는 동안 상기 예외 유발 명령어를 수행하는 경우, 상기 테스트 프로그램의 실행을 중단하고 상기 예외 처리기에 포함된 고정된 명령어 시퀀스를 수행하는 단계; 그리고
    상기 고정된 명령어 시퀀스를 수행한 후 상기 예외 유발 명령어 주소의 바로 다음 주소에 위치한 제 2 명령어부터 상기 테스트 프로그램의 실행을 재개하는 단계를 포함하되,
    상기 제 2 명령어는 상기 적어도 두 권한 레벨 중 제 2 권한 레벨에서 수행되는 검증 방법.
  14. 제 13 항에 있어서,
    상기 테스트 프로그램을 생성하는 단계는:
    상기 테스트 템플릿에 포함된 적어도 하나의 제 1 명령문을 읽는 단계;
    상기 제 1 권한 레벨에서 수행되도록 상기 적어도 하나의 제 1 명령문에 대응하는 상기 제 1 명령어를 생성하는 단계;
    상기 테스트 템플릿에 포함된 상태 변환 명령문을 읽는 단계;
    상기 상태 변환 명령문에 대응하여 권한 레벨 전환 의도를 포함하는 상기 예외 유발 명령어를 생성하는 단계;
    상기 테스트 템플릿 내에서 상기 상태 변환 명령문의 다음에 위치한 적어도 하나의 제 2 명령문을 읽는 단계; 그리고
    상기 예외 유발 명령어 주소의 바로 다음 주소에 상기 제 2 권한 레벨에서 수행되도록 상기 적어도 하나의 제 2 명령문에 대응하는 상기 제 2 명령어를 생성하는 단계를 포함하는 검증 방법.
  15. 제 13 항에 있어서,
    상기 고정된 명령어 시퀀스를 수행하는 단계는:
    상기 제 1 권한 레벨에서 동작하는 상기 시스템 온 칩의 제 1 상태 정보를 저장하는 단계;
    상기 고정된 명령어 시퀀스를 수행하는 동안 상기 제 2 권한 레벨에서 동작하는 상기 시스템 온 칩의 제 2 상태 정보를 복구하는 단계를 포함하는 검증 방법.
  16. 적어도 두 프로세서를 포함하는 시스템 온 칩의 검증 방법에 있어서:
    테스트 생성기 및 예외 처리기를 제공받는 단계;
    테스트 템플릿에 기초하여 상기 테스트 생성기에 의해 예외 유발 명령어를 포함하는 테스트 프로그램을 생성하는 단계;
    상기 테스트 프로그램의 실행에 따라 상기 적어도 두 프로세서 중 제 1 프로세서에서 제 1 명령어를 수행하는 단계;
    상기 테스트 프로그램을 실행하는 동안 상기 예외 유발 명령어를 수행하는 경우, 상기 테스트 프로그램의 실행을 중단하고 상기 예외 처리기에 포함된 고정된 명령어 시퀀스를 수행하는 단계; 그리고
    상기 고정된 명령어 시퀀스를 수행한 후 상기 예외 유발 명령어 주소의 바로 다음 주소에 위치한 제 2 명령어부터 상기 테스트 프로그램의 실행을 재개하는 단계를 포함하되,
    상기 제 2 명령어는 상기 적어도 두 프로세서 중 제 2 프로세서에서 수행되는 검증 방법.
  17. 제 16 항에 있어서,
    상기 테스트 프로그램을 생성하는 단계는:
    상기 테스트 템플릿에 포함된 적어도 하나의 제 1 명령문을 읽는 단계;
    상기 제 1 프로세서에서 수행되도록 상기 적어도 하나의 제 1 명령문에 대응하는 상기 제 1 명령어를 생성하는 단계;
    상기 테스트 템플릿에 포함된 상태 변환 명령문을 읽는 단계;
    상기 상태 변환 명령문에 대응하여 프로세서 변환 의도를 포함하는 상기 예외 유발 명령어를 생성하는 단계;
    상기 테스트 템플릿 내에서 상기 상태 변환 명령문의 다음에 위치한 적어도 하나의 제 2 명령문을 읽는 단계; 그리고
    상기 예외 유발 명령어 주소의 바로 다음 주소에 상기 제 2 프로세서에서 수행되도록 상기 적어도 하나의 제 2 명령문에 대응하는 상기 제 2 명령어를 생성하는 단계를 포함하는 검증 방법.
  18. 제 16 항에 있어서,
    상기 고정된 명령어 시퀀스를 수행하는 단계는:
    상기 제 1 프로세서에 대응하는 제 1 문맥을 저장하는 단계; 그리고
    상기 제 2 명령어를 수행하기 전에 상기 제 1 문맥을 상기 제 2 프로세서에서 복구하는 단계를 포함하되,
    상기 예외 유발 명령어는 상기 제 1 프로세서에서 수행되는 검증 방법.
  19. 제 16 항에 있어서,
    상기 제 1 명령어를 수행하기 전에 제 1 가상 프로세서 아이디를 상기 제 1 물리 프로세서 아이디에 맵핑하는 단계; 그리고
    상기 고정된 명령어 시퀀스를 수행하는 동안 상기 제 1 가상 프로세서 아이디를 상기 제 2 물리 프로세서 아이디에 맵핑하는 단계를 더 포함하되,
    상기 제 1 및 제 2 명령어는 상기 제 1 가상 프로세서 아이디를 기준으로 수행되는 검증 방법.
  20. 테스트 프로그램을 생성하기 위한 제 1 데이터, 테스트 생성기 및 예외 처리기를 저장하는 메모리 장치; 그리고
    상기 제 1 데이터에 따라 상기 테스트 생성기를 사용하여 상기 테스트 프로그램을 생성하는 적어도 두 프로세서들을 포함하되,
    상기 테스트 프로그램 생성 시, 상기 테스트 생성기는 상기 제 1 데이터에서 프로세서 변환 의도가 검출된 경우 제 2 데이터를 생성하고,
    상기 테스트 프로그램 실행 시, 상기 적어도 두 프로세서들은 상기 제 2 데이터에 따라 상기 테스트 프로그램의 실행을 중단하고, 상기 예외 처리기는 상기 제 2 데이터에 따라 고정된 명령어 시퀀스를 수행하여 상기 적어도 두 프로세서들 사이의 변경이 이루어진 후 테스트 프로그램의 실행을 재개시키는 컴퓨팅 시스템.
KR1020140091962A 2014-04-09 2014-07-21 시스템 온 칩 및 그것의 검증 방법 KR102147172B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
TW104111119A TWI643064B (zh) 2014-04-09 2015-04-07 系統單晶片及其驗證方法
US14/680,337 US9448917B2 (en) 2014-04-09 2015-04-07 System on chip and verification method thereof
JP2015079540A JP2015201208A (ja) 2014-04-09 2015-04-08 システムオンチップ及びその検証方法
CN201510167012.8A CN104978249B (zh) 2014-04-09 2015-04-09 系统芯片及其验证方法
US15/257,063 US9990205B2 (en) 2014-04-09 2016-09-06 System on chip and verification method thereof

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201461977223P 2014-04-09 2014-04-09
US61/977,223 2014-04-09

Publications (2)

Publication Number Publication Date
KR20150117584A true KR20150117584A (ko) 2015-10-20
KR102147172B1 KR102147172B1 (ko) 2020-08-31

Family

ID=54399900

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140091962A KR102147172B1 (ko) 2014-04-09 2014-07-21 시스템 온 칩 및 그것의 검증 방법

Country Status (3)

Country Link
JP (1) JP2015201208A (ko)
KR (1) KR102147172B1 (ko)
TW (1) TWI643064B (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017199517A1 (ja) * 2016-05-19 2017-11-23 株式会社Nttドコモ 試験選択装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06332743A (ja) * 1993-05-18 1994-12-02 Internatl Business Mach Corp <Ibm> テスト・プログラム・ジェネレータ
JPH07311690A (ja) * 1994-05-16 1995-11-28 Fujitsu Ltd マルチプロセッサシステムの動作テスト方法
JP2001147821A (ja) * 1999-09-10 2001-05-29 Toshiba Corp プロセッサ
US20050262410A1 (en) * 2001-08-07 2005-11-24 Intel Corporation Tool for generating a re-generative functional test
JP2011253253A (ja) * 2010-05-31 2011-12-15 Fujitsu Ltd コンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE602005015848D1 (de) * 2004-05-22 2009-09-17 Advantest Corp Verfahren und system zur steuerung wechselbarer komponenten in einem modularen testsystem
CN101515301B (zh) * 2008-02-23 2011-05-04 炬力集成电路设计有限公司 一种片上系统芯片验证的方法和装置
CN101344899B (zh) * 2008-08-15 2010-09-08 炬力集成电路设计有限公司 一种片上系统的仿真测试方法及仿真测试系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06332743A (ja) * 1993-05-18 1994-12-02 Internatl Business Mach Corp <Ibm> テスト・プログラム・ジェネレータ
JPH07311690A (ja) * 1994-05-16 1995-11-28 Fujitsu Ltd マルチプロセッサシステムの動作テスト方法
JP2001147821A (ja) * 1999-09-10 2001-05-29 Toshiba Corp プロセッサ
US20050262410A1 (en) * 2001-08-07 2005-11-24 Intel Corporation Tool for generating a re-generative functional test
JP2011253253A (ja) * 2010-05-31 2011-12-15 Fujitsu Ltd コンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラム

Also Published As

Publication number Publication date
TW201610665A (zh) 2016-03-16
KR102147172B1 (ko) 2020-08-31
JP2015201208A (ja) 2015-11-12
TWI643064B (zh) 2018-12-01

Similar Documents

Publication Publication Date Title
US9990205B2 (en) System on chip and verification method thereof
US10877766B2 (en) Embedded scheduling of hardware resources for hardware acceleration
US9690603B2 (en) Central processing unit, information processing apparatus, and intra-virtual-core register value acquisition method
US6959367B2 (en) System having read-modify-write unit
US8762599B2 (en) Delegating a poll operation to another device
BR102014006299A2 (pt) método para inicializar um sistema heterogêneo e apresentar uma vista simétrica do núcleo
JP2002041489A (ja) 同期信号生成回路、それを用いたプロセッサシステムおよび同期信号生成方法
KR20170084969A (ko) 시스템 온 칩, 모바일 기기 및 시스템 온 칩의 동작 방법
JP2006127183A (ja) 情報処理装置
WO2015075505A1 (en) Apparatus and method for external access to core resources of a processor, semiconductor systems development tool comprising the apparatus, and computer program product and non-transitory computer-readable storage medium associated with the method
US20170108908A1 (en) Instruction optimization using voltage-based functional performance variation
CN104020982A (zh) 具有高效返回预测能力的分支目标缓冲器
JP6250447B2 (ja) 半導体装置及び命令読み出し制御方法
KR102147172B1 (ko) 시스템 온 칩 및 그것의 검증 방법
US20090187903A1 (en) Virtual multiprocessor system
TW200417914A (en) Interrupt-processing system for shortening interrupt latency in microprocessor
US20140189319A1 (en) Opportunistic Utilization of Redundant ALU
CN111506395A (zh) 一种混合仿真的全数字虚拟运行环境的实现方法及装置
US20240004454A1 (en) Control of power state in computer processor
JPWO2010029682A1 (ja) 情報処理装置
JP2007026091A (ja) 割込み制御回路およびその制御方法
KR101721341B1 (ko) 이종 멀티코어 환경에서 사용되는 수행장치 결정 모듈 및 이를 이용한 수행장치 결정방법
JP2004199630A (ja) データ処理装置
CN113672554A (zh) 处理器核、处理器、片上系统和调试系统
JP2003216453A (ja) 半導体集積回路

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant