KR100614491B1 - 컴퓨터 구현된 방법 및 머신 판독가능 매체 - Google Patents

컴퓨터 구현된 방법 및 머신 판독가능 매체 Download PDF

Info

Publication number
KR100614491B1
KR100614491B1 KR1019997012384A KR19997012384A KR100614491B1 KR 100614491 B1 KR100614491 B1 KR 100614491B1 KR 1019997012384 A KR1019997012384 A KR 1019997012384A KR 19997012384 A KR19997012384 A KR 19997012384A KR 100614491 B1 KR100614491 B1 KR 100614491B1
Authority
KR
South Korea
Prior art keywords
delete delete
application specific
specific integrated
time
code
Prior art date
Application number
KR1019997012384A
Other languages
English (en)
Other versions
KR20010020544A (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 KR20010020544A publication Critical patent/KR20010020544A/ko
Application granted granted Critical
Publication of KR100614491B1 publication Critical patent/KR100614491B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification

Landscapes

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

Abstract

고급 프로그래밍 언어로 기록된 컴퓨터 프로그램(101)은 그 제어 및 데이터 흐름을 나타내는 중간 데이터 구조(105)로 컴파일된다(103). 이 데이터 구조는 전체 성능을 향상시키도록 애플리케이션 주문형 집적 회로(117)로서 구현될 수 있는 논리의 임계 블록을 식별하도록 분석된다(111). 먼저, 논리의 임계 블록은 최대 데이터 병렬성을 갖는 새로운 등가 논리로 변환된다. 그 다음, 그 새로운 병렬화된 논리를 애플리케이션 주문형 집적 회로(117) 상에서 구현하기에 적합한 부울 게이트 표현으로 변환한다. 애플리케이션 주문형 집적 회로(117)는 마이크로프로세서(107)에 대한 주문 인스트럭션을 통해서 일반적인 마이크로프로세서와 연결된다. 그 다음, 원래 컴퓨터 프로그램은 새로운 확장된 목표 인스트럭션 세트를 갖는 목적 코드(109)로 컴파일된다.

Description

컴퓨터 구현된 방법 및 머신 판독가능 매체{METHOD FOR COMPILING HIGH LEVEL PROGRAMMING LANGUAGES}
발명의 분야
본 발명은 재구성가능한 컴퓨팅(reconfigurable computing)에 관한 것이다.
종래 기술
통상적으로, 집적 회로는 부울(Boolean) 게이트 및 레지스터(registers)와 같은 원시 회로(circuit primitives)로 그 구조를 표현함으로써 설계되어야 한다. 회로 설계자는 염두해 둔 특정 애플리케이션, 예를 들면, 영상 압축 알고리즘으로 시작해야 하고, 최종의 집적 회로는 목표 애플리케이션(targeted application)에 대해서만 사용될 수 있다.
또한, 집적 회로는 고정된 인스트럭션 세트를 갖는 범용 마이크로프로세서, 예를 들면, 인텔 x86 프로세서로서 설계될 수도 있다. 이것은 컴퓨터 프로그램 기록시에 융통성을 허용하여 임의의 시퀀스의 마이크로프로세서 인스트럭션을 호출할 수 있게 한다. 이러한 방안은 융통성을 증가시키는 반면, 회로가 임의의 특정 애플리케이션에 대해서는 최적화될 수 없기 때문에 그 성능을 감소시킨다.
고급 프로그래머가 임의의 컴퓨터 프로그램을 기록할 수 있고, 그 프로그램들을 고속 애플리케이션 주문형 집적 회로로 자동으로 변환할 수 있도록 하는 것이 바람직할 것이다. 그러나, 현재에는 마이크로프로세서와 애플리케이션 주문형 집적 회로에 대한 언어를 프로그래밍하는 데에 전문적 지식을 가진 컴퓨터 프로그래머들 간에는 연결 수단이 없으며, 이는 회로 설계시에 전문적 지식을 필요로 한다.
집적 회로 설계의 연구 및 개발에서는 회로 표현의 수준을 보다 고급의 추상적 수준으로 높이는 시도가 진행중이다. 현재의 기술 수준은 "동작 합성기(behavioral synthesizer)"로서, 그 입력은 회로의 레지스터/트랜스퍼(transfer) 동작의 동작 언어 표현이고, 그 출력은 그러한 동작을 구현하는데 요구되는 회로 요소의 구조적 표현이다. 이러한 입력 표현은 특정 애플리케이션을 목표로 하여야 하고, 그 동작을 고급 원시 회로로 표현해야 하지만, 동작 컴파일러는, 얼마나 많은 저급 원시 회로가 요구되는지, 이들 원시 회로들이 상이한 논리 블록들 간에 어떻게 공유될 것인지, 그리고 이들 원시 회로의 이용을 어떻게 스케줄링할 것인가를 자동으로 결정할 것이다. 그 다음, 이들 원시 회로의 출력 표현은 "논리 합성기"로 전달되며, 이 논리 합성기는 이들 원시 회로들을 이용가능한 "셀"의 라이브러리상에서 매핑하며, 각각의 셀은 집적 회로 상에서 원시 회로의 완전한 구현예가 된다. 논리 합성기의 출력은 필요한 모든 셀들 및 그들의 상호 연결의 표현이 된다. 다음, 이러한 표현은, 집적 회로 상의 모든 셀 및 상호 연결의 상세한 레이아웃을 결정하는 "플레이서 및 라우터(placer and router)"로 전달된다.
한편, 컴퓨터 프로그래밍의 연구 개발은 주문형 목표 하드웨어와 특정 애플리케이션 프로그램을 매칭시킴으로써 추상적 레벨을 하향(push down)하도록 또한 시도 중에 있다. 그러한 시도중 하나는 인텔 MMX 인스트럭션 세트이다. 이 인스트럭션 세트는 특히 디지털 신호 처리 알고리즘으로 애플리케이션을 가속화하도록 설계되었다. 그러한 애플리케이션은 일반적으로 기록될 수 있고, MMX는 컴파일러가 특정 인스트럭션을 사용함으로써 컴파일된 코드를 자동으로 가속시킬 것을 인식하고 있다. 병렬화된 컴파일러에 관한 연구에서 애플리케이션과 적절한 하드웨어를 매칭시키려는 다른 시도가 있다. 이들 컴파일러는 순차적인 프로그래밍 언어로 기록된 컴퓨터 프로그램을 취하고, 내포된 병렬성을 자동으로 추출할 것이며, 이는 다음에 가변적인 수의 프로세서 상에서의 실행을 위해 타겟될 수 있다. 따라서, 상이한 애플리케이션들은 특정한 필요에 따라서 상이한 수의 프로세서 상에서 실행될 수 있다.
하드웨어 및 소프트웨어 양자의 협력에 의한 상기의 노력에도 불구하고, 여전히 고급 프로그래밍 언어와 집적 회로 동작 표현 간의 차이를 해소할 수는 없었다.
발명의 요약
고급 프로그래밍 언어로 기록된 컴퓨터 프로그램은 그의 제어 및 데이터 흐름을 나타내는 중간 데이터 구조로 컴파일된다. 이 데이터 구조는 애플리케이션 주문형 집적 회로로서 구현될 수 있는 중대한 논리 블록을 식별하도록 분석되어 전체 성능을 개선하고 있다. 먼저, 중대한 논리 블록은 먼저 최대의 데이터 병렬화를 갖는 새로운 등가 논리 회로로 변환된다. 그리고 나서, 그 새로운 병렬화된 논리 회로는 애플리케이션 주문형 집적 회로 상에서 구현하기에 적합한 부울 게이트 표현으로 변환된다. 애플리케이션 주문형 집적 회로는 마이크로프로세서에 대한 주문 인스트럭션(custom instruction)을 통해서 범용 마이크로프로세서와 연결된다. 그 다음, 원래의 컴퓨터 프로그램은 새로운 확장된 목표 인스트럭션 세트를 갖는 목적 코드(object code)로 컴파일된다.
본 발명의 일실시예에 따르면, 컴퓨터 구현된 방법은 고급 프로그래밍 언어로 기록된 컴퓨터 프로그램을 마이크로프로세서와 연결된 하나 이상의 애플리케이션 주문형 집적 회로에 의해 실행하기 위한 프로그램으로 자동으로 컴파일한다. 하나 이상의 애플리케이션 주문형 집적 회로 내의 회로에 의해서 수행될 함수의 코드 블록이 선택되고, 그 코드 블록은 영역 제한과 실행 타이밍 제한 중의 적어도 하나에 기초하여 그룹들로 그룹화된다. 함수의 로딩 및 활성화가 스케줄링되며, 함수 로딩 및 활성화를 위한 인스트럭션을 포함하는 코드가 마이크로프로세서에 의한 실행을 위해 생성된다.
본 발명의 다른 양상에 따르면, 컴퓨터 구현된 방법은 고급 프로그래밍 언어로 기록된 컴퓨터 프로그램을 하나 이상의 애플리케이션 주문형 집적 회로로 자동으로 컴파일한다. 본 발명의 또 다른 양상에 따르면, 컴퓨터 구현된 방법은 고급 프로그래밍 언어로 기록된 컴퓨터 프로그램을 표준 마이크로프로세서와 연결된 하나 이상의 애플리케이션 주문형 집적 회로로 자동으로 컴파일한다. 본 발명의 또다른 양상에 따르면, 재구성가능 논리 블록은 컴파일된 인스트럭션에 의해서 고정되고(locked), 여기서 활성화 구성 인스트럭션(activate configuration instruction)은 소정의 후속 활성화로부터 그 블록을 고정하고, 릴리스 구성 인스트럭션(release configuration instruction)은 그 블록을 해제한다. 본 발명의 또 다른 양상에 따르면, 고급 프로그래밍 언어 컴파일러(compiler)는 하나 이상의 특정 인스트럭션 세트를 자동으로 결정하여 마이크로프로세서의 표준 인스트럭션 세트를 확장하는데, 이는 결과적으로 주어진 입력 컴퓨터 프로그램에 대해서 상대적으로 성능을 개선시킬 것이다. 본 발명의 또 다른 양상에 따르면, 하나를 초과하는 마이크로프로세서 표준 인스트럭션의 실행을 단일의 특정 인스트럭션의 실행으로 변환하기 위한 방법이 제공된다. 본 발명의 또 다른 양상에 따르면, 고급 프로그래밍 언어 컴파일러는 데이터 흐름 그래프 중간 표현에 의해서 동작 합성기와 연결된다.
첨부 도면을 참조한 이하의 설명으로부터 본 발명을 보다 명확히 이해할 수 있을 것이다.
도 1은 컴파일러의 바람직한 실시예의 설계 방법 흐름도를 도시한다.
도 2는 애플리케이션 주문형 집적 회로의 바람직한 실시예의 동작에 대한 제어 흐름을 도시한다.
도 3은 컴파일러로 입력될 수 있는 고급 소스 코드 예의 단편(fragment)을 도시한다.
도 4는 표준 컴파일러에 의해서 출력될 도 3의 코드 예에 대한 마이크로프로세서 목적 코드를 도시한다.
도 5는 도 3의 코드 예를 위해 컴파일러에 의해 출력되는 애플리케이션 주문형 회로의 예를 도시한다.
바람직한 실시예의 상세한 설명
본 발명의 바람직한 실시예에 따르면, 고급 프로그래밍 언어를 애플리케이션 주문형 집적 회로(ASIC)로 자동으로 컴파일하기 위한 방법이 제공된다.
도 1을 참조하면, 컴퓨터 프로그램 소스 코드(computer program source code)(101)는 표준 컴파일러 기술(standard compiler technology)(103)에 의해서 언어 독립 중간 포맷(language independent intermediate format)(105)으로 파싱(parsing)된다. 이 중간 포맷(105)은 표준 제어 및 데이터 흐름 그래프이지만, 캡쳐 루프(capture loops), 조건문(conditional statement) 및 배열 액세스(array accesses)에 대한 구성이 추가된다. 포맷의 연산자는 언어 독립 단순 RISC형 인스트럭션(language independent simple RISC-like instruction)이지만, 배열 액세스 및 절차 호출(procedure call)에 대한 연산자가 추가된다. 이들 구성은 코드를 병렬화하는데 필요한 모든 고급 정보를 캡쳐한다. 컴파일된 중간 포맷에 대한 더 상세한 설명은, 예를 들면, S.P.Amarasinghe, J.M.Anderson, C.S.Wilson, S.-W. Liao, B.M.Murphy, R.S.French, M.S. Lam 및 M.W.Hall에 의한, Multiprocessors from a Software Perspective; IEEE Micro, June 1996; pages 52-61에 개시되어 있다.
표준 컴파일러 기술이 이용되므로, 입력 컴퓨터 프로그램은 지원된 고급 프로그래밍 언어에 대한 소정의 합법적인 소스 코드일 수 있다. 이 방법은 하드웨어 구현 요소를 표현하기 위한 구성을 갖는 특정 언어를 필요로 하지 않는다. ANSI C 및 FORTRAN 77, 그리고 다른 언어에 대해 현재 존재하는 전단 파서(front end parsers)는 새로운 전단 파서를 추가함으로써 간단하게 지원될 수 있다. 전단 파서에 대한 보다 상세한 정보는, 예를 들면, C.W.Fraser 및 D.R.Hanson에 의한, A Retargetable Compiler for ANSI C; SIGPLAN Notices, 26(10); October 1991에 개시되어 있다.
이 중간 포맷(105)으로부터, 본 방법론은 두 가지 상이한 유형의 목표 하드웨어, 즉 표준 마이크로프로세서 및 ASIC에 대한 코드 생성을 유일하게 지원한다. 상기의 두개의 타겟이 필요한 이유는 ASIC이 마이크로프로세서보다 고속인 반면, 보다 크고 비싸서, 희근한 리소스로서 처리될 필요가 있기 때문이다. 컴파일러는 성능 대 영역의 트레이드오프(tradeoffs)를 평가하여, 어떤 코드 블록이 소정의 이용가능한 ASIC 영역에 대한 타겟으로 되어야 하는지를 자동으로 결정한다.
마이크로프로세서를 위한 코드 생성은 표준 컴파일러 기술(107)에 의해서 다루어진다. MIPS 마이크로프로세서를 위한 코드 생성기가 현재 존재하며, 다른 마이크로프로세서는 단순히 새로운 후단(back end) 생성기를 추가함으로써 제공될 수 있다. 생성된 목적 코드(109)에 있어서, 특정 인스트럭션으로서 ASIC-구현 논리 회로를 호출하는 주문형 인스트럭션이 삽입된다.
특정 인스트럭션은 4개의 일반적인 범주, 즉 로딩 구성(load_configuration), 활성화 구성(activate_configuration), 호출 구성(invoke_configuration) 및 릴리스 구성(release_cofiguration)으로 존재한다. 로딩 구성 인스트럭션은 ASIC 상에서 재구성가능한 단일의 논리 블록에 대한 논리 및 상호 연결을 구현할 수 있는 고정 비트 스트림 어드레스를 식별한다. 도 2를 참조하면, ASIC(200)은 가능하게는 재구성가능 논리 회로에 대한 내장형 마이크로프로세서(205) 및 제어 논리 회로(207)와 함께, 단일 칩 상에 하나 이상의 블록(201a, 201b)을 구비할 수 있다. 식별된 비트 스트림은 RAM(random access memory) 또는 ROM(PROM 또는 EEPROM)(203)에 상주할 수 있다. 비트 스트림은 ASIC상의 가능한 블록 구성의 캐쉬(cache)로 다운로딩된다. 활성화 구성 인스트럭션은 이전에 다운로딩된 구성을 식별하고, 그 구성에 따라 ASIC 블록 상의 재구성가능한 논리 회로를 재구성하며, 후속하는 소정의 활성화 인스트럭션로부터 블록을 고정한다. 호출 구성 인스트럭션은 입력 피연산자 레지스터를 로딩하고, 출력 레지스터를 고정하고, ASIC 상의 구성된 논리 회로를 호출한다. ASIC은 그 결과를 인스트럭션의 출력 레지스터로 로딩한 후, 레지스터를 고정 해제(unlock)하며, 마이크로프로세서는 그 결과를 얻고 실행을 계속할 수 있다. 릴리스 구성 인스트럭션은 ASIC 블록을 고정 해제하고, 후속의 활성화 구성 인스트럭션에 대해서 ASIC 블록을 이용가능하도록 만든다. 재구성가능 논리 회로를 구비한 내장 마이크로프로세서의 보다 상세한 설명은 미국 특허 출원 제 08/884,380 호의, L.Cooke, C.Phillips, 및 D.Wong에 의한, An Integrated Processor and Programmable Data Path Chip for Reconfigurable Computing에 개시되어 있고, 본 명세서에서 참조 문헌으로 인용한다.
ASIC 논리 회로를 위한 코드 생성은 몇 가지 방법에 의해서 구현될 수 있다. 한가지 구현예는 중간의 제어 및 데이터 흐름 그래프를 동작 합성 프로그램으로 전달한다. 이 인터페이스는 데이터 구조를 직접 전달하거나 중간 동작 언어 표현을 생성함으로써 성취될 수 있다. 동작 합성의 보다 상세한 설명은, 예를 들면, D.Knapp; Behavioral Snthesis; Prentice Hall PTR; 1966에 개시되어 있다. 다른 구현예는 회로 구현의 라이브러리 상으로 중간의 원시 포맷(intermediate format primitives)의 일대일 매핑을 생성하는 것이다. 예를 들면, 스칼라 변수 및 배열은 레지스터 및 적절한 비트 폭을 갖는 레지스터 파일로서 구현되며, 가산, 승산, 누산 및 비교 등과 같은 산술 및 부울 연산자는 적절한 비트 폭을 갖는 단일 셀로서 구현되며, 조건 분기 구현예 및 루프는 상태 머신(state machine)으로서 구현된다. 일반적으로, 도 1에 도시된 바와 같이, 실리콘 컴파일러(113)는 중간 포맷(105)으로 컴파일된 코드, 원시 회로 라이브러리(115)로부터의 원시 회로를 입력으로서 수신하고, ASIC(117)에 대한 레이아웃 또는 구성 정보를 생성한다. 상태 머신 합성에 대한 기법의 보다 상세한 설명은, 예를 들어, G. De Micheli, A. Sangiovanni-Vincentelli, 및 P. Antognetti에 의한, Design Systems for VLSI Circuits; Martinus Nijhoff Publishers; 1987; pp. 327-364에 개시되어 있다.
합성 또는 매핑 단계가 완료된 후, 셀의 등가 리스트 및 그들의 상호 연결이 생성된다. 이 리스트는 일반적으로 네트리스트(netlist)로서 지칭된다. 그리고 나서, 이 네트리스트는 ASIC 상의 실제 셀 레이아웃 및 그들의 상호 연결을 결정하는 플레이서 및 라우터로 전달된다. 그 다음, 완성된 레이아웃은, ASIC을 구성하기 위한 단일 유닛으로서 저장될 수 있고 로딩될 수 있는 비트 스트림 포맷으로 인코딩 및 압축된다. 상술한 처리의 단계적인 예는 도 3, 도 4 및 도 5에 도시되어 있다. 플레이싱(placing) 및 라우팅(routing) 알고리즘에 대한 일반적인 논의는 T. Ohtsuki에 의한, Layout Design and Verification; North-Holland; 1986; pp. 55-198에 개시되어 있다.
ASIC에 대한 타겟이 되는 코드의 기본 단위는 루프이다. 입력 소스 코드의 단일 루프는, 중간 포맷에서 도 1의 최적화기 및 병렬화기(111)에 의해 실행 시간 최적화 및 병렬화를 위한 다수의 구성으로 변환될 수 있다. 병렬 실행을 위한 루프 변환의 정도는 마이크로프로세서에 대한 ASIC의 성능을 향상시키는 주된 요인이다. 이들 변환은 일정한 전파(constant propagation), 순방향 전파(forward propagation), 유도 변수 검출(induction variable detection), 일정한 폴딩(constant folding), 스칼라 전용화 분석(scalar privatization analysis), 루프 교환(loop interchange), 스큐잉(skewing) 및 반전(reversal)을 포함하는 표준 병렬화 컴파일러 기술에 의해서 처리된다. 병렬 컴파일러 루프 변환의 일반적인 논의는 Michael Wolfe에 의한, High Performance Compilers for Parallel Computing; Addison-Wesley Publishing Company; 1996; pp. 307-363에 개시되어 있다.
삭제
어떤 소스 코드 루프가 상대적으로 가장 큰 성능 개선을 제공할지를 결정하기 위해서, 표준 소스 코드 프로파일러(profiler)의 결과가 컴파일러에 입력된다. 프로파일러 분석은 코드의 각 블록에서 소비된 실행 시간의 백분율을 나타낸다. 이들 백분율을 각 루프에 대해서 가능한 병렬화의 양과 조합함으로써, 이득값이 각 루프의 가능 이득에 대해서 추정될 수 있다. 예를 들어, 하기의 수학식 1에 의해서 추정될 수 있다.
이득=(프로파일 퍼센트)*(1-1/병렬 경로)
여기서, 프로파일 퍼센트는 이 루프에 소비된 실행 시간의 퍼센트이고, 병렬 경로는 병렬로 실행될 수 있는 경로의 수이다.
소스 코드 루프를 구현하는데 요구되는 ASIC 영역의 양은 그것의 모든 매핑된 셀들의 개별 영역을 합산하고, 셀들을 상호 연결하는데 요구되는 추가적인 영역을 추정함으로써 결정된다. 셀들과 그들의 그들의 상호 연결 영역의 크기는 요구되는 데이터 정밀도를 구현하는 데 필요한 비트의 수에 달려 있다. ASIC 영역은 각 루프의 비용에 대한 이득값으로서 사용할 수 있다. 예를 들어, 하기의 수학식 2와 같이 사용할 수 있다.
비용=셀 영역+최대치(0, (상호 연결 영역-과다 셀 영역))
여기서, 셀 영역은 모든 구성 셀 영역의 합이고, 과다 셀 영역은 셀 영역과 셀당 상호 연결 영역으로 사용할 수 있는 영역의 승산값이고, 상호 연결 영역은 상호 연결의 수와 상호 연결 길이와 상호 연결 폭의 승산값이며, 상호 연결 길이는 셀 수의 제곱근을 3으로 나눈값이다.
상호 연결 영역 추정에 대한 보다 상세한 정보는 B.Preas, M. Lorenzetti에 의한, Physical Design Automation of VLSI Systems; Benjamin/Cummings Publishing Company; 1988; pp.31-64에 개시되어 있다.
이 방법은 소스 코드 내의 모든 루프에 대한 이득값을 실제로 계산하지 않는다. 컴파일러에는 목표 실행 시간 시스템에 따라서, 두 개의 실행 시간 파라미터, 즉 단일 ASIC 블록에 대한 최대 영역 및 이용가능한 최대 전체 ASIC 영역이 제공된다. 먼저 루프의 실행 시간의 백분율에 의거하여 루프를 내림 차순으로 정렬한 후, 각 루프에 대한 이득값이 추정된 영역의 총량의 사전결정된 한계에 도달할 때까지 각 루프에 대한 이득값을 추정한다. 사전결정된 한계는 최대 전체 ASIC 영역이 이용가능한 일정 시간이다. 단일 ASIC 블록보다 큰 영역이 요구되는 루프는 단순하게 구현하기 위해서 스킵될 수 있다. 최종적으로, 계산된 이득값에 대한 모든 루프에 대해, 루프를 선택하도록 냅색 알고리즘(knapsack algorithm)이 적용된다. 상이한 ASIC 내에 있는 것과 관련된 비용이나 이득이 없다면, 이 절차는 다수 개의 ASIC을 타겟으로 하는 경우를 처리하도록 간단하게 확장될 수 있다. 냅색 알고리즘에 대한 일반적인 논의는 Syslo, Deo, Kowalik에 의한, Discrete Optimization Algorithms; Prentice-Hall; 1983; pp.118-176에 개시되어 있다.
단일 ASIC 상에 패킹되는 다양한 소스 코드 루프는 일반적으로 서로 독립적이다. 임의 유형의 ASIC, 즉, FPGA(field programmable gate array)에 있어서는, 실행시 FPGA 상의 함수 전체 또는 일부를 변경할 수 있다. FPGA는 재구성가능 논리의 하나 이상의 독립된 블록을 갖는다. 각 블록은 임의의 다른 블록에 영향을 미치지 않고 재구성될 수 있다. 컴퓨터 프로그램이 코드의 상이한 영역을 실행하거나, 또는 완전히 상이한 컴퓨터 프로그램이 로딩될 때, 또는 사용가능한 FPGA 논리의 양이 변경될 때, 현재 구현되는 함수의 변경이 바람직할 수 있다.
재구성가능 FPGA 환경은 컴파일러가 해결할 문제, 즉 구현될 함수의 전체 세트 선택, 다수의 FPGA 블록을 통한 함수 분할, 및 프로그램 실행 동안의 FPGA 블록 로딩 및 활성화 스케줄링의 문제를 제공한다. 이들 문제는 다항 시간(polynomial time)으로는 최적으로 해결될 수 없다. 이들 문제에 성공적으로 적용될 수 있는 몇 가지 발견적 방법에 대해서 설명하면 다음과 같다.
일순간에 FPCA 상에 동시에 함께 존재하는 구성 세트를 스넵샷(snapshot)으로서 지칭할 것이다. 블록 기능 정지 시간을 최소화하여 전체 실행 스케줄링을 최소화하기 위해서, 스넵샷을 포함하는 다양한 함수는 컴파일러에 의해서 분리된 블록으로 분할된다. 마이크로프로세서가 새로운 활성화 구성 인스트럭션을 생성하는 경우, 블록의 기능이 정지될 것이나, 이전 구성의 모든 함수는 아직 완료되지 못한다. 분할하는 것은 거의 동시에 종결되는 함수를 함께 그룹화할 것이다. 냅색 알고리즘에 의해서 선택된 모든 함수는 그들의 이상적인 스케줄링된 종결 시간(이상적인 종결 시간은 블록이 지연없이 다운로딩되고 활성화되어, 함수가 그들의 스케줄링된 개시 시간에 호출될 수 있는 것으로 가정함)에 따라서 정렬된다. 종결 시간의 증가에 의해서 리스트를 운행(traversing)하면, 각 함수는 FPGA 블록의 영역 용량에 도달할 때까지 동일한 FPGA 블록에 할당된다. FPGA 블록이 가득차면, 다음 FPGA 블록이 열린다. 모든 함수가 FPGA 블록에 할당된 후, 최초 종결 시간과 최종 종결 시간 사이의 차이가 각 블록에 대해 계산된다. 그 다음, 각 함수는 역순(감소하는 순서)으로 재방문(revisting)된다. 다음 FPGA 블록에 대한 함수 재할당이 그 FPGA 영역 용량을 초과하지 않고, 두 FPGA 블록에 대한 두 차이의 최대치가 감소되면, 그 함수는 다음 FPGA 블록에 할당된다.
함수가 분할된 다음, FPGA 블록의 각 구성은 단일 태스크(task)로 간주된다. 그 데이터 및 제어 종속물은 그 할당된 함수의 종속물의 결합이고, 그 요구되는 시간은 그 할당된 함수의 최초 종결 시간과 최종 종결 시간 사이의 차이이다. 모든 스냅샷을 통한 모든 구성 태스크 세트는, 각각의 물리적인 FPGA 블록을 프로세서로서 다루는 표준 마이크로프로세서 스케줄링 알고리즘으로 스케줄링될 수 있다. 이것은 모든 활성화 구성 인스트럭션을 스케줄링할 것이다.
일반적인 스케줄링 알고리즘은 리스트 스케줄링이라고 불린다. 리스트 스케줄링에 있어서, 전형적으로 다음과 같은 단계가 구현된다.
1. 태스크 그래프에서 각 노드에는 우선 순위(priority)가 할당된다. 우선 순위는 태스크 그래프의 시작점으로부터 노드까지의 가장 긴 경로의 길이로서 정의된다. 우선 순위의 큐는 중간 선행자(predecessor)가 없는 모든 태스크의 삽입에 의해서 태스크 준비 상태가 되도록 초기화된다. 태스크는 태스크 우선 순위의 내림 차순으로 정렬된다.
2. 우선 순위 큐가 비어 있지 않는 한 다음과 같이 수행된다.
a. 큐의 앞부분으로부터 태스크가 획득된다.
b. 태스크를 실행하도록 아이들(idle) 프로세서가 선택된다.
c. 특정 태스크의 모든 중간 선행자가 실행되는 경우, 즉시 후임자가 준비되어 우선 순위 큐에 삽입될 수 있다.
마이크로프로세서 스케줄링 알고리즘에 대한 보다 상세한 정보는 A. Zomaya에 의한, Parallel and Distributed Computing Handbook; McGraw-Hill; 1996; pp. 239-273에 개시되어 있다.
임의의 FPGA 블록에 대한 구성의 총수가 FPGA 블록의 구성 캐쉬의 용량을 초과하지 않는 경우, 프로그램의 개시점에서 모든 구성 로딩 인스트럭션이 생성될 수 있다. 마찬가지로, 프로그램은 하나보다 많은 섹션(section)으로 분할될 수 있으며, 여기서 임의의 FPGA 블록에 대한 구성의 총수가 FPGA 블록의 구성 캐쉬의 용량을 초과하지 않는다. 이와 달리, 로딩 구성 인스트럭션은 모든 블록의 구성 활성화 인스트럭션을 포함하는 프로그램의 제어 흐름 그래프의 가장 낮은 선행 분기점에서 스케줄링될 수 있다. 이것은 커버하는(covering) 로딩 인스트럭션으로서 지칭될 것이다. 이것은 로딩 인스트럭션에 대한 예비 스케줄이지만, 실제 로딩 시간이, 마이크로프로세서가 구성 로딩 인스트럭션으로부터 제 1 활성화 구성 인스트럭션으로 진행하도록 요구하는 시간을 초과한다면 기능 정지를 초래할 것이다. 또한, FPGA 블록에 대한 구성의 수는 그 구성 캐쉬의 용량을 여전히 초과할 수 있다. 이것은 또한 스케줄링에 있어서 기능 정지를 초래할 것이다. 그러한 경우, 컴파일러는 경합중인 각 구성에 대해 추정된 이득 대 기능 정지의 길이를 비교할 것이다. 구성의 이득은 할당된 함수의 이득의 합으로서 추정된다. 경합중인 모든 구성 중에서, 최소로 추정된 이득을 갖는 것이 발견된다. 기능 정지가 최소 이득보다 크다면, 최소 이득을 갖는 구성은 스케줄링에서의 해당 지점에서 사용되지 않을 것이다.
상술한 바와 같이, 커버하는 로딩 인스트럭션이 디스케줄링(de-scheduled)되면, 각 구성 활성화 인스트럭션 직전에 임시적인 구성 로딩 태스크가 생성될 것이다. 이들은 활성화 인스트럭션을 바로 선행하는 가장 낮은 분기점에서 생성될 것이다. 이들은 단일 로딩 인스트럭션으로서 지칭될 것이다. 스케줄 내의 해당 지점에서 FPGA 블록의 구성 캐쉬 용량을 초과하지 않으면서 단일 로딩 코맨드를 스케줄링하기 위한 새로운 시도가 생성될 것이다. 이전의 스케줄링 시도와 마찬가지로, 구성의 수가 구성 캐쉬 용량을 다시 초과하면, 기능 정지의 길이를 추정된 이득과 비교할 것이다. 그러나, 이 경우, 구성의 추정된 이득은 단지 이 분기 아래에서 호출될 단일 함수의 이득이다. 다시, 기능 정지가 최소 이득보다 크다면, 최소 이득을 갖는 구성은 스케줄 내의 해당 지점에서 사용되지 않을 것이다.
디스케줄링된 로딩 인스트럭션이 커버하는 로딩 인스트럭션이라면, 처리는 회귀될 것이고, 만일 그렇지 않고 단일 로딩 인스트럭션이라면, 처리는 종결된다. 이 처리는 로딩 인스트럭션을 한번에 한 단계 제어 흐름 그래프의 아래로 이동하고, 지원해야 하는 호출 수를 감소하도록 일반화될 수 있다. 단일 단계의 경우, 각각의 경쟁하는 구성을 두 개의 새로운 태스크로 분할한다. 이미 스케줄링된 구성의 경우, 할당된 함수를 현재 시간에 종결되는 것과 그렇지 않은 것으로 분할한다. 아직 스케줄링되지 않은 구성의 경우, 할당된 함수를 기능 정지 시간 이후에 개시하는 것과 그렇지 않은 것으로 분할한다.
분기 예측은 분기의 가능한 결과를 예측하고, 분기에 앞서서 분기의 결과로서 필요하게 될 가능성이 있는 구성을 로딩하는데 사용될 수 있다. 필연적으로, 분기 예측이 때때로 실패해서, 실제로 필요하지 않은 구성이 로딩되는 결과를 초래할 것이다. 이들 예를 제공하기 위해, 만약 순 실행 시간(net execution-time)이 결과를 절약한다면, 분기 인스트럭션 이후에 인스트럭션이 삽입되어 분기 이전에 로딩된 구성을 클리어하고, 분기 이후에 필요한 다른 구성을 로딩할 수 있다.
당업자라면 본 발명의 정신 또는 본질적인 특성으로부터 벗어나지 않고서도, 본 발명을 다른 특정한 형태로 구현할 수 있음을 이해할 것이다. 따라서, 개시된 본 발명의 실시예는 예시적인 것이며, 본 발명을 한정하고자 하는 것은 아니다. 본 발명의 영역은 상술한 설명보다는 첨부된 특허 청구 범위에 의해서 표현되며, 그 등가물의 의미 및 범위에 속하는 모든 변경은 본 발명에 포함된다.

Claims (61)

  1. 고급 프로그래밍 언어로 기록된 컴퓨터 프로그램을 마이크로프로세서와 연결된 하나 이상의 애플리케이션 주문형 집적 회로(application specific integrated circuits)에 의해 실행하기 위한 프로그램으로 자동 컴파일하는 컴퓨터 구현 방법(computer inplemented method)에 있어서,
    비용 함수를 사용하여 상기 하나 이상의 애플리케이션 주문형 집적 회로(ASIC)에 의해 실행될 하나 이상의 코드 블록의 세트를 자동으로 결정하는 단계―상기 하나 이상의 코드 블럭의 함수들은 상기 하나 이상의 애플리케이션 주문형 집적 회로(ASIC)에 의해 실행되어 상기 마이크로프로세서에 의한 실행을 위해 기록된 소정의 입력 프로그램에 대해 상대적인 성능 개선을 가져옴―와,
    상기 하나 이상의 애플리케이션 주문형 집적 회로의, 재구성가능 리소스를 포함한 물리적 리소스의 활용도를 최대화하기 위해, 상기 하나 이상의 코드 블럭의 함수들 중의 적어도 일부 중에서 상기 하나 이상의 애플리케이션 주문형 집적 회로의, 재구성가능 리소스를 포함한 물리적 리소스의 사용을 스케줄링하는 단계와,
    상기 함수들을 로딩 및 활성화하기 위한 인스트럭션을 포함하여, 상기 마이크로프로세서에 의한 실행을 위한 코드를 생성하는 단계를 포함하는
    컴퓨터 구현 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    영역 제한(area constraint) 및 실행 타이밍 제한(execution timing constraint) 중 적어도 하나에 기초하여 상기 코드 블록을 그룹으로 그룹화하는 단계와,
    상기 함수들의 로딩을 스케줄링(scheduling)하는 단계와,
    상기 함수들의 활성화를 스케줄링하는 단계를 더 포함하는 컴퓨터 구현 방법.
  4. 제 3 항에 있어서,
    상기 회로의 상세한 집적 회로 레이아웃을 생성하는 단계를 더 포함하는 컴퓨터 구현 방법.
  5. 제 3 항에 있어서,
    상기 함수들에 대한 구성 데이터를 생성하는 단계를 더 포함하는 컴퓨터 구현 방법.
  6. 제 1 항에 있어서,
    상기 인스트럭션은 애플리케이션 주문형 집적 회로 상에 구현된 함수를 로딩, 활성화, 호출(invoke) 및/또는 해제(release)하는 특정 인스트럭션을 포함하는 컴퓨터 구현 방법.
  7. 제 3 항에 있어서,
    상기 그룹화 단계는, 상기 선택된 코드 블록에 대한 개시 시간 및 종료 시간을 계산하는 것을 포함하는 컴퓨터 구현 방법.
  8. 제 7 항에 있어서,
    상기 개시 시간 및 종료 시간은 상기 선택된 코드 블록이 각 병렬 연산에 대한 고정된 오버헤드(overhead)로 병렬로 구현된다는 가정하에서 계산되는 컴퓨터 구현 방법.
  9. 제 8 항에 있어서,
    상기 고정된 오버헤드는, OV=I+A=L로서 계산―여기서, I는 코프로세서(coprocessor) 인스트럭션으로서 애플리케이션 주문형 집적 회로를 호출하는데 요구되는 평균 시간이고, A는 활성화 구성 인스트럭션을 생성하는데 요구되는 평균 시간과 활성화를 위한 평균 기능 정지 시간(average stall time)의 합이며, L은 로딩 구성 인스트럭션을 생성하는데 요구되는 평균 시간과 로딩을 위한 평균 기능 정지 시간의 합임―되는 컴퓨터 구현 방법.
  10. 제 7 항에 있어서,
    상기 그룹화 단계는, 그룹 내의 최초 종료 시간(the earliest finish time)과 최종 종료 시간(the latest finish time) 사이의 차이가 최소화되도록 수행되는 컴퓨터 구현 방법.
  11. 제 7 항에 있어서,
    상기 그룹화 단계는, 각 그룹에 대해, 해당 그룹의 함수를 수행하기 위한 회로가 애플리케이션 주문형 집적 회로의 블록의 지정된 용량을 초과하지 않도록 수행되는 컴퓨터 구현 방법.
  12. 제 7 항에 있어서,
    상기 그룹화 단계는,
    제로(zero)의 전체 할당된 영역으로 새 그룹을 여는(opening) 단계와,
    사전결정된 순서로 상기 코드 블록을 소팅(sorting) 및 트래버싱(traversing)하는 단계와,
    각 코드 블록에 대해, 상기 블록의 영역과 상기 그룹의 할당된 영역의 합이, 단일 그룹에 대한 지정된 최대 영역을 초과하지 않는 경우, 상기 코드 블록을 상기 그룹에 추가하고, 상기 코드 블록의 영역을 상기 그룹의 할당된 영역에 추가하며, 그렇지 않은 경우, 새로운 그룹을 열고, 상기 코드 블록을 상기 새로운 그룹에 추가하고, 상기 코드 블록의 영역을 상기 새로운 그룹의 할당된 영역에 추가하는 단계를 더 포함하는 컴퓨터 구현 방법.
  13. 삭제
  14. 삭제
  15. 제 1 항에 있어서,
    상기 자동 결정 단계는, 상기 컴퓨터 프로그램이 단일 마이크로프로세서 상에서 실행되는 경우, 각 코드 블록에서 소요된 시간의 백분율을 샘플링하는 단계를 포함하는 컴퓨터 구현 방법.
  16. 삭제
  17. 제 15 항에 있어서,
    상기 자동 결정 단계는, 상기 컴퓨터 프로그램의 상기 코드 블록 중 적어도 일부에 대해, 애플리케이션 주문형 집적 회로 내의 회로를 사용하여 코드 블록을 구현하는 것의 비용 및 이점을 추정하는 단계를 더 포함하는 컴퓨터 구현 방법.
  18. 삭제
  19. 제 17 항에 있어서,
    상기 자동 결정 단계는,
    애플리케이션 주문형 집적 회로의 단일 블록의 최대 영역을 나타내는 제 1 실행 시간 파라미터 및 애플리케이션 주문형 집적 회로로서의 구현을 위해 고려될 모든 블록에 대한 최대 전체 영역을 나타내는 제 2 실행 시간 파라미터를 받아들이는 단계와,
    상기 제 1 및 제 2 실행 시간 파라미터를 만족하고, 실행 시간의 전체 추정된 감소를 최대화하는 코드 블록 세트를 선택하는 단계를 더 포함하는 컴퓨터 구현 방법.
  20. 삭제
  21. 제 19 항에 있어서,
    상기 실행 시간의 감소는 R=T(1-1/P)의 식―여기서, T는 상기 코드 블록에서 소요되는 실행 시간의 백분율이고, P는 상기 코드 블록에서 병렬로 실행될 수 있는 경로의 수임―에 따라 추정되는 컴퓨터 구현 방법.
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 제 15 항에 있어서,
    각 그룹에 대한 실행 시간의 감소를 추정하는 단계를 더 포함하는 컴퓨터 구현 방법.
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 액세스하는 머신(accessing machine)에 의해 실행될 때, 고급 프로그래밍 언어로 기록된 컴퓨터 프로그램을 마이크로프로세서와 연결된 하나 이상의 애플리케이션 주문형 집적 회로에 의해 실행하기 위한 프로그램으로 컴파일하는 방법을 상기 머신이 구현하도록 하는 콘텐츠를 포함하는 머신 판독가능 매체(machine readable medium)에 있어서,
    상기 방법은,
    상기 마이크로프로세서에 의한 실행을 위해 기록된 소정의 입력 프로그램에 대해 상대적인 성능 향상을 생성시키고 상기 하나 이상의 애플리케이션 주문형 집적 회로에 의해서 실행될 하나 이상의 특정 인스트럭션 세트를 자동으로 결정하는 단계와,
    상기 하나 이상의 특정 인스트럭션을 포함하는 코드를 생성하는 단계를 포함하는 머신 판독가능 매체.
  54. 삭제
  55. 제 53 항에 있어서,
    상기 특정 인스트럭션은 상기 애플리케이션 주문형 집적 회로 상에 구현된 함수의 로딩, 활성화, 호출 및/또는 해제 중 하나 이상을 수행하는 하나 이상의 인스트럭션을 포함하는 머신 판독가능 매체.
  56. 제 53 항에 있어서,
    콘텐츠를 더 포함하되, 상기 콘텐츠는 실행될 때,
    하나 이상의 애플리케이션 주문형 집적 회로 내의 회로에 의해서 수행될 함수의 코드 블록을 선택하는 단계와,
    영역 제한 및 실행 타이밍 제한 중 적어도 하나에 기초하여 상기 코드 블록을 그룹으로 그룹화하는 단계와,
    상기 함수의 로딩을 스케줄링하는 단계와,
    상기 함수의 활성화를 스케줄링하는 단계를 포함하는 함수를 구현하는 머신 판독가능 매체.
  57. 제 56 항에 있어서,
    콘텐츠를 더 포함하되, 상기 콘텐츠는 실행될 때, 상기 회로의 상세한 집적 회로 레이아웃(들)을 생성하는 단계를 포함하는 함수를 구현하는 머신 판독가능 매체.
  58. 제 53 항에 있어서,
    상기 실행가능한 콘텐츠는 상기 실행하는 머신 상에서 컴파일러를 구현하는 머신 판독가능 매체.
  59. 제 56 항에 있어서,
    상기 그룹화 단계는, 상기 선택된 코드 블록에 대한 개시 시간 및 종료 시간(들) 중 하나 이상을 계산하는 것을 포함하는 머신 판독가능 매체.
  60. 제 59 항에 있어서,
    상기 개시 시간 및 종료 시간은 상기 선택된 코드 블록이 각 병렬 연산에 대한 고정된 오버헤드로 병렬로 구현된다는 가정하에서 계산되는 머신 판독가능 매체.
  61. 제 60 항에 있어서,
    상기 그룹화 단계는, 최초 종료 시간과 최종 종료 시간 사이의 차이가 감소되도록 수행되는 머신 판독가능 매체.
KR1019997012384A 1997-06-27 1998-06-29 컴퓨터 구현된 방법 및 머신 판독가능 매체 KR100614491B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US08/884,377 1997-06-27
US8/884,377 1997-06-27
US08/884,377 US5966534A (en) 1997-06-27 1997-06-27 Method for compiling high level programming languages into an integrated processor with reconfigurable logic
PCT/US1998/013563 WO1999000731A1 (en) 1997-06-27 1998-06-29 Method for compiling high level programming languages

Publications (2)

Publication Number Publication Date
KR20010020544A KR20010020544A (ko) 2001-03-15
KR100614491B1 true KR100614491B1 (ko) 2006-08-22

Family

ID=25384489

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019997012384A KR100614491B1 (ko) 1997-06-27 1998-06-29 컴퓨터 구현된 방법 및 머신 판독가능 매체

Country Status (7)

Country Link
US (2) US5966534A (ko)
EP (1) EP0991997A4 (ko)
JP (1) JP2002508102A (ko)
KR (1) KR100614491B1 (ko)
AU (1) AU8275498A (ko)
CA (1) CA2290649A1 (ko)
WO (1) WO1999000731A1 (ko)

Families Citing this family (195)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6077315A (en) * 1995-04-17 2000-06-20 Ricoh Company Ltd. Compiling system and method for partially reconfigurable computing
US7266725B2 (en) * 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
WO2002029600A2 (de) * 2000-10-06 2002-04-11 Pact Informationstechnologie Gmbh Zellenarordnung mit segmentierterwischenzellstruktur
DE19651075A1 (de) * 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
JP3961028B2 (ja) 1996-12-27 2007-08-15 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データフロープロセッサ(dfp)の自動的なダイナミックアンロード方法並びに2次元または3次元のプログラミング可能なセルストラクチャを有するモジュール(fpga,dpga等)
DE19654846A1 (de) * 1996-12-27 1998-07-09 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.)
US6542998B1 (en) * 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
DE19704728A1 (de) * 1997-02-08 1998-08-13 Pact Inf Tech Gmbh Verfahren zur Selbstsynchronisation von konfigurierbaren Elementen eines programmierbaren Bausteines
DE19704742A1 (de) * 1997-02-11 1998-09-24 Pact Inf Tech Gmbh Internes Bussystem für DFPs, sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen, zur Bewältigung großer Datenmengen mit hohem Vernetzungsaufwand
US6330659B1 (en) 1997-11-06 2001-12-11 Iready Corporation Hardware accelerator for an object-oriented programming language
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
JP3539613B2 (ja) * 1997-12-03 2004-07-07 株式会社日立製作所 ループ飛び出し文を含むループに対する配列サマリ解析方法
US6076152A (en) * 1997-12-17 2000-06-13 Src Computers, Inc. Multiprocessor computer architecture incorporating a plurality of memory algorithm processors in the memory subsystem
US7373440B2 (en) * 1997-12-17 2008-05-13 Src Computers, Inc. Switch/network adapter port for clustered computers employing a chain of multi-adaptive processors in a dual in-line memory module format
US7565461B2 (en) 1997-12-17 2009-07-21 Src Computers, Inc. Switch/network adapter port coupling a reconfigurable processing element to one or more microprocessors for use with interleaved memory controllers
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US6658564B1 (en) 1998-11-20 2003-12-02 Altera Corporation Reconfigurable programmable logic device computer system
US6286138B1 (en) * 1998-12-31 2001-09-04 International Business Machines Corporation Technique for creating remotely updatable programs for use in a client/server environment
US6477683B1 (en) 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
US6453407B1 (en) * 1999-02-10 2002-09-17 Infineon Technologies Ag Configurable long instruction word architecture and instruction set
US7003660B2 (en) 2000-06-13 2006-02-21 Pact Xpp Technologies Ag Pipeline configuration unit protocols and communication
DE19910863A1 (de) * 1999-03-11 2000-09-21 Siemens Ag Vorrichtung und Verfahren zum Verarbeiten von Aufträgen
DE10081643D2 (de) 1999-06-10 2002-05-29 Pact Inf Tech Gmbh Sequenz-Partitionierung auf Zellstrukturen
WO2001013583A2 (en) 1999-08-16 2001-02-22 Iready Corporation Internet jack
TW504608B (en) 1999-08-30 2002-10-01 Ip Flex Inc Program product and data processing device
US6714978B1 (en) * 1999-12-04 2004-03-30 Worldcom, Inc. Method and system for processing records in a communications network
US6986128B2 (en) * 2000-01-07 2006-01-10 Sony Computer Entertainment Inc. Multiple stage program recompiler and method
US6625797B1 (en) 2000-02-10 2003-09-23 Xilinx, Inc. Means and method for compiling high level software languages into algorithmically equivalent hardware representations
US7334216B2 (en) * 2000-04-04 2008-02-19 Sosy, Inc. Method and apparatus for automatic generation of information system user interfaces
US6681383B1 (en) * 2000-04-04 2004-01-20 Sosy, Inc. Automatic software production system
WO2001090887A1 (fr) * 2000-05-25 2001-11-29 Fujitsu Limited Procede de traitement de programme permettant un traitement haute vitesse au moyen d'un materiel a reconfiguration dynamique et programme permettant d'executer ce procede de traitement
US7340596B1 (en) * 2000-06-12 2008-03-04 Altera Corporation Embedded processor with watchdog timer for programmable logic
US7168069B1 (en) * 2000-07-12 2007-01-23 Stmicroelectronics, Inc. Dynamic generation of multimedia code for image processing
JP2002049652A (ja) * 2000-08-03 2002-02-15 Hiroshi Yasuda デジタル回路設計方法、そのコンパイラーおよびシミュレータ
AU2001283549A1 (en) * 2000-08-07 2002-02-18 Altera Corporation Software-to-hardware compiler
US7343594B1 (en) 2000-08-07 2008-03-11 Altera Corporation Software-to-hardware compiler with symbol set inference analysis
US20040015899A1 (en) * 2000-10-06 2004-01-22 Frank May Method for processing data
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
JP2002123563A (ja) * 2000-10-13 2002-04-26 Nec Corp コンパイル方法および合成装置ならびに記録媒体
US6904105B1 (en) * 2000-10-27 2005-06-07 Intel Corporation Method and implemention of a traceback-free parallel viterbi decoder
US6834291B1 (en) 2000-10-27 2004-12-21 Intel Corporation Gold code generator design
US7039717B2 (en) 2000-11-10 2006-05-02 Nvidia Corporation Internet modem streaming socket method
US7379475B2 (en) 2002-01-25 2008-05-27 Nvidia Corporation Communications processor
US20090300262A1 (en) * 2001-03-05 2009-12-03 Martin Vorbach Methods and devices for treating and/or processing data
US9250908B2 (en) 2001-03-05 2016-02-02 Pact Xpp Technologies Ag Multi-processor bus and cache interconnection system
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US9411532B2 (en) 2001-09-07 2016-08-09 Pact Xpp Technologies Ag Methods and systems for transferring data between a processing device and external devices
US9141390B2 (en) 2001-03-05 2015-09-22 Pact Xpp Technologies Ag Method of processing data with an array of data processors according to application ID
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US20070299993A1 (en) * 2001-03-05 2007-12-27 Pact Xpp Technologies Ag Method and Device for Treating and Processing Data
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US9552047B2 (en) 2001-03-05 2017-01-24 Pact Xpp Technologies Ag Multiprocessor having runtime adjustable clock and clock dependent power supply
US7210129B2 (en) * 2001-08-16 2007-04-24 Pact Xpp Technologies Ag Method for translating programs for reconfigurable architectures
US20090210653A1 (en) * 2001-03-05 2009-08-20 Pact Xpp Technologies Ag Method and device for treating and processing data
US9436631B2 (en) 2001-03-05 2016-09-06 Pact Xpp Technologies Ag Chip including memory element storing higher level memory data on a page by page basis
US7962716B2 (en) 2001-03-22 2011-06-14 Qst Holdings, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US6836839B2 (en) 2001-03-22 2004-12-28 Quicksilver Technology, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US7752419B1 (en) 2001-03-22 2010-07-06 Qst Holdings, Llc Method and system for managing hardware resources to implement system functions using an adaptive computing architecture
US7489779B2 (en) * 2001-03-22 2009-02-10 Qstholdings, Llc Hardware implementation of the secure hash standard
US20040133745A1 (en) 2002-10-28 2004-07-08 Quicksilver Technology, Inc. Adaptable datapath for a digital processing system
US7653710B2 (en) 2002-06-25 2010-01-26 Qst Holdings, Llc. Hardware task manager
US7624204B2 (en) * 2001-03-22 2009-11-24 Nvidia Corporation Input/output controller node in an adaptable computing environment
US7433909B2 (en) 2002-06-25 2008-10-07 Nvidia Corporation Processing architecture for a reconfigurable arithmetic node
US7325123B2 (en) 2001-03-22 2008-01-29 Qst Holdings, Llc Hierarchical interconnect for configuring separate interconnects for each group of fixed and diverse computational elements
US6577678B2 (en) 2001-05-08 2003-06-10 Quicksilver Technology Method and system for reconfigurable channel coding
TWI234737B (en) * 2001-05-24 2005-06-21 Ip Flex Inc Integrated circuit device
US6618434B2 (en) * 2001-05-31 2003-09-09 Quicksilver Technology, Inc. Adaptive, multimode rake receiver for dynamic search and multipath reception
WO2002103532A2 (de) * 2001-06-20 2002-12-27 Pact Xpp Technologies Ag Verfahren zur bearbeitung von daten
US10031733B2 (en) * 2001-06-20 2018-07-24 Scientia Sol Mentis Ag Method for processing data
CA2458199A1 (en) * 2001-08-16 2003-02-27 Pact Xpp Technologies Ag Method for the translation of programs for reconfigurable architectures
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US20030037319A1 (en) * 2001-08-20 2003-02-20 Ankur Narang Method and apparatus for partitioning and placement for a cycle-based simulation system
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US20030056091A1 (en) * 2001-09-14 2003-03-20 Greenberg Craig B. Method of scheduling in a reconfigurable hardware architecture with multiple hardware configurations
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US20030149962A1 (en) * 2001-11-21 2003-08-07 Willis John Christopher Simulation of designs using programmable processors and electronically re-configurable logic arrays
US7046635B2 (en) 2001-11-28 2006-05-16 Quicksilver Technology, Inc. System for authorizing functionality in adaptable hardware devices
US6986021B2 (en) 2001-11-30 2006-01-10 Quick Silver Technology, Inc. Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements
US8412915B2 (en) 2001-11-30 2013-04-02 Altera Corporation Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements
US7215701B2 (en) 2001-12-12 2007-05-08 Sharad Sambhwani Low I/O bandwidth method and system for implementing detection and identification of scrambling codes
US7577822B2 (en) * 2001-12-14 2009-08-18 Pact Xpp Technologies Ag Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization
US20030120460A1 (en) * 2001-12-21 2003-06-26 Celoxica Ltd. System, method, and article of manufacture for enhanced hardware model profiling
US7403981B2 (en) 2002-01-04 2008-07-22 Quicksilver Technology, Inc. Apparatus and method for adaptive multimedia reception and transmission in communication environments
EP1470478A2 (en) * 2002-01-18 2004-10-27 PACT XPP Technologies AG Method and device for partitioning large computer programs
EP1483682A2 (de) 2002-01-19 2004-12-08 PACT XPP Technologies AG Reconfigurierbarer prozessor
EP1514193B1 (de) 2002-02-18 2008-07-23 PACT XPP Technologies AG Bussysteme und rekonfigurationsverfahren
EP1518186A2 (de) * 2002-03-21 2005-03-30 PACT XPP Technologies AG Verfahren und vorrichtung zur datenverarbeitung
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
US6732354B2 (en) * 2002-04-23 2004-05-04 Quicksilver Technology, Inc. Method, system and software for programming reconfigurable hardware
CN1650258A (zh) * 2002-04-25 2005-08-03 皇家飞利浦电子股份有限公司 可扩展处理器中的自动任务分配
US7328414B1 (en) 2003-05-13 2008-02-05 Qst Holdings, Llc Method and system for creating and programming an adaptive computing engine
USRE43393E1 (en) 2002-05-13 2012-05-15 Qst Holdings, Llc Method and system for creating and programming an adaptive computing engine
US7660984B1 (en) 2003-05-13 2010-02-09 Quicksilver Technology Method and system for achieving individualized protected space in an operating system
US6931612B1 (en) * 2002-05-15 2005-08-16 Lsi Logic Corporation Design and optimization methods for integrated circuits
CN1656486A (zh) * 2002-05-23 2005-08-17 皇家飞利浦电子股份有限公司 集成电路设计方法
US7024654B2 (en) * 2002-06-11 2006-04-04 Anadigm, Inc. System and method for configuring analog elements in a configurable hardware device
US20030233639A1 (en) * 2002-06-11 2003-12-18 Tariq Afzal Programming interface for a reconfigurable processing system
US7802108B1 (en) 2002-07-18 2010-09-21 Nvidia Corporation Secure storage of program code for an embedded system
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
US20110238948A1 (en) * 2002-08-07 2011-09-29 Martin Vorbach Method and device for coupling a data processing unit and a data processing array
WO2004021176A2 (de) 2002-08-07 2004-03-11 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
US8108656B2 (en) 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
JP4388895B2 (ja) * 2002-09-06 2009-12-24 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト リコンフィギュアラブルなシーケンサ構造
US7502915B2 (en) * 2002-09-30 2009-03-10 Nvidia Corporation System and method using embedded microprocessor as a node in an adaptable computing machine
US7603664B2 (en) 2002-10-22 2009-10-13 Sun Microsystems, Inc. System and method for marking software code
US7222218B2 (en) * 2002-10-22 2007-05-22 Sun Microsystems, Inc. System and method for goal-based scheduling of blocks of code for concurrent execution
US7346902B2 (en) * 2002-10-22 2008-03-18 Sun Microsystems, Inc. System and method for block-based concurrentization of software code
US7937591B1 (en) 2002-10-25 2011-05-03 Qst Holdings, Llc Method and system for providing a device which can be adapted on an ongoing basis
US7225324B2 (en) 2002-10-31 2007-05-29 Src Computers, Inc. Multi-adaptive processing systems and techniques for enhancing parallelism and performance of computational functions
US6983456B2 (en) * 2002-10-31 2006-01-03 Src Computers, Inc. Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms
US8949576B2 (en) * 2002-11-01 2015-02-03 Nvidia Corporation Arithmetic node including general digital signal processing functions for an adaptive computing machine
US8276135B2 (en) 2002-11-07 2012-09-25 Qst Holdings Llc Profiling of software and circuit designs utilizing data operation analyses
US7225301B2 (en) 2002-11-22 2007-05-29 Quicksilver Technologies External memory controller node
SE0300742D0 (sv) * 2003-03-17 2003-03-17 Flow Computing Ab Data Flow Machine
JP2006524850A (ja) * 2003-04-04 2006-11-02 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データ処理方法およびデータ処理装置
US7373640B1 (en) * 2003-07-31 2008-05-13 Network Appliance, Inc. Technique for dynamically restricting thread concurrency without rewriting thread code
US20050039189A1 (en) * 2003-08-14 2005-02-17 Todd Anderson Methods and apparatus to preemptively compile an application
US8296764B2 (en) 2003-08-14 2012-10-23 Nvidia Corporation Internal synchronization control for adaptive integrated circuitry
US7174432B2 (en) 2003-08-19 2007-02-06 Nvidia Corporation Asynchronous, independent and multiple process shared memory system in an adaptive computing architecture
JP4700611B2 (ja) 2003-08-28 2011-06-15 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データ処理装置およびデータ処理方法
DE10349349A1 (de) * 2003-10-23 2005-05-25 Kuka Roboter Gmbh Verfahren zum Bestimmen und Bereitstellen von Laufzeitinformationen für Roboter-Steuerprogramme
US7685587B2 (en) * 2003-11-19 2010-03-23 Ecole Polytechnique Federal De Lausanne Automated instruction-set extension
US7689958B1 (en) 2003-11-24 2010-03-30 Sun Microsystems, Inc. Partitioning for a massively parallel simulation system
US8065439B1 (en) 2003-12-19 2011-11-22 Nvidia Corporation System and method for using metadata in the context of a transport offload engine
US8549170B2 (en) 2003-12-19 2013-10-01 Nvidia Corporation Retransmission system and method for a transport offload engine
US7624198B1 (en) 2003-12-19 2009-11-24 Nvidia Corporation Sequence tagging system and method for transport offload engine data lists
US7899913B2 (en) 2003-12-19 2011-03-01 Nvidia Corporation Connection management system and method for a transport offload engine
US8176545B1 (en) 2003-12-19 2012-05-08 Nvidia Corporation Integrated policy checking system and method
US7260631B1 (en) 2003-12-19 2007-08-21 Nvidia Corporation System and method for receiving iSCSI protocol data units
KR100552675B1 (ko) * 2003-12-26 2006-02-20 한국전자통신연구원 확장 인스트럭션 선택 장치 및 그 방법
US7249306B2 (en) 2004-02-20 2007-07-24 Nvidia Corporation System and method for generating 128-bit cyclic redundancy check values with 32-bit granularity
US7206872B2 (en) 2004-02-20 2007-04-17 Nvidia Corporation System and method for insertion of markers into a data stream
US7343378B2 (en) * 2004-03-29 2008-03-11 Microsoft Corporation Generation of meaningful names in flattened hierarchical structures
US7698413B1 (en) 2004-04-12 2010-04-13 Nvidia Corporation Method and apparatus for accessing and maintaining socket control information for high speed network connections
US7765539B1 (en) 2004-05-19 2010-07-27 Nintendo Co., Ltd. System and method for trans-compiling video games
US7353488B1 (en) * 2004-05-27 2008-04-01 Magma Design Automation, Inc. Flow definition language for designing integrated circuit implementation flows
US7487497B2 (en) * 2004-08-26 2009-02-03 International Business Machines Corporation Method and system for auto parallelization of zero-trip loops through induction variable substitution
US8984496B2 (en) * 2004-09-20 2015-03-17 The Mathworks, Inc. Extensible internal representation of systems with parallel and sequential implementations
US7957379B2 (en) 2004-10-19 2011-06-07 Nvidia Corporation System and method for processing RX packets in high speed network applications using an RX FIFO buffer
US7343482B2 (en) * 2004-10-20 2008-03-11 Arm Limited Program subgraph identification
US7350055B2 (en) * 2004-10-20 2008-03-25 Arm Limited Tightly coupled accelerator
US7318143B2 (en) * 2004-10-20 2008-01-08 Arm Limited Reuseable configuration data
EP1836601A2 (en) * 2004-11-30 2007-09-26 Tokyo Electron Limited Dynamically reconfigurable processor
US7426708B2 (en) 2005-01-31 2008-09-16 Nanotech Corporation ASICs having programmable bypass of design faults
EP1849095B1 (en) * 2005-02-07 2013-01-02 Richter, Thomas Low latency massive parallel data processing device
US20060225049A1 (en) * 2005-03-17 2006-10-05 Zhiyuan Lv Trace based signal scheduling and compensation code generation
TWI306215B (en) 2005-04-29 2009-02-11 Ind Tech Res Inst Method and corresponding apparatus for compiling high-level languages into specific processor architectures
US7401314B1 (en) * 2005-06-09 2008-07-15 Altera Corporation Method and apparatus for performing compound duplication of components on field programmable gate arrays
KR100731976B1 (ko) * 2005-06-30 2007-06-25 전자부품연구원 재구성 가능 프로세서의 효율적인 재구성 방법
US9774699B2 (en) * 2005-09-20 2017-09-26 The Mathworks, Inc. System and method for transforming graphical models
GB0519981D0 (en) * 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
US7890686B2 (en) * 2005-10-17 2011-02-15 Src Computers, Inc. Dynamic priority conflict resolution in a multi-processor computer system having shared resources
US7281942B2 (en) * 2005-11-18 2007-10-16 Ideal Industries, Inc. Releasable wire connector
US7716100B2 (en) * 2005-12-02 2010-05-11 Kuberre Systems, Inc. Methods and systems for computing platform
JP2007156926A (ja) * 2005-12-06 2007-06-21 Matsushita Electric Ind Co Ltd 割込制御装置
US8250503B2 (en) 2006-01-18 2012-08-21 Martin Vorbach Hardware definition method including determining whether to implement a function as hardware or software
JP4528728B2 (ja) 2006-01-31 2010-08-18 株式会社東芝 デジタル回路の自動設計装置、自動設計方法、および自動設計プログラム
US20070220235A1 (en) * 2006-03-15 2007-09-20 Arm Limited Instruction subgraph identification for a configurable accelerator
JP2007286671A (ja) * 2006-04-12 2007-11-01 Fujitsu Ltd ソフトウェア/ハードウェア分割プログラム、および分割方法。
US7761817B2 (en) * 2006-05-22 2010-07-20 Coherent Logix, Incorporated Designing an ASIC based on execution of a software program on a processing system
US7693257B2 (en) * 2006-06-29 2010-04-06 Accuray Incorporated Treatment delivery optimization
WO2008061557A1 (en) * 2006-11-20 2008-05-29 Freescale Semiconductor, Inc. System, apparatus and method for translating data
KR100893527B1 (ko) * 2007-02-02 2009-04-17 삼성전자주식회사 재구성 가능 멀티 프로세서 시스템에서의 매핑 및 스케줄링방법
US8250556B1 (en) * 2007-02-07 2012-08-21 Tilera Corporation Distributing parallelism for parallel processing architectures
EP1975791A3 (en) * 2007-03-26 2009-01-07 Interuniversitair Microelektronica Centrum (IMEC) A method for automated code conversion
US7987065B1 (en) 2007-04-17 2011-07-26 Nvidia Corporation Automatic quality testing of multimedia rendering by software drivers
US7996798B2 (en) * 2007-05-24 2011-08-09 Microsoft Corporation Representing binary code as a circuit
KR100940362B1 (ko) 2007-09-28 2010-02-04 고려대학교 산학협력단 모드 집합을 사용하는 명령어 처리기에서의 모드 명령어최적화 방법
JP5175524B2 (ja) * 2007-11-13 2013-04-03 株式会社日立製作所 コンパイラ
JP5109764B2 (ja) * 2008-03-31 2012-12-26 日本電気株式会社 記述処理装置、記述処理方法およびプログラム
JP5576605B2 (ja) * 2008-12-25 2014-08-20 パナソニック株式会社 プログラム変換装置およびプログラム変換方法
KR101511273B1 (ko) * 2008-12-29 2015-04-10 삼성전자주식회사 멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및시스템
US8667474B2 (en) * 2009-06-19 2014-03-04 Microsoft Corporation Generation of parallel code representations
EP2526494B1 (en) 2010-01-21 2020-01-15 SVIRAL, Inc. A method and apparatus for a general-purpose, multiple-core system for implementing stream-based computations
US9176845B2 (en) * 2010-03-19 2015-11-03 Red Hat, Inc. Use of compiler-introduced identifiers to improve debug information pertaining to user variables
US8601013B2 (en) 2010-06-10 2013-12-03 Micron Technology, Inc. Analyzing data using a hierarchical structure
US8661424B2 (en) * 2010-09-02 2014-02-25 Honeywell International Inc. Auto-generation of concurrent code for multi-core applications
US8880866B2 (en) 2010-10-15 2014-11-04 Coherent Logix, Incorporated Method and system for disabling communication paths in a multiprocessor fabric by setting register values to disable the communication paths specified by a configuration
WO2012062595A1 (de) * 2010-11-11 2012-05-18 Siemens Aktiengesellschaft Verfahren und vorrichtung zum bewerten von software-parallelisierung
WO2012103151A2 (en) 2011-01-25 2012-08-02 Micron Technology, Inc. State grouping for element utilization
EP2668577B1 (en) 2011-01-25 2019-08-14 Micron Technology, INC. Unrolling quantifications to control in-degree and/or out degree of automaton
WO2012103146A2 (en) 2011-01-25 2012-08-02 Micron Technology, Inc. Utilizing special purpose elements to implement a fsm
KR101640295B1 (ko) 2011-01-25 2016-07-15 마이크론 테크놀로지, 인크. 정규 표현을 컴파일하기 위한 방법 및 장치
US8533698B2 (en) * 2011-06-13 2013-09-10 Microsoft Corporation Optimizing execution of kernels
US8997065B2 (en) * 2011-12-06 2015-03-31 The Mathworks, Inc. Automatic modularization of source code
US8959469B2 (en) 2012-02-09 2015-02-17 Altera Corporation Configuring a programmable device using high-level language
JP2013242700A (ja) * 2012-05-21 2013-12-05 Internatl Business Mach Corp <Ibm> コード最適化方法、プログラム及びシステム
US8819618B2 (en) 2012-09-26 2014-08-26 The Mathworks, Inc. Behavior invariant optimization of maximum execution times for model simulation
JP6849371B2 (ja) * 2015-10-08 2021-03-24 三星電子株式会社Samsung Electronics Co.,Ltd. 側面発光レーザ光源、及びそれを含む三次元映像取得装置
US20170212739A1 (en) * 2016-01-26 2017-07-27 Icat Llc Processor With Reconfigurable Pipelined Core And Algorithmic Compiler
US11477302B2 (en) 2016-07-06 2022-10-18 Palo Alto Research Center Incorporated Computer-implemented system and method for distributed activity detection
US10891132B2 (en) 2019-05-23 2021-01-12 Xilinx, Inc. Flow convergence during hardware-software design for heterogeneous and programmable devices
US20220321403A1 (en) * 2021-04-02 2022-10-06 Nokia Solutions And Networks Oy Programmable network segmentation for multi-tenant fpgas in cloud infrastructures

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5625797A (en) * 1990-08-10 1997-04-29 Vlsi Technology, Inc. Automatic optimization of a compiled memory structure based on user selected criteria

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870308A (en) * 1990-04-06 1999-02-09 Lsi Logic Corporation Method and system for creating and validating low-level description of electronic design
US5513124A (en) * 1991-10-30 1996-04-30 Xilinx, Inc. Logic placement using positionally asymmetrical partitioning method
US5485455A (en) * 1994-01-28 1996-01-16 Cabletron Systems, Inc. Network having secure fast packet switching and guaranteed quality of service
US5511067A (en) * 1994-06-17 1996-04-23 Qualcomm Incorporated Layered channel element in a base station modem for a CDMA cellular communication system
US5603063A (en) * 1994-06-27 1997-02-11 Quantum Corporation Disk drive command queuing method using two memory devices for storing two types of commands separately first before queuing commands in the second memory device
US5548587A (en) * 1994-09-12 1996-08-20 Efficient Networks, Inc. Asynchronous transfer mode adapter for desktop applications
US5752035A (en) * 1995-04-05 1998-05-12 Xilinx, Inc. Method for compiling and executing programs for reprogrammable instruction set accelerator
US5794062A (en) * 1995-04-17 1998-08-11 Ricoh Company Ltd. System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization
US5729705A (en) * 1995-07-24 1998-03-17 Symbios Logic Inc. Method and apparatus for enhancing throughput of disk array data transfers in a controller
US5794044A (en) * 1995-12-08 1998-08-11 Sun Microsystems, Inc. System and method for runtime optimization of private variable function calls in a secure interpreter
GB2317245A (en) * 1996-09-12 1998-03-18 Sharp Kk Re-timing compiler integrated circuit design
US5864535A (en) * 1996-09-18 1999-01-26 International Business Machines Corporation Network server having dynamic load balancing of messages in both inbound and outbound directions
US5898860A (en) * 1996-10-01 1999-04-27 Leibold; William Steven System and method for automatically generating a control drawing for a real-time process control system
US6078736A (en) * 1997-08-28 2000-06-20 Xilinx, Inc. Method of designing FPGAs for dynamically reconfigurable computing
US6212650B1 (en) * 1997-11-24 2001-04-03 Xilinx, Inc. Interactive dubug tool for programmable circuits
US6075935A (en) * 1997-12-01 2000-06-13 Improv Systems, Inc. Method of generating application specific integrated circuits using a programmable hardware architecture
US6510546B1 (en) * 2000-07-13 2003-01-21 Xilinx, Inc. Method and apparatus for pre-routing dynamic run-time reconfigurable logic cores

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5625797A (en) * 1990-08-10 1997-04-29 Vlsi Technology, Inc. Automatic optimization of a compiled memory structure based on user selected criteria

Also Published As

Publication number Publication date
US20030014743A1 (en) 2003-01-16
CA2290649A1 (en) 1999-01-07
KR20010020544A (ko) 2001-03-15
EP0991997A1 (en) 2000-04-12
US6708325B2 (en) 2004-03-16
AU8275498A (en) 1999-01-19
JP2002508102A (ja) 2002-03-12
US5966534A (en) 1999-10-12
WO1999000731A1 (en) 1999-01-07
EP0991997A4 (en) 2004-12-29

Similar Documents

Publication Publication Date Title
KR100614491B1 (ko) 컴퓨터 구현된 방법 및 머신 판독가능 매체
Gupta et al. SPARK: A high-level synthesis framework for applying parallelizing compiler transformations
Athanas et al. Processor reconfiguration through instruction-set metamorphosis
US20050193359A1 (en) Method and apparatus for designing circuits using high-level synthesis
Wolfe Multiprocessor synchronization for concurrent loops
French et al. A general method for compiling event-driven simulations
Yang et al. Detecting program components with equivalent behaviors
Puschner Transforming execution-time boundable code into temporally predictable code
Nakatani et al. “Combining” as a compilation technique for VLIW architectures
Wall Experience with a software-defined machine architecture
Vachharajani Intelligent speculation for pipelined multithreading
Zhao et al. Loop parallelisation for the Jikes RVM
Saint-Mleux et al. SHard: a Scheme to hardware compiler
Rao et al. Storage assignment using expression tree transformations to generate compact and efficient DSP code
Ferrandi et al. Automatic parallelization of sequential specifications for symmetric mpsocs
Majumder et al. Automatic multi-dimensional pipelining for high-level synthesis of dataflow accelerators
Nawaz et al. Recursive variable expansion: A loop transformation for reconfigurable systems
Kieburtz A RISC architecture for symbolic computation
Kirchhoff et al. Increasing efficiency in data flow oriented model driven software development for softcore processors
Tongsima et al. Communication sensitive rotation scheduling
Vandebon et al. Meta-Programming Design-Flow Patterns for Automating Reusable Optimisations
Luo et al. Design and Implementation of Data Flow Programming Language DFC2
Pelton et al. Wavefront Threading Enables Effective High-Level Synthesis
Kwon et al. Data-parallel code generation from synchronous dataflow specification of multimedia applications
Ferrandi et al. SEQUENTIAL SPECIFICATIONS

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee