KR100614491B1 - 컴퓨터 구현된 방법 및 머신 판독가능 매체 - Google Patents
컴퓨터 구현된 방법 및 머신 판독가능 매체 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction 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
발명의 분야
본 발명은 재구성가능한 컴퓨팅(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은 컴파일러의 바람직한 실시예의 설계 방법 흐름도를 도시한다.
도 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에 의해서 추정될 수 있다.
여기서, 프로파일 퍼센트는 이 루프에 소비된 실행 시간의 퍼센트이고, 병렬 경로는 병렬로 실행될 수 있는 경로의 수이다.
소스 코드 루프를 구현하는데 요구되는 ASIC 영역의 양은 그것의 모든 매핑된 셀들의 개별 영역을 합산하고, 셀들을 상호 연결하는데 요구되는 추가적인 영역을 추정함으로써 결정된다. 셀들과 그들의 그들의 상호 연결 영역의 크기는 요구되는 데이터 정밀도를 구현하는 데 필요한 비트의 수에 달려 있다. ASIC 영역은 각 루프의 비용에 대한 이득값으로서 사용할 수 있다. 예를 들어, 하기의 수학식 2와 같이 사용할 수 있다.
여기서, 셀 영역은 모든 구성 셀 영역의 합이고, 과다 셀 영역은 셀 영역과 셀당 상호 연결 영역으로 사용할 수 있는 영역의 승산값이고, 상호 연결 영역은 상호 연결의 수와 상호 연결 길이와 상호 연결 폭의 승산값이며, 상호 연결 길이는 셀 수의 제곱근을 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)
- 고급 프로그래밍 언어로 기록된 컴퓨터 프로그램을 마이크로프로세서와 연결된 하나 이상의 애플리케이션 주문형 집적 회로(application specific integrated circuits)에 의해 실행하기 위한 프로그램으로 자동 컴파일하는 컴퓨터 구현 방법(computer inplemented method)에 있어서,비용 함수를 사용하여 상기 하나 이상의 애플리케이션 주문형 집적 회로(ASIC)에 의해 실행될 하나 이상의 코드 블록의 세트를 자동으로 결정하는 단계―상기 하나 이상의 코드 블럭의 함수들은 상기 하나 이상의 애플리케이션 주문형 집적 회로(ASIC)에 의해 실행되어 상기 마이크로프로세서에 의한 실행을 위해 기록된 소정의 입력 프로그램에 대해 상대적인 성능 개선을 가져옴―와,상기 하나 이상의 애플리케이션 주문형 집적 회로의, 재구성가능 리소스를 포함한 물리적 리소스의 활용도를 최대화하기 위해, 상기 하나 이상의 코드 블럭의 함수들 중의 적어도 일부 중에서 상기 하나 이상의 애플리케이션 주문형 집적 회로의, 재구성가능 리소스를 포함한 물리적 리소스의 사용을 스케줄링하는 단계와,상기 함수들을 로딩 및 활성화하기 위한 인스트럭션을 포함하여, 상기 마이크로프로세서에 의한 실행을 위한 코드를 생성하는 단계를 포함하는컴퓨터 구현 방법.
- 삭제
- 제 1 항에 있어서,영역 제한(area constraint) 및 실행 타이밍 제한(execution timing constraint) 중 적어도 하나에 기초하여 상기 코드 블록을 그룹으로 그룹화하는 단계와,상기 함수들의 로딩을 스케줄링(scheduling)하는 단계와,상기 함수들의 활성화를 스케줄링하는 단계를 더 포함하는 컴퓨터 구현 방법.
- 제 3 항에 있어서,상기 회로의 상세한 집적 회로 레이아웃을 생성하는 단계를 더 포함하는 컴퓨터 구현 방법.
- 제 3 항에 있어서,상기 함수들에 대한 구성 데이터를 생성하는 단계를 더 포함하는 컴퓨터 구현 방법.
- 제 1 항에 있어서,상기 인스트럭션은 애플리케이션 주문형 집적 회로 상에 구현된 함수를 로딩, 활성화, 호출(invoke) 및/또는 해제(release)하는 특정 인스트럭션을 포함하는 컴퓨터 구현 방법.
- 제 3 항에 있어서,상기 그룹화 단계는, 상기 선택된 코드 블록에 대한 개시 시간 및 종료 시간을 계산하는 것을 포함하는 컴퓨터 구현 방법.
- 제 7 항에 있어서,상기 개시 시간 및 종료 시간은 상기 선택된 코드 블록이 각 병렬 연산에 대한 고정된 오버헤드(overhead)로 병렬로 구현된다는 가정하에서 계산되는 컴퓨터 구현 방법.
- 제 8 항에 있어서,상기 고정된 오버헤드는, OV=I+A=L로서 계산―여기서, I는 코프로세서(coprocessor) 인스트럭션으로서 애플리케이션 주문형 집적 회로를 호출하는데 요구되는 평균 시간이고, A는 활성화 구성 인스트럭션을 생성하는데 요구되는 평균 시간과 활성화를 위한 평균 기능 정지 시간(average stall time)의 합이며, L은 로딩 구성 인스트럭션을 생성하는데 요구되는 평균 시간과 로딩을 위한 평균 기능 정지 시간의 합임―되는 컴퓨터 구현 방법.
- 제 7 항에 있어서,상기 그룹화 단계는, 그룹 내의 최초 종료 시간(the earliest finish time)과 최종 종료 시간(the latest finish time) 사이의 차이가 최소화되도록 수행되는 컴퓨터 구현 방법.
- 제 7 항에 있어서,상기 그룹화 단계는, 각 그룹에 대해, 해당 그룹의 함수를 수행하기 위한 회로가 애플리케이션 주문형 집적 회로의 블록의 지정된 용량을 초과하지 않도록 수행되는 컴퓨터 구현 방법.
- 제 7 항에 있어서,상기 그룹화 단계는,제로(zero)의 전체 할당된 영역으로 새 그룹을 여는(opening) 단계와,사전결정된 순서로 상기 코드 블록을 소팅(sorting) 및 트래버싱(traversing)하는 단계와,각 코드 블록에 대해, 상기 블록의 영역과 상기 그룹의 할당된 영역의 합이, 단일 그룹에 대한 지정된 최대 영역을 초과하지 않는 경우, 상기 코드 블록을 상기 그룹에 추가하고, 상기 코드 블록의 영역을 상기 그룹의 할당된 영역에 추가하며, 그렇지 않은 경우, 새로운 그룹을 열고, 상기 코드 블록을 상기 새로운 그룹에 추가하고, 상기 코드 블록의 영역을 상기 새로운 그룹의 할당된 영역에 추가하는 단계를 더 포함하는 컴퓨터 구현 방법.
- 삭제
- 삭제
- 제 1 항에 있어서,상기 자동 결정 단계는, 상기 컴퓨터 프로그램이 단일 마이크로프로세서 상에서 실행되는 경우, 각 코드 블록에서 소요된 시간의 백분율을 샘플링하는 단계를 포함하는 컴퓨터 구현 방법.
- 삭제
- 제 15 항에 있어서,상기 자동 결정 단계는, 상기 컴퓨터 프로그램의 상기 코드 블록 중 적어도 일부에 대해, 애플리케이션 주문형 집적 회로 내의 회로를 사용하여 코드 블록을 구현하는 것의 비용 및 이점을 추정하는 단계를 더 포함하는 컴퓨터 구현 방법.
- 삭제
- 제 17 항에 있어서,상기 자동 결정 단계는,애플리케이션 주문형 집적 회로의 단일 블록의 최대 영역을 나타내는 제 1 실행 시간 파라미터 및 애플리케이션 주문형 집적 회로로서의 구현을 위해 고려될 모든 블록에 대한 최대 전체 영역을 나타내는 제 2 실행 시간 파라미터를 받아들이는 단계와,상기 제 1 및 제 2 실행 시간 파라미터를 만족하고, 실행 시간의 전체 추정된 감소를 최대화하는 코드 블록 세트를 선택하는 단계를 더 포함하는 컴퓨터 구현 방법.
- 삭제
- 제 19 항에 있어서,상기 실행 시간의 감소는 R=T(1-1/P)의 식―여기서, T는 상기 코드 블록에서 소요되는 실행 시간의 백분율이고, P는 상기 코드 블록에서 병렬로 실행될 수 있는 경로의 수임―에 따라 추정되는 컴퓨터 구현 방법.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 제 15 항에 있어서,각 그룹에 대한 실행 시간의 감소를 추정하는 단계를 더 포함하는 컴퓨터 구현 방법.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 액세스하는 머신(accessing machine)에 의해 실행될 때, 고급 프로그래밍 언어로 기록된 컴퓨터 프로그램을 마이크로프로세서와 연결된 하나 이상의 애플리케이션 주문형 집적 회로에 의해 실행하기 위한 프로그램으로 컴파일하는 방법을 상기 머신이 구현하도록 하는 콘텐츠를 포함하는 머신 판독가능 매체(machine readable medium)에 있어서,상기 방법은,상기 마이크로프로세서에 의한 실행을 위해 기록된 소정의 입력 프로그램에 대해 상대적인 성능 향상을 생성시키고 상기 하나 이상의 애플리케이션 주문형 집적 회로에 의해서 실행될 하나 이상의 특정 인스트럭션 세트를 자동으로 결정하는 단계와,상기 하나 이상의 특정 인스트럭션을 포함하는 코드를 생성하는 단계를 포함하는 머신 판독가능 매체.
- 삭제
- 제 53 항에 있어서,상기 특정 인스트럭션은 상기 애플리케이션 주문형 집적 회로 상에 구현된 함수의 로딩, 활성화, 호출 및/또는 해제 중 하나 이상을 수행하는 하나 이상의 인스트럭션을 포함하는 머신 판독가능 매체.
- 제 53 항에 있어서,콘텐츠를 더 포함하되, 상기 콘텐츠는 실행될 때,하나 이상의 애플리케이션 주문형 집적 회로 내의 회로에 의해서 수행될 함수의 코드 블록을 선택하는 단계와,영역 제한 및 실행 타이밍 제한 중 적어도 하나에 기초하여 상기 코드 블록을 그룹으로 그룹화하는 단계와,상기 함수의 로딩을 스케줄링하는 단계와,상기 함수의 활성화를 스케줄링하는 단계를 포함하는 함수를 구현하는 머신 판독가능 매체.
- 제 56 항에 있어서,콘텐츠를 더 포함하되, 상기 콘텐츠는 실행될 때, 상기 회로의 상세한 집적 회로 레이아웃(들)을 생성하는 단계를 포함하는 함수를 구현하는 머신 판독가능 매체.
- 제 53 항에 있어서,상기 실행가능한 콘텐츠는 상기 실행하는 머신 상에서 컴파일러를 구현하는 머신 판독가능 매체.
- 제 56 항에 있어서,상기 그룹화 단계는, 상기 선택된 코드 블록에 대한 개시 시간 및 종료 시간(들) 중 하나 이상을 계산하는 것을 포함하는 머신 판독가능 매체.
- 제 59 항에 있어서,상기 개시 시간 및 종료 시간은 상기 선택된 코드 블록이 각 병렬 연산에 대한 고정된 오버헤드로 병렬로 구현된다는 가정하에서 계산되는 머신 판독가능 매체.
- 제 60 항에 있어서,상기 그룹화 단계는, 최초 종료 시간과 최종 종료 시간 사이의 차이가 감소되도록 수행되는 머신 판독가능 매체.
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)
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)
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)
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 |
-
1997
- 1997-06-27 US US08/884,377 patent/US5966534A/en not_active Expired - Lifetime
-
1998
- 1998-06-29 CA CA002290649A patent/CA2290649A1/en not_active Abandoned
- 1998-06-29 AU AU82754/98A patent/AU8275498A/en not_active Abandoned
- 1998-06-29 WO PCT/US1998/013563 patent/WO1999000731A1/en not_active Application Discontinuation
- 1998-06-29 US US09/446,758 patent/US6708325B2/en not_active Expired - Fee Related
- 1998-06-29 EP EP98932983A patent/EP0991997A4/en not_active Withdrawn
- 1998-06-29 JP JP50587699A patent/JP2002508102A/ja not_active Ceased
- 1998-06-29 KR KR1019997012384A patent/KR100614491B1/ko not_active IP Right Cessation
Patent Citations (1)
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 |