KR20070097051A - 동적으로 재구성 가능한 프로세서 - Google Patents

동적으로 재구성 가능한 프로세서 Download PDF

Info

Publication number
KR20070097051A
KR20070097051A KR1020077014815A KR20077014815A KR20070097051A KR 20070097051 A KR20070097051 A KR 20070097051A KR 1020077014815 A KR1020077014815 A KR 1020077014815A KR 20077014815 A KR20077014815 A KR 20077014815A KR 20070097051 A KR20070097051 A KR 20070097051A
Authority
KR
South Korea
Prior art keywords
instructions
logic circuit
reconfigurable
instruction
processor
Prior art date
Application number
KR1020077014815A
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
Priority claimed from US11/267,026 external-priority patent/US20060242385A1/en
Priority claimed from JP2005338457A external-priority patent/JP4390211B2/ja
Application filed by 동경 엘렉트론 주식회사, 자이단호진 규슈시스테무죠호기쥬츠겐큐죠, 고쿠리쓰다이가쿠호진 규슈다이가쿠, 자이단호진 후쿠오카켄 산교·가가쿠기쥬츠신코자이단 filed Critical 동경 엘렉트론 주식회사
Publication of KR20070097051A publication Critical patent/KR20070097051A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components

Landscapes

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

Abstract

고-레벨 언어로 기술된 애플리케이션 프로그램으로부터 애플리케이션 프로그램을 실행하기 위하여 프로세서의 명령어 세트 아키텍쳐(이하, 'ISA'로서 칭함)와 일련의 논리 회로 구성 정보를 생성하는 기술이 개시된다. 본 발명은 또한, 생성된 ISA 및 논리 회로 구성 정보를 동적 논리 회로 재구성 가능한 프로세서에 적용함으로써 애플리케이션 특정 주문형 LSI를 단 시간에 설계, 개발 및 제조할 수 있는 주문형 LSI 개발 플랫폼 기술에 관한 것이다. 또한, 생성된 논리 회로 구성 정보를 사용하여 재구성 가능한 동적으로 재구성 가능한 프로세서가 개시된다. 연관된 방법들 또한 개시된다.

Description

동적으로 재구성 가능한 프로세서{DYNAMICALLY RECONFIGURABLE PROCESSOR}
여기에 개시된 실시예들은 논리 회로 개발에 관한 것으로, 보다 자세하게는 애플리케이션 특정 주문형(application specific custom) LSI을 설계하고, 개발하고 제조하기 위한 기술에 관한 것이다.
주문형 반도체(application specific integrated circuit, ASIC)를 포함하는 주문형 LSI를 사용하는 분야에서, 사양을 변화시키거나 제품을 개발하는 기간을 단축시키기 위하여, 프로세서에서 논리 회로들의 구성을 자유롭게 변경시킬 수 있는, FPGA(field programmable gate array) 또는 PLD(programmable logic device)와 같은 프로그램 가능한 논리 회로가 널리 사용되어 왔다. 그러나, 주문형 LSI용으로 요구되는 논리 회로들의 구성이 복잡해지고 그 크기가 증가함에 따라, 복수의 산술 논리 장치(ALU)들이 FPGA 또는 PLD에 제공되어야 한다는 문제가 있다.
큰 크기를 갖는 논리 회로에서, 구성 요소들 모두가 항상 동작하지 않는다는 것을 고려하여, 프로세스의 논리 회로를 동적으로 재구성할 수 있는 동적 논리 회로 재구성 가능한 프로세스가 일본 특허 출원 JP-A 제2003-198362호 및 JP-A 제2003-029969호에 제시되었다.
주문형 LSI의 시스템을 설계하고 개발할 때, 하드웨어에 의하여 어떠한 애플 리케이션이 구현되고, 소프트웨어에 의하여 어떠한 애플리케이션이 구현되는 지가 결정되어야 한다. 하드웨어에 의하여 모든 애플리케이션들이 구현될 수 있으면, 고속 동작 및 저소비 전력이 실현될 수 있다.
그러나, 칩 제조, 설계 기간, 및 하드웨어 설계자에 관련된 것과 같이, 설계 및 개발 비용이 증가한다. 반대로, 범용 프로세서에서 동작하는 소프트웨어가 모든 애플리케이션들을 구현하면, 요구되는 시스템 성능을 달성하기는 어려우나, 설계 및 개발 비용이 감소된다. 소프트웨어 개발자가 주문형 LSI를 개발할 때의 하나의 문제점은, 개발자가 일반적으로, 주문형 LSI의 사양을 기술할 때, 'Verilog-HDL' 또는 'VHDL'과 같은, 소프트웨어 개발자에게 통상적으로 익숙하지 않은 하드웨어 기술 언어(HDL)를 사용해야 한다는 점이다. 이 HDL의 코드를 준비하는 데 일반적으로 많은 시간이 요구되며, 이것은 이 코드가 상당량의 기술(description)을 갖기 때문이다. 또한, 이 코드에 대한 컴파일 또는 시뮬레이션을 수행하는 데 종종 긴 시간이 소요된다.
C 언어와 같은, 고레벨 언어 또는 고 추상화(abstraction)을 갖는 모델링 툴이 LSI에 적용되는 알고리즘을 시험하는 데 주로 사용된다. 그러나, 논리 회로가 고레벨 언어로 생성된 알고리즘을 사용하여 준비되면, 시험된 알고리즘은 HDL에 재기입되어야 하여, 준비 시간이 증가한다. 또한, 논리 회로 구성이 HDL로 생성되면, 알고리즘을 변경하기가 어렵다는 잠재적인 문제점이 있다. 또 다른 문제점은, 소프트웨어 개발자는 일반적으로 동작 합성 단계에서 하드웨어의 특정 제한을 고려해야 한다는 점이다.
고레벨 언어로 기술된 애플리케이션 프로그램으로부터 애플리케이션 프로그램을 실행하기 위하여 프로세서의 명령어 세트 아키텍쳐(instruction set architecture)(이하, 'ISA'로 칭함) 및 일련의 논리 회로 구성 정보를 생성하는 기술이 개시된다. 본 발명은 또한, 생성된 ISA 및 논리 회로 구성 정보를 동적 논리 회로 재구성 가능한 프로세서에 적용함으로써, 애플리케이션 특정 주문형 LSI을 단 시간에 설계, 개발 및 제조할 수 있는 주문형 LSI 개발 플랫폼 기술에 관한 것이다. 또한, 생성된 논리 회로 구성 정보를 이용하여 재구성 가능한 동적으로 재구성 가능한 프로세서가 개시된다.
본 발명의 목적은, 소프트웨어 개발자가, 예컨대 C 언어와 같은 고레벨 언어의 애플리케이션 프로그램을 준비할 때, 명령어 세트 아키텍쳐(ISA) 및 논리 회로 구성 정보가, 생성된 애플리케이션 프로그램에 기초하여 자동으로 생성되는 것인 주문형 LSI 개발 플랫폼을 제공하는 것이다. 이후, 생성된 ISA 및 논리 회로 구성 정보는 동적으로 재구성 가능한 논리 회로 프로세서에 자동으로 적용된다. 본 발명의 다른 목적은, 고레벨 언어로 생성된 애플리케이션 프로그램으로부터 ISA 및 논리 회로 구성 정보를 생성하기 위한 소프트웨어 모듈, 및 이 생성된 ISA 및 논리 회로 구성 정보가 자동으로 적용되는 동적 논리 회로 재구성 가능한 프로세서를 제공하는 것이다. 본 발명의 또다른 목적은, 고레벨 언어로 생성된 애플리케이션 프로그램으로부터 ISA 및 논리 회로 구성 정보를 생성하기 위한 프로그램을 제공하는 것이다.
본 발명의 제1 태양에 따르면, 프로세서 및 소프트웨어 모듈을 포함하는 주문형 LSI 개발 플랫폼이 제공된다. 본 프로세서는 동적 논리 회로 재구성 가능한 프로세서이다. 본 소프트웨어 모듈은, 프로세서의 ISA를 생성하기 위한 ISA 생성기, 및 프로세서의 논리 회로들과 ISA를 구성하는 프로그램 가능한 소자(PE)의 레이아웃 배열 정보로부터 프로세서의 논리 회로 구성 정보를 생성하기 위한 논리 회로 구성 생성기를 포함한다. 본 ISA 생성기는, 고레벨 언어로 기술된 프로그램의 명령어의 패턴을 추출하기 위한 수단, 및 이 추출된 명령어의 패턴을, 라이브러리에 기억된 주문형 명령어의 패턴과 비교하기 위한 수단을 포함한다. 또한, 본 ISA 생성기는 이 추출된 명령어를, 주문형 명령어 및/또는 주문형 명령어들의 조합으로 대체하기 위한 수단을 포함한다. 본 ISA 생성기는, 이 추출된 주문형 명령어를 호출하기 위한 수단인 펑션 콜(function call), 및 프로세서의 제어 명령어를 포함하는 중간 코드(middle code)를 생성하기 위한 수단을 더 포함한다.
본 소프트웨어 모듈은 중간 코드 및 주문형 명령어를 오브젝트 코드로 변환시키기 위한 수단을 포함한다. 본 소프트웨어 모듈은, 논리 회로 구성 정보로부터 논리 회로 구성 오브젝트 코드를 생성하기 위한 수단, 및 ISA의 성능을 시뮬레이션하기 위한 시뮬레이터를 더 포함한다. 이러한 실시예들에서, 본 소프트웨어 모듈은 추출된 명령어를 주문형 명령어로 대체하기 위한 프로세스 동안 주문형 명령어로 대체되지 않은 명령어를 새로운 주문형 명령어로서 생성하기 위한 크리에이터(creator)를 더 포함한다. 본 프로세서는, 동적 재구성 가능한 논리 회로, 주문형 명령어의 논리 회로 구성 정보를 기억하기 위한 구성 메모리, 및 추출된 주문형 명령어를 기억하기 위한 메모리를 포함한다. 또한, 본 프로세서는, 추출된 주문형 명령어의 실행 결과를 일시적으로 유지하기 위한 레지스터 파일, 및 구성 메모리로부터 주문형 명령어에 대응하는 논리 회로 구성 정보를 판독하고, 주문형 명령어를 실행할 때 동적 재구성 가능한 논리 회로를 재구성하기 위한 제어기를 포함할 수 있다. 또한, 본 제어기는, 메모리에 액세스할 때 인덱스를 기억하기 위한 인덱스 레지스터를 더 포함할 수 있고, 본 프로세서는 인덱스 레지스터의 값을 기억하기 위한 스택을 더 포함할 수 있다.
본 발명의 제2 태양에 따르면, 고레벨 언어로 기술된 프로그램의 명령어의 패턴을 추출하는 단계, 추출된 명령어의 패턴을 라이브러리에 기억된 주문형 명령어의 패턴과 비교하는 단계, 및 ISA를 생성하기 위하여 추출된 명령어를 주문형 명령어 및/또는 주문형 명령어들의 조합으로 대체하는 단계를 포함하는, 프로세서의 ISA를 생성하는 방법이 제공된다. 일부 실시예들에서, 주문형 명령어로 대체된 논리 소자 접속 정보가 추출되고, 이 논리 소자 접속 정보를 포함하도록 ISA가 생성된다. 또한, 본 논리 소자 접속 정보는 주문형 명령어와 연관되도록 라이브러리에 기억될 수도 있다. 프로그램 명령어를 주문형 명령어 및/또는 주문형 명령어들의 조합으로 대체하기 위한 프로세스에서 프로그램 명령어들 중에서 주문형 명령어로 대체되지 않은 명령어가 새로운 주문형 명령어로서 생성되어, 이 새로운 주문형 명령어가 주문형 명령어를 다시 추출하기 위하여 라이브러리에 부가된다.
본 발명의 제3 태양에 따르면, 고레벨 언어로 기술된 프로그램의 명령어의 패턴을 추출하는 단계, 추출된 명령어의 패턴을 주문형 명령어의 패턴과 비교하는 단계, 및 추출된 명령어를 주문형 명령어 및/또는 주문형 명령어들의 조합으로 대체하는 단계를 포함하는, 프로세서의 논리 회로 구성 정보를 생성하는 방법을 제공한다. 본 실시예에서, 본 방법은 또한, 주문형 명령어와 연관된 논리 소자 접속 정보와, 프로세서의 프로그램 가능한 소자의 레이아웃 배열 정보로부터 논리 회로 구성 정보를 생성하는 단계를 포함한다. 이러한 실시예들에서, 논리 소자 접속 정보는 라이브러리에 기억될 수도 있고, 프로세서는 동적 논리 회로 재구성 가능한 프로세서일 수도 있다.
본 발명의 제4 태양에 따르면, 복수의 프로그램 명령어들을 수신하도록 동작 가능한 프로그램 스택을 포함하는 동적으로 재구성 가능한 마이크로프로세서가 제공되며, 상기 프로그램 명령어들은 적어도 제1 및 제2 명령어 세트들을 포함한다. 또한, 본 프로세서는 프로그램 스택과 전기적 통신하는 재구성 가능한 논리 회로를 포함하고, 상기 재구성 가능한 논리 회로는 선택적인 제1 및 제2 데이터 경로들을 가져, 제1 명령어 세트에 따라 동작될 데이터가 제1 데이터 경로를 통과하고, 제2 명령어 세트에 따라 동작될 데이터가 제2 데이터 경로를 통과한다. 프로세서의 이러한 실시예에서, 재구성 가능한 논리 회로는, 제1 또는 제2 명령어 세트에 대응하는 명령어들이 마이크로프로세서에 의하여 실행되고 있는 지의 여부에 따라 재구성 가능하다.
제5 태양에 따르면, 프로세싱 회로를 동적으로 재구성하는 방법이 개시된다. 일 실시예에서, 본 방법은 프로세싱 회로에 의하여 실행될 복수의 프로그램 명령어들을 수신하는 단계를 포함하며, 상기 프로그램 명령어들은 적어도 제1 및 제2 명령어 세트들을 포함한다. 본 방법은, 제1 명령어 세트에 따라 데이터에 대해 동작할 때 제1 데이터 경로에서 재구성 가능한 논리 회로를 구성하는 단계, 및 제2 명령어 세트에 따라 데이터에 대해 동작할 때 제2 데이터 경로에서 재구성 가능한 논리 회로를 구성하는 단계를 더 포함한다.
본 발명의 제6 태양에 따르면, 동적 논리 회로 재구성 가능한 프로세서가 제공된다. 본 프로세서는, 동적 재구성 가능한 논리 회로, 동적 재구성 가능한 논리 회로를 구성하는 프로그램 가능한 소자(PE)의 각 명령어에 대하여 레이아웃 배열 정보를 기억하기 위한 구성 메모리, 명령어의 중간 실행 결과를 일시적으로 유지하기 위한 레지스터 파일, 명령어를 기억하기 위한 메모리, 및 명령어의 실행 순서를 포함하는 프로세서를 관리하기 위한 제어기를 포함할 수도 있다. 본 제어기는, 메모리를 액세스할 때 인덱스를 기억하기 위한 인덱스 레지스터를 더 포함하고, 본 프로세서는 인덱스 레지스터의 값을 기억하기 위한 스택을 더 포함한다.
본 발명의 제7 태양에 따르면, 동적 논리 회로 재구성 가능한 프로세서의 명령어 세트 아키텍쳐를 생성하기 위하여 컴퓨터에서 실행될 명령어들의 세트를 포함하는 컴퓨터-판독가능한 매체가 제공된다. 본 명령어들의 세트는, 고레벨 언어로 기술된 프로세서의 애플리케이션 프로그램에서의 명령어로부터 명령어의 패턴을 추출하는 단계, 추출된 명령어 패턴을 라이브러리에 기억된 하나 이상의 주문형 명령어들의 패턴들과 비교하는 단계, 및 명령어 세트 아키텍쳐를 생성하기 위하여 프로그램에서의 이 명령어를 하나 이상의 주문형 명령어로 대체하는 단계를 제공한다. 제8 태양에서, 명령어들은 명령어 세트에 포함된 하나 이상의 주문형 명령어들과 연관된 논리 소자 접속 정보로부터 그리고 프로세서의 적어도 하나의 프로그램 가능한 소자의 레이아웃 배열 정보로부터 논리 회로 구성 정보를 생성하는 단계를 더 포함한다.
본 개시, 및 여기서의 본 시스템들 및 본 방법들의 이점들을 보다 완전히 이해하기 위하여, 첨부된 도면들과 함께 다음의 상세한 설명을 참고한다.
도 1은 본 발명에 따른 주문형 LSI 개발 플랫폼의 일 실시예의 전체 구조를 도시하는 블록도이다.
도 2는 소프트웨어 모듈의 일 실시예의 상세 블록도이다.
도 3은 ISA 생성기의 일 실시예의 상세 블록도이다.
도 4는 본 발명에 따른 동적 논리 회로 재구성 가능한 프로세서의 일 실시예의 블록도이다.
도 5는 본 발명에 따른 동적 논리 회로 프로세서의 일 실시예의 기능 블록도이다.
도 6은 명령어 포맷의 구조를 도시하는 도면이다.
도 7은 본 발명의 실시예에 따른 재구성 가능한 데이터 경로의 구조를 도시하는 도면이다.
도 8은 개시된 원리에 따라 수행된 AES 암호화 프로세스의 흐름을 도시하는 도면이다.
도 9는 AES 암호화 프로세스의 중간 코드의 예시적인 설명이다.
도 10은 AES 암호화 프로세스의 중간 코드의 다른 예시적인 설명이다.
도 11은 개시된 원리에 따라 수행된 DES 암호화 프로세스의 흐름도이다.
고레벨 언어로 기술된 애플리케이션 프로그램으로부터 애플리케이션 프로그램을 실행하기 위하여 프로세서의 명령어 세트 아키텍쳐(이하, 'ISA'로 칭함) 및 일련의 논리 회로 구성 정보를 생성하는 기술이 개시된다. 또한, 본 발명은 생성된 ISA 및 논리 회로 구성 정보를 동적 논리 회로 재구성 가능한 프로세서에 적용함으로써, 애플리케이션 특정 주문형 LSI을 단 시간에 설계, 개발 및 제조할 수 있는 주문형 LSI 개발 플랫폼 기술에 관한 것이다. 개시된 원리에 따르면, 소프트웨어 개발자는 하드웨어 특성을 고려하지 않고 애플리케이션을 개발하기 위하여 개시된 기술을 채용할 수 있다. 그 결과, 이 개발에 요구되는 전체 실행 사이클 수가 감소될 수 있어, 애플리케이션 특정 주문형 LSI가 단 시간에 개발될 수 있다. 또한, 주문형 LSI를 개발하기 위한 특성의 보편성(commonness)(플랫폼)이 가능하여, 설계 및 개발 특성이 표준화될 수 있다.
개시된 기술을 상세히 설명하기 전에, 본 개시 전체에 사용되는 일부 용어들이 우선 정의되어야 한다. 본 개시에서, "동적 논리 회로 재구성 가능한 프로세서(dynamic logic circuit reconfigurable processor)"는, 명령어에 따라 프로세서에서 논리 회로를 동적으로 재구성하고 프로세싱하는 기능을 갖는 프로세서이다. "주문형 LSI(custom LSI)"는, 필요에 따라 설계되고 제조되는 주문형 반도체(ASIC)를 포함하는 LSI이다. "주문형 명령어(custom instruction)"는, 프로세스에 의하 여 수행되고 사용자에 의하여 정의되는 명령어이다. "명령어 세트(instuction set)"는 프로세서에 포함된 일련의 명령어 코드들이다. "명령어 세트 아키텍쳐(instruction set architecture)"(ISA)는 프로세서의 논리 회로 구성 정보를 생성하기 위하여 요구되는 논리 소자 접속 정보와 명령어 세트로 구성된다. "논리 소자 접속 정보(logic element connection information)"는, 예컨대 AND 회로, OR 회로, 및 XOR 회로를 이 순서로 정의하는 정보이다. 따라서, 동적 논리 회로 재구성 가능한 프로세서의 논리 회로에는, AND 회로, OR 회로, 또는 XOR 회로가 어디에 위치되는 지, 또는 어떤 배선 라인들이 AND 회로, OR 회로, 및 XOR 회로를 서로 접속시키는 지에 관한 정보가 포함되지 않는다. "주문형 논리 회로(custom logic circuit)"는 주문형 명령어를 구현하기 위한 논리 회로이고, 성능때문에 범용 프로세서에서 구현될 수 없는 회로 또는 평션이다. "플랫폼(platform)"은 상이한 주문형 논리 회로를 구현하기 위하여 사용될 수 있는 공통의 하드웨어 및 소프트웨어로 구성된 시스템이다. "데이터 경로(data path)"는 주문형 명령어를 실행하기 위한 프로세서의 논리 회로이다. "프로그램 가능한 소자(programmable element)"는, AND 회로, OR 회로, XOR 회로, 또는 ALU 회로와 같은 논리 회로를 구성하기 위한 소자이다.
이들 정의를 염두하여, 본 발명에 따른 주문형 LSI 개발 플랫폼(1)의 일 실시예의 전체 구조를 도시하는 블록도를 도시하는 도 1을 참조한다. 주문형 LSI 개발 플랫폼(1)은 동적 논리 회로 재구성 가능한 프로세서(20) 및 소프트웨어 모듈(10)을 포함한다. 소프트웨어 모듈(10)은, 각 주문형 명령어에 대하여 동적 논 리 회로 재구성 가능한 프로세서(20)에서의 ISA 및 동적 논리 회로 재구성 가능한 프로세서(20)에서의 재구성 가능한 논리 회로(24)(재구성 가능한 데이터 경로)를 동적으로 변경하기 위한 논리 회로 구성 정보를 생성하기 위한 일련의 소프트웨어로 구성된다.
소프트웨어 개발자가 C 언어로 된 소스 프로그램(100)을 기술하면, ISA 생성기(110)는 중간 코드(111)와 ISA(112)를 생성하고 컴파일링하여 프로그램 오브젝트 코드(141)와 논리 회로 구성 오브젝트 코드(142)를 생성한다. 동적 논리 회로 재구성 가능한 프로세서(20)는, 프로그램 오브젝트 코드(141)와 논리 회로 구성 오브젝트 코드(142)에 기초하여 각 주문형 명령어에 대하여 재구성 가능한 논리 회로(24)를 변경하면서, 입력 데이터(27)의 동작을 프로세싱하여, 최종 결과로서 데이터(28)를 출력한다.
도 2는 도 1에 도시된 소프트웨어 모듈(10)의 상세 블록도이다. C 소스 프로그램(100)이 적용되면, ISA 생성기(110)는 이 C 소스 프로그램(100)의 명령어 구조를 개시하고 분석한다. 또한, 주문형 명령어 라이브러리(160)에는, 이전에 정의된 복수의 주문형 명령어들이 기억된다. ISA 생성기(110)는, C 소스 프로그램(100)에서 사용 중이거나 반복적으로 사용되는 명령어의 패턴을 추출하고, 이 패턴을 라이브러리(160)에서의 주문형 명령어의 패턴과 비교하고, 이 C 소스 프로그램(100)에서의 명령어를 주문형 명령어로 대체하여, 중간 코드(111)와 ISA(112)를 생성한다.
중간 코드(111)는 주문형 명령어의 펑션 콜(function call)과 제어 명령어로 구성되며, ISA(112)는 주문형 명령어와 논리 소자 접속 정보로 구성된다. 중간 코드(111)는 컴파일러(120)에 의하여 어셈블러 코드(121)로 컴파일링된 후, 프로그램 오브젝트 코드(141)가 된다. 또한, 컴파일러(120)는 중간 코드(111)와, 예컨대 곱셈이 'x'로서 정의된 주문형 명령어인 ISA(112)의 주문형 명령어를 어셈블러 코드(121)로 컴파일링한다. ISA(112)의 주문형 명령어는 컴파일러(120)에 의하여 중간 코드(111)와 함께 어셈블러 코드(121)로 변환된 후, 어셈블러(140)에 의하여 프로그램 오브젝트 코드(141)가 된다.
논리 회로 구성 생성기(130)는 ISA(112)의 논리 소자 접속 정보로부터 논리 회로 구성 정보(1311)와, 재구성 가능한 논리 회로(24)의 프로그램 가능한 소자(PE)의 레이아웃 배열 정보(1310)를 생성한다. 다음, 이 논리 회로 구성 생성기는 이것을 어셈블러(140)에 의하여 논리 회로 구성 오브젝트 코드(142)로 변환시킨다. 소프트웨어 모듈은 ISA(112)의 성능, 구체적으로 프로그램 오브젝트 코드(141)와 논리 회로 구성 오브젝트 코드(142)를 시뮬레이션하기 위한 시뮬레이터(170)를 더 포함한다.
도 3은 ISA 생성기(110)의 상세 블록도이다. 도 3에 도시된 바와 같이, 패터닝 모듈(1110)은 라이브러리(160)를 참조하여 C 소스 프로그램(100)에서 사용 중이거나 반복적으로 사용되는 명령어를 추출하고, 이 추출된 명령어의 패턴을, 라이브러리(160)에 기억된 주문형 명령어의 패턴과 비교하고, 주문형 명령어(1140)로 상기 명령어를 대체한다. 패터닝 모듈(1110)에 의하여 주문형 명령어로서 추출되지 않았던(주문형 명령어로서 이전에 생성되지 않았던) 다양한 명령어들은 크리에 이터(150)에 의하여 새롭게 정의되고 생성되거나, 이 다양한 명령어들이 현재의 주문형 명령어에 합성될 수 있으면, 현재의 주문형 명령어에 합성되어 새로운 주문형 명령어들(1160)로서 정의된다. 라이브러리(160)의 주문형 명령어들은 주문형 명령어(1160)의 추가 및 합성에 의하여 항상 업데이트된다.
패터닝 모듈(1110)은, 전체 C 소스 프로그램(100)이 실행될 수 있을 때까지 C 소스 프로그램(100)의 명령어를 주문형 명령어로 대체한다. 이 패터닝 모듈은 커버링된(covered) 명령어들(1120) 및 넌-커버링된(non-covered) 명령어들(1130)을 포함한다. 또한, 패터닝 모듈(1110)은, 논리 소자 접속 정보(주문형 명령어와 연관되고 라이브러리(160)에 기억된)와 PE의 레이아웃 배열 정보(1150)를 참조하여, 각 주문형 명령어에 대하여 재구성 가능한 논리 회로(24)의 논리 회로 구성 정보를 생성한다. 따라서, ISA 생성기(110)는 ISA(112)와 중간 코드(111)를 생성한다(1170).
도 4는 본 발명의 실시예에 따른 동적 논리 회로 재구성 가능한 프로세서(20)를 도시하는 블록도이다. 동적 논리 회로 재구성 가능한 프로세서(20)는 재구성 가능한 데이터 경로(재구성 가능한 논리 회로)(24)를 포함하고, 순차적 제어에 의하여 프로그램들을 실행한다. 동적 논리 회로 재구성 가능한 프로세서(20)는, 각 단계에 대하여 논리 회로 구성을 재설정하면서, C 소스 프로그램(100)의 프로세스 컨텐트를 실행한다. 또한, 이 단계는, 논리 회로 구성의 설정 및 동작 실행을 포함하여, 하나의 명령어를 실행하기 위하여 요구되는 기간이다. 또한, 논리 회로 구성 정보는 주문형 명령어를 실행하기 위한 재구성 가능한 논리 회로의 구성 정보이다.
동적 논리 회로 재구성 가능한 프로세서(20)는 제어기(21), 스택(22), 구성 메모리(23), 재구성 가능한 데이터 경로(24), 레지스터 파일(25), 및 메모리(26)를 포함한다. 제어기(21)는 구성 데이터의 로드 및 메모리(26)에서의 데이터의 로드와 같은, 동적 논리 회로 재구성 가능한 프로세서(20)의 전체 관리를 수행한다. 제어기(21)는 내부에 형성된 7개의 22-비트 인덱스 레지스터(211)들을 포함하고, 인덱스 레지스터(211)의 값을 사용하여 메모리(26)를 액세스할 수 있다. 또한, 제어기(21)는 인덱스 레지스터(211)의 값을 기억하기 위한 스택(22)에 접속된다. 메모리(26)는 동적 논리 회로 재구성 가능한 프로세서(20)의 명령어를 기억하기 위한 기억 장치이다.
도 5는 도 4에 도시된 동적 논리 회로 프로세서(20)의 기능 블록도를 도시한다. 본 기능 블록도는 개시된 원리에 따라, 고레벨 언어의 소스 프로그램으로부터 논리 회로를 동적으로 재구성하는 것을 도시한다. 상술된 바와 같이, ISA 생성기는 고레벨 소스 프로그램(100)의 명령어 구조를 분석한다. ISA 생성기는, C 소스 프로그램(100)에서 사용 중이거나 반복적으로 사용되는 명령어의 패턴을 추출하고, 이 패턴을 라이브러리에서의 주문형 명령어의 패턴과 비교한다. 다음, ISA 생성기는 소스 프로그램(100)에서의 명령어를 주문형 명령어로 대체하고, 중간 코드(상기 참조)와 ISA(112)를 생성한다.
ISA(112)는 주문형 명령어(들)과 논리 소자 접속 정보로 구성된다. 논리 회로 구성 정보는 ISA(112)의 논리 소자 접속 정보와 재구성 가능한 논리 회로(24)의 PE들의 레이아웃 배열 정보로부터 생성된다. 다음, 논리 회로 구성 정보는 논리 회로 구성 오브젝트 코드(142)로 변환된다. 이것은 상술된 바와 같은 어셈블러(140)와 같은 어셈블러에 의하여 통상적으로 행해진다. 일 실시예에 따르면, 다수 세트들의 논리 회로 구성 정보 오브젝트 코드(142)가 생성될 수 있다. 도 5에서, 이러한 오브젝트 코드들의 예들은 142a, 142b, 142c로 표시되나, 생성될 수도 있는 다양한 오브젝트 코드들 수에 제한은 없으며, 예시적인 실시예들에서는 가장 적합한 명령어 세트가 사용된다. 오브젝트 코드(142a, 142b, 142c)의 각 세트는 동적 재구성 가능한 논리 회로(24)에서의 대응하는 구성을 위하여 제공된다. 이들 대응하는 구성들은 각각 24a, 24b, 24c로 표시되며, 논리 회로(24)를 포함하는 프로그램 가능한 논리 소자들에 구별되는 구성을 나타낸다. 희망하는 논리 회로(24) 구성이 생성되면, 본 실시예에서는 64비트 레지스터들이 사용되어 선택된 구성을 갖는 희망하는 코드를 실행한다.
여기서 개시된 동적 재구성 가능한 논리 회로 프로세서(20)는 복수의 전용 프로세싱 유닛들에 의하여 통상적으로 제공되는 프로세싱 동작을 제공하도록 재구성 가능하다. 예컨대, 제1 지점에서 프로세서(20)는 컴퓨터의 중앙 처리 장치로서 기능하도록 구성될 수도 있고, 때 맞추어(in time) 제2 지점에서 이것은 애플리케이션 특정 프로세서로서 동작하도록 구성되며, 다음, 때 맞추어 제3 지점에서 이것은 디지털 신호 프로세서로서 동작하도록 구성된다. 단일 프로세서(20)를 이용하여 여기서 개시된 바와 같은 다중 프로세성 기능을 제공함으로써, 본 개시된 원리는 전체적인 장치의 크기 및 공간을 감소시킨다. 또한, 제조 비용을 증가시키지 않고 프로세싱 성능의 유연성(flexibility)이 증가된다. 구체적으로, 프로세서(20) 내의 논리 소자들은 실행될 특정 애플리케이션으로 매핑된다. 그 결과, 각 개별 애플리케이션이 각 애플리케이션에 대하여 재구성되는 하드웨어에 의하여 실행되기 때문에, 각 애플리케이션은 본 개시된 기술로 보다 효율적으로 실행된다. 또한, 이러한 프로세서(20)의 재구성은 프로세싱될 애플리케이션 코드들로부터 자동으로 달성된다.
도 6은 메모리(26)에 의하여 기억되는 명령어 포맷의 구조를 도시한다. 도 6에서, 'Exe-Non' 섹션에서, 명령어가 재구성 가능한 데이터 경로(24)를 이용한 동작에 의하여 실행되는 지, 또는 재구성 가능한 데이터 경로(24)를 사용하지 않고 인덱스 레지스터(211)의 값의 조작에 의해서만 실행되는 지의 여부가 판단된다. 명령어가 재구성 가능한 데이터 경로(24)를 갖는 동작에 의하여 실행되면, 적절한 구성 데이터가 기억된 구성 메모리(23)의 어드레스와 이 동작을 위하여 사용되는 레지스터 파일(25)이 지정된다. 명령어가 인덱스 레지스터(211)의 값의 조작에 의하여 실행되면, 동작 컨텐트와 이 동작용으로 사용되는 인덱스 레지스터(211)가 지정된다. 메모리 어드레스가 'ImData' 섹션에서 지정되면, 메모리(26)와 인덱스 레지스터(211) 간의 데이터 교환이 실행될 수 있다.
'Flow-Code' 섹션에서, 프로그램의 실행 순서 제어가 지정될 수 있고, 분기(branch) 조건이 지정될 수 있으면, 프로세스는 재구성 가능한 데이터 경로(24)에서의 동작 결과를 사용하여 분기될 수 있다. 'Dt_Adr' 및 'Rel_Adr' 섹션은 관련된 어드레스를 지정하기 위하여 사용된다. 프로세스 컨텐트에 따라 재구성 가능 한 데이터 경로(24)에 의해 1, 2, 4 또는 8 클록 사이클로 프로세스를 실행할 때, 섹션 'Work_Rate'은 클록 사이클 번호를 지정하기 위하여 사용될 수 있다.
도 4를 다시 간략히 참조하면, 구성 메모리(23)는 구성 데이터를 기억하기 위한 메모리이다. 구성 메모리(23)는 주문형 명령어의 구성 데이터를 기억할 수 있다. 레지스터 파일(25)은 재구성 가능한 데이터 경로(24)의 각 PE에서의 동작 결과를 기억하고, 이 동작 결과를 상이한 펑션으로 전달하기 위한 레지스터이다. 하나의 워드는 256-비트 폭을 갖는다. 레지스터 파일(25)은 재구성 가능한 데이터 경로(24)의 PE에 접속되고, 기억된 레지스터 파일(25)의 비트 위치는 데이터를 출력하기 위하여 PE의 위치에 따라 결정된다.
도 7은 본 발명의 실시예에 따른 재구성 가능한 데이터 경로(24)의 구조를 도시한다. 재구성 가능한 데이터 경로(24)에서, PE들은 16 행 x 8 열로 배열된다. PE들은 6개의 입력부들과 2개의 출력부들을 갖고, 임의의 논리 평션(logic function)을 입력부에 할당할 수 있다. PE들은 수직선(VL) 및 수평선(HL)으로 서로 접속되어 있다. VL은 하나의 열의 각 PE들에 접속되고, 각 VL은 HL에 접속된다. 스위칭 유닛(SW)은 VL로부터 HL로 또는 HL로부터 VL로의 신호 교환을 제어한다. VL은 64-비트 폭이고 그 수는 8개이며, HL은 64-비트 폭이며 그 수는 7개이다. 또한, 64-비트 데이터가 한번에 메모리로부터 재구성 가능한 데이터 경로(24)에 로드될 수 있다.
동적 논리 회로 재구성 가능한 프로세서(20)에서, 제어기(21)는 메모리(26)로부터 프로그램을 판독하여, 명령어가 재구성 가능한 데이터 경로(24)를 사용하는 지, 또는 인덱스 레지스터(21)의 값만을 동작하는 지를 판정한다. 재구성 가능한 데이터 경로(24)를 사용하는 경우에, 제어기(21)는 프로그램에 지정된 구성 메모리(23)의 어드레스로부터 적절한 구성 데이터를 판독하고, 이 데이터를 재구성 가능한 데이터 경로(24)에 로딩한다. 재구성 가능한 데이터 경로(24)는, 구성(논리 회로 구성)이 확정되면, 입력 데이터의 프로세스를 수행한다. 각 PE에서 실행된 동작 결과는 VL에 출력될 수 있고, 레지스터 파일(25)에 기입될 수 있다. 중간 결과로서, 데이터는 분리되어 있는 펑션으로 전달될 수 있고, 사용될 수 있다. 레지스터 파일(25)을 사용함으로써, 큰 프로세스가 복수의 펑션들로 분리될 수 있고, 그 후 실행될 수 있다. 인덱스 레지스터(211)의 값을 사용하는 경우에, 동작 회로가 인덱스 레지스터(211)에 준비되므로, 본 프로그램에서 지정된 동작이 동작 회로에서 수행되고, 이 동작은 다음 명령어로 천이된다.
실시예 1:
본 발명의 실시예에 따른 소프트웨어 모듈(10)과 동적 논리 회로 재구성 가능한 프로세서(20)를 사용함으로써, AES(advanced encryption standard)의 암호화 주문형 LSI가 개발되었다. 이 AES는 DES(data encryption standard)를 대체하기 위한 표준 암호화법으로서 선택된다. ISA는 C 언어로 생성된 AES의 프로그램으로부터 생성되고, AES 암호화 프로세스는 동적 논리 회로 재구성 가능한 프로세서(20)에서 수행되어 성능 평가를 수행한다. AES에서, 평문(plain text)의 비트수 또는 키의 비트수가 선택될 수 있다. 그러나, 본 실시예에서, 이들 모두가 128 비트로서 설정되었다.
도 8은 AES 암호화 프로세스의 흐름을 도시한다. 우선, '스테이트(State)'라 칭하는 2차원 배열의 데이터-포맷 평문이 배열된다. 라운드 키가 생성되고(S1), 스테이트와 라운드 키의 배타적 OR이 수행된다(S2). 라운드 펑션이 미리 결정된 회수로 실행된다. 본 실시예에서, 라운드 펑션이 다음 조건에서 9회 실행되었다. 라운드 펑션은 다음 4개의 변환에 의하여 실행된다. 우선, 8-비트 입력과 8-비트 출력을 갖는 s-박스 변환 프로세스(바이트-서브)가 실행된다(S3). 다음, 행에 관하여 바이트 유닛의 주기적 시프트를 실행하기 위한 시프트-로우(Shift-Row)가 실행된다(S4). 다음, 각 열에 대한 매트릭스 동작인 믹스-칼럼(Mix-Column)이 실행된다(S5). 또한, 스테이트와 라운드 키의 배타적 OR(애드-라운드-키(Add-Round-Key))가 실행된다(S6). 단계 S3 내지 S6이 9회 반복하여 실행된다. 마지막으로, 바이트-서브(S7), 시프트-로우(S8), 및 애드-라운드-키(S9)가 실행되고, 암호화 텍스트(암호화된)가 획득된다(S10).
바이트-서브, 시프트-로우, 믹스-칼럼 및 애드-라운드-키의 4개의 변환 프로세스들은 암호화 프로세스의 핵심(core)이 된다. 4개의 변환 프로세스들이 실행될 때, 각 변환 프로세스를 구현하기 위한 주문형 명령어가 생성되었다. 본 실시예에서, 바이트-서브, 시프트-로우, 믹스-칼럼 및 애드-라운드-키는 각각 32비트, 128비트, 64비트 및 128비트들의 유닛들로 분리된다. 이러한 이유로, 데이터의 분리 및 조합에 대한 명령어가 부가되었다.
도 9 및 도 10은 바이트-서브, 시프트-로우, 믹스-칼럼, 및 애드-라운드-키를 포함하여, C 언어로 기술된 AES 암호화 프로세스의 중간 코드(111)의 예들이다. 도 9 및 도 10에 도시된 바와 같이, AES 암호화 프로세스의 주요 루틴은 '암호화(encrypt)' 펑션이다. 도 9의 중간 코드에서, 주문형 명령어의 헤드에 'vul-'이 첨가된다. 이로써, 전체 프로세스에서 309 사이클이 획득되고, 암호화 프로세스에서 79 사이클이 획득된다.
실시예 2:
DES는 미국 표준 기술 연구소(National Institute of Standards and Technology) 에서 표준화된 암호화 표준이다. 암호화 및 복호화시 동일한 키를 사용하는 공용 키 암호화로서 56-비트 키와 64-비트 평문을 입력함으로써, 64-비트 암호화 텍스트가 출력된다. DES 암호화 프로세스에서, 64-비트열이 우선 출력되어, 여기에 전치 테이블(transposed table)에 기초하여 초기 전치(transpose)가 행해진다. 전치된 비트열은 32 비트로 나누어진다. 나누어진 비트열들은 각각 키와 암호화 펑션 F에 의하여 암호화된다. 키는 입력 56-비트 키로부터 생성된 48-비트 라운드 키를 사용한다. 이 프로세스는 16회 수행되고, 생성된 좌측 및 우측 비트열들이 최종 전치를 수행하기 위하여 조합된다. 따라서, 암호화 텍스트로서 결과가 출력된다.
도 11은 DES 암호화 프로세스의 흐름도이다. 동적 논리 회로 재구성 가능한 프로세서(20)의 DES 암호화 프로세스에서, 6개의 주문형 명령어들이 요구되었다. 표 1은 DES 암호화 프로세스에서 사용된 주문형 명령어들과 그 내용을 나타낸다.
표 1
주문형 명령어 내용
0 키의 판독 및 키 생성 유닛의 전치
1 평문의 판독 및 초기 전치
2 키 생성 유닛을 1비트만큼 좌측 사이클 시프트
3 키 생성 유닛을 2비트만큼 좌측 사이클 시프트
4 키 생성 유닛의 감소 전치와 F 펑션, 및 배타적 OR
5 초기 전치의 역 및 출력
우선, 56-비트 키가 명령어 0에 의하여 메모리로부터 재구성 가능한 데이터 경로(24)로 입력되며, 그 전치가 동시에 실행된다. 유사하게, 명령어 1에 의하여 64-비트 평문이 입력되고, 그 초기 전치가 동시에 실행된다. 다음, 라운드 번호에 따라 명령어 2 또는 3에 의하여 키의 사이클 시프트가 실행된다. 명령어 4에서, 키의 감소 전치와 암호화 F 펑션이 하나의 명령어에 의하여 실행된다.
명령어들 간의 데이터 교환은 레지스터 파일(25)을 통하여 수행된다. 이 라운드는 16회 반복된다. 도 11에서, 조건적 분기 프로세스(conditional branch process)에 의하여 반복이 수행되나, 본 실시예에서는, 반복이 전개되고 순차적으로 수행된다. 이것은 설계된 회로 스케일을 감소시키며, 그 이유는, 라운드 번호를 결정하기 위한 리던던트 회로가 조건적 분기 프로세스를 실행하기 위하여 제조되어야 하기 때문이다. 마지막으로, 초기 전치의 역이 수행되고, 64-비트 사이퍼(cipher) 텍스트가 메모리에 출력된다.
표 2는, 동적 논리 회로 재구성 가능한 프로세서(20)에 의한 DES 암호화 프로세스를 수행할 때의 동작 주파수 및 처리량을 나타낸다. 본 실시예에서, DES 암호화 프로세스의 동작 주파수는 6.25 MHz였다. 비교를 위해서, Intel Pentium
Figure 112007047344991-PCT00001
4에 의한 DES 암호화 프로세스의 수행 결과는 표 2에 도시되어 있다.
표 2
동작 주파수 처리량
Vulcan 6.25 MHz 570 KB/sec
Pentium 4 2.4 GHz 150 KB/sec
Pentium
Figure 112007047344991-PCT00002
4의 DES 암호화 프로세스는 C 언어에 의하여 DES 암호화 프로세스의 사양의 기술을 컴파일함으로써 실행되었다. 컴파일 옵션에서, -O2 가 사용되었다. 표 2로부터 동적 논리 회로 재구성 가능한 프로세서(20)의 DES 암호화 프로세스는 Intel Pentium(등록 상표) 4의 DES 암호화 프로세스보다 3.8배 만큼 더 높은 성능을 나타낸다. 이것은 동적 논리 회로 재구성 가능한 프로세서(20)의 구성 요소로서 기능하는 PE가 1 비트 유닛에 의하여 임의의 논리 펑션을 입력부에 할당할 수 있다는 특징이 DES 암호화 프로세스에서 사용될 수 있기 때문이다.
DES 암호화 프로세스에서, 1 비트 유닛의 전치 또는 대입(substitution)이 반복된다. Intel Pentium
Figure 112007047344991-PCT00003
4와 같은 32-비트 마이크로프로세서에서, 1 비트 유닛에 의하여 프로세스를 실행할 때, 1 비트를 추출하는 프로세스가 요구된다. 1 비트 유닛에 의한 전치 프로세스에서, 동적 논리 회로 재구성 가능한 프로세서(20)의 PE는 데이터를 레지스터 파일(25)로부터 재구성 가능한 데이터 경로(24)로 입력하고, 이 데이터를 지정된 비트 위치로 이동시키고, 이것을 다시 레지스터 파일(25)에 기억시킨다. 이로써, 다량의 데이터 전치 프로세스들이 하나의 명령어에 의하여 수행될 수 있다. 또한, PE는 임의의 논리 펑션을 입력부에 할당할 수 있으므로, 데이터에 의존하는 복수의 프로세스들이 합성되고 하나의 명령어에 의하여 실행됨으로써, 실행되는 클록 사이클 수를 감소시킨다. 재구성 가능한 데이터 경로(24)의 DES 암호화 프로세스에서, 64-비트 평문 암호화에 대하여 요구되는 클록 사이클 수는 70 사이클이었다.
요약하여, 본 발명은, 소프트웨어 개발자가, 예컨대 C 언어와 같은 고-레벨 언어로 된 애플리케이션 프로그램을 준비하면, ISA 및 논리 회로 구성 정보가, 생성된 애플리케이션 프로그램에 기초하여 자동으로 생성되는 것인 주문형 LSI 개발 플랫폼을 제공한다. 다음, 생성된 ISA 및 논리 회로 구성 정보는 동적으로 재구성 가능한 논리 회로 프로세서에 자동으로 적용된다. 따라서, 개시된 원리는, 애플리케이션 특정 주문형 LSI를 제조할 때 뿐만 아니라, 주문형 LSI를 설계하고 개발할 때 플랫폼으로서 사용될 수도 있다.
개시된 원리들의 다양한 실시예들이 상기에 설명되었으나, 이들은 제한적이 아니라 예로써만 나타내어 진 것임을 이해해야 한다. 따라서, 본 발명(들)의 브레스(breadth) 및 범위는 상술된 예시적인 실시예들 중 임의의 하나에 의하여 제한되어서는 안되며, 본 개시로부터 비롯되는 임의의 청구범위 및 이들의 등가물에 따라서만 정의되어야 한다. 또한, 상기 이점들 및 특징들이 설명된 실시예들에 제공되나, 상기 이점들 중 임의의 것 또는 전부를 달성하는 프로세스들 및 구조들로의 이러한 생성된 청구범위의 적용을 제한해서는 안된다.
부가적으로, 여기서의 섹션의 제목들은 37 CFR 1.77 하의 제안들과의 일관성을 위하여 제공되고, 그렇지 않으면 기관의 단서(organizational cue)를 제공하기 위하여 제공된다. 이들 제목들은 본 개시로부터 비롯될 수도 있는 임의의 청구범위에서 나타낸 본 발명(들)을 제한하거나 특징화하지 않을 것이다. 구체적으로는 예를 들면, 이들 제목들이 "기술 분야"에 관한 것이어도, 이러한 청구 범위들은 소 위 기술 분야를 설명하기 위하여 이 제목 하에서 선택된 언어들로 제한되어서는 안된다. 또한, "배경 기술"에서의 기술 설명은, 기술이 본 개시에서의 임의의 발명(들)에 대하여 종래 기술인 것임을 인정하는 것으로 해석되어서는 안된다. "발명의 상세한 설명"도 생성된 청구 범위에 나타낸 본 발명(들)의 특징으로서 간주되어서도 안된다. 또한, 본 개시에서 "발명" 단일에 대한 어떠한 참조도, 이 개시에 한 요점의 신규성만이 존재한다는 것을 주장하는 데 사용되어서는 안된다. 이 개시로부터 비롯하는 다수의 청구범위 제한에 따라 다수의 발명들이 나타날 수도 있고, 따라서 이러한 청구범위들은, 본 발명(들), 및 따라서 보호되는 이들의 등가물들을 정의한다. 모든 경우들에서, 이러한 청구범위의 범위는 본 개시의 관점에서 이들 소유의 장점들에 대하여 고려될 것이나, 여기에 나타낸 제목들로 제한되어서는 안된다.
본 발명의 넓은 사상 및 범위로부터 벗어나지 않고, 다양한 실시예들과 변형들이 본 발명에 행해질 수도 있다. 상술된 실시예들은 본 발명을 예시하고자 함이며, 본 발명의 범위를 제한하고자 함이 아니다. 본 발명의 범위는 실시예에 의하여라기 보다는 첨부된 청구 범위에 의하여 나타낸다. 본 발명의 청구범위 그리고 이들 청구 범위들 내의 등가물의 의미 내에서 행해진 다양한 변형물은 본 발명의 범위내에 있는 것으로 간주되어야 한다.
본 출원은, 발명의 상세한 설명, 청구 범위, 도면 및 요약서를 포함하는, 2004년 11월 30일 출원된 일본 특허 출원 제2004-345400호, 2005년 11월 24일 출원된 일본 특허 출원 제2005-338457호, 및 2005년 11월 4일 출원된 미국 특허 출원 제11/267,026호에 기초한다. 상기 일본 특허 출원의 개시는 여기서 그 전체가 참조용으로 사용되었다.

Claims (81)

  1. 동적으로 재구성 가능한 마이크로프로세서로서,
    적어도 제1 및 제2 명령어 세트들을 포함하는 복수의 프로그램 명령어들을 수신하도록 동작 가능한 프로그램 스택; 및
    상기 프로그램 스택과 전기적 통신하는 재구성 가능한 논리 회로로서, 상기 재구성 가능한 논리 회로는 선택적인 제1 및 제2 데이터 경로들을 가지며, 이로써 상기 제1 명령어 세트에 따라 동작될 데이터가 상기 제1 데이터 경로를 통과하고, 상기 제2 명령어 세트에 따라 동작될 데이터가 상기 제2 데이터 경로를 통과하고, 또한 이로써 상기 재구성 가능한 논리 회로는, 상기 제1 또는 제2 명령어 세트에 대응하는 명령어들이 상기 마이크로프로세서에 의하여 실행되고 있는 지의 여부에 따라 재구성 가능한 것인 상기 재구성 가능한 논리 회로
    를 포함하는 동적으로 재구성 가능한 마이크로프로세서.
  2. 제 1 항에 있어서, 상기 프로그램 스택은 프로그램 제어기의 일부이며, 상기 프로그램 제어기는 상기 프로그램 스택으로부터 상기 재구성 가능한 논리 회로로의 상기 전기적 통신을 제공하는 것인 동적으로 재구성 가능한 마이크로프로세서.
  3. 제 1 항에 있어서, 상기 제1 명령어 세트는 범용 명령어 세트이고, 상기 제1 데이터 경로는 범용 마이크로프로세서를 기능적으로 포함하는 것인 동적으로 재구 성 가능한 마이크로프로세서.
  4. 제 3 항에 있어서, 상기 제2 명령어 세트는 디지털 신호 프로세싱 명령어 세트이고, 상기 제2 데이터 경로는 디지털 신호 프로세서를 기능적으로 포함하는 것인 동적으로 재구성 가능한 마이크로프로세서.
  5. 제 4 항에 있어서, 상기 디지털 신호 프로세싱 명령어 세트는 데이터를 암호화 또는 복호화하기 위하여 최적화되는 것인 동적으로 재구성 가능한 마이크로프로세서.
  6. 제 1 항에 있어서, 상기 프로그램 스택에서 수신된 상기 프로그램 명령어들은 적어도 제3 명령어 세트를 포함하고, 상기 재구성 가능한 논리 회로는 제3 데이터 경로를 더 포함하며, 이로써 상기 제3 명령어 세트에 따라 동작될 데이터가 상기 제3 데이터 경로를 통과하고, 또한 이로써 상기 재구성 가능한 논리 회로는, 상기 제1, 제2 또는 제3 명령어 세트들에 대응하는 명령어들이 실행되고 있는 지의 여부에 따라 재구성 가능하도록 동작 가능한 것인 동적으로 재구성 가능한 마이크로프로세서.
  7. 제 1 항에 있어서, 상기 프로그램 스택은 또한, 상기 재구성 가능한 논리 회로와 전기적 통신하는 것인 동적으로 재구성 가능한 마이크로프로세서.
  8. 제 7 항에 있어서, 상기 프로그램 스택으로부터 상기 재구성 가능한 논리 회로로의 상기 전기적 통신은, 상기 재구성 가능한 논리 회로의 적어도 하나의 구성을 기억하는 구성 메모리를 통하는 것인 동적으로 재구성 가능한 마이크로프로세서.
  9. 제 7 항에 있어서, 상기 재구성 가능한 논리 회로는 선택적으로(alternatively) 선택될 수도 있는 프로그램 가능한 소자들의 어레이를 포함하고, 이로써 상기 프로그램 가능한 소자들의 어레이의 제1 서브셋은 상기 제1 데이터 경로의 일부이며, 또한 이로써 상기 프로그램 가능한 소자들의 어레이의 제2 서브셋은 상기 제2 데이터 경로의 일부인 것인 동적으로 재구성 가능한 마이크로프로세서.
  10. 제 9 항에 있어서, 상기 프로그램 가능한 소자들의 어레이의 적어도 일부는 상기 제1 데이터 경로 및 상기 제2 데이터 경로 모두의 일부인 것인 동적으로 재구성 가능한 마이크로프로세서.
  11. 제 1 항에 있어서, 상기 제1 및 제2 명령어 세트들 중 적어도 하나와, 상기 재구성 가능한 논리 회로에서의 상기 적어도 하나의 명령어 세트의 대응하는 데이터 경로는, 상기 마이크로프로세서 아키텍쳐가 미래의 설계 필요성에 따라 레이아 웃된 후에 정의되도록 적응화되는 것인 동적으로 재구성 가능한 마이크로프로세서.
  12. 제 11 항에 있어서, 상기 대응하는 데이터 경로는 제조 마스크 옵션들에 따라 선택될 수 있는 논리 소자들을 포함하는 것인 동적으로 재구성 가능한 마이크로프로세서.
  13. 제 11 항에 있어서, 상기 대응하는 데이터 경로는 설계 필요성에 따라 프로그램될 수 있는 프로그램 가능한 논리 소자들을 포함하는 것인 동적으로 재구성 가능한 마이크로프로세서.
  14. 제 13 항에 있어서, 상기 프로그램 가능한 논리 소자들은 FPGA(Field Programmable Gate Array)의 게이트들을 포함하는 것인 동적으로 재구성 가능한 마이크로프로세서.
  15. 제 13 항에 있어서, 상기 프로그램 가능한 논리 소자들은 PLD(Programmable Logic Device)의 게이트들을 포함하는 것인 동적으로 재구성 가능한 마이크로프로세서.
  16. 제 1 항에 있어서, 상기 제1 또는 제2 명령어 세트에 따라 동작될 상기 데이터는 소스 애플리케이션 코드로부터 생성된 오브젝트 코드를 포함하는 것인 동적으 로 재구성 가능한 마이크로프로세서.
  17. 제 16 항에 있어서, 상기 재구성 가능한 논리 회로는, 상기 제1 또는 제2 명령어 세트에 대응하는 명령어들이 상기 소스 애플리케이션 코드로부터 생성된 구성 정보를 사용하여 상기 마이크로프로세서에 의하여 실행되고 있는 지의 여부에 따라 재구성 가능한 것인 동적으로 재구성 가능한 마이크로프로세서.
  18. 프로세싱 회로를 동적으로 재구성하는 방법으로서,
    상기 프로세싱 회로에 의하여 실행되며, 적어도 제1 및 제2 명령어 세트들을 포함하는 복수의 프로그램 명령어들을 수신하는 단계;
    상기 제1 명령어 세트에 따라 데이터에 대해 동작할 때 제1 데이터 경로에서 재구성 가능한 논리 회로를 구성하는 단계; 및
    상기 제2 명령어 세트에 따라 데이터에 대해 동작할 때 제2 데이터 경로에서 상기 재구성 가능한 논리 회로를 구성하는 단계
    를 포함하는 프로세싱 회로를 동적으로 재구성하는 방법.
  19. 제 18 항에 있어서, 상기 제1 명령어 세트는 범용 명령어 세트이며, 상기 방법은 상기 제1 명령어 세트에 따라 데이터에 대해 동작하기 위한 범용 마이크로프로세서를 기능적으로 포함하는 제1 데이터 경로에서 상기 재구성 가능한 논리 회로를 구성하는 단계를 포함하는 방법.
  20. 제 19 항에 있어서, 상기 제2 명령어 세트는 디지털 신호 프로세싱 명령어 세트이며, 상기 방법은 상기 제2 명령어 세트에 따라 데이터에 대해 동작하기 위한 디지털 신호 프로세서를 기능적으로 포함하는 제2 데이터 경로에서 상기 재구성 가능한 논리 회로를 구성하는 단계를 더 포함하는 방법.
  21. 제 20 항에 있어서, 상기 제2 명령어 세트에 따른 데이터에 대한 동작은 데이터를 암호화 또는 복호화하는 단계를 포함하는 것인 방법.
  22. 제 18 항에 있어서, 상기 복수의 프로그램 명령어들을 수신하는 단계는 제3 명령어 세트를 포함하는 복수의 프로그램 명령어들을 수신하는 단계를 더 포함하고, 상기 방법은 상기 제3 명령어 세트에 따라 데이터에 대해 동작할 때 제3 데이터 경로에서 상기 재구성 가능한 논리 회로를 구성하는 단계를 더 포함하는 방법.
  23. 제 18 항에 있어서, 구성 메모리에 상기 재구성 가능한 논리 회로의 적어도 하나의 구성을 기억하는 단계를 더 포함하는 방법.
  24. 제 18 항에 있어서, 제1 또는 제2 데이터 경로에서 상기 재구성 가능한 논리 회로를 구성하는 단계는 선택적으로 선택될 수도 있는 프로그램 가능한 소자들의 어레이를 구성하는 단계를 포함하고, 이로써 상기 프로그램 가능한 소자들의 어레 이의 제1 서브셋은 상기 제1 데이터 경로의 일부이며, 상기 프로그램 가능한 소자들의 어레이의 제2 서브셋은 상기 제2 데이터 경로의 일부인 것인 방법.
  25. 제 24 항에 있어서, 상기 프로그램 가능한 소자들의 어레이의 적어도 일부는 상기 제1 데이터 경로 및 상기 제2 데이터 경로 모두의 일부인 것인 방법.
  26. 제 18 항에 있어서, 상기 제1 또는 제2 데이터 경로에서 상기 재구성 가능한 논리 회로를 구성하는 단계는 미래의 설계 필요성에 따라 상기 마이크로프로세서 아키텍쳐를 레이아웃한 후, 제1 또는 제2 데이터 경로에서 상기 재구성 가능한 논리 회로를 구성하는 단계를 포함하는 것인 방법.
  27. 제 26 항에 있어서, 상기 제1 또는 제2 데이터 경로에서 상기 재구성 가능한 논리 회로를 구성하는 단계는 제조 마스크 옵션들에 따라 프로그램 가능한 논리 소자들의 어레이를 선택하는 단계를 포함하는 것인 방법.
  28. 제 26 항에 있어서, 상기 제1 또는 제2 데이터 경로에서 상기 재구성 가능한 논리 회로를 구성하는 단계는 상기 설계 필요성에 따라 상기 논리 소자들을 프로그램하는 단계를 포함하는 것인 방법.
  29. 구조 및 회로의 개발을 위한 주문형 LSI 개발 플랫폼으로서,
    프로세서에 대한 명령어 세트들을 생성하기 위한 명령어 세트 생성기로서, 상기 명령어는 적어도 제1 및 제2 명령어 세트들로부터의 명령어들을 포함하는 것인 상기 명령어 세트 생성기;
    상기 생성된 명령어 세트들에 따라 명령어들을 생성하기 위한 컴파일러; 및
    동적으로 재구성 가능한 논리 회로 내의 제1 및 제2 데이터 경로들에 대한 논리 회로 구성 정보를 생성하는 논리 회로 구성 생성기로서, 상기 제1 및 제2 데이터 경로들은 상기 제1 및 제2 명령어 세트들 각각으로부터 상기 생성된 명령어들의 실행을 위하여 동작 가능한 회로를 제공하는 것인 상기 논리 회로 구성 생성기
    를 포함하는 구조 및 회로의 개발을 위한 주문형 LSI 개발 플랫폼.
  30. 제 29 항에 있어서, 상기 논리 회로 구성 정보에 따라 재구성되며, LSI 개발 목적을 위한 상기 생성된 명령어들을 실행하도록 동작 가능한 동적 재구성 가능한 프로세서를 더 포함하는 주문형 LSI 개발 플랫폼.
  31. 제 30 항에 있어서, 상기 명령어 세트 생성기는,
    고-레벨 언어로 기술된 프로그램에서의 명령어로부터 명령어 패턴을 추출하고,
    상기 추출된 명령어 패턴을, 라이브러리에 기억된 하나 이상의 주문형 명령어들의 패턴들과 비교하고,
    상기 프로그램에서의 상기 명령어 패턴을 상기 하나 이상의 주문형 명령어들 로 대체하도록
    동작 가능한 것인 주문형 LSI 개발 플랫폼.
  32. 제 31 항에 있어서, 상기 명령어 세트 생성기는 그 생성된 명령어 세트들을 상기 컴파일러에 제공하도록 더 동작 가능하고, 상기 생성된 명령어 세트들에 의하여 상기 컴파일러가 상기 명령어들을 생성하도록 동작 가능한 것인 주문형 LSI 개발 플랫폼.
  33. 제 32 항에 있어서, 상기 생성된 명령어들은 오브젝트 코드를 포함하는 것인 주문형 LSI 개발 플랫폼.
  34. 제 31 항에 있어서, 상기 동적으로 재구성 가능한 프로세서는,
    동적으로 재구성 가능한 논리 회로;
    상기 하나 이상의 주문형 명령어들의 상기 논리 회로 구성 정보를 기억하는 구성 메모리;
    상기 하나 이상의 주문형 명령어들을 유지하는 메모리;
    상기 하나 이상의 주문형 명령어들의 실행 결과를 일시적으로 유지하는 레지스터 파일; 및
    상기 구성 메모리로부터의 상기 하나 이상의 주문형 명령어들에 대응하는 상기 논리 회로 구성 정보를 판독하고, 상기 하나 이상의 주문형 명령어들을 실행할 때 상기 동적으로 재구성 가능한 논리 회로를 재구성하는 제어기
    를 더 포함하는 것인 주문형 LSI 개발 플랫폼.
  35. 제 34 항에 있어서, 상기 제어기는, 상기 메모리를 액세스할 때 인덱스를 기억하기 위한 인덱스 레지스터를 더 포함하는 것인 주문형 LSI 개발 플랫폼.
  36. 제 35 항에 있어서, 상기 프로세서는 상기 인덱스 레지스터의 값을 기억하기 위한 스택을 더 포함하는 것인 주문형 LSI 개발 플랫폼.
  37. 제 31 항에 있어서, 상기 프로그램에서의 명령어가 상기 하나 이상의 주문형 명령어들로 대체될 때, 상기 하나 이상의 주문형 명령어로 대체되지 않은 상기 프로그램에서의 명령어를 새로운 주문형 명령어로서 생성하기 위한 크리에이터(creator)를 더 포함하는 주문형 LSI 개발 플랫폼.
  38. 프로세서의 명령어 세트 아키텍쳐를 생성하기 위한 방법으로서,
    고-레벨 언어로 기술된 프로그램에서의 명령어로부터 명령어 패턴을 추출하는 단계;
    상기 추출된 명령어 패턴을, 라이브러리에 기억된 하나 이상의 주문형 명령어들의 패턴들과 비교하는 단계; 및
    상기 명령어 세트 아키텍쳐를 생성하기 위하여 상기 프로그램에서의 상기 명 령어를 상기 하나 이상의 주문형 명령어들로 대체하는 단계
    를 포함하는 프로세서의 명령어 세트 아키텍쳐를 생성하기 위한 방법.
  39. 제 38 항에 있어서, 상기 주문형 명령어로 대체된 상기 명령어와 연관된 논리 소자 접속 정보를 추출하는 단계, 및 상기 논리 소자 접속 정보와 상기 주문형 명령어로부터 상기 명령어 세트 아키텍쳐를 생성하는 단계를 더 포함하는 방법.
  40. 제 39 항에 있어서, 상기 주문형 명령어와 연관되도록 상기 라이브러리에 상기 논리 소자 접속 정보를 기억하는 단계를 더 포함하는 방법.
  41. 제 40 항에 있어서, 상기 프로세서는 동적으로 재구성 가능한 논리 회로 프로세서인 것인 방법.
  42. 제 38 항에 있어서, 하나 이상의 주문형 명령어들의 상기 라이브러리에, 상기 대체 단계 동안 상기 하나 이상의 주문형 명령어들로 대체되지 않은 상기 프로그램에서의 명령어를 포함하는 새로운 주문형 명령어를 추가하는 단계를 더 포함하는 방법.
  43. 프로세서에 대한 논리 회로 구성 정보를 생성하기 위한 방법으로서,
    고-레벨 언어로 기술된 프로그램에서의 명령어로부터 명령어 패턴을 추출하 는 단계;
    상기 추출된 명령어 패턴을 하나 이상의 주문형 명령어들의 패턴들과 비교하는 단계;
    상기 프로그램에서의 상기 명령어를 상기 하나 이상의 주문형 명령어들로 대체하는 단계; 및
    상기 하나 이상의 주문형 명령어들과 연관된 논리 소자 접속 정보로부터 그리고 상기 프로세서의 적어도 하나의 프로그램 가능한 소자의 레이아웃 배열 정보로부터 상기 논리 회로 구성 정보를 생성하는 단계
    를 포함하는 프로세서에 대한 논리 회로 구성 정보를 생성하기 위한 방법.
  44. 제 43 항에 있어서, 상기 논리 소자 접속 정보는 라이브러리에 기억되는 것인 방법.
  45. 제 43 항에 있어서, 상기 프로세서는 동적으로 재구성 가능한 논리 회로 프로세서인 것인 방법.
  46. 동적 논리 회로 재구성 가능한 프로세서로서,
    적어도 하나의 프로그램 가능한 소자를 포함하는 동적으로 재구성 가능한 논리 회로;
    상기 적어도 하나의 프로그램 가능한 소자의 각 명령어에 대한 레이아웃 배 열 정보를 기억하는 구성 메모리;
    상기 적어도 하나의 프로그램 가능한 소자의 상기 명령어들을 실행한 중간 결과를 일시적으로 유지하는 레지스터 파일;
    상기 명령어들을 유지하는 메모리; 및
    상기 프로세서를 관리하며, 상기 적어도 하나의 프로그램 가능한 소자의 상기 명령어들의 실행 순서를 관리하는 제어기
    를 포함하는 동적 논리 회로 재구성 가능한 프로세서.
  47. 제 46 항에 있어서, 상기 명령어들은 적어도 제1 및 제2 명령어 세트들을 포함하고, 상기 논리 회로는, 상기 제1 또는 제2 명령어 세트에 대응하는 명령어들이 상기 프로세서에 의하여 실행되고 있는 지의 여부에 따라 제1 또는 제2 데이터 경로로 구성 가능한 것인 동적 논리 회로 재구성 가능한 프로세서.
  48. 제 47 항에 있어서, 상기 제1 명령어 세트는 범용 명령어 세트이고, 상기 제1 데이터 경로는 범용 마이크로프로세서를 기능적으로 포함하는 것인 동적 논리 회로 재구성 가능한 프로세서.
  49. 제 48 항에 있어서, 상기 제2 명령어 세트는 디지털 신호 프로세싱 명령어 세트이고, 상기 제2 데이터 경로는 디지털 신호 프로세서를 기능적으로 포함하는 것인 동적 논리 회로 재구성 가능한 프로세서.
  50. 제 49 항에 있어서, 상기 디지털 신호 프로세싱 명령어 세트는 데이터를 암호화 또는 복호화하기 위하여 최적화되는 것인 동적 논리 회로 재구성 가능한 프로세서.
  51. 제 47 항에 있어서, 상기 재구성 가능한 논리 회로는 선택적으로 선택될 수도 있는 프로그램 가능한 소자들의 어레이를 포함하고, 이로써 상기 프로그램 가능한 소자들의 어레이의 제1 서브셋은 상기 제1 데이터 경로의 일부이며, 또한 이로써 상기 프로그램 가능한 소자들의 어레이의 제2 서브셋은 상기 제2 데이터 경로의 일부인 것인 동적 논리 회로 재구성 가능한 프로세서.
  52. 제 51 항에 있어서, 상기 프로그램 가능한 소자들의 어레이의 적어도 일부는 상기 제1 데이터 경로 및 상기 제2 데이터 경로 모두의 일부인 것인 동적 논리 회로 재구성 가능한 프로세서.
  53. 제 51 항에 있어서, 상기 프로그램 가능한 논리 소자들은 FPGA의 게이트들을 포함하는 것인 동적 논리 회로 재구성 가능한 프로세서.
  54. 제 51 항에 있어서, 상기 프로그램 가능한 논리 소자들은 PLD의 게이트들을 포함하는 것인 동적 논리 회로 재구성 가능한 프로세서.
  55. 제 47 항에 있어서, 상기 제1 또는 제2 명령어 세트에 따라 동작될 상기 데이터는 소스 애플리케이션 코드로부터 생성된 오브젝트 코드를 포함하는 것인 동적 논리 회로 재구성 가능한 프로세서.
  56. 제 55 항에 있어서, 상기 재구성 가능한 논리 회로는, 상기 제1 또는 제2 명령어 세트에 대응하는 명령어들이 상기 소스 애플리케이션 코드로부터 생성된 구성 정보를 사용하여 상기 마이크로프로세서에 의하여 실행되고 있는 지의 여부에 따라 재구성 가능한 것인 동적 논리 회로 재구성 가능한 프로세서.
  57. 주문형 LSI 개발 플랫폼으로서,
    논리 회로를 포함하는 적어도 하나의 프로그램 가능한 소자를 갖는 동적 논리 회로 재구성 가능한 프로세서; 및
    소프트웨어 모듈
    을 포함하고, 상기 소프트웨어 모듈은,
    상기 프로세서의 명령어 세트 아키텍쳐를 생성하기 위한 명령어 세트 아키텍쳐 생성기, 및
    상기 적어도 하나의 프로그램 가능한 소자 및 상기 명령어 세트 아키텍쳐의 레이아웃 배열 정보로부터 상기 프로세서의 논리 회로 구성 정보를 생성하는 논리 회로 구성 생성기
    를 포함하는 것인 주문형 LSI 개발 플랫폼.
  58. 제 57 항에 있어서, 상기 명령어 세트 아키텍쳐는 적어도 제1 및 제2 명령어 세트들을 포함하고, 상기 논리 회로 구성 생성기는, 상기 제1 또는 제2 명령어 세트에 대응하는 명령어들이 상기 프로세서에 의하여 실행되고 있는 지의 여부에 따라 상기 논리 회로를 제1 또는 제2 데이터 경로로 구성하기 위하여 구성 정보를 생성하는 것인 주문형 LSI 개발 플랫폼.
  59. 제 58 항에 있어서, 상기 제1 명령어 세트는 범용 명령어 세트이고, 상기 제1 데이터 경로는 범용 마이크로프로세서를 기능적으로 포함하는 것인 주문형 LSI 개발 플랫폼.
  60. 제 59 항에 있어서, 상기 제2 명령어 세트는 디지털 신호 프로세싱 명령어 세트이고, 상기 제2 데이터 경로는 디지털 신호 프로세서를 기능적으로 포함하는 것인 주문형 LSI 개발 플랫폼.
  61. 제 60 항에 있어서, 상기 디지털 신호 프로세싱 명령어 세트는 데이터를 암호화 또는 복호화하기 위하여 최적화되는 것인 주문형 LSI 개발 플랫폼.
  62. 제 58 항에 있어서, 상기 재구성 가능한 논리 회로는 선택적으로 선택될 수 도 있는 프로그램 가능한 소자들의 어레이를 포함하고, 이로써 상기 프로그램 가능한 소자들의 어레이의 제1 서브셋은 상기 제1 데이터 경로의 일부이며, 또한 이로써 상기 프로그램 가능한 소자들의 어레이의 제2 서브셋은 상기 제2 데이터 경로의 일부인 것인 주문형 LSI 개발 플랫폼.
  63. 제 62 항에 있어서, 상기 프로그램 가능한 소자들의 어레이의 적어도 일부는 상기 제1 데이터 경로 및 상기 제2 데이터 경로 모두의 일부인 것인 주문형 LSI 개발 플랫폼.
  64. 제 58 항에 있어서, 상기 제1 및 제2 명령어 세트들 중 적어도 하나와, 상기 재구성 가능한 논리 회로에서의 상기 적어도 하나의 명령어 세트의 대응하는 데이터 경로는, 상기 마이크로프로세서 아키텍쳐가 미래의 설계 필요성에 따라 레이아웃된 후에 정의되도록 적응화되는 것인 주문형 LSI 개발 플랫폼.
  65. 제 64 항에 있어서, 상기 대응하는 데이터 경로는 제조 마스크 옵션들에 따라 선택될 수 있는 논리 소자들을 포함하는 것인 주문형 LSI 개발 플랫폼.
  66. 제 64 항에 있어서, 상기 대응하는 데이터 경로는 설계 필요성에 따라 프로그램될 수 있는 프로그램 가능한 논리 소자들을 포함하는 것인 주문형 LSI 개발 플랫폼.
  67. 제 66 항에 있어서, 상기 프로그램 가능한 논리 소자들은 FPGA의 게이트들을 포함하는 것인 주문형 LSI 개발 플랫폼.
  68. 제 66 항에 있어서, 상기 프로그램 가능한 논리 소자들은 PLD의 게이트들을 포함하는 것인 주문형 LSI 개발 플랫폼.
  69. 제 58 항에 있어서, 상기 제1 또는 제2 명령어 세트에 따라 동작될 상기 데이터는 소스 애플리케이션 코드로부터 생성된 오브젝트 코드를 포함하는 것인 주문형 LSI 개발 플랫폼.
  70. 제 69 항에 있어서, 상기 재구성 가능한 논리 회로는, 상기 제1 또는 제2 명령어 세트에 대응하는 명령어들이 상기 소스 애플리케이션 코드로부터 생성된 구성 정보를 사용하여 상기 마이크로프로세서에 의하여 실행되고 있는 지의 여부에 따라 재구성 가능한 것인 주문형 LSI 개발 플랫폼.
  71. 제 57 항에 있어서, 상기 재구성 가능한 논리 회로의 적어도 하나의 구성을 기억하는 상기 논리 회로 구성 생성기에 접속된 구성 메모리를 더 포함하는 주문형 LSI 개발 플랫폼.
  72. 동적 논리 회로 재구성 가능한 프로세서의 명령어 세트 아키텍쳐를 생성하기 위하여 컴퓨터에서 실행될 명령어들의 세트를 포함하는 컴퓨터-판독가능한 매체로서, 상기 명령어들의 세트는,
    고-레벨 언어로 기술된 프로세서의 애플리케이션 프로그램에서의 명령어로부터 명령어 패턴을 추출하는 단계;
    상기 추출된 명령어 패턴을, 라이브러리에 기억된 하나 이상의 주문형 명령어들의 패턴들과 비교하는 단계; 및
    상기 명령어 세트를 생성하기 위하여 상기 프로그램에서의 상기 명령어를 상기 하나 이상의 주문형 명령어들로 대체하는 단계
    를 포함하는 것인 동적 논리 회로 재구성 가능한 프로세서의 명령어 세트 아키텍쳐를 생성하기 위하여 컴퓨터에서 실행될 명령어들의 세트를 포함하는 컴퓨터-판독가능한 매체.
  73. 제 72 항에 있어서, 상기 명령어들의 세트는 상기 주문형 명령어로 대체된 상기 명령어와 연관된 논리 소자 접속 정보를 추출하는 단계, 및 상기 논리 소자 접속 정보와 상기 주문형 명령어로부터 상기 명령어 세트 아키텍쳐를 생성하는 단계를 더 포함하는 것인 컴퓨터-판독가능한 매체.
  74. 제 73 항에 있어서, 상기 명령어들의 세트는 상기 주문형 명령어와 연관되도록 상기 라이브러리에 상기 논리 소자 접속 정보를 기억하는 단계를 더 포함하는 것인 컴퓨터-판독가능한 매체.
  75. 제 74 항에 있어서, 상기 프로세서는 동적으로 재구성 가능한 논리 회로 프로세서인 것인 컴퓨터-판독가능한 매체.
  76. 제 72 항에 있어서, 상기 명령어들의 세트는 하나 이상의 주문형 명령어들의 상기 라이브러리에, 상기 대체 단계 동안 상기 하나 이상의 주문형 명령어들로 대체되지 않은 상기 프로그램에서의 명령어를 포함하는 새로운 주문형 명령어를 추가하는 단계를 더 포함하는 것인 컴퓨터-판독가능한 매체.
  77. 동적 논리 회로 재구성 가능한 프로세서에 대한 논리 회로 구성 정보를 생성하기 위하여 컴퓨터에서 실행될 명령어들의 세트를 포함하는 컴퓨터-판독가능한 매체로서, 상기 명령어들의 세트는,
    고-레벨 언어로 기술된 프로그램에서의 명령어로부터 명령어 패턴을 추출하는 단계;
    상기 추출된 명령어 패턴을 하나 이상의 주문형 명령어들의 패턴들과 비교하는 단계;
    명령어 세트를 생성하기 위하여 상기 프로그램에서의 상기 명령어를 상기 하나 이상의 주문형 명령어들로 대체하는 단계; 및
    상기 명령어 세트에 포함된 상기 하나 이상의 주문형 명령어들과 연관된 논 리 소자 접속 정보로부터 그리고 상기 프로세서의 적어도 하나의 프로그램 가능한 소자의 레이아웃 배열 정보로부터 상기 논리 회로 구성 정보를 생성하는 단계
    를 포함하는 동적 논리 회로 재구성 가능한 프로세서에 대한 논리 회로 구성 정보를 생성하기 위하여 컴퓨터에서 실행될 명령어들의 세트를 포함하는 컴퓨터-판독가능한 매체.
  78. 제 77 항에 있어서, 상기 명령어들의 세트는, 상기 주문형 명령어로 대체된 상기 명령어와 연관된 논리 소자 접속 정보를 추출하는 단계, 및 상기 논리 소자 접속 정보와 상기 주문형 명령어로부터 상기 명령어 세트 아키텍쳐를 생성하는 단계를 더 포함하는 것인 컴퓨터-판독가능한 매체.
  79. 제 78 항에 있어서, 상기 명령어들의 세트는 상기 주문형 명령어와 연관되도록 상기 라이브러리에 상기 논리 소자 접속 정보를 기억하는 단계를 더 포함하는 것인 컴퓨터-판독가능한 매체.
  80. 제 79 항에 있어서, 상기 프로세서는 동적으로 재구성 가능한 논리 회로 프로세서인 것인 컴퓨터-판독가능한 매체.
  81. 제 77 항에 있어서, 상기 명령어들의 세트는 하나 이상의 주문형 명령어들의 상기 라이브러리에, 상기 대체 단계 동안 상기 하나 이상의 주문형 명령어들로 대 체되지 않은 상기 프로그램에서의 명령어를 포함하는 새로운 주문형 명령어를 추가하는 단계를 더 포함하는 것인 컴퓨터-판독가능한 매체.
KR1020077014815A 2004-11-30 2005-11-30 동적으로 재구성 가능한 프로세서 KR20070097051A (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP2004345400 2004-11-30
JPJP-P-2004-00345400 2004-11-30
US11/267,026 2005-11-04
US11/267,026 US20060242385A1 (en) 2004-11-30 2005-11-04 Dynamically reconfigurable processor
JP2005338457A JP4390211B2 (ja) 2004-11-30 2005-11-24 カスタムlsi開発プラットフォーム、命令セット・アーキテクチャ及び論理回路構成情報の生成方法、並びにプログラム
JPJP-P-2005-00338457 2005-11-24

Publications (1)

Publication Number Publication Date
KR20070097051A true KR20070097051A (ko) 2007-10-02

Family

ID=35705273

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077014815A KR20070097051A (ko) 2004-11-30 2005-11-30 동적으로 재구성 가능한 프로세서

Country Status (3)

Country Link
EP (1) EP1836601A2 (ko)
KR (1) KR20070097051A (ko)
WO (1) WO2006059775A2 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140032796A (ko) * 2012-09-07 2014-03-17 삼성전자주식회사 재구성 가능한 프로세서의 검증 방법
KR20170099869A (ko) * 2014-12-27 2017-09-01 인텔 코포레이션 인덱스 및 즉치로 벡터 치환을 수행하기 위한 방법 및 장치
US9753769B2 (en) 2013-01-28 2017-09-05 Samsung Electronics Co., Ltd. Apparatus and method for sharing function logic between functional units, and reconfigurable processor thereof

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7073069B1 (en) * 1999-05-07 2006-07-04 Infineon Technologies Ag Apparatus and method for a programmable security processor
KR101978932B1 (ko) 2012-05-02 2019-05-16 가부시키가이샤 한도오따이 에네루기 켄큐쇼 프로그램 가능한 로직 디바이스

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US5933642A (en) * 1995-04-17 1999-08-03 Ricoh Corporation Compiling system and method for reconfigurable computing
US5966534A (en) * 1997-06-27 1999-10-12 Cooke; Laurence H. Method for compiling high level programming languages into an integrated processor with reconfigurable logic

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140032796A (ko) * 2012-09-07 2014-03-17 삼성전자주식회사 재구성 가능한 프로세서의 검증 방법
US9753769B2 (en) 2013-01-28 2017-09-05 Samsung Electronics Co., Ltd. Apparatus and method for sharing function logic between functional units, and reconfigurable processor thereof
KR20170099869A (ko) * 2014-12-27 2017-09-01 인텔 코포레이션 인덱스 및 즉치로 벡터 치환을 수행하기 위한 방법 및 장치

Also Published As

Publication number Publication date
WO2006059775A2 (en) 2006-06-08
EP1836601A2 (en) 2007-09-26
WO2006059775A3 (en) 2006-08-17

Similar Documents

Publication Publication Date Title
US20060242385A1 (en) Dynamically reconfigurable processor
US6370677B1 (en) Method and system for maintaining hierarchy throughout the integrated circuit design process
US6047115A (en) Method for configuring FPGA memory planes for virtual hardware computation
JP4893309B2 (ja) 再構成可能な論理回路を有するデータ処理装置
Gschwind et al. FPGA prototyping of a RISC processor core for embedded applications
US9111060B2 (en) Partitioning designs to facilitate certification
KR20030016210A (ko) 동적으로 재구성 가능한 논리 회로의 물리적 설계 구현 방법
US6915410B2 (en) Compiler synchronized multi-processor programmable logic device with direct transfer of computation results among processors
US20050283743A1 (en) Method for generating hardware information
Gören et al. Partial bitstream protection for low-cost FPGAs with physical unclonable function, obfuscation, and dynamic partial self reconfiguration
KR20070097051A (ko) 동적으로 재구성 가능한 프로세서
EP3722985A1 (en) Method and apparatus for implementing an application aware system on a programmable logic device
US20080288909A1 (en) Template-Based Domain-Specific Reconfigurable Logic
JP4390211B2 (ja) カスタムlsi開発プラットフォーム、命令セット・アーキテクチャ及び論理回路構成情報の生成方法、並びにプログラム
Raaijmakers Run-Time Partial Reconfiguration on the Virtex-II Pro
Brayton The future of logic synthesis and verification
Golshan et al. Seu-aware high-level data path synthesis and layout generation on sram-based fpgas
Thomas et al. Software-like compilation for data center FPGA accelerators
Soni Open-source bitstream generation for FPGAs
Gören et al. FPGA design security with time division multiplexed PUFs
Mehta et al. Interconnect customization for a hardware fabric
Thomas et al. HoneyComb: an application-driven online adaptive reconfigurable hardware architecture
JM Veendrick et al. Very Large Scale Integration (VLSI) and ASICs
Ghosh et al. XDL-based module generators for rapid FPGA design implementation
Mo et al. Structured Digital Design

Legal Events

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