KR20130107344A - 툴 생성기 - Google Patents

툴 생성기 Download PDF

Info

Publication number
KR20130107344A
KR20130107344A KR1020137018881A KR20137018881A KR20130107344A KR 20130107344 A KR20130107344 A KR 20130107344A KR 1020137018881 A KR1020137018881 A KR 1020137018881A KR 20137018881 A KR20137018881 A KR 20137018881A KR 20130107344 A KR20130107344 A KR 20130107344A
Authority
KR
South Korea
Prior art keywords
target
generator
processor
compiler
assembler
Prior art date
Application number
KR1020137018881A
Other languages
English (en)
Inventor
수레쉬 카디얄라
마드하비 카디얄라
산제이 배너지
사티쉬 파드마나반
제임스 플레이어
Original Assignee
알고토칩 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 알고토칩 코포레이션 filed Critical 알고토칩 코포레이션
Publication of KR20130107344A publication Critical patent/KR20130107344A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Abstract

본 발명은 목표 프로세서의 기술(description)을 수신하는 단계; 컴파일러 생성기를 사용해서 목표 컴파일러를 자동으로 생성하는 단계; 어셈블러 생성기를 사용해서 목표 어셈블러를 자동으로 생성하는 단계; 링커 생성기를 사용해서 목표 링커를 자동으로 생성하는 단계; 시뮬레이터 생성기를 사용해서 목표 시뮬레이터를 자동으로 생성하는 단계; 프로파일러 생성기를 사용해서 목표 프로파일러를 자동으로 생성하는 단계; 생성된 목표 컴파일러, 어셈블러, 링커, 시뮬레이터, 및 프로파일러를 사용해서 모든 사용자 제약들 또는 요구 사항들이 만족될 때까지 프로세서 아키텍처의 하나 이상의 파라미터들을 변경함으로써 새로운 프로세서 아키텍처를 반복해서 생성하는 단계; 각각의 프로세서 아키텍처에 대해, 각각의 프로세서 아키텍처를 위한 목표 컴파일러, 어셈블러, 링커, 시뮬레이터, 및 프로파일러를 재생성하는 단계; 및 최적의 생성된 프로세서 아키텍처를 반도체 제조를 위한 커스텀 집적 회로의 컴퓨터 판독 가능 기술에 합성하는 단계에 의해 자동으로 생성된 프로세서 아키텍처를 위한 소프트웨어 개발 툴들을 자동으로 생성하기 위한 시스템 및 방법이 기술된다.

Description

툴 생성기 {TOOL GENERATOR}
본 발명은 커스텀 집적 회로(IC) 또는 주문형 집적 회로(ASIC)를 위한 소프트웨어 개발 툴들을 자동으로 생성하는 방법에 관한 것이다.
프로세서를 위한 소프트웨어를 개발하기 위해, 소프트웨어 개발 툴들의 집합이 필요하다. 이러한 툴들은 도 1에 도시된 컴파일러, 어셈블러, 링커, 시뮬레이터, 및 프로파일러를 포함하지만, 이들로 제한되지는 않는다.
컴파일러는 C/C++ 등의 고수준 언어를 취해서, 예를 들어, x86, MIPS, ARM과 같은 특정 프로세서의 어셈블리 언어로 변환한다. 어셈블러는, 육필 기록 또는 컴파일러에 의해 생성된 어셈블리 언어를 취하여, 객체 파일을 생성한다. 객체 파일은 특정 프로세서에 의해 이해되는 일련의 바이너리 명령들을 포함한다. 따라서, 어셈블러는, 무엇보다, x86, MIPS, ARM과 같은 특정 프로세서에 의해 이해되는 바이너리 형태로 어셈블리 코드를 번역한다. 링커는 어셈블러에 의해 생성된 하나 이상의 객체 파일들을 취하고, 바이너리 코드에서 모든 재할당들을 실행함으로써 함께 링크하여, 실행 가능한 파일을 생성한다.
새로운 프로세서를 개발하는 프로세스에서, 프로세서가 존재하지 않기에, 설계중인 프로세서를 시뮬레이트하는 시뮬레이터가 통상 개발된다. 시뮬레이터는 개발중인 프로세서를 위한 소프트웨어 모델이다. 모델은 프로세서의 기능적 동등물로부터 프로세서의 주기 정확 모델까지 범위가 변할 수 있다. 모델은 시뮬레이터를 개발하기 위해 채택되고, 설계중인 프로세서의 충실한 반영이며, 따라서, 설계중인 프로세서에 매우 특정적이다. 시뮬레이트 중인 프로세서가 하는 것과 같이, 시뮬레이터는 하나 이상의 실행 가능한 (프로그램들) 및 그 대응 데이터 벡터들을 취하고, 프로그램을 실행한다. 시뮬레이터는 명령 추적 및 데이터 추적에 이르는 실행 추적을 선택적으로 내놓을 수 있다.
소프트웨어 개발 키트들(SDK)은 사용자 애플리케이션들을 디버깅하기 위한 디버거를 항상 포함한다. 디버거는, 예를 들어, 사용자 프로그램들을 디버깅하고, 브레이크포인트들, 워치 포인트들(watch points), 싱글 스테핑(single stepping), 스택 역추적들 등의 각종 디버그 커맨드들을 지원하는데 사용된다.
소프트웨어 개발에 필요한 모든 소프트웨어 툴들은 프로세서에 특정적이다. 즉, 예를 들어, MIPS 프로세서, IBM PowerPC, 또는 SUN-SPARC를 위한 소프트웨어의 개발을 원하면, C-컴파일러, 어셈블러, 링커, 시뮬레이터, 및 디버거는 MIPS 프로세서에 대해 개발될 필요가 있다. 이러한 모든 툴들의 개발은 각각의 프로세서에 대해 수 인/해(man year)가 필요하다.
목표 프로세서의 기술(description)을 수신하는 단계; 컴파일러 생성기를 사용해서 목표 컴파일러를 자동으로 생성하는 단계; 어셈블러 생성기를 사용해서 목표 어셈블러를 자동으로 생성하는 단계; 링커 생성기를 사용해서 목표 링커를 자동으로 생성하는 단계; 시뮬레이터 생성기를 사용해서 목표 시뮬레이터를 자동으로 생성하는 단계; 프로파일러 생성기를 사용해서 목표 프로파일러를 자동으로 생성하는 단계; 생성된 목표 컴파일러, 어셈블러, 링커, 시뮬레이터, 및 프로파일러를 사용해서 모든 사용자 제약들 또는 요구 사항들이 만족될 때까지 프로세서 아키텍처의 하나 이상의 파라미터들을 변경함으로써 새로운 프로세서 아키텍처를 반복해서 생성하는 단계; 각각의 프로세서 아키텍처에 대해, 각각의 프로세서 아키텍처를 위한 목표 컴파일러, 어셈블러, 링커, 시뮬레이터, 및 프로파일러를 재생성하는 단계; 및 최적의 생성된 프로세서 아키텍처를 반도체 제조를 위한 커스텀 집적 회로의 컴퓨터 판독 가능 기술에 합성하는 단계에 의해 자동으로 생성된 프로세서 아키텍처를 위한 소프트웨어 개발 툴들을 자동으로 생성하기 위한 시스템 및 방법이 기술된다.
상기 양상들의 구현들은 이하 중 하나 이상을 포함할 수 있다. 컴파일러 생성기는 고려중인 프로세서의 고수준 기술을 판독한다. 프로세서 ISA의 각종 명령들의 의미를 판독하고, 목표 프로세서 파이프라인의 모델 및 명령들의 주석 의미 트리들을 만들고, 목표 프로세서 코드 생성, 호출 스택 레이아웃, 레지스터 할당, 명령 스케줄링, 브랜치 예측, 명령 및 데이터 프리페치들, 및 목표 프로세서에서 가능한 각종 다른 최적화들에 필요한 코드를 생성한다. 어셈블러 생성기는 각종 명령들의 구문, 바이너리 인코딩 및 각종 명령들에 적용될 필요가 있는 가능한 재할당들을 판독한다. 이 정보에 기초하여, 어셈블러를 생성한다. 어셈블러 생성기는 구문 및 유효 피연산자들과 함께, 목표 프로세서의 명령들, 및 그 범위들의 리스트를 취하고, 어셈블러가 명령의 구문을 체크하고, 프로세서 명세들에 따라 명령들을 인코딩하며, 임의의 미해결 심볼들에 대해, 임의의 관련 재할당 레코드들을 출력하게 만든다. 링커 생성기는 객체 파일들 및 라이브러리들을 취하는 객체 파일 링커를 생성하고, 실행 가능한 파일을 생성하며, 모든 재할당들이 객체 코드에 적용된다. 시뮬레이터 생성기는 파이프라인 구조, ISA, 명령들의 구문들, 및 하드웨어 블록들 각각의 특성들이 정의된 기계 기술을 판독한다. 아키텍처의 모든 요소들의 정의들에 기초하여, 시뮬레이터 생성기는, 캐시 모델링, 메모리 모델, 및 인터럽트 모델을 포함하는, 프로세서의 주기 정확 모델을 생성한다. 이 시뮬레이터는 시뮬레이터 생성기에 의해 자동으로 생성되고, 생성된 시뮬레이터는 실제 하드웨어 모델을 정확하게 반영한다. 프로파일러 생성기는, 무엇보다, 목표 기계 레지스터들의 기술, 및 명령 집합을 취하고, 목표 기계에서 실행중인 애플리케이션의 정적 및 동적 실행 프로파일을 생성하는 목표 프로세서의 프로파일러를 생성한다. 디버거 생성기는 호출 스택 레이아웃과 함께 목표 프로세서의 명령 집합의 기술을 취하고, 목표 프로세서에 특정적인 디버거를 생성한다. 따라서, 생성된 디버거는 상술된 주기 기반 시뮬레이터, 또는 실제 하드웨어 칩에 연결될 수 있다. 호출 스택 해석, 호출 스택의 풀림, 명령들의 디어셈블리, 목표 기계에서의 레지스터들의 수 및 속성은 모두 디버거 생성기의 일부로서 자동으로 생성된다.
다른 구현들은 이하를 포함할 수 있다. 각각의 아키텍처 최적화 반복에 있어서, 본 시스템은 프로세서 스칼라(scalarity) 및 명령 그룹 규칙들을 최적화할 수 있다. 본 시스템은 필요한 코어들의 수를 최적화하고, 효율적으로 코어들을 사용하기 위해 명령 스트림을 자동으로 분할할 수 있다. 프로세서 아키텍처 최적화는 명령 집합을 변경하는 것을 포함한다. 시스템의 명령 집합을 변경하는 것은, 필요한 명령들의 수를 감소시키고, 명령 디코딩 속도 및 명령 메모리 크기 요구 사항을 향상시키기 위한 명령들을 인코딩하는 것을 포함한다. 프로세서 아키텍처 최적화는, 레지스터 파일 포트, 포트 폭, 및 데이터 메모리에 대한 포트들의 수 중 하나 이상을 변경하는 것을 포함한다. 프로세서 아키텍처 최적화는, 데이터 메모리 크기, 데이터 캐시 프리-페치 방침, 데이터 캐시 구성, 명령 메모리 크기, 명령 캐시 프리-페치 방침, 및 명령 캐시 구성 중 하나 이상을 변경하는 단계를 포함한다. 프로세서 아키텍처 최적화는 코-프로세서를 추가하는 단계를 포함한다. 본 시스템은 프로세서 아키텍처의 성능을 향상시키기 위해 컴퓨터 판독 가능 코드에 유일하게 커스터마이즈된 새로운 명령들을 자동으로 생성할 수 있다. 본 시스템은 컴퓨터 판독 가능 코드를 파싱(parsing)하는 것을 포함하고, 더미 할당들을 제거하고; 중복 루프 동작들을 제거하고; 필요한 메모리 대역폭을 식별하고; 하나 이상의 소프트웨어 플래그들을 하나 이상의 하드웨어 플래그들로 교체하며; 만료된 변수들을 재사용하는 것을 더 포함한다. 파라미터들을 추출하는 것은, 각각의 라인에 대해 실행 주기 시간을 결정하고; 각각의 라인에 대해 실행 클록 주기를 결정하고; 하나 이상의 빈들에 대한 클록 주기 카운트를 결정하고; 연산자 통계표를 생성하고; 각각의 함수에 대해 통계들을 생성하며; 실행 카운트의 내림차순에 의해 라인들을 정렬하는 것을 더 포함한다. 본 시스템은 흔히 사용되는 명령들을 하나 이상의 그룹들로 만들 수 있으며, 성능을 향상시키기 위해 각각의 그룹에 대한 커스텀 명령을 생성할 수 있다(명령 몰딩). 본 시스템은 아키텍처 파라미터 변경에 대한 타이밍 및 면적 비용들을 결정할 수 있다. IMC들로 교체될 수 있는 프로그램의 시퀀스들이 식별된다. 이는 코드의 기능의 타협 없이 적절성을 최대화하기 위해 시퀀스 내에 명령들을 재구성하는 기능을 포함한다. 본 시스템은 캐시 프리페칭 및 캐시 조직을 최적화하기 위해 스트라이드 및 메모리 액세스 패턴들 및 메모리 종속성에 대한 포인터 행진 및 생성 통계들을 추적할 수 있다.
본 시스템은 또한 컴퓨터 판독 가능 코드의 정적 프로파일링 및/또는 컴퓨터 판독 가능 코드의 동적 프로파일링을 실행하는 것을 포함한다. 시스템 칩 명세는 컴퓨터 판독 가능 코드의 프로파일들에 기초하여 설계된다. 시스템 칩 명세는 컴퓨터 판독 가능 코드의 정적 및 동적 프로파일링에 기초하여 증분식으로 더 최적화될 수 있다. 컴퓨터 판독 가능 코드는, 선택된 아키텍처를 위한 펌웨어를 생성하기 위해 링크된 최적 어셈블리 코드로 컴파일링될 수 있다. 시뮬레이터는 펌웨어의 주기 정확 시뮬레이션을 실행할 수 있다. 본 시스템은 펌웨어의 동적 프로파일링을 실행할 수 있다. 본 방법은 추가로 프로파일링된 펌웨어에 기초하여 또는 추가로 어셈블리 코드에 기초하여 칩 명세를 최적화하는 것을 포함한다. 본 시스템은 설계된 칩 명세를 위한 레지스터 전송 레벨(RTL)을 자동으로 생성할 수 있다. 본 시스템은 또한 실리콘을 제조하기 위해 RTL 코드의 합성을 실행할 수 있다.
양호한 실시예들의 장점들은 이하 중 하나 이상을 포함할 수 있다. 본 시스템은 ASIC 및 ASIP용 소프트웨어 개발 툴들의 개발을 위한 회송 시간 및 설계 비용을 상당히 감소시킨다. 이는, 임의의 특정 "칩" 설계가 아니라, 기본 알고리즘을 염두에 두고 "C"로 기록된 애플리케이션을 이용함으로써 실행된다. 그 후, 본 시스템은, 칩에서 실행되는 필요한 소프트웨어 개발 키트 및 펌웨어와 함께, 알고리즘을 구현하기 위해 프로세서 기반 칩 설계를 자동으로 생성한다. 프로세스는 ASIP/ASIC을 위한 수 인/해에 비해 설계를 생산하는데 수 주 걸린다.
본 시스템은 "아키텍처 최적화기(AO)"에 의존함으로써 애플리케이션의 요구 사항들에 부응하도록 칩 설계를 자동으로 생성할 수 있다. 주기 정확 시스템 레벨 시뮬레이터로부터 획득된 알고리즘의 실행 프로파일, 및 알고리즘의 정적 프로파일, 및 칩에 들어가는 각종 하드웨어 블록들의 특징에 기초하여, AO는 성능, 전력, 및 비용의 판매 회사 요구 사항들을 만족시킬 최적 하드웨어 구성을 결정한다. 알고리즘의 분석에 기초하여, AO는 쉽게 구할 수 있는 알고리즘에 하드웨어를 최적화할 뿐만 아니라, 성능 요구 사항들을 만족시키는 제안된 칩 아키텍처를 생산한다. AO는 소정의 알고리즘에 대한 최적 하드웨어로 수렴되도록, 일련의 반복 단계들로 최적 아키텍처를 생산한다.
본 시스템은 모든 비용들이 고려되고, 시스템 설계자들이 최상의 가능한 수 표현 및 평가할 비트 폭 후보들을 획득하도록 평가 프로세스를 자동화한다. 본 방법은 신속하고 자동화된 방식으로 소정의 아키텍처의 면적, 타이밍 및 전력 비용을 평가할 수 있다. 이 방법은 비용 계산 엔진으로서 사용된다. 본 방법은 최적 방식으로 알고리즘에 기초하여 자동으로 DSP의 합성을 가능케 한다. 본 시스템 설계자는 다른 것에 대한 특정 표현의 선택과 연관된 하드웨어 면적, 지연 및 전력 비용을 알 필요가 없다. 본 시스템은 하드웨어 면적, 지연 및 전력이 알고리즘 평가 스테이지에서 가능한 한 정확하게 모델링될 수 있게 한다.
본 시스템의 양호한 실시예들의 다른 장점들은 이하 중 하나 이상을 포함할 수 있다. 본 시스템은 칩 설계의 문제점들을 경감하고 간단한 프로세스가 되게 한다. 실시예들은 제품 개발 프로세스의 중심 사안을 하드웨어 구현 프로세스로부터 다시 제품 명세 및 컴퓨터 판독 가능 코드 또는 알고리즘 설계로 옮긴다. 특정 하드웨어 선택 사항들에 매여 있는 대신, 해당 애플리케이션에 특별히 최적화된 프로세서에서 컴퓨터 판독 가능 코드 또는 알고리즘이 구현될 수 있다. 양호한 실시예는 모든 연관된 소프트웨어 툴들 및 펌웨어 애플리케이션들과 함께 최적화된 프로세서를 자동으로 생성한다. 이 프로세스는 종래대로 수 년간이 아닌 수 일에 실행될 수 있다. 기술된 자동 시스템은 리스크를 제거하고 칩 설계가 자동 프로세스가 되게 해서, 시스템으로의 주요 입력이 저수준 프리미티브들이 아닌 컴퓨터 판독 가능 코드, 모델 또는 알고리즘 명세이기에, 알고리즘 설계자들 자체가 임의의 칩 설계 정보 없이 하드웨어 칩을 직접 만들 수 있다.
본 시스템을 사용하는 또 다른 이점들은 이하를 포함할 수 있다.
1) 속도: 칩 설계 주기들이 수 년이 아닌 수 주에 걸쳐 측정되면, 본 시스템을 사용하는 회사들은 제품들을 신속하게 시장에 내놓음으로써 급속히 변하는 시장에 침투할 수 있다.
2) 비용: 통상 칩 구현에 고용될 필요가 있는 많은 엔지니어들이 정리 해고된다. 이는 본 시스템을 사용하는 회사들에게 엄청난 비용 절약을 가져다준다.
3) 최적성: 본 시스템 제품을 사용해서 설계된 칩들은 우세한 성능, 면적 및 전력 소비를 가진다.
본 시스템은 디지털 칩 컴포넌트를 가진 시스템들의 설계에서 사용된 방법에서 전형적인 예의 완전한 시프트이다. 본 시스템은, 생성된 디지털 하드웨어와 함께 작업하는 소프트웨어 개발 툴들의 완전한 집합과 함께, C/Matlab으로 기술된 알고리즘들로부터 디지털 하드웨어를 생성하는 완전히 자동화된 소프트웨어 제품이다. 본 시스템은 C 또는 Matlab 등의 고수준 언어를 취하는 프로세스에 독특한 기법을 사용해서 하드웨어 칩 및 연관된 소프트웨어 개발 툴들을 구현한다. 아주 간결히 말해서, 칩 설계를 완전히 자동화된 소프트웨어 프로세스가 되게 한다.
도 1은 특정 프로세서를 위한 소프트웨어 개발 툴들의 일례의 집합을 도시한다.
도 2는 소프트웨어 개발 툴들을 자동으로 생성하기 위한 일례의 시스템을 도시한다.
도 3은 도 2의 툴 생성기를 사용해서 자동으로 생성된 컴퓨터 아키텍처에 커스터마이즈된 툴들을 생성하기 위한 일례의 시스템을 도시한다.
도 4는 아키텍처 최적화기에 의해 정의된 아키텍처를 가진 커스텀 IC를 자동으로 생성하는 일례의 시스템을 도시한다.
도 2는 자동으로 생성된 컴퓨터 아키텍처에 커스터마이즈된 툴들을 생성하기 위한 일례의 시스템을 도시한다. 툴 생성기는 목표 프로세서 기술 파일들(12)을 수신한다. 툴 생성기는 목표 프로세서의 기술을 취하고 각종 소프트웨어 개발 툴들을 생산하는 소프트웨어 모듈이다.
도 2의 실시예에서, 툴 생성기는 목표 컴파일러 생성기(14), 목표 어셈블러 생성기(18), 목표 링커 생성기(22), 목표 시뮬레이터 생성기(24), 목표 프로파일러 생성기(28), 및 목표 디버거 생성기(214)로 구성된다. 모든 소프트웨어 개발 툴들은, 그 후, 단지 목표 프로세서의 기술에 기초하여, 어떠한 인간 개입도 없이, 각종 툴 생성기들에 의해 자동으로 생성된다.
컴파일러 생성기(14)는 고려중인 프로세서의 고수준 기술을 판독한다. 컴파일러 생성기(14)는 프로세서 명령 집합 아키텍처(ISA)의 각종 명령들의 의미를 판독하고, 목표 프로세서 파이프라인의 모델 및 명령들의 주석 의미 트리들을 만들고, 목표 프로세서 코드 생성, 호출 스택 레이아웃, 레지스터 할당, 명령 스케줄링, 브랜치 예측, 명령 및 데이터 프리페치들, 및 목표 프로세서에서 가능한 각종 다른 최적화들에 필요한 코드를 생성한다. 결과는 목표 컴파일러(16)이다.
어셈블러 생성기(18)는 각종 명령들의 구문, 바이너리 인코딩 및 각종 명령들에 적용될 필요가 있는 가능한 재할당들을 판독한다. 이 정보에 기초하여, 어셈블러 생성기(18)는 목표 어셈블러(20)를 생성한다. 어셈블러 생성기는 구문 및 유효 피연산자들과 함께, 목표 프로세서의 명령들, 및 그 범위들의 리스트를 취하고, 어셈블러가 명령의 구문을 체크하고, 프로세서 명세들에 따라 명령들을 인코딩하며, 임의의 미해결 심볼들에 대해, 임의의 관련 재할당 레코드들을 출력하게 만든다.
링커 생성기(22)는 객체 파일들 및 라이브러리들을 취하는 객체 파일 링커와 함께 목표 링커(24)를 생성하고, 실행 가능한 파일을 생성하며, 모든 재할당들이 객체 코드에 적용된다.
시뮬레이터 생성기(24)는 파이프라인 구조, ISA, 명령들의 구문들, 및 하드웨어 블록들 각각의 특성들이 정의된 기계 기술을 판독한다. 아키텍처의 모든 요소들의 정의들에 기초하여, 시뮬레이터 생성기는, 캐시 모델, 메모리 모델, 및 인터럽트 모델을 포함하는, 프로세서의 주기 정확 모델을 생성한다. 목표 시뮬레이터(26)는 시뮬레이터 생성기에 의해 자동으로 생성되고, 생성된 시뮬레이터는 실제 하드웨어 모델을 정확하게 반영한다.
프로파일러 생성기(28)는 명령 집합 아키텍처(ISA) 및 그 의미에 기초하여 목표 아키텍처의 프로파일러를 자동으로 생성하는데 사용될 수 있다. 일 실시예에서, 목표 프로파일러(29)는 목표 시뮬레이터(26) 또는 실제 프로세서로부터의 추적들을 분석하고, 쉽게 구할 수 있는 프로그램의 정적 및 동적 실행 프로파일을 생성한다. 다른 실시예에서, 목표 프로파일러(29)는 모듈의 프로시져들의 개시 및 종료 포인트들에 프로파일링 코드를 추가한다. 이는 프로시져가 호출되는 회수, 전체적으로 프로시져에서 얼마나 많은 시간이 소비되는지, 및 프로시져 호출당 평균 소비 시간의 상세한 측정을 가능케 한다. 측정 자체가 결과들에 영향을 주기에, 경과된 시간들은 서로에 관하여 고려되어야 한다.
일 구현에서, 디버거 생성기(214)는 목표 디버거(216)를 생성하는데 사용될 수 있다. 디버거는 목표 기계에서 사용자 애플리케이션들을 디버그하는데 유용한 툴이다. 디버거 생성기는 호출 스택 레이아웃과 함께 목표 프로세서의 명령 집합의 기술을 취하고, 목표 프로세서에 특정적인 디버거를 생성한다. 따라서, 생성된 디버거는 상술된 주기 기반 시뮬레이터, 또는 실제 하드웨어 칩에 연결될 수 있다. 호출 스택 해석, 호출 스택의 풀림, 명령들의 디어셈블리, 목표 기계에서의 레지스터들의 수 및 속성은 모두 디버거 생성기의 일부로서 자동으로 생성된다.
목표 컴파일러(16), 어셈블러(20), 링커(24), 시뮬레이터(26), 및 프로파일러(29)는, 그 기능이 프로그램, 코드 또는 컴퓨터 모델에 의해 지정된 커스텀 IC 또는 ASIC 장치를 위한 최상의 아키텍처를 자동으로 결정하는데 사용될 수 있다. 상이한 스테이지들이 입력으로서 제공된 소정의 컴퓨터 판독 가능 코드 또는 프로그램에 대한 아키텍처 정의를 획득하는 단계에 수반된다. 일 실시예에서, 프로그램은 C-언어로 기록되지만, C++, Matlab, 또는 Java 등의 다른 언어들이 또한 사용될 수 있다. 프로그램은 목표 컴파일러(16), 어셈블러(20), 및 링커(24)를 사용해서 컴파일링, 어셈블링 및 링크된다. 실행 가능 코드는 시뮬레이터(26) 또는 실제 컴퓨터에서 실행된다. 실행으로부터의 추적들이 목표 프로파일러(29)에 제공된다. 프로파일러에 의해 생성된 정보는, 무엇보다, 정적 실행 및 동적 실행을 위한 호출 그래프들, 코드 실행 프로파일, 레지스터 할당 정보, 및 현재 아키텍처를 포함하고, 정보는 아키텍처 최적화기(AO)에 제공된다. 아키텍처 최적화기의 출력은, 무엇보다, 파이프라인 정보, 컴파일러 호출 규약들, 레지스터 파일들, 캐시 조직, 메모리 조직, 및 명령 집합 아키텍처(ISA) 및 명령 집합 인코딩 정보를 포함하는 아키텍처 명세이다.
그 후, AO는 애플리케이션의 요구 사항들에 부응하도록 칩 설계를 생성한다. 주기 정확 시스템 레벨 시뮬레이터로부터 획득하는 알고리즘의 실행 프로파일, 및 알고리즘의 정적 프로파일, 및 칩에 들어가는 각종 하드웨어 블록들의 특징에 기초하여, AO는 성능, 전력, 및 비용의 판매 회사 요구 사항들을 만족시킬 최적 하드웨어 구성을 결정한다. 알고리즘의 분석에 기초하여, AO는 쉽게 구할 수 있는 알고리즘에 하드웨어를 최적화할 뿐만 아니라, 성능 요구 사항들을 만족시키는 제안된 칩 아키텍처를 생산한다. AO는 소정의 알고리즘에 대한 최적 하드웨어로 수렴되도록, 일련의 반복 단계들로 최적 아키텍처를 생산한다.
어떤 면에서도 국부적인 최소 아키텍처를 달성하는데 갇히지 않도록, AO는, 판매 회사 기준들에 부응하도록, ASIP의 각종 양상들에 대해 이루어진 일련의 계층적 결정들에 기초하여 소정의 알고리즘을 위한 최적 아키텍처를 결정한다. 대신, AO는 전역적으로 최소의 아키텍처를 설계할 수 있다.
AO는 소정의 알고리즘들의 실행 프로파일에 기초하여 알고리즘들의 집합에 적합한 최적의 컴퓨터 아키텍처를 자동으로 생성할 수 있다. 도 3은 아키텍처 최적화기에 따라 최적의 아키텍처를 결정하기 위한 일례의 시스템을 도시한다. 도 3의 시스템은 도 2의 자동으로 생성된 툴들을 사용한다.
도 3에서, 사용자 애플리케이션(30)이 입력으로서 제공된다. 또한, 초기 아키텍처 기술(32)이 명시된다. 아키텍처 기술은 목표 종속성들(37)을 가진 컴파일러(36), 목표 종속성들(39)을 가진 어셈블러(38), 목표 종속성들(41)을 가진 링커(40), 목표 종속성들(43)을 가진 시뮬레이터(42), 및 목표 종속성들(45)을 가진 프로파일러(44)를 위한 목표 종속 정보를 생성하는 툴 생성기(34)에 의해 처리된다. 목표 종속 정보에 기초하여, 사용자 애플리케이션(30)의 프로파일이 생성된다. 프로파일은 주요한 루틴들 및 커널들(가장 많이 실행된 루프들)을 식별한다. 또한, 프로파일은 메모리 트래픽 패턴들을 식별한다. 프로파일은 아키텍처 최적화기(46)에 제공된다. 아키텍처 최적화기(46)는 또한 설계 데이터 모델러(48)로부터의 입력들을 사용한다. 설계 모델러(48)는 특정 하드웨어에 대한 타이밍, 면적, 전력, 및 다른 관련 정보를 제공하고, 이 정보는 요구시 아키텍처 최적화기(46)에 의해 질의받을 수 있다. 최적화기(46)의 출력은 새롭게 최적화된 아키텍처(50)이다. 그 후, 선정된 최적화 목표에 도달될 때까지, 최적화된 아키텍처(50)는 아키텍처의 반복 최적화를 위해 툴 생성기(34)에 제공된다.
새로운 아키텍처가 아키텍처의 컴포넌트들 각각, 및 그 전체 인터커넥션들 각각을 최적화함으로써 획득된다. 소정의 집합의 애플리케이션들/알고리즘들에 있어서, 최적 컴퓨터 시스템 아키텍처는 성능, 비용, 및 전력 등의 각종 요인들에 기초하여 자동으로 결정될 수 있다. 최적 아키텍처는 시스템 레벨 아키텍처 및 프로세서 레벨 아키텍처를 포함한다. 시스템 레벨 아키텍처에 있어서, AO(46)는, 예를 들어, 필요한 메모리의 양, 지원할 메모리 대역폭, DMA 채널들의 수, 클록들, 및 주변 장치들을 자동으로 결정할 수 있다. 프로세서 레벨 아키텍처에 있어서, AO는 알고리즘의 병렬성 및 시스템에 대해 설정된 성능 기준들에 기초한 계산 요소들에 대한 필요 및 스칼라 양; 특정 알고리즘을 효율적으로 구현하는데 필요한 계산 요소들의 타입들; 애플리케이션들을 효율적으로 구현하는데 필요한 계산 요소들의 수; 스테이지들의 수, 명령 발행 속도, 스칼라라는 면에서의 파이프라인 조직, 가산기들의 수, 로드, 기억 유닛들 등이라는 점에서의 계산 요소들의 수, 및 파이프라인 구조의 계산 요소들의 배치; ALU(계산 요소들)의 폭; 레지스터 파일들의 수, 및 레지스터들의 수, 레지스터 폭들, 판독 포트들 및 기록 포트들의 수라는 면에서의 구성; 상태 코드 레지스터들에 대한 필요; 필요한 명령 캐시, 및 데이터 캐시의 양, 및 그 계층에 대한 필요; 명령 캐시 및 데이터 캐시, 라인 크기들, 캐시 스필 & 필 알고리즘들에 대한 개별적인 캐싱 메커니즘을 자동으로 결정할 수 있다.
AO는, 요구시 적절한 때에 프리페치를 실행하기 위해, 사용자의 알고리즘의 코드의 명령 및 데이터 프리페치 명령들을 자동으로 야기할 수 있다. AO는, 캐시들 각각의 답장 방침들; 메모리에 대한 판독 및 기록 포트들의 수, 및 캐시들 및 메모리 간의 버스 폭들; 캐시의 레벨들, 및 공유 또는 개별 명령 캐시 및 데이터 캐시, 또는 조합된 캐시라는 면에서의 조직, 또는 전체 비용 구조를 감소시키지만 고성능을 유지하기 위한, 다중 레벨들로의 조직을 결정할 수 있다.
AO는 메모리 크기, 메모리 매핑 방식, 액세스 크기, 판독/기록 포트들의 수 및 폭들, 및 최대 성능을 얻기 위해 메모리가 어떻게 분할될 수 있는 지라는 면에서의 메모리 계층을 결정할 수 있다. AO는 효율적인 방식으로 알고리즘을 구현하기 위해 기계를 위한 ISA를 자동으로 결정하고, 최소량의 코드 공간을 쓰지만, 고 성능을 달성하도록, 명령 집합을 위한 최적 인코딩을 자동으로 결정할 수 있다. AO는 유효한 레지스터들의 최적 사용을 보장하는 호출 규약들을 자동으로 결정할 수 있다.
상술된 동작들은 소정의 타이밍, 비용, 및 전력 요구 사항들을 만족시키면서, 애플리케이션들(30)에 최적인 칩을 생산하기 위해 최적 전체 시스템 아키텍처를 결정하기 위해 반복해서 계층적인 방식으로 실행될 수 있다.
도 4는 커스텀 IC를 자동으로 생성하는 일례의 시스템을 도시한다. 도 4의 시스템은 선택된 목표 애플리케이션에 대한 커스텀 하드웨어 해결책을 위한 아키텍처의 자동 생성을 지원한다. 목표 애플리케이션 명세는 C/C++, Matlab, SystemC, Fortran, Ada, 또는 임의의 다른 언어와 같은 고수준 언어의 컴퓨터 판독 가능 코드로서 표현된 알고리즘을 통해 통상 실행된다. 명세는 목표 애플리케이션의 기술을 포함하고, 하드웨어 솔루션의 희망 비용, 면적, 전력, 속도, 성능 및 다른 속성들 등의 하나 이상의 제약들도 포함한다.
도 4에서, IC 고객은 제품 명세(102)를 생성한다. 통상, 희망 제품의 모든 주기능을 포착하는 초기 제품 명세가 있다. 제품으로부터, 알고리즘 전문가들은 제품에 필요한 컴퓨터 판독 가능 코드 또는 알고리즘들을 식별한다. 이 알고리즘들 중 일부는 제3국들로부터의 또는 표준 개발 위원회들로부터의 IP로서 유효할 수 있다. 이들 중 일부는 제품 개발의 일부로서 개발되어야만 한다. 이러한 방식으로, 제품 명세(102)는, 무엇보다, C 프로그램 등의 프로그램 또는 Mathlab 모델 등의 수학 모델(math model)로서 표현될 수 있는 컴퓨터 판독 가능 코드 또는 알고리즘(104)으로 더 세부화된다. 제품 명세(102)는, 무엇보다, 비용, 면적, 전력, 프로세스 타입, 라이브러리, 및 메모리 타입 등의 요구 사항들(106)을 또한 포함한다.
컴퓨터 판독 가능 코드 또는 알고리즘(104) 및 요구 사항(106)은 자동화된 IC 생성기(110)에 제공된다. 오직 코드 또는 알고리즘(104) 및 칩 설계에 대한 제약들에만 기초하여, IC 생성기(110)는 IC, 소프트웨어 개발 키트(SDK)(116), 및/또는 테스트 세트(118)를 실행하기 위해 GDS 파일(112), 펌웨어(114)를 포함하는 출력을 약간의 인간 개입으로 또는 인간 개입 없이 자동으로 생성한다. GDS 파일(112) 및 펌웨어(114)는 커스텀 칩(120)을 제조하는데 사용된다.
본 시스템은 칩 설계의 문제들을 경감하고 간단한 프로세스가 되게 한다. 본 시스템은 제품 개발 프로세스의 중심 사안을 하드웨어 구현 프로세스로부터 다시 제품 명세 및 알고리즘 설계로 옮긴다. 특정 하드웨어 선택 사항들에 매여 있는 대신, 해당 애플리케이션에 특별히 최적화된 프로세서에서 알고리즘이 항상 구현될 수 있다. 본 시스템은 모든 연관된 소프트웨어 툴들 및 펌웨어 애플리케이션들과 함께 최적화된 프로세서를 자동으로 생성한다. 이 전체 프로세스는 이제 수년이 걸리는 대신 수일에 실행될 수 있다. 아주 간결히 말해서, 본 시스템은 제품 개발의 디지털 칩 설계 부분을 블랙 박스가 되게 한다.
일 실시예에서, 본 시스템 제품은 입력으로서 이하를 취할 수 있다:
C/Matlab으로 정의된 컴퓨터 판독 가능 코드 또는 알고리즘
필요한 주변 장치들
면적 목표
전력 목표
마진 목표(Margin Target)(차후 펌웨어 갱신 및 복잡성 증가에 얼마나 많이 오버헤드가 발생하는지)
프로세스 선택 사항
표준 셀 라이브러리 선택 사항
테스트 가능성
시스템의 출력은 모든 연관된 펌웨어와 함께 디지털 하드 매크로(digital hard macro)일 수 있다. 디지털 하드 매크로에 최적화된 소프트웨어 개발 키트(SDK)는 또한 자동으로 생성되어서, 펌웨어의 차후 갱신들이 프로세서를 변경할 필요 없이 구현된다.
시스템은 임의의 선택된 목표 애플리케이션에 대한 완전한 최적의 하드웨어 해결책의 자동 생성을 실행한다. 일반적인 목표 애플리케이션들이 내장형 애플리케이션들의 공간에 있지만, 반드시 그렇게 제한되지는 않는다.
본 발명은 특허법에 따르고 신규한 원리들을 적용하며 요구되는 대로 특수화된 컴포넌트들을 구성 및 사용하는데 필요한 정보를 당업자에게 제공하기 위해 생각될 수 있는 세부 사항으로 본 명세서에 기술되었다. 그러나, 본 발명은 특별히 상이한 장비 및 장치들에 의해 실행될 수 있으며, 장비 세부 사항들 및 동작 프로시져들에 대한 각종 변경들이 본 발명 자체의 범위로부터 벗어나지 않은 채로 달성될 수 있음을 알 것이다.

Claims (20)

  1. a. 목표 프로세서의 기술(description)을 수신하는 단계;
    b. 컴파일러 생성기를 사용해서 목표 컴파일러를 자동으로 생성하는 단계;
    c. 어셈블러 생성기를 사용해서 목표 어셈블러를 자동으로 생성하는 단계;
    d. 링커 생성기를 사용해서 목표 링커를 자동으로 생성하는 단계;
    e. 시뮬레이터 생성기를 사용해서 목표 시뮬레이터를 자동으로 생성하는 단계;
    f. 프로파일러 생성기를 사용해서 목표 프로파일러를 자동으로 생성하는 단계;
    g. 상기 생성된 목표 컴파일러, 어셈블러, 링커, 시뮬레이터, 및 프로파일러를 사용해서 모든 사용자 제약들 또는 요구 사항들이 만족될 때까지 프로세서 아키텍처의 하나 이상의 파라미터들을 변경함으로써 새로운 프로세서 아키텍처를 반복해서 생성하고, 각각의 새로운 프로세서 아키텍처에 대해, 새로운 프로세서 아키텍처를 위한 목표 컴파일러, 어셈블러, 링커, 시뮬레이터, 및 프로파일러를 재생성하는 단계; 및
    h. 최적의 생성된 프로세서 아키텍처를 반도체 제조를 위한 커스텀 집적 회로의 컴퓨터 판독 가능 기술에 합성하는 단계
    를 포함하는, 자동으로 생성된 프로세서 아키텍처를 위한 소프트웨어 개발 툴들을 자동으로 생성하기 위한 방법.
  2. 제1항에 있어서, 상기 컴파일러 생성기는 프로세서 명령 집합 아키텍처의 명령들의 의미를 포함하는 상기 목표 프로세서의 고수준 기술을 판독하고, 상기 컴파일러 생성기는 목표 프로세서 파이프라인의 모델 및 명령들의 주석 의미 트리들을 만들고, 상기 목표 프로세서의 목표 컴파일러를 생성하는 방법.
  3. 제2항에 있어서, 상기 목표 컴파일러는 상기 목표 프로세서에 대한 호출 스택 레이아웃, 레지스터 할당, 명령 스케줄링, 브랜치 예측, 명령 및 데이터 프리페칭, 및 최적화들을 처리하는 방법.
  4. 제1항에 있어서, 상기 어셈블러 생성기는 상기 목표 어셈블러를 생성하기 위해 명령 구문, 명령 바이너리 인코딩, 및 명령들에 대한 잠정적인 재할당들을 판독하는 방법.
  5. 제4항에 있어서, 상기 목표 어셈블러는 명령 구문을 체크하고, 프로세서 명세들에 따라 명령들을 인코딩하며, 미해결 심볼들을 출력하는 방법.
  6. 제1항에 있어서, 상기 목표 링커는 객체 파일들 및 라이브러리들을 취하는 객체 파일 링커를 생성하고, 실행 가능한 파일을 생성하며, 모든 재할당들이 객체 코드에 적용되는 방법.
  7. 제1항에 있어서, 상기 시뮬레이터 생성기는 파이프라인 구조, 명령 집합 아키텍처, 명령들의 구문들, 및 각각의 하드웨어 블록의 특성들을 포함하는 기계 기술을 판독하는 방법.
  8. 제7항에 있어서, 상기 목표 시뮬레이터는, 캐시 모델, 메모리 모델, 및 인터럽트 모델을 포함하는, 상기 프로세서의 주기 정확 모델(cycle accurate model)을 포함하는 방법.
  9. 제1항에 있어서, 디버거 생성기를 사용해서 목표 디버거를 생성하는 단계를 포함하는 방법.
  10. 제9항에 있어서, 상기 목표 디버거는 목표 기계에서의 호출 스택 해석, 호출 스택의 풀림, 명령들의 디어셈블리, 및 레지스터들의 수 및 속성을 처리하는 방법.
  11. a. 컴파일러 생성기를 사용해서 목표 컴파일러를 자동으로 생성하기 위한 수단;
    b. 어셈블러 생성기를 사용해서 목표 어셈블러를 자동으로 생성하기 위한 수단;
    c. 링커 생성기를 사용해서 목표 링커를 자동으로 생성하기 위한 수단;
    d. 시뮬레이터 생성기를 사용해서 목표 시뮬레이터를 자동으로 생성하기 위한 수단;
    e. 프로파일러 생성기를 사용해서 목표 프로파일러를 자동으로 생성하기 위한 수단;
    f. 상기 생성된 목표 컴파일러, 어셈블러, 링커, 시뮬레이터, 및 프로파일러를 사용해서 비용 함수(cost function)로서 표현된 모든 타이밍, 면적, 전력 및 하드웨어 제약들이 만족될 때까지 프로세서 아키텍처의 하나 이상의 파라미터들을 변경함으로써 새로운 프로세서 아키텍처를 반복해서 생성하기 위한 수단 - 각각의 목표 컴파일러, 어셈블러, 링커, 시뮬레이터, 및 프로파일러는 각각의 생성기를 사용해서 각각의 프로세서 아키텍처에 대해 주문 생성됨 - ; 및
    g. 최적의 생성된 프로세서 아키텍처를 반도체 제조를 위한 커스텀 집적 회로의 컴퓨터 판독 가능 기술에 합성하기 위한 수단
    을 포함하는, 자동으로 생성된 프로세서 아키텍처를 위한 소프트웨어 개발 툴들을 자동으로 생성하기 위한 시스템.
  12. 제11항에 있어서, 상기 컴파일러 생성기는 프로세서 명령 집합 아키텍처의 명령들의 의미를 포함하는 상기 목표 프로세서의 고수준 기술을 판독하고, 상기 컴파일러 생성기는 목표 프로세서 파이프라인의 모델 및 명령들의 주석 의미 트리들을 만들고, 상기 목표 프로세서의 목표 컴파일러를 생성하는 시스템.
  13. 제12항에 있어서, 상기 목표 컴파일러는 상기 목표 프로세서에 대한 호출 스택 레이아웃, 레지스터 할당, 명령 스케줄링, 브랜치 예측, 명령 및 데이터 프리페칭, 및 최적화들을 처리하는 시스템.
  14. 제11항에 있어서, 상기 어셈블러 생성기는 상기 목표 어셈블러를 생성하기 위해 명령 구문, 명령 바이너리 인코딩, 및 명령들에 대한 잠정적인 재할당들을 판독하는 시스템.
  15. 제14항에 있어서, 상기 목표 어셈블러는 명령 구문을 체크하고, 프로세서 명세들에 따라 명령들을 인코딩하며, 미해결 심볼들을 출력하는 시스템.
  16. 제11항에 있어서, 상기 목표 링커는 객체 파일들 및 라이브러리들을 취하는 객체 파일 링커를 생성하고, 실행 가능한 파일을 생성하며, 모든 재할당들이 객체 코드에 적용되는 시스템.
  17. 제11항에 있어서, 상기 시뮬레이터 생성기는 파이프라인 구조, 명령 집합 아키텍처, 명령들의 구문들, 및 각각의 하드웨어 블록의 특성들을 포함하는 기계 기술을 판독하는 시스템.
  18. 제17항에 있어서, 상기 목표 시뮬레이터는, 캐시 모델, 메모리 모델, 및 인터럽트 모델을 포함하는, 상기 프로세서의 주기 정확 모델을 포함하는 시스템.
  19. 제11항에 있어서, 디버거 생성기를 사용하여 목표 디버거를 생성하는 것을 포함하는 시스템.
  20. 제19항에 있어서, 상기 목표 디버거는 목표 기계에서의 호출 스택 해석, 호출 스택의 풀림, 명령들의 디어셈블리, 및 레지스터들의 수 및 속성을 처리하는 시스템.
KR1020137018881A 2011-01-19 2011-09-20 툴 생성기 KR20130107344A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/008,901 US20120185820A1 (en) 2011-01-19 2011-01-19 Tool generator
US13/008,901 2011-01-19
PCT/US2011/052290 WO2012099626A1 (en) 2011-01-19 2011-09-20 Tool generator

Publications (1)

Publication Number Publication Date
KR20130107344A true KR20130107344A (ko) 2013-10-01

Family

ID=46491718

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137018881A KR20130107344A (ko) 2011-01-19 2011-09-20 툴 생성기

Country Status (7)

Country Link
US (1) US20120185820A1 (ko)
EP (1) EP2666084A1 (ko)
JP (1) JP2014510960A (ko)
KR (1) KR20130107344A (ko)
CN (1) CN103329097A (ko)
TW (1) TW201232312A (ko)
WO (1) WO2012099626A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9274651B2 (en) 2012-11-05 2016-03-01 Hewlett-Packard Development Company, L.P. Apparatus to track a pointing device
JP6350831B2 (ja) * 2013-03-30 2018-07-04 日本電気株式会社 アプリケーション特化仮想マシン生成システム、装置、方法およびプログラム
WO2017035748A1 (zh) * 2015-08-31 2017-03-09 华为技术有限公司 一种代码编译方法及代码编译器
US10409706B2 (en) * 2016-09-30 2019-09-10 Arizona Board Of Regents On Behalf Of Arizona State University Automated test generation for structural coverage for temporal logic falsification of cyber-physical systems
US11675948B2 (en) * 2017-09-29 2023-06-13 Intel Corporation Methods and apparatus for profile-guided optimization of integrated circuits
CN108710771B (zh) * 2018-05-31 2019-11-01 西安电子科技大学 基于深度特征集成提取的机械装备服役可靠性评估方法
KR102104198B1 (ko) * 2019-01-10 2020-05-29 한국과학기술원 느긋한 심볼화를 활용한 바이너리 재조립 기술의 정확도 향상 기술 및 도구
US20210182363A1 (en) * 2019-12-11 2021-06-17 The Boeing Company Software license manager
US11593463B2 (en) * 2019-12-11 2023-02-28 The Boeing Company Execution type software license management
CN111474894B (zh) * 2020-03-05 2021-08-24 杭州电子科技大学 可变目标plc仿真调试方法、存储介质及功能模块
CN113515348B (zh) * 2021-07-16 2023-11-14 江苏师范大学 一种基于时机动作流的模拟器建模方法及装置
CN115237807B (zh) * 2022-08-11 2024-02-06 小米汽车科技有限公司 程序测试方法、装置及可读存储介质

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1248238A (en) * 1985-10-17 1989-01-03 Francis D. Lawlor Compiler including retargetable data generation
JPS63101934A (ja) * 1986-10-17 1988-05-06 Nec Corp アセンブラ言語プログラムの保守情報作成方式
JPH0727477B2 (ja) * 1988-01-05 1995-03-29 日本電気株式会社 命令置換方式
US6293712B1 (en) * 1997-09-30 2001-09-25 Institute For The Development Of Emerging Architectures, Llc Method and apparatus for constructing a stack unwind data structure
JP2000020349A (ja) * 1998-07-06 2000-01-21 Toshiba Corp プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援用プログラムを記録した媒体
JP2000122895A (ja) * 1998-10-20 2000-04-28 Matsushita Electric Ind Co Ltd スタックサイズ解析方法及びスタックサイズ解析装置
US6477683B1 (en) * 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
US6286134B1 (en) * 1999-04-23 2001-09-04 Sun Microsystems, Inc. Instruction selection in a multi-platform environment
AU2003223746A1 (en) * 2002-04-25 2003-11-10 Arc International Apparatus and method for managing integrated circuit designs
JP4202673B2 (ja) * 2002-04-26 2008-12-24 株式会社東芝 システムlsi開発環境生成方法及びそのプログラム
US20050049843A1 (en) * 2003-08-29 2005-03-03 Lee Hewitt Computerized extension apparatus and methods
JP4105102B2 (ja) * 2004-01-09 2008-06-25 株式会社東芝 パイプラインプロセッサ生成装置及びパイプラインプロセッサ生成方法
US7073159B2 (en) * 2004-03-31 2006-07-04 Intel Corporation Constraints-directed compilation for heterogeneous reconfigurable architectures
US7278122B2 (en) * 2004-06-24 2007-10-02 Ftl Systems, Inc. Hardware/software design tool and language specification mechanism enabling efficient technology retargeting and optimization
US7533294B2 (en) * 2004-09-09 2009-05-12 The Regents Of The University Of California Functional coverage driven test generation for validation of pipelined processors
US20060112397A1 (en) * 2004-11-18 2006-05-25 Makaram Raghunandan Cross-architecture software development
JP4498206B2 (ja) * 2005-04-28 2010-07-07 キヤノン株式会社 システムlsiシミュレーション装置
US8108844B2 (en) * 2006-06-20 2012-01-31 Google Inc. Systems and methods for dynamically choosing a processing element for a compute kernel
US20080263279A1 (en) * 2006-12-01 2008-10-23 Srinivasan Ramani Design structure for extending local caches in a multiprocessor system
US20100153432A1 (en) * 2008-12-11 2010-06-17 Sap Ag Object based modeling for software application query generation
US20110153529A1 (en) * 2009-12-23 2011-06-23 Bracy Anne W Method and apparatus to efficiently generate a processor architecture model

Also Published As

Publication number Publication date
CN103329097A (zh) 2013-09-25
EP2666084A1 (en) 2013-11-27
US20120185820A1 (en) 2012-07-19
WO2012099626A1 (en) 2012-07-26
JP2014510960A (ja) 2014-05-01
TW201232312A (en) 2012-08-01

Similar Documents

Publication Publication Date Title
KR20130107344A (ko) 툴 생성기
JP5717015B2 (ja) アーキテクチャ・オプティマイザ
Sun et al. Custom-instruction synthesis for extensible-processor platforms
US6772106B1 (en) Retargetable computer design system
KR101448410B1 (ko) 알고리즘들 및 사양으로부터의 자동 최적 집적 회로 생성기
KR20020021081A (ko) 구성가능한 프로세서를 설계하기 위한 프로세서 자동 생성시스템 및 방법
Chakravarty et al. Automated, retargetable back-annotation for host compiled performance and power modeling
Villarreal et al. Improving software performance with configurable logic
KR101448409B1 (ko) 알고리즘들 및 사양으로부터의 자동 최적 집적 회로 생성기
Ascia et al. EPIC-Explorer: A Parameterized VLIW-based Platform Framework for Design Space Exploration.
JP5682081B2 (ja) インテリジェント・アーキテクチャ・クリエータ
Bombieri et al. HDTLib: an efficient implementation of SystemC data types for fast simulation at different abstraction levels
Ferrandi et al. A Survey on Design Methodologies for Accelerating Deep Learning on Heterogeneous Architectures
Klein et al. Migrating software to hardware on FPGAs
de Sousa Specializing RISC-V Cores for Performance and Power
Zeinolabedini Average-case analysis of power consumption in embedded systems
Bertels et al. Profiling, compilation, and hdl generation within the hartes project
Ray et al. Performance Estimation: IPC
Chattopadhyay et al. Pre-Fabrication Design Space Exploration

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application