KR101996842B1 - 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 risc-v 기반 연산 장치 및 그 방법 - Google Patents

사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 risc-v 기반 연산 장치 및 그 방법 Download PDF

Info

Publication number
KR101996842B1
KR101996842B1 KR1020180169301A KR20180169301A KR101996842B1 KR 101996842 B1 KR101996842 B1 KR 101996842B1 KR 1020180169301 A KR1020180169301 A KR 1020180169301A KR 20180169301 A KR20180169301 A KR 20180169301A KR 101996842 B1 KR101996842 B1 KR 101996842B1
Authority
KR
South Korea
Prior art keywords
unit
fpga
risc
instruction
processor
Prior art date
Application number
KR1020180169301A
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 KR1020180169301A priority Critical patent/KR101996842B1/ko
Application granted granted Critical
Publication of KR101996842B1 publication Critical patent/KR101996842B1/ko
Priority to PCT/KR2019/013045 priority patent/WO2020138663A1/ko
Priority to US17/041,384 priority patent/US11409529B2/en

Links

Images

Classifications

    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

본 발명은 FPGA(Field Programmable Gate Array)를 통해 사용자 정의 기능을 실행하는 하드웨어 고속 연산부를 RISC-V 기반 연산 장치와 함께 단일 칩으로 구성하고, 사용자 정의 명령어 셋을 포함하는 RISC-V 기본 명령어 셋을 이용한 프로그램을 통해 별도의 버스 연결 구성이 아닌 명령어 레벨에서 일반 연산과 사용자 정의 연산을 수행하도록 하되, 사용자 정의 명령어 셋과 대응 기능을 임의적으로 변경할 수 있는 유연성을 제공하는 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치 및 그 방법에 관한 것으로, 하드웨어 구성이 아닌 소프트웨어 구성만 변경하는 기존의 펌웨어 갱신과 같은 유사한 방식으로 '특정 용도에 적합한 새로운 ISA를 가지는 새로운 프로세서 구조변경'을 수행하여 기존 전용하드웨어가 필요한 특수 목적 연산 등을 사용하는 전용 ASIC 개발을 하지 않고도 명령어 레벨에서 특수 목적 연산부 구현이 가능한 효과가 있다.

Description

사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치 및 그 방법{RISC-V implemented processor with hardware acceleration supporting user defined instruction set and method therof}
본 발명은 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치 및 그 방법에 관한 것으로, 특히 FPGA(Field Programmable Gate Array)를 통해 사용자 정의 기능을 실행하는 하드웨어 고속 연산부를 RISC-V 기반 연산 장치와 함께 단일 칩으로 구성하고, 사용자 정의 명령어 셋을 포함하는 RISC-V 기본 명령어 셋을 이용한 프로그램을 통해 별도의 버스 연결 구성이 아닌 명령어 레벨에서 일반 연산과 사용자 정의 연산을 수행하도록 하되, 사용자 정의 명령어 셋과 대응 기능을 임의적으로 변경할 수 있는 유연성을 제공하는 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치 및 그 방법에 관한 것이다.
RISC-V 연산 장치는 RISC(Reduced Instruction Set Computing) 방식을 이용하는 오프소스 명령어 셋 아키텍쳐(Instruction Set Architecture:ISA)를 가진 것으로, 유사한 다른 상용 중앙처리장치(CPU)와 달리 무료로 사용할 수 있도록 개방된 것이다.
이러한 RISC-V ISA 구조는 누구나 자유롭게 호환성 있거나 파생된 중앙처리장치를 설계할 수 있고 이를 상용으로 이용할 수 있으며 이러한 파생된 설계를 공개할 의무도 없다.
특히, RISC-V는 유사한 상용 연산 장치에 비해 비슷한 성능을 제공하면서 칩의 면적을 크게 줄일 수 있고 소비 전력 역시 절반 이하로 줄일 수 있어 높은 효율과 경제성을 보이고 있다. 다만 아직 그래픽 하드웨어 코어(GPU)에 대한 설계는 미완성이라는 점과 다양한 연동을위한 드라이버 소프트웨어 개발이 필요하다는 점에서 상용 프로세서를 완전히 대체하기는 이른 실정이다.
하지만, 이러한 특별한 용도가 아닌 고속 연산이 필요하거나 장비를 제어하기위한 용도로서는 충분한 성능을 제공하고 있을 뿐만 아니라 오픈소스 ISA를 지원한다는 점에서 사용자 정의 ISA를 유연하게 사용할 수 있어 특수한 목적을 위한 전용 ASIC(Application Specific Integrated Circuit)을 로열티 없이 개발하는데 유용하다.
예를 들어, 통신 장비를 개발한다고 하였을 때 FFT(Fast Fourier Transform)/IFFT(Inverse Fast Fourier Transform) 연산과 같은 특수 목적에 필요한 연산을 범용 프로세서를 사용하여 구현할 경우 많은 개발 시간이 필요하고 처리 속도가 느리기 때문에, 이러한 특수 목적 연산 부분을 하드웨어적으로 처리하도록 구성한 주문제작형 칩(ASIC)을 이용하는 경우가 대부분이다. 하지만 이러한 ASIC의 경우 그 개발에 많은 비용과 오랜 개발 시간이 필요하다. 나아가, ASIC의 개발 완료 후 특수 목적 부분의 로직을 일부 변경해야 한다거나 추가 기능을 부가하고자 하는 경우라면 ASIC의 신규 버전을 다시 개발해야 하기 때문에 변형이나 개선이 어려운 문제도 발생하게 된다.
따라서, 이러한 문제를 일부 해결하고자 FPGA와 같이 필요에 따라 연산 로직의 변형이 가능한 별도의 칩을 범용 프로세서와 연동하는 방식이 등장하게 되었다.
도 1은 특수 목적에 따른 연산을 위한 로직을 구성한 FPGA 칩과 범용 프로세서를 연동하는 종래 구성을 보인 것이다.
도시된 바와 같이 범용 프로세서 칩셋(1)과 특수 목적을 위한 기능이 구현된 FPGA 칩셋(2)을 버스 구조를 통해 연동하는 방식이 일반적인데, 범용 프로세서 칩셋(1)이 버스 구조를 통해 원하는 연산 수행을 FPGA 칩셋(2)에 요청하고 그 결과를 수신하는 방식으로 동작한다. 따라서, 프로세서 칩셋(1)의 경우 버스 구조의 고속 인터페이스를 이용하여 FPGA 칩셋(2)과 통신을 수행하게 되며, 이러한 고속 인터페이스 구조는 단순 결선이 아닌 고속 직렬 통신 프로토콜을 이용하게 된다. 이 경우 통상 하드웨어 계층, 가상화 계층, 드라이버 계층, 어플리케이션 계층 등(일례로서, 고속 직렬구조 인터페이스인 PCI express(Peripheral Component Interconnect Express) 구조의 경우)과 같은 복잡한 계층 구조를 가지며 어플리케이션 계층을 통해서 원하는 연산을 요청하고 그 결과를 수신해야 하므로 이러한 고속 인터페이스의 적용이 어렵고 복잡하며 그 속도 역시 느려 고속 연산들을 많이 사용하는 목적의 연산 장치로서는 그 사용이 부적합하다.
즉, 이러한 방식은 고속 연산을 필요로 하는 목적으로 개발하는 ASIC을 대체하기에는 그 속도, 확장 ISA 구조 사용 여부(프로그램과 연산 수행 방식) 등에서 많은 차이가 있어 그 성능이 크게 낮고 제어가 복잡하므로 결국은 많은 시간과 노력을 기울여 ASIC을 개발해야만 한다.
이렇게 ASIC을 개발할 경우 범용 프로세서를 이용하더라도 개발 단계에서 확장 ISA와 확장 연산부를 설계하여 하드웨어적으로 고정 구성하므로 특수 목적에 맞는 고성능 연산 장치를 제공할 수 있게 된다.
한국 등록특허 제10-1783576호, '다수의 코어들, 공유 코어 확장 로직, 및 공유 코어 확장 이용 명령어들을 갖는 프로세서'는 전형적인 확장 연산 구성을 포함하는 ASIC 구성을 보인 것으로 범용 프로세서 코어에서 지원하지 않는 확장된 명령어 세트를 정의하고, 이러한 확장 명령어 세트를 별도로 마련된 공유 확장 로직을 통해 수행하도록 하되, 이를 위해서 범용 프로세서 코어 부분에 확장 명령어를 디코딩하는 구성을 추가하고, 공유 확장 로직과 데이터를 주고 받기 위한 인터페이스를 구성한 후 공유 확장 메모리 동기화 관리를 위한 구성을 추가하는 등 복잡한 개발 요소들이 포함된다.
한편, 앞서 도 1을 통해 설명한 방식과 같이 FPGA를 별도의 칩으로 구성하고 이들을 칩간 인터페이스로 연결하는 복잡성을 일부 낮추기 위하여 아예 FPGA 칩셋의 로직 구성 단위인 CLB(Combination Logic Block)를 이용하여 범용 프로세서를 FPGA의 로직으로 구성하고 추가적인 사용자 요구 연산 처리 부분을 나머지 FPGA 로직으로 구성하는 방식이나, 하드웨어적인 범용 프로세서 부분을 내장한 FPGA 칩셋을 이용하여 사용자가 요구하는 특수 목적 연산 처리 부분을 FPGA 로직으로 구성하는 방식도 등장하였다.
도 2는 FPGA 칩셋 내부에 범용 프로세서를 구성한 방식들의 예이다.
도 2a는 FPGA 칩셋(10) 내부에 FPGA CLB를 통해 범용 프로세서를 소프트 매크로 프로세서 블록(11)으로 구성한 것으로, 이러한 방식은 프로세서 클럭을 고속화하는데 어려움이 있고 대용량 FPGA 사용에 따른 비용 상승 문제가 발생한다. 도 2b는 FPGA 칩셋(20) 내부에 범용 프로서세 기능 블록을 하드 매크로 크로세서 블록(21)으로 구성하여 프로세서 클럭을 고속화할 수 있도록 한 것이다.
하지만 이러한 도 2에 도시한 구성들은 FPGA 칩셋 하나로 단일화 했다는 점 외에는 앞서 도 1을 통해 설명했던 바와 같이 FPGA 칩과 범용 프로세서 칩을 인터페이스 구조로 연결한 구성과 동일하다.
즉, 도 1 이나 도 2의 경우 모두 FPGA와 프로세서는 최초로 적용된 인터페이스 규약에 따른 제어신호를 프로그래밍하여 제어하는 구조로서, 프로세서의 경우 '당초 설계부터 고정된 기본 ISA'에 따른 명령어만 사용할 수 있으며, 외부 FPGA 칩을 이용하기 위해서는 기본 ISA를 이용하여 통신 프로그램을 작성한 후 이를 이용해야 하므로, 어플리케이션 레벨에서 외부 FPGA 칩과 연동할 수 밖에 없다.
따라서, 이러한 방식은 사용할 특수 목적 연산 로직의 구성을 변형하거나 새로운 기능을 추가할 필요가 있을 때 FPGA 로직을 변경할 수 있어 특수 목적 기능에 대한 가변성을 제공할 수는 있지만, 외부 모듈을 통해 특수 목적 연산을 대신 수행하도록 인터페이스를 통해 복잡하게 제어해야 한다는 점 때문에 속도의 한계와 프로그램 복잡성 증가, 프로세서 클럭 기반 제어 불가능과 병렬 처리의 어려움 등의 한계가 있다.
한편, 이러한 범용 프로세서들 중에서 ISA를 유연하게 변경하여 적용할 수 있는 RISC-V ISA 구조의 경우 사용자 정의 명령어 셋을 추가로 정의한 후 ISA 레벨에서 원하는 기능을 수행할 수 있는 특수 목적 프로세서를 비교적 용이하게 구현할 수 있다. 하지만, 이러한 경우 역시 사용자 정의 ISA 적용을 위한 명령어 디코딩부와 해당 사용자 정의 명령어를 수행하는 연산부를 설계한 후 이를 ASIC으로 개발하는 방식이므로 사용 중에 '추가적인 새로운 사용자 정의 ISA' 구성을 변경한다거나 특수목적 연산 알고리즘을 변경하는 등의 변형은 불가능하다.
결국, 기존의 FPGA 칩셋을 이용하는 구성은 가변성을 제공하여 하드웨어 칩셋 개발 시간을 단축시킬 수는 있으나 성능이 낮고 FPGA 칩셋 활용 방식이 간접적이어서 프로그램 개발 시 제약이 많고 고속 연산이 필요한 용도(예컨대 고속 통신 장치용 연산 장치 등)로 활용하기 어려우며, 확장 ISA를 추가한 RISC-V 기반 ASIC을 이용하는 구성은 그 개발에 많은 시간과 노력이 필요하고 한 번 구성된 ASIC의 경우 설계된 ISA나 연산 로직을 변경할 수 없는 문제가 있다.
따라서, 사용자 정의 명령어 셋을 지원하는 RISC-V 프로세서를 기반으로 사용자 정의 ISA를 가변적으로 수용하여 별도의 하드웨어 변경이나 ASIC 개발 없이도 사용자 정의 ISA에 따른 높은 성능의 특수 목적 기능을 제공할 수 있는 새로운 방식의 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치에 대한 필요성이 커지고 있는 실정이다.
한국 등록특허 제10-1783576호 [발명의 명칭: 다수의 코어들, 공유 코어 확장 로직, 및 공유 코어 확장 이용 명령어들을 갖는 프로세서] 한국 등록특허 제10-0705507호 [발명의 명칭: 확장가능한 프로세서 아키텍처에 진보된 명령어들을부가하는 방법 및 장치]
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은 사용자 정의 명령어 셋을 지원하는 RISC-V ISA를 기반으로 하는 단일 칩 연산 장치로서, 변경 가능한 사용자 정의 명령어 셋(User configurable ISA)과 그에 따른 특수 목적 연산부를 임의적으로 변경할 수 있고, 이러한 확장된 ISA에 따른 프로그램을 프로세서 내부 코어 처리 방식으로 수행하도록 하여, 고속 연산을 포함하는 특수 목적 기능이 필요한 다양한 분야에서 요구하는 특수 목적 연산장치를 ASIC 개발 없이도 용이하게 구현할 수 있으며, 이미 개발된 특수 목적 연산장치의 연산 로직 변경이나 추가는 물론이고 사용자 정의 ISA의 변경이나 추가도 언제든지 가능하도록 한 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치 및 그 방법을 제공하는 것이다.
본 발명의 다른 목적은 연산장치 코어에 ISA 확장을 위한 연동 구성 및 확장 ISA 수행을 위한 FPGA부를 구성을 적용하고, 특수 목적을 위한 연산 및 외부 IO 제어는 FPGA부를 통해 가변적으로 기록하여 활용할 수 있도록 하되, 구성 후 변경할 수 없는 불변성을 가지는 기본 ISA 연산부를 변경하지 않고도 사용자 정의 명령어셋을 선별하여 가변적 FPGA부를 통해 ISA 레벨에서 수행하고 그 결과를 연산부 파이프라인에 선택적으로 적용할 수 있도록 함으로써 프로세서 단일칩 내부의 FPGA부 구성 변형만을 통해서 사용자 정의 ISA의 사용이 가능할 뿐만 아니라 사용자 정의 ISA나 특수 목적 연산 및 외부 IO 제어 구성 자체도 언제든지 변경할 수 도록 한 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치 및 그 방법을 제공하는 것이다.
본 발명의 다른 목적은 RISC-V 프로세서를 기반으로 하는 단일 칩 구성으로서 확장 ISA와 대응 연산 및 외부 IO 제어 구성을 FPGA부를 통해 정의 및 수행할 수 있도록 하여 하드웨어 구성 완료후 다양한 특수 목적에 적합한 전용 연산장치 구성을 소프트웨어 적으로 가변할 수 있도록 함으로써 범용성을 크게 높일 수 있는 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치 및 그 방법을 제공하는 것이다.
본 발명의 일 실시예에 따른 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치는, 명령어 패치, 명령어 디코딩, 명령어 실행, 메모리 접근 및 재기록 스테이지를 포함하는 파이프라인 구조의 RISC-V 기본 명령어 수행을 위한 RISC-V 프로세서부와 사용자 정의 명령어 셋에 대한 연산이나 외부 입출력 제어를 수행하는 FPGA부를 포함하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치로서, RISC-V 프로세서부는, 패치된 명령어 중 RISC-V 기본 명령어가 아닌 것을 선별하는 ISA 판별부와, ISA 판별부에서 선별된 명령어를 상기 FPGA부에 포워딩하고 결과 정보가 제공될 스테이지에 대한 연동 정보가 포함된 결과 정보를 수신하여 해당 결과를 연동 정보에 정의된 스테이지에 제공하는 FPGA 포워딩부를 포함하고, FPGA부는, FPGA 포워딩부로부터 전달되는 명령어를 디코딩하여 사용자 정의 명령어인지 확인하여 사용자 정의 명령어인 경우 이를 수행하도록 하고, 그 결과를 수신하여 연동 정보를 포함한 후 FPGA 포워딩부에 제공하는 FPGA 코어 인터페이스부와, FPGA 코어 인터페이스부에서 디코딩된 사용자 정의 명령어에 따른 연산이나 외부 입출력 제어를 수행하고 그 결과와 해당 결과가 제공될 스테이지를 지정하여 FPGA 코어 인터페이스에 제공하는 FPGA 기능부를 포함한다.
일례로서, ISA 판별부와 FPGA 포워딩부는 수정 불가능하다.
일례로서, FPGA부는 상기 FPGA부의 퓨징을 위한 바이너리 파일에 의해 FPGA 코어 인터페이스부와 FPGA 기능부의 내용이 재구성될 수 있다.
일례로서, FPGA 포워딩부는 상기 ISA 판별부에서 제공되는 사용자 정의 명령어를 FPGA부에 제공하고 그 결과를 수신하여 연동 정보에 따라 명령어 디코딩, 명령어 실행, 메모리 접근 및 재기록 스테이지 중 하나에 상기 결과를 제공하되 상기 RISC-V 프로세서부의 클럭에 따라 동작할 수 있다.
일례로서, FPGA 포워딩부는 사용자 정의 명령어를 병렬 파이프라인 구조에 따른 클럭에 맞추어 병렬 처리할 수 있다.
일례로서, RISC-V 프로세서부와 FPGA부는 각각 단수 혹은 복수로 구성될 수 있다.
본 발명의 다른 실시예에 따른 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 방법은, 명령어 패치, 명령어 디코딩, 명령어 실행, 메모리 접근 및 재기록 스테이지를 포함하는 파이프라인 구조의 RISC-V 기본 명령어 수행을 위한 RISC-V 프로세서부와, 사용자 정의 명령어 셋에 대한 연산이나 외부 입출력 제어를 수행하는 FPGA부를 포함하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 방법으로서, RISC-V 프로세서부가 명령어 패치 스테이지를 통해 프로그램 메모리 상의 명령어를 패치하는 단계와, RISC-V 프로세서부가 상기 명령어를 패치하는 단계에서 해당 명령어가 RISC-V 기본 명령어가 아닌 것을 구분하여 해당 구분된 명령어를 상기 FPGA부에 전달하는 단계와, 상기 구분된 명령어를 수신한 FPGA부가 해당 명령어를 디코딩하여 사용자 정의 명령어인지 판단하고, 사용자 정의 명령어인 경우 대응되는 연산이나 외부 입출력 인터페이스 제어를 수행하고 그 결과를 생성한 후 해당 결과가 제공될 RISC-V 프로세서부의 스테이지를 지정하는 연동 정보와 상기 생성 결과를 상기 RISC-V 프로세서부에 제공하는 단계와, RISC-V 프로세서부가 수신된 생성 결과를 상기 연동 정보에 따라 대응 스테이지에 제공하는 단계를 포함한다.
일례로서, RISC-V 프로세서부는 수정 불가능하도록 고정 구성되며, FPGA부는 퓨징을 위한 바이너리 파일에 의해 그 구성이 변경될 수 있다. 또한, FPGA부를 위한 바이너리 파일을 이용하여 FPGA부를 재구성하는 퓨징 단계를 더 포함할 수 있다.
일례로서, RISC-V 프로세서부는 사용자 정의 명령어에 대한 결과를 FPGA부에 제공하고 그 결과를 수신하여 연동 정보에 따라 명령어 디코딩, 명령어 실행, 메모리 접근 및 재기록 스테이지 중 하나에 상기 결과를 제공하되 이러한 과정을 클럭에 맞추어 ISA 처리 방식으로 수행하는 단계를 포함할 수 있다.
본 발명의 실시예에 따른 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치 및 그 방법은 사용자 정의 명령어 셋을 지원하는 RISC-V ISA를 기반으로 하는 단일 칩 연산 장치를 구성하되, 사용자 정의 명령어 셋과 그에 따른 특수 목적 연산부를 임의적으로 변경할 수 있고, 이러한 확장된 ISA에 따른 프로그램을 프로세서 내부 코어 처리 방식으로 수행하도록 하여, 고속 연산을 포함하는 특수 목적 기능이 필요한 다양한 분야에서 요구하는 특수 목적 연산장치를 ASIC 개발 없이도 용이하게 구현할 수 있도록 함과 아울러, 이미 개발된 특수 목적 연산장치의 연산 로직 변경이나 추가는 물론이고 사용자 정의 ISA의 변경이나 추가도 언제든지 가능하도록 하여 ASIC 개발 시간과 비용을 줄일 뿐만 아니라 목적에 맞는 높은 성능의 특수 목적 연산 장치를 쉽게 활용하고 필요에 따라 쉽게 변경할 수 있는 효과가 있다.
나아가, 연산장치 코어에 ISA 확장을 위한 연동 구성 및 확장 ISA 수행을 위한 FPGA부를 구성을 적용하고, 특수 목적을 위한 연산 및 외부 IO 제어는 FPGA부를 가변적으로 구성하여 활용할 수 있도록 하되, 구성 후 변경할 수 없는 불변성을 가지는 기본 ISA 연산부를 변경하지 않고도 사용자 정의 명령어셋을 선별하여 가변적 FPGA부를 통해 ISA 레벨에서 수행하고 그 결과를 연산부 파이프라인에 선택적으로 적용할 수 있도록 함으로써 가변성을 가지는 프로세서 단일칩 내부의 FPGA부 구성 변형만을 통해서 사용자 정의 ISA의 사용이 가능할 뿐만 아니라 사용자 정의 ISA나 특수 목적 연산 및 외부 IO 제어 구성 자체도 언제든지 변경할 수 있도록 하여 개발 편의성과 사용의 편의성 및 확장성을 모두 만족할 수 있도록 하는 효과가 있다.
나아가 ASIC과 유사한 기능을 가지는 특수 목적 연산장치로 전환이 가능한 범용성이 높은 단일 칩을 저렴한 비용으로 제공할 수 있을 뿐만 아니라 사용자 지정 ISA의 변화와 그 기능의 변경을 마치 펌웨어 갱신을 하는 것과 유사한 과정을 통해 수행하도록 하여 사용 중에 ISA 변경을 포함하는 하드웨어 기능향상이 가능하도록 하는 효과가 있다.
도 1은 일반적인 프로세서 칩셋과 FPGA 칩셋의 연동 방식을 보인 구성도.
도 2는 FPGA 칩셋 내부에 프로세서 블록을 적용한 구성의 예시도.
도 3은 본 발명의 실시예에 따른 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치를 이용한 연산 시스템의 계층적 구성 개념도.
도 4는 본 발명의 실시예에 따른 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치를 이용한 시스템의 구성 블록도.
도 5는 본 발명의 실시예에 따른 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치의 스테이지 기반 구성도.
도 6은 본 발명의 실시예에 따른 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치의 FPGA 포워딩부의 연산 방식을 설명하는 개념도.
도 7은 본 발명의 실시예에 따른 사용자 정의 명령어 셋의 병렬 연산 방식을 설명하기 위한 클럭 기반 병렬처리 개념도.
도 8은 본 발명의 일 실시예에 따른 FPGA부의 구성예.
도 9 및 도 10은 일반적인 통신 장비의 간략한 구성도 및 도 8에 도시된 일 실시예에 따른 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치를 도 9의 통신 장비에 적용한 구성도.
도 11은 본 발명의 일 실시예에 따른 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치의 특수 목적 기능 부여과정을 보인 순서도.
도 12는 본 발명의 일실시예에 따른 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치의 동작 과정을 보인 순서도.
본 발명에서 사용되는 기술적 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아님을 유의해야 한다. 또한, 본 발명에서 사용되는 기술적 용어는 본 발명에서 특별히 다른 의미로 정의되지 않는 한 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 의미로 해석되어야 하며, 과도하게 포괄적인 의미로 해석되거나 과도하게 축소된 의미로 해석되지 않아야 한다. 또한, 본 발명에서 사용되는 기술적인 용어가 본 발명의 사상을 정확하게 표현하지 못하는 잘못된 기술적 용어일 때에는 당업자가 올바르게 이해할 수 있는 기술적 용어로 대체되어 이해되어야 할 것이다. 또한, 본 발명에서 사용되는 일반적인 용어는 사전에 정의되어 있는 바에 따라 또는 전후 문맥상에 따라 해석되어야 하며, 과도하게 축소된 의미로 해석되지 않아야 한다.
또한, 본 발명에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함한다. 본 발명에서 "구성된다" 또는 "포함한다" 등의 용어는 발명에 기재된 여러 구성 요소들 또는 여러 단계를 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한, 본 발명에서 사용되는 제 1, 제 2 등과 같이 서수를 포함하는 용어는 구성 요소들을 설명하는데 사용될 수 있지만 구성 요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제 1 구성 요소는 제 2 구성 요소로 명명될 수 있고, 유사하게 제 2 구성 요소도 제 1 구성 요소로 명명될 수 있다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
또한, 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 발명의 사상을 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 발명의 사상이 제한되는 것으로 해석되어서는 아니 됨을 유의해야 한다.
특히, 본 발명의 실시예들은 RISC-V 프로세서 코어 부분을 기반으로 본 발명의 실시예에 따른 사용자 정의 ISA 적용 구성을 설명한다. 따라서, 프로세서와 연산장치라는 용어가 혼용되는데, 프로세서는 RSIC-V 기본 구성을 가지는 기본 연산기를 의미하는 것이고, 연산 장치는 이러한 기존의 프로세서 구조를 변형하여 사용자 정의 ISA를 지원하는 확장 프로세서를 포괄하는 용어로 간주될 수 있다. 나아가 ISA(Instruction Set Architecture)는 명령어 집합 구조로서 기계어에 해당하는 명령어를 의미하며, 명령어 세트나 ISA는 동일한 의미로 간주될 수 있다.
이하, 본 발명의 실시예들을 도 4 내지 도 12를 참조하여 설명한다.
먼저, 도 3은 본 발명의 실시예에 따른 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치를 이용한 연산 시스템(100)의 계층적 구성 개념도이다. 도시된 바와 같이 본 발명의 실시예는 하나의 칩셋에 RISC-V 프로세서부와 FPGA부를 구성하되, 이를 개별 장치간 인터페이스 프로토콜을 통해 어플리케이션 계층에서 연산을 요청하고 그 결과를 수신하는 방식이 아니라 프로세서 동작을 위한 ISA(Instruction Set Architecture) 레벨에서 프로세서 클럭에 따라 명령을 수행하는 확장 ISA 방식으로 구성한 단일 패키지에 다수의 반도체 다이(Die)가 포함된 MCP(Multi-chip Package) 형태의 연산장치(110)을 이용한다. 이러한 연산장치(110)는 단일 칩 형태로 구성될 수 있다.
이러한 연산장치(110)는 외부 입출력 인터페이스를 통해서 복수의 메모리(운영체제가 저장되는 메모리(OS(M)), 프로그램 동작을 위한 주 램 메모리(DDR(M)))와 외부 입출력 장치(IO)간 연동하는 것으로, 그 내부에 구성되어 사용자 정의 ISA와 그에 대응되는 연산이나 외부 입출력 제어를 수행하는 FPGA부는 내부 로직 구성을 정의한 바이너리 파일이 저장된 별도의 플래시 메모리(FPGA bin(M))를 통해 그 구성이 가변 설정될 수 있다. 도시되지는 않았지만 이를 위한 FPGA 퓨징부가 해당 연산장치 (110)의 내부 혹은 외부에 구성될 수 있다.
이러한 단일 칩 형태의 연산장치(110)에 운영체제(예컨대 리눅스 기반 운영체제)가 동작하면 그 하드웨어층 위에는 리눅스 커널이 존재하게 되고 그 상위에는 어플리케이션 층으로서 FPGA의 구성을 정의하는 FPGA 로직 바이너리 파일들과 해당 연산장치(110)을 동작시키는 실행 프로그램이 존재하게 된다.
이러한 실행 프로그램은 FPGA를 통해서 확장한 사용자 정의 ISA를 프로세서의 기본 ISA와 같은 레벨에서 이용하도록 구성될 수 있으며, 이러한 사용자 정의 ISA를 포함하는 확장 ISA를 기반으로 컴파일된 것일 수 있다.
도 4는 본 발명의 실시예에 따른 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치(1000)를 이용한 시스템의 구성 블록도를 보인 것으로, 이러한 본 발명 실시예에 따른 연산 장치(1000)는 도시된 바와 같이 기본적인 RISC-V 프로세서 구성을 가지면서 사용자 정의 ISA를 수행하기 위한 FPGA부(1200)와, 연동하기 위한 ISA 확장부(1119)가 구성된 RISC-V 프로세서부(1100)를 구비한다.
이러한 RISC-V 프로세서부(1100)는 고정된 것으로 한 번 구성되면 변경될 수 없는 하드매크로 방식으로 구성된 프로세서 블록에 해당한다. 따라서, 다양한 사용자 정의 ISA와 그에 대응되는 특수 목적 연산이나 외부 입출력 제어를 위한 구성은 FPGA부(1200)에 가변적으로 구성되며, 본 발명의 실시예에 따른 RISC-V 프로세서부(1100)는 이들을 연계하기 위한 고정 구성으로 ISA 확장부(1119)가 기존의 기본 RISC-V 프로세서 블록에 더 구성된 것이다.
이러한 FPGA부(1200)는 비록 RISC-V 프로세서부(1100)와 구분되어 구성되기는 하지만 실질적으로는 RISC-V 프로세서의 클럭에 따라 ISA를 패치하고 디코딩하여 수행하는 파이프라인 구조의 일부로서 동작하는 것이므로 그 동작이 매우 빠르며 컴파일되는 프로그램을 수행하는 과정에서 별도의 외부 장치 인터페이스 방식이 아닌 내부 ISA 처리 방식으로 동작하게 된다.
한편, 실질적으로 사용자 정의 ISA를 정의하여 이를 디코딩하는 구성과 디코딩한 사용자 정의 명령어를 수행하는 구성 및 그 결과를 RISC-V 프로세서부(1100)의 어떠한 파이프라인 스테이지(해당 스테이지를 구성하는 장치)에 제공할 것인지를 결정하는 구성은 모두 FPGA부(1200)에 가변적으로 정의된다.
이러한 FPGA부(1200)는 RISC-V 프로세서부(1100)의 ISA 확장부(1119)로부터 사용자 정의 명령어를 전달받아 이를 디코딩하여 사용자 정의 명령어인지 여부를 확인하고 해당 명령을 수행하도록 한 후 그 결과를 수신하여 해당 결과와 결과 정보가 제공될 스테이지에 대한 연동 정보가 포함된 결과 정보를 ISA 확장부(1119)에 제공하는 FPGA 코어 인터페이스부(1210)와 FPGA 코어 인터페이스부에서 디코딩된 사용자 정의 명령어에 따른 연산이나 외부 입출력 제어를 수행하고 그 결과와 해당 결과가 제공될 스테이지를 지정하여 상기 FPGA 코어 인터페이스에 제공하는 FPGA 기능부(1220)를 포함한다.
여기서, FPGA 코어 인터페이스부(1210)와 ISA 확장부(1119)는 내부 결선을 통해 직접 정보를 주고 받도록 구성될 수 있다.
나아가, 이러한 FPGA부(1200)는 연산 장치(1000)와 별도로 구성된 FPGA 퓨징부(30)를 통해서 해당 FPGA부(1200)의 구성을 정의한 FPGA 정의 이미지(FPGA 퓨징을 위한 바이너리 정보)를 저장한 메모리(40)의 내용으로 그 구성이 초기 설정되거나 필요에 따라 변경될 수 있다. 이러한 퓨징을 위한 구성은 연산 장치(1000) 제조시 한 번만 이루어질 경우 생략될 수 있으나, 연산장치(1100)에 구성되어 해당 연산 장치(1000)를 포함하는 시스템이 최초 구동하는 경우에 사용되거나, 사용 중 기능을 변경하거나 사용자 정의 ISA를 추가하는 등의 기능 개선의 필요가 있는 경우 신규 FPGA 정의 이미지를 이용하여 FPGA부(1200)의 구성을 변경하는데 사용될 수 있다. 따라서, 하드웨어 구성이 아닌 소프트웨어 구성만 변경하는 기존의 펌웨어 갱신과 유사한 방식을 통해서 '특정 용도에 적합한 새로운 ISA를 가지는 새로운 프로세서 구조변경'을 통하여 프로세서의 하드웨어 기능과 성능 자체의 변경 및 개선이 가능하게 된다.
통상 RISC-V 프로세서의 기본 구성은 도시된 RISC-V 프로세서부(1200)에 포함된 명령어 메모리 인터페이스(1120), 데이터 메모리 인터페이스(1130) 및 파이프라인 구성부(1110)를 포함한다.
도시된 파이프라인 구성부(1110)에는 RISC-V의 5단계 파이프라인 구조가 간단히 표현되어 있는데, 각 파이프라인을 이용하여 명령어 패치(Instruction Fetch), 명령어 디코딩(Instructin Decoding), 명령어 실행(Instruction Execution), 메모리 접근(Memory Access) 및 재기록(Write Back) 스테이지를 순차적으로 수행하면서 병렬 처리가 가능하도록 구성된다.
한편, 이러한 RISC-V 프로세서부(1100)와 FPGA부(1200)는 각각 단수 혹은 복수로 구성될 수 있는데, 멀티코어 RISC-V 프로세서부(1100)가 하나의 FPGA부(1200)와 연동할 수도 있고, 하나의 RISC-V 프로세서부(1100)가 복수의 FPGA부(1200)와 연동할 수도 있으며, 멀티코어 RISC-V 프로세서부(1100)가 복수의 FPGA부(1200)와 연동할 수도 있다.
도 5는 본 발명의 실시예에 따른 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치의 스테이지 기반 구성도이다.
도시된 바와 같이 현재 수행할 명령어 메모리 주소를 지정하는 프로그램 카운터(1111)와, 프로그램의 명령어들이 저장되는 명령어 메모리(1112)와, 패치된 명령어들을 디코딩하며 필요한 정보들을 저장하고 상태를 기록하는 레지스터(1113)와, 산술 및 논리 연산을 수행하는 ALU(Arithmetic Logic Unit)를 포함하는 연산부(1114)와, 프로세서 내의 실행 데이터를 저장하는 데이터 메모리(115)와, 재기록을 위해 선택적으로 결과를 레지스터(1113)에 기록하도록 하는 먹스(1116)를 포함하며, 병렬처리를 위해 복수의 파이프라인들(IF1 내지 IF4)과 이들의 흐름을 제어하는 파이프라인 제어부(C1)를 포함한다.
이러한 구성을 이용하여 RISC-V 프로세서는 명령어 패치 스테이지(S1), 명령어 디코딩 스테이지(S2), 실행 스테이지(S3), 메모리 접근 스테이지(S4) 및 재기록 스테이지(S5)를 순차적으로 실행하는데, 통상 RISC-V 기본 명령어는 하나의 클럭 주기동안 하나의 스테이지를 처리하므로 파이프라인 구조를 통해서 5개의 서로 다른 작업들이 각각의 스테이지에서 병렬 처리될 수 있다.
본 발명의 실시예에서는 사용자 정의 명령어 세트를 임의적으로 구성하여 사용할 수 있도록 함과 아울러 해당 사용자 정의 명령어 세트에 따른 수행을 가변적인 구성을 통해 사용하는 것은 물론이고 구성 이후에도 이러한 사용자 정의 명령어 세트와 수행 구성을 마음대로 변경할 수 있도록 한다.
이러한 사용자 정의 명령어에 대한 지원을 위해서 사용자 정의 명령어를 디코딩하고 수행하는 구성을 FPGA부(1200)를 통해 실행 스테이지(S3)의 일부로서 구현하며, 한번 구성되면 변경될 수 없는 RISC-V 프로세서부(1100)에 이러한 FPGA부(1200)에 구성되는 사용자 정의 명령어 세트와 연동할 수 있도록 하는 ISA 확장부를 고정식으로 구성한다.
이러한 ISA 확장부는 도시된 바와 같이 패치된 명령어가 RISC-V 기본 명령어가 아닌 것을 선별하는 ISA 판별부(1117)와, ISA 판별부(1117)에서 선별된 명령어를 FPGA부(1200)에 포워딩하고 결과 정보가 제공될 스테이지에 대한 연동 정보가 포함된 결과 정보를 수신하여 해당 결과를 연동 정보에 정의된 스테이지에 제공하는 FPGA 포워딩부(1118)를 포함한다.
즉, 어떠한 사용자 정의 명령어가 새롭게 정의될지 알 수 없으며 한번 구성되면 이를 변경할 수 없는 RISC-V 프로세서부(1100)에 구성되는 ISA 판별부(1117)는 기본 RISC-V ISA에 대한 정보를 구비하여 명령어 메모리(1112)에서 패치된 명령어가 기본 RISC-V ISA에 포함된 명령어가 아닌 경우에만 해당 명령어를 FPGA 포워딩부(1118)에 제공하도록 단순화되어 구성된다.
FPGA 포워딩부(1118) 역시 그 구성을 변경할 수 없는 고정된 구성을 가지기 때문에 상기 ISA 판별부(1117)에서 제공되는 사용자 정의 명령어(기본 RISC-V ISA가 아닌 모든 것)를 FPGA부(1200)에 제공하고 그 결과를 수신하여 연동 정보에 따라 명령어 디코딩, 명령어 실행, 메모리 접근 및 재기록 스테이지 중 하나에 상기 결과를 제공하는, 일종의 기준에 따른 동작 규칙 처리 부분만 구현될 수 있다. 나아가 FPGA 포딩부(1118)는 RISC-V 프로세서부의 일부로서, 프로세서 클럭에 따라 동작하며, 그에 따라 사용자 정의 명령어를 병렬 파이프라인 구조에 맞추어 병렬 처리할 수 있다.
다만, 사용자 정의 명령의 경우 FPGA 포딩부(1118)가 해당 명령을 FPGA부(1200)에 제공하고 그 결과를 수신하는데, 이 과정이 하나의 클럭 주기 내에 이루어질 수도 있고, 여러 클럭 주기가 필요한 경우도 있을 수 있다.
도시된 FPGA부(1200)는 FPGA 코어 인터페이스부(1210)를 포함하는데, 이는 FPGA 포워딩부(1118)로부터 전달되는 명령어를 디코딩하여 사용자 정의 명령어인지 확인하여 사용자 정의 명령어인 경우 이를 FPGA 기능부(실질적인 사용자 정의 ISA 수행부)(1220)를 통해 수행하도록 하는 사용자 정의 ISA 판정부(1211)와, FPGA 기능부(1220)에 의해 수행된 연산 결과나 외부 입출력 제어 결과를 수신하여 연동 정보를 포함하여 FPGA 포워딩부(1118)에 제공하는 사용자 정의 ISA 결과 제공부(1212)를 포함할 수 있다.
FPGA 기능부(1220)는 사용자 정의 ISA 판정부(1211)에서 디코딩된 사용자 정의 명령어에 따른 연산이나 외부 입출력 제어를 수행하고 그 결과와 해당 결과가 제공될 스테이지를 지정하여 사용자 정의 ISA 결과 제공부(1212)에 전달할 수 있다. 예를 들어, 연산 결과를 연산부(1114)에 제공한다거나, 데이터 메모리(1115)에 기록하도록 한다거나, 다시 레지스터(1113)에 기록하도록 하기 위해서 재기록 스테이지의 먹스(1116)에 제공한다거나 하는 식의 연동 정보를 지정할 수 있다.
결국, 실질적인 사용자 정의 명령어 세트를 디코딩하고, 그에 대한 특수 목적 기능을 수행하며, 그 결과를 제공하되, ISA로서 동작하기 때문에 그 결과를 어떠한 스테이지에 제공할 것인지도 FPGA부(1200)에서 모두 정할 수 있으므로 본 발명의 실시예에서는 이러한 가변적인 FPGA부(1200)의 변형을 통해서 사용자 정의 명령어 셋을 유연하게 적용할 수 있게 된다.
도 6은 본 발명의 실시예에 따른 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치의 FPGA 포워딩부의 연산 방식을 설명하는 개념도로서, 도시된 바와 같이 RISC-V 기능 유닛의 경우 파이프라인 구조를 통해서 병렬 연산을 지원한다. 물론, 일부 외부 정보가 필요하다거나 이전 수행 결과가 필요한 연산의 경우 비병렬 연산으로 처리할 수 밖에 없어 비병렬 연산 기능부를 포함하고 있지만, 대부분의 RSIC ISA의 경우 병렬 연산을 지원한다.
따라서, 본 발명의 실시예에 따른 FPGA 포워딩부 역시 병렬 연산 기능부의 일종으로 동작할 수 있으며, 이는 ISA 레벨에서 프로세서 클럭에 따라 동작하기 때문에 실제로는 분리된 별도의 FPGA부를 사용함에도 불구하고 이러한 병렬 처리 구성이 가능하게 된다.
도 7은 본 발명의 실시예에 따른 사용자 정의 명령어 셋의 병렬 연산 방식을 설명하기 위한 클럭 기반 병렬처리 개념도로서, 도시된 바와 같이 초기 시점(t0)에 명령어 패치 스테이지는 제 1 명령어(I1)를 가져오며, 제 1시점(t1)에 패치된 제 1 명령어(I1)는 명령어 디코딩 스테이지에서 디코딩되며, 해당 시점에 패치 스테이지는 제 2 명령어(I2)를 가져온다. 이러한 방식으로 제 2 시점(t2)에 패치된 제 3 명령어(I3-FFB)는 사용자 정의 명령어이며, 이는 다음 시점인 제 3 시점(t3)에 명령어 디코딩 스테이지에서 ISA 판별부를 통해 기본 RISC-V 명령어가 아닌 것으로 판정되어 그 다음 제 4 시점(t4)에 RISC-V 연산부가 아닌 FPGA 포워딩부를 통해 FPGA부에 제공된다. 만일 FPGA부가 해당 제 3 명령어(I3-FFB)를 하나의 클럭 내에 처리하였다면 이는 다음 시점인 제 5 시점(t5)에 FPGA 포워딩부를 통해 메모리 억세스 스테이지로 전달되며 제 6 시점(t6)에 재기록 스테이지로 전달될 수 있다.
이와 같이 사용자 정의 명령어 세트를 이용하더라도 5개 파이프라인을 이용한 5개 스테이지의 병렬 처리 구성으로 사용자 정의 명령어를 처리할 수 있게 된다. 물론, 이러한 FPGA부의 처리 과정이 복수 클럭 주기가 소요될 수도 있으나, 다른 기본 RISC-V ISA의 병렬처리와 무관하게 FPGA 포워딩부를 통해 병렬로 처리된다.
도 8은 본 발명의 일 실시예에 따른 FPGA부(1220)의 구성예를 보인 것이다. 이러한 FPGA부(1200)는 무선 통신 장비에 적용하기 위한 특수 목적 사용자 정의 명령어를 포함하는 연산 장치를 제공하기 위한 예이다.
도시된 구성은 OFDM(Orthogonal Frequency Division Multiplexing)을 이용하는 무선 통신 모뎀, 예컨대 LTE(Long Term Evolution) 모뎀에 적용하기 위한 특수 목적 연산 장치를 위해 해당 무선 통신방식에서 필요한 연산인 CP(Cyclic Prefix)의 제거를 위한 연산부, CP의 삽입을 위한 연산부, 이진데이터 비트 재배열을 위한 Bit Reversal 연산부, Fast Fourier Transform)/IFFT(Inverse Fast Fourier Transform) 연산부, 아날로그 통신부의 설정 제어나 정보 확인을 위한 입출력 인터페이스부, 이러한 송수신 데이터를 임시 저장하기 위한 데이터 어레이 레지스터 등을 FPGA부(1220)에 구성할 수 있고, 이러한 명령을 수행하기 위한 사용자 정의 명령어 셋(예를 들어, call fft(), call ifft(), call cp_insert(), call cp_ remove(), call bit_reversal(), call io_fetch() 등)을 정의하고 이를 사용자 정의 IDA 판정부(1211)를 통해 디코딩하여 해당 명령어에 대응되는 FPGA 기능부(1220)가 실행되도록 할 수 있다.
도 9 및 도 10은 일반적인 통신 장비의 간략한 구성도 및 도 8에 도시된 일 실시예에 따른 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치를 도 9의 통신 장비에 적용한 구성도이다.
도 9에 도시된 간략화된 구성은 LTE 모뎀의 기능 블록도로서, 도시된 바와 같이 안테나 물리 구성부(Ant PHY)를 통해 수신한 아날로그 신호를 디지털 신호로 변환하는 아날로그 디지털 변환부(ADC)를 포함하는 아날로그 블록(A1)과, 아날로그 블록(A1)에 의해 디지털로 변환된 신호를 수신하여 CP를 제거한 후 FFT를 수행하여 수신 데이터를 확인하고, 전송할 데이터를 IFFT 연산한 후 CP를 삽입하고 디지털 비트열을 재배열하는 디지털 처리 블록(D)과, CP가 삽입된 전송 디지털 신호를 아날로그로 변환하는 디지털 아날로그 변환부(DAC) 및 이를 무선으로 전송하는 안테나 물리 구성부(Ant PHY)를 포함하는 아날로그 블록(A2)을 포함할 수 있다.
기존 구성이라면 이러한 디지털 처리 블록(D)을 처리하기 위하여 범용 프로세서와 고속의 CP 제거, CP 추가, Bit-Reversal, FFT/IFFT 연산을 위한 별도의 연산 모듈을 구성한 후 이를 버스 방식으로 연동하여 처리하거나, 범용 프로세서의 제한된 RISC ISA를 통해 이러한 과정을 비효율적으로 수행하는 프로그램 루틴을 생성해야 하였다.
하지만, 본 발명의 실시예의 경우, 도 10에 도시된 바와 같이 도 8에 도시된 LTE 모뎀을 위한 전용의 특수 목적 연산 기능과 이를 ISA로서 지원하는 사용자 정의 ISA 디코딩부가 포함된 FPGA부를 소프트웨어적으로 설정(해당 목적의 FPGA 바이너리 파일 퓨징)한 본 발명의 실시예에 따른 연산 장치(1000)를 이용함으로써 마치 LTE 모뎀을 위해 확장 ISA 구조로 설계된 전용 ASIC을 이용하는 것과 같은 효과를 제공할 수 있다.
도 11은 본 발명의 일 실시예에 따른 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치의 특수 목적 기능 부여과정을 보인 순서도이다.
도시된 바와 같이 먼저 특수 목적에 맞추어 사용자 정의 ISA와 해당 사용자 정의 ISA에 대응되는 연산 및 입출력 제어 구성을 FPGA 로직으로 개발하여 FPGA부에 적용할 바이너리 파일을 생성한 후, 이를 퓨징 시 참조할 메모리에 기록한다.
해당 메모리에 기록된 바이너리 파일을 FPGA에 퓨징하여 원하는 사용자 정의 ISA와 그에 대응하는 연산 및 제어 기능을 구비한 FPGA의 사용 준비를 마치고, RISC-V의 기본 ISA와 사용자 정의 ISA를 이용한 프로그램을 작성하여 이를 연산 장치와 연동하는 주 메모리에 기록한다.
이후 해당 연산 장치를 실행시키면 주 메모리에 기록된 프로그램을 읽어온 후 이를 프로그램 카운터를 기준으로 패치하면서 수행하며, RISC-V ISA는 전통적인 연산부를 통해 연산하고, 사용자 정의 명령어의 경우는 FPGA 포워딩부를 통해 FPGA부를 통해서 처리한다.
도 12는 본 발명의 일실시예에 따른 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치의 동작 과정을 보인 순서도로서, 앞서 도 11에 도시된 바와 같이 특수 목적을 위한 사용자 정의 ISA와 이를 수행하기 위한 FPGA부의 설정이 완료된 이후 RISC-V 기본 ISA와 사용자 정의 ISA를 이용하여 작성된 프로그램(좀 더 구체적으로는 해당 프로그램의 컴파일 내용)을 수행하는 과정을 보인 것이다.
도시된 바와 같이 RISC-V 프로세서부가 명령어 패치 스테이지를 통해 프로그램 메모리 상의 명령어를 패치한다.
RISC-V 프로세서부가 명령어를 패치하는 단계에서 해당 명령어가 RISC-V 기본 명령어인지 ISA 판별부가 확인한다. 만일 기본 ISA에 해당한다면 이를 디코딩하여 실행하는 전통적인 RISC-V 명령 수행 과정을 진행한다.
만일 기본 ISA 명령이 아니라면 해당 명령을 FPGA 포워딩부를 통해서 FPGA부에 전달한다. 아직까지 해당 명령어가 사용자 정의 명령어인지 잘못 입력된 명령어인지 명확하지 않다.
이렇게 FPGA 포워딩부를 통해 명령어를 수신한 FPGA부가 해당 명령어를 디코딩하여 사용자 정의 명령어인지 판단하고, 사용자 명령어인 경우 대응되는 연산이나 외부 입출력 인터페이스 제어를 수행하고 그 결과를 생성한 후 해당 결과가 제공될 상기 RISC-V 프로세서부의 스테이지를 지정하는 연동 정보와 상기 생성 결과를 상기 RISC-V 프로세서부에 제공한다. 만일 사용자 정의 명령어가 아닌 경우라면 이를 알리는 결과 정보를 FPGA 포워딩부에 제공할 수 있다.
RISC-V 프로세서부의 FPGA 포워딩부는 수신된 생성 결과를 프로세서 클럭에 맞추어 연동 정보에 따라 대응 스테이지에 제공한다.
따라서, 본 발명의 실시예에 따른 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치는 ASIC과 유사한 기능을 가지는 전용 특수 목적 연산장치로 전환이 가능한 범용성이 높은 단일 칩을 저렴한 비용으로 제공할 수 있을 뿐만 아니라 사용자 지정 ISA의 변화와 그 기능의 변경을 마치 펌웨어 갱신을 하는 것과 유사한 과정을 통해 수행하도록 하여 사용 중에 ISA 변경을 포함하는 하드웨어 기능향상이 가능하다.
전술된 내용은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
1000: 연산 장치 1100: RISC-V 프로세서부
1110: 파이프라인 구성부 1111: 프로그램 카운터
1112: 명령어 메모리 1113: 레지스터
1114: 연산부 1115: 데이터 메모리
1116: 멀티플렉서 1117: ISA 판별부
1118: FPGA 포워딩부 1119: ISA 확장부
1200: FPGA부 1210: FPGA 코어 인터페이스부
1211: 사용자 정의 ISA 판정부 1212: 사용자 정의 ISA 결과 제공부
1220: FPGA 기능부

Claims (10)

  1. 명령어 패치, 명령어 디코딩, 명령어 실행, 메모리 접근 및 재기록 스테이지를 포함하는 파이프라인 구조의 RISC-V 기본 명령어 수행을 위한 RISC-V 프로세서부와, 사용자 정의 명령어 셋에 대한 연산이나 외부 입출력 제어를 수행하는 FPGA부를 포함하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치로서,
    상기 RISC-V 프로세서부는,
    패치된 명령어 중 RISC-V 기본 명령어가 아닌 것을 선별하는 ISA 판별부와;
    상기 ISA 판별부에서 선별된 명령어를 상기 FPGA부에 포워딩하고 결과 정보가 제공될 스테이지에 대한 연동 정보가 포함된 결과 정보를 수신하여 해당 결과를 연동 정보에 정의된 스테이지에 제공하는 FPGA 포워딩부를 포함하고,
    상기 FPGA부는,
    상기 FPGA 포워딩부로부터 전달되는 명령어를 디코딩하여 사용자 정의 명령어인지 확인하여 사용자 정의 명령어인 경우 이를 수행하도록 하고, 그 결과를 수신하여 연동 정보를 포함한 후 상기 FPGA 포워딩부에 제공하는 FPGA 코어 인터페이스부와;
    상기 FPGA 코어 인터페이스부에서 디코딩된 사용자 정의 명령어에 따른 연산이나 외부 입출력 제어를 수행하고 그 결과와 해당 결과가 제공될 스테이지를 지정하여 상기 FPGA 코어 인터페이스에 제공하는 FPGA 기능부를 포함하며,
    상기 ISA 판별부와 상기 FPGA 포워딩부는 수정 불가능하도록 고정 구성된 것을 특징으로 하는 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치.
  2. 삭제
  3. 청구항 1에 있어서, 상기 FPGA부는 상기 FPGA부의 퓨징을 위한 바이너리 파일에 의해 상기 FPGA 코어 인터페이스부와 상기 FPGA 기능부의 내용이 재구성될 수 있는 것을 특징으로 하는 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치.
  4. 청구항 1에 있어서, 상기 FPGA 포워딩부는 상기 ISA 판별부에서 제공되는 사용자 정의 명령어를 FPGA부에 제공하고 그 결과를 수신하여 연동 정보에 따라 명령어 디코딩, 명령어 실행, 메모리 접근 및 재기록 스테이지 중 하나에 상기 결과를 제공하되 상기 RISC-V 프로세서부의 클럭에 따라 동작하는 것을 특징으로 하는 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치.
  5. 청구항 4에 있어서, 상기 FPGA 포워딩부는 사용자 정의 명령어를 병렬 파이프라인 구조에 따른 클럭에 맞추어 병렬 처리하는 것을 특징으로 하는 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치.
  6. 청구항 1에 있어서, 상기 RISC-V 프로세서부와 상기 FPGA부는 각각 단수 혹은 복수로 구성될 수 있는 것을 특징으로 하는 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 장치.
  7. 명령어 패치, 명령어 디코딩, 명령어 실행, 메모리 접근 및 재기록 스테이지를 포함하는 파이프라인 구조의 RISC-V 기본 명령어 수행을 위한 RISC-V 프로세서부와, 사용자 정의 명령어 셋에 대한 연산이나 외부 입출력 제어를 수행하는 FPGA부를 포함하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 방법으로서,
    상기 RISC-V 프로세서부가 명령어 패치 스테이지를 통해 프로그램 메모리 상의 명령어를 패치하는 단계와;
    상기 RISC-V 프로세서부가 상기 명령어를 패치하는 단계에서 해당 명령어가 RISC-V 기본 명령어가 아닌 것을 구분하여 해당 구분된 명령어를 상기 FPGA부에 전달하는 단계와;
    상기 구분된 명령어를 수신한 FPGA부가 해당 명령어를 디코딩하여 사용자 정의 명령어인지 판단하고, 사용자 정의 명령어인 경우 대응되는 연산이나 외부 입출력 인터페이스 제어를 수행하고 그 결과를 생성한 후 해당 결과가 제공될 상기 RISC-V 프로세서부의 스테이지를 지정하는 연동 정보와 상기 생성 결과를 상기 RISC-V 프로세서부에 제공하는 단계와;
    상기 RISC-V 프로세서부가 수신된 생성 결과를 상기 연동 정보에 따라 대응 스테이지에 제공하는 단계를 포함하며,
    상기 RISC-V 프로세서부는 수정 불가능하도록 고정 구성되며, 상기 FPGA부는 퓨징을 위한 바이너리 파일에 의해 그 구성이 변경될 수 있는 것을 특징으로 하는 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 방법.
  8. 삭제
  9. 청구항 7에 있어서, 상기 FPGA부를 위한 바이너리 파일을 이용하여 상기 FPGA부를 재구성하는 퓨징 단계를 더 포함하는 것을 특징으로 하는 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 방법.
  10. 청구항 7에 있어서, 상기 RISC-V 프로세서부가 사용자 정의 명령어에 대한 결과를 FPGA부에 제공하고 그 결과를 수신하여 연동 정보에 따라 명령어 디코딩, 명령어 실행, 메모리 접근 및 재기록 스테이지 중 하나에 상기 결과를 제공하되 이러한 과정을 클럭에 맞추어 ISA 처리 방식으로 수행하는 단계를 포함하는 것을 특징으로 하는 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 RISC-V 기반 연산 방법.
KR1020180169301A 2018-12-26 2018-12-26 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 risc-v 기반 연산 장치 및 그 방법 KR101996842B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180169301A KR101996842B1 (ko) 2018-12-26 2018-12-26 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 risc-v 기반 연산 장치 및 그 방법
PCT/KR2019/013045 WO2020138663A1 (ko) 2018-12-26 2019-10-04 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 risc-v 기반 연산 장치 및 그 방법
US17/041,384 US11409529B2 (en) 2018-12-26 2019-10-04 RISC-V implemented processor with hardware acceleration supporting user defined instruction set and method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180169301A KR101996842B1 (ko) 2018-12-26 2018-12-26 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 risc-v 기반 연산 장치 및 그 방법

Publications (1)

Publication Number Publication Date
KR101996842B1 true KR101996842B1 (ko) 2019-07-08

Family

ID=67255987

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180169301A KR101996842B1 (ko) 2018-12-26 2018-12-26 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 risc-v 기반 연산 장치 및 그 방법

Country Status (3)

Country Link
US (1) US11409529B2 (ko)
KR (1) KR101996842B1 (ko)
WO (1) WO2020138663A1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111240457A (zh) * 2020-01-17 2020-06-05 济南浪潮高新科技投资发展有限公司 一种基于risc-v的动态功耗管理方法
WO2020138663A1 (ko) * 2018-12-26 2020-07-02 (주)자람테크놀로지 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 risc-v 기반 연산 장치 및 그 방법
CN111400986A (zh) * 2020-02-19 2020-07-10 西安智多晶微电子有限公司 一种集成电路计算设备及计算处理系统
CN113157634A (zh) * 2021-01-28 2021-07-23 厦门智多晶科技有限公司 一种基于fpga的管脚复用配置方法、装置及fpga
KR20230106427A (ko) 2022-01-06 2023-07-13 부산대학교 산학협력단 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법
US11775303B2 (en) 2020-11-12 2023-10-03 Electronics And Telecommunications Research Institute Computing accelerator for processing multiple-type instruction and operation method thereof

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112099853B (zh) * 2020-09-17 2021-10-29 广东高云半导体科技股份有限公司 基于fpga实现的risc-v处理器、fpga芯片及片上系统
CN112947999B (zh) * 2021-03-10 2022-06-28 超睿科技(上海)有限公司 一种精简指令集计算机指令功能扩展的方法及装置
US11714649B2 (en) 2021-11-29 2023-08-01 Shandong Lingneng Electronic Technology Co., Ltd. RISC-V-based 3D interconnected multi-core processor architecture and working method thereof
CN114356836A (zh) * 2021-11-29 2022-04-15 山东领能电子科技有限公司 基于risc-v的三维互联众核处理器架构及其工作方法
CN114416031B (zh) * 2021-12-27 2022-09-16 中国科学院软件研究所 面向AIoT场景支持RISC-V处理器的操作系统
CN115469909B (zh) * 2022-11-14 2023-06-20 深圳鸿芯微纳技术有限公司 指令更新方法、软件平台的工作方法、装置、设备和介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100705507B1 (ko) 2002-05-13 2007-04-10 텐실리카 인코포레이티드 확장가능한 프로세서 아키텍처에 진보된 명령어들을부가하는 방법 및 장치
KR100781340B1 (ko) * 2006-09-18 2007-11-30 삼성전자주식회사 사용자 정의 확장 연산을 처리하는 연산 시스템 및 방법
KR101783576B1 (ko) 2012-09-27 2017-09-29 인텔 코포레이션 다수의 코어들, 공유 코어 확장 로직, 및 공유 코어 확장 이용 명령어들을 갖는 프로세서

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9612840B2 (en) * 2014-03-28 2017-04-04 Intel Corporation Method and apparatus for implementing a dynamic out-of-order processor pipeline
KR101499097B1 (ko) * 2014-12-15 2015-03-05 (주)에이원정보기술 Mdws-600s 전용통신망과의 호환성을 갖는 데이터 게이트웨이 시스템
WO2017120270A1 (en) * 2016-01-04 2017-07-13 Gray Research LLC Massively parallel computer, accelerated computing clusters, and two dimensional router and interconnection network for field programmable gate arrays, and applications
RU2018130817A (ru) * 2016-01-26 2020-02-27 Айкэт Ллс Процессор с реконфигурируемым алгоритмическим конвейерным ядром и алгоритмическим согласующим конвейерным компилятором
WO2019104090A1 (en) * 2017-11-21 2019-05-31 Fungible, Inc. Work unit stack data structures in multiple core processor system for stream data processing
CN111919203A (zh) * 2018-03-31 2020-11-10 美光科技公司 使用重入队列的多线程自调度可重新配置计算架构的循环执行控制
KR101996842B1 (ko) * 2018-12-26 2019-07-08 (주)자람테크놀로지 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 risc-v 기반 연산 장치 및 그 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100705507B1 (ko) 2002-05-13 2007-04-10 텐실리카 인코포레이티드 확장가능한 프로세서 아키텍처에 진보된 명령어들을부가하는 방법 및 장치
KR100781340B1 (ko) * 2006-09-18 2007-11-30 삼성전자주식회사 사용자 정의 확장 연산을 처리하는 연산 시스템 및 방법
KR101783576B1 (ko) 2012-09-27 2017-09-29 인텔 코포레이션 다수의 코어들, 공유 코어 확장 로직, 및 공유 코어 확장 이용 명령어들을 갖는 프로세서

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Ho-Cheung Ng et al, "A Soft Processor Overlay with Tightly-coupled FPGA Accelerator", 2nd International Workshop on Overlay Architectures for FPGAs, pp. 31-36(2016.06.)* *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020138663A1 (ko) * 2018-12-26 2020-07-02 (주)자람테크놀로지 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 risc-v 기반 연산 장치 및 그 방법
CN111240457A (zh) * 2020-01-17 2020-06-05 济南浪潮高新科技投资发展有限公司 一种基于risc-v的动态功耗管理方法
CN111240457B (zh) * 2020-01-17 2023-07-21 山东浪潮科学研究院有限公司 一种基于risc-v的动态功耗管理方法
CN111400986A (zh) * 2020-02-19 2020-07-10 西安智多晶微电子有限公司 一种集成电路计算设备及计算处理系统
CN111400986B (zh) * 2020-02-19 2024-03-19 西安智多晶微电子有限公司 一种集成电路计算设备及计算处理系统
US11775303B2 (en) 2020-11-12 2023-10-03 Electronics And Telecommunications Research Institute Computing accelerator for processing multiple-type instruction and operation method thereof
CN113157634A (zh) * 2021-01-28 2021-07-23 厦门智多晶科技有限公司 一种基于fpga的管脚复用配置方法、装置及fpga
CN113157634B (zh) * 2021-01-28 2023-07-04 厦门智多晶科技有限公司 一种基于fpga的管脚复用配置方法、装置及fpga
KR20230106427A (ko) 2022-01-06 2023-07-13 부산대학교 산학협력단 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법

Also Published As

Publication number Publication date
US11409529B2 (en) 2022-08-09
WO2020138663A1 (ko) 2020-07-02
US20210365266A1 (en) 2021-11-25

Similar Documents

Publication Publication Date Title
KR101996842B1 (ko) 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 risc-v 기반 연산 장치 및 그 방법
US20190007332A1 (en) Processors and methods with configurable network-based dataflow operator circuits
US20190004955A1 (en) Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
CN111414197B (zh) 数据处理系统、编译器、处理器的方法和机器可读介质
JP4943584B2 (ja) 超長命令語の条件付き実行をサポートする方法
JP6096120B2 (ja) 処理クラスタのためのロード/ストア回路要素
KR101275698B1 (ko) 데이터 처리 방법 및 장치
RU2636675C2 (ru) Команды, процессоры, способы и системы доступа множественных регистров к памяти
US9513908B2 (en) Streaming memory transpose operations
WO2012052909A1 (en) Method and apparatus for providing portability of partially accelerated signal processing applications
RU2639695C2 (ru) Процессоры, способы и системы для осуществления доступа к набору регистров либо как к множеству малых регистров, либо как к объединенному большому регистру
US20140075153A1 (en) Reducing issue-to-issue latency by reversing processing order in half-pumped simd execution units
JP6551751B2 (ja) マルチプロセッサ装置
Wang et al. A partially reconfigurable architecture supporting hardware threads
US6012138A (en) Dynamically variable length CPU pipeline for efficiently executing two instruction sets
TW201712534A (zh) 關於包括指令組的大小之指令組的資訊解碼
CN103460181A (zh) 集成电路器件和执行其位操纵的方法
US11531638B2 (en) Reconfigurable circuit array using instructions including a fetch configuration data portion and a transfer configuration data portion
WO2014202825A1 (en) Microprocessor apparatus
TWI749154B (zh) 加載單元、系統及利用其的方法
JP7042870B2 (ja) コンピューティングデバイスによって実行される方法、装置、機器及びコンピュータ読み取り可能な記憶媒体
US10169044B2 (en) Processing an encoding format field to interpret header information regarding a group of instructions
US20160162290A1 (en) Processor with Polymorphic Instruction Set Architecture
Prakash et al. Custom instructions with local memory elements without expensive DMA transfers
CN111352894A (zh) 一种单指令多核系统、指令处理方法及存储介质

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant