KR20200139525A - Fpga를 포함하는 전자 시스템 및 이의 동작 방법 - Google Patents

Fpga를 포함하는 전자 시스템 및 이의 동작 방법 Download PDF

Info

Publication number
KR20200139525A
KR20200139525A KR1020190066132A KR20190066132A KR20200139525A KR 20200139525 A KR20200139525 A KR 20200139525A KR 1020190066132 A KR1020190066132 A KR 1020190066132A KR 20190066132 A KR20190066132 A KR 20190066132A KR 20200139525 A KR20200139525 A KR 20200139525A
Authority
KR
South Korea
Prior art keywords
code
block
fpga
efpga
electronic system
Prior art date
Application number
KR1020190066132A
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 삼성전자주식회사
Priority to KR1020190066132A priority Critical patent/KR20200139525A/ko
Priority to US16/802,927 priority patent/US11012075B2/en
Priority to CN202010297936.0A priority patent/CN112035397B/zh
Publication of KR20200139525A publication Critical patent/KR20200139525A/ko
Priority to US17/242,737 priority patent/US11967952B2/en

Links

Images

Classifications

    • 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
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/1776Structural details of configuration resources for memories
    • 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
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • 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]
    • G06F30/343Logical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/08Intellectual property [IP] blocks or IP cores

Abstract

전자 시스템 및 이의 동작방법이 개시된다. 상기 기술적 과제를 달성하기 위한 본 발명의 기술적 사상에 따른 FPGA를 포함하는 전자 시스템의 동작 방법은, 하이 레벨 언어의 코드를 하드웨어 기술 언어의 코드로 합성하는 하이 레벨 합성(High Level Synthesis) 단계, 하드웨어 기술 언어의 코드에 따라 FPGA에 포함된 IP 블록(Intellectual Property)의 회로를 설계하는 단계, 및 하이 레벨 언어의 코드에 대응되는 기준 어셈블리 코드 및 IP 블록의 회로 구성에 대한 정보를 포함하는 데이터 베이스를 생성하는 단계를 포함한다.

Description

FPGA를 포함하는 전자 시스템 및 이의 동작 방법{SYSTEM INCLUDING FPGA AND METHOD OF OPERATION THEREOF}
본 개시의 기술적 사상은 메모리 시스템 및 이의 동작방법에 관한 것으로서, 상세하게는 FPGA(Field Programmable Gate Array)를 포함하는 메모리 시스템 및 이의 동작방법에 관한 것이다.
전자 시스템들의 성능을 좌우하는 요인들 중 하나는 메인 메모리 또는 시스템 메모리의 용량 및 처리량, 및 액세스 속도이다. 한정된 자원을 복수의 기능 블록들이 공유할 수 있다. 이에 따라서, 사용자가 사용하지 않는 불필요한 기능 블록에 자원이 할당됨에 따라 전체적인 시스템 속도가 느려질 수 있고, 시스템에서 소모되는 전력이 증가될 수 있다.
본 개시의 기술적 사상은 전자 시스템에 관한 것으로서, 구체적으로는 FPGA를 포함하는 메모리 시스템 및 이의 동작방법을 제공한다.
상기 기술적 과제를 달성하기 위한 본 발명의 기술적 사상에 따른 FPGA를 포함하는 전자 시스템의 동작 방법은, 하이 레벨 언어의 코드를 하드웨어 기술 언어의 코드로 합성하는 하이 레벨 합성(High Level Synthesis) 단계, 하드웨어 기술 언어의 코드에 따라 FPGA에 포함된 IP 블록(Intellectual Property)의 회로를 설계하는 단계, 및 하이 레벨 언어의 코드에 대응되는 기준 어셈블리 코드 및 IP 블록의 회로 구성에 대한 정보를 포함하는 데이터 베이스를 생성하는 단계를 포함할 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 기술적 사상에 따른 FPGA를 포함하는 전자 시스템은 하이 레벨 언어의 코드를 하드웨어 기술 언어의 코드로 합성하는 하이 레벨 합성 프로그램이 저장되는 메모리, 하이 레벨 합성 프로그램에 액세스 하는 프로세서, 프로세서가 하이 레벨 합성 프로그램 에 액세스한 결과에 따라 회로 구성이 설계되는 적어도 하나의 IP 블록을 포함하는 FPGA, 및 하이 레벨 언어의 코드에 대응되는 기준 어셈블리 코드 및 IP 블록의 회로 구성에 대한 정보를 포함하는 데이터 베이스가 저장된 스토리지 장치를 포함할 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 기술적 사상에 따른 FPGA를 포함하는 전자 시스템의 동작 방법은, 전자 시스템에서 처리되는 복수의 태스크들에 대응되는 복수의 코드들 중 제1 코드 및 제2 코드를 선택하는 단계, 제1 코드 및 제2 코드 각각을 하드웨어 기술 언어의 코드로 변환하는 단계, 제1 코드가 변환된 하드웨어 기술 언어의 코드에 따라, 제1 IP 블록을 FPGA의 제1 서브 FPGA에 로딩하는 단계, 제2 코드가 변환된 하드웨어 기술 언어의 코드에 따라, 제2 IP 블록을 FPGA의 제2 서브 FPGA에 로딩하는 단계를 포함할 수 있다.
본 발명의 기술적 사상에 따른 전자 시스템은, 하이 레벨 합성(High Level Synthesis) 프로그램을 이용하여 FPGA를 회로 구성을 변경하므로, FPGA의 회로 설계가 용이할 수 있다. 또한, CPU 등에서 직접 태스크를 처리하는 것보다 FPGA에서 태스크를 처리하는 것이 전력 소모 또는 처리 속도 면에서 효율적이라고 판단되는 경우, 태스크에 대응되는 코드를 합성하여 FPGA에 하드웨어로 구현할 수 있으므로, 전자 시스템의 동작 속도가 빨라질 수 있고, 전력 소모가 감소될 수 있다.
도 1은 본 개시의 예시적인 실시 예에 따른 전자 시스템의 동작을 설명하기 위한 순서도이다.
도 2는 본 개시의 예시적인 실시 예에 따른 전자 시스템의 아키텍처의 블록도이다.
도 3a 및 도 3b는 본 개시의 예시적인 실시 예에 따른 전자 시스템의 블록도이다.
도 4는 본 개시의 예시적인 실시 예에 따른 전자 시스템의 동작을 설명하기 위한 순서도이다.
도 5 및 도 6은 각각 도 4의 각 단계들을 설명하기 위한 도면이다.
도 7은 본 개시의 예시적인 실시 예에 따른 전자 시스템의 스케줄러의 동작을 설명하기 위한 도면이다.
도 8은 본 개시의 예시적인 실시 예에 따른 전자 시스템의 eFPGA에 로딩된 IP 블록들에서 어플리케이션이 처리될 때의 특성들이 저장된 특성 테이블을 도시한 도면이다.
도 9는 본 개시의 예시적인 실시 예에 따른 전자 시스템의 서로 다른 하드웨어들에 의해 태스크들이 각각 처리될 때의 특성을 나타내는 그래프이다.
도 10는 본 개시의 예시적인 실시 예에 따른 전자 시스템의 동작을 설명하기 위한 순서도이다.
도 11a 및 도 11b는 본 개시의 예시적인 실시 예에 따른 전자 시스템의 동작을 설명하기 위한 도면이다.
도 12a 및 도 12b는 본 개시의 예시적인 실시 예에 따른 전자 시스템에 포함되는 eFPGA의 블록도이다.
이하, 첨부된 도면을 참조하여 본 발명의 기술적 사상의 바람직한 실시예를 상세히 설명하기로 한다.
도 1은 본 개시의 예시적인 실시 예에 따른 전자 시스템의 동작을 설명하기 위한 순서도로서, 하이 레벨 합성 프로그램을 이용하여 내부 논리 회로 구조를 변경하는 방법을 나타내는 순서도이다. 예를 들어, 전자 시스템은 스마트 폰, 스마트 TV, 의료 장치, 모바일 장치, 영상 표시 장치, 계측 장치, IoT(Internet of Things) 장치, 또는, 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS) 등과 같은 로봇 장치 등에 적용될 수 있으며, 이외에도 다양한 종류의 전자 시스템 중 하나에 탑재될 수 있다.
도 1을 참조하면, S10 단계에서, 전자 시스템은 하이 레벨 언어로 기술된 코드들(D10)을 하드웨어 기술 언어(Hardware Description Languages, HDL)로 기술된 코드들(D20)로 변환하는 하이 레벨 합성 동작을 수행할 수 있다. 예를 들어, 하이 레벨 합성 동작은 프로세서(예를 들어, 도 3a의 220)가 하이 레벨 합성 프로그램을 실행함으로써, 수행될 수 있다.
예를 들어, 하이 레벨 언어는 C 언어 또는 C++ 언어 등 일 수 있으나, 이에 한정되지 않는다. 예를 들어, 하드 웨어 기술 언어는 Verilog 또는 VHDL(VHSIC Hardware Description Language) 등을 포함할 수 있다. 이 때, 하드웨어 기술 언어로 기술된 코드들(D20)은 집적 회로의 동작(behavior)에 대한 추상적 형태, 예를 들어, RTL(Register Transfer Level)에서 정의된 것일 수 있다.
예시적인 실시 예에서, 전자 시스템은 하드웨어 기술 언어로 변환하기 어려운 하이 레벨 언어의 코드는 하드웨어 기술 언어로 변환할 수 있는 하이 레벨 언어의 코드로 변환한 후 S10 단계를 수행할 수 있다.
예시적인 실시 예에서, 전자 시스템은 뉴럴 네트워크 연산을 수행할 수 있는 구성을 더 포함할 수 있다. 전자 시스템은 하드웨어 기술 언어로 변환하기 어려운 하이 레벨 언어의 코드로 구성된 함수의 입력 데이터 및 출력 데이터를 이용하여 뉴럴 네트워크 연산을 수행할 수 있고, 뉴럴 네트워크 연산을 통해 도출된 연산 결과에 따라 하드웨어 기술 언어로 변환할 수 있는 하이 레벨 언어의 함수로 변환할 수 있다. 예를 들어, 재귀 함수의 경우에는 하드웨어 기술 언어의 코드로 변환하는 것이 어려울 수 있다. 전자 시스템은 재귀 함수의 입력 데이터 및 출력 데이터를 뉴럴 네트워크 연산을 통해 하드웨어 기술 언어로 변환할 수 있는 하이 레벨 언어의 코드로 구성된 함수로 변환할 수 있고, 변환된 하이 레벨 언어의 코드에 기초하여 S10 단계를 수행할 수 있다.
예시적인 실시 예에서, 전자 시스템은 딥러닝 프로세스를 수행할 수 있는 구성을 더 포함할 수 있다. 전자 시스템은 하드웨어 기술 언어로 변환할 수 있는 하이 레벨 언어의 코드로 구성된 함수에 대한 딥러닝 프로세스를 수행할 수 있다. 딥러닝 프로세스 수행 결과에 기초하여, 하드웨어 기술 언어로 변환하기 어려운 하이 레벨 언어의 코드로 구성된 함수를 하드웨어 기술 언어로 변환할 수 있는 하이 레벨 언어의 코드로 구성된 함수로 변환할 수 있다. 예를 들어. 전자 시스템은 재귀 함수를 딥러닝 프로세스를 통해 하드웨어 기술 언어로 변환할 수 있는 하이 레벨 언어의 코드로 구성된 함수로 변환할 수 있고, 변환된 하이 레벨 언어의 코드에 기초하여 S10 단계를 수행할 수 있다.
예시적인 실시 예에서, 전자 시스템은 하이 레벨 언어로 기술된 특정 코드가 하드웨어 기술 언어로 변환되어 하드웨어로 구현될 때 하드웨어의 소스를 상대적으로 많이 사용할 것으로 예상되는 경우에는, 상기 특정 코드를 하이 레벨 언어의 다른 코드로 변환한 후 S10 단계를 수행할 수 있다. 예를 들어, 전자 시스템은 하이 레벨 언어의 특정 코드에 포함된 부동 소수점(floating point)에 대한 코드 중 적어도 일부를 고정 소수점(fixed point)에 대한 코드로 변환한 후 S10 단계를 수행할 수 있다. 고정 소수점(fixed point)에 대한 코드로 변환함에 따라 발생할 수 있는 오차는 고정 소수점(fixed point)에 대한 코드의 비트 폭(bit width)를 조절함으로써 조절될 수 있다.
S20 단계에서, 전자 시스템은 하드웨어 기술 언어로 기술된 코드들(D20)을 이용하여, 로직(Logic) 합성 동작, 및 배치 및 라우팅(P&R) 동작을 수행할 수 있다. 로직(Logic) 합성 동작 및 P&R 동작 각각은 프로세서(220)가 로직 합성 프로그램 및 P&R 프로그램에 액세스함으로써 수행될 수 있다. 로직 합성 동작은 하드웨어 기술 언어로 기술된 코드들(D20)을 로직 게이트로 이루어진 하드웨어 형태로 변환하여 넷리스트(netlist)를 생성하는 동작일 수 있다. 배치 및 라우팅(P&R) 동작은 변환된 로직 게이트들을 배치 및 라우팅하는 동작일 수 있다. S20 단계가 수행됨에 따라 전자 시스템 내부에 포함된 설계 가능 논리 소자(reconfigurable logic device)의 회로 구조가 변경될 수 있다. 예를 들어, 필드 프로그래머블 게이트 어레이(Field Programmable Gate Array, FPGA)에 포함된 설계 가능 논리 소자의 하드웨어 구조가 변경될 수 있다.
본 도면에서는, S10 단계 및 S20 단계를 구별하여 도시하였으나, 구분된 과정은 개념적으로 구분해 놓은 것이며, 본 개시는 S10 단계 및 S20 단계가 독립된 두 단계로 명확히 나누어 실행되는 것에 한정되지 않는다. 예시적인 실시 예에서, 하이 레벨 합성 동작은 S10 단계 및 S20 단계를 모두 포함할 수도 있으며, 즉, 하이 레벨 언어로 기술된 코드들(D10)을 입력으로 받아 회로 구조를 만들어 내고, 로직 합성을 적용하여 회로 구조를 변경하는 것을 모두 포함할 수 있다.
본 개시에 따른, 전자 시스템은 하이 레벨 언어를 입력 받아 로직 게이트 레벨까지 합성이 가능하므로, 사용자가 직접 하드웨어 기술 언어를 사용하지 않고 하이 레벨 언어를 사용함으로써, FPGA의 설계 및 수정이 용이할 수 있다.
도 2는 본 개시의 예시적인 실시 예에 따른 전자 시스템의 아키텍처의 블록도이다.
도 2를 참조하면, 시스템 아키텍처(100)는 하드웨어(110), 운영체제(120), 가상 머신(130), 라이브러리(140) 및 어플리케이션(150)을 포함할 수 있다. 운영체제(120), 가상 머신(130), 라이브러리(140) 및 어플리케이션(150)은 소프트웨어 스택을 구성할 수 있고, 도 3a의 메모리(230)에 저장될 수 있다.
하드웨어(110)는 하나 이상의 CPU(Central Processing Unit)(112), GPU(Graphic Processing Unit)(113), DSP(Digital Signal Processor)(114) 등을 비롯한 프로세싱 유닛(예를 들어, 도 3a의 220), ROM(Read Only Memory), RAM(Random Access Memory) 등을 비롯한 메모리(예를 들어, 도 3a의 230), HDD(Hard Disk Drive), SSD(Solid State Drive) 등을 비롯한 스토리지 장치 및 기타 주변 장치들을 포함할 수 있다. 또한, 하드웨어(110)는 eFPGA(embedded FPGA)(111)를 포함할 수 있다. 다만, 본 개시에 따른 시스템은 도 2에 도시되거나 설명된 예들에 한정되지 않는다.
운영체제(120)는 하드웨어(110)를 제어하고 및 어플리케이션(150)의 실행을 지원하는 등 전자 시스템을 전반적으로 운용할 수 있다. 예를 들어, 운영체제(120)는 어플리케이션(150)으로부터 태스크 요청을 수신하고, 요청 받은 태스크들을 처리하기 위한 일련의 태스크들을 설정하고, 하드웨어(110)에 이들 태스크들을 할당할 수 있다. 또한, 운영체제(120)는 하드웨어(110)를 이용하여 처리한 일련의 태스크들을 수행한 결과를 어플리케이션(150)에 전달할 수 있다.
예시적인 실시 예에서, 운영체제(120)는 애플(Apple, Inc)사의 MacOS, 마이크로소프트(Microsoft)사의 윈도우즈(Windows), 유닉스(UNIX), 리눅스(Linux) 등의 운영체제일 수도 있고, 애플(Apple, Inc)사의 iOS, 구글(Google)사의 안드로이드(Android) 등 모바일 장치에 특화된 운영체제일 수도 있으나, 본 개시에 따른 실시 예의 범위는 이러한 예들에 한정되지 않는다.
가상 머신(Virtual Machine, VM) (130)은 컴퓨팅 환경을 소프트웨어로 구현한 것으로, 즉 컴퓨터를 에뮬레이션하는 소프트웨어일 수 있다. 가상 머신(130)상에서 운영체제(120)나 어플리케이션(150)이 설치 및 실행될 수 있다. 예를 들어, 가상 머신(130)은 자바 가상 머신을 포함할 수 있고, 자바 바이트 코드를 실행할 수 있다.
예시적 실시 예에서, 전자 시스템은 가상 머신(130)에 의해 실행되는 코드들 중 적어도 일부에 대해 하드웨어에서 처리하도록 eFPGA(111)를 설계할 수 있다. 이 때, eFPGA 서브 시스템은 eFPGA(111), eFPGA 디바이스 드라이버(121) 및 eFPGA 라이브러리(131)를 포함할 수 있고, eFPGA 디바이스 드라이버(121) 및 eFPGA 라이브러리(131)는 eFPGA(111)를 지원하기 위한 구성일 수 있다.
가상 머신(130)을 이용하여 코드(예를 들어, 바이트 코드)를 해석하는 경우에는 처리 속도가 감소될 수 있다. 따라서, 본 개시에 따른 시스템은, 가상 머신(130)에 의해 실행되는 코드 중 적어도 일부에 대해 하드웨어 가속(Hardware Acceleration)을 적용하여, 하드웨어에서 처리하도록 eFPGA(111)를 설계함으로써, 처리 속도를 개선시킬 수 있다.
라이브러리(140)는, 예를 들면, 어플리케이션(150)이 필요로 하는 기능을 제공하거나, 어플리케이션(150)이 전자 시스템 내부의 제한된 자원을 사용할 수 있도록 다양한 기능들을 어플리케이션(150)으로 제공할 수 있다. 예시적 실시 예에 따르면, 라이브러리(140)는 GPU 라이브러리 및 DSP 라이브러리를 포함할 수 있고, 각각은 GPU (113) 및 DSP (114)가 어플리케이션에 따른 태스크들을 처리할 때 필요로 하는 기능들을 제공할 수 있다.
예시적인 실시 예에서, 전자 시스템은 예시적인 실시 예에서, 전자 시스템은 뉴럴 네트워크 연산을 수행할 수 있는 구성 및 딥러닝 프로세스를 수행할 수 있는 구성을 더 포함할 수 있다. 뉴럴 네트워크 연산을 수행할 수 있는 구성 및 딥러닝 프로세스를 수행할 수 있는 구성은 소프트웨어 스택에 포함될 수 있으나, 이에 한정되지 않으며, 하드웨어로 전자 시스템에 구비될 수도 있다.
도 3a 및 도 3b는 본 개시의 예시적인 실시 예에 따른 전자 시스템의 블록도이다.
도 3a을 참조하면, 전자 시스템(200)은 eFPGA(210), 프로세서(220) 및 메모리(230)를 포함할 수 있다. eFPGA(210), 프로세서(220) 및 메모리(230)는 시스템 버스(240)를 통해서 서로 연결될 수 있다.
프로세서(220)는 프로세싱 유닛으로 지칭될 수 있고, 도 2의 CPU(112), GPU(113), 및 DSP(114)에 대응될 수 있다. 즉, 프로세서(220)는 임의의 명령어 세트(예를 들어, IA-32(Intel Architecture-32), 64 비트 확장 IA-32, x86-64, PowerPC, Sparc, MIPS, ARM, IA-64 등)를 실행할 수 있는 적어도 하나의 코어를 포함할 수 있다.
프로세서(220)는 시스템 버스(240)를 통해서 메모리(230)에 액세스할 수 있고, 메모리(230)에 저장된 명령들(instructions)을 실행할 수 있다. 예를 들어, 메모리(230)에는 하이 레벨 합성 프로그램, 로직 합성 프로그램 및 P&R 프로그램이 저장될 수 있고, 프로세서(220)가 하이 레벨 합성 프로그램, 로직 합성 프로그램 및 P&R 프로그램을 실행함으로써, 도 1의 S10 단계 및 S20 단계가 수행될 수 있다.
메모리(230)는 명령들 및 데이터 등을 저장하기 위한 저장 장소로서, 예를 들어, 운영체제(Operating System), 각종 프로그램들 및 각종 데이터를 저장할 수 있다. 메모리(400)는 DRAM(Dynamic Random Access Memory) 일 수 있으나, 이에 한정되는 것은 아니다. 메모리(400)는 휘발성 메모리(volatile memory) 또는 비휘발성 메모리(non-volatile memory) 중 적어도 하나를 포함할 수 있다. 비휘발성 메모리는 ROM(Read Only Memory), PROM(Programmable ROM), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), FRAM(Ferroelectric RAM) 등을 포함할 수 있다. 휘발성 메모리는 DRAM(Dynamic RAM), SRAM(Static RAM), SDRAM(Synchronous DRAM) 등을 포함할 수 있다. 또한 일 실시 예에 있어서, 메모리(400)는 HDD(Hard Disk Drive), SSD(Solid-State Drive), CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme digital) 또는 Memory Stick 중 적어도 하나를 포함할 수도 있다.
eFPGA(210)는 eFPGA 컨트롤러(211) 및 적어도 하나의 IP(Intellectual Property) 블록을 포함할 수 있다. eFPGA(210)는 도 2의 eFPGA(111)일 수 있다. eFPGA 컨트롤러(211)는 IP 블록 로딩 커맨드가 수신되면, IP 블록 로딩 커맨드에 응답하여 설계 가능 논리 소자를 각각 포함하는 서브 eFPGA들에 IP 블록을 구현할 수 있다. 서브 eFPGA들 각각은 로직 셀들을 포함할 수 있고, IP 블록의 특성에 따라 사용되는 로직 셀들의 수가 달라질 수 있고, 로직 셀들 간의 연결 관계가 달라질 수 있다.
예를 들어, eFPGA(210)는 제1 IP 블록(IP1) 및 제2 IP 블록(IP2)을 포함할 수 있다. 제1 IP 블록(IP1) 및 제2 IP 블록(IP2) 각각은 하이 레벨 합성 동작(예를 들어, 도 1의 S10 단계)에 의해 하드웨어, 즉, 특정 회로로 구현될 수 있다. 예시적인 실시 예에서, 제1 IP 블록(IP1) 및 제2 IP 블록(IP2) 각각은 서로 다른 서브 eFPGA들에 구현될 수 있고, 제1 IP 블록(IP1) 및 제2 IP 블록(IP2) 각각은 개별적으로 시스템 버스(240)와 연결될 수 있다. 즉, 제1 IP 블록(IP1) 및 제2 IP 블록(IP2) 각각은 개별적으로 시스템 버스(240)를 통하여 데이터를 송수신할 수 있다. 다만, 본 개시는 이에 한정되지 않으며, 제1 IP 블록(IP1) 및 제2 IP 블록(IP2)은 동일한 서브 eFPGA에 구현될 수도 있다.
eFPGA(210)는 다양한 종류의 IP 블록들을 포함할 수 있다. 예를 들어, IP 블록들은 프로세싱 유닛(processing unit), 프로세싱 유닛에 포함된 복수의 코어들(cores), MFC(Multi-Format Codec), 비디오 모듈(예를 들어, 카메라 인터페이스, JPEG(Joint Photographic Experts Group) 프로세서, 비디오 프로세서, 또는 믹서 등), 3D 그래픽 코어, 오디오 시스템, 드라이버, 디스플레이 드라이버, 휘발성 메모리, 비휘발성 메모리(non-volatile memory), 메모리 컨트롤러(memory controller), 입출력 인터페이스 블록(input and output interface block), 및 캐시 메모리(cache memory) 중 적어도 하나를 포함할 수 있다. 제1 IP 블록(IP1) 및 제2 IP 블록(IP2) 각각은 상기 다양한 종류의 IP 블록들 중 적어도 하나를 포함할 수 있다.
예시적인 실시 예에서, 전자 시스템(200)은 자주 사용되는 메모리의 독출/기입에 관한 명령들은 하드웨어 가속을 적용할 수 있다. 즉, eFPGA(210)의 제1 IP 블록(IP1)이 DMA(Direct Memory Access)로서 구동하도록 설계할 수 있다. 예를 들어, 메모리의 독출/기입에 관련된 함수인 memcpy, strncpy, malloc, calloc 등의 함수 등에 의해 메모리를 독출/기입 하는 횟수가 증가할수록 DMA와 같은 메모리 관련 IP 블록을 이용하여 실행하는 것이 프로세서(220)에서 직접 실행하는 것에 비하여 독출/기입 성능이 향상될 수 있고, 전력 소모가 감소될 수 있다. 또한, eFPGA(210)의 제1 IP 블록(IP1)이 DMA 기능에 더하기, 나누기, 곱하기, 빼기 등의 간단한 연산을 추가로 수행하도록 설계되는 경우, 프로세서(220)에서 직접 실행하는 것에 비하여 성능이 향상될 수 있다. 예시적인 실시 예에서, 전자 시스템(200)은 eFPGA(210)의 회로 구성을 DMA에 대응되도록 변경하는 데에 걸리는 시간 및, eFPGA(210)가 DMA의 동작을 수행하는 데에 걸리는 시간을 계산할 수 있고, 계산된 시간이 프로세서(220)가 DMA의 동작을 수행하는 데에 걸리는 시간보다 짧은 경우에 eFPGA(210)의 제1 IP 블록(IP1)의 회로 구성을 DMA에 대응되도록 변경할 수 있다.
시스템 버스(240)는 예를 들어, 표준 버스 규격으로서, ARM(Advanced RISC Machine) 사의 AMBA(Advanced Microcontroller Bus Architecture) 프로토콜이 적용될 수 있다. AMBA 프로토콜의 버스 타입에는 AHB(Advanced High-Performance Bus), APB(Advanced Peripheral Bus), AXI(Advanced eXtensible Interface), AXI4, ACE(AXI Coherency Extensions) 등이 포함될 수 있다. 전술된 버스 타입들 중 AXI는 IP들 사이의 인터페이스 프로토콜로서, 다중 아웃스탠딩 어드레스(multiple outstanding address) 기능과 데이터 인터리빙(data interleaving) 기능 등을 제공할 수 있다. 이외에도, 소닉사(SONICs Inc.)의 uNetwork 나 IBM사의 CoreConnect, OCP-IP의 오픈 코어 프로토콜(Open Core Protocol) 등 다른 타입의 프로토콜이 시스템 버스(240)에 적용되어도 무방할 것이다.
전자 시스템(200)은 스토리지 장치(250)를 더 포함할 수 있다. 스토리지 장치(250)에는 전자 시스템(200)이 동작하는 데에 필요한 다양한 데이터 베이스들이 저장될 수 있다. 예를 들어, 도 5의 데이터 베이스(DB)가 저장될 수 있고, 도 8의 특성 테이블(T_ip)이 저장될 수 있다.
도 3b를 참조하면, 전자 시스템(200a)은 eFPGA(210a), 프로세서(220) 및 메모리(230)를 포함할 수 있다. eFPGA(210a)는 eFPGA 컨트롤러(211), 제1 IP 블록(IP1) 및 제2 IP 블록(IP2)을 연결하는 eFPGA 버스(217a)를 포함할 수 있다. 예를 들어, eFPGA 버스(217a)는 표준 버스 규격으로서, AHB, APB, AXI, AXI4, ACE 중 하나가 적용될 수 있으나, 이에 한정되는 것은 아니다.
예시적인 실시 예에서, 제1 IP 블록(IP1) 및 제2 IP 블록(IP2) 각각은 서로 다른 서브 eFPGA들에 구현될 수 있고, 제1 IP 블록(IP1) 및 제2 IP 블록(IP2) 각각은 개별적으로 eFPGA 버스(217a)와 연결될 수 있다. 즉, 제1 IP 블록(IP1) 및 제2 IP 블록(IP2) 각각은 개별적으로 eFPGA 버스(217a)를 통하여 데이터를 송수신할 수 있다. 다만, 본 개시는 이에 한정되지 않으며, 제1 IP 블록(IP1) 및 제2 IP 블록(IP2)은 동일한 서브 eFPGA에 구현될 수도 있다.
도 4는 본 개시의 예시적인 실시 예에 따른 전자 시스템의 동작을 설명하기 위한 순서도이다. 도 5 및 도 6은 각각 도 4의 각 단계들을 설명하기 위한 도면이다. 예시적인 실시 예에서, 도 4의 S100 단계는 도 1의 S20 단계가 수행된 후 수행될 수 있다.
도 4 및 도 5를 참조하면, S110 단계에서, 전자 시스템은 소스 코드를 컴파일하여 기준 어셈블리 코드를 생성할 수 있다. 예를 들어, 도 1의 S20 단계가 수행되어 타겟 회로 구성이 결정되면, 결정된 타겟 회로 구성에 대응되는 하이 레벨 언어로 기술된 코드들(예를 들어, 도 1의 하이 레벨 언어의 코드들(D10))이 소스 코드로서 단계 S110에서 컴파일러에 의해 컴파일되어 기준 어셈블리 코드로 변환될 수 있다. 이 때, 예시적인 실시 예에서, 컴파일러는 도 3a의 메모리에 저장되는 소프트웨어일 수 있고, 프로세서(220)가 컴파일러에 액세스 함으로써, 단계 S110가 수행될 수 있으나, 이에 한정되는 것은 아니며 하드웨어로 구성될 수도 있다.
예시적인 실시 예에서, 상기 소스 코드는, 프로세서(220)에 의해 소프트웨어가 구동됨으로써 처리되는 것과 비교하여, 하드웨어로로 구현된 설계 가능 논리 소자에 의해 처리되는 것이 처리 속도 및/또는 전력 소모 측면에서 유리한 특정 명령에 대응될 수 있다. 예를 들어, 도 3a에 대한 설명에서 상술한 바와 같이, 자주 사용되는 메모리의 독출/기입에 관한 명령들은 프로세서에 의해 실행되는 것보다 하드웨어 가속을 통해 하드웨어로 구현되는 것이 처리 속도 및/또는 전력 소모 측면에서 유리할 수 있다.
S120 단계에서, 전자 시스템은 S110 단계에서 변환된 기준 어셈블리 코드의 패턴을 저장하여, 기준 어셈블리 코드에 대한 데이터 베이스(DB)를 생성할 수 있다. 데이터 베이스(DB)에는 또한, 기준 어셈블리 코드에 대응되는 회로 구성에 대한 정보도 저장될 수 있다. 예를 들어, 데이터 베이스(DB)에는 도 1의 S20 단계에 의해 생성된 기준 어셈블리 코드에 대응되는 타겟 회로의 레이아웃에 대한 정보가 저장될 수 있다.
생성된 데이터 베이스(DB)는 전자 시스템의 스토리지 장치에 저장될 수 있다. 변환된 기준 어셈블리 코드는, 변환에 사용된 컴파일러의 종류(Compiler1, Compiler 2) 및 컴파일러의 옵션(Op1, Op2)에 따라 달라질 수 있다. 따라서, 데이터 베이스(DB)에 기준 어셈블리 코드가 저장될 때에는, 컴파일러의 종류(Compiler1, Compiler 2) 및 컴파일러의 옵션(Op1, Op2)에 대한 정보도 함께 저장될 수 있다.
도 4 및 도 6을 참조하면, S130 단계에서, 전자 시스템은 머신 코드를 어셈블리 코드로 변환할 수 있다. 이 때, 머신 코드는 외부로부터 새로이 수신된 코드에 대응될 수 있고, 또는 예를 들어, 머신 코드는 외부로부터 새로이 수신된 어셈블리 코드가 전자 시스템의 메모리(예를 들어, 도 3a의 230)에 저장되는 과정에서 어셈블러에 의해 새로운 머신 코드로 변환되어 저장된 것일 수 있다. 또는, 예를 들어, 외부로부터 새로이 수신된 소스 코드가 전자 시스템의 메모리(230)에 저장되는 과정에서 컴파일러에 의해 새로운 머신 코드로 변환되어 저장된 것일 수 있다. 즉, 변환되어 메모리(230)에 저장된 머신 코드가 이 후 단계를 위해, S130 단계에서 다시 어셈블리 코드로 재변환될 수 있다. 상기 머신 코드는 프로세서(220)에 의해 소프트웨어적으로 처리되도록 구성된 명령어를 포함할 수 있다.
S140 단계에서, 전자 시스템은, 변환된 어셈블리 코드 및 데이터 베이스(DB)에 저장된 기준 어셈블리 코드를 매칭할 수 있다. 전자 시스템은 S130 단계에서 변환된 어셈블리 코드의 패턴을 추출하여 데이터 베이스(DB)에 저장된 기준 어셈블리 코드와 비교할 수 있다.
S130 단계를 통해 변환된 어셈블리 코드는 최적화 단계를 거칠 수 있고, 명령어(instructions)의 순서가 뒤바뀔 수도 있고, 데이터 베이스(DB)에 저장된 기준 어셈블리 코드와 1:1 매칭되지 않을 수 있다. 예시적인 실시 예에서, 전자 시스템은 현재 수행되는 명령어와 관련이 없는 어셈블리 코드는 제외하고, 현재 수행되는 명령어와 관련이 있는 어셈블리 코드를 추출하여 데이터 베이스(DB)에 저장된 기준 어셈블리 코드와 매칭할 수 있다. 예를 들어, 현재 수행되는 명령어와의 관련성은 액세스하는 레지스터에 대한 정보 및 메모리 어드레스 등을 이용하여 결정될 수 있다.
S150 단계에서, 전자 시스템은, 매칭된 기준 어셈블리 코드에 대응되도록 eFPGA(예를 들어, 도 3a의 210)의 회로를 구성할 수 있다. 즉, 매칭된 기준 어셈블리 코드에 대응되는 IP 블록이 eFPGA(210)에 구현될 수 있다.
예시적인 실시 예에서, 전자 시스템은 매칭된 기준 어셈블리 코드에 대응되는 하드웨어 회로 구성의 입/출력 포트의 사이즈가 상기 새로운 머신 코드에 따른 입/출력 포트의 사이즈보다 크거나 같은 경우에, 매칭된 기준 어셈블리 코드에 대응되는 회로 구성으로 eFPGA(210)의 회로를 변경할 수 있다. 전자 시스템은 매칭된 기준 어셈블리 코드에 대응되는 하드웨어 회로 구성의 입/출력 포트의 사이즈가 상기 새로운 머신 코드에 따른 입/출력 포트의 사이즈(bitwidth)보다 작은 경우에는, 타입 캐스팅(type casting)을 통해 상기 새로운 머신 코드에 따른 입/출력 포트의 사이즈를 조절할 수 있다.
예시적인 실시 예에서, 전자 시스템은 S150 단계에 따라 설계된 eFPGA(210)의 회로에 의한 입/출력 데이터와, 상기 머신 코드를 프로세서(220)가 처리함으로써 소프트웨어로 구동될 때의 입/출력 데이터가 서로 일치되는지 확인할 수 있다. 서로 일치되지 않는 경우에는, S140 단계 및 S150 단계를 재수행할 수 있다.
본 개시에 따른 전자 시스템은, 데이터 베이스(DB)를 포함하므로 도 1에 도시된 S10 단계 및 S20 단계를 직접적으로 거치지 않더라도, 데이터 베이스(DB)에 저장된 기준 어셈블리 코드와의 매칭을 통해 eFPGA(210)의 회로 구성을 변경할 수 있다. 따라서, 프로세서에 의해 소프트웨어적으로 처리되는 태스크를 eFPGA(210)에서 처리하기 위해 eFPGA(210)의 회로 구성을 변경하는 데에 걸리는 시간이 감소될 수 있다.
또한, 전자 시스템에서 새로운 어플리케이션이 동작하기 위하여 컴파일된 바이너리 파일을 다운받은 경우에, 바이너리 파일에 저장된 명령어들의 집합으로 이루어진 파일을 데이터 베이스(DB)와 비교하여 어셈블리 언어 레벨에서 분석할 수 있다. 이러한 분석을 통해 새로운 어플리케이션에 따른 태스크들을 처리할 때, 프로세서(220)를 통해 소프트웨어적으로 처리할지 또는 새로운 어플리케이션에 대응되도록 eFPGA(210)를 구성하여 하드웨어적으로 처리할지를 결정할 수 있다.
도 7은 본 개시의 예시적인 실시 예에 따른 전자 시스템의 스케줄러의 동작을 설명하기 위한 도면이다. 도 8은 본 개시의 예시적인 실시 예에 따른 전자 시스템의 eFPGA에 로딩된 IP 블록들에서 어플리케이션이 처리될 때의 특성들이 저장된 특성 테이블을 도시한 도면이다. 도 9는 본 개시의 예시적인 실시 예에 따른 전자 시스템의 서로 다른 하드웨어들에 의해 태스크들이 각각 처리될 때의 특성을 나타내는 그래프이다.
도 7 및 도 8을 참조하면, 전자 시스템은 스케줄러(123)를 포함할 수 있다. 스케줄러(123)는 태스크들을 서로 다른 하드웨어들에 할당할 수 있다.
스케줄러(123)는 특성 테이블(T_ip)에 기초하여, 복수의 태스크들, 예를 들어, 제1 어플리케이션(151), 제2 어플리케이션(152) 및 제3 어플리케이션(153) 각각에 따른 태스크들을 CPU(112), GPU(113), DSP(114) 및 eFPGA(111)에 할당할 수 있다. 예시적인 실시예에서, 스케줄러(123)는 도 2의 운영체제(120)의 일부로 소프트웨어일 수 있고, 도 3a의 메모리(2230)에 저장될 수 있고, 프로세서(220)가 액세스함으로써 동작할 수 있다. 다만, 본 개시는 이에 제한되지 않으며, 스케줄러(123)는 하드웨어일 수도 있다.
예시적인 실시 예에서, 특성 테이블(T_ip)에는 하이 레벨 합성 동작(예를 들어, 도 1의 S10 단계)에 의해 하드웨어로 구현된 eFPGA(111)의 IP 블록에 대한 특성들에 대한 정보가 저장될 수 있다. 특성 테이블(T_ip)은 도 1의 S20 단계에 따라 하드웨어로 구현된 IP 블록에 대한 특성들을 포함할 수 있다.
예를 들어, 특성 테이블(T_ip)은 어플리케이션의 ID(APP ID)에 대응하는 어플리케이션의 스레드 ID, eFPGA의 ID, 로딩 시간, IP 블록의 동작 시간, 동작 시작 시각, 동작 종료 시각, IP 블록이 사용하는 자원의 크기(Area), IP 블록의 동작 클락 주파수, IP 블록의 파워 게이팅 여부/가부, 및 IP 블록의 소모 전력에 대한 정보를 포함할 수 있다.
eFPGA(111)의 ID는 IP 블록이 로딩되는 서브 eFPGA를 식별하기 위한 ID일 수 있고, 로딩 시간은 eFPGA(111)에 IP 블록을 로딩하는 데에 걸리는 시간을 의미할 수 있다. IP 블록의 동작 시간은 IP 블록이 어플리케이션에 따른 태스크들을 수행하는 데에 걸리는 시간일 수 있고, 동작 시작 시각 및 동작 종료 시각 각각은 IP 블록의 동작의 시작 시각 및 종료 시각을 의미할 수 있다. IP 블록이 사용하는 자원의 크기는 IP 블록이 eFPGA(111)에서 사용한 자원의 수, 즉, 사용한 로직 셀의 수, 사용한 RAM의 수, 입/출력 포트의 사이즈 등을 포함할 수 있다. IP 블록의 동작 클락 주파수는 IP 블록이 동작 시에 적정한 클락 신호의 주파수를 의미할 수 있고, IP 블록의 파워 게이팅 여부/가부는 IP 블록에 제공되는 전력에 대해 파워 게이팅 동작을 수행 중인지 또는 IP 블록에 제공되는 전력에 대해 파워 게이팅 동작이 가능한지를 의미할 수 있다. IP 블록의 소모 전력은 특정 어플리케이션에 대한 태스크들을 처리하는 데에 소모되는 전력을 의미할 수 있다.
또한, 특성 테이블(T_ip)은 eFPGA(111)의 IP 블록에 대한 정보 외에 추가로, 어플리케이션의 ID(APP ID)에 대응하는 CPU(112), GPU(113) 및 DSP(114)에 대한 정보를 더 포함할 수 있다. 예를 들어, CPU(112), GPU(113) 및 DSP(114) 각각이 특정 어플리케이션에 대한 태스크들을 처리하는 동안 걸리는 시간에 대한 정보 및 CPU(112), GPU(113) 및 DSP(114) 각각이 특정 어플리케이션에 대한 태스크들을 처리하는 데에 소모되는 전력에 대한 정보가 특성 테이블(T_ip)에 저장될 수 있다.
예시적인 실시 예에서, 전자 장치는 프로파일러를 더 포함할 수 있고, 특성 테이블(T_ip)에 저장된 정보들은 프로파일러에 의해 저장될 수 있다. 예를 들어, 프로파일러는 CPU 프로파일러, GPU 프로파일러, DSP 프로파일러, 및 eFPGA 프로파일러를 포함할 수 있다. CPU 프로파일러, GPU 프로파일러, DSP 프로파일러, 및 eFPGA 프로파일러 각각은 대응하는 CPU(112), GPU(113), DSP(114) 및 eFPGA(111)이 태스크들을 수행하는 데에 걸리는 시간 및 소모 전력을 측정할 수 있고, 이에 대한 정보를 특성 테이블(T_ip)에 저장될 수 있다. 예시적인 실시예에서, 프로파일러는 소프트웨어로 구현될 수 있으나, 본 개시는 이에 한정되지 않으며 하드웨어로 구현될 수도 있다.
도 7 내지 도 9를 참조하면, 스케줄러(123)는 특성 테이블(T_ip)을 이용하여, 제1 어플리케이션(151), 제2 어플리케이션(152) 및 제3 어플리케이션(153)에 따른 태스크들 중 적어도 일부인 제1 태스크, 제2 태스크 및 제3 태스크를 CPU(112), GPU(113), DSP(114) 및 eFPGA(111)에서 처리할 때 소요되는 시간 및 소모되는 전력을 계산할 수 있다. 예시적인 실시 예에서, 제1 어플리케이션(151), 제2 어플리케이션(152) 및 제3 어플리케이션(153)이 다양한 전자 시스템에서 일반적으로 자주 실행되는 경우, 클라우드 컴퓨팅을 통해 서로 다른 전자 시스템에서 상기 계산된 결과가 공유될 수 있다.
스케줄러(123)는 계산된 소요 시간 및 소모 전력에 기초하여, 스케줄러(123)는 제1 태스크, 제2 태스크 및 제3 태스크를 수행될 때, CPU(112), GPU(113), DSP(114) 및 eFPGA(111) 중에서 제1 태스크, 제2 태스크 및 제3 태스크 각각을 처리하기 위한 최적의 조합을 선택할 수 있다. 예를 들어, 스케줄러(123)는 제1 태스크는 소요 시간 및 소모 전력이 모두 낮은 eFPGA(111)에서 처리하도록 할당할 수 있고, 제2 태스크는 소요 시간 및 소모 전력이 모두 낮은 DSP(114)에서 처리하도록 할당할 수 있고, 제3 태스크는 eFPGA(111) 및 DSP(114)를 제외한 CPU(112) 및 GPU(113) 중에서 GPU(113)에서 처리하도록 할당할 수 있다. 따라서, 본 개시에 따른 전자 시스템은 특정 어플리케이션에 따른 태스크들을 처리함에 있어서, 처리 속도 및 전력 소모 등을 고려하여 소프트웨어적으로 처리할지 또는 하드웨어적으로 처리할지를 판단할 수 있고, CPU(112), GPU(113), DSP(114) 및 eFPGA(111) 각각의 워크 로드(word load)의 밸런스를 유지할 수 있다.
eFPGA(111)에서 제3 태스크를 처리하는 것으로 결정되면, 전자 시스템은 제3 태스크를 처리하기 위한 IP 블록을 eFPGA(111)에 로딩하기 위하여, 도 1의 S10 및 S20 단계를 수행할 수 있다. 또는, eFPGA(111)에서 제3 태스크를 처리하는 것으로 결정되면, 전자 시스템은 제3 태스크를 처리하기 위한 IP 블록을 eFPGA(111)에 로딩하기 위하여, 도 4의 S130 단계 내지 S150 단계를 수행할 수 있다. 예를 들어, 제3 태스크에 대응되는 코드는 도 6의 머신 코드일 수 있고, 전자 시스템은 데이터 베이스(예를 들어, 도 6의 DB)에 저장된 기준 어셈블리 코드와 상기 머신 코드를 변환한 어셈블리 코드를 매칭시킴으로써, 매칭된 기준 어셈블리 코드에 대응되는 회로 구성의 IP 블록을 eFPGA(111)에 로딩할 수 있다.
도 10는 본 개시의 예시적인 실시 예에 따른 전자 시스템의 동작을 설명하기 위한 순서도이다. 예시적인 실시 예에서, 도 10의 S200 단계는 도 1의 S20 단계에 포함될 수 있고, 또는 도 1의 S20 단계 이후에 수행될 수도 있다. 예시적인 실시 예에서, 도 10의 S200 단계는 도 4의 S150 단계에 포함될 수 있고, 또는 도 4의 S150 단계 이후에 수행될 수도 있다.
도 10을 참조하면, S210 단계에서, 전자 시스템은 설계된 eFPGA, 즉, eFPGA의 IP 블록에서 태스크들을 수행할 때의 전력 특성을 분석할 수 있다. 예를 들어, eFPGA의 IP 블록이 전력이 필요한 구간 및 전력이 필요하지 않은 구간에 대해 분석할 수 있다.
S220 단계에서, 전자 시스템은 설계된 eFPGA, 즉, eFPGA의 IP 블록에서 태스크들을 수행할 때의 클락 신호의 특성을 분석할 수 있다. 예를 들어, 전자 시스템은 eFPGA의 IP 블록에 포함된 플립-플랍의 토글(toggle) 량에 대해 분석할 수 있고, 토글이 발생하지 않는 구간이 있는지 판단할 수 있다. 플립-플랍의 토글 량이 많을수록 eFPGA의 IP 블록은 높은 주파수의 클락 신호가 필요할 수 있다.
S230 단계에서, 전자 시스템은 분석 결과에 따라 eFPGA의 IP 블록이 파워 게이팅 소자 및 클락 게이팅 소자를 선택적으로 포함하도록 eFPGA의 회로를 구성할 수 있다. 예를 들어, eFPGA의 IP 블록이 전력이 필요한 구간이 짧고 전력이 필요하지 않은 구간이 긴 경우에는 파워 게이팅 소자를 더 포함하도록 eFPGA의 회로를 구성할 수 있다. 또는 예를 들어, eFPGA의 IP 블록에 포함된 플립-플랍에서 토글이 발생하지 않는 구간이 포함되는 경우에는, 클락 게이팅 소자를 더 포함하도록 회로를 구성할 수 있다.
반면, 전자 시스템은 eFPGA의 IP 블록에 지속적인 전력이 필요하고, eFPGA의 IP 블록에 포함된 플립-플랍의 토글 량이 많은 경우에는, eFPGA의 IP 블록이 파워 게이팅 소자 및 클락 게이팅 소자 모두를 포함하지 않도록 회로가 구성될 수 있다.
본 개시에 따른 전자 시스템은 eFPGA의 회로를 구성하는 데에 있어서, 파워 게이팅 소자 및 클락 게이팅 소자 선택적으로 더 포함하도록 구성하여 eFPGA에서 불필요하게 소모되는 전력을 감소시키도록 설계할 수 있다.
도 11a 및 도 11b는 본 개시의 예시적인 실시 예에 따른 전자 시스템의 동작을 설명하기 위한 도면이다. 도 11a은 CPU, GPU 및 DSP에 의해 어플리케이션이 실행되는 경우를 도시한 것이며, 도 11b는 CPU, GPU, DSP 및 eFPGA에 의해 어플리케이션이 실행되는 경우를 도시한 것이다.
도 11a를 참조하면, 메모리(예를 들어, 도 3a의 230)에는 어플리케이션을 실행하기 위한 프로그램들이 저장될 수 있다. 예를 들어, CPU 코드들, GPU 라이브러리 및 DSP 라이브러리가 메모리(230)에 저장될 수 있다. CPU 코드들, GPU 라이브러리 및 DSP 라이브러리를 이용하여, CPU-GPU-CPU-DSP-CPU 순서로 어플리케이션을 실행할 수 있다.
이 때, 전자 시스템은 CPU 코드들, GPU 라이브러리 및 DSP 라이브러리 중 적어도 일부는 도 1의 S10 단계 및 S20 단계를 통해 하드웨어로 구현될 수 있는 것으로 판단할 수 있다. 또는, 전자 시스템은 CPU 코드들, GPU 라이브러리 및 DSP 라이브러리 중 적어도 일부는 도 4의 S130 단계 내지 S140 단계를 통해 하드웨어로 구현될 수 있는 것으로 판단할 수 있다. 예를 들어, 점선으로 도시된 부분은 하드웨어로 구현될 수 있는 것으로 판단된 부분일 수 있다.
도 11a 및 도 11b를 참조하면, 전자 시스템은, 하드웨어로 구현될 수 있는 것으로 판단된 CPU 코드들, GPU 라이브러리 및 DSP 라이브러리 중 적어도 일부를 하드웨어인 eFPGA로 변환할 수 있고, eFGPA에 의해 어플리케이션이 실행될 수 있다. 예시적인 실시예에서, 전자 시스템은, 하드웨어로 구현될 수 있는 것으로 판단된 CPU 코드들, GPU 라이브러리 및 DSP 라이브러리 중 CPU, GPU 및 DSP에 의해 실행되지 않고, 하드웨어로 구현된 eFPGA에 의해 수행되는 것이 어플리케이션 처리 속도 측면 또는, 어플리케이션의 처리에 따른 소모 전력 측면에서 유리하다고 판단될 때, CPU 코드들, GPU 라이브러리 및 DSP 라이브러리 중 적어도 일부를 하드웨어인 eFPGA로 변환할 수 있다.
eFPGA 라이브러리가 메모리(230)에 저장될 수 있다. CPU 코드들, GPU 라이브러리, DSP 라이브러리 및 eFPGA 라이브러리를 이용하여, CPU-GPU-eFPGA-CPU-DSP-eFPGA-CPU 순서로 어플리케이션을 실행할 수 있다. 도 10a에 도시된 어플리케이션 처리 시간(ta)에 비하여 도 10b에 도시된 eFPGA를 이용한 어플리케이션 처리 시간(tb)이 더 짧을 수 있다.
도 12a 및 도 12b는 본 개시의 예시적인 실시 예에 따른 전자 시스템에 포함되는 eFPGA의 블록도이다.
도 12a를 참조하면, eFPGA(210)는 제1 서브 eFPGA(SUB1)에 구현된 제1 IP 블록(IP_A1) 및 제2 서브 eFPGA(SUB2)에 구현된 제2 IP 블록(IP_A2)을 포함할 수 있다. 예를 들어, 제1 IP 블록(IP_A1)은 제1 서브 eFPGA(SUB1)의 적어도 일부 영역에 구현될 수 있고, 제2 IP 블록(IP_A2)은 제2 서브 eFPGA(SUB2)의 적어도 일부 영역에 구현될 수 있다. 즉, 제1 서브 eFPGA(SUB1) 및 제2 서브 eFPGA(SUB2) 각각은 복수의 로직 셀들을 포함할 수 있고, 제1 IP 블록(IP_A1)은 제1 서브 eFPGA(SUB1)에 포함된 로직 셀들 중 적어도 일부의 로직 셀들을 이용하여 구현될 수 있고, 제2 IP 블록(IP_A2)은 제2 서브 eFPGA(SUB2)에 포함된 로직 셀들 중 적어도 일부의 로직 셀들을 이용하여 구현될 수 있다.
제1 서브 eFPGA(SUB1) 및 제2 서브 eFPGA(SUB2) 각각은 개별적으로 시스템 버스(예를 들어, 도 3a의 240)와 연결되거나, 개별적으로 eFPGA 버스(예를 들어, 도 3b의 217a)와 연결될 수 있다.
도 12b를 참조하면, eFPGA 컨트롤러(211)는 IP 블록 로딩 커맨드(CMD_IL)가 수신되면, 서브 eFPGA들에 새로운 제3 IP 블록(IP_N)을 구현할 수 있다. 예를 들어, eFPGA(210)에 포함된 서브 eFPGA들 중에서 IP 블록이 로딩되지 않은 서브 eFPGA가 있는 경우에는, eFPGA 컨트롤러(211)는 IP 블록이 로딩되지 않은 서브 eFPGA에 새로운 제3 IP 블록(IP_N)을 구현할 수 있다.
반면, 예시적인 실시 예에서, eFPGA(210)에 포함된 서브 eFPGA들 중에서 IP 블록이 로딩되지 않은 서브 eFPGA가 없는 경우에는, eFPGA 컨트롤러(211)는 IP 블록이 로딩된 서브 eFPGA들 중에서 새로운 제3 IP 블록(IP_N)을 구현할 영역이 있는 서브 eFPGA, 예를 들어, 제1 서브 eFPGA(SUB1)에 제3 IP 블록(IP_N)을 구현할 수 있다. 또는, 예시적인 실시 예에서, eFPGA 컨트롤러(211)는 제1 IP 블록(IP_A1) 및 제2 IP 블록(IP_A2) 중 하나의 IP 블록을 다른 서브 eFPGA에 재구현할 수 있다. 예를 들어, 제2 IP 블록(IP_A2)을 제1 서브 eFPGA(SUB1)에 재구현할 수 있고, 영역이 확보된 제2 서브 eFPGA(SUB2)에 제3 IP 블록(IP_N)을 구현할 수 있다.
예시적인 실시 예에서, eFPGA 컨트롤러(211)는 제1 서브 eFPGA(SUB1)의 일부 영역에 새로운 제3 IP 블록(IP_N)을 구현하기 위하여, 제1 서브 eFPGA(SUB1) 및 제2 서브 eFPGA(SUB2) 각각에 남은 영역(예를 들어, LUT, 플립플랍, RAM, 입출력 패드 등)을 확인할 수 있다. 전자 시스템은 상기 남은 영역에 기초하여 제1 IP 블록(IP_A1)의 회로 구성에 대응되는 코드에 대한 하이 레벨 합성 동작을 재수행할 수 있고, 상대적으로 사이즈가 감소된 제1 IP 블록(IP_A1')을 제1 서브 eFPGA(SUB1)에 구현할 수 있다. 제1 IP 블록(IP_A1')이 구현된 영역을 제외한 제1 서브 eFPGA(SUB1)의 일부 영역에 새로운 제3 IP 블록(IP_N)이 구현될 수 있다.
예시적인 실시 예에서, 전자 시스템은 제1 IP 블록(IP_A1)의 성능 향상, 예를 들어, 처리 속도 증가를 위하여, 상기 남은 영역에 기초하여 제1 IP 블록(IP_A1)의 회로 구성에 대응되는 코드에 대한 하이 레벨 합성 동작을 재수행할 수 있고, 상대적으로 사이즈가 증가된 제1 IP 블록을 제1 서브 eFPGA(SUB1)에 재구현할 수도 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시 예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시 예들을 설명하였으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. FPGA(Field Programmable Gate Array)를 포함하는 전자 시스템의 동작 방법에 있어서,
    하이 레벨 언어의 코드를 하드웨어 기술 언어의 코드로 합성하는 하이 레벨 합성(High Level Synthesis) 단계;
    상기 하드웨어 기술 언어의 코드에 따라 상기 FPGA에 포함된 IP 블록(Intellectual Property)의 회로를 설계하는 단계; 및
    상기 하이 레벨 언어의 코드에 대응되는 기준 어셈블리 코드 및 상기 IP 블록의 회로 구성에 대한 정보를 포함하는 데이터 베이스를 생성하는 단계; 를 포함하는 전자 시스템의 동작 방법.
  2. 제1 항에 있어서,
    상기 전자 시스템의 메모리에 저장된 머신 코드를 어셈블리 코드로 변환하는 단계;
    상기 변환된 어셈블리 코드와 상기 데이터 베이스의 기준 어셈블리 코드를 매칭하는 단계; 및
    매칭된 상기 기준 어셈블리 코드에 대응되도록 상기 FPGA에 포함된 IP 블록의 회로를 설계하는 단계;를 더 포함하는 것을 특징으로 하는 시스템 동작 방법.
  3. 제2 항에 있어서,
    상기 변환된 어셈블리 코드와 상기 데이터 베이스의 기준 어셈블리 코드를 매칭하는 단계는, 상기 변환된 어셈블리 코드의 명령어와 상기 기준 어셈블리 코드의 명령어를 매칭하는 것을 특징으로 하는 전자 시스템의 동작 방법.
  4. 제2 항에 있어서,
    복수의 태스크들 중 적어도 일부를 상기 FPGA에 할당하는 단계;를 더 포함하고 ,
    상기 머신 코드는 상기 FPGA에 할당된 일부의 태스크에 대응되는 코드인 것을 특징으로 하는 전자 시스템의 동작 방법.
  5. 제2 항에 있어서,
    매칭된 상기 기준 어셈블리 코드에 대응되도록 상기 FPGA에 포함된 IP 블록의 회로를 설계하는 단계는,
    상기 기준 어셈블리 코드에 대응되는 회로 구성의 전력 특성 및 클락 신호 특성을 분석하는 단계; 및
    상기 분석 결과에 기초하여 상기 IP 블록이 파워 게이팅 소자 및 클락 게이팅 소자를 선택적으로 포함하도록 상기 IP 블록의 회로를 설계하는 단계;를 포함하는 것을 특징으로 하는 전자 시스템의 동작 방법.
  6. 하이 레벨 언어의 코드를 하드웨어 기술 언어의 코드로 합성하는 하이 레벨 합성 프로그램이 저장되는 메모리;
    상기 하이 레벨 합성 프로그램에 액세스하는 프로세서;
    상기 프로세서가 상기 하이 레벨 합성 프로그램에 액세스한 결과에 따라 회로 구성이 설계되는 적어도 하나의 IP 블록을 포함하는 FPGA; 및
    상기 하이 레벨 언어의 코드에 대응되는 기준 어셈블리 코드 및 상기 IP 블록의 회로 구성에 대한 정보를 포함하는 데이터 베이스가 저장된 스토리지 장치;를 포함하는 전자 시스템.
  7. 제6 항에 있어서,
    상기 데이터 베이스는
    상기 하이 레벨 언어의 코드를 상기 기준 어셈블리 코드로 변환하는 컴파일러의 종류에 따라 상기 기준 어셈블리 코드를 분류하는 것을 특징으로 하는 전자 시스템.
  8. 제6 항에 있어서,
    상기 스토리지 장치는, 상기 적어도 하나의 IP 블록의 회로 구성에 따른 상기 IP 블록의 동작 특성에 대한 정보를 포함하는 특성 테이블을 더 저장하는 것을 특징으로 하는 전자 시스템.
  9. FPGA를 포함하는 전자 시스템의 동작 방법에 있어서,
    상기 전자 시스템에서 처리되는 복수의 태스크들에 대응되는 복수의 코드들 중 제1 코드 및 제2 코드를 선택하는 단계;
    상기 제1 코드 및 상기 제2 코드 각각을 하드웨어 기술 언어의 코드로 변환하는 단계;
    상기 제1 코드가 변환된 상기 하드웨어 기술 언어의 코드에 따라, 제1 IP 블록을 상기 FPGA의 제1 서브 FPGA에 로딩하는 단계;
    상기 제2 코드가 변환된 상기 하드웨어 기술 언어의 코드에 따라, 제2 IP 블록을 상기 FPGA의 제2 서브 FPGA에 로딩하는 단계;를 포함하는 것을 특징으로 하는 전자 시스템의 동작 방법.
  10. 제9 항에 있어서,
    상기 복수의 코드들 중 선택된 제3 코드를 하드웨어 기술 언어의 코드로 변환하는 단계; 및
    상기 제3 코드가 변환된 상기 하드웨어 기술 언어의 코드에 따라, 제3 IP 블록을 상기 제1 서브 FPGA에 로딩하는 단계;를 더 포함하고,
    상기 제3 IP 블록을 상기 제1 서브 FPGA에 로딩하는 단계는,
    상기 제1 코드를 하드웨어 기술 언어의 코드로 재변환하는 단계; 및
    상기 제1 코드가 재변환된 상기 하드웨어 기술 언어의 코드에 대응되는 IP 블록을 상기 제1 서브 FPGA에 로딩하는 단계;를 포함하는 것을 특징으로 하는 전자 시스템의 동작 방법.
KR1020190066132A 2019-06-04 2019-06-04 Fpga를 포함하는 전자 시스템 및 이의 동작 방법 KR20200139525A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020190066132A KR20200139525A (ko) 2019-06-04 2019-06-04 Fpga를 포함하는 전자 시스템 및 이의 동작 방법
US16/802,927 US11012075B2 (en) 2019-06-04 2020-02-27 Electronic system including FPGA and operation method thereof
CN202010297936.0A CN112035397B (zh) 2019-06-04 2020-04-15 包括fpga的电子系统及其操作方法
US17/242,737 US11967952B2 (en) 2019-06-04 2021-04-28 Electronic system including FPGA and operation method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190066132A KR20200139525A (ko) 2019-06-04 2019-06-04 Fpga를 포함하는 전자 시스템 및 이의 동작 방법

Publications (1)

Publication Number Publication Date
KR20200139525A true KR20200139525A (ko) 2020-12-14

Family

ID=73579667

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190066132A KR20200139525A (ko) 2019-06-04 2019-06-04 Fpga를 포함하는 전자 시스템 및 이의 동작 방법

Country Status (3)

Country Link
US (2) US11012075B2 (ko)
KR (1) KR20200139525A (ko)
CN (1) CN112035397B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230126364A (ko) 2022-02-23 2023-08-30 삼성전자주식회사 하드웨어 최적화를 위한 하이레벨 합성 방법 및 장치
WO2023195658A1 (ko) * 2022-04-08 2023-10-12 네이버 주식회사 트랜스포머 기반 언어 서비스 가속화를 위한 저비용 다중 fpga 가속 시스템

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200139525A (ko) * 2019-06-04 2020-12-14 삼성전자주식회사 Fpga를 포함하는 전자 시스템 및 이의 동작 방법
TWI776338B (zh) * 2020-12-30 2022-09-01 國立成功大學 應用於圖形處理器的編譯器及非暫態電腦可讀式儲存媒體
US20220321403A1 (en) * 2021-04-02 2022-10-06 Nokia Solutions And Networks Oy Programmable network segmentation for multi-tenant fpgas in cloud infrastructures
CN113255254B (zh) * 2021-04-22 2024-01-19 江苏省电力试验研究院有限公司 一种dsp与zynq架构的控制器及数据传输设计方法

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5910898A (en) * 1995-12-14 1999-06-08 Viewlogic Systems, Inc. Circuit design methods and tools
US5841967A (en) * 1996-10-17 1998-11-24 Quickturn Design Systems, Inc. Method and apparatus for design verification using emulation and simulation
US6081473A (en) * 1998-12-15 2000-06-27 Lattice Semiconductor Corporation FPGA integrated circuit having embedded sram memory blocks each with statically and dynamically controllable read mode
US7240303B1 (en) * 1999-11-30 2007-07-03 Synplicity, Inc. Hardware/software co-debugging in a hardware description language
US7343594B1 (en) 2000-08-07 2008-03-11 Altera Corporation Software-to-hardware compiler with symbol set inference analysis
KR100434240B1 (ko) * 2001-02-27 2004-06-04 (주)다이나릿시스템 고수준 프로그래밍 언어를 이용한 회로내 에뮬레이션을위한 장치 및 방법
US7827510B1 (en) * 2002-06-07 2010-11-02 Synopsys, Inc. Enhanced hardware debugging with embedded FPGAS in a hardware description language
US7356672B2 (en) 2004-05-28 2008-04-08 The Regents Of The University Of California Warp processor for dynamic hardware/software partitioning
WO2006004710A2 (en) * 2004-06-30 2006-01-12 Coherent Logix Incorporated Execution of hardware description language (hdl) programs
JP3735723B1 (ja) * 2004-09-08 2006-01-18 国立大学法人金沢大学 ハードウエア記述言語合成ツール及びそれを利用した集積回路の設計方法
US8015395B1 (en) * 2004-12-22 2011-09-06 Rmt, Inc. Computer having reconfigurable field programmable gate array
US20060236278A1 (en) 2005-04-19 2006-10-19 International Business Machines Corporation Method of automatic generation of micro clock gating for reducing power consumption
US7386819B1 (en) * 2005-07-28 2008-06-10 Altera Corporation Methods of verifying functional equivalence between FPGA and structured ASIC logic cells
US8775147B1 (en) * 2006-05-31 2014-07-08 The Mathworks, Inc. Algorithm and architecture for multi-argument associative operations that minimizes the number of components using a latency of the components
JP2008282360A (ja) 2007-05-14 2008-11-20 Toshiba Corp 低消費電力回路用高位合成装置及び高位合成方法及びそのプログラム
US8327316B2 (en) * 2008-09-30 2012-12-04 Ics Triplex Isagraf Inc. Compilation model
WO2010113330A2 (en) 2009-03-31 2010-10-07 Nec Corporation Method and apparatus for design space exploration in high level synthesis
JP2011192001A (ja) 2010-03-15 2011-09-29 Toshiba Corp 高位合成装置及び高位合成方法
CN102163248B (zh) * 2011-04-02 2012-12-05 北京大学深圳研究生院 一种集成电路的高级综合方法
CN102156655B (zh) * 2011-05-05 2014-04-02 北京大学深圳研究生院 高级语言代码的生成方法及其产生器
US8547136B1 (en) * 2011-11-11 2013-10-01 Altera Corporation Logic block protection system
JP5910108B2 (ja) 2012-01-25 2016-04-27 株式会社ソシオネクスト 高位合成装置,高位合成方法,高位合成プログラム,集積回路の設計方法
US20130212366A1 (en) * 2012-02-09 2013-08-15 Altera Corporation Configuring a programmable device using high-level language
US8856708B1 (en) * 2013-07-12 2014-10-07 Hamilton Sundstrand Corporation Multi-tier field-programmable gate array hardware requirements assessment and verification for airborne electronic systems
CN104239115A (zh) * 2014-07-24 2014-12-24 汕头大学 一种plc编程语言的编译方法
US9922150B1 (en) 2014-11-11 2018-03-20 Altera Corporation Method and apparatus for satisfying operating conditions in a system design using an electronic design automation tool
US9633158B1 (en) * 2014-11-11 2017-04-25 Altera Corporation Selectable reconfiguration for dynamically reconfigurable IP cores
TWI561007B (en) * 2015-07-22 2016-12-01 Nuvoton Technology Corp Function programmable circuit and operation method thereof
JP2017111591A (ja) 2015-12-16 2017-06-22 株式会社ソシオネクスト 設計方法、設計プログラム及び設計装置
US10546087B1 (en) * 2016-03-28 2020-01-28 Altera Corporation Intellectual property (IP) blocks with customizable configuration status register (CSR) circuitry
JP2018041129A (ja) 2016-09-05 2018-03-15 三菱電機エンジニアリング株式会社 高位合成用記述変換装置及び高位合成用記述変換プログラム
WO2018161283A1 (zh) * 2017-03-08 2018-09-13 华为技术有限公司 用于处理报文的方法和装置
US11361133B2 (en) * 2017-09-26 2022-06-14 Intel Corporation Method of reporting circuit performance for high-level synthesis
US11132207B2 (en) * 2017-12-29 2021-09-28 Lattice Semiconductor Corporation Fast boot systems and methods for programmable logic devices
KR20200139525A (ko) * 2019-06-04 2020-12-14 삼성전자주식회사 Fpga를 포함하는 전자 시스템 및 이의 동작 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230126364A (ko) 2022-02-23 2023-08-30 삼성전자주식회사 하드웨어 최적화를 위한 하이레벨 합성 방법 및 장치
WO2023195658A1 (ko) * 2022-04-08 2023-10-12 네이버 주식회사 트랜스포머 기반 언어 서비스 가속화를 위한 저비용 다중 fpga 가속 시스템

Also Published As

Publication number Publication date
CN112035397B (zh) 2024-04-16
US20200389171A1 (en) 2020-12-10
US11967952B2 (en) 2024-04-23
CN112035397A (zh) 2020-12-04
US11012075B2 (en) 2021-05-18
US20210250028A1 (en) 2021-08-12

Similar Documents

Publication Publication Date Title
US11967952B2 (en) Electronic system including FPGA and operation method thereof
US10445234B2 (en) Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US20190004878A1 (en) Processors, methods, and systems for a configurable spatial accelerator with security, power reduction, and performace features
So et al. A unified hardware/software runtime environment for FPGA-based reconfigurable computers using BORPH
US20080244222A1 (en) Many-core processing using virtual processors
KR102593583B1 (ko) Ssd들 상에서의 가속된 데이터 처리를 위한 시스템 및 방법
US11232247B1 (en) Adaptable dynamic region for hardware acceleration
US10289785B1 (en) Platform architecture creation for a system-on-chip
KR20070112468A (ko) 퍼스널 컴퓨터(pc) 아키텍쳐로의 프로그래머블 로직 통합
US8578387B1 (en) Dynamic load balancing of instructions for execution by heterogeneous processing engines
CN115033188B (zh) 一种基于zns固态硬盘的存储硬件加速模块系统
US20160364514A1 (en) System, Method and Apparatus for a Scalable Parallel Processor
EP3336696A1 (en) Implementing device models for virtual machines with reconfigurable hardware
Cho et al. Taming the killer microsecond
CN114008589A (zh) 用于在顺序处理器上进行多次执行的动态代码加载
Van Lunteren et al. Coherently attached programmable near-memory acceleration platform and its application to stencil processing
Leppänen et al. Efficient OpenCL system integration of non-blocking FPGA accelerators
Kirchgessner et al. Reconfigurable computing middleware for application portability and productivity
Weinhardt et al. SAccO: An implementation platform for scalable FPGA accelerators
US11620120B1 (en) Configuration of secondary processors
CN112230931B (zh) 适用于图形处理器的二次卸载的编译方法、装置和介质
US11449347B1 (en) Time-multiplexed implementation of hardware accelerated functions in a programmable integrated circuit
CN112214443B (zh) 设置于图形处理器中的二次卸载装置和方法
US20230297527A1 (en) Direct Access to Reconfigurable Processor Memory
US20240069959A1 (en) Finite state machine for context switching in a reconfigurable data processor

Legal Events

Date Code Title Description
E902 Notification of reason for refusal