[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR101962248B1 - 재구성 가능 프로세서의 검증 지원 장치 및 방법 - Google Patents

재구성 가능 프로세서의 검증 지원 장치 및 방법 Download PDF

Info

Publication number
KR101962248B1
KR101962248B1 KR1020120027401A KR20120027401A KR101962248B1 KR 101962248 B1 KR101962248 B1 KR 101962248B1 KR 1020120027401 A KR1020120027401 A KR 1020120027401A KR 20120027401 A KR20120027401 A KR 20120027401A KR 101962248 B1 KR101962248 B1 KR 101962248B1
Authority
KR
South Korea
Prior art keywords
masking
hint
simulator
verification
invalid operation
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR1020120027401A
Other languages
English (en)
Other versions
KR20130105183A (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 KR1020120027401A priority Critical patent/KR101962248B1/ko
Priority to CN201310033915.8A priority patent/CN103309803B/zh
Priority to US13/772,647 priority patent/US9087152B2/en
Priority to JP2013053533A priority patent/JP6245820B2/ja
Publication of KR20130105183A publication Critical patent/KR20130105183A/ko
Application granted granted Critical
Publication of KR101962248B1 publication Critical patent/KR101962248B1/ko
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3604Analysis of software for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • G06F8/4452Software pipelining
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3698Environments for analysis, debugging or testing of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Debugging And Monitoring (AREA)

Abstract

CGA(Coarse grained array) 기반 재구성 가능 프로세서의 검증 지원 장치에 관한 것이다. 일 실시예에 따른 검증 지원 장치는 컴파일러의 소스 코드 스케쥴링 결과에서 비유효 연산(invalid operation)을 판단하는 비유효연산판단부 및 그 판단된 비유효 연산에 대해 소정의 매스킹(masking) 처리를 한 힌트(hint)를 생성하는 매스킹처리부를 포함할 수 있다. 본 실시예에 따르면 에러 검증 장치가 그 비유효 연산의 시뮬레이션 결과를 비교하지 않도록 전처리함으로써 그 에러 검증 장치의 검증 정확성 및 성능을 향상시킬 수 있다.

Description

재구성 가능 프로세서의 검증 지원 장치 및 방법{APPARATUS AND METHOD FOR SUPPORTING VERIFICATION OF RECONFIGURABLE PROCESSOR}
CGA(Coarse grained array) 기반 재구성 가능 프로세서의 검증 지원 장치 및 방법과 관련된다.
CGA(Coarse grained array) 기반의 재구성 가능 프로세서는 다수의 기능 유닛(Function Unit), 글로벌 레지스터 파일(Global Register File), 로컬 레지스터 파일(Local Register File) 등 매우 복잡한 구조를 가진다. 따라서, CGA에서 잘못된 계산을 수행하고 있다면 잘못된 위치 및 시점을 찾는 것은 매우 어려운 일이며 많은 시간이 소요될 수 있다.
프로세서의 에러 검증 장치는 이와 같이 프로세서에서 잘못 수행되는 위치 및 시점을 찾아 알려주는 장치이다. CGA 프로세서의 경우 모듈로 스케쥴링(modulo scheduling)을 사용함으로써 루프(loop)의 프롤로그(prologue), 바디(body) 및 에필로그(epilogue)가 같은 구성(configuration)을 사용하며, 이로 인해 프롤로그 및 에필로그에서 비유효한 연산(invalid operation), 즉, 계산 결과에 악영향을 주지 않는 연산들이 수행될 수 있다. 이는 프로세서의 에러 검증 장치가 잘못된 검증 결과를 출력하는 원인이 된다.
CGA 기반 프로세서 코어의 에러 검증 장치를 지원하기 위한 장치 및 방법이 제시된다. 즉, 모듈로 스케쥴링에 의해 루프의 프롤로그 및 에필로그에 매핑된 비유효 연산을 매스킹 처리하여 에러 검증 장치가 그 비유효 연산의 시뮬레이션 결과를 비교하지 않도록 하는 검증 지원 장치 및 방법이 제시된다.
일 양상에 따른 프로세서 코어의 검증 지원 장치는 소스 코드 스케쥴링 결과에서 비유효 연산(invalid operation)을 판단하는 비유효연산판단부 및 그 판단된 비유효 연산에 대한 매스킹(masking) 힌트(hint)를 생성하는 매스킹힌트생성부를 포함할 수 있다.
이때, 그 재구성 가능 프로세서는 CGA(coarse grained array) 기반의 프로세서일 수 있다.
또한, 비유효 연산은 컴파일러의 모듈로 스케쥴링(modulo scheduling)에 따라 루프의 프롤로그 또는 에필로그에 매핑된 연산인 것일 수 있다.
이때, 매스킹 힌트는 프롤로그 또는 에필로그에서 비유효 연산이 존재하는 사이클 번호와 그 비유효 연산이 매핑된 기능 유닛의 아이디 정보를 포함할 수 있다.
또한, 비유효 연산은 기능 시뮬레이터(functional simulator)에서는 수행되지 않고 레지스터 트랜스퍼 수준(Register Transfer Level, RTL) 시뮬레이터에서는 수행되는 연산인 것일 수 있다.
또한, 매스킹 힌트는 재구성 가능 프로세서의 검증장치가 양 시뮬레이터의 시뮬레이션 결과 중 그 비유효 연산에 대한 결과를 비교하지 않기 위한 매스킹 정보를 생성하도록 하는 것일 수 있다.
일 양상에 따른 프로세서 코어의 검증 지원 방법은 소스 코드 스케쥴링 결과에서 비유효 연산(invalid operation)을 판단하는 단계 및 그 판단된 비유효 연산에 대한 매스킹(masking) 힌트(hint)를 생성하는 단계를 포함할 수 있다.
이때, 그 재구성 가능 프로세서는 CGA(coarse grained array) 기반의 프로세서일 수 있다.
또한, 그 비유효 연산은 컴파일러의 모듈로 스케쥴링(modulo scheduling)에 따라 루프의 프롤로그 또는 에필로그에 매핑된 연산인 것일 수 있다.
이때, 매스킹 힌트는 프롤로그 또는 에필로그에서 비유효 연산이 존재하는 사이클 번호와 그 비유효 연산이 매핑된 기능 유닛의 아이디 정보를 포함할 수 있다.
또한, 그 비유효 연산은 기능 시뮬레이터(functional simulator)에서는 수행되지 않고 레지스터 트랜스퍼 수준(Register Transfer Level, RTL) 시뮬레이터에서는 수행되는 연산인 것일 수 있다.
또한, 매스킹 힌트는 재구성 가능 프로세서의 검증장치가 양 시뮬레이터의 시뮬레이션 결과 중 그 비유효 연산에 대한 결과를 비교하지 않기 위한 매스킹 정보를 생성하도록 하는 것일 수 있다.
CGA 기반 프로세서에서 모듈로 스케쥴링에 의해 루프의 프롤로그 및 에필로그에 매핑된 비유효 연산을 매스킹 처리하여 에러 검증 장치가 그 비유효 연산의 시뮬레이션 결과를 비교하지 않도록 지원함으로써 그 에러 검증 장치의 검증 정확성 및 성능을 향상시킬 수 있다.
도 1은 일 실시예에 따른 재구성 가능 프로세서의 검증 환경의 구성도이다.
도 2는 일 실시예에 따른 검증 지원 장치의 블록도이다.
도 3은 일 실시예에 따라 CGA에 매핑될 예제 C 코드이다.
도 4는 도 3의 예제 C 코드가 CGA에 스케쥴링된 결과이다.
도 5는 도 4의 스케쥴링 결과에 대한 힌트 파일의 예이다.
도 6은 일 실시예에 따른 검증 지원 방법의 흐름도이다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 본 발명의 실시예들에 따른 재구성 가능 프로세서의 검증 지원 장치 및 방법을 도면들을 참고하여 자세히 설명하도록 한다.
도 1은 일 실시예에 따른 재구성 가능 프로세서의 검증 환경의 구성도이다.
도 1을 참조하면, 검증장치(400)는 기능 시뮬레이터(310)와 레지스터 트랜스퍼 레벨(Register Transfer Level, RTL) 시뮬레이터(320)의 시뮬레이션 결과를 비교하여 오류 시점 및 위치를 알려준다. 검증장치(400)는 기능 시뮬레이터(310)와 RTL 시뮬레이터(320)의 시뮬레이션 결과 출력되는 신호를 수신하고, 양 출력 신호를 비교한다. 비교 결과 불일치하면 오류로 판단하고 해당 오류가 발생된 시점 및 위치를 알려준다.
검증장치(400)는 VLIW(Very Long Instruction Word) 모드에서 PC(Program Counter) 및 인스트럭션(Instruction)을 검증하는 장치이거나, 또는 CGA(coarse grained array) 모드에서 기능 유닛(Function Unit)의 입력(src)/출력(dst) 오퍼랜드(operand)를 검증하는 장치일 수 있다.
기능 시뮬레이터(310)는 컴파일러(200)로부터 스케쥴링 정보를 입력받아 타겟 머신 즉, 프로세서 코어의 기능 유닛(function unit)에 대응하는 동작에 대하여 시뮬레이션을 수행하고, 시뮬레이션 과정을 나타내는 트레이스를 생성할 수 있다.
CGA 모드의 경우 컴파일러(200)의 모듈로 스케쥴링(modulo scheduling)을 통해 생성된 루프의 프롤로그, 바디, 에필로그는 같은 구성 정보를 사용한다. 그 결과 모듈로 스케쥴링에 따라 프롤로그 또는 에필로그에 매핑된 실제 수행되지 않는비유효 연산(invalid operation)이 RTL 시뮬레이션에서는 수행될 수 있다. 즉, 그 비유효 연산들이 기능 시뮬레이터(310)에서는 실제로 수행되지 않는데 반해, RTL 시뮬레이터(320)에서는 시뮬레이션 되기 때문에 검증장치(400)의 비교 결과는 불일치하게 된다. 검증장치(400)는 이런 비유효 연산에 대하여도 오류로 검출하기 때문에 검증장치(400)의 성능이 저하되며 정확성에 문제가 발생할 수 있다.
이를 해결하는 방안 중 하나로서, 기능 시뮬레이터(310)를 RTL 시뮬레이터(320)와 같은 수준으로 설계하여 비유효 연산의 경우에도 수행하도록 함으로써 양 시뮬레이터(310,320)의 출력 결과를 같게 할 수 있다. 그러나, 이 경우에는 기능 시뮬레이터(310)의 시뮬레이션 속도가 저하될 수 있으며 기능 시뮬레이터(310)의 설계 변경이 필요할 수 있다.
이하, 이러한 문제를 해결하기 위해 일 실시예에 따르면 검증장치(400)를 지원하는 검증 지원 장치(100)가 제시된다. 검증 지원 장치(100)는 재구성 가능 프로세서, 예컨대, CGA 기반 프로세서의 검증장치(400)를 지원하기 위해 활용될 수 있다. 검증 지원 장치(100)는 검증장치(400)를 지원하기 위한 별도의 소프트웨어로 제작될 수 있다. 한편, 다른 실시예에 따르면 검증 지원 장치(100)는 검증장치(400)의 하나의 소프트웨어 모듈로서 구성될 수 있으며, 또 다른 실시예에 따르면 소스 코드를 컴파일하고 스케쥴링하는 컴파일러(200)의 일 모듈로서 구성될 수도 있다.
도 2는 일 실시예에 따른 검증 지원 장치의 블록도이다. 도 2를 참조하면, 검증 지원 장치(100)는 비유효연산판단부(110) 및 매스킹힌트생성부(120)를 포함할 수 있다.
비유효연산판단부(110)는 컴파일러(200)에 의해 스케쥴링된 결과(201)에서 비유효 연산을 판단한다. 비유효연산판단부(110)는 컴파일러(200)로부터 스케쥴링 결과를 입력받는다. 스케쥴링 결과(201)는 메모리에 저장될 수 있고, 비유효연산판단부(110)는 그 메모리에서 스케쥴링 결과(201)를 읽을 수 있다. 비유효연산판단부(110)는 컴파일러(200)의 모듈로 스케쥴링 결과(201) 정보를 바탕으로 매 사이클마다 루프의 프롤로그 및 에필로그에 매핑되어 있는 각 연산 중 실제로 수행되지 않는 비유효 연산을 판단할 수 있다.
매스킹힌트생성부(120)는 비유효연산판단부(110)에 의해 판단된 비유효 연산들에 대해 매스킹 힌트(hint)(121)를 생성할 수 있다. 매스킹 힌트(121)는 파일 형식 또는 테이블 형식으로 생성될 수 있으나, 이에 한정되는 것은 아니다. 매스킹 힌트(121)는 프롤로그 또는 에필로그에서 비유효 연산이 존재하는 사이클 번호와 그 비유효 연산이 매핑된 기능 유닛들의 아이디에 대한 정보를 포함할 수 있다. 생성된 매스킹 힌트(121)는 검증장치(400)에 입력되어 그 검증장치(400)에 매스킹 정보 생성을 위한 힌트를 제공할 수 있다. 그 힌트(121)는 검증장치(400)가 양 시뮬레이터(310,320)의 시뮬레이션 결과 중 그 비유효 연산에 대한 결과를 비교하지 않기 위한 매스킹 정보를 생성하도록 하는 것일 수 있다.
검증장치(400)는 매 사이클마다 입력 및 출력 오퍼랜드를 비교하여 오류를 검증한다. 다만, 매 사이클마다 모든 입력 및 출력 오퍼랜드의 비교를 수행하는 것은 아니다. 연산의 종류에 따라 입력 및 출력 오퍼랜드의 개수가 다를 수 있다. 이런 경우에는 검증장치(400)는 특정 연산에 대해 매스킹 비트를 생성하여 필요한 입력 및 출력 오퍼랜드의 비교를 수행할 수 있다. 예를 들어, 비교를 수행하지 않을 특정 연산에 대해 매스킹 비트를 '1'로 설정하면 그 연산에 대해서는 비교를 수행하지 않는다.
이와 같이, 검증장치(400)는 검증 지원 장치(100)로부터 매스킹 힌트(121)를 입력받고 그 힌트(121)를 이용하여 비교를 수행하지 않을 비유효 연산에 대한 매스킹 정보를 생성할 수 있다. 즉, 프롤로그 또는 에필로그 동작 수행시 매 사이클마다 그 비유효 연산에 대해서 매스킹 비트를 '1'로 설정함으로써 그 비유효 연산에 대한 양 시뮬레이터(310, 320)의 시뮬레이션 결과를 비교하지 않을 수 있다.
도 3은 일 실시예에 따라 CGA에 매핑될 예제 C 코드이다. 도 4는 도 3의 예제 C 코드가 CGA에 스케쥴링된 결과(201)이다. 도 5는 도 4의 스케쥴링 결과에 대한 힌트 파일(121)의 예이다.
도 3의 예제 코드는 정수 i를 0부터 N-1까지 1씩 증가시키면서 그 i에 10을 곱하고 그 결과를 계속 합하여 가면서 각 결과를 메모리에 저장하는 소스 코드이다. 이 소스 코드는 N 번의 반복을 수행하는 루프이다. 이 소스 코드를 컴파일러가 CGA 프로세서에 모듈로 스케쥴링한 결과(201)를 도 4에 나타내었다.
도 4를 참조하면, 본 실시예의 CGA 프로세서는 10개의 기능 유닛(Fu00 ~Fu09)을 포함하고 있으며, 컴파일러(200)는 이 소스 코드를 모듈로 스케쥴링을 통해 CGA 프로세서의 각 기능 유닛에 매핑할 수 있다. 도 4에서 사이클 0에서 6까지는 프롤로그, 사이클 7 내지 14는 루프 바디를 나타내며 사이클 15 내지 18은 에필로그를 나타낸다.
도 4에 도시된 스케쥴링 결과(201)에서 프롤로그(사이클 0 ~ 6)와 에필로그(사이클 15 ~ 18)의 이탤릭체로 나타낸 연산이 비유효 연산을 의미한다. 프롤로그에서 9개의 연산과, 에필로그에서 5개의 연산이 비유효 연산임을 알 수 있다.
비유효연산판단부(110)는 도 4에 도시된 바와 같은 컴파일러(200)의 스케쥴링 결과(201)를 입력받아 비유효 연산을 판단한다. 비유효연산판단부(110)는 이 스케쥴링 결과(201)에서 프롤로그와 에필로그의 매 사이클마다 이탤릭체로 나타낸 비유효 연산에 대한 사이클 번호와 매핑된 기능 유닛의 아이디를 확인한다.
매스킹힌트생성부(120)는 비유효연산판단부(110)에 의해 매 사이클마다 판단된 비유효 연산에 대한 정보를 파일 또는 테이블 형식에 기록하여 힌트(121)를 생성할 수 있다.
도 5에는 도 4의 스케쥴링 결과(201)를 이용하여 매스킹힌트생성부(120)가 생성한 힌트 파일(121)의 일 예이다. 도 5에 도시된 바와 같이 생성된 매스킹 힌트(121)에는 검증장치(400)가 매스킹 정보를 생성하여야 할 사이클 번호 및 기능 유닛의 아이디가 기록되어 있다. 즉, 프롤로그 9개의 연산과 에필로그 5개의 연산에 대한 매스킹 힌트가 생성되어 있음을 알 수 있다.
검증장치(400)는 이 힌트(121)를 입력받아 비유효 연산에 대한 매스킹 비트를 '1'로 설정하여 매스킹 정보를 생성한다. 예를 들어, 프롤로그 사이클 0의 기능 유닛 1(Fu01)에 대한 연산 'add'에 대해서는 매스킹 비트를 '1'로 설정한다. 기능 시뮬레이터(310)에서는 이 연산을 수행하지 않으나 RTL 시뮬레이터(320)에서는 이 연산을 그대로 수행하기 때문에 양 시뮬레이터의 출력 결과는 달라진다. 그러나, 검증장치(400)는 이 연산에 대해서는 매스킹 비트가 '1'로 설정되어 있으므로 그 결과에 대한 비교를 수행하지 않게 된다.
도 6은 일 실시예에 따른 검증 지원 방법의 흐름도이다.
도 6을 참조하여 검증 지원 방법을 설명하면, 비유효연산판단부(110)는 컴파일러(200)에 의해 스케쥴링된 결과(201)에서 비유효 연산을 판단한다(단계 510). 비유효연산판단부(110)는 컴파일러(200)로부터 스케쥴링 결과(201)를 입력받고, 그 스케쥴링 결과(201) 정보를 바탕으로 매 사이클마다 루프의 프롤로그 및 에필로그에 매핑되어 있는 각 연산 중 실제로 수행되지 않는 비유효 연산을 판단할 수 있다.
그 다음, 매스킹힌트생성부(120)는 비유효연산판단부(110)에 의해 판단된 비유효 연산들에 대해 매스킹 힌트(hint)(121)를 생성할 수 있다(단계 520). 매스킹 힌트(121)는 프롤로그 또는 에필로그에서 비유효 연산의 사이클 번호와 그 비유효 연산이 매핑된 기능 유닛들의 아이디에 대한 정보를 포함할 수 있다. 또한, 그 매스킹 힌트(121)는 검증장치(400)가 양 시뮬레이터(310,320)의 시뮬레이션 결과 중 그 비유효 연산에 대한 결과를 비교하지 않기 위한 매스킹 정보를 생성하도록 하는 것일 수 있다.
검증장치(400)는 검증 지원 장치(100)로부터 도 5에 도시된 바와 같은 매스킹 힌트(121)를 입력받을 수 있다. 그 매스킹 힌트(121)를 이용하여 비교를 수행하지 않을 비유효 연산에 대한 매스킹 정보를 생성할 수 있다. 매스킹 정보는 검증장치(400)가 각 연산에 대한 비교를 수행할지를 결정할 수 있는 정보로서 매스킹 비트를 생성하여 그 비교 여부를 설정하게 된다.
예를 들어, 매스킹 비트를 '0'으로 설정하면 그 연산에 대한 시뮬레이션 결과는 비교를 수행하게 되고, 매스킹 비트가 '1'로 설정되면 그 연산에 대한 시뮬레이션 결과는 비교를 수행하지 않게 된다. 이와 같이, 검증장치(400)는 매스킹 힌트(121)를 이용하여 프롤로그 또는 에필로그 동작 수행시 매 사이클마다 그 힌트파일에 기록된 비유효 연산에 대해서 매스킹 비트를 '1'로 설정할 수 있다. 그리고, 그 비유효 연산에 대한 양 시뮬레이터(310, 320)의 시뮬레이션 결과를 비교하지 않을 수 있다.
개시된 실시예에 따르면, 기능 시뮬레이터(310) 또는 RTL 시뮬레이터(320)의 설계 변경 등을 필요로 하지 않으며 기존의 시뮬레이터들을 그대로 이용하여 비유효 연산에 대한 불필요한 검증을 수행하지 않도록 함으로써 검증 속도 및 성능을 향상할 수 있다.
한편, 본 발명의 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: 검증지원장치 110: 비유효연산판단부
120: 매스킹힌트생성부 121: 힌트
200: 컴파일러 201: 스케쥴링 결과
310: 기능시뮬레이터 320: RTL 시뮬레이터
400: 검증장치

Claims (12)

  1. 소스 코드 스케쥴링 결과에서 비유효 연산(invalid operation)을 판단하는 비유효연산판단부; 및
    상기 판단된 비유효 연산에 대한 매스킹(masking) 힌트(hint)를 생성하는 매스킹힌트생성부;를 포함하고,
    상기 비유효 연산은,
    기능 시뮬레이터(functional simulator)에서는 수행되지 않고 레지스터 트랜스퍼 수준(Register Transfer Level, RTL) 시뮬레이터에서는 수행되는 연산이고,
    상기 매스킹 힌트는,
    상기 기능 시뮬레이터 및 상기 레지스터 트랜스퍼 수준 시뮬레이터의 시뮬레이션 결과 중 상기 비유효 연산에 대한 결과를 비교하는 것을 방지하기 위한 매스킹 정보를 생성하는, 재구성 가능 프로세서의 검증 지원 장치.
  2. 제1항에 있어서, 상기 재구성 가능 프로세서는
    CGA(coarse grained array) 기반의 프로세서인 재구성 가능 프로세서의 검증 지원 장치.
  3. 제1항에 있어서, 상기 비유효 연산은
    컴파일러의 모듈로 스케쥴링(modulo scheduling)에 따라 루프의 프롤로그 또는 에필로그에 매핑된 연산인 것인 재구성 가능 프로세서의 검증 지원 장치.
  4. 제3항에 있어서, 상기 매스킹 힌트는
    상기 프롤로그 또는 에필로그에서 비유효 연산이 존재하는 사이클 번호와 그 비유효 연산이 매핑된 기능 유닛의 아이디 정보를 포함하는 재구성 가능 프로세서의 검증 지원 장치.
  5. 삭제
  6. 삭제
  7. 소스 코드 스케쥴링 결과에서 비유효 연산(invalid operation)을 판단하는 단계; 및
    상기 판단된 비유효 연산에 대한 매스킹(masking) 힌트(hint)를 생성하는 단계;를 포함하고,
    상기 비유효 연산은,
    기능 시뮬레이터(functional simulator)에서는 수행되지 않고 레지스터 트랜스퍼 수준(Register Transfer Level, RTL) 시뮬레이터에서는 수행되는 연산이고,
    상기 매스킹 힌트는,
    상기 기능 시뮬레이터 및 상기 레지스터 트랜스퍼 수준 시뮬레이터의 시뮬레이션 결과 중 상기 비유효 연산에 대한 결과를 비교하는 것을 방지하기 위한 매스킹 정보를 생성하는, 재구성 가능 프로세서의 검증 지원 방법.
  8. 제7항에 있어서, 상기 재구성 가능 프로세서는
    CGA(coarse grained array) 기반의 프로세서인 재구성 가능 프로세서의 검증 지원 방법.
  9. 제7항에 있어서, 상기 비유효 연산은
    컴파일러의 모듈로 스케쥴링(modulo scheduling)에 따라 루프의 프롤로그 또는 에필로그에 매핑된 연산인 것인 재구성 가능 프로세서의 검증 지원 방법.
  10. 제9항에 있어서, 상기 매스킹 힌트는
    상기 프롤로그 또는 에필로그에서 비유효 연산이 존재하는 사이클 번호와 그 비유효 연산이 매핑된 기능 유닛의 아이디 정보를 포함하는 재구성 가능 프로세서의 검증 지원 방법.
  11. 삭제
  12. 삭제
KR1020120027401A 2012-03-16 2012-03-16 재구성 가능 프로세서의 검증 지원 장치 및 방법 Expired - Fee Related KR101962248B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020120027401A KR101962248B1 (ko) 2012-03-16 2012-03-16 재구성 가능 프로세서의 검증 지원 장치 및 방법
CN201310033915.8A CN103309803B (zh) 2012-03-16 2013-01-29 用于支持可重构处理器的验证的设备和方法
US13/772,647 US9087152B2 (en) 2012-03-16 2013-02-21 Verification supporting apparatus and verification supporting method of reconfigurable processor
JP2013053533A JP6245820B2 (ja) 2012-03-16 2013-03-15 再構成可能プロセッサの検証支援装置及び方法並びに再構成可能プロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120027401A KR101962248B1 (ko) 2012-03-16 2012-03-16 재구성 가능 프로세서의 검증 지원 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20130105183A KR20130105183A (ko) 2013-09-25
KR101962248B1 true KR101962248B1 (ko) 2019-03-27

Family

ID=49135050

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120027401A Expired - Fee Related KR101962248B1 (ko) 2012-03-16 2012-03-16 재구성 가능 프로세서의 검증 지원 장치 및 방법

Country Status (4)

Country Link
US (1) US9087152B2 (ko)
JP (1) JP6245820B2 (ko)
KR (1) KR101962248B1 (ko)
CN (1) CN103309803B (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003099248A (ja) * 2001-09-20 2003-04-04 Matsushita Electric Ind Co Ltd プロセッサ、コンパイル装置及びコンパイル方法
US20050177775A1 (en) 2004-01-26 2005-08-11 Microsoft Corporation Data race detection using sequential program analysis
US20090144705A1 (en) 2007-11-29 2009-06-04 Kabushiki Kaisha Toshiba Debugging device and debugging method

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0363838A (ja) * 1989-08-02 1991-03-19 Nec Corp ソフトウェアプログラムの検査方法
EP0933703B1 (en) * 1998-01-28 2007-08-29 Texas Instruments Incorporated Method and apparatus for processing program loops
WO2000043886A1 (en) 1999-01-20 2000-07-27 Applied Microsystems Corporation Instrumentation of calls to routines for which source code is unavailable
US6363522B1 (en) * 1999-04-23 2002-03-26 Sun Microsystems, Inc. Method and apparatus for handling exceptions as normal control flow
US6820250B2 (en) * 1999-06-07 2004-11-16 Intel Corporation Mechanism for software pipelining loop nests
US6754893B2 (en) * 1999-12-29 2004-06-22 Texas Instruments Incorporated Method for collapsing the prolog and epilog of software pipelined loops
US6918110B2 (en) 2001-04-11 2005-07-12 Hewlett-Packard Development Company, L.P. Dynamic instrumentation of an executable program by means of causing a breakpoint at the entry point of a function and providing instrumentation code
US20030154469A1 (en) * 2001-12-20 2003-08-14 Timothy Anderson Apparatus and method for improved execution of a software pipeline loop procedure in a digital signal processor
US7281242B2 (en) 2002-01-18 2007-10-09 Bea Systems, Inc. Flexible and extensible Java bytecode instrumentation system
US7149636B2 (en) * 2002-04-04 2006-12-12 Texas Instruments Incorporated Method and apparatus for non-obtrusive power profiling
US7440885B2 (en) * 2002-06-03 2008-10-21 Broadcom Corporation Method and system for deterministic control of an emulation
JP3847672B2 (ja) * 2002-07-03 2006-11-22 松下電器産業株式会社 コンパイラ装置及びコンパイル方法
JP3974063B2 (ja) * 2003-03-24 2007-09-12 松下電器産業株式会社 プロセッサおよびコンパイラ
US7673294B2 (en) * 2005-01-18 2010-03-02 Texas Instruments Incorporated Mechanism for pipelining loops with irregular loop control
JP2007207119A (ja) * 2006-02-03 2007-08-16 Canon Inc 表示装置及び表示方法
KR100813662B1 (ko) * 2006-11-17 2008-03-14 삼성전자주식회사 프로세서 구조 및 응용의 최적화를 위한 프로파일러
KR101375171B1 (ko) 2006-12-30 2014-03-18 삼성전자주식회사 시스템 온 칩 모델 검증 방법 및 장치
US8191057B2 (en) * 2007-08-27 2012-05-29 International Business Machines Corporation Systems, methods, and computer products for compiler support for aggressive safe load speculation
KR101418969B1 (ko) * 2008-02-27 2014-08-13 삼성전자주식회사 프로세서 및 컴파일 방법
JP4950942B2 (ja) * 2008-05-23 2012-06-13 株式会社東芝 半導体集積回路の検証装置
KR101738640B1 (ko) * 2011-01-18 2017-05-24 삼성전자주식회사 트레이스 데이터 압축 장치 및 방법
US9038042B2 (en) * 2012-06-29 2015-05-19 Analog Devices, Inc. Staged loop instructions

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003099248A (ja) * 2001-09-20 2003-04-04 Matsushita Electric Ind Co Ltd プロセッサ、コンパイル装置及びコンパイル方法
US20050177775A1 (en) 2004-01-26 2005-08-11 Microsoft Corporation Data race detection using sequential program analysis
US20090144705A1 (en) 2007-11-29 2009-06-04 Kabushiki Kaisha Toshiba Debugging device and debugging method
JP2009134462A (ja) * 2007-11-29 2009-06-18 Toshiba Corp デバッグ装置及びデバッグ方法

Also Published As

Publication number Publication date
JP2013196702A (ja) 2013-09-30
CN103309803B (zh) 2017-06-23
KR20130105183A (ko) 2013-09-25
US9087152B2 (en) 2015-07-21
US20130246856A1 (en) 2013-09-19
JP6245820B2 (ja) 2017-12-13
CN103309803A (zh) 2013-09-18

Similar Documents

Publication Publication Date Title
US8549468B2 (en) Method, system and computer readable storage device for generating software transaction-level modeling (TLM) model
JP6342129B2 (ja) 混合モードプログラムのソースコードエラー位置検出装置及び方法
Meyerowitz et al. Source-level timing annotation and simulation for a heterogeneous multiprocessor
US20100180263A1 (en) Apparatus and method for detecting software error
US20110145799A1 (en) Path-sensitive dataflow analysis including path refinement
KR20090092617A (ko) 프로세서 및 컴파일 방법
Wang et al. Accurate source-level simulation of embedded software with respect to compiler optimizations
CN102902906A (zh) 微处理器指令集验证方法
JP3822044B2 (ja) 設計検証システム、設計検証方法および設計検証プログラムを格納したコンピュータ読取り可能な記録媒体
Stattelmann et al. Dominator homomorphism based code matching for source-level simulation of embedded software
Eisinger et al. Automatic identification of timing anomalies for cycle-accurate worst-case execution time analysis
Wang et al. An approach to improve accuracy of source-level TLMs of embedded software
MX2011001796A (es) Ejecucion de procesador simulado utilizando supeditar ramificacion.
Brady et al. Learning conditional abstractions
US7779393B1 (en) System and method for efficient verification of memory consistency model compliance
CN105630680B (zh) 一种随机测试程序生成方法
KR101910934B1 (ko) 루프의 프롤로그 또는 에필로그의 비유효 연산을 처리하는 장치 및 방법
KR101962248B1 (ko) 재구성 가능 프로세서의 검증 지원 장치 및 방법
JP6352607B2 (ja) アサーション生成装置及び方法並びにプロセッサ検証装置及び方法
Védrine et al. Runtime abstract interpretation for numerical accuracy and robustness
US20140013312A1 (en) Source level debugging apparatus and method for a reconfigurable processor
Engblom On hardware and hardware models for embedded real-time systems
Frid et al. Elementary operations: a novel concept for source-level timing estimation
Zeng et al. Automatic Generation of Cycle-Accurate Timing Models from RTL for Hardware Accelerators
Zheng et al. Minimal Context-Switching Data Race Detection with Dataflow Tracking

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20120316

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20161116

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20120316

Comment text: Patent Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20180928

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20190102

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20190320

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20190321

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PC1903 Unpaid annual fee

Termination category: Default of registration fee

Termination date: 20221231