KR20140005526A - 재구성 가능 프로세서의 소스 레벨 디버깅 장치 및 방법 - Google Patents

재구성 가능 프로세서의 소스 레벨 디버깅 장치 및 방법 Download PDF

Info

Publication number
KR20140005526A
KR20140005526A KR1020120073012A KR20120073012A KR20140005526A KR 20140005526 A KR20140005526 A KR 20140005526A KR 1020120073012 A KR1020120073012 A KR 1020120073012A KR 20120073012 A KR20120073012 A KR 20120073012A KR 20140005526 A KR20140005526 A KR 20140005526A
Authority
KR
South Korea
Prior art keywords
invalid operation
invalid
operations
scheduling
source level
Prior art date
Application number
KR1020120073012A
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 삼성전자주식회사
Priority to KR1020120073012A priority Critical patent/KR20140005526A/ko
Priority to CN201310279099.9A priority patent/CN103530214A/zh
Priority to JP2013140866A priority patent/JP2014013570A/ja
Priority to US13/935,634 priority patent/US20140013312A1/en
Publication of KR20140005526A publication Critical patent/KR20140005526A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

CGA(Coarse grained array) 기반 재구성 가능 프로세서의 소스 레벨 디버깅 장치에 관한 것이다. 일 실시예에 따른 소스 레벨 디버깅 장치는 비유효 연산 정보를 이용하여 소스 코드 스케쥴링 결과에서 중단점을 설정할 유효 연산들을 결정하는 유효연산결정부 및 결정된 유효 연산들에 대응하는 주소에 중단점을 설정하는 중단점설정부를 포함할 수 있다.

Description

재구성 가능 프로세서의 소스 레벨 디버깅 장치 및 방법{APPARATUS AND METHOD FOR SOURCE LEVEL DEBUGGING OF RECONFIGURABLE PROCESSOR}
CGA(Coarse grained array) 기반 재구성 가능 프로세서의 소스 레벨 디버깅 장치 및 방법과 관련된다.
CGA(Coarse grained array) 기반의 재구성 가능 프로세서는 다수의 기능 유닛(Function Unit), 글로벌 레지스터 파일(Global Register File), 로컬 레지스터 파일(Local Register File) 등 매우 복잡한 구조를 가진다. 이와 같이, 명령을 처리하는 기능 유닛들이 어레이(array) 구조로 이루어진 CGA 프로세서는 루프(loop)로 구현된 소프트웨어 코드의 반복적인 데이터 처리 명령들을 소프트웨어 파이프라인(software pipeline)으로 구성하고 이를 어레이에 병렬화하여 매핑한 후 고속으로 처리한다.
CGA 프로세서의 경우 기능 유닛들의 효율을 높이고 구성(configuration)의 크기를 줄이기 위해 커널(Kernel)을 모듈로 스케쥴링(modulo scheduling)하고, 이를 프롤로그(prologur) 및 에필로그(epilogue)에 재사용한다. 즉, 루프(loop)의 프롤로그(prologue), 바디(body) 및 에필로그(epilogue)가 같은 구성(configuration)을 사용하며, 이로 인해 프롤로그 및 에필로그에서 계산 결과에 악영향을 주지 않는 비유효한 연산(invalid operation)들이 수행될 수 있다.
이와 같이, 프롤로그 또는 에필로그의 비유효 연산들로 인해 CGA에서 소스 레벨 디버깅이 어렵고, 유효한 명령어들에 대해서만 중단점(breakpoint)을 설정할 수 없다는 문제가 있다.
CGA 프로세서에서 소스 레벨 디버깅을 가능하도록 하며, 루프 언롤링(loop unrolling) 기반의 모듈로 스케쥴링 결과에서 프롤로그 및 에필로그의 비유효 연산을 제외하고 유효한 명령어들에 대해서만 중단점을 설정할 수 있는 디버깅 장치 및 방법이 제시된다.
일 양상에 따르면, 재구성 가능 프로세서의 소스 레벨 디버깅 장치는 비유효 연산 정보를 이용하여 소스 코드 스케쥴링 결과에서 중단점을 설정할 유효 연산들을 결정하는 유효연산결정부 및 결정된 유효 연산들에 대응하는 주소에 중단점을 설정하는 중단점설정부를 포함할 수 있다.
이때, 재구성 가능 프로세서는 CGA(coarse grained array) 기반의 프로세서일 수 있다.
또한, 스케쥴링 결과는 컴파일러에 의한 루프 언롤링(loop unrolling) 기반의 모듈로 스케쥴링(modulo scheduling) 결과일 수 있다.
또한, 비유효 연산은 루프 언롤링 기반의 모듈로 스케쥴링에 따라 프롤로그 또는 에필로그에 매핑된 연산인 것일 수 있다.
또한, 비유효 연산 정보는 프롤로그 또는 에필로그의 비유효 연산이 존재하는 사이클 번호 및 그 비유효 연산이 매핑된 기능 유닛(Function unit)의 아이디 정보를 포함할 수 있다.
일 양상에 따르면, 재구성 가능 프로세서의 소스 레벨 디버깅 방법은 비유효 연산 정보를 이용하여 소스 코드 스케쥴링 결과에서 중단점을 설정할 유효 연산들을 결정하는 단계 및 결정된 유효 연산들에 대응하는 주소에 중단점을 설정하는 단계를 포함할 수 있다.
이때, 재구성 가능 프로세서는 CGA(coarse grained array) 기반의 프로세서일 수 있다.
또한, 스케쥴링 결과는 컴파일러에 의한 루프 언롤링(loop unrolling) 기반의 모듈로 스케쥴링(modulo scheduling) 결과인 것일 수 있다.
또한, 비유효 연산은 루프 언롤링 기반의 모듈로 스케쥴링에 따라 프롤로그 또는 에필로그에 매핑된 연산인 것일 수 있다.
또한, 비유효 연산 정보는 프롤로그 또는 에필로그의 비유효 연산이 존재하는 사이클 번호 및 그 비유효 연산이 매핑된 기능 유닛(Function unit)의 아이디 정보를 포함할 수 있다.
CGA 프로세서에서 루프 언롤링(loop unrolling) 기반의 모듈로 스케쥴링 결과에서 비유효 연산 정보를 이용함으로써 소스 레벨 디버깅이 가능하고, 프롤로그 및 에필로그의 비유효 연산을 제외하고 유효한 명령어들에 대해서만 중단점을 설정할 수 있다.
도 1은 일 실시예에 따른 재구성 가능 프로세서의 소스 레벨 디버깅 환경의 구성도이다.
도 2는 일 실시예에 따라 재구성 가능 프로세서에서 스케쥴링될 예제 C 코드이다.
도 3은 도 2의 예제 C 코드가 재구성 가능 프로세서에서 스케쥴링된 결과이다.
도 4는 도 3의 스케쥴링 결과에 대한 비유효 연산 정보의 예이다.
도 5는 일 실시예에 따른 재구성 가능 프로세서의 소스 레벨 디버깅 방법의 흐름도이다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 본 발명의 실시예들에 따른 재구성 가능 프로세서의 소스 레벨 디버깅 장치 및 방법을 도면들을 참고하여 자세히 설명하도록 한다.
도 1은 일 실시예에 따른 재구성 가능 프로세서의 소스 레벨 디버깅 환경의 구성도이다. 도 1을 참조하여, 재구성 가능 프로세서에서 소스 레벨 디버깅 장치(100)에 대해 자세히 설명한다.
재구성 가능 프로세서는 일 실시예에 따르면 CGA(coarse grained array) 기반의 프로세서일 수 있다.
CGA에서는 루프(loop)로 구현된 소스 코드를 스케쥴링할 때, 컴파일러(200)가 반복적인 데이터 처리 명령들을 소프트웨어 파이프라인(software pipeline)으로 구성하여 스케쥴링함으로써 처리 성능을 향상시킨다. 이때, 컴파일러(200)는 루프 언롤링(loop unrolling) 기반의 모듈로 스케쥴링(modulo scheduling)을 통해 스케쥴링 결과(210)를 생성할 수 있다.
CGA에서는 모듈로 스케쥴링을 통해 기능 유닛의 효율을 높이고 구성(configuration)의 크기를 줄일 수 있으나, 생성된 스케쥴링 결과(210)의 프롤로그 및 에필로그에는 유효하지 않은 비유효 연산들이 매핑될 수 있다. 일반적으로, 이러한 비유효 연산들에 대해 추가 하드웨어 자원을 사용하여 프리디케이트(predicate)로 가딩(guarding)하거나 그 비유효 연산의 결과를 사용하지 않고 무시하는 방법으로 그 비유효 연산의 결과를 무효화한다.
일반적인 CGA에서 소스 레벨 디버깅시 사용자들이 설정한 중단점(breakpoint)을 설정할 때, 루프의 반복 번호(iteration number)와 시작구간(Initiation Interval, II)내의 CGA 주소를 연결시켜서 만든 신호인 CGA PC(Program Counter)를 사용한다. 그러나, 이러한 CGA PC는 어셈블러(assembler), 수준에서 디버깅할 때 사용할 수 있지만 소스 프로그램의 라인과 연관하여 중단점을 설정하는 것은 불가능하다.
또한, 인텔의 아이타니엄(itanium)과 같은 일부 프로세서의 경우 프롤로그 또는 에필로그의 비유효 연산들을 프리디케이트로 제어하여, 그 프리디케이트 값을 참고하여 하드웨어적으로 유효한 명령어들에 대해서만 중단점을 설정하는 방법을 사용한다. 그러나, CGA는 프로세서의 상태를 변화시키지 않는 경우, 즉 레지스터 파일 또는 메모리에 값을 쓰는 명령어들에만 프리디케이트를 적용하여 최적화하였기 때문에 그 방법이 적용되기 어려운 문제가 있다.
따라서, 본 실시예에서는 소스 레벨 디버깅을 수행하며, 미리 생성된 비유효 연산 정보(310)를 이용하여 유효한 명령어들에 대해서만 중단점을 설정하는 소스 레벨 디버깅 장치(100)가 제시된다.
도 1에 도시된 바와 같이, 소스 레벨 디버깅 장치(100)는 유효연산결정부(110) 및 중단점설정부(120)를 포함할 수 있다.
유효연산결정부(110)는 비유효 연산 정보(310)를 이용하여 소스 코드 스케쥴링 결과에서 중단점을 설정할 유효 연산들을 결정할 수 있다.
일 실시예에 따르면, 비유효 연산 정보(310)는 비유효 연산 정보 생성 장치(300)에 의해 생성될 수 있다. 비유효 연산 정보 생성 장치(300)는 컴파일러(200)의 모듈로 스케쥴링 도중 또는 스케쥴링이 완료된 후 그 모듈로 스케쥴링 결과(210)에서 프롤로그 또는 에필로그의 비유효 연산들을 판단하고, 그 판단 결과에 기초하여 비유효 연산 정보(310)를 생성할 수 있다. 이때, 비유효 연산 정보 생성 장치(300)는 컴파일러(200)의 일 구성 모듈일 수 있다.
이때, 비유효 연산 정보(310)는 스케쥴링 결과(210)에서 프롤로그 및 에필로그의 비유효 연산이 존재하는 사이클 번호 및 그 비유효 연산이 매핑된 기능 유닛의 아이디 정보를 포함할 수 있다.
유효연산결정부(110)는 스케쥴링 결과(210) 및 비유효 연산 정보(310)를 입력받고, 비유효 연산 정보(310)를 이용하여 스케쥴링 결과(210)에서 매 사이클마다 프롤로그 및 에필로그에 매핑된 비유효 연산을 판단한다. 또한, 사용자에 의해 설정된 소스 코드의 중단점 설정 라인에 대응하는 연산들 중 판단된 비유효 연산들을 제외하고 유효한 연산들을 결정한다. 스케쥴링 결과(210)는 메모리에 저장될 수 있고, 유효연산결정부(110)는 그 메모리에서 스케쥴링 결과(210)를 읽을 수 있다.
중단점설정부(120)는 유효연산결정부(110)에서 결정된 유효 연산들에 대응하는 주소에 중단점을 설정한다. 즉, 중단점설정부(120)는 소스 프로그램이 프로세서에서 실행되다가 중단점을 만나면 그 프로세서는 그 소스 프로그램의 실행을 중단하고 제어(contrl)를 디버깅 장치(100)로 넘겨주도록 설정한다.
도 2는 일 실시예에 따라 재구성 가능 프로세서에서 스케쥴링될 예제 C 코드이다. 도 3은 도 2의 예제 C 코드가 재구성 가능 프로세서에서 스케쥴링된 결과이다. 도 4는 도 3의 스케쥴링 결과에 대한 비유효 연산 정보의 예이다.
도 2의 예제 코드는 C 언어로 쓰여진 것으로, 정수 i를 0부터 N-1까지 1씩 증가시켜 가면서, i 값에 10을 곱하여 그 곱한 결과를 계속 더해가면서 그 더한 결과를 메모리에 계속 저장하는 소스 코드이다. 이 소스 코드는 동일한 명령어들이 N번 반복 수행되는 루프이다. 컴파일러(200)가 이 소스 코드를 루프 언롤링 기반의 모듈로 스케쥴링을 수행한 결과(210)를 도 3에 예시하였다.
도 3을 참조하면, CGA는 10개의 기능 유닛(Fu00 ~Fu09)을 포함하고 있으며, 컴파일러(200)는 이 소스 코드를 모듈로 스케쥴링을 통해 CGA 프로세서의 각 기능 유닛에 매핑한다. 도 3은 도 2의 예제 코드에서 N이 3인 경우를 스케쥴링한 결과로서, 사이클 0에서 6까지는 프롤로그, 사이클 7에서 14는 루프 바디 즉, 커널을 나타내며, 사이클 15에서 18은 에필로그를 나타낸다.
도 3의 스케쥴링 결과(210)에서 프롤로그와 에필로그에 이탤릭체로 나타낸 연산이 비유효 연산을 의미한다. 프롤로그에서 9개의 연산과, 에필로그에서 5개의 연산이 비유효 연산임을 알 수 있다. 다만, 설명의 편의를 위해 스케쥴링 결과(210)에서 비유효 연산을 이탤릭체로 구분하여 나타내었을 뿐이며, 실제 스케쥴링 결과(210)에 비유효 연산과 유효 연산이 구분되어 생성되는 것은 아니다.
도 4는 스케쥴링 결과(210)에서 프롤로그 및 에필로그의 비유효 연산들에 대한 정보를 예시한 것으로, 이 비유효 연산 정보(310)는 파일 또는 테이블 형식으로 생성될 수 있다. 전술한 바와 같이, 비유효 연산 정보(310)는 컴파일러(200)가 스케쥴링 도중 또는 스케쥴링이 완료된 후 그 스케쥴링 결과(210)를 이용하여 비유효연산정보생성장치(300)에 의해 생성될 수 있다.
이때, 비유효 연산 정보(310)는 도 4에 예시된 바와 같이, 스케쥴링 결과(210)에서 비유효 연산이 존재하는 사이클 번호 및 그 비유효 연산이 매핑된 아이디 정보를 포함할 수 있다.
예를 들어, 도 4를 참조하면, 프롤로그의 사이클 0의 기능 유닛 1, 5에 매핑된 add 연산, 사이클 1의 기능 유닛 0, 4, 9에 각각 매핑된 add, mov, lsl 연산, 사이클 2의 기능 유닛 0에 매핑된 st_i 연산, 사이클 5의 기능 유닛 0, 4에 각각 매핑된 add, mov연산, 사이클 6의 기능 유닛 0에 매핑된 st_i 연산은 비유효 연산임을 알 수 있다.
만약, 도 2의 소스 코드에서 N이 3이고, 사용자가 도 2의 소스 코드 라인 34에 중단점을 설정하고자 하는 경우, 도 3에 예시된 스케쥴링 결과(210)에 따르면, 컴파일러(200)의 루프 언롤링 기반의 모듈로 스케쥴링에 의해 라인 34의 덧셈 연산에 해당하는 'add'연산이 사이클 1, 5, 9, 13, 17의 기능 유닛(Fu 00)에 5번 반복 수행되도록 매핑되어 있음을 알 수 있다.
따라서, 유효연산결정부(110)는 비유효 연산 정보(310)를 이용하여 사이클 1과 5의 'add'연산은 비유효 연산으로 판단하고, 이를 제외하여 사이클 9, 13 및 17의 'add'연산을 유효 연산으로 결정한다.
중단점설정부(120)는 이와 같이 결정된 사이클 9, 13 및 17에 대응되는 주소에 중단점을 설정한다.
개시된 실시예에 따르면, CGA에서 미리 생성된 프롤로그 또는 에필로그의 비유효 연산들에 대한 정보를 이용하여 소스 레벨의 디버깅을 수행할 수 있으며, 이러한 비유효 연산들을 제외하고 유효한 연산들에 대해서만 중단점을 설정할 수 있어, 소스 레벨 디버깅 성능을 크게 향상시킬 수 있다.
도 5는 일 실시예에 따른 재구성 가능 프로세서의 소스 레벨 디버깅 방법의 흐름도이다.
도 5를 참조하여, 도 1의 실시예에 따른 재구성 가능 프로세서의 소스 레벨 디버깅 장치를 이용한 디버깅 방법을 설명하면, 먼저, 비유효 연산 정보(310)를 이용하여 소스 코드 스케쥴링 결과(210)에서 중단점을 설정할 유효 연산들을 결정한다(단계 410). 앞에서 자세히 설명한 바와 같이, 비유효 연산 정보(310)는 컴파일러(200)의 모듈로 스케쥴링 결과(210)에서 프롤로그 및 에필로그의 비유효 연산이 존재하는 사이클 번호 및 그 비유효 연산이 매핑된 기능 유닛의 아이디 정보를 포함할 수 있다.
소스 레벨 디버깅 장치(100)는 스케쥴링 결과(210) 및 비유효 연산 정보(310)를 입력받는다. 입력된 비유효 연산 정보(310)를 이용하여 스케쥴링 결과(210)에서 매 사이클마다 프롤로그 및 에필로그에 매핑된 비유효 연산을 판단하고, 사용자에 의해 설정된 소스 코드의 중단점 설정 라인에 대응하는 연산들 중 판단된 비유효 연산들을 제외하고 유효한 연산들을 결정할 수 있다.
즉, 도 2 내지 도 4를 참조하여 전술한 바와 같이, 사용자가 도 2의 소스코드 34라인에 중단점을 설정하고자 하면, 소스 레벨 디버깅 장치(100)는 비유효 연산 정보(310)를 참조하여 소스 코드 라인 34의 덧셈 연산에 해당하는 'add' 연산들 즉, 도 3의 스케쥴링 결과(210)에서 사이클 1, 5, 9, 13, 17의 기능 유닛(Fu 00)에 매핑되어 있는 'add'연산들 중에서 사이클 1 및 5의 'add' 연산들을 비유효 연산으로 판단하고, 사이클 9, 13 및 17의 'add'연산들을 유효 연산으로 결정한다.
그 다음, 결정된 유효연산들에 대응하는 주소에 중단점을 설정한다(단계 420). 즉, 소스 레벨 디버깅 장치(100)는 사이클 9, 13 및 17번째의 주소에 중단점을 설정함으로써 유효한 연산들에 대해서만 중단점 설정이 가능하다.
한편, 본 발명의 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: 소스 레벨 디버깅 장치 110: 유효연산결정부
120: 중단점설정부 200: 컴파일러
210: 스케쥴링 결과 300: 비유효연산정보생성장치
310: 비유효 연산 정보

Claims (10)

  1. 비유효 연산 정보를 이용하여 소스 코드 스케쥴링 결과에서 중단점을 설정할 유효 연산들을 결정하는 유효연산결정부; 및
    상기 결정된 유효 연산들에 대응하는 주소에 중단점을 설정하는 중단점설정부;를 포함하는 재구성 가능 프로세서의 소스 레벨 디버깅 장치.
  2. 제1항에 있어서, 상기 재구성 가능 프로세서는,
    CGA(coarse grained array) 기반의 프로세서인 재구성 가능 프로세서의 소스 레벨 디버깅 장치.
  3. 제1항에 있어서, 상기 스케쥴링 결과는,
    컴파일러에 의한 루프 언롤링(loop unrolling) 기반의 모듈로 스케쥴링(modulo scheduling) 결과인 것인 재구성 가능 프로세서의 소스 레벨 디버깅 장치.
  4. 제3항에 있어서, 상기 비유효 연산은,
    상기 루프 언롤링 기반의 모듈로 스케쥴링에 따라 프롤로그 또는 에필로그에 매핑된 연산인 것인 재구성 가능 프로세서의 소스 레벨 디버깅 장치.
  5. 제4항에 있어서, 상기 비유효 연산 정보는,
    상기 프롤로그 또는 에필로그의 비유효 연산이 존재하는 사이클 번호 및 그 비유효 연산이 매핑된 기능 유닛(Function unit)의 아이디 정보를 포함하는 재구성 가능 프로세서의 소스 레벨 디버깅 장치.
  6. 비유효 연산 정보를 이용하여 소스 코드 스케쥴링 결과에서 중단점을 설정할 유효 연산들을 결정하는 단계; 및
    상기 결정된 유효 연산들에 대응하는 주소에 중단점을 설정하는 단계;를 포함하는 재구성 가능 프로세서의 소스 레벨 디버깅 방법.
  7. 제6항에 있어서, 상기 재구성 가능 프로세서는,
    CGA(coarse grained array) 기반의 프로세서인 재구성 가능 프로세서의 소스 레벨 디버깅 방법.
  8. 제6항에 있어서, 상기 스케쥴링 결과는,
    컴파일러에 의한 루프 언롤링(loop unrolling) 기반의 모듈로 스케쥴링(modulo scheduling) 결과인 것인 재구성 가능 프로세서의 소스 레벨 디버깅 방법.
  9. 제8항에 있어서, 상기 비유효 연산은,
    상기 루프 언롤링 기반의 모듈로 스케쥴링에 따라 프롤로그 또는 에필로그에 매핑된 연산인 것인 재구성 가능 프로세서의 소스 레벨 디버깅 방법.
  10. 제9항에 있어서, 상기 비유효 연산 정보는,
    상기 프롤로그 또는 에필로그의 비유효 연산이 존재하는 사이클 번호 및 그 비유효 연산이 매핑된 기능 유닛(Function unit)의 아이디 정보를 포함하는 재구성 가능 프로세서의 소스 레벨 디버깅 방법.
KR1020120073012A 2012-07-04 2012-07-04 재구성 가능 프로세서의 소스 레벨 디버깅 장치 및 방법 KR20140005526A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020120073012A KR20140005526A (ko) 2012-07-04 2012-07-04 재구성 가능 프로세서의 소스 레벨 디버깅 장치 및 방법
CN201310279099.9A CN103530214A (zh) 2012-07-04 2013-07-04 用于可重构处理器的源码级调试设备与方法
JP2013140866A JP2014013570A (ja) 2012-07-04 2013-07-04 再構成可能プロセッサのソースレベルデバッギング装置及び方法
US13/935,634 US20140013312A1 (en) 2012-07-04 2013-07-05 Source level debugging apparatus and method for a reconfigurable processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120073012A KR20140005526A (ko) 2012-07-04 2012-07-04 재구성 가능 프로세서의 소스 레벨 디버깅 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20140005526A true KR20140005526A (ko) 2014-01-15

Family

ID=49879536

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120073012A KR20140005526A (ko) 2012-07-04 2012-07-04 재구성 가능 프로세서의 소스 레벨 디버깅 장치 및 방법

Country Status (4)

Country Link
US (1) US20140013312A1 (ko)
JP (1) JP2014013570A (ko)
KR (1) KR20140005526A (ko)
CN (1) CN103530214A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150112328A (ko) * 2014-03-27 2015-10-07 삼성전자주식회사 구성 데이터를 압축 및 복원하는 방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9348567B2 (en) * 2014-07-03 2016-05-24 Microsoft Technology Licensing, Llc. Profile guided optimization in the presence of stale profile data
CN111008133B (zh) * 2019-11-29 2021-04-27 中国科学院计算技术研究所 粗粒度数据流架构执行阵列的调试方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3260083B2 (ja) * 1996-09-03 2002-02-25 株式会社東芝 デバッグシステム及びデバッグ方法
JP4909877B2 (ja) * 2007-11-29 2012-04-04 株式会社東芝 デバッグ装置及びデバッグ方法
CN102096629B (zh) * 2009-12-14 2013-09-25 华为技术有限公司 经过性断点设置、调试方法和装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150112328A (ko) * 2014-03-27 2015-10-07 삼성전자주식회사 구성 데이터를 압축 및 복원하는 방법

Also Published As

Publication number Publication date
JP2014013570A (ja) 2014-01-23
US20140013312A1 (en) 2014-01-09
CN103530214A (zh) 2014-01-22

Similar Documents

Publication Publication Date Title
Nohl et al. A universal technique for fast and flexible instruction-set architecture simulation
US8554535B2 (en) Instruction-set architecture simulation techniques using just in time compilation
US8549468B2 (en) Method, system and computer readable storage device for generating software transaction-level modeling (TLM) model
US9495136B2 (en) Using aliasing information for dynamic binary optimization
US7596781B2 (en) Register-based instruction optimization for facilitating efficient emulation of an instruction stream
EP3895022B1 (en) Improving emulation and tracing performance using compiler-generated emulation optimization metadata
Andronick et al. Proof of OS scheduling behavior in the presence of interrupt-induced concurrency
JP2023518833A (ja) ハードウェアアクセラレーションリソースを有効にするためのコンパイラ主導のタイル置換
WO2023107789A1 (en) Deterministic replay of a multi-threaded trace on a multi-threaded processor
KR20140005526A (ko) 재구성 가능 프로세서의 소스 레벨 디버깅 장치 및 방법
Engelhardt et al. An integrated hardware-software approach to task graph management
US11500644B2 (en) Custom instruction implemented finite state machine engines for extensible processors
EP3906470A1 (en) Techniques for scheduling instructions in compiling source code
Stitt et al. Thread warping: Dynamic and transparent synthesis of thread accelerators
Becker et al. A Mixed Level Simulation Environment for Stepwise RTOS Software Refinement
Kaufmann et al. Superblock compilation and other optimization techniques for a Java-based DBT machine emulator
KR102025694B1 (ko) 재구성 가능한 프로세서의 검증 방법
Hiramatsu The Enhancement of Kernel Probing-Kprobes Jump Optimization
Zilli et al. Hardware/software co-design for a high-performance Java Card interpreter in low-end embedded systems
Ooi et al. Dual-Engine Cross-ISA DBTO Technique Utilising MultiThreaded Support for Multicore Processor System
Wu et al. An extended SystemC framework for efficient HW/SW co-simulation
Zhang et al. High-performance instruction-set simulator for TMS320C62x DSP
Chung et al. HSA Simulators
Lin et al. The Design and Experiments of A SID-Based Power-Aware Simulator for Embedded Multicore Systems
Holm High performance microprocessor emulation for software validation facilities and operational simulators

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