KR102304216B1 - 벡터 계산 장치 - Google Patents

벡터 계산 장치 Download PDF

Info

Publication number
KR102304216B1
KR102304216B1 KR1020207013258A KR20207013258A KR102304216B1 KR 102304216 B1 KR102304216 B1 KR 102304216B1 KR 1020207013258 A KR1020207013258 A KR 1020207013258A KR 20207013258 A KR20207013258 A KR 20207013258A KR 102304216 B1 KR102304216 B1 KR 102304216B1
Authority
KR
South Korea
Prior art keywords
vector
instruction
storage unit
specified
unit
Prior art date
Application number
KR1020207013258A
Other languages
English (en)
Other versions
KR20200058562A (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 캠브리콘 테크놀로지스 코퍼레이션 리미티드
Publication of KR20200058562A publication Critical patent/KR20200058562A/ko
Application granted granted Critical
Publication of KR102304216B1 publication Critical patent/KR102304216B1/ko

Links

Images

Classifications

    • 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/3001Arithmetic 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/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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing
    • 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/3824Operand accessing

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)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Abstract

본 발명은 벡터 연산 장치에 관한 것으로서, 저장 유닛, 레지스터 유닛, 및 벡터 연산 유닛이 포함된다. 상기 저장 유닛은 벡터를 저장하는 데 사용되고; 상기 레지스터 유닛은 벡터 주소를 저장하는 데 사용되며, 여기에서 벡터 주소는 저장 유닛에 저장되는 벡터의 주소이다. 상기 벡터 연산 유닛은 벡터 연산 명령을 획득하는 데 사용되며, 벡터 연산 명령에 의거하여 레지스터 유닛에서 벡터 주소를 획득한 후, 상기 벡터 주소에 의거하여 저장 유닛에서 상응하는 벡터를 획득하고, 이어서 획득한 벡터에 의거하여 벡터 연산을 진행하여 벡터 연산 결과를 얻는다. 본 발명에서 제공하는 벡터 연산 장치는 계산에 참여하는 벡터 데이터를 스크래치패드 메모리에 임시 저장하여, 벡터 연산 과정 중 더욱 유연하고 효과적으로 다른 폭의 데이터를 지원함으로써, 대량의 벡터 계산 태스크를 포함하는 실행 성능을 향상시켜 준다.

Description

벡터 계산 장치 {VECTOR COMPUTING DEVICE}
본 발명은 벡터 연산 장치에 관한 것으로서, 벡터 연산 명령에 의거하여 벡터 연산을 실행하는 데 사용되며, 현재 컴퓨터 분야에서 갈수록 많아지는 알고리즘에 대량의 벡터 연산이 포함되는 문제를 효과적으로 해결해 준다.
현재 컴퓨터 분야에서 갈수록 많은 알고리즘에 벡터 연산이 언급되고 있다. 인공 신경망 알고리즘을 예로 들면, 다양한 신경망 알고리즘 중에는 대량의 벡터 연산이 포함된다. 신경망에서 출력 뉴런의 연산 표현식은 y=f(wx+b)이며, 여기에서 w는 행렬, x, b는 벡터이고, 출력 벡터 y를 계산하는 과정은 행렬 w와 벡터 x를 곱하고 벡터 b를 더한 후 얻은 벡터에 대해 활성 함수 연산(즉, 벡터 중의 각 원소에 대해 활성 함수 연산을 진행함)을 진행하는 것이다. 따라서 벡터 연산은 현재 각종 계산 장치의 설치 초기에 고려해야 하는 중요한 문제가 되었다.
종래 기술에 있어서, 벡터 연산을 진행하는 공지된 방안은 범용 프로세서를 사용하는 것이다. 상기 방법은 범용 레지스터 파일과 범용 기능 부품을 통하여 범용 명령을 실행하여 상기 알고리즘을 지원한다. 그러나 상기 방법의 단점 중 하나는 단일 범용 프로세서가 스칼라(scalar) 계산에 사용되어 벡터 연산을 진행할 때 연산 성능이 비교적 낮다는 것이다. 복수개의 범용 프로세서를 병렬 실행할 경우에는, 범용 프로세서 간 상호 통신도 성능 병목 현상을 만든다.
또 다른 종래 기술은 그래픽 처리 유닛(GPU)을 사용해 벡터 계산을 진행하는 것이다. 여기에서 범용 레지스터 파일과 범용 스트림 처리 유닛을 사용해 범용 SIMD 명령을 실행함으로써 벡터 연산을 진행한다. 그러나 상기 방안은 GPU 온칩(on-chip) 캐시가 너무 작아 대규모 벡터 연산 진행 시 오프칩(off-chip) 데이터 운반을 끊임없이 진행해야 하므로 오프칩 대역폭이 주요 성능의 병목 현상을 초래한다.
또 다른 종래 기술은 전문 맞춤제작한 벡터 연산 장치를 사용해 벡터 계산을 진행하는 것이다. 여기에서 맞춤제작한 레지스터 파일과 맞춤제작한 처리 유닛을 사용해 벡터 연산을 진행한다. 그러나 현재 종래의 전용 벡터 연산 장치는 레지스터 파일에 국한되어 있어 다른 길이의 벡터 연산은 유연하게 지원할 수 없다.
본 발명의 목적은, 벡터 연산 장치를 제공함으로써 칩간 통신에 제한적이고 온칩 캐시가 부족하며 지원하는 벡터 길이가 유연하지 않은 종래 기술의 문제를 해결하는 데에 있다.
본 발명은 벡터 연산 장치에 관한 것으로서, 벡터 연산 명령에 의거하여 벡터 연산을 실행하며, 여기에는 저장 유닛, 레지스터 유닛, 및 벡터 연산 유닛이 포함된다.
상기 저장 유닛은 벡터를 저장하는 데 사용된다.
상기 레지스터 유닛은 벡터 주소를 저장하는 데 사용되며, 여기에서 벡터 주소는 저장 유닛에 저장되는 벡터의 주소이다.
상기 벡터 연산 유닛은 벡터 연산 명령을 획득하는 데 사용되며, 벡터 연산 명령에 의거하여 레지스터 유닛에서 벡터 주소를 획득한 후, 상기 벡터 주소에 의거하여 저장 유닛에서 상응하는 벡터를 획득하고, 이어서 획득한 벡터에 의거하여 벡터 연산을 진행하여 벡터 연산 결과를 얻는다.
본 발명에서 제공하는 벡터 연산 장치는 계산에 참여하는 벡터 데이터를 스크래치패드 메모리(Scratchpad Memory)에 임시 저장하여, 벡터 연산 과정 중 더욱 유연하고 효과적으로 다른 폭의 데이터를 지원함으로써, 대량의 벡터 계산 태스크를 포함하는 실행 성능을 향상시켜 준다. 본 발명은 명령 집합이 사용하기 편리하고 지원하는 벡터 길이가 유연한 장점이 있다.
도 1은 본 발명에서 제공하는 벡터 연산 장치의 구조도이고;
도 2는 본 발명에서 제공하는 명령 집합의 양식 설명도이고;
도 3은 본 발명 실시예에서 제공하는 벡터 연산 장치의 구조도이고;
도 4는 본 발명 실시예에서 제공하는 벡터 연산 장치의 벡터 내적 실행 명령의 흐름도이고; 및
도 5는 본 발명 실시예에서 제공하는 벡터 연산 유닛의 구조도이다.
본 발명은 벡터 계산 장치에 관한 것으로서, 저장 유닛, 레지스터 유닛 및 벡터 연산 유닛을 포함한다. 저장 유닛에는 벡터가 저장되고, 레지스터 유닛에는 벡터가 저장된 주소가 저장되고, 벡터 연산 유닛은 벡터 연산 명령에 의거하여 레지스터 유닛에서 벡터 주소를 획득한 후, 상기 벡터 주소에 의거하여 저장 유닛에서 상응하는 벡터를 획득하고, 이어서 획득한 벡터에 의거하여 벡터 연산을 진행하여 벡터 연산 결과를 얻는다. 본 발명에 있어서, 계산에 참여하는 벡터 데이터는 스크래치패드 메모리에 임시 저장되고, 벡터 연산 과정 중 더욱 유연하고 효과적으로 다른 폭의 데이터를 지원함으로써, 대량의 벡터 계산 태스크를 포함하는 실행 성능을 향상시켜 준다.
도 1은 본 발명에서 제공하는 벡터 연산 장치의 구조도를 도시한 것이다. 도 1에서 도시하는 바와 같이, 벡터 연산 장치는 저장 유닛, 레지스터 유닛, 및 벡터 연산 유닛을 포함한다.
상기 저장 유닛은 벡터를 저장하는 데 사용된다. 일 실시예에 있어서, 상기 저장 유닛은 스크래치패드 메모리일 수 있으며 다른 크기의 벡터 데이터를 지원할 수 있다. 본 발명은 필요한 계산 데이터를 스크래치패드 메모리(Scratchpad Memory)에 임시 저장하여, 본 연산 장치가 벡터 연산 과정에서 더욱 유연하고 효과적으로 다른 폭의 데이터를 지원할 수 있게 한다.
상기 레지스터 유닛은 벡터 주소를 저장하는 데 사용된다. 여기에서, 벡터 주소는 저장 유닛에 저장되는 벡터의 주소이다. 일 실시예에 있어서, 레지스터 유닛은 스칼라 레지스터 파일일 수 있으며, 연산 과정에서 필요한 스칼라 레지스터를 제공하고, 스칼라 레지스터는 벡터 주소만 저장할 뿐만 아니라 스칼라 데이터도 저장한다. 벡터와 스칼라의 연산에 관련된 경우, 벡터 연산 유닛은 레지스터 유닛에서 벡터 주소를 획득할 뿐만 아니라 레지스터 유닛에서 상응하는 스칼라도 획득한다.
상기 벡터 연산 유닛은 벡터 연산 명령을 획득하는 데 사용되며, 벡터 연산 명령에 의거하여 상기 레지스터 유닛에서 벡터 주소를 획득한 후, 상기 벡터 주소에 의거하여 저장 유닛에서 상응하는 벡터를 획득하고, 이어서 획득한 벡터에 의거하여 벡터 연산을 진행해 벡터 연산 결과를 얻으며, 벡터 연산 결과를 저장 유닛에 저장한다. 벡터 연산 유닛에는 벡터 더하기 부품, 벡터 곱하기 부품, 크기 비교 부품, 비선형 연산 부품 및 벡터 스칼라 곱하기 부품이 포함되며, 벡터 연산 유닛은 멀티 파이프라인 레벨 구조이다. 여기에서, 벡터 더하기 부품과 벡터 곱하기 부품은 제1 파이프라인 레벨이고, 크기 비교 부품은 제2 파이프라인 레벨이고, 비선형 연산 부품과 벡터 스칼라 곱하기 부품은 제3 파이프라인 레벨이다. 이러한 유닛은 다른 파이프라인 레벨에 있으며, 연속 직렬의 복수 개 벡터 연산 명령의 선후 순서는 상응하는 유닛이 소재한 파이프라인 레벨 순서와 일치하는 경우, 더욱 효율적으로 상기 연속 직렬 벡터 연산 명령이 요구하는 조작을 구현할 수 있다. 벡터 연산 유닛은 장치의 모든 벡터 연산을 책임지며, 벡터 더하기 조작, 벡터 더하기 스칼라 조작, 벡터 빼기 조작, 벡터 빼기 스칼라 조작, 벡터 곱하기 조작, 벡터 곱하기 스칼라 조작, 벡터 나누기(대위 나누기) 조작, 벡터 AND 조작 및 벡터 OR 조작을 포함하나 이에 한정되지 않으며, 벡터 연산 명령은 상기 벡터 연산 유닛으로 전송되어 실행된다.
본 발명의 일 실시예에 의거하여, 벡터 연산 장치는 실행하려는 벡터 연산 명령을 저장하는 데 사용하는 명령 캐시 유닛을 더 포함한다. 명령은 실행 과정에서 동시에 명령 캐시 유닛에서 캐싱된다. 하나의 명령이 실행 완료된 후, 만약 상기 명령은 명령 캐시 유닛에서 제출되지 않은 명령 중의 가장 이른 하나의 명령이면 상기 명령은 제출된다. 제출되면 상기 명령이 실행한 조작으로 인해 변경시킨 장치의 상태는 철회될 수 없다. 일 실시예에 있어서, 명령 캐시 유닛은 캐시를 재순위화할 수 있다.
본 발명의 일 실시예에 있어서, 벡터 연산 장치는 명령 캐시 유닛에서 벡터 연산 명령을 획득하고 상기 벡터 명령을 처리한 후 상기 벡터 연산 유닛에 제공하는 데 사용되는 명령 처리 유닛을 더 포함한다. 여기에서, 명령 처리 유닛에는 획득 모듈, 디코딩 모듈, 및 명령 큐(instruction queue)가 포함된다.
여기에서, 상기 획득 모듈은 명령 캐시 유닛에서 벡터 연산 명령을 획득하는 데 사용된다.
상기 디코딩 모듈은 획득한 벡터 연산 명령을 디코딩한다.
상기 명령 큐는 디코딩한 벡터 연산 명령을 순서대로 저장하고, 다른 명령이 포함된 레지스터에서 존재할 수 있는 종속성을 감안하여, 디코딩한 명령을 캐싱하는 데 사용되며, 종속성이 충족되면 명령을 발송한다.
본 발명의 일 실시예에 의거하여, 벡터 연산 장치는 종속성 처리 유닛을 더 포함한다. 상기 종속성 처리 유닛은 벡터 연산 유닛이 벡터 연산 명령을 획득하기 전에, 상기 벡터 연산 명령이 이전 벡터 연산 명령과 동일한 벡터에 엑세스하는지 여부를 판단하는 데 사용된다. 만약 그러하면, 상기 벡터 연산 명령은 하나의 저장 큐에 저장되어 이전 벡터 연산 명령 실행이 완료될 때까지 기다린 후, 저장 큐 중의 상기 벡터 연산 명령을 상기 벡터 연산 유닛에 제공한다. 그렇지 않은 경우, 곧바로 상기 벡터 연산 명령을 상기 벡터 연산 유닛에 제공한다. 상세하게는, 벡터 연산 명령은 스크래치패드 메모리에 엑세스할 때, 전후 명령이 동일한 저장 공간에 엑세스할 수 있으며, 명령 실행 결과의 정확성을 보장하기 위하여, 현재 명령은 만약 이전 명령의 데이터와 종속성이 있다고 검출되면 상기 명령은 반드시 저장 큐 내에서 종속성이 제거될 때까지 대기하여야 한다.
본 발명의 일 실시예에 의거하여, 벡터 연산 장치는 벡터를 저장 유닛에 저장하거나 또는 저장 유닛에서 벡터 연산 결과를 획득하는 데 사용되는 입력 출력 유닛을 더 포함한다. 여기에서 입력 출력 유닛은 직접 저장 유닛을 연결할 수 있으며 메모리에서 벡터 데이터를 판독하거나 벡터 데이터를 기록하는 것을 책임진다.
본 발명의 일 실시예에 의거하여, 본 발명 장치의 명령 집합은 Load/Store 구조를 채택하며, 벡터 연산 유닛은 메모리 내의 데이터를 조작할 수 없다. 그 외, 본 명령 집합은 고정 길이 명령을 채택한다.
도 2는 본 발명에서 제공하는 명령 집합의 양식 설명도이다. 도 2에서 도시하는 바와 같이, 벡터 연산 명령은 하나의 연산 코드와 하나 이상의 연산 도메인을 포함한다. 여기에서, 연산 코드는 상기 벡터 연산 명령의 기능을 가리키는 데 사용되고, 벡터 연산 유닛은 상기 연산 코드 식별을 통해 다른 벡터 연산을 진행할 수 있다. 연산 도메인은 상기 벡터 연산 명령의 데이터 정보를 가리키는 데 사용되며, 여기에서 데이터 정보는 즉시 데이터 또는 레지스터 번호일 수 있다. 예를 들어 하나의 벡터를 획득하려고 할 때, 레지스터 번호에 의거하여 상응하는 레지스터 중 벡터 시작 주소와 벡터 길이를 획득하고, 다시 벡터 시작 주소와 벡터 길이에 의거하여 저장 유닛에서 상응하는 주소에 저장된 벡터를 획득할 수 있다.
명령 집합은 다른 기능의 벡터 연산 명령을 포함한다.
벡터 더하기 명령(VA): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소 지점에서 각각 2개의 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛에서 더하기 연산을 진행한 후 결과를 스크래치패드 메모리의 지정 주소에 기록한다.
벡터 더하기 스칼라 명령(VAS): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소 지점에서 지정 크기의 벡터 데이터를 획득하고, 스칼라 레지스터 파일의 지정 주소에서 스칼라 데이터를 획득하고, 벡터 연산 유닛 중 벡터의 각 하나의 원소를 상기 스칼라 값에 더한 후 결과를 스크래치패드 메모리의 지정 주소에 기록한다.
벡터 빼기 명령(VS): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소 지점에서 각각 2개의 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛에서 빼기 연산을 진행한 후 결과를 스크래치패드 메모리의 지정 주소에 기록한다.
스칼라 빼기 벡터 명령(SSV): 상기 명령에 의거하여, 장치는 스칼라 레지스터 파일의 지정 주소에서 스칼라 데이터를 획득하고, 스크래치패드 메모리의 지정 주소에서 벡터 데이터를 획득하고, 벡터 연산 유닛에서 상기 스칼라를 이용하여 벡터 중의 상응하는 원소 뺀 후 결과를 스크래치패드 메모리의 지정 주소에 기록한다.
벡터 곱하기 명령(VMV): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 각각 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛 중 2개의 벡터 데이터를 대위하여 곱한 후 결과를 스크래치패드 메모리의 지정 주소에 기록한다.
벡터 곱하기 스칼라 명령(VMS): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 지정 크기의 벡터 데이터를 획득하고, 스칼라 레지스터 파일의 지정 주소에서 지정 크기의 스칼라 데이터를 획득하고, 벡터 레지스터 유닛에서 벡터 곱하기 스칼라 연산을 진행한 후 결과를 스크래치패드 메모리의 지정 주소에 기록한다.
벡터 나누기 명령(VD): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 각각 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛에서 2개의 벡터를 대위하여 나눈 후 결과를 스크래치패드 메모리의 지정 주소에 기록한다.
벡터 나누기 스칼라 명령(SDV): 상기 명령에 의거하여, 장치는 스칼라 레지스터 파일의 지정 주소에서 스칼라 데이터를 획득하고, 스크래치패드 메모리의 지정 위치에서 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛에서 스칼라를 이용하여 각각 벡터 중의 상응하는 원소 나눈 후 결과를 스크래치패드 메모리의 지정 주소에 기록한다.
벡터 간 AND 명령(VAV): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 각각 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛에서 2개의 벡터를 대위하여 AND시킨 후 결과를 스크래치패드 메모리의 지정 주소에 기록한다.
벡터 내 AND 명령(VAND): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛에서 벡터 중 각 하나의 위상을 AND시킨 후 결과를 스칼라 레지스터 파일의 지정 주소에 기록한다.
벡터 간 OR 명령(VOV): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 각각 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛에서 2개의 벡터를 대위하여 OR시킨 후 결과를 스크래치패드 메모리의 지정 주소에 기록한다.
벡터 내 OR 명령(VOR): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛에서 벡터 중 각 하나의 위상을 OR시킨 후 결과를 스칼라 레지스터 파일의 지정 주소에 기록한다.
벡터 지수 명령(VE): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛에서 벡터 중 각 하나의 원소에 대하여 지수 연산을 진행한 후 결과를 스크래치패드 메모리의 지정 주소에 기록한다.
벡터 대수 명령(VL): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛에서 벡터 중 각 하나의 원소에 대하여 대수 연산을 진행한 후 결과를 스크래치패드 메모리의 지정 주소에 기록한다.
벡터 초과 판정 명령(VGT): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 각각 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛에서 2개 벡터 데이터를 대위하여 비교하고, 전자가 후자보다 크면 출력 벡터의 상응하는 비트에 1을 설정하고 그렇지 않으면 0을 설정한 후 결과를 스크래치패드 메모리의 지정 주소에 기록한다.
벡터 동일 판정 명령(VEQ): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 각각 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛에서 2개 벡터 데이터를 대위하여 비교하고, 전자가 후자와 같으면 출력 벡터의 상응하는 비트에 1을 설정하고 그렇지 않으면 0을 설정한 후 결과를 스크래치패드 메모리의 지정 주소에 기록한다.
벡터 NOT 명령(VINV): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 지정 크기의 벡터 데이터를 획득하고, 상기 벡터를 비트에 따라 NOT을 취한 후 결과를 스크래치패드 메모리의 지정 주소에 기록한다.
벡터 선택 병합 명령(VMER): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 각각 지정 크기의 벡터 데이터를 획득하며, 여기에는 선택 벡터와 피선택 벡터 1 및 피선택 벡터 2가 포함된다. 벡터 연산 유닛은 선택 벡터의 원소 1 또는 0에 의거하여 피선택 벡터 1 또는 피선택 벡터 2에서 상응하는 원소를 선택하여 출력 벡터 내 상기 위치의 원소로 삼은 후 결과를 스크래치패드 메모리의 지정 주소에 기록한다.
벡터 최대값 명령(VMAX): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 지정 크기의 벡터 데이터를 획득하며, 여기에서 최대의 원소를 선택하여 결과로 삼은 후 결과를 스칼라 레지스터 파일의 지정 주소에 기록한다.
스칼라 확장 명령(STV): 상기 명령에 의거하여, 장치는 스칼라 레지스터 파일의 지정 주소에서 스칼라 데이터를 획득하며, 벡터 연산 유닛에서 스칼라를 지정 길이의 벡터로 확장한 후 결과를 스칼라 레지스터 파일에 기록한다.
스칼라 치환 벡터 명령(STVPN): 상기 명령에 의거하여, 장치는 스칼라 레지스터 파일의 지정 주소에서 스칼라를 취하고, 스크래치패드 메모리의 지정 주소에서 지정 크기의 벡터 데이터를 획득하며, 벡터 연산 유닛에서 벡터 중 지정 위치의 원소를 상기 스칼라 값으로 치환한 후 결과를 스크래치패드 메모리의 지정 주소에 기록한다.
벡터 치환 스칼라 명령(VPNTS): 상기 명령에 의거하여, 장치는 스칼라 레지스터 파일의 지정 주소에서 스칼라를 취하고, 스크래치패드 메모리의 지정 주소에서 지정 크기의 벡터 데이터를 획득하며, 벡터 연산 유닛에서 벡터 중 지정 위치의 원소를 상기 스칼라 값으로 치환한 후 결과를 스칼라 레지스터 파일에 기록한다.
벡터 검색 명령(VR): 상기 명령에 의거하여, 장치는 레지스터 파일의 지정 주소에서 지정 크기의 벡터 데이터를 취하고, 벡터 연산 유닛에서 지정 위치에 의거하여 벡터 중의 상응하는 원소를 취하여 출력으로 삼은 후 결과를 스칼라 레지스터 파일에 기록한다.
벡터 내적 명령(VP): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 지정 크기의 벡터 데이터를 획득하며, 벡터 연산 유닛에서 2의 벡터에 대하여 내적 연산을 진행한 후 결과를 스칼라 레지스터 파일에 기록한다.
난수 벡터 명령(RV): 상기 명령에 의거하여, 장치는 벡터 연산 유닛에 범위가 0에서 1인 균일 분포에 복종하는 난수 벡터를 생성한 후 결과를 스크래치패드 메모리의 지정 주소에 기록한다.
순환 자리이동 명령(VCS): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 지정 크기의 벡터 데이터를 획득하며, 벡터 연산 유닛에서 상기 벡터를 지정 스텝에 따라 순환 자리이동을 진행한 후 결과를 스크래치패드 메모리의 지정 주소에 기록한다.
벡터 로드 명령(VLOAD): 상기 명령에 의거하여, 장치는 지정 외부 출처 주소에서 지정 크기의 벡터 데이터를 스크래치패드 메모리의 지정 주소까지 로딩한다.
벡터 저장 명령(VS): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 지정 크기의 벡터 데이터를 외부 목적의 주소 지점에 저장한다.
벡터 운반 명령(VMOVE): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 지정 크기의 벡터 데이터를 스크래치패드 메모리의 다른 지정 주소에 저장한다.
상기 명령 중 지정 크기의 의미는 데이터의 길이가 사용자 정의에서 지정할 수 있다는 것으로서, 길이는 조절하여 변경 가능하다.
본 발명의 목적, 기술방안 및 장점에 대한 더욱 명확한 이해를 돕기 위하여 이하에서는 구체적인 실시예를 도면을 통해 더욱 상세하게 설명한다.
도 3은 본 발명 실시예에서 제공하는 벡터 연산 장치의 구조도이다. 도 3에서 도시하는 바와 같이, 장치에는 획득 모듈, 디코딩 모듈, 명령 큐, 스칼라 레지스터 파일, 종속성 처리 유닛, 저장 큐, 재순위화 캐시, 벡터 연산 유닛, 스크래치패드, 및 IO 메모리 엑세스 모듈이 포함된다.
여기에서 획득 모듈은 명령 시쿼스 중 다음 실행할 명령을 취한 후 상기 명령을 디코딩 모듈에 전송하는 역할을 한다.
디코딩 모듈은 명령을 디코딩한 후 명령을 명령 큐에 전송하는 역할을 한다.
명령 큐는 다른 명령이 상응하는 스칼라 레지스터에서 종속성이 존재할 수 있다는 점을 감안하여, 디코딩한 명령을 캐싱하고 종속성이 충족된 후 명령을 발송하는 역할을 한다.
스칼라 레지스터 파일은 장치가 연산 과정에서 필요한 스칼라 레지스터를 제공한다.
종속성 처리 유닛은 처리 명령과 이전 명령에 존재할 수 있는 종속성을 처리한다. 벡터 연상 명령은 스크래치패드 메모리에 엑세스할 수있으며, 전후 명령은 동일 저장 공간에 엑세스할 수 있다. 명령 실행 결과의 정확성을 보장하기 위하여, 현재 명령이 만약 이전 명령의 데이터와 종속성을 가진 것으로 검출되면, 상기 명령은 반드시 저장 큐 내에서 종속성이 제거될 때까지 대기해야 한다.
저장 큐는 하나의 순서 큐(ordered queue)이며, 이전 명령과 데이터에서 종속성이 있는 명령은 상기 큐 내에서 저장 관계가 제거될 때까지 상기 큐 내에 저장된다.
재순위화 캐시는 명령이 실행 과정 중에서 동시에 모듈에 캐싱되며, 하나의 명령이 실행 완료된 후, 만약 상기 명령이 동시에 재순위화 캐시 중 제출되지 않은 명령 중 가장 이른 명령이면 상기 명령은 제출된다. 일단 제출되면 상기 명령이 진행하는 조작이 변경한 장치 상태는 철회할 수 없다.
벡터 연산 유닛은 장치의 모든 벡터 연산을 책임지며 여기에는 벡터 더하기 조작, 벡터 더하기 스칼라 조작, 벡터 빼기 조작, 벡터 빼기 스칼라 조작, 벡터 곱하기 조작, 벡터 곱하기 스칼라 조작, 벡터 나누기(대위 나누기) 조작, 벡터 AND 조작 및 벡터 OR 조작을 포함하나 여기에만 국한되지 않으며, 벡터 연산 명령은 상기 연산 유닛으로 전송되어 실행된다.
스크래치패드는 벡터 데이터 전용 임시 저장 장치로서 다른 크기의 벡터 데이터를 지원할 수 있다.
IO 메모리 엑세스 모듈은 스크래치패드 메모리에 직접 엑세스하는 데 사용되며, 스크래치패드 메모리에서 데이터를 판독하거나 기록하는 역할을 한다.
도 4는 본 발명 실시예에서 제공하는 벡터 연산 장치의 벡터 내적 명령 실행의 흐름도이다. 도 4에서 도시하는 바와 같이 벡터 내적 명령(VP) 실행 과정은 이하 단계를 포함한다.
S1: 획득 모듈은 상기 벡터 내적 명령을 취하여 디코딩 모듈로 전송한다.
S2: 디코딩 모듈은 명령을 디코딩한 후 명령을 명령 큐에 전송한다.
S3: 명령 큐에서 상기 벡터 내적 명령은 스칼라 레지스터 파일에서 명령 중 4개의 연산 도메인에 대응하는 스칼라 레지스터 내의 데이터를 획득해야 하며, 여기에는 벡터 vin0의 시작 주소, 벡터 vin0의 길이, 벡터 vin1의 시작 주소, 벡터 vin1의 길이가 포함된다.
S4: 필요한 스칼라 데이터를 취한 후, 상기 명령은 종속성 처리 유닛으로 발송된다. 종속성 처리 유닛은 상기 명령이 앞의 아직 실행이 종료되지 않은 명령과 데이터에서 종속성이 존재하는지 분석한다. 상기 명령은 저장 큐에서 이것이 앞의 아직 실행이 종료되지 않은 명령과 데이터에서 더 이상 종속성이 존재하지 않을 때까지 대기하여야 한다.
S5: 종속성이 존재하지 않게 된 이후, 상기 벡터 내적 명령은 벡터 연산 유닛으로 발송된다. 벡터 연산 유닛은 필요한 데이터의 주소와 길이에 의거하여 스크래치패드 메모리에서 필요한 벡터를 취한 후, 벡터 연산 유닛에서 내적 연산을 완료한다.
S6: 연산 완료 후, 결과를 스크래치패드 메모리의 지정 주소에 기록하고, 동시에 재순위화 캐시 중의 상기 벡터 내적 명령을 제출한다.
본 발명의 실시 예에서 도 4를 참조하여 벡터 내적 명령(VP) 실행 과정을 일례로 설명하고 있으나, 전술한 벡터 더하기 명령(VA), 벡터 더하기 스칼라 명령(VAS), 벡터 빼기 명령(VS), 스칼라 빼기 벡터 명령(SSV), 벡터 곱하기 명령(VMV), 벡터 곱하기 스칼라 명령(VMS), 벡터 나누기 명령(VD), 벡터 나누기 스칼라 명령(SDV), 벡터 간 AND 명령(VAV), 벡터 내 AND 명령(VAND), 벡터 간 OR 명령(VOV), 벡터 내 OR 명령(VOR), 벡터 지수 명령(VE), 벡터 대수 명령(VL), 벡터 초과 판정 명령(VGT), 벡터 동일 판정 명령(VEQ), 벡터 NOT 명령(VINV), 벡터 선택 병합 명령(VMER), 벡터 최대값 명령(VMAX), 스칼라 확장 명령(STV), 스칼라 치환 벡터 명령(STVPN), 벡터 치환 스칼라 명령(VPNTS), 벡터 검색 명령(VR), 난수 벡터 명령(RV), 순환 자리이동 명령(VCS), 벡터 로드 명령(VLOAD), 벡터 저장 명령(VS), 벡터 운반 명령(VMOVE) 각각의 실행 과정은 벡터 내적 명령(VP) 실행 과정과 동일 또는 유사하므로 본 명세서 사에서는 이를 자세히 설명하지 아니하였으나 당업자의 수준에서 충분히 이해되어야 할 것이다.
도 5는 본 발명 실시예에서 제공하는 벡터 연산 유닛의 구조도이다. 도 5에서 도시하는 바와 같이, 벡터 연산 유닛에는 벡터 더하기 연산 유닛, 크기 비교 유닛, 비선형 연산 유닛, 벡터 스칼라 곱하기 유닛 등이 포함된다. 또한 벡터 연산 유닛은 멀티 파이프라인 레벨 구조이며, 여기에서 벡터 더하기 부품과 벡터 곱하기 부품은 제1 파이프라인 레벨이고, 크기 비교 부품은 제2 파이프라인 레벨이고, 비선형 연산 부품과 벡터 스칼라 곱하기 부품은 제3 파이프라인 레벨이다. 이러한 유닛은 다른 파이프라인 레벨에 있으며, 연속 직렬의 복수개 벡터 연산 명령의 선후 순서가 상응하는 유닛이 소재한 파이프라인 레벨 순서와 일치하는 경우, 더욱 효율적으로 상기 연속 직렬 벡터 연산 명령이 요구하는 조작을 구현할 수 있다.
삭제
상기의 구체적인 실시예는 본 발명의 목적, 기술방안 및 유익한 효과를 더욱 상세하게 설명하기 위한 것이다. 상기 내용은 본 발명의 구체적인 실시예에 불과하므로 본 발명을 제한하지 않는다. 본 발명의 정신과 원칙 내에서 진행한 모든 수정, 동등한 치환, 개선 등은 모두 본 발명의 보호범위 내에 속한다.

Claims (15)

  1. 벡터 연산 명령에 의거하여 벡터 연산을 실행하며, 저장 유닛, 레지스터 유닛, 및 벡터 연산 유닛이 포함되되;
    상기 저장 유닛은 벡터를 저장하고;
    상기 레지스터 유닛은 벡터 주소를 저장하며, 상기 벡터 주소는 저장 유닛에 저장되는 벡터의 주소이고;
    상기 벡터 연산 유닛은 벡터 연산 명령을 획득하며, 벡터의 길이를 연산하는 벡터 연산 명령의 연산 도메인에 의거하여 레지스터 유닛에서 벡터 주소를 획득한 후 상기 벡터 주소에 의거하여 저장 유닛에서 상응하는 벡터를 획득하고, 이어서 획득한 벡터에 의거하여 벡터 연산을 진행하여 벡터 연산 결과를 얻도록 구비되는 것을 특징으로 하는 벡터 연산 장치.
  2. 제1항에 있어서, 상기 벡터 연산 장치는
    실행하려는 벡터 연산 명령을 저장하는 데 사용하는 명령 캐시 유닛을 더 포함하는 것을 특징으로 하는 벡터 연산 장치.
  3. 제2항에 있어서, 상기 벡터 연산 장치는
    명령 캐시 유닛에서 벡터 연산 명령을 획득하고 상기 벡터 연산 명령을 처리한 후 상기 벡터 연산 유닛에 제공하는 데 사용되는 명령 처리 유닛을 더 포함하는 것을 특징으로 하는 벡터 연산 장치.
  4. 제3항에 있어서,
    상기 명령 처리 유닛에는 획득 모듈, 디코딩 모듈, 및 명령 큐(instruction queue)가 포함되되;
    상기 획득 모듈은 명령 캐시 유닛에서 벡터 연산 명령을 획득하고;
    상기 디코딩 모듈은 획득한 벡터 연산 명령을 디코딩하며;
    상기 명령 큐는 디코딩한 벡터 연산 명령을 순서대로 저장하는 것을 특징으로 하는 벡터 연산 장치.
  5. 제1항에 있어서, 상기 벡터 연산 장치는
    종속성 처리 유닛을 더 포함하며;
    상기 종속성 처리 유닛은 벡터 연산 유닛이 벡터 연산 명령을 획득하기 전에, 상기 벡터 연산 명령이 이전 벡터 연산 명령과 동일한 벡터에 엑세스되는지 여부를 판단하는 데 사용되고;
    상기 벡터 연산 명령이 이전 벡터 연산 명령과 동일한 벡터에 엑세스되지 아니한 경우 곧바로 상기 벡터 연산 명령을 상기 벡터 연산 유닛에 제공하는 것을 특징으로 하는 벡터 연산 장치.
  6. 제5항에 있어서,
    상기 벡터 연산 명령이 이전 벡터 연산 명령과 동일한 벡터에 엑세스되는 경우, 상기 종속성 처리 유닛은 상기 벡터 연산 명령을 저장 큐 내에 저장하여 이전 벡터 연산 명령이 실행 완료될 때까지 대기한 후, 저장 큐 내의 상기 벡터 연산 명령을 상기 벡터 연산 유닛에 제공하는 것을 특징으로 하는 벡터 연산 장치.
  7. 제1항에 있어서,
    상기 저장 유닛은 상기 벡터 연산 결과를 저장하는 데에 더 사용되는 것을 특징으로 하는 벡터 연산 장치.
  8. 제6항에 있어서,
    벡터를 저장 유닛에 저장하거나 또는 저장 유닛에서 벡터 연산 결과를 획득하는 입력 출력 유닛을 더 포함하는 것을 특징으로 하는 벡터 연산 장치.
  9. 제6항에 있어서,
    상기 저장 유닛은 스크래치패드 메모리인 것을 특징으로 하는 벡터 연산 장치.
  10. 제1항에 있어서,
    상기 벡터 연산 명령은 하나의 연산 코드와 하나 이상의 연산 도메인을 포함하고,
    상기 연산 코드는 상기 벡터 연산 명령의 기능을 가리키는데 사용되고,
    연산 도메인은 상기 벡터 연산 명령의 데이터 정보를 가리키는데 사용되는 것을 특징으로 하는 벡터 연산 장치.
  11. 제1항에 있어서, 상기 벡터 연산 유닛은
    벡터 더하기 부품, 벡터 곱하기 부품, 크기 비교 부품, 비선형 연산 부품 및 벡터 스칼라 곱하기 부품이 포함되는 것을 특징으로 하는 벡터 연산 장치.
  12. 제11항에 있어서,
    상기 벡터 연산 유닛은 멀티 파이프라인 레벨 구조이고,
    상기 벡터 더하기 부품과 벡터 곱하기 부품은 제1 파이프라인 레벨이고,
    상기 크기 비교 부품은 제2 파이프라인 레벨이며,
    상기 비선형 연산 부품과 벡터 스칼라 곱하기 부품은 제3 파이프라인 레벨인 것을 특징으로 하는 벡터 연산 장치.
  13. 제1항에 있어서, 상기 벡터 연산 명령은,
    저장 유닛의 지정 주소 지점에서 각각 2개의 지정 크기의 벡터 데이터를 획득한 후 벡터 연산 유닛에서 더하기 연산을 진행한 다음 저장 유닛의 지정 주소에 기록하는 벡터 더하기 명령(VA);
    저장 유닛의 지정 주소 지점에서 지정 크기의 벡터 데이터를 획득하고, 스칼라 레지스터 파일의 지정 주소에서 스칼라 데이터를 획득하며, 벡터 연산 유닛 중 벡터의 획득된 각 하나의 원소를 상기 스칼라 데이터에 더한 다음 저장 유닛의 지정 주소에 기록하는 스칼라 명령(VAS);
    저장 유닛의 지정 주소 지점에서 각각 2개의 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛에서 빼기 연산을 진행한 후 저장 유닛의 지정 주소 지점에 기록하는 벡터 빼기 명령(VS);
    스칼라 레지스터 파일의 지정 주소에서 스칼라 데이터를 획득하고, 저장 유닛의 지정 주소에서 벡터 데이터를 획득하고, 벡터 연산 유닛에서 상기 스칼라를 이용하여 벡터 중의 상응하는 원소 뺀 후 저장 유닛의 지정 주소 지점에 기록하는 스칼라 빼기 벡터 명령(SSV);
    저장 유닛의 지정 주소에서 각각 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛 중 2개의 벡터 데이터를 대위하여 곱한 후 결과를 저장 유닛의 지정 주소에 기록하는 벡터 곱하기 명령(VMV);
    저장 유닛의 지정 주소에서 지정 크기의 벡터 데이터를 획득하고, 스칼라 레지스터 파일의 지정 주소에서 지정 크기의 스칼라 데이터를 획득하며, 벡터 레지스터 유닛에서 벡터 곱하기 스칼라 연산을 진행한 후 결과를 저장 유닛의 지정 주소에 기록하는 벡터 곱하기 스칼라 명령(VMS);
    저장 유닛의 지정 주소에서 각각 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛에서 2개의 벡터를 대위하여 나눈 후 결과를 저장 유닛의 지정 주소에 기록하는 벡터 나누기 명령(VD);
    스칼라 레지스터 파일의 지정 주소에서 스칼라 데이터를 획득하고, 저장 유닛의 지정 위치에서 지정 크기의 벡터 데이터를 획득하며, 벡터 연산 유닛에서 스칼라를 이용하여 각각 벡터 중의 상응하는 원소 나눈 후 결과를 저장 유닛의 지정 주소에 기록하는 벡터 나누기 스칼라 명령(SDV);
    저장 유닛의 지정 주소에서 각각 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛에서 2개의 벡터를 대위하여 AND시킨 후 결과를 저장 유닛의 지정 주소에 기록하는 벡터 간 AND 명령(VAV);
    저장 유닛의 지정 주소에서 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛에서 벡터 중 각 하나의 위상을 AND시킨 후 결과를 스칼라 레지스터 파일의 지정 주소에 기록하는 벡터 내 AND 명령(VAND);
    저장 유닛의 지정 주소에서 각각 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛에서 2개의 벡터를 대위하여 OR시킨 후 결과를 저장 유닛의 지정 주소에 기록하는 벡터 간 OR 명령(VOV);
    저장 유닛의 지정 주소에서 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛에서 벡터 중 각 하나의 위상을 OR시킨 후 결과를 스칼라 레지스터 파일의 지정 주소에 기록하는 벡터 내 OR 명령(VOR);
    저장 유닛의 지정 주소에서 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛에서 벡터 중 각 하나의 원소에 대하여 지수 연산을 진행한 후 결과를 저장 유닛의 지정 주소에 기록하는 벡터 지수 명령(VE);
    저장 유닛의 지정 주소에서 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛에서 벡터 중 각 하나의 원소에 대하여 대수 연산을 진행한 후 결과를 저장 유닛의 지정 주소에 기록하는 벡터 대수 명령(VL);
    저장 유닛의 지정 주소에서 각각 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛에서 2개 벡터 데이터를 대위하여 비교하고, 전자가 후자보다 크면 출력 벡터의 상응하는 비트에 1을 설정하고 그렇지 않으면 0을 설정한 후 결과를 저장 유닛의 지정 주소에 기록하는 벡터 초과 판정 명령(VGT);
    저장 유닛의 지정 주소에서 각각 지정 크기의 벡터 데이터를 획득하고, 벡터 연산 유닛에서 2개 벡터 데이터를 대위하여 비교하고, 전자가 후자와 같으면 출력 벡터의 상응하는 비트에 1을 설정하고 그렇지 않으면 0을 설정한 후 결과를 저장 유닛의 지정 주소에 기록하는 벡터 동일 판정 명령(VEQ);
    저장 유닛의 지정 주소에서 지정 크기의 벡터 데이터를 획득하고, 상기 벡터를 비트에 따라 NOT을 취한 후 결과를 저장 유닛의 지정 주소에 기록하는 벡터 NOT 명령(VINV);
    저장 유닛의 지정 주소에서 각각 지정 크기의 벡터 데이터를 획득하며, 벡터 연산 유닛에서 선택 벡터의 원소 1 또는 0에 의거하여 피선택 벡터 1 또는 피선택 벡터 2에서 상응하는 원소를 선택하여 출력 벡터 내 상기 위치의 원소로 삼은 후 결과를 저장 유닛의 지정 주소에 기록하는 벡터 선택 병합 명령(VMER);
    저장 유닛의 지정 주소에서 지정 크기의 벡터 데이터를 획득하며, 벡터 연산 유닛에서 최대의 원소를 선택하여 결과로 삼은 후 결과를 스칼라 레지스터 파일의 지정 주소에 기록하는 벡터 최대값 명령(VMAX);
    스칼라 레지스터 파일의 지정 주소에서 스칼라 데이터를 획득하며, 벡터 연산 유닛에서 스칼라를 지정 길이의 벡터로 확장한 후 결과를 스칼라 레지스터 파일에 기록하는 스칼라 확장 명령(STV);
    스칼라 레지스터 파일의 지정 주소에서 스칼라를 취하고, 저장 유닛의 지정 주소에서 지정 크기의 벡터 데이터를 획득하며, 벡터 연산 유닛에서 벡터 중 지정 위치의 원소를 상기 스칼라 데이터로 치환한 후 결과를 저장 유닛의 지정 주소에 기록하는 스칼라 치환 벡터 명령(STVPN);
    스칼라 레지스터 파일의 지정 주소에서 스칼라를 취하고, 저장 유닛의 지정 주소에서 지정 크기의 벡터 데이터를 획득하며, 벡터 연산 유닛에서 벡터 중 지정 위치의 원소를 상기 스칼라 데이터로 치환한 후 결과를 스칼라 레지스터 파일에 기록하는 벡터 치환 스칼라 명령(VPNTS);
    레지스터 파일의 지정 주소에서 지정 크기의 벡터 데이터를 취하고, 벡터 연산 유닛에서 지정 위치에 의거하여 벡터 중의 상응하는 원소를 취하여 출력으로 삼은 후 결과를 스칼라 레지스터 파일에 기록하는 벡터 검색 명령(VR);
    저장 유닛의 지정 주소에서 지정 크기의 벡터 데이터를 획득하며, 벡터 연산유닛에서 2의 벡터에 대하여 내적 연산을 진행한 후 결과를 스칼라 레지스터 파일에 기록하는 벡터 내적 명령(VP);
    벡터 연산 유닛에서 범위가 0에서 1인 균일 분포에 복종하는 난수 벡터를 생성한 후 결과를 저장 유닛의 지정 주소에 기록하는 난수 벡터 명령(RV);
    저장 유닛의 지정 주소에서 지정 크기의 벡터 데이터를 획득하며, 벡터 연산 유닛에서 상기 벡터를 지정 스텝에 따라 순환 자리이동을 진행한 후 결과를 저장 유닛의 지정 주소에 기록하는 순환 자리이동 명령(VCS);
    지정 외부 출처 주소에서 지정 크기의 벡터 데이터를 저장 유닛의 지정 주소까지 로딩하는 벡터 로드 명령(VLOAD);
    저장 유닛의 지정 주소에서 지정 크기의 벡터 데이터를 외부 목적의 주소 지점에 저장하는 벡터 저장 명령(VS); 및
    저장 유닛의 지정 주소에서 지정 크기의 벡터 데이터를 저장 유닛의 다른 지정 주소에 저장하는 벡터 운반 명령(VMOVE) 중 적어도 하나 인 것을 특징으로 하는 벡터 연산 장치.
  14. 제12항에 있어서, 상기 벡터 연산 장치는,
    직렬로 연속하여 획득된 벡터 연산 명령을 실행하기 위해, 연속 직렬의 복수 개 벡터 연산 명령의 실행 순서를 상기 벡터 연산 유닛의 파이프라인 레벨 순서와 일치하도록 구비되는 것을 특징으로 하는 벡터 연산 장치.



  15. 제1항에 있어서,
    상기 벡터 연산 명령은 벡터의 길이를 연산하는 연산 도메인을 포함하고,
    상기 레지스터 유닛에서의 벡터 주소는 상기 벡터 연산 명령의 벡터 길이의 연산 도메인에 의거 레지스터 번호를 획득하고, 획득된 레지스터 번호에 의거하여 상응하는 레지스터 중 벡터 시작 주소와 벡터 길이를 획득하며, 다시 벡터 시작 주소와 벡터 길이에 의거하여 획득하도록 구비되는 것을 특징으로 하는 벡터 연산 장치.



KR1020207013258A 2016-01-20 2016-04-06 벡터 계산 장치 KR102304216B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN201610039216.8A CN106990940B (zh) 2016-01-20 2016-01-20 一种向量计算装置及运算方法
CN201610039216.8 2016-01-20
PCT/CN2016/078550 WO2017124648A1 (zh) 2016-01-20 2016-04-06 一种向量计算装置
KR1020197017258A KR102185287B1 (ko) 2016-01-20 2016-04-06 벡터 연산 장치

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020197017258A Division KR102185287B1 (ko) 2016-01-20 2016-04-06 벡터 연산 장치

Publications (2)

Publication Number Publication Date
KR20200058562A KR20200058562A (ko) 2020-05-27
KR102304216B1 true KR102304216B1 (ko) 2021-09-23

Family

ID=59361389

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020187015435A KR20180100550A (ko) 2016-01-20 2016-04-06 벡터 연산 장치 및 방법
KR1020207013258A KR102304216B1 (ko) 2016-01-20 2016-04-06 벡터 계산 장치
KR1020197017258A KR102185287B1 (ko) 2016-01-20 2016-04-06 벡터 연산 장치

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020187015435A KR20180100550A (ko) 2016-01-20 2016-04-06 벡터 연산 장치 및 방법

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020197017258A KR102185287B1 (ko) 2016-01-20 2016-04-06 벡터 연산 장치

Country Status (4)

Country Link
EP (1) EP3407182B1 (ko)
KR (3) KR20180100550A (ko)
CN (5) CN111580865B (ko)
WO (1) WO2017124648A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210073732A1 (en) * 2019-09-11 2021-03-11 Ila Design Group, Llc Automatically determining inventory items that meet selection criteria in a high-dimensionality inventory dataset

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108874445A (zh) * 2017-10-30 2018-11-23 上海寒武纪信息科技有限公司 神经网络处理器及使用处理器执行向量点积指令的方法
CN109754061B (zh) * 2017-11-07 2023-11-24 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN109754062B (zh) * 2017-11-07 2024-05-14 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN107861757B (zh) * 2017-11-30 2020-08-25 上海寒武纪信息科技有限公司 运算装置以及相关产品
CN108037908B (zh) * 2017-12-15 2021-02-09 中科寒武纪科技股份有限公司 一种计算方法及相关产品
CN107957976B (zh) * 2017-12-15 2020-12-18 安徽寒武纪信息科技有限公司 一种计算方法及相关产品
CN108388446A (zh) * 2018-02-05 2018-08-10 上海寒武纪信息科技有限公司 运算模块以及方法
US12057109B2 (en) 2018-09-13 2024-08-06 Shanghai Cambricon Information Technology Co., Ltd. Information processing method and terminal device
CN110941789B (zh) * 2018-09-21 2023-12-15 北京地平线机器人技术研发有限公司 张量运算方法和装置
CN111290789B (zh) * 2018-12-06 2022-05-27 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111290788B (zh) * 2018-12-07 2022-05-31 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111078282B (zh) * 2018-10-19 2020-12-22 安徽寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111079913B (zh) * 2018-10-19 2021-02-05 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
CN111079909B (zh) * 2018-10-19 2021-01-26 安徽寒武纪信息科技有限公司 运算方法、系统及相关产品
CN111078281B (zh) * 2018-10-19 2021-02-12 中科寒武纪科技股份有限公司 运算方法、系统及相关产品
CN111399905B (zh) * 2019-01-02 2022-08-16 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN110502278B (zh) * 2019-07-24 2021-07-16 瑞芯微电子股份有限公司 基于RiscV扩展指令的神经网络协处理器及其协处理方法
CN112633505B (zh) 2020-12-24 2022-05-27 苏州浪潮智能科技有限公司 一种基于risc-v的人工智能推理方法和系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100289746B1 (ko) * 1993-10-05 2001-05-15 아끼구사 나오유끼 벡터 데이타 처리용 컴퓨터 시스템 및 그 방법
JP3317985B2 (ja) 1991-11-20 2002-08-26 喜三郎 中澤 擬似ベクトルプロセッサ
CN103699360A (zh) 2012-09-27 2014-04-02 北京中科晶上科技有限公司 一种向量处理器及其进行向量数据存取、交互的方法
CN104699458A (zh) 2015-03-30 2015-06-10 哈尔滨工业大学 定点向量处理器及其向量数据访存控制方法

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4541046A (en) * 1981-03-25 1985-09-10 Hitachi, Ltd. Data processing system including scalar data processor and vector data processor
US5689653A (en) * 1995-02-06 1997-11-18 Hewlett-Packard Company Vector memory operations
JPH09325888A (ja) * 1996-06-04 1997-12-16 Hitachi Ltd データ処理装置
US6665790B1 (en) * 2000-02-29 2003-12-16 International Business Machines Corporation Vector register file with arbitrary vector addressing
CN1142484C (zh) * 2001-11-28 2004-03-17 中国人民解放军国防科学技术大学 微处理器向量处理方法
US20130212353A1 (en) * 2002-02-04 2013-08-15 Tibet MIMAR System for implementing vector look-up table operations in a SIMD processor
JP4349265B2 (ja) * 2004-11-22 2009-10-21 ソニー株式会社 プロセッサ
JP4282682B2 (ja) * 2006-04-12 2009-06-24 エヌイーシーコンピュータテクノ株式会社 情報処理装置及びそれに用いるベクトルレジスタアドレス制御方法
US8108652B1 (en) * 2007-09-13 2012-01-31 Ronald Chi-Chun Hui Vector processing with high execution throughput
JP5573134B2 (ja) * 2009-12-04 2014-08-20 日本電気株式会社 ベクトル型計算機及びベクトル型計算機の命令制御方法
CN101833441B (zh) * 2010-04-28 2013-02-13 中国科学院自动化研究所 并行向量处理引擎结构
CN101876892B (zh) * 2010-05-20 2013-07-31 复旦大学 面向通信和多媒体应用的单指令多数据处理器电路结构
JP5658945B2 (ja) * 2010-08-24 2015-01-28 オリンパス株式会社 画像処理装置、画像処理装置の作動方法、および画像処理プログラム
CN102043723B (zh) * 2011-01-06 2012-08-22 中国人民解放军国防科学技术大学 用于通用流处理器的可变访存模式的片上缓存结构
CN102109978A (zh) * 2011-02-28 2011-06-29 孙瑞琛 一种数据的重排方法及重排装置
CN102156637A (zh) * 2011-05-04 2011-08-17 中国人民解放军国防科学技术大学 向量交叉多线程处理方法及向量交叉多线程微处理器
CN102200964B (zh) * 2011-06-17 2013-05-15 孙瑞琛 基于并行处理的fft装置及其方法
CN102262525B (zh) * 2011-08-29 2014-11-19 孙瑞玮 基于矢量运算的矢量浮点运算装置及方法
CN102495721A (zh) * 2011-12-02 2012-06-13 南京大学 一种支持fft加速的simd向量处理器
CN102750133B (zh) * 2012-06-20 2014-07-30 中国电子科技集团公司第五十八研究所 支持simd的32位三发射的数字信号处理器
US9098265B2 (en) * 2012-07-11 2015-08-04 Arm Limited Controlling an order for processing data elements during vector processing
US9632781B2 (en) * 2013-02-26 2017-04-25 Qualcomm Incorporated Vector register addressing and functions based on a scalar register data value
US9639503B2 (en) * 2013-03-15 2017-05-02 Qualcomm Incorporated Vector indirect element vertical addressing mode with horizontal permute
KR20150005062A (ko) * 2013-07-04 2015-01-14 삼성전자주식회사 미니-코어를 사용하는 프로세서
US10120682B2 (en) * 2014-02-28 2018-11-06 International Business Machines Corporation Virtualization in a bi-endian-mode processor architecture
CN104699465B (zh) * 2015-03-26 2017-05-24 中国人民解放军国防科学技术大学 向量处理器中支持simt的向量访存装置和控制方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3317985B2 (ja) 1991-11-20 2002-08-26 喜三郎 中澤 擬似ベクトルプロセッサ
KR100289746B1 (ko) * 1993-10-05 2001-05-15 아끼구사 나오유끼 벡터 데이타 처리용 컴퓨터 시스템 및 그 방법
CN103699360A (zh) 2012-09-27 2014-04-02 北京中科晶上科技有限公司 一种向量处理器及其进行向量数据存取、交互的方法
CN104699458A (zh) 2015-03-30 2015-06-10 哈尔滨工业大学 定点向量处理器及其向量数据访存控制方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210073732A1 (en) * 2019-09-11 2021-03-11 Ila Design Group, Llc Automatically determining inventory items that meet selection criteria in a high-dimensionality inventory dataset
US11494734B2 (en) * 2019-09-11 2022-11-08 Ila Design Group Llc Automatically determining inventory items that meet selection criteria in a high-dimensionality inventory dataset

Also Published As

Publication number Publication date
CN111580864B (zh) 2024-05-07
KR20190073593A (ko) 2019-06-26
CN111580863B (zh) 2024-05-03
CN111580865A (zh) 2020-08-25
CN111580863A (zh) 2020-08-25
CN106990940A (zh) 2017-07-28
CN106990940B (zh) 2020-05-22
CN111580864A (zh) 2020-08-25
CN111580866B (zh) 2024-05-07
EP3407182A1 (en) 2018-11-28
CN111580866A (zh) 2020-08-25
CN111580865B (zh) 2024-02-27
KR102185287B1 (ko) 2020-12-01
EP3407182B1 (en) 2022-10-26
WO2017124648A1 (zh) 2017-07-27
EP3407182A4 (en) 2020-04-29
KR20180100550A (ko) 2018-09-11
KR20200058562A (ko) 2020-05-27

Similar Documents

Publication Publication Date Title
KR102304216B1 (ko) 벡터 계산 장치
KR102123633B1 (ko) 행렬 연산 장치 및 방법
CN109522254B (zh) 运算装置及方法
CN112236784B (zh) 修改机器学习模型以改善局部性
WO2017185389A1 (zh) 一种用于执行矩阵乘运算的装置和方法
US20180275909A1 (en) Memory management for sparse matrix multiplication
KR20190029515A (ko) 비트폭이 다른 연산 데이터를 지원하는 연산 유닛, 연산 방법 및 연산 장치
US9910714B2 (en) Scriptable dynamic load balancing in computer systems
CN107315717B (zh) 一种用于执行向量四则运算的装置和方法
CN107315716B (zh) 一种用于执行向量外积运算的装置和方法
CN109074256A (zh) 在执行向量操作时管理地址冲突的装置及方法
WO2017185404A1 (zh) 一种用于执行向量逻辑运算的装置及方法
EP3447690A1 (en) Maxout layer operation apparatus and method
WO2017185419A1 (zh) 一种用于执行向量最大值最小值运算的装置和方法
US10521432B2 (en) Efficient execution of data stream processing systems on multi-core processors
TW201823972A (zh) 向量產生指令
JP5687603B2 (ja) プログラム変換装置、プログラム変換方法、および変換プログラム
US11853762B1 (en) Single instruction multiple data execution with variable size logical registers
US10996960B1 (en) Iterating single instruction, multiple-data (SIMD) instructions
KR102644951B1 (ko) 산술 논리 장치 레지스터 시퀀싱
TW201805802A (zh) 一種運算裝置及其操作方法
JP3278441B2 (ja) ベクトル処理装置

Legal Events

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