KR20040012878A - 적용 컴퓨팅 엔진에서 스케줄링하기 위한 방법 및 시스템 - Google Patents

적용 컴퓨팅 엔진에서 스케줄링하기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR20040012878A
KR20040012878A KR10-2003-7015689A KR20037015689A KR20040012878A KR 20040012878 A KR20040012878 A KR 20040012878A KR 20037015689 A KR20037015689 A KR 20037015689A KR 20040012878 A KR20040012878 A KR 20040012878A
Authority
KR
South Korea
Prior art keywords
schedule
value
scheduling
cost
dataflow graph
Prior art date
Application number
KR10-2003-7015689A
Other languages
English (en)
Inventor
유진 비. 호게나우어
Original Assignee
퀵실버 테크날러지, 인코퍼레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀵실버 테크날러지, 인코퍼레이티드 filed Critical 퀵실버 테크날러지, 인코퍼레이티드
Publication of KR20040012878A publication Critical patent/KR20040012878A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

적응가능한 컴퓨팅 엔진에 대한 스케줄러의 방법이 기술된다. 이 방법은 적응가능한 컴퓨팅 엔진상에서 어셈블링된 프로그램의 특정 세그먼트를 실행하기 위하여 이용가능한 하드웨어 자원으로서 다수의 계산 유닛을 제공하는 단계를 포함한다. 특정 세그먼트에 대한 스케줄은 실행가능한 스케줄이 달성될때까지 반복방식으로 특정 세그먼트를 나타내는 데이터흐름 그래프에 따라 다수의 계산유닛을 할당함으로서 변경된다.

Description

적용 컴퓨팅 엔진에서 스케줄링하기 위한 방법 및 시스템{METHOD AND SYSTEM FOR SCHEDULING IN AN ADAPTABLE COMPUTING ENGINE}
전자 산업은 다수의 내장형 시스템 마켓을 포함하는 고용량 소비자 애프리케이션의 요구를 충족시키기 위하여 확장되었다. 내장형 시스템은 최소 시간, 최소 전력소비 및 최소 비용으로 성능을 개선하고자하는 도전에 직면해 있다. 내장형 시스템이 사용되는 소비자 애플리케이션의 형태 및 수가 증가하기 때문에, 이들 도전은 훨씬 더 강조되고 있다. 내장형 시스템이 사용되는 소비자 애플리케이션의 예는 셀룰라폰, 개인휴대정보 단말기(PDA), 위성위치확인시스템(GPS) 수신기, 디지털 카메라 등과 같은 휴대용 장치를 포함한다. 이들 장치는 그들의 특성에 따라 소형, 저전력, 저중량 및 피처-리치(feature-rich)가 되도록 요구된다.
피처-리치 성능을 제공하기 위한 도전에 있어서, 장치에서 이용가능한 하드웨어 자원의 효율적인 이용을 제공하는 능력은 최고가 되가 되고 있다. 다중 처리엘리먼트를 사용하는 대부분의 모든 처리 환경에서 처럼, 상기 엘리먼트가 특정 관심 대상인 프로세서, 메모리, 레지스터 파일 등의 형태를 취하는지의 여부는 가까운 장래에 직무를 위하여 이용가능한 각 엘리먼트에 대한 유용한 작업을 알수 있다. 따라서, 스케줄링하여 자원을 할당하는 최적 방식을 식별하기 위한 적정 의사결정 프로세스는 효율적인 그리고 효과적인 시스템을 달성하는데 필요하다. 본 발명은 이러한 필요성을 제기한다.
본 발명은 제시간에 프로그램 명령을 스케줄링하여 처리소스에 할당하는 기술에 관한 것이다.
도 1은 적응 컴퓨팅 엔진을 설명하는 블록도.
도 2는 적응 컴퓨팅 엔진의 다수의 계산 엘리먼트, 다수의 계산유닛 및 재구성가능한 매트릭스를 설명하는 블록도.
도 3은 본 발명에 따른 스케줄링 프로세스를 설명하는 블록도.
도 4는 본 발명에 따른 데이터흐름 그래프 표현을 나타낸 도면.
적응가능 컴퓨팅 엔진에 대한 스케줄러의 특징이 기술된다. 이들 특징은 적응가능 컴퓨팅 엔진상에 어셈블리된 프로그램의 특정 세그먼트를 실행하기 위하여 이용가능한 하드웨어 자원으로서 다수의 계산유닛을 제공하는 단계를 포함한다. 특정 세그먼트에 대한 스케줄은 실행가능한 스케줄이 달성될때까지 반복방식으로 특정 세그먼트를 나타내는 데이터흐름 그래프에 따라 다수의 계산유닛을 할당함으로서 개량된다.
본 발명은 제시간에 프로그램 명령을 스케줄링하여 처리자원에 할당하는 기술에 관한 것이다. 다음의 설명은 당업자로 하여금 본 발명을 실시 및 이용할 수있도록 제공되며, 또한 특허출원 및 특허요건과 관련하여 제공된다. 여기에 기술된 바람직한 실시예 및 일반적인 원리와 특징에 대한 다양한 수정은 당업자에 의하여 용이하게 수행될 것이다. 따라서, 본 발명은 개시된 실시예에 제한되지 않으며 여기에 기술된 원리 및 특징에 맞는 가장 넓은 범위를 따른다.
바람직한 실시예에서, 본 발명의 양상은 "고정 애플리케이션 특정 계산 엘리먼트를 가진 적응 계산 유닛 및 다른 종류의 이종 및 재구성가능한 매트릭스를 가진 적응 집적회로"라는 명칭을 가지는 공동 계류중인 미국특허 출원번호 no._ 의 상세한 설명에 따라 적응가능한 컴퓨팅 엔진과 관련하여 제공된다. 상세한 설명의 일부는 본 발명의 특징을 좀더 명확하게 나타내기 위하여 복제된다.
도 1에는 집적회로 또는 다른 추가 소자를 가진 집적회로의 일부로서 바람직하게 구현되는 적응 컴퓨팅 엔진("ACE")(100)을 설명하는 블록도가 도시되어 있다. 바람직한 실시예에서, 이하에서 상세히 논의되는 바와같이, ACE(100)는 제어기(120), 매트릭스(150A 내지 150N)와 같은 하나 이상의 재구성가능 매트릭스(150), 및 매트릭스 상호접속 네트워크(110)를 포함하며, 바람직하게 메모리(140)를 포함한다.
종래기술과 다른 것은 ACE(100)가 재구성가능한 매트릭스(150), 제어기(120), 및 메모리(140)간에 신호전송 및 다른 전송을 수행하거나 또는 다른 입력/출력("I/O") 기능을 위한 통상적인(그리고 전형적으로 개별) 데이터 및 명령 버스를 이용하지 않는다는 점이다. 오히려, 데이터, 제어 및 구성 정보가 이하에서 더 상세히 기술되는 바와같이 재구성가능 매트릭스(150), 제어기(120),및 메모리(140)간에 임의의 소정 접속을 제공하기 위하여 실시간으로 구성 및 재구성될 수 있는 매트릭스 상호접속 네트워크(110)을 이용하는 상기 엘리먼트 사이에 전송된다.
메모리(140)는 공지된 임의의 바람직한 방식으로 실행될 수 있으며, ACE(100)내에 포함될 수 있거나 또는 다른 IC 또는 IC의 일부내에 통합될 수 있다. 바람직한 실시예에서, 메모리(140)는 ACE(100)내에 포함되며 바람직하게 저소비전력 랜덤 액세스 메모리(RAM)이나, 또한 플래시, DRAM, SRAM, MRAM, ROM, EPROM, 또는 E2PROM과 같은 다른 형태의 메모리일 수 있다. 바람직한 실시예에서, 메모리(140)는 바람직하게 직접 액세스 메모리(DMA) 엔진을 포함하나 개별적으로 기술되지 않는다.
제어기(120)는 바람직하게 감소된 명령세트("RISC") 프로세서, 제어기 또는 이하에 기술된 다른 형태의 기능을 수행할 수 있는 다른 장치 또는 IC로서 실행된다. "커널(kernal)" 제어로서 언급된 제 1 제어기능은 커널 제어기("KARC")(125)로서 기술되며, "매트릭스" 제어로서 언급된 다른 제어기능은 매트릭스 제어기("MARC")(130)로서 기술된다.
다양한 매트릭스(150)는 재구성가능하며 이질적인 성분으로 이루어지며 적정 구성을 따른다. 재구성가능한 매트릭스(150A)는 일반적으로 재구성 가능한 매트릭스(150B 내지 150N)과 다르며, 재구성가능한 매트릭스(150B)는 일반적으로 재구성가능한 매트릭스(150A, 150C 내지 150N)과 다르며, 재구성가능한 매트릭스(150C)는 일반적으로 재구성가능한 매트릭스(150A, 150B, 150D 내지 150N)과 다르다. 다양한 재구성가능한 매트릭스(150)는 일반적으로 각각 다른 또는 다양한 계산유닛(200, 도 2)을 포함하며, 이 계산유닛(200)은 또한 상호접속 네트워크를 통해 다양한 기능을 실행하기 위해 다양한 방식으로 접속, 구성 및 재구성될 수 있는 다른 또는 다양하게 결합된 고정 애플리케이션 특정 계산 엘리먼트(250, 도 2)을 포함한다. 다양한 내부 구성 및 재구성외에, 다양한 매트릭스(150)는 매트릭스 상호접속 네트워크(110)를 통해 각각의 다른 매트릭스(150)에 비하여 고레벨로 접속, 구성 및 재구성될 수 있다.
도 2에는 다수의 계산유닛(200)(계산유닛 200A 내지 200N으로 기술됨) 및 다수의 계산 엘리먼트(250)(계산 엘리먼트 250A 내지 250N으로 기술됨)를 가진 재구성가능 매트릭스(150)를 기술하며 바람직한 형태의 계산 엘리먼트(250)를 추가로 기술한 블록도가 도시되어 있다. 도 2에 기술된 바와같이, 임의의 매트릭스(150)는 일반적으로 매트릭스 제어기(230) 및 다수의 계산유닛(200)을 포함하며, 또한 매트릭스 상호접속 네트워크(110)의 논리적 또는 개념적 부세트 또는 부분으로서 데이터 상호접속 네트워크(240) 및 부울 상호접속 네트워크(210)를 포함한다. 전술한 부울 상호접속 네트워크는 다양한 계산 유닛(200)간의 부울 또는 논리적 입력 및 출력에 재구성가능한 상호접속 능력을 제공하는 반면에, 데이터 상호접속 네트워크(240)는 다양한 계산유닛(200)간의 데이터 입력 및 출력에 재구성가능한 상호접속 능력을 제공한다. 그러나, 부울 및 데이터 능력으로 개념적으로 분할되는 동안 매트릭스 상호접속 네트워크(110)의 임의의 주어진 물리부분이 부울 상호접속 네트워크(210), 데이터 상호접속 네트워크(240), 최저레벨 상호접속부(220)(다양한계산유닛(250)사이) 또는 다른 입력, 출력 또는 상호접속 기능부로서 임의의 주어진 시간에 동작할 수 있다는 것에 유의해야 한다.
도 2를 계속해서 참조하면, 계산 유닛(200)은 계산 엘리먼트(250A 내지 250Z)(통칭으로 계산유닛(250)이라 함)로 기술된 다수의 계산 엘리먼트(250) 및 추가 상호접속부(220)를 포함한다. 상호접속부(220)는 다양한 계산 엘리먼트(250)사이에 재구성가능한 상호접속 능력 및 입력/출력 경로를 제공한다. 앞서 지시된 바와같이, 각각의 다양한 계산 엘리먼트(250)는 주어진 작업 또는 작업의 범위를 수행하도록 설계된 전용 애플리케이션 특정 하드웨어로 이루어지며, 이에따라 다수의 다른 고정된 계산 엘리먼트(250)를 야기한다. 고정된 계산 엘리먼트(250)는 상호접속부(220), 부울 네트워크(210) 및 매트릭스 상호접속 네트워크(110)를 알고리즘 또는 다른 기능을 임의의 주어진 시간에 실행하기 위하여 함께 재구성가능하게 접속될 수 있다.
바람직한 실시예에 있어서, 다양한 계산 엘리먼트(250)는 다양한 재구성가능 계산 유닛(200)으로 설계되고 또한 다양한 재구성가능 계산유닛(200)으로 함께 그룹핑된다. 곱셈과 같은 특정 알고리즘 또는 기능을 실행하도록 설계된 계산 엘리먼트(250)외에, 다른 형태의 계산 엘리먼트(250)가 이용될 수 도 있다. 도 2에 기술된 바와같이, 계산 엘리먼트(250A, 250B)는 메모리를 실행하여 임의의 주어진 계산 또는 처리기능을 위한 로컬 메모리 엘리먼트(가장 멀리 있는 "원격" 메모리(140)와 비교하여)를 제공한다. 게다가, 계산 엘리먼트(250I, 250J, 250K, 250L)는 유한 상태 머신을 실행하여(예컨대, 다수의 플립플롭을 사용하여), 계산된제어 프로세싱에 특히 적합한 로컬 프로세싱 능력을 제공한다(가장 멀리 떨어진 "원격" MARC(130)와 비교하여).
바람직한 실시예에 있어서, 매트릭스 제어기(230)는 임의의 재구성 프로세스 및 임의의 대응하는 데이터 조작의 제어 및 큰 기준위치를 제공하기 위하여 임의의 주어진 매트릭스(150)내 포함된다. 예컨대, 일단 계산 엘리먼트(250)의 재구성이 임의의 주어진 계산 유닛(200)내에서 발생되면, 매트릭스 제어기(230)는 특정 인스턴스 생성(instantiation)(또는 구성)이 주어진 애플리케이션에 대한 반복 데이터 프로세싱을 계속하기 위하여 임의의 기간동안 그대로 유지되도록 할 수 있다.
ACE(100)의 적정 기능에 따라 이용할 수 있는 다른 형태의 다른 계산 엘리먼트(250)에서는 계산 유닛(200)이 개략적으로 분류될 수 있다. 계산 유닛(200)의 제 1 카테고리는 곱셈, 덧셈, 유한 임펄스 응답 필터링 등과 같은 선형 동작을 실행하는 계산 엘리먼트(250)를 포함한다. 계산 유닛(200)의 제 2 카테고리는 개별 코사인 변환, 삼각법 계산 및 복곱셈(complex multiplication)과 같은 비선형 연산을 실행하는 계산 엘리먼트(250)를 포함한다. 계산 유닛(200)의 제 3형태는 복잡한 제어 시퀀스, 동적 스케줄링 및 입력/출력 관리에 대하여 특히 유용한 계산 유닛(200C)과 같은 유한 상태 머신(도 2에 기술됨)을 실행하며, 계산 유닛(200)의 제 4형태는 계산 유닛(200A)과 같이 메모리 및 메모리 관리를 실행할 수 있다. 마지막으로, 계산 유닛(200)의 제 5형태는 채널 코딩과 같은 비트-레벨 조작을 실행하기 위하여 포함될 수 있다.
이들 계산 유닛으로부터 최적 성능을 달성하기 위해서는 많은 문제를 포함한다. 특정 고려사항은 유용한 작업을 실행하기 위하여 이용가능한 하드웨어 자원을 스케줄링 및 할당하는 방법에 관한 결정을 하는 것이다. 전체적으로, 본 발명은 계산 유닛의 이용가능한 하드웨어 자원에서 컴파일된 프로그램의 어셈블리된 형태를 스케줄링하는 것과 관련있다. 스케줄은 명령이 실행될 때를 지시하고 이용가능한 자원이 능력을 효율적으로 최반복하는 방식으로 사용되도록 하기 위하여 어느 자원이 사용되었는지를 지시하기 위하여 제어기(120)의 스케줄러 툴에 의하여 제공된다. 최적화를 실행할때, 스케줄러는 제어기의 분리기 부분으로부터의 정보를 이용한다. 분리기는 스케줄링될 수 있는 데이터흐름 그래프(이하에서 논의됨)를 나타내는 코드 "세그먼트"를 추출한다. 코드 세그먼트는 "for loops", 'if-then-else"에 의하여 생성된 배리어를 발생시키며, 서브루틴은 프로그램에서 배리어를 결정하는 종래의 시퀀스 모델에서 이해되는 바와같이 실행되는 프로그램에서 호출한다. 따라서, 세그먼트가 스케줄링되도록 하기 위하여, 분리기는 세그먼트를 분리하며, 어느 세그먼트가 레지스터를 공유하는지를 결정하며, 예컨대 프로그래머가 가장 높은 우선순위인 것으로 호출한 세그먼트 및 내부 루프에 우선순위를 제공하는 바와같이 어느 세그먼트가 우선순위를 가지는지를 결정한다. 분리기는 각 코드 세그먼트에 대한 스케줄러를 호출하며 어느 레지스터가 할당되는지를 지시한다.
도 3은 일단 스케줄러가 호출된 경우에 스케줄링 프로세스에서의 단계들에 대한 블록도를 기술한다. 도시된 바와같이, 프로세스는 하드웨어 구성 파일을 야기하는 하드웨어 구성 테이블의 초기화(단계 300)로부터 시작한다. 하드웨어 구성 파일은 그것의 계산 및 I/O 자원 및 네트워크 자원에 관한 단일 형태의 매트릭스에대한 구성을 한정한다. 따라서, 계산 및 I/O 자원은 각 계산 유닛(CU)의 형태 및 수에 의하여 각 매트릭스에 대하여 특정된다. 각각의 CU에서, CU상에서 실행될 수 있는 연산 리스트가 특정된다. 리스트의 각 연산에 대하여, 연산이 대칭(예컨대, 덧셈) 또는 비대칭(예컨대, 뺄셈)인지, 그리고 비대칭 연산인 경우 하드웨어가 스위칭 연산을 조절할 수 있는지에 관한 명세서가 하드웨어에 의하여 요구된 파이프라인 지연의 수에 제공된다. 각 매트릭스에 대한 네트워크 자원은 모든 CU 출력 포트 내지 CU 입력 포트 루틴에 대한 크로스포인트 테이블에 의하여 특정된다. 각각의 루트에 대하여, 루트 형태(예컨대, 레지스터 파일, 래치, 또는 와이어) 및 블로킹 리스트(즉, 상기 루틴이 사용될때 차단되는 다른 루트)가 특정된다. 각각의 레지스터 파일 루터 형태에 대하여 파일에서의 레지스터의 수 및 파이프라인 지연의 수가 특정된다.
스케줄러는 입력 데이터흐름 그래프(단계 305)를 초기화한다. 전술한 바와같이, 코드 세그먼트는 추출되어 데이터흐름 그래프로서 표현된다. 데이터흐름 그래프는 노드 및 에지 세트에 의하여 형성된다. 도 4에 도시된 바와같이, 소스 노드(400)는 하나 이상의 목적지 노드(405, 410)에 값을 전송할 수 있으며, 여기서 각각의 노드는 자동연산, 즉 단일 연산 예컨대 덧셈 또는 시프트로서 하부 하드웨어에 의하여 지원되는 연산을 실행한다. 오퍼랜드는 소스 노드(400) 및 출력 포트로부터 에지(420)으로서 표현된 경로를 따라 출력되며, 여기서 에지(420)는 소스 노드(400)의 출력 에지로서 동작하며 목적지 노드(405, 410)의 입력 에지를 입력 포트에 분기한다. 논리적인 관점에서 보면, 노드는 실행하는데 전혀 시간이 걸리지 않는다. 노드는 그것의 모든 입력에지가 값을 가질때 실행/시동한다. 입력 에지없는 노드는 클럭 사이클 0에서 실행하려한다.
게다가, 에지의 두 형태는 데이터흐름 그래프로 표현될 수 있다. 상태 에지는 레지스터로 실현되며, 1 클럭 사이클의 지연을 가지며, 일정한 피드백 경로를 위하여 사용될 수 있다. 와이어 에지는 0 클록 사이클의 지연을 가지며, 현재의 클록 사이클 동안만 유효한 값을 가지며, 이에 따라 목적지 노드는 동일한 논리적 클럭 사이클상에서 소스 노드로서 실행된다. 스케줄러는 논리적 클럭 사이클을 선택하여 계산 자원 및 네트워크 자원의 유효성에 기초하여 물리적 클럭 사이클 전반에 걸쳐 확산시킨다. 데이터흐름 그래프가 일반적으로 한번 실행되고 결코 다시 실행되지 않는 반면에, 데이터흐름 그래프는 "for loop"를 실행하기 위하여 많은 시간동안 유지될 수 있다. 상태 에지는 "for loop" 시작전에 초기화되어야 하며, 결과치는 "for loop"가 완료될때 상태 에지로부터 복사될 수 있다. 임의의 연산은 단일 데이터 스트림으로부터의 입력과 같이 번호순서대로 나열될 필요가 있다. 데이터흐름 그래프는 노드가 순차적으로 실행되도록 가상 부울 에지를 포함한다.
스케줄러 그 자체는 입력 데이트흐름 그래프에 의하여 특정된 노드 리스트에서의 노드가 단일 클럭 사이클동안 병렬로 실행될 수 있는지 그리고 노드가 다음 사이클까지 지연되어야 하는 것을 결정한다. 스케줄러는 중간값(노드의 지연된 실행에 의하여 요구됨)을 유지하며, 상태 변수를 유지하며, 상수를 유지하기 위하여 레지스터를 할당한다. 게다가, 스케줄러는 레지스터가 재사용될때를 결정하기 위하여 레지스터 수명을 분석하고, 노드를 CU에 할당하며, 특정 클럭 사이클동안 실행할 노드를 스케줄링한다. 따라서, 각 노드에 대하여, 따라서, 몇가지 설명은 동작 코드(Op 코드); 소스 코드의 포인터(예컨데 55줄의 fir필터, q); 임의의 경우에 사전설정된 CU; 입력 에지의 목록; 출력 에지의 목록; 및 각 에지에 대한 소스 노드, 지정 노드, 및 상태 플래그, 즉 에지가 초기값을 가지는지의 여부를 나타내는 플래그를 포함한다.
도 3을 다시 참조로하여, 초기 단계 이후에, 스케줄러는 '가능한 한 빠른'(ASAP) 스케줄(단계310)과 '세미-스마트' 스케줄(단계315)을 결정함으로써 초기 스케줄을 결정한다. ASAP 스케줄은 데이터 흐름 그래프를 스캐닝하여 명령사이의 데이터 의존상태를 제한하는데 사용가능한 초기 자원이 존재하는 경우에 상기 그래프가 실행되는 방법을 결정함으로써 결정된다. ASAP 스케줄은 가능한 클럭 사이클의 최소 횟수, 사용될 수 있는 CU의 최대 갯수, 및 최대 레지스터 수명을 포함하는 그래프를 인지한다. ASAP 스케줄과 실제 사용가능한 하드웨어 자원의 양에 기초하여 '세미-스마트' 스케줄이 함께 제공된다. 세미-스마트 스케줄과 자원 정보의 임의의 사용에 기초하여, 스케줄러를 위한 적당한 초기 스케줄이 생성된다.
상기 초기 스케줄을 사용하여, 스케줄에 대한 "비용"이 평가된다(단계 320). 본 명세서의 목적을 위해서, 비용은 스케줄의 장점을 반영하는 값을 참조로 한다. 바람직한 실시예에서, 만약 비용이 단계(325)를 통해 결정되는 것과 같이 수용가능한 조건내에서 제공된다면, 예컨데 0이면, 실행할 수 있는 스케줄이 제공된다(단계330). 비록 초기 스케줄이 원하는 비용을 발생시킬 수 있지만, 특정 스케줄을 위한 비용을 제로까지 감소시키기 위해 다른 해결방법이 필요할 것으로예상된다. 반복을 수행하기 위해서, 스케줄을 위한 소정의 최적화 파라미터가 사용된다.
최적화 파라미터는 스케줄러가 최적의 솔루션을 검색하는 것을 적절하게 제어한다. 최적화 파라미터는, 솔루션을 찾기 위해 최적화 루프를 실행하는 횟수를 나타내는 nLoops와 같은 파라미터; 매번 시도에 있어서, 시간 및 공간적으로 하나의 노드를 이동시키기 위한 시도가 이루어지는 각 루프에 대한 시도 횟수를 나타내는 파라미터(nTrials), '안좋은' 변경이 얼마나 자주 수용되는지를 제어하는 수용 변경 확률인 파라미터를 포함하는데, 상기 '안좋은' 변경은 비용을 증가시킬 수 있지만 궁극적으로는 수렴을 달성하는데 도움을 줄 수 있다. 그러한 파라미터는 스케줄의 최적화 동안에 사용되는 발견적 규칙의 일부를 형성한다. 발견적 규칙은 특정 알고리즘을 스케줄링하고, 특정 하드웨어 구성을 사용하며, 당업자가 잘 인지할 바와 같이 스케줄러가 솔루션을 위해 집중하는 동안 상기 스케줄러를 어떤 트랩에 들어가는지를 관찰하는 것을 포함하는 시행착오 경험에 기초하는 최적화를 위한 가이드라인을 나타낸다.
그러한 최적화 파라미터는 스케줄의 비용이 제로가 아닐때(즉, 단계 325의 결과가 긍정적일 때) 중요한 역할을 한다. 스케줄 비용이 제로가 아닐때, 작은 증가 변화가 하나의 노드를 재스케줄함으로써 이루어진다(단계 335). 작은 증가 단계를 수행하는데 있어서, 노드는 무작위로 선택된다. 게다가, 상기 단계는 노드의 스케줄 및 할당에 수행될 수 있는 후보 변화 모두에 기초하고, 그러한 후보 변화 중 하나가 무작위적으로 선택된다. 예컨대, 후보 변화는, 노드가 스케줄링되는 클록 사이클이나 그것이 할당되는 CU를 변경하는 것을 포함할 수 있다. 그런 후에, 비용이 다시 계산된다(단계 340). 단계(345)를 통해 결정되는 바와 같이, 만약 비용이 증가한다면, 스케줄러는 이전 스케줄로 되돌아가고(단계 350), 만약 비용이 증가하지 않는다면, 변경된 스케줄을 제공하기 위해서 변경이 용인된다(단계 355). 다음으로, 처리는 비용이 제로인지를 결정하기 위해 단계 325로 돌아가며, 단계 335, 340, 345, 350 및 355로 형성되는 최적화를 위한 루프가 실행가능한 스케줄이 발견될 때까지 적절하게 반복된다.
실행가능한 스케줄이 발견되면, 스케줄러는 스케줄링된 데이터흐름 그래프를 제공한다. 스케줄링된 데이터흐름 그래프는 할당된 CU, 스케줄링된 클록 사이클, 및 스위치 플래그를 포함하는 정보를 제공하는데, 상기 스위치 플래그는 각각의 노드에 대해서 입력 연산자가 스위칭되는지 여부를 나타낸다. 각각의 에지에 있어서, 스케줄링된 데이터흐름 그래프는 소스 및 목적 노드 사이에 사용되는 루트 및 레지스터 할당을 나타낸다. 그러한 방식으로, 프로그램 코드의 후속하는 실행이 이용가능한 자원의 최적의 활용을 통해 이루어진다.
앞선 설명으로부터, 여러 변형 및 변경이 본 발명의 사상과 범위를 벗어나지 않고 이루어질 수 있다는 것을 알 것이다. 여기서 설명된 특정 방법 및 장치로 인한 어떠한 제한도 의도되지 않거나 의미하지 않아야 한다는 것을 알아야 한다. 물론, 그러한 모든 변경은 첨부된 청구 범위에 의해서 본 청구범위 내에 있는 것으로서 커버되도록 의도된다.

Claims (26)

  1. 적응가능한 컴퓨팅 엔진에 어셈블링된 프로그램을 스케줄링하기 위한 방법으로서,
    어셈블링된 프로그램의 특정 세그먼트를 실행하기 위하여 이용가능한 하드웨워 자원으로서 다수의 계산 유닛을 제공하는 단계와;
    데이터흐름 그래프로서 상기 특정 세그먼트를 표현하는 단계와;
    실행가능한 스케줄이 달성될때까지 반복방식으로 상기 데이터흐름 그래프에 따라 상기 다수의 계산유닛을 할당하는 스케줄을 변경하는 단계를 포함하는 방법.
  2. 제 1항에 있어서, 상기 변경단계는 스케줄 비용을 나타내는 값을 할당하는 단계 및 상기 값이 허용조건을 만족하는지를 결정하는 단계를 포함하는 방법.
  3. 제 2항에 있어서, 상기 허용조건은 제로(zero) 비용을 포함하는 방법.
  4. 제 2항에 있어서, 상기 값은 상기 허용조건을 만족하지 않으며,
    상기 방법은, 변경된 스케줄을 제공하기 위하여 랜던방식으로 작은 증가 변화를 통해 스케줄을 변경시키는 단계를 더 포함하는 방법.
  5. 제 4항에 있어서, 랜덤 방식으로 변경하는 상기 단계는 상기 데이터흐름 그래프의 노드를 랜덤하게 선택하는 단계, 및 상기 선택된 노드에 대한 이용가능한 변화를 랜덤하게 선택하는 단계를 포함하는 방법.
  6. 제 4항에 있어서, 상기 변경된 스케줄에 대한 값을 계산하는 단계를 더 포함하는 방법.
  7. 제 6항에 있어서, 상기 변경된 스케줄은 상기 스케줄의 값보다 높은 계산된 값을 가지며, 상기 변경된 스케줄은 사용되지 않는 방법.
  8. 제 6항에 있어서, 상기 변경된 스케줄은 상기 스케줄의 값보다 낮은 계산된 값을 가지며,
    상기 방법은 상기 변경된 스케줄을 스케줄로서 선정하는 단계, 및 상기 값이 상기 허용조건을 만족하는지를 결정하는 단계를 반복하는 단계를 포함하는 방법.
  9. 제 8항에 있어서, 상기 값이 상기 허용조건을 만족할때 상기 방법은 실행가능한 스케줄로서 상기 스케줄을 선정하는 단계를 더 포함하는 방법.
  10. 제 9항에 있어서, 상기 실행가능한 스케줄이 달성되면 상기 특정 세그먼트를 스케줄링된 데이터흐름 그래프를 나타내는 단계를 더 포함하는 방법.
  11. 제 1항에 있어서, 다수의 계산유닛을 제공하는 상기 단계는 적응가능한 계산 머신에서 상기 다수의 계산 유닛을 매트릭스로서 제공하는 단계를 더 포함하는 방법.
  12. 적응가능한 컴퓨팅 엔진에서 어셈블링된 프로그램을 스케줄링하기 위한 시스템으로서,
    상기 어셈블링된 프로그램의 특정 세그먼트를 실행하기 위하여 이용가능한 하드웨어 자원을 제공하는 다수의 계산 유닛과;
    상기 다수의 계산유닛을 구성하는 호스트 제어기와;
    실행가능한 스케줄이 달성될때까지 반복방식으로 상기 특정 세그먼트를 나타내는 데이터흐름 그래프에 따라 상기 다수의 계산유닛을 할당하는 스케줄을 변경함으로서 상기 특정 세그먼트를 실행하기 위하여 상기 다수의 계산유닛을 스케줄링 및 할당하기 위한 수단을 포함하는 시스템.
  13. 제 12항에 있어서, 상기 다수의 계산 유닛은 적응가능한 컴퓨팅 엔진의 매트릭스를 더 포함하는 시스템.
  14. 제 12항에 있어서, 상기 스케줄링 및 할당수단은 스케줄비용을 나타내는 값을 할당하고 상기 값이 상기 허용조건을 만족하는지를 결정하는 시스템.
  15. 제 14항에 있어서, 상기 허용조건은 제로 비용을 포함하는 시스템.
  16. 제 14항에 있어서, 상기 값이 상기 허용조건을 만족하지 않을때, 상기 스케줄링 및 할당수단은 변경된 스케줄을 제공하기 위하여 랜덤방식으로 작은 증가 변화를 통해 상기 스케줄을 변경하는 시스템.
  17. 제 16항에 있어서, 상기 스케줄링 및 변경수단은 상기 데이터흐름 그래프의 노드를 랜덤하게 선택하고 상기 선택된 노드에 대한 이용가능한 변화를 랜덤하게 선택하여 랜던방식으로 변경하는 시스템.
  18. 제 16항에 있어서, 상기 스케줄링 및 변경수단은 상기 변경된 스케줄에 대한 값을 계산하는 시스템.
  19. 제 18항에 있어서, 상기 변경된 스케줄은 상기 스케줄의 값보다 높은 계산된 값을 가지며, 상기 변경된 스케줄은 사용되지 않는 시스템.
  20. 제 18항에 있어서, 상기 변경된 스케줄은 상기 스케줄의 값보다 ??은 계산된 값을 가지며, 상기 스케줄 및 변경 수단은 상기 변경된 스케줄을 스케줄로서 선정하며, 상기 값이 상기 허용조건을 만족하는지에 대한 결정을 반복하는 시스템.
  21. 제 20항에 있어서, 상기 값은 상기 허용조건을 충족시키며, 상기 스케줄 및 변경단계는 상기 스케줄을 실행가능한 스케줄로서 선정하는 시스템.
  22. 제 21항에 있어서, 상기 스케줄 및 변경수단은 상기 실행가능한 스케줄이 달성되면 상기 특정 세그먼트를 스케줄링된 데이터흐름 그래프로서 나타내는 시스템.
  23. 적응가능 컴퓨팅 엔진에서 계산 유닛의 매트릭스에 대한 최적 스케줄을 결정하는 방법으로서,
    코드 세그먼트를 실행하기 위하여 상기 매트릭스를 이용하는 선택된 스케줄에 대한 비용을 나타내는 값을 결정하는 단계와;
    상기 값이 허용가능한 비용값을 달성될까지 작은 증가 단계를 통해 상기 선택된 스케줄을 랜덤하게 조절하는 단계와;
    상기 허용가능한 비용이 달성되면 실행가능한 스케줄을 선정하는 단계를 포함하는 방법.
  24. 제 23항에 있어서, 상기 허용가능한 비용레벨은 제로비용을 더 포함하는 방법.
  25. 제 23항에 있어서, 노드 및 에지의 데이터흐름 그래프로서 상기 비용 세그먼트를 나타내는 단계를 더 포함하는 방법.
  26. 제 25항에 있어서, 상기 조절단계는 상기 데이터흐름 그래프의 노드를 랜덤하게 선택하고 상기 선택된 스케줄을 조절하기 위하여 상기 노드에 대한 이용가능한 변화를 랜덤하게 선택하는 단계를 더 포함하는 방법.
KR10-2003-7015689A 2001-05-31 2002-05-15 적용 컴퓨팅 엔진에서 스케줄링하기 위한 방법 및 시스템 KR20040012878A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/872,397 2001-05-31
US09/872,397 US20020184291A1 (en) 2001-05-31 2001-05-31 Method and system for scheduling in an adaptable computing engine
PCT/US2002/015639 WO2002097562A2 (en) 2001-05-31 2002-05-15 Method and system for scheduling in an adaptable computing engine

Publications (1)

Publication Number Publication Date
KR20040012878A true KR20040012878A (ko) 2004-02-11

Family

ID=25359489

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-7015689A KR20040012878A (ko) 2001-05-31 2002-05-15 적용 컴퓨팅 엔진에서 스케줄링하기 위한 방법 및 시스템

Country Status (7)

Country Link
US (1) US20020184291A1 (ko)
EP (1) EP1402348A2 (ko)
JP (1) JP2005510778A (ko)
KR (1) KR20040012878A (ko)
AU (1) AU2002308750A1 (ko)
TW (1) TW569135B (ko)
WO (1) WO2002097562A2 (ko)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7249242B2 (en) 2002-10-28 2007-07-24 Nvidia Corporation Input pipeline registers for a node in an adaptive computing engine
US7653710B2 (en) 2002-06-25 2010-01-26 Qst Holdings, Llc. Hardware task manager
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
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
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
US6577678B2 (en) 2001-05-08 2003-06-10 Quicksilver Technology Method and system for reconfigurable channel coding
US7046635B2 (en) 2001-11-28 2006-05-16 Quicksilver Technology, Inc. System for authorizing functionality in adaptable hardware devices
US8412915B2 (en) 2001-11-30 2013-04-02 Altera Corporation Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements
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
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
US7403981B2 (en) * 2002-01-04 2008-07-22 Quicksilver Technology, Inc. Apparatus and method for adaptive multimedia reception and transmission in communication environments
US20040015970A1 (en) * 2002-03-06 2004-01-22 Scheuermann W. James Method and system for data flow control of execution nodes of an adaptive computing engine (ACE)
US7328414B1 (en) 2003-05-13 2008-02-05 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
US8108656B2 (en) 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
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
US7478031B2 (en) * 2002-11-07 2009-01-13 Qst Holdings, Llc Method, system and program for developing and scheduling adaptive integrated circuity and corresponding control or configuration information
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
US6895292B2 (en) * 2003-04-28 2005-05-17 Palo Alto Research Center Inc. Predictive and preemptive planning and scheduling for different job priorities system and method
JP4536618B2 (ja) * 2005-08-02 2010-09-01 富士通セミコンダクター株式会社 リコンフィグ可能な集積回路装置
JP4619252B2 (ja) * 2005-09-29 2011-01-26 富士通セミコンダクター株式会社 リコンフィグ可能な集積回路装置
EP2297637A1 (en) 2008-07-02 2011-03-23 Nxp B.V. A multiprocessor circuit using run-time task scheduling
US9507640B2 (en) 2008-12-16 2016-11-29 International Business Machines Corporation Multicore processor and method of use that configures core functions based on executing instructions
WO2011091323A1 (en) 2010-01-21 2011-07-28 Qst Holdings, Llc A method and apparatus for a general-purpose, multiple-core system for implementing stream-based computations
US8498957B2 (en) * 2011-05-26 2013-07-30 Alcetel Lucent Optimal multi-factor evaluation in computing systems
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
KR101929754B1 (ko) * 2012-03-16 2018-12-17 삼성전자 주식회사 미니 코어 기반의 재구성가능 프로세서, 이를 위한 스케줄 장치 및 방법
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10445451B2 (en) * 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10445234B2 (en) * 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10387319B2 (en) * 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator

Family Cites Families (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6556044B2 (en) * 2001-09-18 2003-04-29 Altera Corporation Programmable logic device including multipliers and configurations thereof to reduce resource utilization
EP0384635B1 (en) * 1989-02-24 1997-08-13 AT&T Corp. Adaptive job scheduling for multiprocessing systems
US5261099A (en) * 1989-08-24 1993-11-09 International Business Machines Corp. Synchronous communications scheduler allowing transient computing overloads using a request buffer
US5768561A (en) * 1992-06-30 1998-06-16 Discovision Associates Tokens-based adaptive video processing arrangement
US5802290A (en) * 1992-07-29 1998-09-01 Virtual Computer Corporation Computer network of distributed virtual computers which are EAC reconfigurable in response to instruction to be executed
US6192255B1 (en) * 1992-12-15 2001-02-20 Texas Instruments Incorporated Communication system and methods for enhanced information transfer
US5712996A (en) * 1993-03-15 1998-01-27 Siemens Aktiengesellschaft Process for dividing instructions of a computer program into instruction groups for parallel processing
US5870427A (en) * 1993-04-14 1999-02-09 Qualcomm Incorporated Method for multi-mode handoff using preliminary time alignment of a mobile station operating in analog mode
US5517667A (en) * 1993-06-14 1996-05-14 Motorola, Inc. Neural network that does not require repetitive training
US5701482A (en) * 1993-09-03 1997-12-23 Hughes Aircraft Company Modular array processor architecture having a plurality of interconnected load-balanced parallel processing nodes
US5732563A (en) * 1993-09-22 1998-03-31 Imi Cornelius Inc. Electronically controlled beverage dispenser
GB2288677B (en) * 1993-09-28 1998-05-13 Namco Ltd Pipeline processing device, clipping processing device, three-dimensional simulator device and pipeline processing method
US5862961A (en) * 1993-10-26 1999-01-26 Imi Cornelius Inc. Connection device for dispensing fluid from a bottle
US5721854A (en) * 1993-11-02 1998-02-24 International Business Machines Corporation Method and apparatus for dynamic conversion of computer instructions
US5530435A (en) * 1993-12-09 1996-06-25 Steelcase Inc. Utility distribution system for modular furniture and the like
US5745366A (en) * 1994-07-14 1998-04-28 Omnicell Technologies, Inc. Pharmaceutical dispensing device and methods
US6056194A (en) * 1995-08-28 2000-05-02 Usa Technologies, Inc. System and method for networking and controlling vending machines
FR2724273B1 (fr) * 1994-09-05 1997-01-03 Sgs Thomson Microelectronics Circuit de traitement de signal pour mettre en oeuvre un algorithme de viterbi
JP3525353B2 (ja) * 1994-09-28 2004-05-10 株式会社リコー デジタル電子スチル・カメラ
KR0146100B1 (ko) * 1995-01-07 1998-09-15 이헌조 가전기기의 실사용상태 정보수집 및 분석장치
US5742180A (en) * 1995-02-10 1998-04-21 Massachusetts Institute Of Technology Dynamically programmable gate array with multiple contexts
US5892900A (en) * 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US5892961A (en) * 1995-02-17 1999-04-06 Xilinx, Inc. Field programmable gate array having programming instructions in the configuration bitstream
US5696906A (en) * 1995-03-09 1997-12-09 Continental Cablevision, Inc. Telecommunicaion user account management system and method
US5737631A (en) * 1995-04-05 1998-04-07 Xilinx Inc Reprogrammable instruction set accelerator
US6021186A (en) * 1995-04-17 2000-02-01 Ricoh Company Ltd. Automatic capture and processing of facsimile transmissions
US5751295A (en) * 1995-04-27 1998-05-12 Control Systems, Inc. Graphics accelerator chip and method
US5634190A (en) * 1995-06-06 1997-05-27 Globalstar L.P. Low earth orbit communication satellite gateway-to-gateway relay system
US5842004A (en) * 1995-08-04 1998-11-24 Sun Microsystems, Inc. Method and apparatus for decompression of compressed geometric three-dimensional graphics data
US5742821A (en) * 1995-11-08 1998-04-21 Lucent Technologies Inc. Multiprocessor scheduling and execution
EP0778240A1 (en) * 1995-12-08 1997-06-11 IMI Cornelius Inc. Electro-mechanical refrigeration system
US5734582A (en) * 1995-12-12 1998-03-31 International Business Machines Corporation Method and system for layout and schematic generation for heterogeneous arrays
US5706976A (en) * 1995-12-21 1998-01-13 Purkey; Jay Floyd Vending machine inventory control device
US6510510B1 (en) * 1996-01-25 2003-01-21 Analog Devices, Inc. Digital signal processor having distributed register file
US5889816A (en) * 1996-02-02 1999-03-30 Lucent Technologies, Inc. Wireless adapter architecture for mobile computing
US6237029B1 (en) * 1996-02-26 2001-05-22 Argosystems, Inc. Method and apparatus for adaptable digital protocol processing
US5894473A (en) * 1996-02-29 1999-04-13 Ericsson Inc. Multiple access communications system and method using code and time division
US6055314A (en) * 1996-03-22 2000-04-25 Microsoft Corporation System and method for secure purchase and delivery of video content programs
US6346824B1 (en) * 1996-04-09 2002-02-12 Xilinx, Inc. Dedicated function fabric for use in field programmable gate arrays
US5903886A (en) * 1996-04-30 1999-05-11 Smartlynx, Inc. Hierarchical adaptive state machine for emulating and augmenting software
US6181981B1 (en) * 1996-05-15 2001-01-30 Marconi Communications Limited Apparatus and method for improved vending machine inventory maintenance
US5907580A (en) * 1996-06-10 1999-05-25 Morphics Technology, Inc Method and apparatus for communicating information
US6175854B1 (en) * 1996-06-11 2001-01-16 Ameritech Services, Inc. Computer system architecture and method for multi-user, real-time applications
US5887174A (en) * 1996-06-18 1999-03-23 International Business Machines Corporation System, method, and program product for instruction scheduling in the presence of hardware lookahead accomplished by the rescheduling of idle slots
US6192388B1 (en) * 1996-06-20 2001-02-20 Avid Technology, Inc. Detecting available computers to participate in computationally complex distributed processing problem
US6360256B1 (en) * 1996-07-01 2002-03-19 Sun Microsystems, Inc. Name service for a redundant array of internet servers
US6023742A (en) * 1996-07-18 2000-02-08 University Of Washington Reconfigurable computing architecture for providing pipelined data paths
US5890014A (en) * 1996-08-05 1999-03-30 Micronet Technology, Inc. System for transparently identifying and matching an input/output profile to optimal input/output device parameters
JP3123440B2 (ja) * 1996-08-14 2001-01-09 日本電気株式会社 無線通信システムのチャネル選択方法
US6041970A (en) * 1996-08-30 2000-03-28 Imi Cornelius Inc. Pre-mix beverage dispensing system and components thereof
US6226387B1 (en) * 1996-08-30 2001-05-01 Regents Of The University Of Minnesota Method and apparatus for scene-based video watermarking
US6021492A (en) * 1996-10-09 2000-02-01 Hewlett-Packard Company Software metering management of remote computing devices
US6016395A (en) * 1996-10-18 2000-01-18 Samsung Electronics Co., Ltd. Programming a vector processor and parallel programming of an asymmetric dual multiprocessor comprised of a vector processor and a risc processor
US5913172A (en) * 1996-11-15 1999-06-15 Glenayre Electronics, Inc. Method and apparatus for reducing phase cancellation in a simulcast paging system
US6246883B1 (en) * 1996-12-24 2001-06-12 Lucent Technologies, Inc. Mobile base station
US6061580A (en) * 1997-02-28 2000-05-09 Randice-Lisa Altschul Disposable wireless telephone and method for call-out only
US6059840A (en) * 1997-03-17 2000-05-09 Motorola, Inc. Automatic scheduling of instructions to reduce code size
US5912572A (en) * 1997-03-28 1999-06-15 Cypress Semiconductor Corp. Synchronizing clock pulse generator for logic derived clock signals with synchronous clock suspension capability for a programmable device
US6041322A (en) * 1997-04-18 2000-03-21 Industrial Technology Research Institute Method and apparatus for processing data in a neural network
US5860021A (en) * 1997-04-24 1999-01-12 Klingman; Edwin E. Single chip microcontroller having down-loadable memory organization supporting "shadow" personality, optimized for bi-directional data transfers over a communication channel
US6219697B1 (en) * 1997-05-02 2001-04-17 3Com Corporation Method and apparatus for operating the internet protocol over a high-speed serial bus
US5886537A (en) * 1997-05-05 1999-03-23 Macias; Nicholas J. Self-reconfigurable parallel processor made from regularly-connected self-dual code/data processing cells
US6047115A (en) * 1997-05-29 2000-04-04 Xilinx, Inc. Method for configuring FPGA memory planes for virtual hardware computation
US5917852A (en) * 1997-06-11 1999-06-29 L-3 Communications Corporation Data scrambling system and method and communications system incorporating same
US6078736A (en) * 1997-08-28 2000-06-20 Xilinx, Inc. Method of designing FPGAs for dynamically reconfigurable computing
IL126149A (en) * 1997-09-09 2003-07-31 Sanctum Ltd Method and system for protecting operations of trusted internal networks
US6036166A (en) * 1997-09-25 2000-03-14 Imi Cornelius Inc. Chamber valve
US6363411B1 (en) * 1998-08-05 2002-03-26 Mci Worldcom, Inc. Intelligent network
US6195788B1 (en) * 1997-10-17 2001-02-27 Altera Corporation Mapping heterogeneous logic elements in a programmable logic device
US5873045A (en) * 1997-10-29 1999-02-16 International Business Machines Corporation Mobile client computer with radio frequency transceiver
FR2770659A1 (fr) * 1997-10-31 1999-05-07 Sgs Thomson Microelectronics Processeur de traitement perfectionne
US6185418B1 (en) * 1997-11-07 2001-02-06 Lucent Technologies Inc. Adaptive digital radio communication system
US6046603A (en) * 1997-12-12 2000-04-04 Xilinx, Inc. Method and apparatus for controlling the partial reconfiguration of a field programmable gate array
DE69827589T2 (de) * 1997-12-17 2005-11-03 Elixent Ltd. Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen
JPH11184674A (ja) * 1997-12-24 1999-07-09 Fujitsu Ltd レジスタファイル
US6192070B1 (en) * 1998-01-02 2001-02-20 Mitsubishi Electric Research Laboratories, Inc. Universal modem for digital video, audio and data communications
US6039219A (en) * 1998-01-20 2000-03-21 Bach; Lanae E. Liquid dispensing system for a refrigerator
US6230307B1 (en) * 1998-01-26 2001-05-08 Xilinx, Inc. System and method for programming the hardware of field programmable gate arrays (FPGAs) and related reconfiguration resources as if they were software by creating hardware objects
US6366999B1 (en) * 1998-01-28 2002-04-02 Bops, Inc. Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
US6378072B1 (en) * 1998-02-03 2002-04-23 Compaq Computer Corporation Cryptographic system
US6076174A (en) * 1998-02-19 2000-06-13 United States Of America Scheduling framework for a heterogeneous computer network
US6360263B1 (en) * 1998-02-25 2002-03-19 International Business Machines Corporation Dynamic resource allocation for user management in multi-processor time shared computer systems
US6073132A (en) * 1998-03-27 2000-06-06 Lsi Logic Corporation Priority arbiter with shifting sequential priority scheme
US6202130B1 (en) * 1998-04-17 2001-03-13 Motorola, Inc. Data processing system for processing vector data and method therefor
US6223222B1 (en) * 1998-05-14 2001-04-24 3Com Corporation Method and system for providing quality-of-service in a data-over-cable system using configuration protocol messaging
US6175892B1 (en) * 1998-06-19 2001-01-16 Hitachi America. Ltd. Registers and methods for accessing registers for use in a single instruction multiple data system
US6356994B1 (en) * 1998-07-09 2002-03-12 Bops, Incorporated Methods and apparatus for instruction addressing in indirect VLIW processors
US6377983B1 (en) * 1998-08-31 2002-04-23 International Business Machines Corporation Method and system for converting expertise based on document usage
US6381735B1 (en) * 1998-10-02 2002-04-30 Microsoft Corporation Dynamic classification of sections of software
US6360259B1 (en) * 1998-10-09 2002-03-19 United Technologies Corporation Method for optimizing communication speed between processors
US6219780B1 (en) * 1998-10-27 2001-04-17 International Business Machines Corporation Circuit arrangement and method of dispatching instructions to multiple execution units
US6052600A (en) * 1998-11-23 2000-04-18 Motorola, Inc. Software programmable radio and method for configuring
US6563891B1 (en) * 1998-11-24 2003-05-13 Telefonaktiebolaget L M Ericsson (Publ) Automatic gain control for slotted mode operation
US6385751B1 (en) * 1998-12-30 2002-05-07 Texas Instruments Incorporated Programmable, reconfigurable DSP implementation of a Reed-Solomon encoder/decoder
US6510138B1 (en) * 1999-02-25 2003-01-21 Fairchild Semiconductor Corporation Network switch with head of line input buffer queue clearing
US6349394B1 (en) * 1999-03-31 2002-02-19 International Business Machines Corporation Performance monitoring in a NUMA computer
US6347346B1 (en) * 1999-06-30 2002-02-12 Chameleon Systems, Inc. Local memory unit system with global access for use on reconfigurable chips
KR100358427B1 (ko) * 1999-07-12 2002-10-25 한국전자통신연구원 씨디엠에이 적응배열안테나 시스템을 위한 효율적 구조의 복조기
US6359248B1 (en) * 1999-08-02 2002-03-19 Xilinx, Inc. Method for marking packaged integrated circuits
US6507947B1 (en) * 1999-08-20 2003-01-14 Hewlett-Packard Company Programmatic synthesis of processor element arrays
US6967999B2 (en) * 1999-12-30 2005-11-22 Infineon Technologies Ag Method and apparatus to support multi standard, multi service base-stations for wireless voice and data networks
US6538470B1 (en) * 2000-09-18 2003-03-25 Altera Corporation Devices and methods with programmable logic and digital signal processing regions

Also Published As

Publication number Publication date
WO2002097562A2 (en) 2002-12-05
US20020184291A1 (en) 2002-12-05
TW569135B (en) 2004-01-01
JP2005510778A (ja) 2005-04-21
EP1402348A2 (en) 2004-03-31
WO2002097562A3 (en) 2003-09-18
AU2002308750A1 (en) 2002-12-09

Similar Documents

Publication Publication Date Title
KR20040012878A (ko) 적용 컴퓨팅 엔진에서 스케줄링하기 위한 방법 및 시스템
Markovskiy et al. Analysis of quasi-static scheduling techniques in a virtualized reconfigurable machine
US20030023830A1 (en) Method and system for encoding instructions for a VLIW that reduces instruction memory requirements
KR20190044551A (ko) 멀티-스레드 프로세서에서의 태스크 스케줄링
EP0624842A2 (en) Method for automated deployment of a software program onto a multi-processor architecture
US11620510B2 (en) Platform for concurrent execution of GPU operations
Nollet et al. Run-time management of a mpsoc containing fpga fabric tiles
Ghribi et al. R-codesign: Codesign methodology for real-time reconfigurable embedded systems under energy constraints
Rakhmatov et al. Hardware-software bipartitioning for dynamically reconfigurable systems
Kelter et al. WCET-aware scheduling optimizations for multi-core real-time systems
CN115380272A (zh) 在单个网格上并发处理多个图的粗粒度可重构阵列处理器
JP2007172569A (ja) 演算処理装置、演算処理装置の内部構成決定方法および演算処理システム
Deniziak et al. Hardware/software co-synthesis of distributed embedded systems using genetic programming
Harkin et al. Modeling and optimizing run-time reconfiguration using evolutionary computation
Chen et al. An integrated system for rapid prototyping of high performance algorithm specific data paths
Mack et al. GNU Radio and CEDR: Runtime Scheduling to Heterogeneous Accelerators
Pandey et al. Combined temporal partitioning and scheduling for reconfigurable architectures
Lee et al. Partitioning and scheduling for parallel image processing operations
Tavarageri et al. Automatic Model Parallelism for Deep Neural Networks with Compiler and Hardware Support
Bauer et al. Run-time adaptation for reconfigurable embedded processors
DB et al. HDL Programming and Sequential Circuitry for Multi-Core RISC-V Processor
Majd et al. Optimizing scheduling for heterogeneous computing systems using combinatorial meta-heuristic solution
André et al. Dynamic adaptation of the master-worker paradigm
Bobda High-Level Synthesis For Reconfigurable Devices
Santambrogio et al. Task graph scheduling for reconfigurable architectures driven by reconfigurations hiding and resources reuse

Legal Events

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