KR102467544B1 - 연산 장치 및 그 조작 방법 - Google Patents

연산 장치 및 그 조작 방법 Download PDF

Info

Publication number
KR102467544B1
KR102467544B1 KR1020187034254A KR20187034254A KR102467544B1 KR 102467544 B1 KR102467544 B1 KR 102467544B1 KR 1020187034254 A KR1020187034254 A KR 1020187034254A KR 20187034254 A KR20187034254 A KR 20187034254A KR 102467544 B1 KR102467544 B1 KR 102467544B1
Authority
KR
South Korea
Prior art keywords
data
module
instruction
unit
command
Prior art date
Application number
KR1020187034254A
Other languages
English (en)
Other versions
KR20190032282A (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 KR20190032282A publication Critical patent/KR20190032282A/ko
Application granted granted Critical
Publication of KR102467544B1 publication Critical patent/KR102467544B1/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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • 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
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • 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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Complex Calculations (AREA)
  • Apparatus For Radiation Diagnosis (AREA)

Abstract

본 발명은 연산 장치 및 그 조작 방법에 관한 것이다. 상기 장치는 명령 모듈(10), 데이터 모듈(20)과 연산 모듈(30)을 포함하되, 명령 모듈(10)은 명령을 조작하는 데 사용되고 명령 캐시, 명령 처리, 종속성 판단 등을 포함하며; 데이터 모듈(20)은 데이터를 조작하는 데 사용되고, 메모리로부터 데이터를 판독 또는 기록하는 동시에 연산 모듈에 연산 데이터를 입력하는 등을 포함하며; 연산 모듈(30)은 명령에 의거하여 데이터에 대해 관련 연산을 진행하는 데 사용한다. 상기 장치와 방법은 명령을 실행할 때 연산 대기 데이터의 길이와 연산 모듈의 규모에 의거하여 대응되게 조정하고 대량 벡텨 계산 태스크의 실행 성능을 향상시켜 간소화된 명령 구조, 원활하고 효율 높은 데이터 연산 등 장점을 가지고 있다.

Description

연산 장치 및 그 조작 방법
본 발명은 컴퓨터 분야에 관한 것으로, 보다 상세하게는 연산 장치 및 그 조작 방법에 관한 것으로서, 명령에 의거하여 같은 규모 또는 다른 규모 데이터의 연산을 효율 높고 원활하게 실행하는 데 사용된다. 현재 점점 많은 알고리즘에 대량의 같은 규모 또는 다른 규모 데이터가 포함된 연산 문제를 원활히 해결하고 연산 유닛 규모의 제한을 줄이며 벡터 연산의 원활성과 유효성을 향상시킨다.
빅데이터 시대가 다가옴에 따라 벡터 연산과 관련된 응용 또한 나날이 늘어나고 있다. 연산에 참여하는 데이터 양이 점점 많아 지고 데이터 규격과 차원이 지속적으로 확대되며 연산 형식도 점차적으로 많아 지고 있다. 한편으로, 연산 유닛의 규모는 데이터 양이 대량 증가됨에 따라 대폭 확대되기 어려우므로 연산할 때 연산 데이터를 어떻게 조정할 것인가 하는 데 대해 요구를 제출하게 된다. 다른 한편으로, 상기 연산은 통일된 규격의 데이터 사이에서만 진행되지 않고 대부분 연산은 규격이 다르거나 또는 차원이 다른 데이터 사이에서 진행되므로 연산 장치의 원활성에 대해 보다 높은 요구를 제출하게 된다.
종래기술에 있어서, 벡터 연산을 진행하는 공지된 방안은 범용 프로세서(CPU) 또는 그래픽 처리 장치(GPU)를 사용하는 것이다. 하지만 상기 방법은 그 구조가 스칼라 연산에 더 적합할 수 있으므로 벡터 연산의 효율이 비교적 낮으며; 또는 그 온칩(on-chip) 캐시가 너무 작아 대규모 벡터 연산의 고효율 완료에 대한 요구를 만족시킬 수 없다. 또 다른 종래기술에 있어서, 전문적으로 맞춤제작된 벡터 연산 장치로 벡터를 계산하는 것은 맞춤제작된 저장 유닛과 처리 유닛으로 벡터를 연산하는 것이다. 하지만 현재 존재하고 있는 전용 벡터 연산 장치는 레지스터 파일에만 한정되어 길이가 같은 벡터 연산만 지원할 수 있으므로 원활성이 부족하다.
또한, 상기 장치와 대응되는 명령 집합은 길이가 같은 데이터의 연산만 실행할 수 있고 기억 장치와 연산 유닛의 규모에 한정된다. 길이가 다른 데이터와 연산 유닛의 규모를 만족시키지 않는 데이터에 있어서, 한 가지 방식은 복수개 명령을 사용해 데이터를 차례대로 호출하는 것이고, 또 다른 방식은 순환 명령 방식으로 반복 호출하는 것이다. 따라서, 명령 집합의 구조가 복잡하고 명령 큐가 길어지며, 실행 효율이 낮고 작동할 때 제약이 많이 따를 뿐만 아니라 원할성이 취약하고 대규모적인 벡터 연산을 위해 편리성을 제공할 수 없다.
본 발명의 목적은 연산 장치 및 그 조작 방법을 제공해 명령에 의거하여 같은 규모 또는 다른 규모 데이터에 대한 연산을 효율 높게 원활히 실행하는 데 사용함으로써 현재 점점 많은 알고리즘에 대량의 같은 규모 또는 다른 규모 데이터가 포함된 연산 문제를 해결하고 연산 유닛의 규모를 줄이는 데 있다.
본 발명은 연산 장치에 관한 것으로서, 장치는 명령 모듈, 데이터 모듈과 연산 모듈을 포함하되, 여기에서,
명령 모듈은 명령을 캐시해 데이터 모듈과 연산 모듈에게 명령을 제공하는 데 사용하고;
데이터 모듈은 명령 모듈 중의 명령에 의거하여 연산 모듈에게 연산 데이터를 제공하는 데 사용하며;
연산 모듈은 명령 모듈 중의 명령 및 데이터 모듈이 제공하는 연산 데이터에 의거하여 연산을 진행하는 데에 사용한다.
보다 상세하게, 명령 모듈은 명령 캐시 유닛, 명령 처리 유닛, 종속성 처리 유닛, 저장 큐 유닛을 포함하되, 여기에서,
명령 캐시 유닛은 실행 대기 명령을 저장하는 데 사용하고, 명령 처리 유닛은 명령 캐시 유닛으로부터 명령을 획득해 상기 명령을 처리하는 데 사용하며, 종속성 처리 유닛은 상기 명령과 이전의 실행 중 명령이 같은 데이터를 엑세스하는 여부를 판단하는 데 사용하고;
종속성 처리 유닛은 종속성 관계가 존재하면, 상기 명령을 상기 저장 큐 유닛에 저장하고 이전의 실행 중 명령이 실행 완료한 후 다시 상기 명령을 연산 모듈에게 제공하며;
종속성 관계가 존재하지 않으면, 직접 상기 명령을 연산 모듈에게 제공한다.
보다 상세하게, 명령 처리 유닛은,
명령 캐시 유닛에서 명령을 획득하는 데 사용하는 호출 섹션과;
획득한 명령을 디코딩하는 데 사용하는 디코딩 섹션과;
디코딩한 명령을 순서별로 저장하는 데 사용하는 명령 큐 섹션을 포함한다.
보다 상세하게, 데이터 모듈은 데이터 I/O 유닛과 데이터 임시 저장 유닛을 포함하는데, 여기에서, 데이터 I/O 유닛은 직접 메모리에서 연산 데이터를 판독하는 데 사용하고; 데이터 임시 저장 유닛은 연산 데이터를 저장하고 상기 연산 데이터를 조정한 후 연산 모듈에게 제공하는 데 사용한다.
보다 상세하게, 데이터 임시 저장 유닛은 연산 데이터를 조정한 후 연산 모듈에 전송하는 데 사용되되, 그 과정은,
연산에 참여하는 2개 연산 데이터의 길이가 모두 연산 모듈의 연산 규모보다 작거나 또는 그와 같은 경우, 데이터 임시 저장 유닛은 직접 상기 2개 연산 데이터를 연산 모듈에게 제공하는 단계;
연산에 참여하는 2개 연산 데이터의 길이가 모두 연산 모듈의 연산 규모보다 큰 경우, 각 연산 데이터를 복수개의 길이가 모두 상기 연산 규모보다 작거나 또는 그와 같은 서브 연산 데이터로 분해하고 상기 서브 연산 데이터를 여러 번으로 나누어 상기 연산 모듈에게 제공하는 단계;
연산에 참여하는 2개 연산 데이터에 있어서, 1 개 연산 데이터의 길이가 연산 모듈의 연산 규모보다 크고 또 다른 연산 데이터의 길이가 연산 모듈의 연산 규모보다 작거나 또는 그와 같은 경우, 길이가 연산 규모보다 큰 연산 데이터를 복수개의 길이가 모두 연산 규모보다 작거나 또는 그와 같은 서브 연산 데이터로 분해하고 상기 복수개의 데이터와 길이가 연산 규모보다 작거나 또는 그와 같은 연산 데이터를 여러 번으로 나누어 상기 연산 모듈에게 제공하는 단계를 포함한다.
보다 상세하게, 연산 데이터는 벡터며, 연산 모듈은 벡터 논리 연산 또는 벡터 사칙 연산을 실행하는 데 사용한다.
본 발명은 연산 장치의 조작 방법을 더 제공하는데, 방법은,
명령을 명령 모듈에 캐싱하는 S1;
명령 모듈 중의 명령을 데이터 모듈에게 제공하고, 데이터 모듈은 상기 명령에 의거하여 연산 모듈에게 연산 데이터를 제공하는 S2;
명령 모듈 중의 명령을 연산 모듈에게 제공하고 연산 모듈은 상기 명령 및 데이터 모듈이 제공한 연산 데이터에 의거하여 연산을 진행하는 S3을 포함한다.
보다 상세하게, 명령 모듈은 명령 캐시 유닛, 명령 처링 유닛, 종속성 처리 유닛, 저장 큐 유닛을 포함하며, 상기 단계 S1은,
명령 캐시 유닛에 실행 대기 명령을 저장하는 S11;
명령 처리 유닛은 명령 캐시 유닛에서 명령을 획득하고 상기 명령을 처리하는 S12;
종속성 처리 유닛은 상기 명령과 이전의 실행 중 명령이 동등한 데이터를 엑세스하는 여부를 판단하되, 엑세스하면 종속성 처리 유닛은 상기 명령을 상기 저장 큐 유닛에 조정하고 이전의 실행 중 명령이 실행 완료한 후 다시 상기 명령을 연산 모듈에게 제공하고, 엑세스하지 않으면 직접 상기 명령을 연산 모듈에게 제공하는 S13을 포함한다.
보다 상세하게, 명령 처리 유닛은 호출 섹션, 디코딩 섹션과 명령 큐 섹션을 포함하며, 여기에서 단계 S12는,
호출 섹션은 명령 캐시 유닛에서 명령을 획득하는 S121;
디코딩 섹션은 획득한 명령을 디코딩하는 S122;
명령 큐 섹션이 디코딩한 명령을 순서별로 저장하는 S123을 포함한다.
보다 상세하게, 데이터 모듈은 데이터 I/O 유닛과 데이터 임시 저장 유닛을 포함하며, 여기에서, 단계 S2는,
데이터 I/O 유닛이 직접 메모리에서 연산 데이터를 판독하고 데이터 임시 저장 유닛에 저장하는 S21;
데이터 임시 저장 유닛이 저장한 연산 데이터를 조정한 후, 연산 모듈에게 제공하는 S22를 포함한다.
보다 상세하게, 단계 S22는,
연산에 참여하는 2개 연산 데이터의 길이가 모두 연산 모듈의 연산 규모보다 작거나 또는 그와 같은 경우, 데이터 임시 저장 유닛은 직접 상기 2개 연산 데이터를 연산 모듈에게 제공하는 단계;
연산에 참여하는 2개 연산 데이터의 길이가 모두 연산 모듈의 연산 규모보다 큰 경우, 각 연산 데이터를 복수개의 길이가 모두 상기 연산 규모보다 작거나 또는 그와 같은 서브 연산 데이터로 분해하고 상기 서브 연산 데이터를 여러 번으로 나누어 상기 연산 모듈에게 제공하는 단계;
연산에 참여하는 2개 연산 데이터에 있어서, 1 개 연산 데이터의 길이가 연산 모듈의 연산 규모보다 크고, 또 다른 연산 데이터의 길이가 연산 모듈의 연산 규모보다 작거나 또는 그와 같은 경우, 길이가 연산 규모보다 큰 연산 데이터를 복수개의 길이가 모두 연산 규모보다 작거나 또는 그와 같은 서브 연산 데이터로 분해하고 상기 복수개의 서브 연산 데이터와 길이가 연산 규모보다 작거나 또는 그와 같은 연산 데이터를 여러 번으로 나누어 상기 연산 모듈에게 제공하는 단계를 포함한다.
보다 상세하게, 연산 데이터는 벡터며, 연산 모듈은 벡터 논리 연산 또는 벡터 사칙 연산을 실행하는 데 사용한다.
본 발명이 제공하는 연산 장치 및 그 조작 방법은 1 개 명령만 발송하는 상황에서 연산 데이터를 메모리에서 판독한 후, 데이터 임시 저장 유닛에 저장하고, 데이터 임시 저장 유닛은 연산 데이터의 길이에 의거하여 연산 데이터를 조정한 후 연산 모듈에게 제공함으로써 길이가 다른 데이터의 연산을 지원해 연산 유닛의 규모를 줄일 수 있다. 또한 본 발명은 종속성 처리 유닛을 이용해 데이터 저장 중의 관련성 문제를 해결해 대량의 계산 태스크를 포함한 실행 성능을 향상시킨다. 또한, 본 발명이 사용하는 명령은 간소화된 포맷을 가져 명령 집합 구조가 간단하고, 사용이 편리하며 원할한 데이터 길이와 연산 규모를 지원한다.
본 발명은 데이터 처리, 로봇, 컴퓨터, 프린터, 스캐너, 전화, 태블릿 PC, 스마트 단말기, 휴대폰, 주행기록기, 네비게이터, 센서, 웹캠, 클라우드 서버, 사진기, 촬영기, 프로젝터, 손목시계, 이어폰, 휴대용 저장장치, 웨어러블 설비 등 각종 전자제품; 비행기, 선박, 차량 등 각종 교통수단; 텔레비전, 에어컨, 전자레인지, 냉장고, 전기밥솥, 가습기, 세탁기, 전등, 가스레인지, 주방환풍기 등 각종 가정용 전기기구와 자기공명영상촬영기,B형 초음파, 심전도기 등이 포함된 각종 의료설비를 포함하지만 이에 한정되지 않는 분야에 응용할 수 있다.
도 1은 본 발명이 제공하는 연산 장치의 구조도다.
도 2는 본 발명 중 명령 모듈의 구조도다.
도 3은 본 발명 중 데이터 모듈의 구조도다.
도 4는 본 발명 중 연산 모듈의 구조도다.
도 5는 본 발명 중 길이가 다른 연산 데이터의 명령을 지원하는 방법에 대한 흐름도다.
도 6은 본 발명 실시예가 제공하는 길이가 다른 연산 벡터를 연산할 때 비교적 짧은 벡터를 순환 판독해 연산을 진행하는 연산 관계를 도시한 것이다.
이하에서는, 본 발명의 목적, 기술방안과 장점을 보다 확실히 알도록 하기 위하여 본 발명의 예시적인 실시형태들을 도면과 결합해 보다 상세히 설명한다.
도 1은 본 발명이 제공하는 연산 장치의 구조도다. 도 1에서 도시하는 바와 같이, 장치는 명령 모듈(10), 데이터 모듈(20)과 연산 모듈(30)을 포함한다. 명령 모듈(10)은 명령을 캐시하고 데이터 모듈(20)과 연산 모듈(30)에게 명령을 제공하는 데 사용한다. 명령 모듈(10) 중의 명령은 데이터 모듈(20)의 데이터 흐름 방향을 제어하고 데이터 모듈(20)의 데이터는 명령 모듈(10) 중 종속성에 대한 처리에 영향을 미친다. 또한, 명령 모듈(10) 중의 명령은 연산 모듈(30)의 구체 연산을 제어하고, 연산 모듈(30)의 연산 완료 여부는 명령 모듈(10)의 새 명령 판독 여부를 제어하며; 데이터 모듈(20)은 연산 모듈(30)에게 구체적인 연산 데이터를 제공하고 연산 모듈(30)은 연산 결과를 데이터 모듈(20)로 반환해 저장한다.
도 2는 본 발명이 제공하는 장치의 명령 모듈을 도시한 것이다. 도 2에서 도시하는 바와 같이, 명령 모듈(10)은 명령 캐시 유닛(11), 명령 처리 유닛(12), 종속성 처리 유닛(13)과 저장 큐 유닛(14)을 포함한다. 여기에서, 명령 처리 유닛(12)은 또한 호출 섹션(121), 디코딩 섹션(122)과 명령 큐 섹션(123) 3개 부분으로 나눈다. 명령 캐시 유닛(11)은 명령을 실행하는 과정에서 상기 명령을 캐싱하는 데 사용되고, 하나의 명령이 실행 완료된 후 상기 명령 또한 동시에 명령 캐시 유닛(11) 중 제출하지 않은 명령 가운데서 가장 이른 하나의 명령을 가리키는 경우 상기 명령은 제출되며, 제출만 되면, 상기 명령이 진행한 장치 상태에 대한 변경은 철회할 수 없다. 호출 섹션(121)은 명령 캐시 유닛(11)에서 다음에 실행하게 될 명령을 추출해 상기 명령을 디코딩 섹션(122)에게 발송하는데 사용하고; 디코딩 섹션(122)은 명령을 디코딩해 디코딩한 명령을 명령 큐(123)에게 발송하는 데 사용하며; 명령 큐 섹션(123)은 디코딩 한 후의 명령을 순서별로 저장하는 데 사용한다. 종속성 처리 유닛(13)은 현재 명령과 이전 명령이 존재할 가능성이 있는 데이터 종속성을 처리하는 데 사용하는데, 예를 들어, 데이터 모듈(20)에서 데이터를 엑세스하는 경우 이전 명령과 다음 명령은 같은 저장 공간 중의 데이터를 엑세스 할 가능성이 있고, 이전 명령을 실행 완료하지 않은 상태에서 상기 데이터를 연산하는 경우에는 상기 데이터의 일치성으로 나타되는 연산 결과의 정확성에 영향을 미친다. 따라서, 현재 명령이 종속성 처리 유닛(13)에 의해 이전 명령의 데이터와 종속성이 존재한다는 것이 검사된 경우, 상기 명령은 저장 큐 유닛(14) 내에서 종속성이 사라질 때까지 대기해야 하는데, 여기에서, 저장 큐 유닛(14)은 하나의 정렬된 큐로서, 이전 명령과 데이터 면에서 종속성이 존재하는 명령은 종속성이 사라질 때가지 상기 큐내에 저정된다.
도 3은 본 발명 중 데이터 모듈의 구조도다. 도 3에서 도시하는 바와 같이, 데이터 모듈(20)은 데이터 I/O 유닛(21)과 데이터 임시 저장 유닛(22) 두 부분으로 구성된다. 데이터 I/O 유닛(21)은 메모리와 연동하는 데 사용되어 직접 메모리에서 데이터를 판독하거나 또는 직접 데이터를 메모리에 기록한다. 데이터 임시 저장 유닛(22)은 스크래치패드 메모리(Scratchpad Memory)로 구성되는데, 여기에서 상기 기억 장치는 각종 다른 저장 소자(SRAM, eDRAM, DRAM, 멤리스터, 3D-DRAM 또는 비휘발성 저장 장치 등)를 통해 구현한다. 데이터 임시 저장 유닛(22)은 각종 규모의 벡터 데이터와 같이 크기가 다른 연산 데이터를 저장할 수 있다. 데이터 I/O 유닛(21)은 명령에 의거하여 필요한 연산 데이터를 판독해 데이터 임시 저장 유닛(22)에 임시 저장하고, 스크래치패드 메모리(Scratchpad Memory)를 사용하므로 길이가 다른 연산 데이터를 저장할 수 있도록 하는 동시에, 연산 과정에서 데이터 임시 저장 유닛(22)은 연산 유닛(30)의 규모와 연산 데이터의 길이에 의거하여 연산 데이터를 조정한 후 연산 모듈(30)에게 제공한다.
보다 상세하게, 연산에 참여하는 2개 연산 데이터의 길이가 모두 연산 모듈의 연산 규모보다 작거나 또는 그와 같은 경우, 데이터 임시 저장 유닛(22)은 직접 상기 2개 연산 데이터를 연산 모듈(30)에게 제공한다. 예를 들어 연산 유닛(30)의 연산 규모가 2개 그룹 벡터의 연산을 일회성으로 처리하는 경우, 각 그룹의 벡터는 4 개 성분을 포함하는데, 이 경우 (A1, A2, A3, A4)와 (B1, B2, B3, B4) 사이의 연산은 상기 연간 유닛(30)의 연산 규모이며; 2개 연산 데이터가 모두 4개 성분보다 적은 벡터이고, 예를 들어 (A1, A2, A3)과 (B1, B2)인 경우에는 직접 (A1, A2, A3)과 (B1, B2)를 연산 모듈(30)에게 제공해 연산을 진행한다.
연산에 참여하는 2개 연산 데이터의 길이가 연산 모듈이 연산 규모보다 큰 경우 데이터 임시 저장 유닛(22)은 각 연산 데이터를 복수개의 길이가 모두 연산 규모보다 작거나 또는 그보다 큰 서브 연산 데이터로 분해하고 상기 서브 연산 데이터를 여러 번으로 나누어 연산 모듈에게 제공한다. 예를 들어, 연산 유닛(30)의 연산 규모는 2개 그룹의 벡터 연산을 일회성으로 처리할 수 있는 연산 규모인 경우, 여기에서 각 그룹 벡터는 4 개 성분을 포함하는데, 이 경우 (A1, A2, A3, A4)와 (B1, B2, B3, B4) 사이의 연산은 상기 연간 유닛(30)의 연산 규모이며; 2개 연산 데이터가 모두 연산 규모보다 크다면, 이 경우(A1, A2, A3, A4, A5)와 (B1, B2, B3, B4, B5) 사이의 연산은 상기 연산 유닛(30)의 연산 규모이며; 2개 연산 데이터가 모두 연산 규모보다 커 (A1, A2, A3, A4, A5)와 (B1, B2, B3, B4, B5)인 경우, (A1, A2, A3, A4, A5)를 D1(A1, A2, A3, A4)와 D2(A5)로 분해하고, (B1, B2, B3, B4, B5)를 d1(B1, B2, B3, B4)과 d2(B5)로 분해한 다음, 이어서 2 번으로 나누어 연산 유닛(30) 내로 제공하는데, 여기에서 처음에는 D1(A1, A2, A3, A4)과 d1(B1, B2, B3, B4)를 제공해 연산을 진행하고, 두번째는 D2(A5)과 d2(B5)를 제공한다. 상기 실례에서는 연산 규모보다 큰 연산 데이터를 모두 2개 시그먼트로 분해하고 번마다 대응 시그먼트의 서브 연산 데이터를 제공한다. 2개 연산 데이터의 분해 시그먼트 수량이 일치하지 않은 경우, 예를 들어, 첫번째 연산 데이터를 3 개 시그먼트로 분해해 D1, D2, D3으로 표시하고, 두번째 연산 데이터를 2개 시그먼트로 분해해 d1과 d2로 표시하면 3 번으로 나누어 연산 유닛에게 첫번째 연산 데이터 D1, D2, D3을 제공하고 상기 3번은 두번째 연산 데이터 d1과 d2를 순환 제공하는데, 즉, 첫번째는 D1과 d1을 제공하고, 두번째는 D2와 d2를 제공하며, 세번째는 D3과 d1을 제공한다. 또 예를 들어, 첫번째 연산 데이터를 5 개 시그먼트로 분해해 D1, D2, D3, D4, D5로 표시하고, 두번째 연산 데이터를 3 개 시그먼트로 분해해 d1, d2와 d3으로 표시하면 5 번으로 나누어 연산유닛에게 연산 데이터를 제공하는데, 즉, 첫번째는 D1과 d1을, 두번째는 D2와 d2를, 세번째는 D3과 d3을, 네번째는 D4와 d1을, 다섯번째는 D5과 d2를 제공한다.
연산에 참여하는 2개 연산 데이터에 있어서, 1개 연산 데이터의 길이가 연산 모듈의 연산 규모보다 크고, 다른 연산 데이터의 길이가 연산 모듈의 연산 규모보다 작거나 또는 그와 같은 경우에는 길이가 연산 규모보다 큰 연산 데이터를 복수개의 길이가 모두 연산규모보다 작거나 또는 그와 같은 서브 연산 데이터로 분해하고 상기 복수개의 서브 연산 데이터와 길이가 연산 규모보다 작거나 또는 그와 같은 연산 데이터를 여러 번으로 나누어 상기 연산 모듈에게 제공한다. 간단히 예를 들어, 첫번째 연산 데이터는 길이가 연산 규모보다 크면 3 개 시그먼트인 D1, D2와 D3으로 분해하고, 두번째 연산 데이터는 연산 규모보다 작거나 또는 같아 분해할 필요가 없으므로 d로 표시하며, 3 번으로 나누어 연산 유닛에게 제1, 제2 연산 데이터를 제공하는데, 즉, 첫번째는 D1과 d를 제공하고, 두번째는 D2와 d를 제공하며 세번째는 D3과 d를 제공한다.
전체적으로, 데이터 임시 저장 유닛(22)이 연산 데이터에 대해 조정한다는 것은 연산 데이터의 길이가 연산 유닛의 연산 규모보다 크면 상기 기억 장치를 통해 직접 연산 대기 데이터를 연산 유닛(30) 내에 전송하고; 크지 않으면 연산할 때 마다 연산 유닛(30)의 연산 규모를 만족시키는 데이터를 연산 유닛(30) 내에 전송함으로써 연산이 완료되거나 또는 상기 데이터들이 다음 단계 연산 라인에 전송된 후 상기 기억 장치가 연산 유닛(30) 내에 연산 유닛(30) 연산 규모를 만족시키는 새로운 데이터를 전송해 연산을 진행한다는 것을 가리킨다. 또한, 2개의 연산 대기 데이터는 길이가 같으면 직접 또는 분해후 연산 유닛(30) 내에 전송해 연산을 진행하며; 길이가 다르면 길이가 비교적 큰 데이터를 시그먼트로 나눈 후 순서별로 판독하며, 길이가 비교적 작은 데이터는 시그먼트로 분해한 후, 연산이 종료할 때까지 순환 판독한다.
도 4는 본 발명이 제공하는 장치 중 연산 모듈의 구조도다. 도 4에서 도시하는 바와 같이, 연산 모듈은 베터 더하기 유닛, 벡터 감하기 유닛, 벡터 논리 유닛, 벡터 내적 유닛 등과 같이 다양하게 다른 연산 유닛으로 구성된다. 각 유닛은 복수개를 가진다. 상기 연산 유닛을 이용하면 연산 모듈은 다양한 벡터 연산을 지원할 수 있다.
도 5는 본 발명 중 길이가 다른 연산 데이터의 명령을 지원하는 방법에 대한 흐름도다. 상기 명령을 실행하는 과정은,
명령 처리 유닛(12) 중의 호출 섹션(121)이 명령 캐시 유닛(11)에서 하나의 벡터 연산 명령을 호출하고 상기 명령을 명령 처리 유닛 중의 디코딩 섹션(122)으로 전송하는 S1;
디코딩 섹션(122)이 명령을 디코딩하고 명령을 자체 정의 명령 규칙에 의거하여 조작 코드와 각각 다른 조작 도메인으로 분해하는데, 여기에서 사용하는 자체 정의 명령 규칙은 명령에 조작 코드와 최소한 하나의 조작 도메인을 포함한다는 것을 가리키고, 조작 코드는 벡터 연산의 유형을 정의하며, 조작 도메인 내에 연산 대기 데이터 수치, 데이터 저장 주소, 데이터 길이 또는 연산 결과 저장 주소 등을 저장하고, 구체적인 조작 도메인의 의미는 조작 코드가 다름에 따라 달라 지며, 이어서 상기 연산 명령을 명령 큐 섹션(123)에게 전송하는 S2;
명령 큐 섹션(123)에 있어서, 상기 명령의 조작 코드와 조작 도메인에 의거하여 연산 대기 데이터를 획득해 종속성 처리 유닛(13)으로 전송해 데이터의 종속성을 분석, 판단하는 S3;
종속성 처리 유닛(14)에 있어서, 상기 명령과 이전에 실행 완료하지 않은 명령이 데이터 면에서 종속성이 존재하는 여부를 분석함으로써, 종속성이 존재하면 대기할 필요가 없고, 종속성이 존재하지 않으면 상기 명령을 저장 큐 유닛 내에 저장하고 그와 이전에 실행 완료하지 않은 데이터 사이에 다시 종속성이 존재하지 않을 때까지 대기하며, 명령을 연산 유닛(30)에게 전송하는 S4;
명령을 연산 유닛(30)에게 전송해 연산을 준비하는 경우, 데이터 모듈(20) 중의 데이터 임시 저장 유닛(22)은 데이터 길이와 연산 유닛(30) 규모에 의거하여 데이터를 조정하는데, 즉, 벡터 길이가 연산 유닛(30)의 연산 규모보다 길면 직접 연산 대기 벡터를 연산 유닛(30) 내에 전송하고, 아니면 연산할 때 마다 연산 유닛(30)의 연산 규모를 만족시키는 데이터를 연산 유닛(30) 내에 전송해 연산을 완료한 후, 연산이 종료될 때까지 연산 유닛(30) 내에 연산 규모를 만족시키는 새로운 데이터를 전송해 연산을 진행하며; 2개 연산 대기 벡터의 길이가 같으면 직접 연산 유닛 내에 전송해 연산을 진행하되, 아니면 연산이 종료될 때까지 길이가 비교적 긴 벡터는 순서별로 판독하고, 길이가 비교적 짧은 벡터는 순환 판독하며; 연산 대기 벡터가 연산 유닛 규모에 의거하여 조정해야 하는 동시에 길이도 조정해야 한다면, 길이가 비교적 긴 벡터는 순서별로 판독하고 길이가 비교적 짧은 벡터는 순환 판독하는 순서를 보장하며, 차례대로 연산 규모를 만족시키는 데이터를 판독하는 S5;
연산이 완료된 후 결과를 데이터 임시 저장 유닛(22) 중의 지정 주소에 기록하는 동시에, 명령 캐시 유닛(11) 중의 상기 명령을 제출하는 S6을 포함한다.
이하에서는, 상기 과정을 보다 확실히 알도록 하기 위하여 구체 실시형태들을 제공하고 도면과 결합해 본 흐름을 보다 상세히 설명한다.
실시예1
본 실시예는 연산 장치를 이용해 진행하는 벡터 간과 연산의 구체 과정을 서술한다. 먼저, 본 실시예에 따른 벡터 간여 연산 명령 포맷을 정의하면 아래와 같다.
Figure 112018117945022-pct00001
레지스터의 각 주소에 16자리 데이터를 저장할 수 있다고 가정하는 경우, 연산 유닛 내에 4 개 간여 연산 장치를 포함하되, 각 연산 장치는 16자리 데이터의 간여 연산을 동시에 진행할 수 있다. 연산 명령 VAV 00001 01000 01001 01000 10001를 예로 들어, 상기 명령은 벡터 0과 벡터 1이 VAV 연산, 즉, 벡터 간여 연산을 진행하는 것을 가리킨다. 보다 상세하게, 벡터 간여 연산 과정은,
명령 처리 유닛(11) 중의 호출 섹션(121)이 명령 캐시 유닛(11)에서 하나의 벡터 연산 명령, 즉, VAV 00001 01000 01001 01000 10001를 호출하고 상기 명령을 명령 처리 유닛(12) 중의 디코딩 섹션(122)으로 전송하는 S1;
디코딩 섹션(122)이 명령을 디코딩하고 상기 명령의 조작 코드 VAV를 획득하는 것은 벡터 간여 연산을 실행한다는 것을 가리키는데, 5 개 조작 도메인을 가지고 각각 연산 대기 벡터 vin0의 초기 주소와 길이, 벡터 vin1의 초기 주소와 길이, 연산 결과의 저장 주소를 가리키며, 상기 연산 명령을 명령 큐 섹션(123)에게 전송하는 S2;
명령 큐 섹션(123)에 있어서, 상기 명령의 조작 코드와 조작 도메인에 의거하여 연산 대기 데이터를 획득하되, 상기 명령의 조작 코드는 VAV로서 즉시 벡터 간여 논리 연산을 실행하고, 조작 도메인 1, 2, 3, 4에서 연산을 대기하는 데이터 주소와 데이터 길이, 즉, 벡터 vin0의 초기 주소 00001, 벡터 vin0의 길이 01000, 벡터 vin1의 초기 주소 01001, 벡터 vin1의 길이 01000를 획득하며; 즉, 벡터 vin0은 주소가 00001인 곳으로부터 시작해 길이가 8 개 주소 길이인 데이터, 즉, 주소가 00001~01000인 데이터를 판독하며; 벡터 vin1은 주소가 01001인 곳으로부터 시작해 길이가 8 개 주소 길이인 데이터를 판독하며; 이어서, 종속성 처리 유닛(13)에 전송해 데이터의 종속성을 분석, 판단하는 S3;
종속성 처리 유닛(123)에 있어서, 상기 명령과 이전에 실행 완료하지 않은 명령이 데이터 면에서 종속성이 존재하는 여부를 분석함으로써, 종속성이 존재하면 대기할 필요가 없고, 종속성이 존재하지 않으면 상기 명령을 저장 큐 유닛 내(14)에 저장하고 그와 이전에 실행 완료하지 않은 데이터 사이에 다시 종속성이 존재하지 않을 때까지 대기하며, 명령을 연산 유닛(30)에게 전송하는 S4;
데이터 모듈(20) 중 데이터 I/O유닛(21)은 사전에 외부의 메모리에서 데이터를 획득하고, 획득한 데이터를 데이터 임시 저장 유닛(22)에 저정하며,명령을 연산 유닛(30)에 전송해 연산을 하려 할 때 데이터 임시 저장 유닛(22)은 명령이 가리키는 데이터 주소에 의거하여 대응되는 데이터를 찾아 연산 유닛(30)에게 제공하고, 제공하기 전에 데이터 임시 저장 유닛(22)은 데이터의 길이와 연산 유닛(30)의 연산 규모에 의거하여 데이터를 조정하는데, 여기에서, 연산 유닛(30)은 일회적으로 4 그룹 16자리 벡터의 간여 연산만 처리할 수 있기 때문에 첫번째로 연산 유닛(30)에 전송된 데이터는 vin0이 가리키는 앞 4 개 주소 길이의 데이터와 vin1이 가리키는 앞 4 개 주소 길이의 데이터, 즉, 주소가 00001~00100과 01001~01100인 데이터에 대해 연산을 진행하고, 연산이 완료된 후 vin0과 vin1 각자의 뒤 4 개 주소 길이의 데이터를 로딩해 연산을 진행하는데, 즉, 주소가 00101~01000와 01101~10000인 데이터에 대해 간여 연산을 진행하는 S5;와
연산이 완료된 후 결과를 데이터 임시 저장 유닛(22) 중의 지정 주소인 10001에 기록하는 동시에, 명령 캐시 유닛 중의 상기 벡터 간여 논리 명령을 제출하는 S6을 포함한다.
실시예2
본 실시예는 연산 장치를 이용해 진행하는 벡터 더하기 연산의 구체 과정을 서술한다. 먼저, 본 실시예에 따른 벡터 더하기 연산 명령 포맷을 정의하면 아래와 같다.
Figure 112018117945022-pct00002
레지스터의 각 주소에 16자리 데이터를 저장할 수 있다고 가정하는 경우, 연산 유닛 내에 4 개 더하기 연산 장치를 포함하되, 각 연산 장치는 16자리 데이터의 더하기 연산을 동시에 진행할 수 있다. 연산 명령 VA 00001 01000 01001 00010 10001를 예로 들어, 상기 명령은 벡터 0과 벡터 1이 VA 연산, 즉, 벡터 더하기 연산을 진행하는 것을 가리킨다. 연산 장치가 상기 벡터 더하기 명령을 실행하는 과정은,
명령 처리 유닛(12) 중의 호출 섹션(121)이 명령 캐시 유닛(11)에서 하나의 벡터 연산 명령, 즉, VA 00001 01000 01001 00010 10001를 호출하고 상기 명령을 명령 처리 유닛 중의 디코딩 섹션(12)으로 전송하는 S1;
디코딩 섹션(12)이 명령을 디코딩하고 상기 명령의 조작 코드 VA를 획득하는 것은 벡터 더하기 연산을 실행한다는 것을 가리키는데, 5 개 조작 도메인을 가지고 각각 연산 대기 벡터 vin0의 초기 주소와 길이, 벡터 vin1의 초기 주소와 길이, 연산 결과의 저장 주소를 가리키며, 상기 연산 명령을 명령 큐 섹션(123)에게 전송하는 S2;
명령 큐 섹션(123)에 있어서, 상기 명령의 조작 코드와 조작 도메인에 의거하여 연산 대기 데이터를 획득하되, 상기 명령의 조작 코드는 VA로서 즉시 벡터 더하기 논리 연산을 실행하고, 조작 도메인 1, 2, 3, 4에서 연산을 대기하는 데이터 주소와 데이터 길이, 즉, 벡터 vin0의 초기 주소 00001, 벡터 vin0의 길이 01000, 벡터 vin1의 초기 주소 01001, 벡터 vin1의 길이 00010를 획득하며; 즉, 벡터 vin0은 주소가 00001인 곳으로부터 시작해 길이가 8 개 주소 길이인 데이터, 즉, 주소가 00001~01000인 데이터를 판독하며; 벡터 vin1은 주소가 01001인 곳으로부터 시작해 길이가 8 개 주소 길이인 데이터를 판독하며; 이어서, 종속성 처리 유닛(13)에 전송해 데이터의 종속성을 분석, 판단하는 S3;
종속성 처리 유닛(13)에 있어서, 상기 명령과 이전에 실행 완료하지 않은 명령이 데이터 면에서 종속성이 존재하는 여부를 분석함으로써, 종속성이 존재하면 대기할 필요가 없고, 종속성이 존재하지 않으면 상기 명령을 저장 큐 유닛 내에 저장하고 그와 이전에 실행 완료하지 않은 데이터 사이에 다시 종속성이 존재하지 않을 때까지 대기하며, 명령을 연산 유닛에게 전송하는 S4;
종속성이 존재하지 않은 후, 상기 벡터 더하기 명령은 연산 유닛(30)에게 전송되고, 연산 유닛(30)은 필요한 데이터의 주소와 길이에 의거하여 데이터 임시 저장 유닛(22)에서 필요한 벡터를 호출하며, 이어서 연산 유닛에서 더하기 연산을 완료하는데, 여기에서, 연산 유닛(30)은 일회적으로 4 그룹 16자리 벡터의 더하기 연산만 처리할 수 있기 때문에 일회성으로 모든 데이터를 전부 연산 유닛에 발송해 연산을 진행할 수 없어 여러번으로 나누어 진행해야 하고, vin0과 vin1은 길이가 다르고 vin1의 길이가 비교적 짧으므로 vin1의 데이터를 순환 판독해야 하며, 도 6에서 도시하는 바와 같이, 첫번째로 연산 유닛(30)에 전송된 데이터는 vin0이 가리키는 앞 4 개 주소 길이의 데이터와 vin1이 가리키는 2개 주소 길이의 데이터로서, 즉, 발송한 데이터는 주소가 00001~00100과 01001~01010인 데이터인데, 여기에서 연산을 진행하는 데이터의 대응 관계는 주소가 00001인 데이터와 주소가 01001인 데이터에 대한 더하기 연산, 주소가 00010인 데이터와 주소가 01010인 데이터에 대한 더하기 연산, 주소가 00011인 데이터와 주소가 01001인 데이터에 대한 더하기 연산, 주소가 00100인 데이터와 주소가 01010인 데이터에 대한 더하기 연산이고, 연산이 완료된 후 두번째로 연산 유닛(30)에 전송된 데이터는 vin0이 가리키는 뒤 4 개 주소 길이의 데이터와 vin1이 가리키는 2개 주소 길이의 데이터로서, 즉, 주소가 00101~01000와 01001~01010인 데이터에 대해 더하기 연산을 실행하고 연산할 때의 대응 관계는 주소가 00101인 데이터와 주소가 01001인 데이터에 대한 더하기 연산, 주소가 00110인 데이터와 주소가 01010인 데이터에 대한 더하기 연산, 주소가 00111 내인 데이터와 주소가 01001인 데이터에 대한 더하기 연산, 주소가 01000인 데이터와 주소가 01010인 데이터에 대한 더하기 연산인 S5;
연산이 완료된 후 결과를 데이터 임시 저장 유닛(22) 중의 지정 주소인 10001에 기록하는 동시에, 명령 캐시 유닛(11) 중의 상기 벡터 더하기 명령을 제출하는 S6을 포함한다.
상기의 구체적인 실시예는 본 발명의 목적, 기술방안 및 유익한 효과를 더욱 상세하게 설명하기 위한 것이다. 상기 내용은 본 발명의 구체적인 실시예에 불과하므로 본 발명을 제한하지 않는다. 본 발명의 정신과 원칙 내에서 진행한 모든 수정, 동등한 치환, 개선 등은 모두 본 발명의 보호범위 내에 속한다.

Claims (12)

  1. 명령 모듈, 데이터 모듈과 연산 모듈을 포함하는 연산 장치에 있어서,
    상기 명령 모듈은 명령을 캐시하고 데이터 모듈과 연산 모듈에게 명령을 제공하는데 사용하고;
    상기 데이터 모듈은 명령 모듈 중의 명령에 의거하여 연산 모듈에게 연산 데이터를 제공하는 데 사용하며;
    상기 연산 모듈은 명령 모듈 중의 명령 및 데이터 모듈이 제공하는 연산 데이터에 의거하여 관련 연산을 진행하는데 사용하도록 구비되고,
    상기 명령 모듈은 명령 캐시 유닛, 명령 처리 유닛, 종속성 처리 유닛, 저장 큐 유닛을 포함하되, 여기에서,
    명령 캐시 유닛은 실행 대기 명령을 저장하는 데 사용하고,
    명령 처리 유닛은 명령 캐시 유닛으로부터 명령을 획득해 상기 명령을 처리하는 데 사용하며,
    종속성 처리 유닛은 상기 명령과 이전의 실행 중 명령이 같은 데이터를 엑세스하는 여부를 판단하는 데 사용하고;
    종속성 처리 유닛은 종속성 관계가 존재하면 상기 명령을 상기 저장 큐 유닛에 저장하고 이전의 실행 중 명령이 실행 완료한 후 다시 상기 명령을 연산 모듈에게 제공하며, 종속성 관계가 존재하지 않으면 직접 상기 명령을 연산 모듈에게 제공하는 것을 특징으로 하는 연산 장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 명령 처리 유닛은,
    명령 캐시 유닛에서 명령을 획득하는 데 사용하는 호출 섹션과;
    획득한 명령을 디코딩하는 데 사용하는 디코딩 섹션과;
    디코딩한 명령을 순서별로 저장하는 데 사용하는 명령 큐 섹션을 포함하는 것을 특징으로 하는 연산 장치.
  4. 제1항에 있어서,
    상기 데이터 모듈은 데이터 I/O 유닛과 데이터 임시 저장 유닛을 포함하되, 여기에서 데이터 I/O 유닛은 직접 메모리에서 연산 데이터를 판독하는 데 사용하고, 데이터 임시 저장 유닛은 연산 데이터를 저장해 상기 연산 데이터를 조정한 후 연산 모듈로 제공하는 데 사용하는 것을 특징으로 하는 연산 장치.
  5. 제4항에 있어서,
    데이터 임시 저장 유닛은 연산 데이터를 조정한 후 연산 모듈에 제공하는 데 사용되되,
    연산에 참여하는 2개 연산 데이터의 길이가 모두 연산 모듈의 연산 규모보다 작거나 또는 그와 같은 경우, 데이터 임시 저장 유닛은 직접 상기 2개 연산 데이터를 연산 모듈에게 제공하고;
    연산에 참여하는 2개 연산 데이터의 길이가 모두 연산 모듈의 연산 규모보다 큰 경우, 각 연산 데이터를 복수개의 길이가 모두 상기 연산 규모보다 작거나 또는 그와 같은 서브 연산 데이터로 분해하고 상기 서브 연산 데이터를 여러 번으로 나누어 상기 연산 모듈에게 제공하며;
    연산에 참여하는 2개 연산 데이터에 있어서, 1 개 연산 데이터의 길이가 연산 모듈의 연산 규모보다 크고 또 다른 연산 데이터의 길이가 연산 모듈의 연산 규모보다 작거나 또는 그와 같은 경우, 길이가 연산 규모보다 큰 연산 데이터를 복수개의 길이가 모두 연산 규모보다 작거나 또는 그와 같은 서브 연산 데이터로 분해하고 상기 복수개의 서브 연산 데이터와 길이가 연산 규모보다 작거나 또는 그와 같은 연산 데이터를 여러 번으로 나누어 상기 연산 모듈에게 제공하는 것을 포함하는 것을 특징으로 하는 연산 장치.
  6. 제1항에 있어서,
    상기 연산 데이터는 벡터이며, 상기 연산 모듈은 벡터 논리 연산 또는 벡터 사칙 연산을 실행하는 데 사용하는 것을 특징으로 하는 연산 장치.
  7. 제1항, 제3항 내지 제6항 중의 어느 한 항의 연산 장치의 조작 방법은
    명령을 명령 모듈 내에 캐시하는 S1;
    명령 모듈 중의 명령을 데이터 모듈에게 제공하고, 데이터 모듈은 상기 명령에 의거하여 연산 모듈에게 연산 데이터를 제공하는 S2;
    명령 모듈 중의 명령을 연산 모듈에게 제공하고 연산 모듈은 상기 명령과 데이터 모듈이 제공한 연산 데이터에 의거하여 연산을 실행하는 S3;
    을 포함하는 것을 특징으로 하는 연산장치의 조작 방법.
  8. 제7항에 있어서,
    상기 명령 모듈은 명령 캐시 유닛, 명령 처리 유닛, 종속성 처리 유닛, 저장 큐 유닛을 포함하고, 상기 단계 S1은,
    명령 캐시 유닛에 실행 대기 명령을 저장하는 S11;
    명령 처리 유닛은 명령 캐시 유닛에서 명령을 획득하고 상기 명령을 처리하는 S12;
    종속성 처리 유닛은 상기 명령과 이전의 실행 중 명령이 동등한 데이터를 엑세스하는 여부를 판단하되, 엑세스하면 종속성 처리 유닛은 상기 명령을 상기 저장 큐 유닛에 조정하고 이전의 실행 중 명령이 실행 완료한 후 다시 상기 명령을 연산 모듈에게 제공하고, 엑세스하지 않으면 직접 상기 명령을 연산 모듈에게 제공하는 S13;
    을 포함하는 것을 특징으로 하는 연산 장치의 조작 방법.
  9. 제8항에 있어서,
    상기 명령 처리 유닛은 호출 섹션, 디코딩 섹션과 명령 큐 섹션을 포함하되, 여기에서, 상기 단계 S12는,
    호출 섹션은 명령 캐시 유닛에서 명령을 획득하는 S121;
    디코딩 섹션은 획득한 명령을 디코딩하는 S122;
    명령 큐 섹션이 디코딩한 명령을 순서별로 저장하는 S123을 포함하는 것을 특징으로 하는 연산 장치의 조작 방법.
  10. 제7항에 있어서,
    상기 데이터 모듈은 데이터 I/O 유닛과 데이터 임시 저장 유닛을 포함하며, 여기에서, 상기 단계 S2는,
    데이터 I/O 유닛이 직접 메모리에서 연산 데이터를 판독하고 데이터 임시 저장 유닛에 저장하는 S21;
    데이터 임시 저장 유닛이 저장한 연산 데이터를 조정한 후, 연산 모듈에게 제공하는 S22를 포함하는 것을 특징으로 하는 연산 장치의 조작 방법.
  11. 제10항에 있어서,
    상기 단계 S22는,
    연산에 참여하는 2개 연산 데이터의 길이가 모두 연산 모듈의 연산 규모보다 작거나 또는 그와 같은 경우, 데이터 임시 저장 유닛은 직접 상기 2개 연산 데이터를 연산 모듈에게 제공하는 단계;
    연산에 참여하는 2개 연산 데이터의 길이가 모두 연산 모듈의 연산 규모보다 큰 경우, 각 연산 데이터를 복수개의 길이가 모두 상기 연산 규모보다 작거나 또는 그와 같은 서브 연산 데이터로 분해하고 상기 서브 연산 데이터를 여러 번으로 나누어 상기 연산 모듈에게 제공하는 단계;
    연산에 참여하는 2개 연산 데이터에 있어서, 1 개 연산 데이터의 길이가 연산 모듈의 연산 규모보다 크고, 또 다른 연산 데이터의 길이가 연산 모듈의 연산 규모보다 작거나 또는 그와 같은 경우, 길이가 연산 규모보다 큰 연산 데이터를 복수개의 길이가 모두 연산 규모보다 작거나 또는 그와 같은 서브 연산 데이터로 분해하고 상기 복수개의 서브 연산 데이터와 길이가 연산 규모보다 작거나 또는 그와 같은 연산 데이터를 여러 번으로 나누어 상기 연산 모듈에게 제공하는 단계를 포함하는 것을 특징으로 하는 연산 장치의 조작 방법.
  12. 제7항에 있어서,
    상기 연산 데이터는 벡터며, 상기 연산 모듈은 벡터 논리 연산 또는 벡터 사칙 연산을 실행하는 데 사용하는 것을 특징으로 하는 연산 장치의 조작 방법.
KR1020187034254A 2016-08-05 2017-07-17 연산 장치 및 그 조작 방법 KR102467544B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201610640115.6A CN107688466B (zh) 2016-08-05 2016-08-05 一种运算装置及其操作方法
CN201610640115.6 2016-08-05
PCT/CN2017/093161 WO2018024094A1 (zh) 2016-08-05 2017-07-17 一种运算装置及其操作方法

Publications (2)

Publication Number Publication Date
KR20190032282A KR20190032282A (ko) 2019-03-27
KR102467544B1 true KR102467544B1 (ko) 2022-11-16

Family

ID=61072478

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187034254A KR102467544B1 (ko) 2016-08-05 2017-07-17 연산 장치 및 그 조작 방법

Country Status (6)

Country Link
US (1) US20190235871A1 (ko)
EP (1) EP3495947B1 (ko)
KR (1) KR102467544B1 (ko)
CN (3) CN111857822B (ko)
TW (1) TWI752068B (ko)
WO (1) WO2018024094A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111258646B (zh) * 2018-11-30 2023-06-13 上海寒武纪信息科技有限公司 指令拆解方法、处理器、指令拆解装置及存储介质

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4135242A (en) * 1977-11-07 1979-01-16 Ncr Corporation Method and processor having bit-addressable scratch pad memory
JPS5994173A (ja) * 1982-11-19 1984-05-30 Hitachi Ltd ベクトル・インデツクス生成方式
NL9400607A (nl) * 1994-04-15 1995-11-01 Arcobel Graphics Bv Dataverwerkingscircuit, vermenigvuldigingseenheid met pijplijn, ALU en schuifregistereenheid ten gebruike bij een dataverwerkingscircuit.
US6088783A (en) * 1996-02-16 2000-07-11 Morton; Steven G DPS having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word
JP3525209B2 (ja) * 1996-04-05 2004-05-10 株式会社 沖マイクロデザイン べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
WO2000017788A1 (en) * 1998-09-22 2000-03-30 Vectorlog Devices and techniques for logical processing
JP3779540B2 (ja) * 2000-11-08 2006-05-31 株式会社ルネサステクノロジ 複数レジスタ指定が可能なsimd演算方式
WO2002084451A2 (en) * 2001-02-06 2002-10-24 Victor Demjanenko Vector processor architecture and methods performed therein
US6901422B1 (en) * 2001-03-21 2005-05-31 Apple Computer, Inc. Matrix multiplication in a vector processing system
US6922716B2 (en) * 2001-07-13 2005-07-26 Motorola, Inc. Method and apparatus for vector processing
CN1142484C (zh) * 2001-11-28 2004-03-17 中国人民解放军国防科学技术大学 微处理器向量处理方法
JP3886870B2 (ja) * 2002-09-06 2007-02-28 株式会社ルネサステクノロジ データ処理装置
FI118654B (fi) * 2002-11-06 2008-01-31 Nokia Corp Menetelmä ja järjestelmä laskuoperaatioiden suorittamiseksi ja laite
US7146486B1 (en) * 2003-01-29 2006-12-05 S3 Graphics Co., Ltd. SIMD processor with scalar arithmetic logic units
CN100545804C (zh) * 2003-08-18 2009-09-30 上海海尔集成电路有限公司 一种基于cisc结构的微控制器及其指令集的实现方法
CN1277182C (zh) * 2003-09-04 2006-09-27 台达电子工业股份有限公司 具有辅助处理单元的可编程逻辑控制器
JP4349265B2 (ja) * 2004-11-22 2009-10-21 ソニー株式会社 プロセッサ
US7594102B2 (en) * 2004-12-15 2009-09-22 Stmicroelectronics, Inc. Method and apparatus for vector execution on a scalar machine
US20070283129A1 (en) * 2005-12-28 2007-12-06 Stephan Jourdan Vector length tracking mechanism
KR100859185B1 (ko) * 2006-05-18 2008-09-18 학교법인 영광학원 유한체 GF(2m)상의 곱셈기
CN100470571C (zh) * 2006-08-23 2009-03-18 北京同方微电子有限公司 一种用于密码学运算的微处理器内核装置
US8667250B2 (en) * 2007-12-26 2014-03-04 Intel Corporation Methods, apparatus, and instructions for converting vector data
JP5481793B2 (ja) * 2008-03-21 2014-04-23 富士通株式会社 演算処理装置および同装置の制御方法
US20100115234A1 (en) * 2008-10-31 2010-05-06 Cray Inc. Configurable vector length computer processor
CN101399553B (zh) * 2008-11-12 2012-03-14 清华大学 一种可在线编程的准循环ldpc码编码器装置
CN101826142B (zh) * 2010-04-19 2011-11-09 中国人民解放军信息工程大学 一种可重构椭圆曲线密码处理器
US8645669B2 (en) * 2010-05-05 2014-02-04 International Business Machines Corporation Cracking destructively overlapping operands in variable length instructions
CN101986265B (zh) * 2010-10-29 2013-09-25 浙江大学 一种基于Atom处理器的指令并行分发方法
CN102799800B (zh) * 2011-05-23 2015-03-04 中国科学院计算技术研究所 一种安全加密协处理器及无线传感器网络节点芯片
CN102253919A (zh) * 2011-05-25 2011-11-23 中国石油集团川庆钻探工程有限公司 基于gpu和cpu协同运算的并行数值模拟方法和***
CN102262525B (zh) * 2011-08-29 2014-11-19 孙瑞玮 基于矢量运算的矢量浮点运算装置及方法
CN107545066B (zh) * 2011-12-08 2021-01-15 甲骨文国际公司 用于在易失性存储器内保持关系型数据的列向量的技术
CN102495719B (zh) * 2011-12-15 2014-09-24 中国科学院自动化研究所 一种向量浮点运算装置及方法
CN102750133B (zh) * 2012-06-20 2014-07-30 中国电子科技集团公司第五十八研究所 支持simd的32位三发射的数字信号处理器
CN103699360B (zh) * 2012-09-27 2016-09-21 北京中科晶上科技有限公司 一种向量处理器及其进行向量数据存取、交互的方法
CN103778069B (zh) * 2012-10-18 2017-09-08 深圳市中兴微电子技术有限公司 高速缓冲存储器的高速缓存块长度调整方法及装置
US9557993B2 (en) * 2012-10-23 2017-01-31 Analog Devices Global Processor architecture and method for simplifying programming single instruction, multiple data within a register
CN107577614B (zh) * 2013-06-29 2020-10-16 华为技术有限公司 数据写入方法及内存***
CN104375993B (zh) * 2013-08-12 2018-02-02 阿里巴巴集团控股有限公司 一种数据处理的方法及装置
CN103440227B (zh) * 2013-08-30 2016-06-22 广州天宁信息技术有限公司 一种支持并行运行算法的数据处理方法及装置
US10331583B2 (en) * 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
CN104636397B (zh) * 2013-11-15 2018-04-20 阿里巴巴集团控股有限公司 用于分布式计算的资源分配方法、计算加速方法以及装置
US10768930B2 (en) * 2014-02-12 2020-09-08 MIPS Tech, LLC Processor supporting arithmetic instructions with branch on overflow and methods
US10452971B2 (en) * 2015-06-29 2019-10-22 Microsoft Technology Licensing, Llc Deep neural network partitioning on servers
US10970617B2 (en) * 2015-08-21 2021-04-06 Institute Of Automation Chinese Academy Of Sciences Deep convolutional neural network acceleration and compression method based on parameter quantification
US10482372B2 (en) * 2015-12-23 2019-11-19 Intel Corporation Interconnection scheme for reconfigurable neuromorphic hardware
EP3289477B1 (en) * 2016-01-30 2021-08-25 Hewlett Packard Enterprise Development LP Dot product engine with negation indicator

Also Published As

Publication number Publication date
KR20190032282A (ko) 2019-03-27
US20190235871A1 (en) 2019-08-01
CN111857822A (zh) 2020-10-30
CN107688466A (zh) 2018-02-13
EP3495947A1 (en) 2019-06-12
CN107688466B (zh) 2020-11-03
TW201805802A (zh) 2018-02-16
WO2018024094A1 (zh) 2018-02-08
CN112214244A (zh) 2021-01-12
CN111857822B (zh) 2024-04-05
EP3495947B1 (en) 2022-03-30
TWI752068B (zh) 2022-01-11
EP3495947A4 (en) 2020-05-20

Similar Documents

Publication Publication Date Title
CN111310910B (zh) 一种计算装置及方法
CN109240746B (zh) 一种用于执行矩阵乘运算的装置和方法
CN111857820B (zh) 一种用于执行矩阵加/减运算的装置和方法
WO2017185384A1 (zh) 一种用于执行向量循环移位运算的装置和方法
WO2017185395A1 (zh) 一种用于执行向量比较运算的装置和方法
WO2017185393A1 (zh) 一种用于执行向量内积运算的装置和方法
CN111651200B (zh) 一种用于执行向量超越函数运算的装置和方法
CN107315717B (zh) 一种用于执行向量四则运算的装置和方法
CN111651206B (zh) 一种用于执行向量外积运算的装置和方法
WO2017185385A1 (zh) 一种用于执行向量合并运算的装置和方法
WO2017185404A1 (zh) 一种用于执行向量逻辑运算的装置及方法
WO2017185419A1 (zh) 一种用于执行向量最大值最小值运算的装置和方法
KR102467544B1 (ko) 연산 장치 및 그 조작 방법
WO2017185388A1 (zh) 一种用于生成服从一定分布的随机向量的装置和方法
CN115437603B (zh) 用于生成随机数的方法及其相关产品

Legal Events

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