KR102416325B1 - 확장 명령어 생성 및 처리 방법 및 이를 이용한 장치 - Google Patents

확장 명령어 생성 및 처리 방법 및 이를 이용한 장치 Download PDF

Info

Publication number
KR102416325B1
KR102416325B1 KR1020190064841A KR20190064841A KR102416325B1 KR 102416325 B1 KR102416325 B1 KR 102416325B1 KR 1020190064841 A KR1020190064841 A KR 1020190064841A KR 20190064841 A KR20190064841 A KR 20190064841A KR 102416325 B1 KR102416325 B1 KR 102416325B1
Authority
KR
South Korea
Prior art keywords
instruction
gen
matrix
instruction requesting
requesting
Prior art date
Application number
KR1020190064841A
Other languages
English (en)
Other versions
KR20200137843A (ko
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 KR1020190064841A priority Critical patent/KR102416325B1/ko
Priority to US16/888,525 priority patent/US11366661B2/en
Publication of KR20200137843A publication Critical patent/KR20200137843A/ko
Application granted granted Critical
Publication of KR102416325B1 publication Critical patent/KR102416325B1/ko

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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Advance Control (AREA)

Abstract

확장 명령어 생성 및 처리 방법 및 이를 이용한 장치가 제공된다. 상기 방법은, 제1 디바이스가 Gen-Z 인터페이스 규격을 기반으로 생성된 확장 명령어에 따른 요청 패킷을 제2 디바이스로 전송하는 단계; 및 제1 디바이스가 제2 디바이스로부터 요청 패킷의 수행에 따른 결과를 포함하는 응답 패킷을 수신하는 단계를 포함한다. 확장 명령어는 Gen-Z 인터페이스의 제조사 정의 명령어 셋트를 토대로 생성된 것이다.

Description

확장 명령어 생성 및 처리 방법 및 이를 이용한 장치{Method for generating and processing extended instruction and apparatus using the method}
본 발명은 명령어를 생성하는 방법에 관한 것으로, 더욱 상세하게 말하자면, Gen-Z 인터페이스 규격의 확장 명령어를 생성하고 처리하는 방법 및 이를 이용한 장치에 관한 것이다.
최근 머신 러닝(machine learning), 딥 러닝(deep learning), 인메모리(in-memory) 컴퓨팅, 대규모 지구 환경 시뮬레이터 등 기존의 컴퓨팅 환경을 완전히 초월하는 하드웨어 환경을 요구하는 응용 소프트웨어가 급격히 빠른 속도로 개발 및 사용되고 있다. 전술한 컴퓨팅 응용 소프트웨어는 우선 CPU(central processing unit)에 접속되어 있는 로컬 및 공유 메모리를 사용하여 하드디스크 입출력을 최소화함으로써 그 연산 속도를 극대화시켜 나가는 방향으로 발전하고 있다. CPU에 직접 연결하여 가장 빠른 데이터 접근 속도를 가질 수 있는 로컬 메모리는 컴퓨팅 보드 설계시 이미 그 최대 용량이 결정되기 때문에, 최대 용량 이상의 메모리 증설이 불가능하다. 따라서 임의 노드의 로컬 메모리가 부족할 경우 원격 컴퓨터 노드의 메모리를 네트워크 기술을 사용하여 공유시켜 자신의 메모리처럼 사용할 수 있는 공유 메모리 기술 또한 빠르게 발전하고 있다. 그러나 네트워크를 사용하는 공유 메모리를 사용하는 기술의 경우, 네트워크 지연 시간에 종속되는 접속 속도를 가질 수 밖에 없는 한계가 존재한다.
현재 메모리 사용 기술 발전의 일환으로 대용량 메모리를 컴퓨팅 노드 자체에 혹은 노드 간에 상호 공유할 수 있는 기술인 Gen-Z 인터페이스 기술이 제안되었다. Gen-Z 인터페이스 기술은 기존의 로컬 및 공유 메모리 공유 기술이 가지는 한계점을 극복하고 유연한 인터페이스 기술을 제공하기 위하여 개발되고 있다. 현재 HP, IBM, Dell EMC, Samsung, SK hynix 등의 50개이상의 기업이 차세대 메모리 기술인 Gen-Z 인터페이스 개발을 위하여 협업을 진행하고 있는 상황이다.
Gen-Z 인터페이스는 대용량 메모리 중심 컴퓨팅 기능을 표준 방법론적으로 제시하고 이를 산업 표준화 과정을 거쳐 구현 중인 차세대 메모리 제어 기술이다. 그러나 이러한 기술 개발에도 불구하고 현재 머신 러닝 등에서 사용하는 대규모 연산에 필수적인 선형 대수 연산, 행렬 연산 등의 복잡한 명령어는 지원하지 못하고 있는 실정이다.
관련 선행 문헌으로는 미국 출원 공개번호 제2019-0087298호에 기재된 "TRACE DATA"가 있다.
본 발명이 해결하고자 하는 과제는, Gen-Z 인터페이스 규격의 확장 명령어를 생성하고 처리하는 방법 및 이를 이용한 장치를 제공하는 것이다.
또한, 본 발명이 해결하고자 하는 과제는, Gen-Z 인터페이스의 제조사 정의 명령어 세트를 사용하여 표준에 부합되면서도 대규모 데이터 연산시에 반드시 필요한 명령어를 추가할 수 있는 방법 및 이를 이용한 장치를 제공하는 것이다.
본 발명의 실시 예에 따른 방법은 확장 명령어를 처리하는 방법으로서, 제1 디바이스가 Gen-Z 인터페이스 규격을 기반으로 생성된 확장 명령어에 따른 요청 패킷을 제2 디바이스로 전송하는 단계; 및 상기 제1 디바이스가 상기 제2 디바이스로부터 상기 요청 패킷의 수행에 따른 결과를 포함하는 응답 패킷을 수신하는 단계를 포함하며, 상기 확장 명령어는 상기 Gen-Z 인터페이스의 제조사 정의 명령어 셋트를 토대로 생성된 것이다.
상기 확장 명령어는 2개의 메모리 위치에서의 곱셈을 요청하는 제1 명령어, 2개의 메모리 위치에서의 나눗셈을 요청하는 제2 명령어, 오른쪽 시프트를 요청하는 제3 명령어, 왼쪽 시프트를 요청하는 제4 명령어, 모든 비트의 토글(toggle)을 요청하는 제5 명령어, 행렬 곱셈을 요청하는 제6 명령어, 행렬 합계(summation)를 요청하는 제7 명령어, 행렬 전치를 요청하는 제8 명령어, 행렬 역변(inverse)을 요청하는 제9 명령어, 각 요소에서의 단일 스칼라 값으로 행렬 덧셈을 요청하는 제10 명령어, 및 행렬 뺄셈을 요청하는 제11 명령어 중 적어도 하나를 포함할 수 있다.
상기 확장 명령어는 0x60부터 0x6A까지의 명령어 인코딩을 사용할 수 있다.
상기 확장 명령어는 상기 제1 명령어 내지 제11 명령어를 모두 포함하고, 상기 제1 명령어 내지 제11 명령어는 각각 0x60부터 0x6A까지의 명령어 인코딩 중 하나를 순서대로 사용할 수 있다.
한편, 상기 제1 디바이스는 CPU(central processing unit)이고, 상기 제2 디바이스는 Gen-Z 메모리일 수 있다. 상기 제2 디바이스는 복수의 Gen-Z 메모리를 포함할 수 있다.
또한, 상기 제1 디바이스는 CPU이고, 상기 제2 디바이스는 연산 기능을 가지는 디바이스일 수 있다. 상기 제2 디바이스는 GPU(Graphic Processing Unit) 또는 FPGA(field programmable gate array) 가속기일 수 있다.
본 발명의 다른 실시 예에 따른 처리 장치는, 제1 디바이스; 및 제2 디바이스를 포함하고, 상기 제1 디바이스가 Gen-Z 인터페이스 규격을 기반으로 생성된 확장 명령어에 따른 요청 패킷을 상기 제2 디바이스로 전송하도록 구성되고, 상기 제2 디바이스는 상기 요청 패킷을 수행하고 그 결과를 포함하는 응답 패킷을 상기 제1 디바이스로 전송하도록 구성되며, 상기 확장 명령어는 상기 Gen-Z 인터페이스의 제조사 정의 명령어 셋트를 토대로 생성된 것이다.
상기 확장 명령어는 2개의 메모리 위치에서의 곱셈을 요청하는 제1 명령어, 2개의 메모리 위치에서의 나눗셈을 요청하는 제2 명령어, 오른쪽 시프트를 요청하는 제3 명령어, 왼쪽 시프트를 요청하는 제4 명령어, 모든 비트의 토글을 요청하는 제5 명령어, 행렬 곱셈을 요청하는 제6 명령어, 행렬 합계를 요청하는 제7 명령어, 행렬 전치를 요청하는 제8 명령어, 행렬 역변을 요청하는 제9 명령어, 각 요소에서의 단일 스칼라 값으로 행렬 덧셈을 요청하는 제10 명령어, 및 행렬 뺄셈을 요청하는 제11 명령어 중 적어도 하나를 포함할 수 있다.
상기 확장 명령어는 상기 제1 명령어 내지 제11 명령어를 모두 포함하고, 상기 제1 명령어 내지 제11 명령어는 각각 0x60부터 0x6A까지의 명령어 인코딩 중 하나를 순서대로 사용할 수 있다.
상기 제1 디바이스는 CPU이고, 상기 제2 디바이스는 Gen-Z 메모리일 수 있다. 상기 제1 디바이스는 CPU이고, 상기 제2 디바이스는 연산 기능을 가지는 디바이스일 수 있다.
상기 제2 디바이스는 GPU 및 FPGA 중 적어도 하나를 포함할 수 있다.
본 발명의 실시 예에 따르면, Gen-Z 인터페이스에서 정의하고 있는 표준 규격을 따르면서도 Gen-Z 인터페이스에서 제공하지 못하고 있는 기능적 단점을 보완할 수 있는 명령어를 추가적으로 생성하여 제공할 수 있다.
특히, Gen-Z 인터페이스의 제조사 정의 명령어 셋트를 사용하여 표준에 부합되면서도 대규모 데이터 연산시에 반드시 필요한 명령어를 생성하여 제공함으로써, 고속 메모리 연산이 가능하도록 할 수 있으며, 머신 러닝 및 딥 러닝, 초대규모 변수 운용 시뮬레이션 프로그램의 실행 속도를 향상시킬 수 있다.
도 1은 본 발명의 실시 예에 따른 인터페이스 구조를 나타낸다.
도 2는 본 발명의 실시 예에 따른 인터페이스 규격의 처리 장치의 구조를 나타낸 도이다.
도 3은 본 발명의 다른 실시 예에 따른 인터페이스 규격의 처리 장치의 구조를 나타낸 도이다.
도 4는 본 발명의 실시 예에 따른 확장 명령어를 나타낸 도이다.
도 5는 본 발명의 또 다른 실시 예에 따른 인터페이스 규격의 처리 장치의 구조를 나타낸 도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 나타낸다.
본 명세서에서 단수로 기재된 표현은 "하나" 또는 "단일" 등의 명시적인 표현을 사용하지 않은 이상, 단수 또는 복수로 해석될 수 있다.
또한, 본 발명의 실시 예에서 사용되는 제1, 제2 등과 같이 서수를 포함하는 용어는 구성 요소들을 설명하는데 사용될 수 있지만, 구성 요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 명명될 수 있다.
다음에는 첨부된 도면을 참조하여 본 발명의 실시 예에 따른 확장 명령어 생성 및 처리 방법 및 이를 이용한 장치에 대하여 설명한다.
본 발명의 실시 예에서는 소정 인터페이스 특히, Gen-Z 인터페이스 규격의 확장 명령어를 구현한다.
Gen-Z 인터페이스는 다음과 같은 구조적 특징을 가진다.
첫째, 바이트 어드레싱이 가능하다.
Gen-Z 인터페이스는 기존의 메모리 공유 기술이 대부분 블록 단위 접근을 기반으로 사용된 것에 비해, 로컬 노드 및 원격 노드가 휘발성 또는 비휘발성 메모리 소자인 공유 대상 메모리에 대하여 바이트 단위로 접근(access)할 수 있도록 한다.
둘째, 입출력(Input/Output, I/O) 디바이스 접근시 공통으로 사용 가능한 규격을 제공한다.
기존의 컴퓨팅 구성 요소에서 널리 사용되는 네트워크 카드, 그래픽 카드, FPGA(field programmable gate array), DSP(digital signal processor)와 같은 컴퓨팅 요소들은 그들 각각의 인터페이스 규격을 가지면서 컴퓨팅 노드에 부착되어 동작하였으나, Gen-Z 인터페이스 규격을 사용하면 하나의 공통 소프트웨어 규격을 가지고 장치를 인식하고 사용하는 것이 가능하다. 즉, 위에서 언급한 개별 컴퓨팅 요소들에 Gen-Z 인터페이스 규격을 적용할 경우, 개별 디바이스에 Gen-Z 명령어를 사용하여 균일한(uniform) 상호 접근이 가능하다.
셋째, 다중 메시지 기능-Gen-Z 인터페이스는 단일 패킷 내에서 다수의 메시징 패킷을 포함시킬 수 있는 방법을 제공한다.
넷째, 하드웨어 가속기 접근 방법을 제공한다.
Gen-Z 인터페이스는 하드웨어 가속기에 대한 코히런트(coherent) 및 비코히런트(non-coherent) 통신 방법을 지원한다.
이러한 구조적 특징을 가지는 Gen-Z 인터페이스를 구현하여 컴퓨팅 구성 요소 내부의 자원에 접근하기 위한 동작을 실시할 때, 메모리 시멘틱(memory semantic) 또는 메모리 중심 통신을 지원하는 방법이 개발되었다.
전통적인 CPU의 메모리 접근은 획득/저장(load/store) 명령을 사용하여 이루어지는데 load/store 방식은 지금까지 출현한 컴퓨터들의 가장 빠른 데이터 획득 및 저장 방법을 제공하고 있다. 또한, CPU에는 메모리 자원 이외의 I/O 하드웨어를 위한 전용 명령어가 별도로 지원된다. 그런데 I/O 전용 명령어를 사용하면, 컴퓨팅 플랫폼의 전체적인 대역폭이 하락할 뿐만 아니라 I/O 장치의 특성상 접근 지연 시간(access delay time)이 상이하며, 이에 따라 CPU 측에서 동일한 I/O명령이 발생하더라도 대상 I/O 장치의 특성에 따라 다른 지연 시간을 가지고 되며, 그 결과, 대상 I/O 장치의 데이터가 서로 다른 시간에 도달하게 된다. 이러한 I/O 장치의 하드웨어적인 특성으로 인하여 하드웨어를 제어하여야 하는 운영체제 관점에서는 동기화 수단을 사용하여 이들 자원을 사용하는 프로세스를 블록킹(blocking)시키거나 스핀락(spinlock) 등을 사용하는 방법으로 컴퓨팅 시스템의 자원 사용에 효율성을 증대시키는 방법을 취하고 있다.
이러한 문제점에 효과적으로 극복하기 위하여, Gen-Z 인터페이스는 전술한 획득/저장 방식의 명령어와 유사한 명령어를 설계하여 사용하며, Gen-Z 인터페이스를 사용하는 메모리 및 I/O 장치들에 접근시에도 Gen-Z 전용 명령어를 사용하는 방식으로 구현되었다. 이러한 접근 방식은 메모리 공유 방법을 표준화하여 원천적(native) 및 구조적으로 지원하는 방식으로 설계되고 구현되고 있다는 것에 의의가 있을 것이다. 현재 Gen-Z 인터페이스는 버전 1.0a가 완성되어 Gen-Z 컨소시움에 가입된 회사에 한하여 그 규격이 제공되고 있다.
Gen-Z 인터페이스의 명령어 집합을 살펴보면, 현재 버전 1.0a를 기준으로 Gen-Z 인터페이스는 총 35개의 OpClass 명령 집합을 제공하고 있고, 하나의 OpClass 명령은 세부적으로 다시 32개의 OpCode로 구성된 명령어 집합으로 구성된다. 따라서 Gen-Z 인터페이스는 산술적으로 천여개의 명령어로 구성된 컴포넌트 제어 규격이라 할 수 있다.
한편, 35개의 OpClass는 다시 묵시적(implicit) OpClass와 명시적(explicit) OpClass로 구분되며, 이는 OpClass를 전송할 때 사용하는 패킷 헤더 내부에 OpClass 라벨 필드(label field)가 존재하는지의 여부에 따라 분류된다.
35개의 OpClass에서 묵시적 OpClass는 3개이며, 나머지 32개는 명시적 OpClass이다. 묵시적 OpClass는 Gen-Z 하드웨어 토폴로지 상에서 P2P, 메시(mesh), 그리고 데이지체인(daisy-chain) 토폴로지 상에서 사용되도록 구성되며, 명시적 OpClass는 P2P, 스위치기반 토폴로지에서 사용되도록 구성된다.
묵시적 OpClass 명령어는 다음과 같은 용도를 위해 사용될 수 있다.
1. P2P-Core: P2P 및 데이지 체인 구조에 최적화된 메모리간 통신을 나타내며, CPU와 Gen-Z 인터페이스를 지원하는 메모리 디바이스 간 통신에 주로 사용된다.
2. P2P-Coherency: 코히런트 통신이 필요한 컴포넌트간의 P2P 통신을 나타내며, CPU와 Gen-Z 인터페이스를 지원하는 GPU(Graphic Processing Unit), SoC(System on Chip), 가속기 등 간의 통신에 주로 사용된다.
3. P2P-Vendor-defined: 제조사 정의(vendor-defined) P2P 통신을 나타낸다.
명시적(explicit) OpClass 명령어에 대하여 추가 설명은 아래와 같다.
1. Core64: 64비트 어드레스를 가진 단일 및 멀티 서브넷 통신에 사용된다.
2. Control: 인밴드 메니지먼트 동작, 이벤트 알림 등에 사용된다.
3. Atomic1: 아토믹(atomic) 동작에 사용된다.
4. Large Data Move 1: 버퍼링 동작 및 대용량 읽기 동작에 사용된다.
5. Advanced 1: 패턴 동작 및 경량 알림 기능을 나타낸다.
6. Advanced 2: 정밀 타이머, 유니캐스트 패킷 요약을 나타낸다.
7. Context ID: 응답자(Responder) 컨텍스트 확인자를 지시하는 동작에 사용된다.
8. Multicast: 비신뢰성 및 신뢰성 멀티캐스트 동작에 사용된다.
9. Strong Ordered Domain(SOD): strong ordering 동작에 사용된다.
10. 8개의 Vendor Defined OpClasses: 제조사 정의 동작 또는 사실 표준 동작에 사용된다.
도 1은 본 발명의 실시 예에 따른 인터페이스 구조를 나타낸다.
구체적으로, 본 발명의 실시 예에 따른 인터페이스는 Gen-Z 인터페이스이며, Gen-Z 인터페이스는 기본 명령어 전달 및 반환 구조를 가진다. Gen-Z 인터페이스(1)는 명령어를 발생시키는 요청자(Reqeuster, 11)와 해당 명령어를 포함하는 명령 패킷을 수신하여 수행하는 응답자(Responder, 12)을 포함하는 것을 기반으로, 명령어가 설계된다. 요청자(10)에 의하여 발생한 명령어는 요청(request) 형태로 응답자(20)에게 전달되고, 응답자(20)는 요청 형태로 전달된 명령어를 수행하고, 명령 수행이 완료되면 응답(response) 형태로 요청자(10)에게 명령 달성 여부를 알려준다.
도 2는 본 발명의 실시 예에 따른 인터페이스 규격의 처리 장치의 구조를 나타낸 도이다.
본 발명의 실시 예에 따른 처리 장치(100)는 Gen-Z 인터페이스를 사용하며, 도 2에 도시된 같이, CPU(110)와 복수의 Gen-Z 메모리(120, 130), 그리고 로컬 메모리(140)를 포함한다. 여기서 Gen-Z 메모리가 2개인 것을 예로 하였으나, 본 발명은 이에 한정되지 않는다.
CPU(110)는 요청자가 되고, 제1 Gen-Z 메모리(120)와 제2 Gen-Z 메모리(130)는 응답자가 된다. CPU(110)는 전통적인 컴퓨팅 구조에서 프로그램을 실행하기 위한 로컬 메모리(140)를 기본 장착하고 있다. 로컬 메모리(140)는 CPU(110)가 부트 로더(boot loader)를 사용하여 부트 프로세스를 시작하는 순간에 초기화되고, CPU(110)가 프로그램을 실행하기 위하여 하드디스크의 프로그램을 적재하여 프로세스(process) 상태로 만들며, 프로세스를 위한 페이지 테이블을 적재하도록 구성된다. 또한, CPU 내부의 내장 그래픽 프로세서를 사용하는 시스템의 경우, 로컬 메모리(140)는 그래픽 프로세서의 그래픽 메모리 페이지 테이블, 그래픽 메모리 데이터를 저장하도록 구성될 수 있다.
대용량 데이터를 프로그램 자체에서 생성시키면서 구동되는 빅 데이터 프로그램, 머신 러닝 프로그램 같은 응용 프로그램의 사용이 일상화됨에 따라 기존의 로컬 메모리만으로는 메모리 부족 현상이 발생하며, 이에 따라 프로그램의 빠른 실행이 어려운 경우가 발생하고 있다.
그러나 CPU를 장착하는 메인 보드의 설계시 로컬 메모리(140)의 최대 수용 용량이 미리 정해지기 때문에, 로컬 메모리(140)의 수용 가능한 메모리 크기에 한계가 존재한다. 이를 해소하기 위해, Gen-Z 인터페이스를 사용하는 메모리를 시스템 메인 보드에 증설한다. 따라서, 처리 장치(100)는 도 2에서와 같이, 제1 Gen-Z 메모리(120)와 제2 Gen-Z 메모리(130)를 포함한다. 프로그램의 런타임(run time)시 발생하는 대용량 데이터를 제1 Gen-Z 메모리(120)와 제2 Gen-Z 메모리(130)에 획득/저장(load/store)하면서, 프로그램(또는 프로세스)이 성취하고자 하는 목적을 달성할 수 있다.
한편, Gen-Z 인터페이스 규격에 따라, CPU(110)의 개입 없이, 제1 Gen-Z 메모리(120)와 제2 Gen-Z 메모리(130) 사이에서 직접 데이터를 교환하는 것이 가능하다. 이를 P2P(Point to Point) 규격으로 정의하여 명령어를 설계하여 구현, 사용하고 있다. 물론 CPU(110)와 Gen-Z 메모리(120, 130) 사이의 P2P 통신도 가능함은 당연하다. 이는 CPU(110) 또한 Gen-Z 명령을 발생시킬 수 있는 요청자 역할을 할 수 있기 때문이다.
Gen-Z 인터페이스 규격에 따르면, P2P로 연결된 메모리 디바이스간의 통신은 P2P-Core 명령어 집합을 사용하여 명령을 전송하고 실행할 수 있다.
도 2에 나타낸 처리 장치(100)의 구조는 제1 Gen-Z 메모리(120)와 제2 Gen-Z 메모리(130)를 데이지 체인(daisy-chain) 형식으로 연결하여 사용할 수 있음을 포괄적으로 나타내기 위한 예일 뿐임을 유의해야 한다. 실제 구현시, 제1 Gen-Z 메모리(120)만으로 원하는 메모리 용량 및 프로그램의 목적을 달성할 수 있다면, 제2 Gen-Z 메모리(130)의 사용은 불필요할 수 있음은 당연하다 할 것이다.
위에 기술된 CPU와 메모리 디바이스와 결합된 응용과는 달리, CPU가 가진 연산 기능과는 별개로 자체적으로 연산 능력을 보유한 디바이스 또한 Gen-Z 인터페이스 규격을 사용하여 연결이 가능하다.
도 3은 본 발명의 다른 실시 예에 따른 인터페이스 규격의 처리 장치의 구조를 나타낸 도이다.
구체적으로, 도 3은 자체적으로 연산 능력을 보유한 디바이스를 Gen-Z 인터페이스를 사용하여 연결한 경우를 나타낸다. 자체적인 연산 능력을 보유한 디바이스란 데이터를 수동적으로 저장하는 메모리 디바이스와 차별화하여 그래픽 데이터를 연산할 수 있는 장치인 GPU(Graphic Processing Unit), CPU에서 필요한 고속 연산을 전용 하드웨어 로직으로 구현한 FPGA 가속기 등을 포함한다.
본 발명의 다른 실시 예에 따른 처리 장치(200)는 Gen-Z 인터페이스를 사용하며, 도 3에 도시된 같이, CPU(210), GPU(220) 및 FPGA 가속기(230)를 포함한다. CPU(210)은 요청자가 되고, GPU(220) 및 FPGA 가속기(230)는 응답자가 된다
CPU(210), GPU(220) 및 FPGA 가속기(230) 등의 컴퓨팅 요소가 도 3과 같은 연결 구조를 가질 경우, Gen-Z 인터페이스 규격에 따르면, P2P-Coherency 명령어를 사용하여 상호 명령어 교환을 성취할 수 있다.
예를 들어, Gen-Z 인터페이스 표준 규격서 1.0a에 따르면, 대표적인 P2P-Core OpClass의 명령어(Opcode)들은 다음 표 1과 같다.
Figure 112019056372210-pat00001
위의 표 1에서 나타낸 P2P-Core OpClass의 명령어들은 획득(load) 및 저장(store)에 관한 명령어를 중심으로 나타낸 것이며, 본 발명의 실시 예에 따른 Gen-Z 명령어를 이해하기 위하여 예시된 것이다.
또한, Gen-Z 인터페이스 표준 규격서 1.0a에서 제시한 P2P-Core Sub-Op 1 요청(request) 명령어들은 다음 표 2와 같다.
Figure 112019056372210-pat00002
표 2에 나타낸 바와 같이 P2P-Core Sub-Op 1 요청 명령어들은 산술 연산 명령어, 비트 연산 명령어 및 제조사 정의 명령어(Vendor-defined Opcode)를 포함한다.
제조사 정의 명령어는 Gen-Z 인터페이스를 구현함에 있어서 개별 제조사 혹은 표준 기술 구현자가 필요할 경우에 정의하여 사용되는 명령어이며, Gen-Z 인터페이스에 존재하지 않는 기능을 제조사 정의 명령어를 사용하여 정의할 수 있다. 따라서, 제조사 정의 명령어는 Gen-Z 인터페이스에 포함하여 구현할 수 있도록 지원하는 의미를 가지는 명령어 확장 기능부로 이해할 수 있다.
구체적으로, 표 2의 최하단에 표시된 명령어(OpCode)인 "Vendor-defined[0-31]"는 제조사 정의 명령어이며, 0부터 31까지 총 32개의 제조사 정의 명령어를 추가할 수 있도록 한다. 이에 대응하는 OpCode 인코딩(Encoding)은 0x60부터 0x7E까지 총 32개의 명령어 인코딩을 사용할 수 있도록 정의하고 있다.
본 발명의 실시 예에서는 Gen-Z 인터페이스의 제조사 정의 명령어 셋트를 사용하여 표준에 부합되면서도 대규모 데이터 연산시에 반드시 필요한 명령어를 추가하여 제공한다.
Gen-Z 인터페이스는 현재 머신 러닝 등에서 사용하는 대규모 연산에 필수적인 선형 대수 연산, 행렬 연산 등의 복잡한 명령어는 지원하지 못하고 있다. 본 발명의 실시 예에서는 Gen-Z 인터페이스에서 정의하고 있는 Vendor-defined OpClass 명령어를 추가로 구현하여 Gen-Z 인터페이스에서 제공하지 못하고 있는 기능적 단점을 보완한다. 이하의 설명에서는 본 발명의 실시 예에 따른 추가 정의되는 Vendor-defined OpClass 명령어를 "확장 명령어"라고 명명한다.
본 발명의 실시 예에 따른 확장 명령어는 도 4와 같다.
도 4는 본 발명의 실시 예에 따른 확장 명령어를 나타낸 도이다.
첨부한 도 4에서, 본 발명의 실시 예에서 사용하고자 하는 사용자 정의(Vendor-defined) 명령어들 즉, 확장 명령어가 순차적으로 제시된다. 구체적으로, 본 발명의 실시 예에 따른 확장 명령어는, 2개의 메모리 위치에서의 곱셈(multiplication)을 요청하는 명령어인 Mul(제1 명령어라고도 명명되며, 0x60의 명령어 인코딩을 사용할 수 있음), 2개의 메모리 위치에서의 나눗셈(Divide)을 요청하는 명령어인 Div(제2 명령어라고도 명명되며, 0x61의 명령어 인코딩을 사용할 수 있음), 오른쪽 시프트를 요청하는 명령어인 Shift Right(제3 명령어라고도 명명되며, 0x62의 명령어 인코딩을 사용할 수 있음), 왼쪽 시프트를 요청하는 명령어인 Shift Left(제4 명령어라고도 명명되며, 0x63의 명령어 인코딩을 사용할 수 있음), 모든 비트의 토글(toggle)을 요청하는 명령어인 NOT((제5 명령어라고도 명명되며, 0x64의 명령어 인코딩을 사용할 수 있음), 행렬 곱셈을 요청하는 명령어인 Matrix Mul(제6 명령어라고도 명명되며, 0x65의 명령어 인코딩을 사용할 수 있음), 행렬 합계(summation)를 요청하는 명령어인 Matrix Sum(제7 명령어라고도 명명되며, 0x66의 명령어 인코딩을 사용할 수 있음), 행렬 전치(transpose)를 요청하는 명령어인 Matrix Transpose(제8 명령어라고도 명명되며, 0x67의 명령어 인코딩을 사용할 수 있음), 행렬 역변(inverse)을 요청하는 명령어인 matrix adverse(제9 명령어라고도 명명되며, 0x68의 명령어 인코딩을 사용할 수 있음), 각 요소에서의 단일 스칼라 값으로 행렬 덧셈(add)을 요청하는 명령어인 Matrix Add(제10 명령어라고도 명명되며, 0x69의 명령어 인코딩을 사용할 수 있음), 행렬 뺄셈(subtraction)을 요청하는 명령어인 Matrix Sub(제11 명령어라고도 명명되며, 0x6A의 명령어 인코딩을 사용할 수 있음) 중 적어도 하나를 포함한다.
이러한 확장 명령어 생성에 의해, 명령어 고도화를 통한 CPU 오프로딩(off-loading)을 통한 시스템 대역폭이 향상된다.
또한, Mul 및 Div 명령어의 추가에 의해, CPU를 거치지 않고도 고정밀도 연산이 가능하며, 이에 따라 전체 시스템의 연산 속도가 증가될 수 있다. 또한, Shift right 및 Shift left 명령어에 의해 비트 연산이 강화될 수 있다. 또한, NOT 명령어에 의해 비트 토글 기능이 강화될 수 있으며, 행렬 연산 추가로 인해 고차원 행렬 연산 성능이 강화되며, 그에 따라 연산 시간이 단축될 수 있다.
한편, 도 4에서 제시한 OpCode 인코딩 번호는 본 발명의 실시 예에 따른 하나의 구현 예시일 뿐이며, 다른 OpCode 인코딩 번호가 사용될 수 있다.
이러한 본 발명의 실시 예에 따른 확장 명령어들을 포함하는 명령어 세트는, Gen-Z 인터페이스를 구현하는 FPGA 또는 전용 칩셋을 사용하여 HDL(Hardware Description Language) 또는 전용 ALU(arithmetic logic unit) 로직을 사용하여 구현될 수 있으며, 당업자라면 이를 구현할 수 있으므로 여기서는 상세한 설명을 생략한다.
대규모 로컬 및 공유 메모리를 제공하고자 설계된 Gen-Z 인터페이스는 그 자체적으로 표준 정의시 상당히 많은 수의 명령어 셋트를 제공하고 있으나, 머신 러닝 등의 최신 소프트웨어 분야의 핵심 알고리즘을 구현하기 위한 연산 명령어 지원이 상당히 부족하였다. 그러나 본 발명의 실시 예에 따르면 Gen-Z 인터페이스가 지원하지 못하는 부분을 보완할 수 있다.
본 발명의 실시 예에 따른 확장 명령어 세트는 기존의 Gen-Z 인터페이스에서 지원하고자 하는 명령어와 비교하면 숫자적으로 소수의 명령어이지만, 머신 러닝 등의 최신 응용 소프트웨어 관점에서는 필수적이라 할 수 있는 명령어들이며, Gen-Z 인터페이스에서 제시된 Vendor-defined OpClass 명령어 구현을 이용하여 제공될 수 있다.
본 발명의 실시 예에 따른 확장 명령어들을 이용하여 응용 프로그램(Application Program) 혹은 응용 프로세스(Application Process)의 고속 메모리 연산이 가능해진다. 특히, 머신 러닝 및 딥 러닝, 초대규모 변수 운용 시뮬레이션 프로그램의 실행 속도를 향상시킬 수 있다.
본 발명의 실시 예에 따른 확장 명령어들을 처리 장치에 적용하는 경우의 처리 방법은 다음과 같다.
예를 들어, 도 2와 같이, CPU(110)와 Gen-Z 인터페이스를 사용하는 적어도 하나의 Gen-Z 메모리(120, 130)를 포함하는 처리 장치(100)에서, Gen-Z 인터페이스의 제조사 정의 명령어 셋트를 기반으로, 대규모 데이터 연산시에 필요한 명령어인 본 발명의 실시 예에 따른 확장 명령어 즉, 제1 명령어 내지 제11 명령어 중 적어도 하나를 포함하는 확장 명령어를 기반으로 연산 처리가 수행된다.
제1 명령어 내지 제11 명령어 중 적어도 하나를 포함하는 확장 명령어를 기반으로 하는 프로그램이 로컬 메모리로부터 CPU(110)에 로드되어 실행되면서, CPU(110)는 해당 프로그램의 실행시 임의 확장 명령어에 따라 대응하는 연산을 수행한다.
예를 들어, 확장 명령어가 제1 명령어인 "Mul"이거나 제2 명령어인 "Div"인 경우인 경우, CPU(110)는 도 2의 제1 Gen-Z 메모리(120)로 데이터를 요청하는 요청 패킷을 전달하며, 이에 따라 제1 Gen-Z 메모리(120)로부터 제공되는 응답 패킷에 포함된 데이터를 기반으로 확장 명령어에 대응하는 연산을 수행하고 그 결과를 제1 Gen-Z 메모리(120)에 저장할 수 있다.
한편, 제1 Gen-Z 메모리(120)와 제2 Gen-Z 메모리(130) 사이에서, CPU(110)의 개입 없이, 직접 데이터 교환이 수행될 수 있으며, 제1 Gen-Z 메모리(120)에 관련 데이터가 없는 경우, 제1 Gen-Z 메모리(120)는 제2 Gen-Z 메모리(130)와의 통신을 통해 관련 데이터를 제공받아 CPU(110)로 전달할 수 있다.
또 다른 예를 들어, 도 3과 같이 CPU(210)와 연산 능력을 보유한 GPU(220)와 FPGA 가속기(230)를 포함하는 처리 장치(200)에서도, Gen-Z 인터페이스의 제조사 정의 명령어 세트를 기반으로, 대규모 데이터 연산시에 필요한 명령어인 본 발명의 실시 예에 따른 확장 명령어 즉, 제1 명령어 내지 제11 명령어 중 적어도 하나를 포함하는 확장 명령어를 기반으로 연산 처리가 수행된다.
제1 명령어 내지 제11 명령어 중 적어도 하나를 포함하는 확장 명령어를 기반으로 하는 프로그램이 로컬 메모리로부터 CPU(210)에 로드되어 실행되면서, CPU(210)는 해당 프로그램의 실행시 임의 확장 명령어에 따라 대응하는 연산을 수행한다. 예를 들어, 확장 명령어가 제1 명령어인 "Mul"이거나 제2 명령어인 "Div"인 경우인 경우, CPU(210)는 GPU(220) 또는 FPGA 가속기(230)로 해당 확장 명령어를 포함하는 요청 패킷을 전달하고, 이에 따라 GPU(220) 또는 FPGA 가속기(230)는 해당 확장 명령어에 대응하는 연산을 수행한다. 연산 결과는 응답 패킷에 포함되어 CPU(210)로 제공될 수 있다. "Mul" 또는 "Div"의 경우에는 CPU를 거치지 않고도 고정밀도 연산이 가능하므로, 전체 시스템의 연산 속도가 증가될 수 있다.
도 5는 본 발명의 또 다른 실시 예에 따른 처리 장치의 구조를 나타낸 도이다.
본 발명의 또 다른 실시 예에 따른 처리 장치(300)는 첨부한 도 5에서와 같이, 버스를 통해 상호 통신하는 적어도 하나의 제1 프로세서(310), 제2 프로세서(320), 메모리(330), 및 입출력 유닛(340)을 포함한다.
제1 프로세서(310)는 CPU일 수 있으며, 제2 프로세서(320)는 연산 기능을 가지는 컴퓨팅 요소 예를 들어, GPU, FPGA 가속기 등일 수 있다.
메모리(330)는 Gen-Z 인터페이스 규격에 따른 메모리와 부트 롬(Boot ROM) 등과 같은 다양한 형태의 휘발성 및 비휘발성 메모리를 포함할 수 있다.
입출력 유닛(340)은 사용자 인터페이스 입출력 장치일 수 있으며, 또는 네트워크를 통하여 다른 장치와의 통신이 가능한 네트워크 인터페이스 장치일 수도 있다.
이러한 구조로 이루어지는 처리 장치는 위의 실시 예들에 기술된 설명을 참조할 수 있으며, 여기서는 상세한 설명을 생략한다.
처리 장치(300)는 CPU를 통해 메모리 또는 저장 장치(Storage)에 저장되어 있는 프로세싱 인스트럭션(Processing Instructions)을 실행하는 반도체 장치를 포함할 수 있다.
본 발명의 실시 예에 따라 생성되는 확장 명령어를 포함하는 소프트웨어 모듈은 랜덤 액세스 메모리(random access memory, RAM), 플래시 메모리, 판독 전용 메모리(read only memory, ROM), 소거 가능 프로그래머블 판독 전용 메모리(erasable programmable ROM, EPROM), 전기적으로 소거 가능한 프로그래머블 판독 전용 메모리(electrically EPROM, EEPROM), 레지스터, 하드 디스크, 모바일 하드 디스크, CD-ROM(compact disk read-only memory) 또는 당업계에 알려진 임의의 다른 형태의 저장 매체에 저장될 수 있다.
전술한 실시 예의 전부 또는 일부는 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합에 의해 구현될 수 있다. 소프트웨어가 실시 예를 구현하는데 사용될 때, 실시 예는 컴퓨터 프로그램 제품의 형태로 완전히 또는 부분적으로 구현될 수 있다. 컴퓨터 프로그램 제품은 하나 이상의 컴퓨터 명령을 포함한다. 컴퓨터 프로그램 명령들이 로딩되어 컴퓨터상에서 실행될 때, 본 발명에 따른 절차 또는 기능들이 전부 또는 부분적으로 생성된다. 처리 장치는 범용 컴퓨터, 전용 컴퓨터, 컴퓨터 네트워크 또는 다른 프로그램 가능한 장치일 수 있다. 컴퓨터 명령은 컴퓨터 판독 가능 저장 매체에 저장되거나, 컴퓨터 판독 가능 저장 매체를 사용하여 전송될 수 있다.
본 발명의 실시 예는 이상에서 설명한 장치 및/또는 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시 예의 구성에 대응하는 기능을 실현하기 위한 프로그램, 그 프로그램이 기록된 기록 매체 등을 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시 예의 기재로부터 본 발명이 속하는 기술분야의 전문가라면 쉽게 구현할 수 있는 것이다.
이상에서 본 발명의 실시 예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (14)

  1. 확장 명령어를 처리하는 방법으로서,
    제1 디바이스가 Gen-Z 인터페이스 규격을 기반으로 생성된 확장 명령어에 따른 요청 패킷을 제2 디바이스로 전송하는 단계; 및
    상기 제1 디바이스가 상기 제2 디바이스로부터 상기 요청 패킷의 수행에 따른 결과를 포함하는 응답 패킷을 수신하는 단계
    를 포함하며,
    상기 확장 명령어는 상기 Gen-Z 인터페이스 표준의 제조사 정의 명령어 셋트를 토대로 생성된 것이면서 또한 상기 Gen-Z 인터페이스 표준을 준수하면서 대규모 데이터 연산에 필요한 명령어를 제공하며, 그리고 상기 확장 명령어가 0x60부터 0x6A까지의 명령어 인코딩 중 하나를 순서대로 사용하는, 처리 방법.
  2. 제1항에 있어서,
    상기 확장 명령어는 2개의 메모리 위치에서의 곱셈을 요청하는 제1 명령어, 2개의 메모리 위치에서의 나눗셈을 요청하는 제2 명령어, 오른쪽 시프트를 요청하는 제3 명령어, 왼쪽 시프트를 요청하는 제4 명령어, 모든 비트의 토글(toggle)을 요청하는 제5 명령어, 행렬 곱셈을 요청하는 제6 명령어, 행렬 합계(summation)를 요청하는 제7 명령어, 행렬 전치를 요청하는 제8 명령어, 행렬 역변(inverse)을 요청하는 제9 명령어, 각 요소에서의 단일 스칼라 값으로 행렬 덧셈을 요청하는 제10 명령어, 및 행렬 뺄셈을 요청하는 제11 명령어 중 적어도 하나를 포함하는, 처리 방법.
  3. 확장 명령어를 처리하는 방법으로서,
    제1 디바이스가 Gen-Z 인터페이스 규격을 기반으로 생성된 확장 명령어에 따른 요청 패킷을 제2 디바이스로 전송하는 단계; 및
    상기 제1 디바이스가 상기 제2 디바이스로부터 상기 요청 패킷의 수행에 따른 결과를 포함하는 응답 패킷을 수신하는 단계
    를 포함하며,
    상기 확장 명령어는 상기 Gen-Z 인터페이스의 제조사 정의 명령어 셋트를 토대로 생성되며,
    상기 확장 명령어는 2개의 메모리 위치에서의 곱셈을 요청하는 제1 명령어, 2개의 메모리 위치에서의 나눗셈을 요청하는 제2 명령어, 오른쪽 시프트를 요청하는 제3 명령어, 왼쪽 시프트를 요청하는 제4 명령어, 모든 비트의 토글(toggle)을 요청하는 제5 명령어, 행렬 곱셈을 요청하는 제6 명령어, 행렬 합계(summation)를 요청하는 제7 명령어, 행렬 전치를 요청하는 제8 명령어, 행렬 역변(inverse)을 요청하는 제9 명령어, 각 요소에서의 단일 스칼라 값으로 행렬 덧셈을 요청하는 제10 명령어, 및 행렬 뺄셈을 요청하는 제11 명령어를 포함하는, 처리 방법.
  4. 제3항에 있어서,
    상기 확장 명령어는 0x60부터 0x6A까지의 명령어 인코딩을 사용하고,
    상기 제1 명령어 내지 제11 명령어는 각각 0x60부터 0x6A까지의 명령어 인코딩 중 하나를 순서대로 사용하는, 처리 방법.
  5. 제1항에 있어서,
    상기 제1 디바이스는 CPU(central processing unit)이고, 상기 제2 디바이스는 Gen-Z 메모리인, 처리 방법.
  6. 제5항에 있어서,
    상기 제2 디바이스는 복수의 Gen-Z 메모리를 포함하는, 처리 방법.
  7. 제1항에 있어서,
    상기 제1 디바이스는 CPU이고, 상기 제2 디바이스는 연산 기능을 가지는 디바이스인, 처리 방법.
  8. 제7항에 있어서,
    상기 제2 디바이스는 GPU(Graphic Processing Unit) 또는 FPGA(field programmable gate array) 가속기인, 처리 방법.
  9. 제1 디바이스; 및
    제2 디바이스
    를 포함하고,
    상기 제1 디바이스가 Gen-Z 인터페이스 규격을 기반으로 생성된 확장 명령어에 따른 요청 패킷을 상기 제2 디바이스로 전송하도록 구성되고, 상기 제2 디바이스는 상기 요청 패킷을 수행하고 그 결과를 포함하는 응답 패킷을 상기 제1 디바이스로 전송하도록 구성되며,
    상기 확장 명령어는 상기 Gen-Z 인터페이스 표준의 제조사 정의 명령어 셋트를 토대로 생성된 것이면서 또한 상기 Gen-Z 인터페이스 표준을 준수하면서 대규모 데이터 연산에 필요한 명령어를 제공하며, 그리고 상기 확장 명령어가 0x60부터 0x6A까지의 명령어 인코딩 중 하나를 순서대로 사용하는, 처리 장치.
  10. 제9항에 있어서,
    상기 확장 명령어는 2개의 메모리 위치에서의 곱셈을 요청하는 제1 명령어, 2개의 메모리 위치에서의 나눗셈을 요청하는 제2 명령어, 오른쪽 시프트를 요청하는 제3 명령어, 왼쪽 시프트를 요청하는 제4 명령어, 모든 비트의 토글을 요청하는 제5 명령어, 행렬 곱셈을 요청하는 제6 명령어, 행렬 합계를 요청하는 제7 명령어, 행렬 전치를 요청하는 제8 명령어, 행렬 역변을 요청하는 제9 명령어, 각 요소에서의 단일 스칼라 값으로 행렬 덧셈을 요청하는 제10 명령어, 및 행렬 뺄셈을 요청하는 제11 명령어 중 적어도 하나를 포함하는, 처리 장치.
  11. 제10항에 있어서,
    상기 확장 명령어는 상기 제1 명령어 내지 제11 명령어를 모두 포함하고, 상기 제1 명령어 내지 제11 명령어는 각각 0x60부터 0x6A까지의 명령어 인코딩 중 하나를 순서대로 사용하는, 처리 장치.
  12. 제9항에 있어서,
    상기 제1 디바이스는 CPU이고, 상기 제2 디바이스는 Gen-Z 메모리인, 처리 장치.
  13. 제9항에 있어서,
    상기 제1 디바이스는 CPU이고, 상기 제2 디바이스는 연산 기능을 가지는 디바이스인, 처리 장치.
  14. 제13항에 있어서,
    상기 제2 디바이스는 GPU 및 FPGA 중 적어도 하나를 포함하는, 처리 장치.
KR1020190064841A 2019-05-31 2019-05-31 확장 명령어 생성 및 처리 방법 및 이를 이용한 장치 KR102416325B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020190064841A KR102416325B1 (ko) 2019-05-31 2019-05-31 확장 명령어 생성 및 처리 방법 및 이를 이용한 장치
US16/888,525 US11366661B2 (en) 2019-05-31 2020-05-29 Method for generating and processing extended instruction and apparatus using the method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190064841A KR102416325B1 (ko) 2019-05-31 2019-05-31 확장 명령어 생성 및 처리 방법 및 이를 이용한 장치

Publications (2)

Publication Number Publication Date
KR20200137843A KR20200137843A (ko) 2020-12-09
KR102416325B1 true KR102416325B1 (ko) 2022-07-04

Family

ID=73551523

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190064841A KR102416325B1 (ko) 2019-05-31 2019-05-31 확장 명령어 생성 및 처리 방법 및 이를 이용한 장치

Country Status (2)

Country Link
US (1) US11366661B2 (ko)
KR (1) KR102416325B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230106427A (ko) 2022-01-06 2023-07-13 부산대학교 산학협력단 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017181419A1 (zh) * 2016-04-22 2017-10-26 北京中科寒武纪科技有限公司 一种子矩阵运算装置及方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102154642B1 (ko) 2012-04-05 2020-09-10 한국전자통신연구원 PCIe 스위치 장치 및 그의 접속제어 방법
US11194693B2 (en) 2017-09-21 2021-12-07 Arm Limited Trace data
US20190042511A1 (en) * 2018-06-29 2019-02-07 Intel Corporation Non volatile memory module for rack implementations

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017181419A1 (zh) * 2016-04-22 2017-10-26 北京中科寒武纪科技有限公司 一种子矩阵运算装置及方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Gen-Z Consortium. Gen Z Core Specification Version 1.0. 2018년
Greg Casey. Gen-Z An Overview And Use Cases. 2017년 3월
박찬호 외 2명. 하드웨어 메모리 할당장치를 이용한 재전송 버퍼의 구현. 2018년 11월

Also Published As

Publication number Publication date
US11366661B2 (en) 2022-06-21
KR20200137843A (ko) 2020-12-09
US20200379759A1 (en) 2020-12-03

Similar Documents

Publication Publication Date Title
EP3667496B1 (en) Distributed computing system, data transmission method and device in distributed computing system
CN110622134A (zh) 专用神经网络训练芯片
CN104536937A (zh) 基于cpu-gpu异构集群的大数据一体机实现方法
Agostini et al. GPUDirect Async: Exploring GPU synchronous communication techniques for InfiniBand clusters
Dosanjh et al. Implementation and evaluation of MPI 4.0 partitioned communication libraries
KR102541465B1 (ko) 기계 학습 및 심층 학습 응용들을 위한 적응적 행렬 곱셈 가속기
KR102416325B1 (ko) 확장 명령어 생성 및 처리 방법 및 이를 이용한 장치
US8861517B2 (en) Petaflops router
US10915470B2 (en) Memory system
CN115775199B (zh) 数据处理方法和装置、电子设备和计算机可读存储介质
TW202008172A (zh) 儲存系統
Giorgi et al. Modeling multi-board communication in the axiom cyber-physical system
Reaño et al. Tuning remote GPU virtualization for InfiniBand networks
Fujita et al. QCD library for GPU cluster with proprietary interconnect for GPU direct communication
WO2022010810A1 (en) Runtime virtualization of reconfigurable data flow resources
Saldaña et al. Using partial reconfiguration in an embedded message-passing system
Cheshmikhani et al. A general framework for accelerator management based on ISA extension
KR101748210B1 (ko) 분산 처리 시스템 및 분산 처리 시스템에서의 파일 처리 방법
Dhanraj Enhancement of LiMIC-Based Collectives for Multi-core Clusters
US20230048915A1 (en) Low latency remoting to accelerators
US20240020265A1 (en) Operating a Cost Estimation Tool for Placing and Routing an Operation Unit Graph on a Reconfigurable Processor
Yang et al. Ray tracing on a networked processor array
Stuedi et al. jverbs: Rdma support for java®
KR20240041159A (ko) Cpu-gpu 협업 시스템 및 방법
Cieszewski et al. Universal dsp module interface

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant