KR20180100551A - 행렬 연산 장치 및 방법 - Google Patents

행렬 연산 장치 및 방법 Download PDF

Info

Publication number
KR20180100551A
KR20180100551A KR1020187015436A KR20187015436A KR20180100551A KR 20180100551 A KR20180100551 A KR 20180100551A KR 1020187015436 A KR1020187015436 A KR 1020187015436A KR 20187015436 A KR20187015436 A KR 20187015436A KR 20180100551 A KR20180100551 A KR 20180100551A
Authority
KR
South Korea
Prior art keywords
matrix
unit
matrix operation
instruction
operation instruction
Prior art date
Application number
KR1020187015436A
Other languages
English (en)
Other versions
KR102123633B1 (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 KR20180100551A publication Critical patent/KR20180100551A/ko
Application granted granted Critical
Publication of KR102123633B1 publication Critical patent/KR102123633B1/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

Landscapes

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

Abstract

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

Description

행렬 계산 장치
본 발명은 행렬 연산 장치에 관한 것으로서, 행렬 연산 명령에 의거하여 행렬 연산을 실행하는 데 사용되며, 현재 컴퓨터 분야에서 갈수록 많아지는 알고리즘에 대량의 행렬 연산이 포함되는 문제를 효과적으로 해결해 준다.
현재 컴퓨터 분야에서 갈수록 많은 알고리즘에 행렬 연산이 언급되고 있다. 인공 신경망 알고리즘을 예로 들면, 다양한 신경망 알고리즘 중에는 대량의 행렬 연산이 포함된다. 신경망에서 출력 뉴런의 연산 표현식은 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는 본 발명 실시예에서 제공하는 행렬 연산 장치가 누승법을 진행하여 규약불가 행렬최대 고유값에 대응하는 고유행렬를 구하는 흐름도이고; 및
도 6은 본 발명 실시예에서 제공하는 행렬 연산 유닛의 구조도이다.
본 발명은 행렬 계산 장치에 관한 것으로서, 저장 유닛, 레지스터 유닛 및 행렬 연산 유닛을 포함한다. 저장 유닛에는 행렬가 저장되고, 레지스터 유닛에는 행렬가 저장된 주소가 저장되고, 행렬 연산 유닛은 행렬 연산 명령에 의거하여 레지스터 유닛에서 행렬 주소를 획득한 후, 상기 행렬 주소에 의거하여 저장 유닛에서 상응하는 행렬를 획득하고, 이어서 획득한 행렬에 의거하여 행렬 연산을 진행하여 행렬 연산 결과를 얻는다. 본 발명에 있어서, 계산에 참여하는 행렬 데이터는 스크래치패드 메모리에 임시 저장되고, 행렬 연산 과정 중 더욱 유연하고 효과적으로 다른 폭의 데이터를 지원함으로써, 대량의 행렬 계산 태스크를 포함하는 실행 성능을 향상시켜 준다.
도 1은 본 발명에서 제공하는 행렬 연산 장치의 구조도를 도시한 것이다. 도 1에서 도시하는 바와 같이, 행렬 연산 장치는 저장 유닛, 레지스터 유닛, 및 행렬 연산 유닛을 포함한다.
상기 저장 유닛은 행렬를 저장하는 데 사용된다. 일 실시예에 있어서, 상기 저장 유닛은 스크래치패드 메모리일 수 있으며 다른 크기의 행렬 데이터를 지원할 수 있다. 본 발명은 필요한 계산 데이터를 스크래치패드 메모리(Scratchpad Memory)에 임시 저장하여, 본 연산 장치가 행렬 연산 과정에서 더욱 유연하고 효과적으로 다른 폭의 데이터를 지원할 수 있게 한다.
상기 레지스터 유닛은 행렬 주소를 저장하는 데 사용된다. 여기에서, 행렬 주소는 저장 유닛에 저장되는 행렬의 주소이다. 일 실시예에 있어서, 레지스터 유닛은 스칼라 레지스터 파일일 수 있으며, 연산 과정에서 필요한 스칼라 레지스터를 제공하고, 스칼라 레지스터는 행렬 주소만 저장할 뿐만 아니라 스칼라 데이터도 저장한다. 행렬과 스칼라의 연산에 관련된 경우, 행렬 연산 유닛은 레지스터 유닛에서 행렬 주소를 획득할 뿐만 아니라 레지스터 유닛에서 상응하는 스칼라도 획득한다.
상기 행렬 연산 유닛은 행렬 연산 명령을 획득하는 데 사용되며, 행렬 연산 명령에 의거하여 상기 레지스터 유닛에서 행렬 주소를 획득한 후, 상기 행렬 주소에 의거하여 저장 유닛에서 상응하는 행렬를 획득하고, 이어서 획득한 행렬에 의거하여 행렬 연산을 진행해 행렬 연산 결과를 얻으며, 행렬 연산 결과를 저장 유닛에 저장한다. 행렬 연산 유닛에는 행렬 더하기 부품, 행렬 곱하기 부품, 크기 비교 부품, 비선형 연산 부품 및 행렬 스칼라 곱하기 부품이 포함되며, 행렬 연산 유닛은 멀티 파이프라인 레벨 구조이다. 여기에서, 행렬 더하기 부품과 행렬 곱하기 부품은 제1 파이프라인 레벨이고, 크기 비교 부품은 제2 파이프라인 레벨이고, 비선형 연산 부품과 행렬 스칼라 곱하기 부품은 제3 파이프라인 레벨이다. 이러한 유닛은 다른 파이프라인 레벨에 있으며, 연속 직렬의 복수 개 행렬 연산 명령의 선후 순서는 상응하는 유닛이 소재한 파이프라인 레벨 순서와 일치하는 경우, 더욱 효율적으로 상기 연속 직렬 행렬 연산 명령이 요구하는 조작을 구현할 수 있다. 행렬 연산 유닛은 장치의 모든 행렬 연산을 책임지며, 행렬 더하기 조작, 행렬 더하기 스칼라 조작, 행렬 빼기 조작, 행렬 빼기 스칼라 조작, 행렬 곱하기 조작, 행렬 곱하기 스칼라 조작, 행렬 나누기(대위 나누기) 조작, 행렬 AND 조작 및 행렬 OR 조작을 포함하나 이에 한정되지 않으며, 행렬 연산 명령은 상기 연산 유닛으로 전송되어 실행된다.
본 발명의 일 실시예에 의거하여, 행렬 연산 장치는 실행하려는 행렬 연산 명령을 저장하는 데 사용하는 명령 캐시 유닛을 더 포함한다. 명령은 실행 과정에서 동시에 명령 캐시 유닛에서 캐싱된다. 하나의 명령이 실행 완료된 후, 만약 상기 명령은 명령 캐시 유닛에서 제출되지 않은 명령 중의 가장 이른 하나의 명령이면 상기 명령은 제출된다. 제출되면 상기 명령이 실행한 조작으로 인해 변경시킨 장치의 상태는 철회될 수 없다. 일 실시예에 있어서, 명령 캐시 유닛은 캐시를 재순위화할 수 있다.
본 발명의 일 실시예에 있어서, 행렬 연산 장치는 명령 캐시 유닛에서 행렬 연산 명령을 획득하고 상기 행렬 명령을 처리한 후 상기 행렬 연산 유닛에 제공하는 데 사용되는 명령 처리 유닛을 더 포함한다. 여기에서, 명령 처리 유닛에는 획득 모듈, 디코딩 모듈, 및 명령 큐(instruction queue)가 포함된다.
여기에서, 상기 획득 모듈은 명령 캐시 유닛에서 행렬 연산 명령을 획득하는 데 사용된다.
상기 디코딩 모듈은 획득한 행렬 연산 명령을 디코딩한다.
상기 명령 큐는 디코딩한 행렬 연산 명령을 순서대로 저장하고, 다른 명령이 포함된 레지스터에서 존재할 수 있는 종속성을 감안하여, 디코딩한 명령을 캐싱하는 데 사용되며, 종속성이 충족되면 명령을 발송한다.
본 발명의 일 실시예에 의거하여, 행렬 연산 장치는 종속성 처리 유닛을 더 포함한다. 상기 종속성 처리 유닛은 행렬 연산 유닛이 행렬 연산 명령을 획득하기 전에, 상기 행렬 연산 명령이 이전 행렬 연산 명령과 동일한 행렬에 엑세스하는지 여부를 판단하는 데 사용된다. 만약 그러하면, 상기 행렬 연산 명령은 하나의 저장 큐에 저장되어 이전 행렬 연산 명령 실행이 완료될 때까지 기다린 후, 저장 큐 중의 상기 행렬 연산 명령을 상기 행렬 연산 유닛에 제공한다. 그렇지 않은 경우, 곧바로 상기 행렬 연산 명령을 상기 행렬 연산 유닛에 제공한다. 상세하게는, 행렬 연산 명령은 스크래치패드 메모리에 엑세스할 때, 전후 명령이 동일한 저장 공간에 엑세스할 수 있으며, 명령 실행 결과의 정확성을 보장하기 위하여, 현재 명령은 만약 이전 명령의 데이터와 종속성이 있다고 검출되면 상기 명령은 반드시 저장 큐 내에서 종속성이 제거될 때까지 대기하여야 한다.
본 발명의 일 실시예에 의거하여, 행렬 연산 장치는 행렬을 저장 유닛에 저장하거나 또는 저장 유닛에서 행렬 연산 결과를 획득하는 데 사용되는 입력 출력 유닛을 더 포함한다. 여기에서 입력 출력 유닛은 직접 저장 유닛을 연결할 수 있으며 메모리에서 행렬 데이터를 판독하거나 행렬 데이터를 기록하는 것을 책임진다.
본 발명의 일 실시예에 의거하여, 본 발명 장치의 명령 집합은 Load/Store 구조를 채택하며, 행렬 연산 유닛은 메모리 내의 데이터를 조작할 수 없다. 그 외, 본 명령 집합은 고정 길이 명령을 채택한다.
도 2는 본 발명에서 제공하는 명령 집합의 양식 설명도이다. 도 2에서 도시하는 바와 같이, 행렬 연산 명령은 하나의 연산 코드와 하나 이상의 연산 도메인을 포함한다. 여기에서, 연산 코드는 상기 행렬 연산 명령의 기능을 가리키는 데 사용되고, 행렬 연산 유닛은 상기 연산 코드 식별을 통해 다른 행렬 연산을 진행할 수 있다. 연산 도메인은 상기 행렬 연산 명령의 데이터 정보를 가리키는 데 사용되며, 여기에서 데이터 정보는 즉시 데이터 또는 레지스터 번호일 수 있다. 예를 들어 하나의 행렬를 획득하려고 할 때, 레지스터 번호에 의거하여 상응하는 레지스터 중 행렬 시작 주소와 행렬 길이를 획득하고, 다시 행렬 시작 주소와 행렬 길이에 의거하여 저장 유닛에서 상응하는 주소에 저장된 행렬를 획득할 수 있다.
명령 집합은 다른 기능의 행렬 연산 명령을 포함한다.
행렬 곱하기 벡터 명령(MMV): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 지정 크기의 행렬 데이터와 벡터 데이터를 취하고, 행렬 연산 유닛에서 행렬 곱하기 벡터의 곱하기 연산을 진행하고, 계산 결과를 스크래치패드 메모리의 지정 주소에 기록한다. 설명이 필요한 부분은, 벡터는 특수 형식의 행렬(1행의 원소만 있는 행렬)로 삼아 스크래치패드 메모리에 저장할 수 있다.
벡터 곱하기 행렬 명령(VMM): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 지정 길의 벡터 데이터와 행렬 데이터를 취하고, 행렬 연산 유닛에서 벡터 곱하기 행렬의 곱하기 연산을 진행하고, 계산 결과를 스크래치패드 메모리의 지정 주소에 기록한다. 설명이 필요한 부분은, 벡터는 특수 형식의 행렬(1행의 원소만 있는 행렬)로 삼아 스크래치패드 메모리에 저장할 수 있다.
행렬 곱하기 스칼라 명령(VMS): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 지정 크기의 행렬 데이터를 취하고, 스칼라 레지스터 파일의 지정 주소에서 지정 크기의 스칼라 데이터를 취하고, 행렬 연산 유닛에서 스칼라 곱하기 행렬의 곱하기 연산을 진행하고, 계산 결과를 스크래치패드 메모리의 지정 주소에 기록한다. 설명이 필요한 부분은, 스칼라 레지스터 파일에는 행렬의 주소뿐만 아니라 스칼라 데이터도 저장된다.
텐서 연산 명령(TENS): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 각각 지정 크기의 2개 행렬 데이터를 취하고, 행렬 연산 유닛에서 2개 행렬 데이터에 대하여 텐서 연산을 진행하고, 계산 결과를 스크래치패드 메모리의 지정 주소에 기록한다.
행렬 더하기 명령(MA): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 각각 지정 크기의 2개 행렬 데이터를 취하고, 행렬 연산 유닛에서 2개 행렬 데이터에 대하여 더하기 연산을 진행하고, 계산 결과를 스크래치패드 메모리의 지정 주소에 기록한다.
행렬 빼기 명령(MS): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 2개 지정 주소에서 각각 지정 크기의 2개 행렬 데이터를 취하고, 행렬 연산 유닛에서 2개 행렬 데이터에 대하여 빼기 연산을 진행하고, 계산 결과를 스크래치패드 메모리의 지정 주소에 기록한다.
행렬 검색 명령(MR): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 지정 크기의 벡터 데이터를 취하고, 스크래치패드 메모리의 지정 주소에서 지정 크기의 행렬 데이터를 취하고, 행렬 연산 유닛에서 상기 벡터는 색인 벡터이고, 출력하는 벡터 중의 제i번째 원소는 색인 벡터의 제i번째 원소를 색인으로 삼고 행렬의 제i번째열에서 찾아내고, 상기 출력 벡터는 스크래치패드 메모리의 지정 주소에 저장한다.
행렬 로드 명령(ML): 상기 명령에 의거하여, 장치는 외부 출처 주소에서 지정 크기의 데이터를 스크래치패드 메모리의 지정 주소까지 로딩한다.
행렬 저장 명령(MS): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 지정 크기의 행렬 데이터를 외부 목적의 주소 지점에 저장한다.
행렬 운반 명령(MMOVE): 상기 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소에서 지정 크기의 행렬 데이터를 스크래치패드 메모리의 다른 지정 주소 지점에 저장한다.
상기 명령 중 지정 크기의 의미는 데이터의 길이가 사용자 정의에서 지정할 수 있다는 것으로서, 길이는 조절하여 변경 가능하다.
본 발명의 목적, 기술방안 및 장점에 대한 더욱 명확한 이해를 돕기 위하여 이하에서는 구체적인 실시예를 도면을 통해 더욱 상세하게 설명한다.
도 3은 본 발명 실시예에서 제공하는 행렬 연산 장치의 구조도이다. 도 3에서 도시하는 바와 같이, 장치에는 획득 모듈, 디코딩 모듈, 명령 큐, 스칼라 레지스터 파일, 종속성 처리 유닛, 저장 큐, 재순위화 캐시, 행렬 연산 유닛, 스크래치패드, 및 IO 메모리 엑세스 모듈이 포함된다.
여기에서 획득 모듈은 명령 시쿼스 중 다음 실행할 명령을 취한 후 상기 명령을 디코딩 모듈에 전송하는 역할을 한다.
디코딩 모듈은 명령을 디코딩한 후 명령을 명령 큐에 전송하는 역할을 한다.
명령 큐는 다른 명령이 상응하는 스칼라 레지스터에서 종속성이 존재할 수 있다는 점을 감안하여, 디코딩한 명령을 캐싱하고 종속성이 충족된 후 명령을 발송하는 역할을 한다.
스칼라 레지스터 파일은 장치가 연산 과정에서 필요한 스칼라 레지스터를 제공한다.
종속성 처리 유닛은 처리 명령과 이전 명령에 존재할 수 있는 종속성을 처리한다. 행렬 연상 명령은 스크래치패드 메모리에 엑세스할 수있으며, 전후 명령은 동일 저장 공간에 엑세스할 수 있다. 명령 실행 결과의 정확성을 보장하기 위하여, 현재 명령이 만약 이전 명령의 데이터와 종속성을 가진 것으로 검출되면, 상기 명령은 반드시 저장 큐 내에서 종속성이 제거될 때까지 대기해야 한다.
저장 큐는 하나의 순서 큐(ordered queue)이며, 이전 명령과 데이터에서 종속성이 있는 명령은 상기 큐 내에서 종속 관계가 제거될 때까지 상기 큐 내에 저장된다.
재순위화 캐시는 명령이 실행 과정 중에서 동시에 모듈에 캐싱되며, 하나의 명령이 실행 완료된 후, 만약 상기 명령이 동시에 재순위화 캐시 중 제출되지 않은 명령 중 가장 이른 명령이면 상기 명령은 제출된다. 일단 제출되면 상기 명령이 진행하는 조작이 변경한 장치 상태는 철회할 수 없다.
행렬 연산 유닛은 장치의 모든 행렬 연산을 책임지면 여기에는 행렬 더하기 조작, 행렬 더하기 스칼라 조작, 행렬 빼기 조작, 행렬 빼기 스칼라 조작, 행렬 곱하기 조작, 행렬 곱하기 스칼라 조작, 행렬 나누기(대위 나누기) 조작, 행렬 AND 조작 및 행렬 OR 조작을 포함하나 여기에만 국한되지 않으며, 행렬 연산 명령은 상기 연산 유닛으로 전송되어 실행된다.
스크래치패드는 행렬 데이터 전용 임시 저장 장치로서 다른 크기의 행렬 데이터를 지원할 수 있다.
IO 메모리 엑세스 모듈은 스크래치패드 메모리에 직접 엑세스하는 데 사용되며, 스크래치패드 메모리에서 데이터를 판독하거나 기록하는 역할을 한다.
도 4는 본 발명 실시예에서 제공하는 행렬 연산 장치 행렬 곱하기 행렬 명령 실행의 흐름도이다. 도 4에서 도시하는 바와 같이 행렬 곱하기 행렬 명령 실행 과정은 이하 단계를 포함한다.
S1: 획득 모듈은 상기 행렬 곱하기 벡터 명령을 취하여 디코딩 모듈로 전송한다.
S2: 디코딩 모듈이 명령을 디코딩한 후 명령을 명령 큐에 전송한다.
S3: 명령 큐에서 상기 행렬 곱하기 벡터 명령은 스칼라 레지스터 파일에서 명령 중 5개의 연산 도메인에 대응하는 스칼라 레지스터 내의 데이터를 획득해야 하며, 여기에는 입력 벡터 주소, 입력 벡터 길이, 입력 행렬 주소, 출력 벡터 주소, 출력 벡터 길이가 포함된다.
S4: 필요한 스칼라 데이터를 취득한 후, 상기 명령은 종속성 처리 유닛으로 발송된다. 종속성 처리 유닛은 상기 명령이 앞의 아직 실행이 종료되지 않은 명령과 데이터에서 종속성이 존재하는지 분석한다. 상기 명령은 저장 큐에서 이것이 앞의 아직 실행이 종료되지 않은 명령과 데이터에서 더 이상 종속성이 존재하지 않을 때까지 대기하여야 한다.
S5: 종속성이 존재하지 않게 된 이후, 상기 행렬 곱하기 벡터 명령은 행렬 연산 유닛으로 발송된다. 행렬 연산 유닛은 필요한 데이터의 주소와 길이에 의거하여 스크래치패드 메모리에서 필요한 행렬과 벡터 데이터를 취한 후, 행렬 연산 유닛에서 곱하기 연산을 완료한다.
S6: 연산 완료 후, 결과를 스크래치패드 메모리의 지정 주소에 기록하고, 동시에 재순위화 캐시 중의 상기 명령을 제출한다.
도 5는 본 발명 실시예에서 제공하는 행렬 연산 장치가 누승법을 진행하여 규약불가 행렬최대 고유값에 대응하는 고유백터를 구하는 흐름도이다. 도 5에서 도시하는 바와 같이, 여기에는 이하의 단계가 포함된다.
step 1: 임의 2-놈(norm)이 1인 시작 벡터 x를 설정한다.
step 2: IO 명령을 통하여 시작 벡터 x와 구하려는 행렬 A를 각각 장치 내 벡터 전용 스크래치패드 메모리와 행렬 전용 스크래치패드 메모리의 지정 주소 지점에 저장한다.
step 3: 행렬 곱하기 벡터 명령(MMV)을 실행하고, 스크래치패드 메모리에서 A와 x를 판독하고, 행렬 연산 유닛에서 행렬 A와 벡터 x를 곱하고, 얻은 벡터를 정규화한 후 x와 비교하고, 차이값이 여전히 역치보다 크면 x를 상기 행렬에 부여하고 step 2로 돌아간다.
step 4: 얻은 벡터는 규약불가 행렬A의 최대 고유값에 대응하는 고유벡터이고, 출력 벡터를 지정 주소에 저장하고, IO 명령을 통해 오프칩 주소 공간에 저장한다.
도 6은 본 발명 실시예에서 제공하는 행렬 연산 유닛의 구조도이다. 도 6에서 도시하는 바와 같이, 행렬 연산 유닛은 행렬 더하기 부품, 행렬 곱하기 부품, 행렬 스칼라 곱하기 부품 및 비선형 연산 부품 등을 포함하며, 그 외 행렬 연산 유닛은 멀티 파이프라인 레벨 구조이며, 여기에서 행렬 곱하기 부품과 행렬 스칼라 곱하기 부품은 제1 파이프라인 레벨이고, 행렬 더하기 부품은 제2 파이프라인 레벨이고, 비선형 연산 부품은 제3 파이프라인 레벨이다. 이러한 유닛은 다른 파이프라인 레벨에 있으며, 연속 직렬의 복수 개 행렬 연산 명령의 선후 순서가 상응하는 유닛이 소재한 파이프라인 레벨 순서와 일치하는 경우, 더욱 효율적으로 상기 연속 직렬 행렬 연산 명령이 요구하는 조작을 구현할 수 있다.
상기 내용을 종합하면, 본 발명에서 제공하는 행렬 연산 장치는 현재 컴퓨터 분야에서 갈수록 많아지는 알고리즘에 대량의 행렬 연산이 포함되는 문제를 효과적으로 해결해 준다. 종래의 해결방안과 비교할 때, 본 발명은 사용이 편리하고 지원하는 행렬 규모가 유연하며 칩온 캐시가 충분한 장점 등을 가지고 있다. 본 발명은 대량의 행렬 연산을 포함하는 다양한 계산 태스크에 사용할 수 있으며, 여기에는 현재 다양한 성능을 보이고 있는 인공 신경망 알고리즘의 역방향 트레이닝과 정방향 예측, 및 종래의 규약불가 행렬최대 고유값을 구하는 누승법의 수치 계산 방법이 포함된다.
상기의 구체적인 실시예는 본 발명의 목적, 기술방안 및 유익한 효과를 더욱 상세하게 설명하기 위한 것이다. 상기 내용은 본 발명의 구체적인 실시예에 불과하므로 본 발명을 제한하지 않는다. 본 발명의 정신과 원칙 내에서 진행한 모든 수정, 동등한 치환, 개선 등은 모두 본 발명의 보호범위 내에 속한다.

Claims (12)

  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 파이프라인 레벨인 것을 특징으로 하는 행렬 연산 장치.
KR1020187015436A 2016-01-20 2016-04-06 행렬 연산 장치 및 방법 KR102123633B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201610037535.5A CN106991077A (zh) 2016-01-20 2016-01-20 一种矩阵计算装置
CN201610037535.5 2016-01-20
PCT/CN2016/078546 WO2017124647A1 (zh) 2016-01-20 2016-04-06 一种矩阵计算装置

Publications (2)

Publication Number Publication Date
KR20180100551A true KR20180100551A (ko) 2018-09-11
KR102123633B1 KR102123633B1 (ko) 2020-06-16

Family

ID=59361386

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187015436A KR102123633B1 (ko) 2016-01-20 2016-04-06 행렬 연산 장치 및 방법

Country Status (4)

Country Link
EP (2) EP3407202A4 (ko)
KR (1) KR102123633B1 (ko)
CN (2) CN107704433A (ko)
WO (1) WO2017124647A1 (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107315718B (zh) * 2016-04-26 2020-08-21 中科寒武纪科技股份有限公司 一种用于执行向量内积运算的装置和方法
US11086634B2 (en) 2017-07-05 2021-08-10 Shanghai Cambricon Information Technology Co., Ltd. Data processing apparatus and method
CN107578014B (zh) 2017-09-06 2020-11-03 上海寒武纪信息科技有限公司 信息处理装置及方法
EP3660629B1 (en) 2017-07-05 2023-08-30 Shanghai Cambricon Information Technology Co., Ltd Data processing apparatus and method
CN109583577B (zh) 2017-09-29 2021-04-23 上海寒武纪信息科技有限公司 运算装置及方法
CN107833176A (zh) * 2017-10-30 2018-03-23 上海寒武纪信息科技有限公司 一种信息处理方法及相关产品
CN109754062B (zh) * 2017-11-07 2024-05-14 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN108021393B (zh) * 2017-12-15 2020-10-27 安徽寒武纪信息科技有限公司 一种计算方法及相关产品
CN108037908B (zh) * 2017-12-15 2021-02-09 中科寒武纪科技股份有限公司 一种计算方法及相关产品
CN108108190B (zh) * 2017-12-15 2020-01-24 中科寒武纪科技股份有限公司 一种计算方法及相关产品
CN108090028B (zh) * 2017-12-15 2021-03-23 中科寒武纪科技股份有限公司 一种计算方法及相关产品
CN108009126B (zh) * 2017-12-15 2021-02-09 安徽寒武纪信息科技有限公司 一种计算方法及相关产品
CN107943756B (zh) * 2017-12-15 2021-03-23 中科寒武纪科技股份有限公司 一种计算方法及相关产品
CN112463115A (zh) * 2017-12-15 2021-03-09 安徽寒武纪信息科技有限公司 一种计算方法及相关产品
CN107957975B (zh) * 2017-12-15 2021-01-05 安徽寒武纪信息科技有限公司 一种计算方法及相关产品
CN108108189B (zh) * 2017-12-15 2020-10-30 安徽寒武纪信息科技有限公司 一种计算方法及相关产品
CN108121688B (zh) * 2017-12-15 2020-06-23 中科寒武纪科技股份有限公司 一种计算方法及相关产品
CN108388446A (zh) * 2018-02-05 2018-08-10 上海寒武纪信息科技有限公司 运算模块以及方法
CN109032670B (zh) * 2018-08-08 2021-10-19 上海寒武纪信息科技有限公司 神经网络处理装置及其执行向量复制指令的方法
US20210133854A1 (en) 2018-09-13 2021-05-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 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN110119807B (zh) * 2018-10-12 2021-11-09 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111198670B (zh) 2018-11-20 2021-01-29 华为技术有限公司 执行矩阵乘法运算的方法、电路及soc
CN111381871B (zh) * 2018-12-28 2022-12-09 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111966399A (zh) * 2019-05-20 2020-11-20 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
CN113836481A (zh) * 2020-06-24 2021-12-24 北京希姆计算科技有限公司 矩阵计算电路、方法、电子设备及计算机可读存储介质
CN113867799A (zh) * 2020-06-30 2021-12-31 上海寒武纪信息科技有限公司 计算装置、集成电路芯片、板卡、电子设备和计算方法
CN111930506A (zh) * 2020-08-13 2020-11-13 山东云海国创云计算装备产业创新中心有限公司 一种矩阵调度方法及相关装置
CN112328960B (zh) * 2020-11-02 2023-09-19 中国平安财产保险股份有限公司 数据运算的优化方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010006787A (ko) * 1999-03-12 2001-01-26 가나이 쓰토무 데이터 처리 프로세서 및 시스템
KR100289746B1 (ko) * 1993-10-05 2001-05-15 아끼구사 나오유끼 벡터 데이타 처리용 컴퓨터 시스템 및 그 방법
JP2009181293A (ja) * 2008-01-30 2009-08-13 Yamaha Corp 行列演算コプロセッサ
WO2013054468A1 (ja) * 2011-10-14 2013-04-18 パナソニック株式会社 転置演算装置とその集積回路、および転置処理方法
KR20150005062A (ko) * 2013-07-04 2015-01-14 삼성전자주식회사 미니-코어를 사용하는 프로세서

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4888679A (en) * 1988-01-11 1989-12-19 Digital Equipment Corporation Method and apparatus using a cache and main memory for both vector processing and scalar processing by prefetching cache blocks including vector data elements
JPH04365170A (ja) * 1991-06-12 1992-12-17 Mitsubishi Electric Corp ディジタル信号処理用半導体集積回路装置
US6282634B1 (en) * 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
CN101620524B (zh) * 2009-07-03 2011-08-10 中国人民解放军国防科学技术大学 支持矩阵整体读写操作的矩阵寄存器文件
WO2012037472A2 (en) * 2010-09-17 2012-03-22 William Marsh Rice University Gpu-based fast dose calculator for cancer therapy
CN102360344B (zh) * 2011-10-10 2014-03-12 西安交通大学 矩阵处理器及其指令集和嵌入式系统
CN102521535A (zh) * 2011-12-05 2012-06-27 苏州希图视鼎微电子有限公司 通过特定指令集来进行相关运算的信息安全协处理器
CN102750127B (zh) * 2012-06-12 2015-06-24 清华大学 一种协处理器
CN103678257B (zh) * 2013-12-20 2016-09-28 上海交通大学 基于fpga的正定矩阵浮点求逆器及其求逆方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100289746B1 (ko) * 1993-10-05 2001-05-15 아끼구사 나오유끼 벡터 데이타 처리용 컴퓨터 시스템 및 그 방법
KR20010006787A (ko) * 1999-03-12 2001-01-26 가나이 쓰토무 데이터 처리 프로세서 및 시스템
JP2009181293A (ja) * 2008-01-30 2009-08-13 Yamaha Corp 行列演算コプロセッサ
WO2013054468A1 (ja) * 2011-10-14 2013-04-18 パナソニック株式会社 転置演算装置とその集積回路、および転置処理方法
KR20150005062A (ko) * 2013-07-04 2015-01-14 삼성전자주식회사 미니-코어를 사용하는 프로세서

Also Published As

Publication number Publication date
EP3832499C0 (en) 2023-07-12
EP3407202A4 (en) 2019-08-28
EP3832499A1 (en) 2021-06-09
CN106991077A (zh) 2017-07-28
CN107704433A (zh) 2018-02-16
EP3407202A1 (en) 2018-11-28
EP3832499B1 (en) 2023-07-12
WO2017124647A1 (zh) 2017-07-27
KR102123633B1 (ko) 2020-06-16

Similar Documents

Publication Publication Date Title
KR102123633B1 (ko) 행렬 연산 장치 및 방법
KR102185287B1 (ko) 벡터 연산 장치
CN109522254B (zh) 运算装置及方法
WO2017185389A1 (zh) 一种用于执行矩阵乘运算的装置和方法
KR102549680B1 (ko) 벡터 계산 유닛
US10338925B2 (en) Tensor register files
WO2017185418A1 (zh) 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法
US10372456B2 (en) Tensor processor instruction set architecture
KR102486029B1 (ko) 비트폭이 다른 연산 데이터를 지원하는 연산 유닛, 연산 방법 및 연산 장치
US10275247B2 (en) Apparatuses and methods to accelerate vector multiplication of vector elements having matching indices
US20150378734A1 (en) System and methods for expandably wide operand instructions
WO2017181419A1 (zh) 一种子矩阵运算装置及方法
US20170286122A1 (en) Instruction, Circuits, and Logic for Graph Analytics Acceleration
US10521225B2 (en) Matrix multiplication at memory bandwidth
CN111651205B (zh) 一种用于执行向量内积运算的装置和方法
WO2017185392A1 (zh) 一种用于执行向量四则运算的装置和方法
US9032099B1 (en) Writeback mechanisms for improving far memory utilization in multi-level memory architectures
CN111651206A (zh) 一种用于执行向量外积运算的装置和方法
EP3447690A1 (en) Maxout layer operation apparatus and method
CN112348182A (zh) 一种神经网络maxout层计算装置
KR20230082621A (ko) 얕은 파이프라인을 갖는 고도의 병렬 처리 아키텍처
JP7490766B2 (ja) 演算論理回路レジスタの順序付け
CN114722259A (zh) 数据处理系统、方法和装置

Legal Events

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