KR20030084554A - 시스템-온-칩을 개발하기 위한 개발 환경의 생성 방법 및그 프로그램을 기억한 매체 - Google Patents

시스템-온-칩을 개발하기 위한 개발 환경의 생성 방법 및그 프로그램을 기억한 매체 Download PDF

Info

Publication number
KR20030084554A
KR20030084554A KR1020020066498A KR20020066498A KR20030084554A KR 20030084554 A KR20030084554 A KR 20030084554A KR 1020020066498 A KR1020020066498 A KR 1020020066498A KR 20020066498 A KR20020066498 A KR 20020066498A KR 20030084554 A KR20030084554 A KR 20030084554A
Authority
KR
South Korea
Prior art keywords
compiler
information
instruction
simulator
register
Prior art date
Application number
KR1020020066498A
Other languages
English (en)
Other versions
KR100533307B1 (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 가부시끼가이샤 도시바
Publication of KR20030084554A publication Critical patent/KR20030084554A/ko
Application granted granted Critical
Publication of KR100533307B1 publication Critical patent/KR100533307B1/ko

Links

Classifications

    • 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
    • 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
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

시스템-온-칩 개발 환경 생성 방법은 컨피그레이션 지정 파일로부터 컴파일러를 구축하는 컴파일러 커스터마이즈부, 어셈블러를 구축하는 어셈블러 커스터마이즈부, 및 시뮬레이터를 구축하는 시뮬레이터 생성부를 포함하고, 컨피그레이션 지정 파일은 명령을 실행하는 하드웨어의 지정을 포함한다.

Description

시스템-온-칩을 개발하기 위한 개발 환경의 생성 방법 및 그 프로그램을 기억한 매체{SYSTEM-ON-CHIP DEVELOPMENT ENVIRONMENT GENERATING METHOD AND COMPUTER-READABLE MEDIUM WITH PROGRAM THEREOF}
본 발명은, 예를 들면 컨피그레이블(configurable) 프로세서를 포함하는 시스템-온-칩의 설계 개발에 이용되는 개발 환경(development environment)에 관한 것으로, 특히 시스템-온-칩의 설계 개발 환경을 생성하는 방법 및 그 프로그램을 기억한 매체에 관한 것이다.
최근, 예를 들면 멀티미디어 처리 등에 적용되는 LSI에 대한 필요성이 다양화되고 있다. 또한, 이 LSI의 시장 사이클은 단기화되고 있다. 이 때문에, 어플리케이션으로 최적화된 LSI를 단기간에 개발하기 위한 시스템-온-칩의 설계 개발 환경이 기대되고 있다. 여기서, 개발 환경이란 시스템-온-칩을 구축할 때에 필요해지는 하드웨어나 시스템 개발 지원 툴 등의 소프트웨어를 의미한다.
일반적으로, LSI 내에 범용 프로세서를 탑재한 경우, 하드웨어의 설계 비용은 거의 제로에 가깝다. 그러나, 이러한 구성의 LSI는 어플리케이션으로 최적화되어 있지 않기 때문에, 어플리케이션의 성능을 최대한으로 이끌어내는 것이 곤란하다. 이 때문에, 최근에는, 명령이나 메모리 구성 등이 선택 가능한 컨피그레이블 프로세서가 제공되어 있다. 또한, 컨피그레이블 프로세서의 제공자는, 컨피그레이션을 지정하여 논리 합성 가능한 하드웨어 기술을 출력하는 시스템을 제공하고 있다. 이러한 프로세서 및 시스템에 따르면, 옵션 명령이나 메모리 사이즈를 지정함으로써, 어플리케이션에 최적인 구성의 프로세서를 단기간에 개발하는 것이 가능해진다.
한편, 통상, 명령 세트 등을 바꾼 경우, 컴파일러나 시뮬레이터 등의 소프트웨어 개발 툴도 변경해야 한다. 이 때문에, 컨피그레이션을 지정함으로써, 하드웨어 기술과 동시에, 소프트웨어 개발 툴을 생성하는 시스템도 제공되도록 되어 있다. 이러한 시스템에 따르면, 소프트웨어 개발 툴의 설계에 요하는 노동력 및 시간을 대폭 삭감할 수 있다.
종래, RISC(Reduced Instruction Set Computer) 코어에 대하여 컨피그레이블한 DSP(Digital Signal Processor) 코프로세서가 개발되어 있다. 그러나, 이 DSP 코프로세서는 사전에 준비된 ISA(Industry Standard Architecture)만 사용 가능하게 되며, 그 이외의 것은 사용할 수 없다. 또한, 새로운 명령을 추가할 수 있는 컨피그레이블 프로세서도 있지만, 고정된 타입의 명령만이 추가 가능하다. 이 때문에, 예를 들면 VLIW(Very Long Instruction Word) 등의 아키텍처에 대응하는 것이 곤란하여, 유연성이 충분하지 못하다.
또한, 추가 명령을 기술하기 위해서, 예를 들면 Verilog와 같은 하드웨어 기술 언어(HDL: Hardware Description Language)가 이용되고 있다. 이 때문에, 효율적으로 명령을 추가할 수 없다.
또한, 사용자가 정의한 명령으로부터 필요한 개발 환경을 생성하는 것이 곤란하였다. 따라서, 고성능의 하드웨어를 갖는 LSI의 개발 환경을 충분한 유연성으로, 간단하게 생성하는 것이 가능한 시스템-온-칩 개발 환경 생성 방법이나 그 프로그램을 기억한 매체를 기억한 매체가 기대되고 있다.
본 발명의 일 양태에 따르면, 시스템-온-칩을 개발하기 위한 개발 환경을 생성하는 방법으로서, 입력된 커맨드를 해석하는 단계와, 그 해석한 커맨드에 따라서, 시스템-온-칩의 컨피그레이션이 기술된 컨피그레이션 지정 파일의 정보에 기초하여, 컴파일러 커스터마이즈부, 어셈블러 커스터마이즈부, 및 시뮬레이터 생성부를 생성하는 단계를 포함하는 방법이 제공되며, 상기 컨피그레이션 지정 파일은 명령을 실행하는 하드웨어의 지정을 포함하고 있고, 상기 컴파일러 커스터마이즈부는 시스템-온-칩을 개발하기 위한 컴파일러를 구축하며, 상기 어셈블러 커스터마이즈부는 어셈블러를 구축하고, 상기 시뮬레이터 생성부는 시뮬레이터를 구축한다.
본 발명의 다른 양태에 따르면, 시스템-온-칩을 개발하기 위한 개발 환경을 생성하는 프로그램을 기억한 컴퓨터 판독 가능한 기억 매체로서, 컴퓨터에, 입력된커맨드를 해석시키는 기능과, 그 해석한 커맨드에 따라서, 시스템-온-칩의 컨피그레이션이 기술된 컨피그레이션 지정 파일의 정보에 기초하여, 컴파일러 커스터마이즈부, 어셈블러 커스터마이즈부, 및 시뮬레이터 생성부를 생성시키는 기능을 포함하는 기억 매체가 제공되며, 컨피그레이션 지정 파일은 명령을 실행하는 하드웨어의 지정을 포함하고, 상기 컴파일러 커스터마이즈부는 시스템-온-칩을 개발하기 위한 컴파일러를 구축하며, 상기 어셈블러 커스터마이즈부는 어셈블러를 구축하고, 상기 시뮬레이터 생성부는 시뮬레이터를 구축한다.
도 1은 본 발명이 적용되는 시스템-온-칩 개발 장치를 개략적으로 도시한 구성도.
도 2는 설정 파일 생성부를 도시한 구성도.
도 3은 컨피그레이션 지정 파일의 기술 예를 도시한 도면.
도 4a는 모든 프로세서에 공통인 메모리 영역의 기술 예를 도시한 도면, 도 4b는 생성된 로컬 메모리 맵의 일례를 도시한 도면, 도 4c은 ISA 정의 파일의 기술 예를 도시한 도면.
도 5는 시스템-온-칩 개발 환경 생성부의 구성을 도시한 도면.
도 6은 도 5에 도시한 RTL 생성부의 일 실시예를 도시한 구성도.
도 7은 RTL 템플릿의 일례를 도시한 도면.
도 8은 도 5에 도시한 시뮬레이터 커스터마이즈부의 일례를 도시한 구성도.
도 9a는 시뮬레이터 기동 옵션 파일의 일례를 도시한 도면, 도 9b는 디버거 기동 옵션 파일의 일례를 도시한 도면, 도 9c는 기계 명령 함수 선언 헤더 파일의 일례를 도시한 도면.
도 10은 도 5에 도시한 컴파일러 커스터마이즈부(43)의 일 실시예를 도시한 구성도.
도 11a는 컴파일러 기동 옵션 파일의 일례를 도시한 도면, 도 11b는 검증 벡터 생성용의 사용자 정의 명령 파일의 일례를 도시한 도면.
도 12는 본 발명의 시스템-온-칩 개발 환경 생성부(4)의 프로그램 구성을 도시한 구성도.
도 13은 컨피그레이션 지정 파일의 일례를 도시한 도면.
도 14는 도 13에 도시한 레지스터 정의부의 기재 예를 구체적으로 도시한 도면.
도 15는 어큐뮬레이터의 정의의 일례를 도시한 도면.
도 16은 시프트 어마운트 레지스터의 정의의 일례를 도시한 도면.
도 17은 코프로세서 정의의 일례를 도시한 도면.
도 18은 DSP 모듈용 컨피그레이션 지정 파일의 예를 도시한 도면.
도 19는 SIMD 명령의 정의의 일례를 도시한 도면.
도 20은 1행에 의한 기술 예를 도시한 도면.
도 21은 1행에 의한 기술 예를 도시한 도면.
도 22는 지표를 이용한 기술 예를 도시한 도면.
도 23은 SIMD 명령 라이브러리의 예를 도시한 도면.
도 24는 명령 라이브러리로부터 컴파일러 등의 툴을 생성하는 방법을 도시한 구성도.
도 25는 컨피그레이션 지정 파일 내의 명령 세트 정의부의 예를 도시한 도면.
도 26은 PTYPE 행의 기술 예를 도시한 도면.
도 27은 해져드 정보의 기술 예를 도시한 도면.
도 28은 해져드 정보와 파이프라인의 동작을 도시한 도면.
도 29는 컴파일러를 위한 스케줄링 정보의 예를 도시한 도면.
도 30은 파이프라인 동작 기술의 예를 도시한 도면.
도 31은 RTL 생성부에서의 사용자 정의 모듈의 고위 합성의 예를 도시한 도면.
도 32는 인터페이스의 정합 방법을 도시한 구성도.
도 33은 ISA 정보의 생성 방법을 나타내는 것으로, 명령 CPXOR3에 관한 명령 정의의 예를 도시한 도면.
도 34는 자동적으로 생성된 ISA 정보를 도시한 도면.
도 35는 명령 CPXOR3의 검증 프로그램을 도시한 도면.
도 36은 시뮬레이터 생성부의 개략적인 동작을 도시한 도면.
도 37은 시스템-온-칩 개발 환경 생성 시스템의 개관의 일례를 나타내는 사시도.
<도면의 주요 부분에 대한 부호의 설명>
1 : 시스템-온-칩 개발 장치
2 : 설정 파일 생성부
3 : 사용자 정의 모듈·사용자 정의 명령 기억부
4 : 시스템-온-칩 개발 환경 생성부
9 : 제어부
21 : 입력 해석부
41 : RTL 생성부
41a, 41b : RTL 템플릿
41c : 코어 RTL 기술
41d : 블록 접속부
41e : 고위 합성 처리부
42 : 시뮬레이터 커스터마이즈부
42a : 옵션 명령 정보 추출부
42b : 시뮬레이터 템플릿
43 : 컴파일러 커스터마이즈부
43a : 옵션 명령 정보 추출부
43b : 옵션 명령·기계 명령 함수 선언 템플릿
43c : 기계 명령 함수 선언 추출부
43d : 결합 처리부
44 : 어셈블러 커스터마이즈부
45 : 검증 벡터 생성부
50 : 컴퓨터 시스템
51 : 디스플레이
52 : 플로피디스크 드라이브
53 : 플로피디스크
54 : 광디스크 드라이브
55 : 광디스크
56 : 키보드
57 : 드라이브 장치
58 : 메모리 카드
59 : 자기 테이프 카드릿지
이하, 본 발명의 실시 형태에 대하여 도면을 참조하여 설명한다.
우선, 도 1 내지 도 10을 이용하여, 본 실시 형태에 적용되는 시스템-온-칩 개발 장치에 대하여 개략적으로 설명한다.
<시스템-온-칩 개발 장치의 구성>
도 1은 시스템-온-칩 개발 장치(1)를 도시하고 있다. 시스템-온-칩 개발 장치(1)는, 설정 파일 생성부(2), 사용자 정의 모듈·사용자 정의 명령 기억부(3), 시스템-온-칩 개발 환경 생성부(4), 성능 평가부(5), 종료 판정부(6), 변경 항목 설정부(7), 입출력 인터페이스부(8) 및 제어부(9)를 갖고 있다.
시스템-온-칩 개발 장치(1)에는, 장치(1) 내에 각종 정보를 입력하기 위한 입력부(10)와, 장치(1)로부터의 각종 정보를 출력하기 위한 출력부(11)가 접속되어 있다. 입력부(10)로서는, 예를 들면 키보드, 마우스 포인터, 텐키, 터치 패널 등을 이용할 수 있다. 출력부(11)로서는, 예를 들면 디스플레이 장치나 인쇄 장치등이 적용된다.
도 2 내지 도 13은 상기 시스템-온-칩 개발 장치(1) 내의 각부의 구성을 도시하고 있다.
<설정 파일 생성부의 구성>
도 2는 설정 파일 생성부(2)의 구성을 도시하고 있다. 설정 파일 생성부(2)는 입력 해석부(21), 로컬 메모리 맵 생성부(22), 옵션 정보 기억부(23), 디바이스 구성 기억부(24), 캐시 구성 기억부(25) 및 로컬 메모리 맵 기억부(26)를 구비하고 있다. 설정 파일 생성부(2)는 시스템-온-칩의 설계 상의 컨피그레이션을 기술한 컨피그레이션 지정 파일(이하에서는, 아키텍처 데이터베이스 파일이라고도 칭함), 가변 값 설정 정보, 최우선 항목 설정 정보, 목표 성능 지정 정보, 및 변경 항목 설정부(7)로부터 공급되는 변경 항목 리스트 정보에 기초하여, 시스템-온-칩 설계 상의 컨피그레이션을 생성하여 저장한다. 상기 목표 성능 지정 정보는 하드웨어 성능 및 소프트웨어 성능 중 하나 또는 모두를 포함한다. 하드웨어의 성능 지표로서는 면적, 주파수, 소비 전력을 포함한다. 소프트웨어의 성능 지표로서는 코드 사이즈, 실효 명령 수, 실행 사이클 수를 포함한다.
상기 입력 해석부(21)는 컨피그레이션 지정 파일의 내용을 해석하여, 컨피그레이션 지정 파일 내에 기술된 컨피그레이션의 내용을 옵션 정보 기억부(23), 디바이스 구성 기억부(24) 및 캐시 구성 기억부(25)의 각 부로 분할한다.
상기 컨피그레이션 지정 파일 내에는 옵션 명령의 유무, 디바이스의 유무, 캐시의 유무, 캐시 사이즈, 사용자 정의 명령, 사용자 정의 하드웨어 모듈, LSI 내부의 메모리 맵, 멀티프로세서 구성(멀티프로세서의 수 등) 등의 정보를 기술하는 것으로 한다. 또, 사용자 정의 명령이나 사용자 정의 하드웨어 모듈의 기술 부분에는, 사용자 정의 명령이나 사용자 정의 모듈을 기술한 파일명의 기억 위치(이 실시 형태에 있어서는, 사용자 정의 모듈·사용자 정의 명령 기억부(3)의 위치)를 절대 패스나 상대 패스 등의 기술에 의해서 지정한다.
상기 디바이스의 유무에 있어서, 디바이스에는, 명령 메모리, 데이터 메모리, 코프로세서가 포함되고, 명령 메모리, 데이터 메모리의 가변 항목에는 사이즈, 어드레스가 포함된다. 상기 메모리 맵에 있어서 메모리 맵에는, 외부 메모리 영역, 내부 메모리 영역, 입출력 영역이 포함되고, 외부 메모리 영역에는, 캐시 액세스 영역의 지정 항목도 포함된다. 또한, 각 메모리 영역에는 레이턴시 정보도 포함된다.
또한, 컨피그레이션 지정 파일로부터 시스템-온-칩 설계 상의 컨피그레이션을 지정할 때, 사용자는 설정 파일 생성부(2) 내의 각 기억부(23∼26)에서 정의되어 있는 가변 값의 중에서 하나의 값을 선택한다. 이 선택한 값을, 예를 들면 도 3에 도시한 바와 같은 컨피그레이션 지정 파일 내에 기술한다.
즉, 예를 들면 이하에 나타내는 SIZE 기술에 있어서, 내장 데이터 메모리의 사이즈는, 예를 들면 1, 2, 4, 8, 16, 32[KB] 중 어느 하나를 선택하는 것이 가능하다. 이 SIZE 기술을 생략한 경우, 사이즈는 디폴트 값인 8[KB]가 되는 것을 나타내고 있다.
DMEM:
SIZE Ptype={1, 2, 4, 8, 16, 32}, default=8, comment="내장 데이터 메모리의 사이즈";
또한, 이하에 나타내는 ISA_DEFINE 기술에 있어서는, 사용자 정의 명령의 ISA 정의 파일명으로서 임의의 문자열을 기술해야만 하는 것을 나타낸다.
UCL:
ISA_DEFINE Ptype=string, default="", comment="사용자 정의 명령의 ISA 정의 파일명";
또, 상기한 컨피그레이션의 설정 작업은 입출력 인터페이스부(8)를 통한 대화적인 처리에 의해서 행하도록 해도 된다. 컨피그레이션의 설정을 대화적으로 행하도록 함으로써, 사용자는 컨피그레이션 지정 파일의 문법 등을 의식하지 않고서, 컨피그레이션을 용이하게 설정할 수 있다. 이 때문에, 컨피그레이션의 설정에 요하는 시간을 직접 파일에 기술하는 경우와 비교하여 단축할 수 있다. 또한, 모든 컨피그레이션의 설정을 대화적으로 처리할 수 있다. 이 때문에, 컨피그레이션의 하나를 설정하는 것을 잊는 등의 실수를 방지할 수 있다.
또한, 컨피그레이션에 가변 값을 설정하도록 해도 된다. 컨피그레이션에 가변 값을 설정한 경우, 설정 파일 생성부(2)는 기본 설정, 가변 값의 측정용으로 만들어진 템플릿, 사용자가 설정한 값 중 어느 하나를 이용하여 자동적으로 다른 컨피그레이션의 설정값을 도출한다. 컨피그레이션에 가변 값을 설정함으로써, 사용자는 컨피그레이션의 가변 범위에 따른 복수의 개발 환경, 검증 환경을 동시에 얻을 수 있다. 이 때문에, LSI 개발 사이클의 단축을 실현하는 것이 가능해진다.
또한, 컨피그레이션 중에서 최우선 항목을 설정하도록 해도 된다. 컨피그레이션 중에서 최우선 항목이 설정된 경우, 설정 파일 생성부(2)는 최우선 항목 이외의 부분의 설정값에 대하여, 최우선 항목이 최적이 되도록 하는 컨피그레이션을 생성한다. 이 생성에는 기본 설정, 및 최우선 항목에 기초하여 템플릿 또는 사용자가 지정한 설정값이 사용된다. 컨피그레이션 중에 최우선 항목을 지정함으로써, 사용자는 시스템-온-칩의 구성을 인식하지 않고, 우선 항목에 적합한 구성을 개발 환경, 검증 환경을 작성하고, 그것을 평가할 수 있다.
<로컬 메모리 맵 생성부의 구성>
로컬 메모리 맵 생성부(22)는 컨피그레이션 지정 파일로부터 지정되는 글로벌 맵과, 시스템-온-칩 내의 개개의 프로세서의 로컬 메모리 정보를 통합하고, 시스템-온-칩 내의 프로세서마다의 로컬 메모리 맵을 생성한다. 상기 글로벌 맵은, 예를 들면 도 4a에 도시한 바와 같은 모든 프로세서에 공통인 메모리 영역이다. 또한, 상기 로컬 메모리 정보로서는, 예를 들면 명령 메모리, 데이터 메모리, 명령 캐시, 데이터 캐시를 포함한다. 도 4b는 생성된 로컬 메모리 맵의 일례를 도시하고 있다. 이 생성된 로컬 메모리 맵은 로컬 메모리 맵 기억부(26) 내에 저장된다.
여기서, 프로세서의 로컬 메모리 영역은 개개의 로컬 메모리마다 예약되어 있는 글로벌 맵 중의 메모리 영역에 대하여, 컨피그레이션 지정 파일에 의해 지정되는 메모리 사이즈를 반영시킴으로써 생성할 수 있다. 또한, 사전에 글로벌 맵 중에 각 프로세서의 샤도우 메모리 정보를 지정함으로써, 각 프로세서의 로컬 맵에 다른 프로세서의 로컬 메모리를 포함하는 샤도우 메모리를 제조하는 것도 가능하다.
옵션 정보 기억부(23)는 입력 해석부(21)에 의한 컨피그레이션 지정 파일의 해석 결과에 기초하여, 시스템-온-칩에 내장되는 프로세서의 명령 세트 내의 옵션 명령의 ON/OFF(온/오프)의 종별에 관한 정보를 저장한다.
디바이스 구성 기억부(24)는, 입력 해석부(21)에 의한 컨피그레이션 지정 파일의 해석 결과에 기초하여, 시스템-온-칩에 내장되는 디바이스의 ON/OFF의 종별에 관한 정보와 그 사이즈에 관한 정보, 어드레스 정보, 프로세서의 명령 메모리나 데이터 메모리에 관한 정보, 및 코프로세서 등의 옵션 하드웨어에 관한 정보를 저장한다.
<캐시 구성 기억부의 구성>
캐시 구성 기억부(25)는 입력 해석부(21)에 의한 컨피그레이션 지정 파일의 해석 결과에 기초하여, 시스템-온-칩의 캐시의 ON/OFF의 종별, 캐시의 타입(direct, 2-way, 4-way, n-way)에 관한 정보, 및 사이즈에 관한 정보를 저장한다.
<로컬 메모리 맵 기억부의 구성>
로컬 메모리 맵 기억부(26)는 로컬 메모리 맵 생성부(22)가 생성한 로컬 메모리 맵에 관한 정보를 저장한다.
<사용자 정의 모듈·사용자 정의 명령 기억부의 구성>
사용자 정의 모듈·사용자 정의 명령 기억부(3)는 사용자 정의의 하드웨어 모듈 및 시스템-온-칩에 내장하는 프로세서의 명령 세트에서의 사용자 정의 명령에관한 정보를 저장한다. 여기서, 사용자 정의의 하드웨어 모듈에 관한 정보는 RTL(Register Transfer Level) 기술 또는 동작 기술, 및 명령의 동작에 관한 정보는, C 모델(C++ 모델을 포함)로 기술하여 기억부(3) 내에 저장하는 것이 바람직하다. 동작 기술과 C 모델 기술은 동일해도 된다. 또한, 사용자 정의 명령에 관한 정보는 컨피그레이션 지정 파일로부터 지정되는, 예를 들면 도 13에 도시한 바와 같은 아키텍쳐 DB 파일에 기술하여 저장하는 것이 바람직하다.
<시스템-온-칩 개발 환경 생성부의 구성>
시스템-온-칩 개발 환경 생성부(4)는, 도 5에 도시한 바와 같이, RTL 생성부(41), 시뮬레이터 커스터마이즈부(42), 컴파일러 커스터마이즈부(43), 어셈블러 커스터마이즈부(44) 및 검증 벡터 생성부(45)를 구비하고 있다. 이 시스템-온-칩 개발 환경 생성부(4)는 설정 파일 생성부(2) 내에 저장되어 있는 컨피그레이션의 모든 조합에 대하여, 시스템-온-칩의 하드웨어, 검증 환경 및 개발 설계 툴을 생성한다.
이하, 이 시스템-온-칩 개발 환경 생성부의 내부 구성에 대하여 상세히 설명한다.
<RTL 생성부의 구성>
RTL 생성부(41)는 설정 파일 생성부(2)의 기억부 내에 기억되어 있는 컨피그레이션에 기초하여, 시스템-온-칩에 내장되는 프로세서의 RTL 기술을 생성한다.
도 6은 RTL 생성부(41)의 일 실시예를 도시하고 있다. 블록 접속부(41d)는 디바이스 구성 기억부(24)와 캐시 구성 기억부(25) 내에 저장된 컨피그레이션을 참조하여, RTL 템플릿(41a, 41b)으로부터 사용자에 의해 설정된 컨피그레이션에 대응하는 템플릿을 선택한다. 고위 합성 처리부(41e)는 사용자 정의 모듈·사용자 정의 명령 기억부(6) 내에 저장된 사용자 정의 명령 또는 사용자 정의 모듈의 사양인 동작 기술을 고위 합성함으로써 RTL 기술을 생성한다. 또한, 접속부(41d)는 프로세서 코어부의 RTL 기술(41c)에 대하여, 상기 선택한 RTL 템플릿과, 고위 합성 처리부(41e)로부터의 RTL 기술을 접속함으로써, 프로세서의 RTL 기술을 생성한다. 또, 기억부(3) 내의 사양이 RTL 기술인 경우, 그대로 인터페이스 신호가 맞도록 접속한다.
또, 멀티프로세서 구성이 정의된 경우, 블록 접속부(41d)는 복수의 프로세서 기술을 생성하고, 이들을 버스로 접속한 멀티프로세서의 RTL 기술을 생성하는 것으로 한다.
또한, RTL 템플릿(41a, 41b) 내에 포함되는 명령 메모리, 데이터 메모리, 옵션 하드웨어, 명령 캐시 및 데이터 캐시는 사용자가 선택 가능한 메모리 사이즈의 각각에 대하여 RTL 기술이 사전에 준비되어 있다. 이들 RTL 기술은 지정된 컨피그레이션에 따라서 선택적으로 접속 가능하게 되어 있다. 또한, 옵션 명령에 대해서는, 옵션 명령에 대응하는 하드웨어의 템플릿을 옵션 명령의 ON/OFF 모든 조합에 대하여 준비한다.
도 7은 RTL 템플릿의 일례를 도시하고 있다. 도 7에 있어서, 옵션 명령 유닛의 RTL 템플릿은 제산 옵션 명령(DIV)의 ON/OFF, 및 최대 최소 값 옵션 명령(MINMAX)의 ON/OFF의 4가지의 조합에 대하여, RTL 기술이 각각 템플릿으로서준비되어 있다. 이들 템플릿은 디바이스 구성 기억부(24)와 캐시 구성 기억부(25) 내에 저장된 컨피그레이션에 맞추어서, 코어 RTL 기술에 선택적으로 접속된다. 또한, 코프로세서 등의 옵션 하드웨어에 대해서도, 컨피그레이션으로 유효하다고 지정되어 있는 경우, 이미 정의된 RTL 기술이 코어 RTL 기술에 접속된다. 또한, 사용자 정의의 하드웨어가 있는 경우, 사용자가 기술한 하드웨어 기술이 코어 RTL 기술에 접속된다.
이상의 접속 처리에 의해서, RTL 생성부(41)는 설정된 컨피그레이션에 대응한 프로세서의 RTL 기술을 생성한다. 예를 들면, 프로세서(1)를 최초로 구축하는 경우, 사용자는 컨피그레이션의 파라미터 지정으로서, 프로세서 코어에 4[KB]의 명령 메모리와, 4[KB]의 데이터 메모리를 추가하면, 프로세서(1)의 RTL 기술을 자동적으로 얻을 수 있다.
또한, 프로세서(2)를 구축하는 경우, 사용자는 컨피그레이션의 파라미터 지정으로서, 프로세서 코어에, 예를 들면 2[KB]의 명령 메모리, 4[KB]의 데이터 메모리, 2 [KB]의 명령 캐시, 4[KB]의 데이터 캐시를 추가한다. 또한, 코프로세서와 몇몇의 옵션 명령과 사용자 정의 명령의 RTL 기술을 추가함으로써, 프로세서(2)의 RTL 기술을 얻을 수 있다.
또한, 복수의 RTL 템플릿을 준비해 두는 대신에, 가변 항목을 파라미터로서 표현한 RTL 템플릿에 컨피그레이션으로 설정된 값을 반영시킴으로써도 RTL 기술을 얻을 수 있다. 또한, 이러한 파라미터화된 RTL 템플릿은, 메모리, 캐시 등의 부분 모듈마다 설정해도 된다. 혹은, 메모리, 캐시 등의 부분 모듈을 포함한 프로세서전체의 RTL 템플릿을 설정하는 것도 가능하다. 또한, 모든 파라미터를 포함한 하나의 RTL 템플릿이어도 된다.
<시뮬레이터 커스터마이즈부의 구성>
도 8은 시뮬레이터 커스터마이즈부(42)의 일례를 도시하고 있다. 이 시뮬레이터 커스터마이즈부(42)는 컨피그레이션에 따른 명령 동작을 실행하는 시뮬레이터를 생성한다.
도 8에서, 재컴파일부(42c)는 시뮬레이터 템플릿(42a)에 사용자 정의 모듈·사용자 정의 명령 기억부(3) 내에 저장된 사용자 정의 하드웨어의 C 모델을 내장하여 재컴파일함으로써, C 모델의 시뮬레이터를 재구축한다. 또한, 기동 옵션 정보 추출부(42d)는 설정 파일 생성부 내의 상기 디바이스 구성 기억부(24)와 캐시 구성 기억부(25)에 저장되어 있는 데이터를 참조하여, 기동 시의 옵션을 지정하는 시뮬레이터 기동 옵션 파일(도 9a 참조)을 생성한다.
조합 처리부(42e)는 재컴파일부(42c)로부터 공급되는 재구축한 시뮬레이터와, 기동 옵션 정보 추출부(42d)로부터 공급되는 시뮬레이터 기동 옵션 파일을 조합함으로써, 컨피그레이션에 따른 명령 동작을 실행하는 시뮬레이터를 생성한다.
또, 시뮬레이터는 특정 어드레스 통과 시에, 디버그 명령의 실행 결과를 출력하는 수단을 구비하는 것이 바람직하다. 종래, 실행 도중에서 오류가 생긴 경우, 에러를 출력하는 어사션 에러 프로그램 등이 있다. 그러나, 디바이스가 정상적으로 실행하여 있을 때, 도중 경과를 조사하기 위해서는 도중 결과를 출력하는 명령을 어플리케이션에 매립해두거나, 디버거 등으로 실행을 정지시켜 도중 경과를판독할 수 없었다. 이에 대하여, 기동 시에 지정되는 어드레스를 통과했을 때에 소정의 정보를 출력하도록 하면, 시뮬레이터로 어플리케이션을 실행하고 있는 도중에 도중 경과를 조사하는 것이 가능해진다. 예를 들면, 다음에 나타낸 바와 같은 커맨드로 시뮬레이터를 기동한다.
sim-load test. hex-printx mem(0x400) at 0x1200
여기서, sim은 시스템-온-칩의 시뮬레이터를 나타내고, -load test. hex는 test. hex라는 16진수의 파일을 로드한다는 명령을 나타내고, -printx mem(0x400) at 0x1200은 0x1200 번지를 통과했을 때에 메모리의 0x400 번지의 내용을 출력하는 명령을 나타낸다.
즉, 시뮬레이터는 이 인수로 지정된 지시를 기억하고, 프로그램 카운터가 0x1200 번지를 통과할 때마다 0x400 번지의 내용을 16진수로 콘솔에 출력한다. 이 때, 어플리케이션 프로그램에는 관측용 코드가 매립되어 있는 것은 아니다. 이 때문에, 시뮬레이션은 명령 수나 사이클 수 등의 통계 정보에는 전혀 영향을 미치지 않고, 어플리케이션 프로그램의 실행을 관측할 수 있다. 또한, 특정 어드레스에서 실행을 정지시켜, 남의 손을 통해 메모리의 값을 판독하여 표시시키는 등의 작업이 필요없다. 이 때문에, 통계 정보를 정확하게 취하면서, 특히 주목하고자 하는 도중 결과를 확인하면서 어플리케이션 프로그램의 시뮬레이션을 할 수 있다. 이 때문에, 효율적으로 LSI를 개발할 수 있다.
또한, 시뮬레이터는 지정된 이외의 영역에 대하여 메모리 액세스가 일어난 경우, 실행을 정지하는 것이 바람직하다. 설정된 컨피그레이션에 따라서 시뮬레이터를 기동했을 때, 사용 가능한 메모리가 명확하게 주어지고 있다. 가령 기판 상에서 실장되어 있지 않은 영역의 메모리를 액세스하면, 예를 들면 버스 에러로 되어, 그 이후의 동작은 보증되지 않는다. 동작이 보증되지 않는 프로그램은 시뮬레이터 실행 시에 잘못을 지적함으로써, 조기에 수정해 둘 필요가 있다. 그래서, 시뮬레이터는 존재하는 메모리 영역을 지정하고, 명시적으로 지정되지 않은 영역은 액세스 금지로 한다. 또한, 시뮬레이터는 이 액세스 금지 영역이 액세스된 경우, 경고하여 프로그램의 동작을 정지한다. 또한, 시뮬레이터는 대화 모드(디버그 모드)를 갖고, 대화 모드로 이행한 경우, 어디에서 에러가 발생하였는지를 해석할 수 있게 되어 있다. 즉, 시뮬레이터가 디버거와 통신하여 동작하고 있는 경우, 시뮬레이션 동작을 중단하여 디버거의 커맨드 대기로 이행한다. 또한, 무효 영역을 액세스하였다고 하는 에러를 표시하여, 프로그램의 오류를 조기에 확실하게 사용자에게 전달한다.
또한, 메모리의 디코드 회로는 상위의 어드레스 신호선의 접속을 생략하여 구성되는 경우가 있다. 이 경우, 타깃으로 어드레스를 잘못한 프로그램을 실행해도 버스 에러로는 되지 않는다. 그러나, 액세스가 기입인 경우, 의도하지 않은 어드레스의 내용을 재기입하게 되어, 나중의 실행 결과가 기대대로 안되는 경우가 있다. 그 잘못된 프로그램을 RTL 시뮬레이터로 실행한 경우, 오류를 즉시 발견할 수 없다. 그러나, 시뮬레이터에 올바른 어드레스만을 액세스할 수 있도록, 정확한 맵핑 정보를 제공하여 실행시킨 경우, 지정 범위 이외의 어드레스를 액세스한 것을 바로 경고할 수 있다. 따라서, 사용자는 잘못된 프로그램을 조기에 검출할 수 있어, 쓸데 없는 해석 시간을 절약할 수 있다. 이 때문에, 개발 사이클의 단축을 도모할 수 있다.
또, 디버거는 디바이스 구성 기억부(24)와 캐시 구성 기억부(25) 내에 저장되어 있는 데이터를 참조하여, 도 9b에 도시한 바와 같은 디버거 기동 옵션 파일을 생성한다. 디버거 기동 옵션 파일을 이용함으로써, 디버거는 컨피그레이션에 따른 동작을 행하는 것이 가능해진다.
또한, 디버거는 시뮬레이터의 통계 정보를 가상적인 레지스터 혹은 변수로서 판독하는 수단을 포함하는 것이 바람직하다. 디버거는, $profile이라는 변수를 특수한 변수로서 예약하고 있다. 통계 정보는 영역마다 관리되고 있다. 이 통계 정보는 디버거의 변수 판독 커맨드 print에 의해 표시된다. 예를 들면, 영역의 3번째의 정보를 표시시키기 위해서는, print$profile[3]과 같이 입력한다.
dbg>print$profile[3]
profile3:Count:7 Inst=123 Cycle=145
dbg>
또한, 언어 툴은 시뮬레이터용의 디버그용 명령을 어드레스와 함께 심볼이나 소스 행과 동등한 디버그 정보로서 출력하는 수단을 포함하는 것이 바람직하다(타깃의 기계 명령에는 반영되지 않는다). 컴파일러에는 시뮬레이터 등으로 표준 출력에 도중 결과 등을 출력하기 위한 확장이 실시되어 있다. #pragma cosoleout에 계속되는 문장은, 타깃의 기계어로는 번역되지 않고 심볼명이나 행 번호와 마찬가지로, 디버그 정보로서 파일에 저장된다. 시뮬레이터는, 디버그 정보가 붙은 오브젝트 파일을 판독하였을 때, #pragma 문이 정의된 어드레스 정보를 기억함과 함께, 디버그 출력 정보인 printf("a=%d¥n", a)를 기억한다. 시뮬레이터가 해당 어드레스를 실행하려고 하였을 때에, 디버그 정보를 출력해야만 한다고 판단하고, printf 문을 파서(parser)에 보내어 디버그 정보를 출력한다.
이와 같이, 타깃의 기계 명령에 영향을 주지 않고, 시뮬레이터 실행 시에 디버그 정보를 출력하여, 시뮬레이터의 실행도 중단하지 않고 내용을 확인할 수도 있다. 이 때, 시뮬레이터 실행 시에 수집되는 통계 정보는 타깃에서 실행되는 것과 동일한 정보이다. 다른 표현을 하면, 타깃과 시뮬레이터에서 동일한 오브젝트 코드를 이용할 수 있게 된다. 따라서, 실행 환경의 차이에 의한 재컴파일 등의 시간이 발생하지 않게 되는 분만큼 개발 사이클을 단축할 수 있다. 또한, 단일의 오브젝트 파일을 공유할 수 있기 때문에, 관리가 용이하게 되는 것은 명백하다.
func(int b) {
float a:
for(I=1;I<20; i++){
A=b/I;
#pragma consoleout printf("a=%d¥n", a);
}
<컴파일러 커스터마이즈부의 구성>
컴파일러 커스터마이즈부(43)는 옵션 정보 기억부(23)와 사용자 정의 모듈·사용자 정의 명령 기억부(3) 내에 저장된 데이터를 참조하여, 기계 명령 함수 선언을 포함하는, 도 9c에 도시한 바와 같은 기계 명령 함수 선언 헤더 파일을 생성한다. 또, 여기서 말하는 기계 명령 함수 선언이란, 프로세서 고유의 명령을 고급 언어로부터 직접 지정하기 위해서, 프로세서 고유의 명령을 고급 언어의 함수 선언으로서 기술한 것이다.
도 10은 컴파일러 커스터마이즈부(43)의 일 실시예를 도시하고 있다. 도 10에 있어서, 기계 명령 함수 선언 추출부(43c)는 사용자 정의 모듈·사용자 정의 명령 기억부(3) 내에 저장된 사용자 정의 명령을 참조하여, 대응하는 기계 명령 함수 선언을 추출한다. 또한, 결합 처리부(43d)는 옵션 정보 기억부(23) 내에 저장된 데이터를 참조하여, 이미 지정된 템플릿(43b)으로부터 유효한 옵션 명령에 대응하는 기계 명령 함수 선언을 선택한다. 또한, 결합 처리부(43d)는 상기 템플릿(43b)과 기계 명령 함수 선언 추출부(43c)로부터 공급되는 기계 명령 함수 선언을 결합함으로써, 기계 명령 함수 선언 헤더 파일을 생성한다. 이 기계 명령 함수 선언 헤더 파일에는 컨피그레이션에서 유효하게 된 옵션 명령과 사용자 정의 명령에 대응하는 기계 명령 함수 선언이 포함된다.
이에 의해, 사용자는 고급 언어 프로그램으로부터 컨피그레이션에서 지정한 옵션 명령과 사용자 정의 명령을 직접 지정하여, 이용하는 것이 가능해진다.
또한, 컴파일러 커스터마이즈부(43)는 옵션 명령 추출부(43a)를 갖고 있다. 옵션 명령 추출부(43a)는, 옵션 정보 기억부(23) 내에 저장된 데이터를 참조하여, 최적화에 이용할 수 있는 옵션 명령의 정보를 취득한다. 이 옵션 명령의 정보에 따라서, 컴파일러 커스터마이즈부(43)는 컴파일러 기동 시의 옵션을 지정하는 컴파일러 기동 옵션 파일(도 11a 참조)을 생성한다.
이에 의해, 이용 가능한 옵션 명령의 정보를 컴파일러의 최적화에 반영시킬 수 있다. 또한, 컴파일러의 함수 라이브러리는, 기동 옵션 파일을 사용하여 소스로부터 재컴파일되기 때문에, 이용 가능한 옵션 명령을 내장한 라이브러리를 생성할 수 있다.
<어셈블러 커스터마이즈부의 구성>
어셈블러 커스터마이즈부(44)는 이용 가능한 옵션 명령과 사용자 정의 명령의 니모닉과 명령 형식의 정보를 내장하여 어셈블러를 재구축한다. 이 어셈블러 커스터마이즈부(44)에 따르면, 이용 가능한 모든 명령의 조합으로 이루어지는 어셈블러 프로그램에 대하여, 대응하는 오브젝트 코드를 생성할 수 있다.
<검증 벡터 생성부의 구성>
검증 벡터 생성부(45)는 설정 파일 생성부(2) 내의 각 기억부 내에서 지정된 컨피그레이션을 참조하여, 지정된 시스템-온-칩의 구성을 검증하는 검증 벡터를 생성한다. 여기서, 시스템-온-칩의 규모가 큰 경우, 한정된 시간 내에서 검증을 끝내기 위해서, 기본이 되는 구성으로부터 변경된 부분을 중점적으로 검증하는 것이 필요해진다. 그래서, 지정된 옵션 명령이나 지정된 사이즈의 캐시 등을 중점적으로 검증하도록, 검증 벡터는 명령 세트 기술에 기초하여, 각 명령에 대응하는 검증 벡터군을 생성하는 것이 바람직하다(도 11b는 검증 벡터 생성용의 사용자 정의 명령 파일의 일례를 도시한다).
다음에, 본 실시 형태에 대하여 더 구체적으로 설명한다.
본 실시 형태의 환경은 프로세서의 명령 동작을 기술한 컨피그레이션 지정 파일(아키텍텨 DB 파일)로부터, RTL, 컴파일러, 어셈블러, 시뮬레이터, 검증 벡터, 디버거가 자동적으로 구축된다. 이 컨피그레이션 지정 파일은, 사전에 복수 정의되어 있는 아키텍처 중 하나를 지정하는 기술(아키텍쳐형의 지정)을 포함한다. 여기서 말하는, 아키텍쳐형의 예로서는 VLIW 모드로 실행되는 것(특정한 파이프(VLIW 슬롯)로 실행되는 것), DSP 명령을 포함한다. 이 아키텍처형의 지정에 기초하여, 컴파일러의 명령 스케줄링, 및 VLIW의 병렬화 기능이 제어된다. 또한, 명령 세트·시뮬레이터에서의 성능 견적 값을 조정시킨다. 이 환경을 이용함으로써, 사용자는 어플리케이션에 따라서, 독자적으로 명령을 정의할 수 있다. 이 사용자가 정의한 명령을 사용자 정의 명령이라고 부른다. 또한, 고수준 언어에 의해 프로그램을 작성하고, 그 프로그램의 성능을 시뮬레이터를 이용하여 평가하는 것이 가능해진다.
또한, 기본적인 구성 요소로서 사용자 정의 명령에 대하여, 기계 명령 함수의 환경이 자동적으로 구축된다. 기계 명령 함수를 이용함으로써, 컴파일러가 갖는 기능, 예를 들면 명령 스케줄링, VLIW의 병렬화(명령 packing), 레지스터 할당 등을 사용하는 것이 가능해진다.
이하, 각 실시 형태에 있어서, 구체적으로 설명한다.
<제1 실시 형태>
도 12는 본 발명의 제1 실시 형태를 도시하고 있다. 도 12는 도 1에 도시한 시스템-온-칩 개발 환경 생성부(4)의 명령을 추가하기 위한 실시예를 개략적으로도시한 것으로, 도 5에 도시한 구성과 거의 마찬가지다.
설정 파일 생성부(2)로부터 공급되는 아키텍처 DB 파일로서의 컨피그레이션 지정 파일은 파서에 공급된다. 이 파서는 컨피그레이션 지정 파일을 해석한다. 커맨드 인터프리터는 사용자가 지정하는 커맨드를 해석하고, 해석한 커맨드의 내용에 따라서, 예를 들면 RTL 생성부, 시뮬레이터 생성부, 컴파일러 커스터마이즈부, 어셈블러 커스터마이즈부, 검증 벡터 생성부, 디버거 생성부의 실행 순서를 제어한다. 실행 방식으로서는, 사전에 일련의 처리를 등록해 놓고, 이들 처리를 연속하여 실행시키는 배치 처리나, 회화형 처리 등이 선택 가능하게 되어 있다. 사용자가 지정하는 커맨드는, 예를 들면 GUI(Graphical User Interface), 혹은 CUI(Character Base User Interface) 등을 이용하여 입력된다. 상기 파서는 커맨드 인터프리터에 의해 기동되는 것도 있다.
도 13은 아키텍쳐 DB 파일로서의 컨피그레이션 지정 파일의 일례를 도시하고 있다. 컨피그레이션 지정 파일에는, 예를 들면 프로세서의 지정, 레지스터 정의, 명령 정의 등이 기술 가능하게 되어 있다. 프로세서의 지정에는, 예를 들면 프로세서의 이름, 및 타입이 기술 가능하게 되어 있다. 도 13에서, 프로세서는 아키텍처형으로서 타입(2_WAY_VLIW)이 기술되어 있다. 즉, 사전에 정의되어 있는 아키텍처 중, 2_WAY의 VLIW를 선택하는 것을 나타내고 있다.
또한, 명령 정의는 명령의 니모닉, 비트 패턴, 및 동작 기술로 이루어진다. 여기서, 비트 패턴은 연산 코드 및 피연산자의 비트 정보를 포함한다.
동작 기술은, 통상의 프로그램의 동작 기술 이외에, 비트 분할, 비트 결합,사인/제로 확장, 오버 플로우 동작 등을 기술할 수 있다. 또한, SWAP 동작 등을 실현하기 위해서 필요한 일시 변수를 사용할 수도 있다.
또한, 도 13에는 일부만을 기재하고 있다.
제1 실시 형태에 따르면, 커맨드 인터프리터에 의해, 해석한 커맨드의 내용에 따라서, RTL 생성부, 시뮬레이터 생성부, 컴파일러 커스터마이즈부, 어셈블러 커스터마이즈부, 검증 벡터 생성부, 디버거 생성부의 실행 순서가 제어된다. 이 때문에, 사용자는, 개발 환경의 생성 순서를 임의로 설정할 수 있다. 따라서, 어플리케이션의 개발 순서에 따라서 임의로 개발 환경을 생성할 수 있다.
<제2 실시 형태>
제2 실시 형태는, 상기 레지스터 정의부에 관한 것이다.
도 14는 도 13에 도시한 레지스터 정의부의 기재 예를 구체적으로 도시하고 있다. 레지스터 정의부에는, 범용 레지스터의 개수, 컴파일러의 레지스터 사용법(함수의 복귀값용 레지스터, 인수용 레지스터, 함수 콜에 의해 콜된 함수에 이어지는 레지스터, 함수 콜에 의해 콜된 함수에 이어지지 않는 레지스터, 스택 포인터용 레지스터, 글로벌 포인터용 레지스터, 타이니 포인터용 레지스터, 0 레지스터 등), 범용 레지스터의 별칭 정의, 및 제어 레지스터 정의를 지정한다. 레지스터 사용법은 생략 가능하고, 생략한 경우, 디폴트의 사용법이 적용된 컴파일러가 생성된다.
도 14에 있어서, 범용 레지스터의 수 GPR는 16개, 컴파일러의 레지스터의 사용 방법으로서, 함수가 복귀값용 레지스터 RET는 레지스터 0, 함수 인수용 레지스터 ARG는 레지스터 1, 2, 3, 4, 제로 전용 레지스터 ZERO는 레지스터 12, 스택 포인터 레지스터 SP는 레지스터 15로 정의되어 있다. 또한, 제어 레지스터로서 링크 포인터 LP가 정의되어 있다.
별칭(alias) 정의에 있어서, 레지스터의 별칭을 정의할 수 있다. 별칭을 필요로 하지 않은 경우에는 생략한다. 별칭 정의를 이용함으로써, 사용자가 직접 어셈블리 코드를 기술하는 경우, 자신의 기호에 맞추어서 기술할 수 있다. 예를 들면 스택 포인터 SP에 대응하는 레지스터가 레지스터 15인 경우, 레지스터 15의 별칭으로서 SP를 정의하였다고 한다. 이렇게 하면, 어셈블리 코드 내에서 SP와 기술하면, 어셈블러는 SP을 레지스터 15로 인식할 수 있다.
또한, 레지스터 수가 적은 경우, 일부의 특수 사용 레지스터, 예를 들면 타이니 포인터용 레지스터 TP(도시하지 않음)을 범용 레지스터로서 취급하는 경우가 있다. 이 때, 이 레지스터를 타이니 포인터로서 사용하는 경우, "TP"로 기술하고, 이 레지스터를 범용 레지스터로서 사용하는 경우에는, 레지스터 번호를 기술한다. 이와 같이 기술하면 어셈블리 코드에 의해, 이 레지스터가 타이니 포인터로서 사용되고 있는지 범용 레지스터로서 사용되어 있는지를 구별할 수 있다. 따라서, 보수성이 높은 어셈블리 코드를 구축할 수 있다.
상기 컨피그레이션 지정 파일에 기술된 정보에 기초하여, 컴파일러, 어셈블러, 시뮬레이터, 디버거, 검증 벡터 등이 커스터마이즈된다. 즉, 도 12에 도시한 바와 같이, 컴파일러 커스터마이즈부에는 레지스터의 사용법 및 레지스터의 별칭이 공급되고, 어셈블러 커스터마이즈부에는 레지스터명과 레지스터의 별칭, RTL 생성부, 시뮬레이터 커스터마이즈부, 검증 벡터 생성부, 디버거 생성부에는 레지스터명이 공급된다.
예를 들면 컴파일러 커스터마이즈부는 레지스터 정의부내에서 정의된 범용 레지스터와 제어 레지스터의 정보를 바탕으로, 컴파일러를 생성한다. 이 컴파일러는 각 레지스터에 직접 액세스하는 것이 가능한 레지스터 의사 변수의 정의를 갖고 있다. 이 레지스터 의사 변수를 이용함으로써, 사용자는 고수준 언어로 프로세서가 갖는 각 레지스터에 직접 액세스할 수 있다.
또한, 컨피그레이션 지정 파일에 있어서, 어큐뮬레이터 및 시프트 어마운트 레지스터를 정의하는 것도 가능하다.
도 15는 어큐뮬레이터의 정의의 일례를 도시하고 있다. 이 예는 256bit의 어큐뮬레이터가 2개 있는 것을 나타내고 있다.
도 16은 시프트 어마운트 레지스터의 정의의 일례를 도시하고 있다. 이 예는 시프트 어마운트 레지스터가 2개 있는 것을 나타내고 있다.
상기 제2 실시 형태에 따르면, 사용자는 어플리케이션에 맞추어서 컴파일러의 레지스터의 사용 방법을 변경할 수 있다. 예를 들면, 어플리케이션 내에서 빈번하게 즉치 "0"을 사용하는 경우, 항상 "0"을 값으로 하는 레지스터를 준비함으로써, 즉치 "0"을 만들기 위한 명령을 생성할 필요가 없어진다. 이 때문에, 코드 사이즈, 및 실행 성능을 모두 향상시킬 수 있다.
또한, 어플리케이션 내에서 즉치 "0"을 그다지 사용하지 않는 경우, 항상 "0"을 값으로 하는 레지스터를 준비하지 않음으로써, 다른 용도를 위한 레지스터 수를 증가할 수 있다. 이 때문에, 레지스터 부족에 의한 메모리 액세스의 빈도를저감할 수 있어, 코드 사이즈 및 실행 성능을 모두 향상시킬 수 있다.
또한, 레지스터 정의는 디폴트를 가지며, 사용자가 레지스터의 사용법을 생략한 경우, 디폴트의 사용법이 설정된다. 이와 같이, 컴파일러의 디폴트의 사용법을 채용했을 때, 사용자는 어플리케이션의 성능을 계측할 수 있다. 이 계측한 성능을 참고로 함으로써, 보다 좋은 레지스터 사용법을 지정 가능해진다.
또한, 컴파일러는 레지스터 의사 변수의 정의를 갖고 있다. 이 때문에, 사용자는 레지스터 정의에 기술한 모든 레지스터에 고수준 언어 내에서 액세스하기 위한 레지스터 의사 변수를 사용하는 것이 가능하게 된다. 이 레지스터 의사 변수는 고수준 언어 내에서 제어 레지스터 등의 특별한 레지스터에 액세스하는 경우에 유익하며, 컴파일러의 인라인어셈블 기능과 맞추어 이용하는 것도 생각된다. 따라서, 모든 레지스터의 레지스터 의사 변수를 준비하는 기능은 효과가 있다고 할 수 있다.
또한, 레지스터 정의부는 별칭 정의를 갖고, 사용자의 기호에 맞추어서 레지스터명을 정의할 수 있다. 따라서, 사용성이 좋고, 보수성이 높은 어셈블리 코드를 구축할 수 있다.
<제3 실시 형태>
다음에, 본 발명의 제3 실시 형태에 대하여 설명한다. 제3 실시 형태는 VLIW에 관한 것이다.
VLIW에 관한 명령의 동작 정의는 아키텍쳐 DB 파일로서의 컨피그레이션 지정 파일 내의 명령 정의부에서 행한다. 명령 정의부에는 명령의 사양, 피연산자(OP)코드, 및 동작 내용을 기술한다. 명령의 사양, 및 OP 코드의 정보에 기초하여, 어셈블러의 동작을 정의하는 어셈블러 정의 파일을 생성한다. 또한, 동작 내용의 정의에 기초하여, 명령의 사양 정의에 기술되어 있지 않는 정보로서, 명령의 동작에 필요한 정보, 예를 들면 명령의 니모닉에 나타나지 않지만 데이터의 판독이나 기입에 필요한 하이 레지스터 및 로우 레지스터나 어큐뮬레이터의 정보를 모아, 기계 명령 함수 정의에 적용한다. 이에 의해, 컴파일러는 보다 좋은 레지스터 할당과 명령 스케줄링이 가능하게 된다.
컨피그레이션 지정 파일에는 코프로세서에 관해서도 정의할 수 있다. 즉, 도 7에 도시한 프로세서(2)와 같이, 예를 들면 RISC 코어와 같은 프로세서 코어에 대하여, 코프로세서가 접속 가능하게 되어 있다. 이 코프로세서로서는, 예를 들면 VLIW(Very Long Instruction Word) 모드, DSP(Digital Signal Processor)가 있다.
도 17은 코프로세서 정의의 일례를 도시하고 있다. 코어 명령과 구별하기 위해서, 코프로세서 정의인 것을 나타내는 정보를 아키텍쳐형으로서 가지고 있다. 즉, 코프로세서의 이름, 및 코프로세서의 타입이 기술된다. 이 기술의 다음에 코프로세서 정의의 관련 정보로서, 레지스터 정의와 명령 정의를 정의한다. 코프로세서 정의의 관련 정보는, 상기 레지스터 정의와 명령 정의 이외에, VLIW 모드의 실장의 유무(없음, 2 병렬, 3 병렬), 연산 데이터 폭 정의(코프로세서 연산 도중에서 보증되는 데이터의 폭)을 가지고 있다.
VLIW 모드가 실장되는 경우, 코프로세서 명령이 VLIW 모드의 슬롯의 어디에 들어가야 하는지를 나타내는 정보(도 17의 V3)가 명령 세트 정의에 포함된다. 이슬롯의 정의는, 프로세서의 사용에 의존하여 결정되며, 명령을 병렬화할 때, 어떤 슬롯에 들어가는 명령인지를 나타내는 정보가 된다.
이 정보를 바탕으로 코프로세서 명령에 관한 상기 기계 명령 함수 정의 파일이 생성된다. 상기 컴파일러 커스터마이즈부는 이 기계 명령 함수 정의 파일에 기초하여, 사용자가 정의한 코프로세서 명령을 병렬화할 수 있다. 또한, 어셈블러 커스터마이즈부는 이 기계 명령 함수 정의 파일에 기초하여, 병렬화가 사용 측면에서 올바른지를 체크할 수 있게 된다.
슬롯의 정보는 검증 벡터 생성부에 공급된다. 검증 벡터 생성부는 슬롯의 정보에 기초하여, 병렬화한 명령에 대한 프로세서의 동작을 검증하기 위해서 필요한 검증 벡터를 생성한다.
연산 정의 폭 정보는 명령의 동작 정의 내에 일시 변수가 있는 경우, 혹은 부호 확장 연산이 있는 경우, 그 일시 변수의 비트폭과 부호 확장 후의 비트폭을 시뮬레이터가 몇 비트로서 취급할지의 정보이다. 이 폭 정보는 코프로세서의 레지스터 정의부 내에서 정의된 레지스터의 비트폭에 의존한다. 예를 들면, 코프로세서의 레지스터의 연산 폭이 64 비트로 지정된 경우, 연산 정의 폭 정보는 최대로 64 비트까지 지정할 수 있게 된다. 이 연산 정의 폭 정보는 시뮬레이터 커스터마이즈부에 공급되어 시뮬레이터에 반영된다.
상기 제3 실시 형태에 따르면, 사용자는 정의한 모든 명령에 대한 기계 명령 함수의 정의 파일을 갖을 수 있다. 이 때문에, 기계 명령 함수를 사용함으로써, 사용자는 컴파일러의 레지스터 할당, 명령 스케줄링, VLIW의 병렬화 기능을 얻을수 있다. 따라서, 어플리케이션의 개발 측면에서 대단히 유익하다.
또한, 슬롯 정의는 명령을 병렬화할 때, 어떤 슬롯에 들어가는 명령인지를 나타내는 정보를 갖고 있다. 이 때문에, 기계 명령 함수로 표현된 명령의 적정한 슬롯에의 파킹이 가능하거나, 혹은 어셈블러가 적정인 슬롯을 이용하는 것이 가능하게 되어, 사용자의 어플리케이션 개발을 촉진할 수 있다.
또한, 명령을 병렬화할 때에 사용하는 슬롯 정의의 정보를 기계 명령 함수 정의에 반영시키고 있다. 이 때문에, VLIW 모드가 실장되어 있는 경우, 사용자 정의의 코프로세서 명령을 병렬화할 때, 어떤 슬롯에 들어가는 명령인지를 나타내는 정보가 기계 명령 함수 정의에 공급된다. 이 때문에, 컴파일러는 기계 명령 함수에 대하여 올바르게 VLIW의 병렬화를 행할 수 있다. 기계 명령 함수는 고수준 언어 내에서 사용할 수 있기 때문에, 사용자의 어플리케이션의 개발을 촉진할 수 있다.
또한, 연산 정의 폭 정보는 시뮬레이터에 반영된다. 이 때문에, 시뮬레이터는 명령의 동작을 프로세서의 사양에 맞출 수 있다. 따라서, 시뮬레이터의 동작과 실제의 프로세서의 동작을 일치시킬 수 있다.
또한, 슬롯 정보는 어셈블러에 반영된다. 이 때문에, 어셈블러에서 사용자가 직접 손으로 기술한 어셈블리 코드 내에서의 명령의 병렬화 부분이 사양 그대로인지를 체크할 수 있다.
또한, 슬롯 정보는 검증 벡터에 반영된다. 이 때문에, 병렬화한 명령에 대한 프로세서의 동작을 검증하기 위해서 필요한 검증 벡터를 얻을 수 있다.
<제4 실시 형태>
다음에, 본 발명의 제4 실시 형태에 대하여 설명한다. 제4 실시 형태는, DSP에 관한 것이다.
DSP를 사용자 정의 모듈로서 내장하기 위한 기능으로서, 컨피그레이션 지정 파일은, 다른 모듈과 구별하기 위한 식별자를 가지고 있다. 이 식별자 내에 DSP 관련의 정의가 기술된다. DSP의 명령 정의에서는 임의의 비트폭의 명령을 정의할 수 있다. 또한, 레지스터 정의에서는 임의의 비트폭의 레지스터를 정의할 수 있다.
도 18은 DSP 모듈용 컨피그레이션 지정 파일의 예를 도시하고 있다. 선두에 DSP-NAME라는 아키텍처 구별용 식별자가 기술되어 있다. 또한, 레지스터 정의부 <dsp_register>에 레지스터 폭 정의 REG_WIDTH가 부가되어 있다. 이 예의 경우, 레지스터 폭이 20bits로 설정되어 있다. 또한, 명령 정의부 <dsp_ISA>에서는 20bits의 명령이 정의되어 있다.
또한, DSP 모듈용 컨피그레이션 지정 파일은, 도시하지 않은 고정 소수점 라이브러리의 소수점의 위치를 지정하는 정보를 기술 가능하게 되어 있다. 이 정보는 컴파일러 커스터마이즈부에 공급되며, 컴파일러의 고정 소수점 라이브러리에 반영된다.
또한, 컴파일러의 DSP으로 특화한 기능을 기술 가능하게 되어 있다. 이 기능은, 예를 들면 복소 데이터형, X/Y 메모리, 순환 버퍼, 고정 소수점 데이터형, 비트 반전, 이종 레지스터 세트의 대응 중 적어도 하나이다.
상기 제4 실시 형태에 따르면, 컨피그레이션 지정 파일은, 프로세서가 DSP 형이고, 하드웨어의 지정이 DSP 명령 형식인 기술을 포함하고 있다. 또한, DSP 명령 형식에 있어서, 명령의 비트폭이 설정 가능하게 되어 있다. 이 때문에, 사용자는 어플리케이션의 용도에 맞추어서 플렉시블하게 명령의 비트폭을 설정할 수 있다. 따라서, 사용자는 요구 성능에 맞는 DSP를 설정할 수 있어, 불필요한 비용을 삭감할 수 있다.
또한, DSP 명령 형식에 있어서, 레지스터 폭을 설정 가능하게 되어 있다. 이 때문에, 사용자는 어플리케이션의 용도에 맞추어서, 플렉시블하게 레지스터의 비트폭을 설정할 수 있다. 따라서, 사용자는 요구 성능에 맞는 DSP를 설정할 수 있어, 불필요한 비용을 삭감할 수 있다.
또한, 컴파일러의 고정 소수점 라이브러리는 일반적으로 고정 소수점의 위치에 플렉시블하게 대응한다. 이 때문에, 성능이 저하하게 된다. 그러나, 본 실시 형태에 있어서, 고정 소수점 라이브러리의 소수점의 위치를 지정하는 정보는, 컴파일러의 고정 소수점 라이브러리에 반영되기 때문에, 성능 저하를 막을 수 있다.
또한, 사용자는 컴파일러의 DSP용으로 특화한 기능을 사용할 수 있다. 이 때문에, 어플리케이션의 개발 기간을 단축할 수 있을뿐만 아니라, 어플리케이션의 성능을 향상시킬 수 있다.
<제5 실시 형태>
제5 실시 형태는, SIMD(Single Instruction Multiple Data)에 관한 것이다. 제5 실시 형태는 SIMD의 복수 데이터의 처리를 하나에 통합하여 기술하고, 이 기술로부터 시뮬레이터를 생성하거나, 멀티미디어 데이터형에의 대응을 가능하게 한다.
즉, 명령이 SIMD 데이터를 취급할 수 있는 경우, 컨피그레이션 지정 파일 내의 명령 정의부에 SIMD 데이터를 취급하는 것을 나타내는 정보가 기술된다. 이 정보로서는, 예를 들면 명령이 취급하는 데이터 길이와, 각 명령 피연산자의 데이터 길이이다. 이 정보는 SIMD 데이터 폭을 지정하고, 기계 명령 함수 정의와 고수준 언어의 SIMD 데이터용 확장 선언자의 생성에 적용된다. 이에 의해, 사용자는 SIMD 데이터를 용이하게 취급하는 것이 가능하게 된다. 다음에, 기술 예를 나타낸다.
CPPACK. B: CRo, CRq, CRp:
Cop: "SIMD=B, Pack=B:H:H":
상기 예는 "CPPACK. B" 명령의 데이터 길이가 8 비트인 것을 나타내고 있다. 즉, 레지스터가 64 비트인 경우, 8 병렬인 것, 이 레지스터 폭은 레지스터 정의부내의 코프로세서 레지스터 폭과 동일하는 것을 나타내고 있다. "B" 외에 "H"(half word, 즉, 16 비트), "W"(word, 즉, 32 비트)도 지정 가능하게 되어 있다. 또한, "U"의 유무에 따라서 부호 없음과, 부호가 있는 데이터를 구별한다. 예를 들면 "BU"로 기술한 경우, 8 비트의 부호 없음 데이터를 나타낸다.
또한, "Pack=B:H:H"이라는 지정에 의해, "CPPACK. B" 명령의 피연산자"CRo, CRq, CRp"가 각각 부호가 있는 8 비트, 부호가 있는 16 비트, 부호가 있는 16 비트의 데이터인 것을 나타내고 있다.
도 19는 SIMD 명령에서의 "CPADD. H"의 명령 정의의 예를 도시하고 있다. 이 명령이 정의되는 코프로세서의 코프로세서 레지스터가 예를 들면 64 비트폭이다고 한다. 이 명령의 데이터 길이는 "SIMD=H" 즉, 부호가 있는 16 비트이다. 바꾸어 말하면, 이 명령은, 16 비트폭의 데이터를 4 병렬로 계산한다. 또한, "PACK=H, H, H"에 의해, 이 명령의 피연산자 "CRl, Ckm, CRn"이 각각 부호가 있는 16 비트의 데이터인 것을 나타내고 있다. 또한, 동작 정의에 의해, 이 명령이 부호가 있는 16 비트의 데이터의 가산을 4 병렬로 행하는 것을 나타내고 있다. 이들 정보는 컴파일러 커스터마이즈부, 및 시뮬레이터 커스터마이즈부에 공급된다. 컴파일러 커스터마이즈부에서는, 이들 정보가 컴파일러의 고수준 언어용 확장 선언자의 생성, 기계 명령 함수의 생성, 레지스터 할당, 명령 스케줄링 기능에 반영된다. 또한, 시뮬레이터 커스터마이즈부에서는, 이들 정보가 시뮬레이트의 동작, 시뮬레이트 결과의 출력 기능에 반영된다.
도 19에 도시한 예는, 부호가 있는 16 비트의 데이터의 가산을 4 병렬로 행하는 SIMD 명령의 동작 기술을 4 행으로 나타내고 있다. 그러나, 이 동작 기술을 1행으로 기술하는 것이 가능하다.
이하에, 기술의 예를 나타낸다.
CRl. h=CRm. h+CRn. h;…예 (1)
상기 예 (1)에 있어서, ". h"는 "PACK=H, H, H"에 대응한 기술이다.
도 20은 상기 1 행에 의한 기술 예를 도시하고 있다.
"PACK"의 기술이, 예를 들면 "PACK=HU, B, BU"인 경우, 상기 예 (1)는 다음과 같이 기술된다.
CRl. hu=Ckm. b+ CRn. bu;…예 (2)
도 21은 상기 1 행에 의한 기술 예를 도시하고 있다.
또한, 지표(첨자) "i"를 이용함으로써, 다음에 나타낸 바와 같은 데이터의 배열이 일치하지 않은 기술을 간략화할 수 있다.
CRl[15:0]=CRm[63:48]+CRn[63:48];
CRl[31:16]=CRm[47:32]+CRn[47:32];
CRl[47:32]=CRm[31:16]+CRn[31:16];
CRl[63:48]=CRm[15:0]+CRn[15:0];
간략화한 기술 예를 다음에 나타낸다.
CRl[i]=CRm[3-i]+CR[3-i];…예 (3)
예 (3)의 경우, 지표 "i"는 명령의 데이터 폭과 코프로세서 레지스터 폭에 의존하는 값을 취한다. "SIMD=H", 코프로세서 레지스터의 데이터 폭이 64 비트인 경우, 지표 "i"의 값은 0∼3이 된다.
도 22는 상기 지표를 이용한 기술 예를 도시하고 있다.
상기 제5 실시 형태에 따르면, 컨피그레이션 지정 파일의 명령 정의부에 SIMD 명령에 관한 정보를 기술하고 있다. 이 때문에, 비교기 커스터마이즈부는 SIMD 명령에 관한 정보에 기초하여, SIMD 명령을 생성하기 위한 기계 명령 함수의 정의 파일을 생성할 수 있다. 기계 명령 함수는 고수준 언어 내에서 사용할 수 있기 때문에, 사용자의 어플리케이션 개발을 촉진할 수 있다.
또한, 고수준 언어 내에서 SIMD 데이터를 선언하기 위한 특수한 수식사를 사용할 수 있다. 이 때문에, 사용자의 어플리케이션 개발을 촉진할 수 있다.
또한, 시뮬레이터 커스터마이즈부는 입력된 SIMD 명령에 관한 정보에 기초하여, 시뮬레이터의 동작을 커스터마이즈한다. 이 때문에, SIMD 명령에 대하여 올바르게 동작하는 시뮬레이터를 생성할 수 있다.
또한, 시뮬레이터 커스터마이즈부는 입력된 SIMD 명령에 관한 정보에 기초하여, 시뮬레이터의 결과 출력 기능을 커스터마이즈한다. 이 때문에, SIMD 명령에 대하여 해석하기 쉬운 시뮬레이터의 출력 결과를 생성할 수 있다.
또한, SIMD 명령의 동작 기술은, 복수 명령을 통합하여 1 명령으로 기술하거나, 지표를 이용하여 기술할 수 있다. 이 때문에, SIMD 명령의 명령 동작의 기술을 간략화할 수 있다. 따라서, SIMD 명령의 명령 동작의 기술을, 사용자에게 있어서, 직감적으로 이해하기 쉬운 기술로 할 수 있다.
<제6 실시 형태>
제6 실시 형태는 명령 라이브러리에 관한 것이다.
사용자는 컨피그레이션 지정 파일의 사양에 맞는 명령을 추가하는 것이 가능하다. 본 시스템-온-칩 개발 환경 생성 시스템은, 정의된 명령을 보유하여, 라이브러리화하고 있다. 이것을 이하, 명령 라이브러리라고 칭한다. 이 명령 라이브러리는 명령의 종류마다 그룹화되어 있다. 사용자는 명령 라이브러리로부터 필요한 명령을 선택함으로써, 어플리케이션으로 특화한 개발 환경을 생성할 수 있다.
도 23은 SIMD 명령 라이브러리의 예를 도시하고 있다. SIMD 명령 라이브러리에서의 이들 명령은 옵션이고, 이에 대한 컨피그레이션 지정 파일과, RTL은 기본 명령과는 별도로 사전에 준비되어 있다. 사용자는, 이들 명령의 전부, 혹은 특정한 데이터형의 명령을 선택하여 사용할 수 있다.
도 23에서, ". xx"에는 명령이 이용하는 데이터형으로서 니모닉 "UB, B, UH, H, UW, W" 중 어느 하나가 기술된다. 이 기술은, 사용자에 의해 선택 가능하게 되어 있다. 또한, 도 23에 도시한 바와 같이, 니모닉의 기술을 생략하는 것도 가능하다. 니모닉이 "UB, B, UH, H, UW, W" 중 어느 하나에 고정되어 있는 경우, 예를 들면 다음과 같이 명시하는 것도 가능하다. 이 예는 니모닉이 "H"로 고정되어 있다.
CPADD. H//2-operand 32bit addition(A<-A+B)
상기한 바와 같이 기술된 경우라도, 니모닉의 기술을 변경하면, 그 변경에 대응하는 것이 가능하다.
도 24는 명령 라이브러리로부터 컴파일러 등의 툴을 생성하는 방법을 도시하고 있다. 사용자가 명령 라이브러리의 명령을 사용하는 경우, 예를 들면 복수의 명령 라이브러리 ADB1, ADB2로부터 해당하는 중간 파일 IF1, IF2가 생성된다. 이 중간 파일 IF1, IF2는 기본 명령의 중간 파일 IF3과 머지된다. 이 머지된 중간 파일을 컴파일러 등에 편입함으로써, 전체의 환경이 구축된다.
상기 예는 각 명령 라이브러리로부터 각각 중간 파일을 생성하고, 이들 중간 파일을 머지하였다. 그러나, 중간 파일의 생성은 생략 가능하고, 각 명령 라이브러리로부터 선택한 필요한 명령을 직접 머지해도 된다.
또한, 지정된 명령 라이브러리의 명령의 기능을 바꾸지 않고, 사용자가 요구하는 어플리케이션에 대하여 최적의 스케줄링 성능을 얻을 수 있도록, 명령에 타입, 예를 들면 슬롯 정보를 할당하는 기능을 설정해도 된다.
또한, 예를 들면 코어 프로세서와 코프로세서 사이의 데이터 전송 명령은 코프로세서를 정의할 때, 반드시 필요해진다. 이와 같이, 메인이 되는 명령에 부수하는 명령(예약 명령)을 자동적으로 머지하도록 설정하면, 컴파일러가 고수준 언어의 소스 레벨로부터 명령 라이브러리의 명령을 효율적으로 생성할 수 있다. 혹은 명령 라이브러리 내에 예약 명령을 명시적으로 기술해도 된다.
또한, 상기 예는 머지한 파일을 컴파일러에 반영시키는 경우에 대해 설명하였다. 그러나, 이것에 한하지 않고, 머지한 파일을 RTL 생성부에 공급함으로써, 지정된 명령 라이브러리의 명령의 기능을 바꾸지 않고, 실장을 선택할 수 있다. 예를 들면, 사이즈 우선으로 RTL 템플릿을 생성하는 것도 가능하다. 이러한 구성으로 함으로써, 어플리케이션의 성능을 유지하여, 생성되는 RTL의 사이즈를 최소로 할 수 있다. 따라서, 칩 사이즈의 증대를 억제할 수 있어, 비용을 저감할 수 있다.
또한, 지정된 명령 라이브러리의 명령의 기능을 바꾸지 않고, 성능 우선으로 고속 동작이 가능한 회로에 의해 RTL 템플릿을 생성하는 것도 가능하다. 이러한 구성으로 함으로써, 어플리케이션의 레이턴시를 작게 할 수 있는 등, 성능을 향상시킬 수 있다.
상기 제6 실시 형태에 따르면, 명령 라이브러리에 기술된 명령이 취급하는데이터형을 어플리케이션에 대응하여 설정 가능하게 되어 있다. 이 때문에, 어플리케이션에 적합한 명령을 갖는 프로세서를 개발하는 것이 가능해진다.
또한, 명령 라이브러리에 기술된 명령의 데이터형이 정해져 있는 경우에 있어서도, 데이터형을 변경할 수 있다. 이 때문에, 어플리케이션에 적합한 명령으로 변경하는 것이 가능해진다.
또한, 복수의 명령 라이브러리로부터 필요한 명령을 선택하고, 이들 선택한 명령을 머지함으로써, 하나의 프로세서의 설정이 가능해진다. 이 때문에, 어플리케이션의 성질에 보다 적합한 프로세서의 생성이 가능해진다.
<제7 실시 형태>
제7 실시 형태는 아키텍처 DB 파일로서의 컨피그레이션 지정 파일 내의 고위 동작 기술에 대하여 설명한다.
컨피그레이션 지정 파일 내의 고위 동작 기술은, 거의 C 언어의 「문장」에 상당하는 기술이 가능하다. 그러나, "!!"(비트 연결), "[]"(부분 비트 잘라냄), 논리 연산자가 C 언어와 다르다. 또한, 본 실시 형태의 고위 동작 기술은 식의 좌변에 비트 연결을 쓸 쑤 있다고 하는 특징을 갖고 있다. 또한, 본 실시 형태의 고위 동작 기술은 클럭의 개념은 포함하지 않고, 명령 실행전의 레지스터나 메모리의 값과, 명령 실행 후의 레지스터나 메모리의 값의 관계를 기술한 것이다.
이하에, 본 실시 형태에서의 고위 동작 기술의 상위점이나 제약을 나타낸다.
·데이터형은 존재하지 않는다.
·사용할 수 있는 변수의 규칙이 있다.
·비트 상수를 쓸 수 있다.
·!!는 비트 연결을 나타낸다.
·[msb: lsb]는 부분 비트 잘라 냄을 나타낸다.
·and, or, xor, nor, nand는 비트 논리 연산자를 나타낸다.
·(Signed), (Unsigned)는 캐스트 연산자를 나타낸다.
·스토어 연산에서는 Mem Word () 등의 함수를 좌변에 쓸 수 있다.
(변수로서 사용할 수 있는 것)
·피연산자 변수
·레지스터 변수
·일시 변수
(피연산자 변수)
피연산자 변수는 명령 정의의 피연산자(<피연산자>)에 기술되는 것으로, 다음과 같은 기술을 할 수 있다.
<레지스터 지정>
<(abs)형><(abs)형>
<disp형><disp()형>
<cpx>(실수부)(허수부) … 복소수
<int> … 정수
<flt> … 부동 소수점
<즉치형>
이들은, 직전의 피연산자에 기술된 명령의 사양과, 레지스터의 파라미터를 나타내는 알파벳, 및 지정자의 비트폭이 일치해야만 한다.
(레지스터 변수)
레지스터 변수는 피연산자 변수 이외의 레지스터로, 다음과 같은 기술이 가능하다.
·특정 표기(이름 지정, 수치로의 인덱스 표기)
예: PC, SRRO, CCR3,
·배열 지정
예: 식별 문자열+'['식']'
예: CTR[Imm4]
주1 :식별 문자열+인덱스+'['수치']'는 부분 비트 잘라냄으로 된다.
예: CTRn[4]는 부분 비트. CTR[4]는 CTR4와 동일. CTR[Rn][3:0] 등도 기술 가능.
주2: 부정 표기(파라미터에 의한 인덱스 표기, Rm 등)은 피연산자 변수로 분류한다. 피연산자 변수 이외의 부정 표기는 에러로 한다.
(1차 변수)
1차 변수는 피연산자 변수, 레지스터 변수가 아닌 변수를 말한다. 1차 변수의 이름에는 다음의 것을 사용할 수 있다.
·C언어의 변수명의 이름 부여 규칙에 맞는 것.
·정의된 레지스터명에 중복되지 않는 것.
·피연산자 변수의 각 지정자의 prefix로 시작되지 않은 것.
abs-, imm-, Imm-, disp-, code-, target-으로 시작되지 않은 것.
(상수):
Verilog와 동일하게, ss… s'fnn… n으로 한다. ss… s 비트 수를 나타낸다. 비트 수가 생략된 경우에는 32bit로 한다. f는 기수. D:10진, h:16진, o:8진, b:2진, 이들 기술이 생략된 경우에는 10진으로 한다. nn… n은 상수값. 상수값이 비트수에 모자랄 때는 상위 비트를 0으로 보충한다. 상수값이 비트 수보다 큰 경우, 비트수를 무시한다. nn… n 중에서 구획 문자 '_'를 사용할 수는 없다. 기수 및 상수 값에는 대문자의 알파벳도 사용할 수 있다.
예:
3'b001: 3 비트의 2진수
32'hff: 32 비트의 16진수(상위 비트는 0 확장됨)
'o1234 : 32 비트의 16진수(비트 수를 생략, 32'o1234와 동일)
1: 32 비트의 10진수(비트 수 및 기수를 생략, 32'd1과 동일)
10'5: 10 비트의 10 진수(기수를 생략, 10'd5과 동일)
(보충)
다음과 같은 것을 기술할 수 있다.
a=b=c+d;
·함수 호출도 쓸 수 있다.
·좌변에 함수 호출을 쓸 수 있다.
MemWord(Rn)=a;
CTR[Imm4]=b;
·연접 연산자
!!: 비트 연접
·부분 비트 잘라냄
[msb:lsb]로 지정
·예약 함수명
메모리 액세스 함수
MemWord
MemDoubleWord
MemByte
MemHWord
MemDefaultSize
ControlBus
·비트 확장 함수
SignExtension
ZeroExtension
·조건 판정 함수
Overflow
(좌변 연결)
·좌변에 비트 연결을 쓰는 경우에는 전체를 ()로 묶는다.
(HI!!LO)=Rn*Rm;
(SIMD 기술)
제5 실시 형태를 참조.
(에러 체크 기능)
에러 체크 기능의 대표적인 것을 나타낸다.
(1) 연산 코드의 중복 체크
(2) 명령 형식마다 정해져 있는, 레지스터 피연산자의 RO/RW와 동작 기술의 정합성
(3) SIMD 기술, Pack 기술과 동작 기술의 정합성: SIMD, Pack으로 지정한 데이터 폭에 상당하는 동작 기술이 없는 경우, 경고를 출력한다. 구체적으로는, SIMD/Pack으로 지정된 데이터 폭마다 동작 기술을 조사하여, 각각 이하의 비트폭의 부분 비트 참조/대입이 존재하지 않은 경우에 경고를 발생한다. 데이터 폭과 비트폭의 관계를 이하에 나타낸다.
데이터 폭비트폭(msb-lsb+1)
B, UB8
H, UH 16
W, UW32
A8, 16, 32
(4) 값 미정의된 일시 변수의 참조
동작 기술 중에서 일시 변수가 최초로 등장한 식이 우변에 있는 경우, 경고를 출력한다.
(5) 값을 정의한 일시 변수가 참조되어 있지 않은 경우, 경고를 출력한다.
도 25는 컨피그레이션 지정 파일 내의 명령 세트 정의부의 예를 도시하고 있다. 이 예는 LW 명령과 SWAP 명령의 정의를 나타내고 있다. LW 명령의 동작 기술({}로 둘러싸인 부분)에서, "Rn"은 레지스터 지정의 피연산자 변수, "disp8"은 disp형의 피연산자 변수, "SP"는 레지스터 변수이다. "ZeroExtension" 및 "MemWord"는 각각 비트 확장과 메모리 액세스를 행하는 예약 함수이다. 또한, SWAP 명령에서의 "tmp1"과 "tmp2"는 일시 변수이다.
상기 제7 실시 형태에 따르면, 컨피그레이션 지정 파일 내의 명령 동작 기술에 고위 기술이 가능하게 되어 있다. 이 때문에, 새로운 명령의 추가가 용이하고, 또한 기존의 명령을 용이하게 해석할 수 있다. 따라서, 명령의 개량, 보수를 용이하게 행할 수 있어, 사용자의 어플리케이션 개발을 촉진할 수 있다.
<제8 실시 형태>
제8 실시 형태는 파이프라인 기술에 관한 것이다.
하기의 파이프라인 기술로부터, 컴파일러의 스케줄링을 위한 정보, 및 해져드 검증 벡터를 자동 생성을 위한 정보가 생성된다.
파이프라인 기술은 「파이프라인 타입 정의」 및 「해져드 정보」의 2개를 포함한다.
(1) 파이프라인 타입 정의
파이프라인 타입 정의에 관한 서식은 이하와 같다.
PTYPE:<타입명>:<리소스>, <조작>, <타이밍>, <인수>[:<리소스>, <조작>, <타이밍>, <인수>:....];
각 PTYPE행에는 "<리소스>, <조작>, <타이밍>, <인수>"의 4개의 변수가 최소한 하나 필요하다. 4개의 변수는, ":"으로 구획하여 임의의 수만큼 계속하여 기술할 수 있다.
PTYPE 행에서의 4개의 변수의 의미는 다음과 같다. 즉, 리소스는 레지스터 등을 나타내고, 조작은 리드/라이트 등을 나타내며, 타이밍은 파이프라인의 스테이지를 나타내고 있다. 인수는, 피연산자(레지스터 등)에 대한 지표이다. 즉, PTYPE 행은 리소스에 대한, 조작이, 파이프라인의 스테이지에서 생기는 것을 나타내고 있다.
도 26은 PTYPE 행의 기술 예를 도시하고 있다.
(2) 해져드 정보
해져드 정보의 서식은 이하와 같다.
HAZARD:<리소스>:<동작1>(타입명1), <동작2>(타입명2)=<사이클 수>;
리소스에 있어서, 타입 1의 선행 명령이 동작 1을 행하고, 타입 2의 후속하는 명령이 동작 2를 행한 경우의 스톨 수를 나타낸다.
도 27은 해져드 정보의 기술 예를 도시하고 있다. 이 해져드 정보의 경우, 어떤 코프로세서의 범용 레지스터에 파이프라인 타입 "ptl"의 명령으로 기입이 행해진다. 이 후, 파이프라인 타입 "pt2"의 명령으로 동일한 레지스터를 판독하는경우, 2 사이클 대기해야만 한다.
해져드 정보와, 각 명령에 지정된 파이프라인 정의에 의해 해져드가 발생하는 명령 열을 시뮬레이터 상에서 실행했을 때의 스톨 수가 결정된다.
예를 들면, 도 28은 명령 "cinstl"이 파이프라인 타입 "ptl", 명령 "cinst2"가 파이프라인 타입 "pt2"인 경우의 동작을 도시하고 있다.
도 27에 도시한 해져드 정보의 경우, 어떤 코프로세서의 범용 레지스터에 파이프라인 타입 "ptl"의 명령으로 기입이 행해진다. 이 후, 파이프라인 타입 "pt2"의 명령으로 동일한 레지스터를 판독하는 경우, 2 사이클 대기해야만 한다. 도 28에 도시한 예의 경우, 스테이지 "T"에 있어서 명령 "cinstl"로 코프로세서의 범용 레지스터 "$crl"에 기입이 행해진다. 계속해서, 2 사이클 대기한 후, 명령 "cinst2"로 동일한 레지스터의 판독을 행하려고 하고 있다. 이러한 경우, 시뮬레이터에서 명령 "cinst2"는 1 사이클 스톨하게 된다.
(컴파일러를 위한 스케줄링 정보)
도 29는 컴파일러를 위한 스케줄링 정보의 예를 도시한다.
도 29에 도시한 예는, PTYPE1의 명령의 직후의 PTYPE2의 명령은 3 사이클 스톨하고, PTYPE2의 명령의 직후의 PTYPE3의 명령은 4 사이클 스톨하는 것을 나타내고 있다. 이 정보로부터, 컴파일러는 극력 PTYPE1과 PTYPE2 사이에 3 명령을 비우도록 스케줄링하여, PTYPE1과 PTYPE3 사이에 4 명령을 비우도록 스케줄링한다.
(해져드 검증 벡터 생성을 위한 파이프라인 동작 기술)
도 30은 파이프라인 동작 기술의 예를 도시하고 있다.
이 동작 기술은 파이프라인 정의와 명시적인 스톨의 지정으로 이루어진다. 이 기술 및 이로부터의 검증 벡터의 생성의 상세에 대해서는, 생략한다.
상기 제8 실시 형태에 따르면, 컨피그레이션 지정 파일은, 파이프라인 정의의 기술을 포함시킬 수 있다. 이 때문에, 파이프라인을 구축할 수 있다. 또한, 파이프라인 정의에는, 파이프라인 타입의 정의, 및 해져드 정보를 포함시킬 수 있다.
또한, 컨피그레이션 지정 파일은 파이프라인에 관하여 컴파일러를 위한 스케줄링 정보를 포함시킬 수 있다. 이 때문에, 컴파일러는 스케줄링 정보에 기초하여 파이프라인의 동작을 스케줄링할 수 있다.
또한, 컨피그레이션 지정 파일은 파이프라인에 관하여 해져드 검증 벡터 생성을 위한 기술을 포함시킬 수 있다. 이 때문에, 파이프라인의 해져드를 확실하게 검증하는 것이 가능해진다.
<제9 실시 형태>
제9 실시 형태는 RTL의 합성에 관한 것이다.
도 31은 도 6에 도시한 RTL 생성부에서의 사용자 정의 모듈의 고위 합성을 도시하고 있다. 즉, 도 31에 도시한 사용자 커스텀 명령의 고위 합성은, 통상의 하드웨어 리소스 할당과 스케줄링 외에, 코어부 및 제어 패스와 메모리와의 인터페이스(I/F)의 정합 및 생성을 행한다.
도 32는 사용자 커스텀 명령의 합성에 있어서의, 인터페이스의 정합 방법을 도시하고 있다. 도 31에 도시한 고위 합성에 의해 명령 본체의 RTL이 생성된다.이 경우, 명령 본체 부분과 코어부 사이에 별도 인터페이스 회로를 생성한다. 코어부와 인터페이스 회로 사이의 접속은, 입출력의 레지스터 필드의 신호, 16 bit의 피연산자 신호, 스톨 신호에 의해 표현된다. 명령 본체는, 이 인터페이스 회로로부터 호출되는 형식으로 기술된다. 명령 본체와 인터페이스 회로 사이의 접속은, module의 인수로 표현된다.
상기 제9 실시 형태에 따르면, 통상의 하드웨어 리소스 할당과 스케줄링, 또한 코어부 및 제어 패스와 메모리와의 인터페이스를 정합함으로써, 사용자 커스텀 명령의 고위 합성을 행할 수 있다.
<제10 실시 형태>
제10 실시 형태는 검증 벡터 생성에 관한 것이다.
여기서는, 상술한 컨피그레이션 지정 파일로부터 아키텍처 검증 프로그램(AVP: Architecture Verification Program)의 생성용 데이터를 생성하는 방법에 대하여 설명한다.
(AVP 생성에 필요한 데이터)
여기서는, 특히 프로세서의 명령 단체의 기능을 검증하기 위한, 검증 프로그램을 AVP라고 칭한다. 이 AVP 생성하기 위해서 ISA 정보를 사용한다. ISA 정보에는 이하에 설명하는 데이터가 필요하다.
·니모닉
·피연산자 배열
·피연산자 정보
피연산자의 종류(레지스터/즉치)
피연산자의 비트폭
피연산자가 레지스터인 경우, 참조/대입의 유무
(ISA 정보의 생성 방법)
ISA 정보를 아키텍쳐 데이터베이스 파일로부터 생성하는 방법에 대하여 설명한다. 레지스터 정의부에는 레지스터 종류마다 레지스터의 수, 레지스터의 비트폭 등이 정의되어 있다. 명령 정의부는, 니모닉, 피연산자 배열, 및 명령 동작 정의부 등으로 구성되어 있다. 명령 동작 정의부는 상기 피연산자 배열에 나타나는 피연산자, 레지스터 배열에는 나타나지 않는 레지스터, 일시 변수, 상수 등을 사용한 문장을 기술함으로써 명령 동작을 정의한다.
도 33은, 예를 들면 명령 CPXOR3에 관한 명령 정의를 도시하고 있다. 명령 CPXOR3은, 레지스터 피연산자로서, CRo, CRq, CRp를 기술할 필요가 있는 것을 나타내고 있다. 레지스터명은 레지스터의 종류에 의해서 그 접두어가 다르며, "CR"로 시작되는 레지스터는 코프로세서의 범용 레지스터를 나타낸다. '{'와 '}'로 둘러싸인 부분은 명령 동작 기술부이다. 이 예의 경우, 2개의 코프로세서 범용 레지스터 CRp, CRq의 비트마다의 배타적 논리합을 계산한 결과를 CRo에 대입하는 명령인 것을 알 수 있다.
상술한 바와 같이, 명령 정의부는 니모닉의 정보 및 피연산자 배열의 정보를 갖고 있다. 이들 정보는, 직접 ISA 정보의 니모닉의 정보 및 피연산자 배열의 정보가 된다. 피연산자 배열에는 피연산자명의 리스트가 기록된다. 피연산자명 중,Imm*, Imm*은 즉치이고, 그 이외의 것은 레지스터이다. 이 규칙을 사용함으로써, 각 피연산자의 종류를 피연산자 배열로부터 취득할 수 있다.
각 피연산자의 정보는 이하와 같이 취득한다. 피연산자가 레지스터인 경우, 레지스터 정의 정보로부터 레지스터의 비트폭을 취득한다. 피연산자가 즉치인 경우, 피연산자 코드로부터 즉치의 비트폭을 취득한다. 구체적으로는, 피연산자 코드의 문자열 중, 'i'의 개수가 즉치의 비트폭이 된다.
피연산자가 레지스터인 경우, 피연산자의 참조/대입의 유무는, 명령 동작 기술의 구문을 해석함으로써 취득한다.
상기 방법을 프로그램으로 실장함으로써, 도 33에 도시한 명령 정의부, 및 도 14에 도시한 레지스터 정보로부터, 자동적으로 도 34에 도시한 ISA 정보를 작성할 수 있다.
(데이터의 사용 방법)
ISA 정보는 어셈블러에 의해 기술되는 검증 프로그램을 생성하기 위해서 사용된다. 우선, 니모닉 및 피연산자 배열은 검증 프로그램 중의 검사 대상 명령 코드를 생성하는 목적으로 사용한다. 각 피연산자의 피연산자 정보는 하기의 목적을 위하여 사용된다.
피연산자가 즉치 피연산자인 경우, 비트폭의 정보를 이용하여 검사용 즉치 데이터를 생성한다. 피연산자가 레지스터 피연산자이고 그 레지스터 값이 참조되는 경우, 비트폭의 정보 등으로부터 레지스터에 제공하는 값을 생성한다. 이 생성한 값으로부터 레지스터에 설정하는 코드를 생성한다. 값을 생성하는 방법은 몇가지 있다.
제1 방법은 설정 가능한 비트폭(부호를 포함시킨 수치) 중에서 랜덤하게 값을 생성하는 방법이다.
제2 방법은 입력을 설정할 수 있는 영역(2 입력이면 2차원 평면 상의 영역)을 구하고, 그 영역을 순차적으로 세분화한다. 이 세분화된 영역의 무게 중심 좌표를 입력값으로 하는 방법이다.
제2 방법에 의해, 영역의 점을 확실하게 선택할 수 있다. 또한 경계 상 및 경계 부근의 점을 중점적으로 입력 데이터로서 생성함으로써, 경계 조건의 검사를 할 수 있게 된다.
ISA 정보로부터 개개의 명령 동작을 검증하기 위한 검증 프로그램을 생성하는 방법의 상세에 관해서는, 설명의 편의 상 생략한다.
피연산자가 레지스터 피연산자이고, 그 레지스터에 값이 대입되는 경우, 레지스터에 대입된 명령의 연산 결과를 로그 파일에 출력하는 코드를 생성한다. 도 34에 도시한 ISA 정보로부터, 도 35에 도시한 검증 프로그램을 자동 생성한다.
상기 제10 실시 형태에 따르면, 검증 벡터 생성부는, 상기 컨피그레이션 지정 파일의 동작 명령으로부터 프로세서의 검증 벡터를 생성할 수 있다. 이 때문에, 프로세서의 동작을 확실하게 검증하는 것이 가능해져, 사용자의 LSI 개발에 기여할 수 있다.
<제11 실시 형태>
제11 실시 형태는, 시뮬레이터의 생성에 관한 것이다.
여기서는 컨피그레이션 지정 파일로부터 시뮬레이터를 생성하는 방법에 대하여 설명한다.
도 36은 상기 시뮬레이터 생성부의 동작을 개략적으로 도시하고 있다. 시뮬레이터 생성부는 컨피그레이션 지정 파일과 사전에 준비한 C++모델 템플릿에 기초하여, 시뮬레이터를 생성한다. 즉, 시뮬레이터 생성부는, C++모델 템플릿에 필요한 정보를 편입함으로써, 시뮬레이터의 메인부, 시뮬레이터의 디코드 테이블 및 명령 정의부를 생성한다. 메인부는 컨피그레이션 지정 파일의 헤더부와 레지스터 선언부에 기초하여 생성된다. 디코드 테이블과 명령 정의부는 컨피그레이션 지정 파일의 ISA 부에 기초하여 생성된다.
여기서, 디코드 테이블이란, 프로그램 중의 코드부의 비트 패턴을 명령 열로 변환하기 위한 변환 테이블이다. 또한, C++모델 템플릿이란, 시뮬레이터의 C++소스 코드를 생성하기 위한 템플릿으로, 시뮬레이터 생성부가 필요한 정보를 이 템플릿에 대입함으로써, C++ 모델이 생성된다.
메인부에는 이용 가능한 명령 포맷이나 범용 레지스터나 제어 레지스터의 수 및 사이즈, 명령 간 해져드와 같은 시뮬레이터 전체에 관한 정보가 저장되어 있다.
디코드 테이블은 컨피그레이션 지정 파일의 ISA부의 각 명령 정의의 연산 코드부를 저장하고 있다. 시뮬레이터에서의 명령 디코드는 이 테이블의 오퍼레이션 코드 부분과, 명령의 오퍼레이션 코드부를 비교하여 명령을 식별함으로써 생성된다.
명령 정의부는 주로 컨피그레이션 지정 파일의 동작 기술을 이것과 등가인동작의 C++ 기술로 변환함으로써 생성된다. 또한, 명령 정의부에는 파이프라인의 타입, 트레이스 출력의 포맷, 즉치 피연산자의 부호 확장의 유무, 코어 프로세서의 레지스터와 코프로세서의 레지스터 사이에서 데이터를 전송하는 경우에서의 전송 방향 등의 정보도 부가된다.
전송 방향의 정보를 부가하는 방법은, 이하와 같다.
전송 방향의 정보는, 각 명령 정의에 대한 속성의 하나로서 정의되어 있다. 시뮬레이터 생성부의 코프로세서 모델 파일(=mkcop의 입력)에서는, 이하와 같이 기술된다.
{name =>'ICMOV',
cname =>'CMOV_1',
instType =>'t64c_al',
instSubType =>'core-cop', #<=코프로세스 범용 레지스터로부터 코어 범용 레지스터로 전송
regsbit =>'true',
opcodeA =>'0xf',
opcodeB =>'0x0',
opcodeC =>'0x0',
opcodeD =>'0x1',
func=>'
# 동작 기술
',
},
동작 기술은 기본적으로 변수를 C++ 변수로 변환하고, 연산자를 이것과 등가인 C++ 연산자로 일대일로 변환하여 생성한다. 레지스터나 메모리의 기입 판독이나 예약 함수는 사전에 준비한 시뮬레이터의 API 함수를 호출하여 생성한다.
C++에 없는 일부의 표현에 대해서는, C++로의 변환을 행하기 전에 동작 기술을 변환한다. 예를 들면, 식의 좌변에 기재한 비트 연결은 이하와 같이 변환한다.
(변환 전)
(A!!B)=Expression;
(변환 후)
TMP=Expression;
B=TMP[(B 최상위·B 최하위·1):0];
A=TMP[(A 최상위+B 최상위·1):(B 최상위·B 최하위)];
(TMP은 일시 변수)
또한 SIMD 표기에 관해서는 제5 실시 형태에 있어서 설명한 바와 같이 전개한다.
트레이스 출력에는 그 명령 동작에 의해 값이 기입되는 레지스터를 출력한다. 레지스터에의 기입의 유무는 그 레지스터가 명령의 동작 기술의 좌변부에 출현하는지를 해석하여 판정한다. 레지스터 간의 데이터 전송도, 마찬가지로 좌변부에 출현한 레지스터를 기입용 레지스터, 우변부에 출현한 레지스터를 판독용 레지스터로 판단한다. 판독된 레지스터로부터 기입된 레지스터에 데이터가 전송되었다고 간주한다.
상기 제11 실시 형태에 따르면, 컨피그레이션 지정 파일의 기술에 따라 필요한 시뮬레이터를 생성할 수 있다. 따라서, 사용자는 어플리케이션을 시뮬레이트할 수 있어, 어플리케이션의 성능을 단시간으로 알 수 있다. 이 때문에, 시스템-온-칩의 개발 기간을 단축하는 것이 가능해진다.
<제12 실시 형태>
제12 실시 형태는 디버그 환경의 구축에 관한 것이다.
디버그 환경 구축을 위한 대응 항목은 다음의 3개이다.
(1) 레지스터 정의:
디버거는 표시 및 재기입 가능한 레지스터로서 어떠한 것이 있는지에 대한 정보가 필요하다. 이 정보는 컨피그레이션 지정 파일의 레지스터 정의부로부터 생성된다. 표시할 수 있는 레지스터는 정의되어 있는 모든 레지스터이다. 재기입이 가능한 레지스터, 혹은 레지스터의 필드(레지스터의 일부)는 도 14에 도시한 레지스터 정의에 있어서, 예를 들면 "rw"로 기술된 레지스터이다. "r"로 기술된 레지스터는 디버거에서 재기입할 수는 없다.
(2) 역 어셈블러:
디버거는 실행 프로그램에 대하여, 역 어셈블러를 행하여, 표기한다. 역 어셈블러는 시뮬레이터의 디코드부와 동일한 방법으로 명령을 인식하고, 그 니모닉을 표시한다.
(3) 디버그 모니터:
디버그 모니터는 디버그의 개시 시에 레지스터의 초기 값을 설정한다. 이 초기 값을 설정해야 할 레지스터(존재하는 레지스터)의 정보를, 컨피그레이션 지정 파일의 레지스터 정의부로부터 얻는다.
상기 제12 실시 형태에 따르면, 컨피그레이션 지정 파일로부터 디버그 환경이 구축된다. 이 때문에, 사용자는 LSI 개발에 필요한 디버그 환경을 얻을 수 있다. 따라서, 사용자는 어플리케이션을 디버그할 수 있어, 어플리케이션의 개발 기간을 단축하는 것이 가능해진다.
또한, 본 발명은 상기 각 실시 형태에 한정되지 않는다.
도 37은 상기 각 실시 형태가 적용되는 시스템-온-칩 개발 환경 생성 장치의 개관을 도시하고 있다. 이 시스템-온-칩 개발 환경 생성 장치(50)는 소위 범용 계산기, 워크스테이션, PC(Personal Computer), NC(Network Computer) 등이 포함된다. 시스템-온-칩 개발 환경 생성 장치(50)는 도시하지 않은 하드 디스크 장치(50a)를 갖고 있다.
또한, 시스템-온-칩 개발 환경 생성 장치(50)는, 예를 들면 플로피 디스크 드라이브(52) 및 광 디스크 드라이브(54)를 구비하고 있다. 플로피 디스크 드라이브(52)에는 플로피 디스크(53)가 장착되고, 광 디스크 드라이브(54)에는 광 디스크(55)가 장착된다.
또한, 시스템-온-칩 개발 환경 생성 장치(50)에 접속된 드라이브 장치(57)는, 예를 들면 메모리 카드(58)의 리더 라이터, 혹은 자기 테이프 카트리지(59)의리더 라이터이다. 이 드라이브 장치(57)에 의해, 메모리 카드(58), 혹은 자기 테이프 카트리지(59)를 액세스할 수 있다.
상술한 커맨드 인터프리터, RTL 생성부, 시뮬레이터 커스터마이즈부, 컴파일러 커스터마이즈부, 어셈블러 커스터마이즈부, 검증 벡터 생성부, 및 디버거 생성부 등의 프로그램이나, 컨피그레이션 지정 파일 등의 파일은 플로피 디스크(53), 광 디스크(55), 메모리 카드(58) 및 자기 테이프 카트리지(59) 등의 기록 매체에 기억된다. 이들 프로그램 및 파일을 판독하고, 상기 하드디스크 장치(50a)에 인스톨함으로써, 상술한 동작을 실행할 수 있다. 또한, 기록 매체로서는 전송 매체를 이용하는 것도 가능하다.
상술한 실시예는 모든 점에서 예시이며 제한적인 것은 아니라고 생각되어야 한다. 본 발명의 범위는 상기한 실시예의 설명이 아니라 특허 청구 범위에 의해 정의되며, 또한 특허 청구의 범위와 균등한 의미 및 범위 내에서의 모든 변경을 포함하는 것으로 의도되어야 한다.
이상, 상술한 바와 같이 본 발명에 따르면, 고성능의 하드웨어를 갖는 시스템-온-칩의 개발 환경을 충분한 유연성으로 간단하게 생성할 수 있다.

Claims (90)

  1. 시스템-온-칩을 개발하기 위한 개발 환경을 생성하는 방법에 있어서,
    입력된 커맨드를 해석하는 단계와,
    그 해석한 커맨드에 따라서, 시스템-온-칩의 컨피그레이션이 기술된 컨피그레이션 지정 파일의 정보에 기초하여, 컴파일러 커스터마이즈부, 어셈블러 커스터마이즈부 및 시뮬레이터 생성부를 생성하는 단계를 포함하며,
    상기 컨피그레이션 지정 파일은 명령을 실행하는 하드웨어의 지정을 포함하고 있고, 상기 컴파일러 커스터마이즈부는 시스템-온-칩을 개발하기 위한 컴파일러를 구축하며, 상기 어셈블러 커스터마이즈부는 어셈블러를 구축하고, 상기 시뮬레이터 생성부는 시뮬레이터를 구축하는 방법.
  2. 제1항에 있어서,
    상기 컨피그레이션 지정 파일은 레지스터의 구성을 정의하는 레지스터 정의를 포함하는 방법.
  3. 제2항에 있어서,
    상기 레지스터 정의는 상기 컴파일러에서의 레지스터의 사용 방법을 정의하는 정보를 갖고 있는 방법.
  4. 제2항에 있어서,
    상기 레지스터 정의는 상기 컴파일러의 레지스터의 사용 방법을 정의하는 정보를 갖고, 이 정보가 생략된 경우, 상기 컴파일러 커스터마이즈부는 컴파일러의 디폴트의 레지스터의 사용 방법을 설정하는 방법.
  5. 제4항에 있어서,
    상기 컴파일러 커스터마이즈부는 상기 레지스터 정의의 정보에 기초하여, 각 레지스터에 직접 액세스 가능한 레지스터 의사 변수를 정의하는 방법.
  6. 제2항에 있어서,
    상기 레지스터 정의는 레지스터의 별칭 정의를 갖고, 상기 레지스터의 별칭 정의는 상기 어셈블러 커스터마이즈부에 공급되는 방법.
  7. 제1항에 있어서,
    상기 개발 환경은 RTL 생성부, 검증 벡터 생성부, 디버거 생성부 중 적어도 하나를 더 포함하는 방법.
  8. 제7항에 있어서,
    상기 레지스터 정의는 레지스터명을 포함하고, 이 레지스터명은 상기 컴파일러 커스터마이즈부, 상기 어셈블러 커스터마이즈부, 상기 시뮬레이터 커스터마이즈부, 상기 RTL 생성부, 상기 검증 벡터 생성부, 및 상기 디버거 생성부에 공급되는 방법.
  9. 제2항에 있어서,
    상기 컨피그레이션 지정 파일은 명령의 사양, 피연산자 코드, 동작 내용을 포함하는 방법.
  10. 제2항에 있어서,
    상기 컴파일러 커스터마이즈부는 상기 명령 정의부의 정보를 바탕으로 기계 명령 함수 정의를 생성하는 방법.
  11. 제1항에 있어서,
    상기 컨피그레이션 지정 파일은 프로세서가 VLIW형이고, 하드웨어의 지정은 VLIW의 명령 형식의 지정, 및 VLIW의 슬롯의 지정 중의 하나를 포함하는 방법.
  12. 제11항에 있어서,
    상기 컨피그레이션 지정 파일은 명령을 병렬화할 때, 어떤 슬롯에 놓여지는 명령인지를 구별하기 위한 슬롯 정의를 포함하는 방법.
  13. 제11항에 있어서,
    상기 컨피그레이션 지정 파일은 명령을 병렬화할 때에 사용하는 슬롯 정보를 기계 명령 함수 정의에 반영시키는 슬롯 정의를 포함하는 방법.
  14. 제11항에 있어서,
    프로세서의 사양에 따라서, 명령 동작 기술 내의 일시 변수나 부호 확장 후의 값의 비트폭을 지정하고, 그 정보를 상기 시뮬레이터 커스터마이즈부에 공급하여, 상기 시뮬레이터에 반영시키는 방법.
  15. 제13항에 있어서,
    상기 슬롯 정보를 상기 어셈블러 커스터마이즈부에 공급하여, 상기 어셈블러에 반영시키는 방법.
  16. 제15항에 있어서,
    상기 슬롯 정보를 상기 검증 벡터 생성부에 공급하여, 상기 검증 벡터에 반영시키는 방법.
  17. 시스템-온-칩을 개발하기 위한 개발 환경을 생성하는 방법에 있어서,
    입력된 커맨드를 해석하는 단계와,
    그 해석한 커맨드에 따라, 시스템-온-칩의 컨피그레이션을 기술한 컨피그레이션 지정 파일의 정보에 기초하여, 컴파일러 커스터마이즈부, 어셈블러 커스터마이즈부, 및 시뮬레이터 생성부를 생성하는 단계를 포함하며,
    상기 컨피그레이션 지정 파일은 프로세서가 DSP형이며, 하드웨어의 지정이 DSP 명령 형식인 기술을 포함하고, 상기 컴파일러 커스터마이즈부는 컴파일러를 구축하고, 상기 어셈블러 커스터마이즈부는 어셈블러를 구축하며, 상기 시뮬레이터 생성부는 시뮬레이터를 구축하는 방법.
  18. 제17항에 있어서,
    상기 컨피그레이션 지정 파일은 임의의 비트폭의 명령을 지정하는 정보를 포함하는 방법.
  19. 제17항에 있어서,
    상기 컨피그레이션 지정 파일은, 임의의 비트폭의 레지스터를 정의하는 정보를 포함하는 방법.
  20. 제17항에 있어서,
    상기 컨피그레이션 지정 파일은, 고정 소수점 라이브러리의 소수점의 위치를 지정하는 정보를 포함하고, 상기 컴파일러 커스터마이즈부는 이 정보를 컴파일러의 고정 소수점 라이브러리에 공급하는 방법.
  21. 제17항에 있어서,
    상기 컨피그레이션 지정 파일은 프로세서가 DSP형인 경우, 상기 컴파일러의 DSP에 대응한 기능을 포함하는 방법.
  22. 제17항에 있어서,
    상기 컴파일러의 DSP에 대응한 기능은 복소 데이터형, X/Y 메모리, 순환 버퍼, 고정 소수점 데이터형, 비트 반전, 이종 레지스터 세트 중 적어도 하나를 포함하는 방법.
  23. 시스템-온-칩을 개발하기 위한 개발 환경을 생성하는 방법에 있어서,
    입력된 커맨드를 해석하는 단계와,
    그 해석한 커맨드에 따라서, 시스템-온-칩의 컨피그레이션을 기술한 컨피그레이션 지정 파일의 정보에 기초하여, 컴파일러 커스터마이즈부, 어셈블러 커스터마이즈부, 및 시뮬레이터 생성부를 생성하는 단계를 포함하며,
    상기 컨피그레이션 지정 파일은 프로세서가 SIMD형이며, 하드웨어의 지정이 SIMD 명령 형식인 기술을 포함하고, 상기 컴파일러 커스터마이즈부는 컴파일러를 구축하며, 상기 어셈블러 커스터마이즈부는 어셈블러를 구축하고, 상기 시뮬레이터 생성부는 시뮬레이터를 구축하는 방법.
  24. 제23항에 있어서,
    상기 컴파일러 커스터마이즈부는 입력된 SIMD 명령에 관한 정보에 기초하여기계 명령 함수 정의를 생성하는 방법.
  25. 제23항에 있어서,
    상기 컴파일러 커스터마이즈부는, 입력된 SIMD 명령에 관한 정보에 기초하여, 특수 데이터형을 생성하는 방법.
  26. 제23항에 있어서,
    상기 시뮬레이터 커스터마이즈부는 입력된 SIMD 명령에 관한 정보에 기초하여, 시뮬레이터의 동작을 커스터마이즈하는 방법.
  27. 제23항에 있어서,
    상기 시뮬레이터 커스터마이즈부는 입력된 SIMD 명령에 관한 정보에 기초하여, 시뮬레이터의 결과 출력 기능을 커스터마이즈하는 방법.
  28. 제23항에 있어서,
    상기 SIMD 명령의 동작 기술은, 복수 명령이 통합하여 1 명령으로 기술되는 방법.
  29. 제23항에 있어서,
    상기 SIMD 명령의 동작 기술은, 지표를 이용하여 기술되는 방법.
  30. 시스템-온-칩을 개발하기 위한 개발 환경을 생성하는 방법에 있어서,
    정의된 복수의 명령을 포함하는 복수의 명령 라이브러리로부터 필요한 명령을 선택시키는 단계와,
    이들 선택한 명령을 머지하여 어플리케이션에 대응한 개발 환경을 생성시키는 단계를 포함하며,
    상기 개발 환경은, 컴파일러를 구축하는 컴파일러 커스터마이즈부, 어셈블러를 구축하는 어셈블러 커스터마이즈부, 및 시뮬레이터를 구축하는 시뮬레이터 생성부를 포함하는 방법.
  31. 제30항에 있어서,
    상기 복수의 명령 라이브러리로부터 필요한 명령을 선택한 후, 상기 명령 라이브러리마다 중간 라이브러리를 생성하고 이들 중간 라이브러리를 머지하는 단계를 더 포함하는 방법.
  32. 제30항에 있어서,
    상기 복수의 명령 라이브러리로부터 필요한 명령을 선택한 후, 상기 명령 라이브러리마다 중간 라이브러리를 생성하고, 이들 중간 라이브러리와 기본 명령의 중간 파일을 머지하는 단계를 더 포함하는 방법.
  33. 제30항에 있어서,
    상기 명령 라이브러리 내의 명령은, 상기 명령이 이용하는 데이터형을 선택 가능한 방법.
  34. 제30항에 있어서,
    상기 명령 라이브러리 내의 명령은 명령이 이용하는 데이터형을 변경 가능한 방법.
  35. 시스템-온-칩을 개발하기 위한 개발 환경을 생성하는 방법에 있어서,
    입력된 커맨드를 해석하는 단계와,
    그 해석한 커맨드에 따라서 시스템-온-칩의 컨피그레이션을 기술한 컨피그레이션 지정 파일의 정보에 기초하여 시스템-온-칩의 개발 환경을 생성하는 단계를 포함하며,
    상기 개발 환경은, 컴파일러를 구축하는 컴파일러 커스터마이즈부, 어셈블러를 구축하는 어셈블러 커스터마이즈부, 및 시뮬레이터를 구축하는 시뮬레이터 생성부를 포함하고,
    상기 컨피그레이션 지정 파일은 고위 기술을 포함하는 방법.
  36. 제35항에 있어서,
    상기 고위 기술은 적어도 비트 연결, 부분 비트 잘라냄, 함수 형식, 부호의캐스트 연산자, 일시 변수, 오버 플로우에 대한 동작 기술을 포함하는 방법.
  37. 제35항에 있어서,
    상기 고위 기술은 식의 좌변에도 비트 연결을 기술 가능한 방법.
  38. 제35항에 있어서,
    상기 컨피그레이션 지정 파일은 파이프라인 정의의 기술을 포함하는 방법.
  39. 제35항에 있어서,
    상기 파이프라인 정의의 기술은 파이프라인 타입의 정의를 포함하는 방법.
  40. 제35항에 있어서,
    상기 파이프라인 정의의 기술은 해져드 정보를 포함하는 방법.
  41. 제35항에 있어서,
    상기 컨피그레이션 지정 파일은 파이프라인에 관하여 컴파일러를 위한 스케줄링 정보를 포함하는 방법.
  42. 제35항에 있어서,
    상기 컨피그레이션 지정 파일은 파이프라인에 관하여 해져드 검증 벡터 생성을 위한 기술을 포함하는 방법.
  43. 시스템-온-칩을 개발하기 위한 개발 환경을 생성하는 방법에 있어서,
    입력된 커맨드를 해석하는 단계와,
    그 해석한 커맨드에 따라서, 시스템-온-칩의 컨피그레이션을 기술한 컨피그레이션 지정 파일에 기재된 동작 명령으로부터 RTL 생성부를 생성하는 단계를 포함하며,
    상기 RTL 생성부는 하드웨어 리소스 할당과 스케줄링을 행하는 스케줄링부와, 코어부 및 제어 패스와 메모리와의 인터페이스를 정합시키는 인터페이스 정합부와, C 언어를 Verilog로 변화하는 변환부를 포함하는 방법.
  44. 제43항에 있어서,
    상기 인터페이스 정합부는 상기 동작 명령으로부터 하드웨어 리소스 할당과 스케줄링, 코어부 및 제어 패스와 메모리와의 인터페이스를 정합하여, RTL을 생성하는 방법.
  45. 시스템-온-칩을 개발하기 위한 개발 환경을 생성하는 방법에 있어서,
    입력된 커맨드를 해석하는 단계와,
    그 해석한 커맨드에 따라서, 시스템-온-칩의 컨피그레이션을 기술한 컨피그레이션 지정 파일의 정보에 기초하여 시스템-온-칩의 개발 환경을 생성하는 단계를포함하며,
    상기 개발 환경은 검증 벡터를 생성하는 검증 벡터 생성부를 포함하고, 상기 검증 벡터 생성부는 상기 컨피그레이션 지정 파일의 동작 명령으로부터 프로세서의 검증 벡터를 생성하는 방법.
  46. 제45항에 있어서,
    상기 검증 벡터 생성부는 상기 컨피그레이션 지정 파일의 레지스터 정보로부터 ISA 정보를 생성하는 방법.
  47. 시스템-온-칩을 개발하기 위한 개발 환경을 생성하는 프로그램을 기억한 컴퓨터 판독 가능한 기억 매체에 있어서,
    컴퓨터에, 입력된 커맨드를 해석시키는 기능과,
    그 해석한 커맨드에 따라, 시스템-온-칩의 컨피그레이션이 기술된 컨피그레이션 지정 파일의 정보에 기초하여, 컴파일러 커스터마이즈부, 어셈블러 커스터마이즈부, 및 시뮬레이터 생성부를 생성시키는 기능을 포함하며,
    상기 컨피그레이션 지정 파일은 명령을 실행하는 하드웨어의 지정을 포함하고, 상기 컴파일러 커스터마이즈부는 시스템-온-칩을 개발하기 위한 컴파일러를 구축하며, 상기 어셈블러 커스터마이즈부는 어셈블러를 구축하고, 상기 시물레이터 생성부는 시뮬레이터를 구축하는 컴퓨터 판독 가능한 기억 매체.
  48. 제47항에 있어서,
    상기 컨피그레이션 지정 파일은, 레지스터의 구성을 정의하는 레지스터 정의를 포함하는 컴퓨터 판독 가능한 기억 매체.
  49. 제47항에 있어서,
    상기 레지스터 정의는, 상기 컴파일러에서의 레지스터의 사용 방법을 정의하는 정보를 갖고 있는 컴퓨터 판독 가능한 기억 매체.
  50. 제48항에 있어서,
    상기 레지스터 정의는 상기 컴파일러의 레지스터의 사용 방법을 정의하는 정보를 갖고, 이 정보가 생략된 경우, 상기 컴파일러 커스터마이즈부는 컴파일러의 디폴트의 레지스터의 사용 방법을 설정하는 컴퓨터 판독 가능한 기억 매체.
  51. 제50항에 있어서,
    상기 컴파일러 커스터마이즈부는 상기 레지스터 정의의 정보에 기초하여, 각 레지스터에 직접 액세스 가능한 레지스터 의사 변수를 정의하는 컴퓨터 판독 가능한 기억 매체.
  52. 제48항에 있어서,
    상기 레지스터 정의는, 레지스터의 별칭 정의를 갖고, 상기 레지스터의 별칭정의는, 상기 어셈블러 커스터마이즈부에 공급되는 컴퓨터 판독 가능한 기억 매체.
  53. 제47항에 있어서,
    상기 개발 환경은, RTL 생성부, 검증 벡터 생성부, 디버거 생성부를 더 포함하는 컴퓨터 판독 가능한 기억 매체.
  54. 제53항에 있어서,
    상기 레지스터 정의는 레지스터명을 포함하고, 이 레지스터명은 상기 컴파일러 커스터마이즈부, 상기 어셈블러 커스터마이즈부, 상기 시뮬레이터 커스터마이즈부, 상기 RTL 생성부, 상기 검증 벡터 생성부, 및 상기 디버거 생성부에 공급되는 컴퓨터 판독 가능한 기억 매체.
  55. 제48항에 있어서,
    상기 컨피그레이션 지정 파일은, 명령의 사양, 피연산자 코드, 동작 내용을 포함하는 컴퓨터 판독 가능한 기억 매체.
  56. 제48항에 있어서,
    상기 컴파일러 커스터마이즈부는 상기 명령 정의부의 정보를 바탕으로 기계 명령 함수 정의를 생성하는 컴퓨터 판독 가능한 기억 매체.
  57. 제48항에 있어서,
    상기 컨피그레이션 지정 파일은 프로세서가 VLIW 형이고, 하드웨어의 지정은 VLIW의 명령 형식의 지정, 및 VLIW의 슬롯의 지정 중의 하나를 포함하는 컴퓨터 판독 가능한 기억 매체.
  58. 제57항에 있어서,
    상기 컨피그레이션 지정 파일은, 명령을 병렬화할 때, 어떤 슬롯에 놓이는 명령인지를 구별하기 위한 슬롯 정의를 포함하는 컴퓨터 판독 가능한 기억 매체.
  59. 제57항에 있어서,
    상기 컨피그레이션 지정 파일은 명령을 병렬화할 때에 사용하는 슬롯 정보를 기계 명령 함수 정의에 반영시키는 슬롯 정의를 포함하는 컴퓨터 판독 가능한 기억 매체.
  60. 제57항에 있어서,
    프로세서의 사양에 따라서, 명령 동작 기술 내의 일시 변수나 부호 확장 후의 값의 비트폭을 지정하고, 그 정보를 상기 시뮬레이터 커스터마이즈부에 공급하여, 상기 시뮬레이터에 반영시키는 컴퓨터 판독 가능한 기억 매체.
  61. 제59항에 있어서,
    상기 슬롯 정보를 상기 어셈블러 커스터마이즈부에 공급하여, 상기 어셈블러에 반영시키는 컴퓨터 판독 가능한 기억 매체.
  62. 제59항에 있어서,
    상기 슬롯 정보를 상기 검증 벡터 생성부에 공급하여, 상기 검증 벡터에 반영시키는 컴퓨터 판독 가능한 기억 매체.
  63. 시스템-온-칩을 개발하기 위한 개발 환경을 생성하는 프로그램을 기억한 컴퓨터 판독 가능한 기억 매체에 있어서,
    컴퓨터에, 입력된 커맨드를 해석시키는 기능과,
    그 해석한 커맨드에 따라서, 시스템-온-칩의 컨피그레이션을 기술한 컨피그레이션 지정 파일의 정보에 기초하여, 컴파일러를 구축하는 컴파일러 커스터마이즈부, 어셈블러를 구축하는 어셈블러 커스터마이즈부, 및 시뮬레이터를 구축하는 시뮬레이터 생성부를 생성시키는 기능을 포함하며,
    상기 컨피그레이션 지정 파일은 프로세서가 DSP 형이며 하드웨어의 지정이 DSP 명령 형식인 기술을 포함하고, 상기 컴파일러 커스터마이즈부는 컴파일러를 구축하며, 상기 어셈블러 커스터마이즈부는 어셈블러를 구축하고, 상기 시뮬레이터 생성부는 시뮬레이터를 구축하는 컴퓨터 판독 가능한 기억 매체.
  64. 제63항에 있어서,
    상기 컨피그레이션 지정 파일은 임의의 비트폭의 명령을 지정하는 정보를 포함하는 컴퓨터 판독 가능한 기억 매체.
  65. 제63항에 있어서,
    상기 컨피그레이션 지정 파일은 임의의 비트폭의 레지스터를 정의하는 정보를 포함하는 컴퓨터 판독 가능한 기억 매체.
  66. 제63항에 있어서,
    상기 컨피그레이션 지정 파일은 고정 소수점 라이브러리의 소수점의 위치를 지정하는 정보를 포함하고, 상기 컴파일러 커스터마이즈부는 이 정보를 컴파일러의 고정 소수점 라이브러리에 공급하는 컴퓨터 판독 가능한 기억 매체.
  67. 제63항에 있어서,
    상기 컨피그레이션 지정 파일은 프로세서가 DSP 형인 경우, 상기 컴파일러의 DSP에 대응한 기능을 포함하는 컴퓨터 판독 가능한 기억 매체.
  68. 제63항에 있어서,
    상기 컴파일러의 DSP에 대응한 기능은, 복소 데이터형, X/Y 메모리, 순환 버퍼, 고정 소수점 데이터형, 비트 반전, 이종 레지스터 세트 중 적어도 하나를 포함하는 컴퓨터 판독 가능한 기억 매체.
  69. 시스템-온-칩을 개발하기 위한 개발 환경을 생성하는 프로그램을 기억한 컴퓨터 판독 가능한 기억 매체에 있어서,
    컴퓨터에, 입력된 커맨드를 해석시키는 기능과,
    그 해석한 커맨드에 따라서, 컨피그레이션 지정 파일의 정보에 기초하여, 컴파일러 커스터마이즈부, 어셈블러 커스터마이즈부, 및 시뮬레이터 생성부를 생성시키는 기능을 포함하며,
    상기 컨피그레이션 지정 파일은 상기 프로세서가 SIMD형이며 하드웨어의 지정이 SIMD 명령 형식인 기술을 포함하고, 상기 컴파일러 커스터마이즈부는 컴파일러를 구축하며, 상기 어셈블러 커스터마이즈부는 어셈블러를 구축하고, 상기 시뮬레이터 생성부는 시뮬레이터를 구축하는 컴퓨터 판독 가능한 기억 매체.
  70. 제69항에 있어서,
    상기 컴파일러 커스터마이즈부는 입력된 SIMD 명령에 관한 정보에 기초하여, 기계 명령 함수 정의를 생성하는 컴퓨터 판독 가능한 기억 매체.
  71. 제69항에 있어서,
    상기 컴파일러 커스터마이즈부는 입력된 SIMD 명령에 관한 정보에 기초하여, 특수 데이터형을 생성하는 컴퓨터 판독 가능한 기억 매체.
  72. 제69항에 있어서,
    상기 시뮬레이터 커스터마이즈부는 입력된 SIMD 명령에 관한 정보에 기초하여, 시뮬레이터의 동작을 커스터마이즈하는 컴퓨터 판독 가능한 기억 매체.
  73. 제69항에 있어서,
    상기 시뮬레이터 커스터마이즈부는 입력된 SIMD 명령에 관한 정보에 기초하여, 시뮬레이터의 결과 출력 기능을 커스터마이즈하는 컴퓨터 판독 가능한 기억 매체.
  74. 제69항에 있어서,
    상기 SIMD 명령의 동작 기술은, 복수 명령이 통합하여 1 명령으로 기술되는 컴퓨터 판독 가능한 기억 매체.
  75. 제69항에 있어서,
    상기 SIMD 명령의 동작 기술은, 지표를 이용하여 기술되는 컴퓨터 판독 가능한 기억 매체.
  76. 시스템-온-칩을 개발하기 위한 개발 환경을 생성하는 프로그램을 기억한 컴퓨터 판독 가능한 기억 매체에 있어서,
    컴퓨터에, 정의된 복수의 명령을 포함하는 복수의 명령 라이브러리로부터 필요한 명령을 선택시키는 기능과,
    이들 선택한 명령을 머지하여 어플리케이션에 대응한 개발 환경을 생성시키는 기능을 포함하며,
    상기 개발 환경은, 컴파일러를 구축하는 컴파일러 커스터마이즈부와, 어셈블러를 구축하는 어셈블러 커스터마이즈부, 및 시뮬레이터를 구축하는 시뮬레이터 생성부를 포함하는 컴퓨터 판독 가능한 기억 매체.
  77. 제76항에 있어서,
    상기 복수의 명령 라이브러리로부터 필요한 명령을 선택한 후, 상기 명령 라이브러리마다 중간 라이브러리를 생성하고, 이들 중간 라이브러리를 머지시키는 기능을 더 포함하는 컴퓨터 판독 가능한 기억 매체.
  78. 제76항에 있어서,
    상기 복수의 명령 라이브러리로부터 필요한 명령을 선택한 후, 상기 명령 라이브러리마다 중간 라이브러리를 생성하고, 이들 중간 라이브러리와 기본 명령의 중간 파일을 머지시키는 기능을 더 포함하는 컴퓨터 판독 가능한 기억 매체.
  79. 제76항에 있어서,
    상기 명령 라이브러리 내의 명령은 상기 명령이 이용하는 데이터형을 선택 가능한 컴퓨터 판독 가능한 기억 매체.
  80. 제77항에 있어서,
    상기 명령 라이브러리 내의 명령은, 명령이 이용하는 데이터형을 변경 가능한 컴퓨터 판독 가능한 기억 매체.
  81. 시스템-온-칩을 개발하기 위한 개발 환경을 생성하는 프로그램을 기억한 컴퓨터 판독 가능한 기억 매체에 있어서,
    컴퓨터에, 입력된 커맨드를 해석시키는 기능과,
    그 해석한 커맨드에 따라서, 컨피그레이션 지정 파일의 정보에 기초하여, 컴파일러를 구축하는 컴파일러 커스터마이즈부, 어셈블러를 구축하는 어셈블러 커스터마이즈부, 및 시뮬레이터를 구축하는 시뮬레이터 생성부를 생성시키는 기능을 포함하며,
    상기 컨피그레이션 지정 파일은 시스템-온-칩의 컨피그레이션을 기술한 고위 기술을 포함하고, 상기 컴파일러 커스터마이즈부는 컴파일러를 구축하며, 상기 어셈블러 커스터마이즈부는 어셈블러를 구축하고, 상기 시뮬레이터 생성부는 시뮬레이터를 구축하는 컴퓨터 판독 가능한 기억 매체.
  82. 제81항에 있어서,
    상기 고위 기술은 적어도 비트 연결, 부분 비트 잘라냄, 함수 형식, 부호의 캐스트 연산자, 일시 변수, 오버 플로우에 대한 동작 기술을 포함하는 컴퓨터 판독가능한 기억 매체.
  83. 제81항에 있어서,
    상기 고위 기술은 식의 좌변에도 비트 연결을 기술 가능한 컴퓨터 판독 가능한 기억 매체.
  84. 제81항에 있어서,
    상기 컨피그레이션 지정 파일은 파이프라인 정의의 기술을 포함하는 컴퓨터 판독 가능한 기억 매체.
  85. 제81항에 있어서,
    상기 파이프라인 정의의 기술은 파이프라인 타입의 정의를 포함하는 컴퓨터 판독 가능한 기억 매체.
  86. 제81항에 있어서,
    상기 파이프라인 정의의 기술은 해져드 정보를 포함하는 컴퓨터 판독 가능한 기억 매체.
  87. 제81항에 있어서,
    상기 컨피그레이션 지정 파일은 파이프라인에 관하여 컴파일러를 위한 스케줄링 정보를 포함하는 컴퓨터 판독 가능한 기억 매체.
  88. 제81항에 있어서,
    상기 컨피그레이션 지정 파일은, 파이프라인에 관하여 해져드 검증 벡터 생성을 위한 기술을 포함하는 컴퓨터 판독 가능한 기억 매체.
  89. 시스템-온-칩을 개발하기 위한 개발 환경을 생성하는 프로그램을 기억한 컴퓨터 판독 가능한 기억 매체에 있어서,
    컴퓨터에, 입력된 커맨드를 해석시키는 기능과,
    그 해석한 커맨드에 따라서, 시스템-온-칩의 컨피그레이션을 기술한 컨피그레이션 지정 파일에 기재된 동작 명령으로부터 스케줄링부와, 인터페이스 정합부와, 변환부를 포함하는 RTL 생성부를 생성시키는 기능을 포함하며,
    상기 스케줄링부는 하드웨어 리소스의 할당과 스케줄링을 행하고, 상기 인터페이스 정합부는 코어부 및 제어 패스와 메모리와의 인터페이스를 정합시키며, 상기 변환부는 C 언어를 Verilog로 변화하는 컴퓨터 판독 가능한 기억 매체.
  90. 제89항에 있어서,
    상기 인터페이스 정합부는 상기 동작 명령으로부터 하드웨어 리소스 할당과 스케줄링, 코어부 및 제어 패스와 메모리와의 인터페이스를 정합하여, RTL을 생성하는 컴퓨터 판독 가능한 기억 매체.
KR10-2002-0066498A 2002-04-26 2002-10-30 시스템 온 칩을 개발하기 위한 개발 환경의 생성 방법 및 그 프로그램을 기억한 매체 KR100533307B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2002127381A JP4202673B2 (ja) 2002-04-26 2002-04-26 システムlsi開発環境生成方法及びそのプログラム
JPJP-P-2002-00127381 2002-04-26

Publications (2)

Publication Number Publication Date
KR20030084554A true KR20030084554A (ko) 2003-11-01
KR100533307B1 KR100533307B1 (ko) 2005-12-05

Family

ID=28786839

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0066498A KR100533307B1 (ko) 2002-04-26 2002-10-30 시스템 온 칩을 개발하기 위한 개발 환경의 생성 방법 및 그 프로그램을 기억한 매체

Country Status (6)

Country Link
US (2) US7168060B2 (ko)
EP (1) EP1357485A3 (ko)
JP (1) JP4202673B2 (ko)
KR (1) KR100533307B1 (ko)
CN (1) CN100338568C (ko)
TW (1) TW571237B (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100638476B1 (ko) * 2004-12-22 2006-10-26 삼성전자주식회사 버추얼 플랫폼 기반의 시스템 온 칩 개발 환경 및 개발 방법
KR20110031647A (ko) * 2009-09-21 2011-03-29 삼성전자주식회사 이기종 멀티프로세서 시스템 온 칩에서의 rpc 데이터 배치 방법 및 장치
US9104584B2 (en) 2010-12-30 2015-08-11 Samsung Electronics Co., Ltd. Apparatus and method for performing a complex number operation using a single instruction multiple data (SIMD) architecture

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0215033D0 (en) * 2002-06-28 2002-08-07 Critical Blue Ltd Instruction set translation method
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
US7392368B2 (en) * 2002-08-09 2008-06-24 Marvell International Ltd. Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements
WO2004015563A1 (en) * 2002-08-09 2004-02-19 Intel Corporation Multimedia coprocessor control mechanism including alignment or broadcast instructions
US7302380B2 (en) * 2002-12-12 2007-11-27 Matsushita Electric, Industrial Co., Ltd. Simulation apparatus, method and program
US6986110B1 (en) * 2003-01-02 2006-01-10 Hewlett-Packard Development Company, L.P. Automated method and system for backtracing of instruction parameters from specified instruction in test cases
US7707566B2 (en) * 2003-06-26 2010-04-27 Microsoft Corporation Software development infrastructure
US7086041B2 (en) * 2003-06-27 2006-08-01 Microsoft Corporation Extensible type system for representing and checking consistency of program components during the process of compilation
US7685581B2 (en) * 2003-06-27 2010-03-23 Microsoft Corporation Type system for representing and checking consistency of heterogeneous program components during the process of compilation
US7559050B2 (en) * 2003-06-30 2009-07-07 Microsoft Corporation Generating software development tools via target architecture specification
US7788652B2 (en) * 2003-06-27 2010-08-31 Microsoft Corporation Representing type information in a compiler and programming tools framework
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
US7675509B2 (en) * 2005-01-13 2010-03-09 Sony Corporation Methods and apparatus for optical wireless communication
JP2006243839A (ja) * 2005-02-28 2006-09-14 Toshiba Corp 命令生成装置及び命令生成方法
JP2006243838A (ja) * 2005-02-28 2006-09-14 Toshiba Corp プログラム開発装置
CN100468327C (zh) * 2005-11-10 2009-03-11 鸿富锦精密工业(深圳)有限公司 量测程序生成系统及方法
US7836435B2 (en) * 2006-03-31 2010-11-16 Intel Corporation Checking for memory access collisions in a multi-processor architecture
JP2007310565A (ja) 2006-05-17 2007-11-29 Toshiba Corp システムlsi検証装置及びシステムlsi検証プログラム
US7486096B2 (en) * 2006-10-31 2009-02-03 International Business Machines Corporation Method and apparatus for testing to determine minimum operating voltages in electronic devices
EP2096533A4 (en) 2006-11-21 2011-06-22 Nec Corp CONTROL OPERATION CODE GENERATION SYSTEM
US7809925B2 (en) * 2007-12-07 2010-10-05 International Business Machines Corporation Processing unit incorporating vectorizable execution unit
JP5116624B2 (ja) * 2008-09-29 2013-01-09 ルネサスエレクトロニクス株式会社 シミュレーション装置及びシミュレーション方法
JP2010160622A (ja) * 2009-01-07 2010-07-22 Toshiba Corp シミュレータ
US20110137922A1 (en) * 2009-12-07 2011-06-09 International Business Machines Corporation Automatic generation of a query lineage
JP2013517565A (ja) * 2010-01-12 2013-05-16 グーグル インコーポレイテッド オペレーティングシステム自動更新手順
US8370784B2 (en) * 2010-07-13 2013-02-05 Algotochip Corporation Automatic optimal integrated circuit generator from algorithms and specification
US8423929B2 (en) * 2010-10-18 2013-04-16 Algotochip Corp. Intelligent architecture creator
US20120185820A1 (en) * 2011-01-19 2012-07-19 Suresh Kadiyala Tool generator
US20130290693A1 (en) * 2012-04-27 2013-10-31 Esencia Technologies Inc. Method and Apparatus for the Automatic Generation of RTL from an Untimed C or C++ Description as a Fine-Grained Specialization of a Micro-processor Soft Core
US9734263B2 (en) * 2012-12-20 2017-08-15 Intel Corporation Method and apparatus for efficient pre-silicon debug
US9244683B2 (en) * 2013-02-26 2016-01-26 Nvidia Corporation System, method, and computer program product for implementing large integer operations on a graphics processing unit
JP6214455B2 (ja) * 2014-04-11 2017-10-18 三菱電機株式会社 命令テーブル生成装置、命令デコードプログラム生成装置、命令テーブル生成方法、命令デコードプログラム生成方法、およびプログラム
US9747084B2 (en) * 2014-09-09 2017-08-29 Google Inc. Offline shader compilation
CN104965687B (zh) * 2015-06-04 2017-12-08 北京东方国信科技股份有限公司 基于指令集生成的大数据处理方法及装置
GB2554096B (en) * 2016-09-20 2019-03-20 Advanced Risc Mach Ltd Handling of inter-element address hazards for vector instructions
US11475197B2 (en) * 2018-09-25 2022-10-18 Synopsys, Inc. Hardware simulation systems and methods for identifying state-holding loops and oscillating loops
JP7024679B2 (ja) * 2018-10-05 2022-02-24 オムロン株式会社 開発支援プログラム、開発支援装置、および開発支援方法
CN111400979A (zh) * 2020-03-24 2020-07-10 杭州博雅鸿图视频技术有限公司 Soc的仿真方法、系统、电子设备及存储介质
CN111522583A (zh) * 2020-04-08 2020-08-11 芯海科技(深圳)股份有限公司 一种生成配置文件的方法、装置、计算机设备及存储介质
CN111913097B (zh) * 2020-08-26 2022-11-29 西安微电子技术研究所 一种用于测试SoC功能的测试电路、测试方法和SoC
CN112100954A (zh) * 2020-08-31 2020-12-18 北京百度网讯科技有限公司 验证芯片的方法、装置和计算机存储介质
CN112486906B (zh) * 2020-12-18 2024-06-11 清华大学 格式化的可重构处理器汇编指令处理方法及装置
TWI764581B (zh) * 2021-02-22 2022-05-11 群聯電子股份有限公司 記憶體檢查方法、記憶體檢查裝置及記憶體檢查系統

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5623684A (en) * 1994-05-17 1997-04-22 Commquest Technologies, Inc. Application specific processor architecture comprising pre-designed reconfigurable application elements interconnected via a bus with high-level statements controlling configuration and data routing
JP2869379B2 (ja) 1996-03-15 1999-03-10 三菱電機株式会社 プロセッサ合成システム及びプロセッサ合成方法
GB2320111A (en) * 1996-12-06 1998-06-10 Jba Holdings Plc Data processing system and method for software development/configuration
JPH10222548A (ja) * 1997-02-05 1998-08-21 Hitachi Ltd 設計支援方法
US6112018A (en) * 1997-12-18 2000-08-29 Advanced Micro Devices, Inc. Apparatus for exchanging two stack registers
KR100874738B1 (ko) 1999-02-05 2008-12-22 텐실리카 인코포레이티드 구성가능한 프로세서를 설계하기 위한 프로세서 자동 생성시스템 및 방법
US6477683B1 (en) * 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
US7036106B1 (en) * 2000-02-17 2006-04-25 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
JP2001249826A (ja) * 2000-03-03 2001-09-14 Rooran:Kk システムlsi開発支援システムとその開発支援用プログラムを記録した記録媒体
US20010025363A1 (en) * 2000-03-24 2001-09-27 Cary Ussery Designer configurable multi-processor system
JP2002230065A (ja) * 2001-02-02 2002-08-16 Toshiba Corp システムlsi開発装置およびシステムlsi開発方法
JP3764405B2 (ja) * 2002-05-27 2006-04-05 株式会社東芝 デバッグ装置及びデバッグ方法
JP2006243839A (ja) 2005-02-28 2006-09-14 Toshiba Corp 命令生成装置及び命令生成方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100638476B1 (ko) * 2004-12-22 2006-10-26 삼성전자주식회사 버추얼 플랫폼 기반의 시스템 온 칩 개발 환경 및 개발 방법
KR20110031647A (ko) * 2009-09-21 2011-03-29 삼성전자주식회사 이기종 멀티프로세서 시스템 온 칩에서의 rpc 데이터 배치 방법 및 장치
US9104584B2 (en) 2010-12-30 2015-08-11 Samsung Electronics Co., Ltd. Apparatus and method for performing a complex number operation using a single instruction multiple data (SIMD) architecture

Also Published As

Publication number Publication date
CN100338568C (zh) 2007-09-19
KR100533307B1 (ko) 2005-12-05
EP1357485A2 (en) 2003-10-29
JP2003323463A (ja) 2003-11-14
US20070061763A1 (en) 2007-03-15
US20030204819A1 (en) 2003-10-30
EP1357485A3 (en) 2008-10-22
JP4202673B2 (ja) 2008-12-24
CN1453699A (zh) 2003-11-05
TW571237B (en) 2004-01-11
US7168060B2 (en) 2007-01-23

Similar Documents

Publication Publication Date Title
KR100533307B1 (ko) 시스템 온 칩을 개발하기 위한 개발 환경의 생성 방법 및 그 프로그램을 기억한 매체
Leupers et al. Retargetable compiler technology for embedded systems: tools and applications
JP5893038B2 (ja) ユーザ定義型のコンパイル時境界検査
EP0743599A2 (en) Method of generating code for programmable processor, code generator and application thereof
EP1229461A2 (en) System LSI development apparatus and the method thereof for developing a system optimal to an application
JP2004502990A (ja) 構成可能なプロセッサを設計する自動化されたプロセッサ生成システムおよびその方法
KR19990064011A (ko) 디지털 신호 프로세서를 제조하는 방법
Gyllenhaal A machine description language for compilation
Qin et al. Architecture Description Languages for Retargetable Compilation.
US11513818B1 (en) Method, product, and system for integrating a hardware accelerator with an extensible processor
Cardoso et al. Compilation and Synthesis for Embedded Reconfigurable Systems
Fauth Beyond tool-specific machine descriptions
Consel From a program family to a domain-specific language
Hadjiyiannis et al. Techniques for accurate performance evaluation in architecture exploration
Fauth et al. Global code selection for directed acyclic graphs
Kirner Integration of static runtime analysis and program compilation
dos Santos Acceleration of applications with fpga-based computing machines: Code restructuring
dos Santos C Compiler and Tools for P3 Educational Processor
Hadjiyiannis et al. ISDL: An instruction set description language for retargetability and architecture exploration
Olsson et al. An evaluation of multi-threading in compilers
Marwedel MIMOLA—a fully synthesizable language
Daverveldt LLVM-based ρ-VEX compiler
Meyer-Baese et al. Software Tool for Embedded Microprocessor Systems
Moss et al. Efficient code generation for a domain specific language
Wagstaff From high level architecture descriptions to fast instruction set simulators

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20091028

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee