KR102359347B1 - 매트릭스 저장 방법, 매트릭스 액세스 방법, 장치 및 전자 기기 - Google Patents

매트릭스 저장 방법, 매트릭스 액세스 방법, 장치 및 전자 기기 Download PDF

Info

Publication number
KR102359347B1
KR102359347B1 KR1020200076140A KR20200076140A KR102359347B1 KR 102359347 B1 KR102359347 B1 KR 102359347B1 KR 1020200076140 A KR1020200076140 A KR 1020200076140A KR 20200076140 A KR20200076140 A KR 20200076140A KR 102359347 B1 KR102359347 B1 KR 102359347B1
Authority
KR
South Korea
Prior art keywords
data block
matrix
data
chip memory
access
Prior art date
Application number
KR1020200076140A
Other languages
English (en)
Other versions
KR20210086937A (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 KR20210086937A publication Critical patent/KR20210086937A/ko
Application granted granted Critical
Publication of KR102359347B1 publication Critical patent/KR102359347B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/781On-chip cache; Off-chip memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8061Details on data memory access
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/454Vector or matrix data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Biophysics (AREA)
  • Computational Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Neurology (AREA)
  • Molecular Biology (AREA)
  • Algebra (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Static Random-Access Memory (AREA)
  • Complex Calculations (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

본 출원은, 매트릭스 저장 방법, 매트릭스 액세스 방법, 장치, 및 전자 기기를 제공하며, 데이터 액세스 및 저장 기술 분야에 관한 것이다. 그 중, 저장 방법은, 미리 설정된 N행ХM열의 분할 입도에 따라 매트릭스를 복수 개의 데이터 블록으로 분할하고; 상기 복수 개의 데이터 블록은 적어도 하나의 N행ХM열의 데이터 블록인 제1 데이터 블록을 포함하며; 상기 매트릭스의 열 수가 상기 M의 정수배가 아닐 경우, 상기 복수의 데이터 블록은 적어도 하나의 N행ХP열의 제2 데이터 블록을 더 포함하며, 상기 제2 데이터 블록은 이웃하는 상기 제1 데이터 블록과 행이 정렬되고, 제1 데이터 블록 및 제2 데이터 블록 중의 데이터를 연속적으로 오프-칩 메모리에 저장한다. 본 출원의 일 실시예는 데이터 블록을 완정하고 연속적으로 오프-칩 메모리에 저장하는 것을 실현할 수 있으며, 매트릭스의 데이터 블록을 액세스 해야 할 시, 연속적으로 오프-칩 메모리에 저장되어 있는 데이터 블록에 대하여 완정한 판독을 진행할 수 있어, 매트릭스의 프로세싱 효율을 향상하였다.

Description

매트릭스 저장 방법, 매트릭스 액세스 방법, 장치 및 전자 기기{MATRIX STORAGE METHOD, MATRIX ACCESS METHOD, APPARATUS AND ELECTRONIC DEVICE}
본 출원은 데이터 처리 기술, 특히 데이터 액세스 및 저장 기술 분야에 관한 것이며, 구체적으로 매트릭스 저장 방법, 매트릭스 액세스 방법, 장치, 및 전자 기기에 관한 것이다.
신경망(Neural Network)은 음성 식별, 영상 식별 등과 같은 인공 지능 시나리오에 널리 사용되고 있는데, 신경망의 연산 과정은 보통 대량의 매트릭스 동작을 포함한다. 신경망 연산 과정에 필요한 저장 공간이 증가함에 따라, NPU (Neural-network Processing Unit,신경망 프로세서)는 온-칩 메모리(on-chip storage) 외에, 일반적으로 오프-칩 메모리(off-chip storage)도 설치되어 있다. 이렇게, 처리할 매트릭스를 오프-칩 메모리에 먼저 저장하고, 처리 시에, 오프-칩 메모리에 저장된 매트릭스를 필요에 따라 온-칩 메모리에 로딩하도록 할 수 있다. 현재, 매트릭스는 일반적으로 행 혹은 열 저장 방식으로 저장되며, NPU는 매트릭스 연산을 진행할 때 종래의 저장 방식에 기초하여 데이터를 로딩하지 않기에, NPU의 매트릭스 처리 효율이 비교적 낮다.
본 출원은, NPU 매트릭스 처리 효율이 낮은 문제를 해결하기 위한 매트릭스 저장 방법, 매트릭스 액세스 방법, 장치, 및 전자 기기를 제공한다.
상기한 기술적 문제를 해결하기 위해, 본 출원은 다음과 같이 실현된다.
제1 측면에 있어서, 본 출원은 매트릭스 저장 방법을 제공하며, 상기 방법은:
미리 설정된 N행ХM열의 분할 입도에 따라 매트릭스를 복수 개의 데이터 블록으로 분할하되, 상기 N과 M 중 적어도 하나는 1보다 크고, 상기 복수 개의 데이터 블록은 적어도 하나의 N행ХM열의 데이터 블록인 제1 데이터 블록을 포함하며, 상기 매트릭스의 열 수가 상기 M의 정수배가 아닐 경우, 상기 복수 개의 데이터 블록은 적어도 하나의 N행ХP열의 제2 데이터 블록을 더 포함하며, 상기 제2 데이터 블록은 이웃하는 상기 제1 데이터 블록과 행이 정렬되고, 상기 P는 상기 M보다 작은 단계;
각각의 상기 제1 데이터 블록 중의 데이터를 오프-칩 메모리(off chip memory)에 연속적으로 저장하며, 또한 각각의 상기 제2 데이터 블록 중의 데이터를 상기 오프-칩 메모리에 연속적으로 저장하는 단계를 포함한다.
선택적으로, 상기 매트릭스의 행 수가 상기 N의 정수배가 아닐 경우, 상기 복수 개의 데이터 블록은 또한 적어도 하나의 L행ХS열의 제3 데이터 블록을 더 포함하며, 그 중, 상기 L은 N보다 작다.
선택적으로, 상기 제3 데이터 블록의 수량은 1이고, 상기 S는 상기 매트릭스의 열 수와 같다.
선택적으로, 상기 방법은 각각의 상기 제3 데이터 블록 중의 데이터를 연속적으로 상기 오프-칩 메모리에 저장하는 단계를 더 포함한다.
선택적으로, 상기 오프-칩 메모리가 복수 개의 저장 채널을 포함하는 경우, 상기 분할 입도는 단일 저장 채널의 저장 입도의 정수배이다.
제2 측면에 있어서, 본 출원은 매트릭스 액세스 방법을 제공하며, 상기 매트릭스는 제1 측면 중 어느 하나의 매트릭스 저장 방법을 이용하여 오프-칩 메모리에 저장된 매트릭스이며, 상기 방법은,
상기 매트릭스에 대한 액세스 요청을 수신하되, 상기 액세스 요청은 상기 매트릭스의 액세스 파라미터를 포함하는 단계;
상기 액세스 파라미터에 대응하는 데이터 블록이 완정한 제1 데이터 블록 또는 완정한 제2 데이터 블록을 포함하는 경우, 오프-칩 메모리로부터 상기 데이터 블록의 데이터를 판독하는 단계;
상기 액세스 파라미터에 대응하는 데이터 블록이 불완정한 제1 데이터 블록 또는 불완정한 제2 데이터 블록을 포함하는 경우, 상기 오프-칩 메모리로부터 상기 데이터 블록의 데이터를 판독하는 것을 금지하는 단계를 포함한다.
제3 측면에 있어서, 본 출원은 매트릭스 저장 장치를 제공하며, 상기 장치는 분할 모듈 및 제1 저장 모듈을 포함하며,
상기 분할 모듈은, 미리 설정된 N행ХM열의 분할 입도에 따라 매트릭스를 복수 개의 데이터 블록으로 분할하기 위한 것이고, 상기 N과 M중 적어도 하나는 1보다 크며, 상기 복수 개의 데이터 블록은 적어도 하나의 N행ХM열의 데이터 블록인 제1 데이터 블록을 포함하며, 상기 매트릭스의 열 수가 상기 M의 정수배가 아닐 경우, 상기 복수 개의 데이터 블록은 적어도 하나의 N행ХP열의 제2 데이터 블록을 더 포함하며, 상기 제2 데이터 블록은 이웃하는 상기 제1 데이터 블록과 행이 정렬되고, 상기 P는 상기 M보다 작으며;
상기 제1 저장 모듈은, 각각의 상기 제1 데이터 블록 중의 데이터를 오프-칩 메모리에 연속적으로 저장하고, 또한 각각의 상기 제2 데이터 블록 중의 데이터를 상기 오프-칩 메모리에 연속적으로 저장하기 위한 것이다.
선택적으로, 상기 매트릭스의 행 수가 상기 N의 정수배가 아닐 경우, 상기 복수 개의 데이터 블록은 또한 적어도 하나의 L행ХS열의 제3 데이터 블록을 더 포함하고, 그 중, 상기 L은 N보다 작다.
선택적으로, 상기 제3 데이터 블록의 수량은 1이고, 상기 S는 상기 매트릭스의 열 수와 같다.
선택적으로, 상기 장치는:
각각의 상기 제3 데이터 블록 중의 데이터를 연속적으로 상기 오프-칩 메모리에 저장하기 위한 제2 저장 모듈을 더 포함한다.
선택적으로, 상기 오프-칩 메모리가 복수 개의 저장 채널을 포함하는 경우, 상기 분할 입도는 단일 저장 채널의 저장 입도의 정수배이다.
제4 측면에 있어서, 본 출원은 제3 측면 중의 어느 하나에 따른 매트릭스 저장 장치에 의해 저장된 매트릭스를 액세스하기 위한 매트릭스 액세스 장치를 제공하며, 상기 장치는 수신 모듈, 판독 모듈, 제어 모듈을 포함하며,
상기 수신 모듈은, 상기 매트릭스에 대한 액세스 요청을 수신하기 위한 것이고, 상기 액세스 요청은 상기 매트릭스의 액세스 파라미터를 포함하고;
상기 판독 모듈은, 상기 액세스 파라미터에 대응하는 데이터 블록이 완정한 제1 데이터 블록 또는 완정한 제2 데이터 블록을 포함하는 경우, 오프-칩 메모리로부터 상기 데이터 블록의 데이터를 판독하기 위한 것이고,
상기 제어 모듈은, 상기 액세스 파라미터에 대응하는 데이터 블록이 불완정한 제1 데이터 블록 또는 불완정한 제2 데이터 블록을 포함하는 경우, 상기 오프-칩 메모리로부터 상기 데이터 블록의 데이터를 판독하는 것을 금지하기 위한 것이다.
제5 측면에 있어서, 본 출원은는 전자 기기를 제공하며, 상기 전자 기기는:
적어도 하나의 프로세서; 및
상기 적어도 하나의 프로세서와 통신 연결되는 메모리를 포함하며,
상기 메모리는 상기 적어도 하나의 프로세서에서 수행될 명령을 저장하며, 상기 명령은 상기 적어도 하나의 프로세서에서 수행되여, 상기 적어도 하나의 프로세서로 하여금 제1 측면 중의 어느 한 방법에서 제공하는 방법을 수행하게 하기 위한 것이다.
제6 방면에 있어서, 본 출원은 컴퓨터 명령을 저장하는 비일시적 컴퓨터 판독가능 저장 매체를 제공하며, 상기 컴퓨터 명령은 상기 컴퓨터가 제1 측면 중 어느 한 방법을 수행하도록 하는 것을 특징으로 한다.
본 출원의 각 실시예의 장점 혹은 유익한 효과는 이하의 구체적인 실시예와 결합하여 상세하게 설명한다.
도면은 본 기술적 수단에 대한 이해를 돕기 위한 것이며, 본 출원을 한정하지 않는다.
도 1은 본 출원에 따른 NPU의 구조 블록도이다.
도 2는 본 출원의 실시예에 따른 매트릭스 저장 방법의 흐름 예시도이다.
도 3은 본 출원에 따른 매트릭스 분할의 예시도 중의 첫번째 예시도이다.
도 4는 본 출원에 따른 매트릭스 분할의 예시도 중의 두번째 예시도이다.
도 5는 본 출원에 따른 매트릭스 분할의 예시도 중의 세번째 예시도이다.
도 6은 본 출원에 따른 복수의 채널을 집적한 오프-칩 메모리의 NPU 구조 예시도이다.
도 7은 기존의 매트릭스 저장 방식의 예시도이다.
도 8은 본 출원의 실시예 2에 따른 매트릭스 액세스 방법의 흐름 예시도이다.
도 9는 본 출원의 실시예에 따른 매트릭스 액세스 과정의 예시도이다.
도 10은 본 출원의 실시예에 따른 매트릭스 저장 장치의 구조 예시도이다.
도 11은 본 출원의 실시예에 따른 매트릭스 액세스 장치의 구조 예시도이다.
도 12는 본 출원의 실시예에 따른 매트릭스 저장 방법을 실현하기 위한 전자 기기의 블록도이다.
도 13은 본 출원의 실시예에 따른 매트릭스 액세스 방법을 실현하기 위한 전자 기기의 블록도이다.
이하에는 첨부 도면과 결합하여 본 출원의 예시적인 실시예에 대해 설명한다. 그 중, 본 실시예의 각종 세부적인 사항을 포함하여 쉽게 이해할 수 있도록 도모를 주는데, 이는 단지 실시예일뿐이라는 것은 이해되어야 한다. 때문에, 당업자들은 여기에 기재되어 있는 각종 개변 및 수정과 관련하여 본 출원의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다는 것은 이해되어야 한다. 또한, 더욱 명확하고 간결하게 설명하기 위하여, 후술하는 묘사중에는 공지된 기능 및 구조에 대한 묘사를 설명으로부터 생략한다.
실시예 1:
본 출원은 매트릭스 저장 방법을 제공하며, 상기 방법은 매트릭스 저장 장치에 이용될 수 있다. 예를 들면, 상기 방법은 NPU의 프로세서에 응용될 수 있다. 도 1은 전형적인 NPU의 구조 블록도이며, 도 1에서 예시하다 싶이, NPU는 일반적으로 제어 유닛, 연산 유닛, 온-칩 메모리, DMA(Direct Memory Access,직접 메모리 액세스), MC(Memory Controller,메모리 제어기) 및 오프-칩 메모리를 포함한다. NPU가 동작시, DMA는 MC에 액세스 요청을 송신하고, MC는 오프-칩 메로리를 액세스하여 신경망 모델 및 처리할 데이터를 획득하며, DMA로부터 신경망 모델 및 처리할 데이터를 온-칩 메모리내에 저장하고, 그 후, 연산 유닛은 온-칩 메모리에 액세스 하여 데이터를 획득하여 연산을 수행하고, 연산 결과는 온-칩 메모리 내에 저장되고 DMA로부터 오프-칩 메모리로 반환할 수 있다. 상기 제어 유닛은 DMA 및 연산 유닛의 동작을 제어하기 위한 것이다.
온-칩 메모리의 공간이 한정되었기 때문에, NPU가 매트릭스 연산을 수행할 경우, 일반적으로 전체 행이나 전체 열 방식을 채택하여 매트릭스에서의 데이터를 로딩하는 것이 아니라, 블록 방식으로 매트릭스에서의 데이터를 로딩(loading)한다. 즉, 상술한 처리할 데이터는 일반적으로 매트릭스의 어느 한 행의 데이터 블록 혹은 어느 한 열의 데이터 블록이 아니다. 따라서, 종래의 행 혹은 열 방식으로 매트릭스를 저장하면, 상술한 처리할 데이터가 오프-칩 메모리의 어드레스 공간에서의 연속성이 비교적 불량하여, NPU의 매트릭스 처리 효율이 낮아지게 된다.
이에 따라, 본 출원은 NPU의 매트릭스 처리 효율을 증가시키기 위해 매트릭스 저장 방법을 제공한다.
도 2에 도시된 바와 같이, 매트릭스 저장 방법은 아래 단계들을 포함한다.
단계 101: 미리 설정된 N행ХM열의 분할 입도에 따라 매트릭스를 복수 개의 데이터 블록으로 분할하고, 상기 N과 M 중 적어도 하나는 1보다 크며; 그 중, 상기 복수 개의 데이터 블록은 적어도 하나의 N행ХM열의 데이터 블록인 제1 데이터 블록을 포함하며; 상기 매트릭스의 열 수가 상기 M의 정수배가 아닐 경우, 상기 복수 개의 데이터 블록은 적어도 하나의 N행ХP열의 제2 데이터 블록을 더 포함하며, 상기 제2 데이터 블록은 이웃하는 상기 제1 데이터 블록과 행이 정렬되고, 상기 P는 상기 M보다 작다.
상술한 매트릭스는 오프-칩 메모리에 저장될 매트릭스 혹은 오프-칩 메모리에 저장될 필요가 있는 매트릭스를 의미하는 것으로 이해되며, 상기 단계 이전에 매트릭스 저장 장치는 상기 매트릭스를 미리 획득할 수 있고, 상기 매트릭스의 크기는 한정되지 않으며, 상기 매트릭스는 A행ХB열의 매트릭스일 것으로 가정된다.
쉽게 이해해야 될 것은, 매트릭스의 행 수 및 열 수는 모두 양의 정수이고, 분할 입도의 행 수 및 열 수뿐만 아니라, 각 데이터 블록의 행 수 및 열 수는 모두 양의 정수이다.
본 출원에서, 용어 "분할"은 데이터 블록을 분할하는 것, 즉 매트릭스를 N행ХM열의 분할 입도에 따라 복수 개의 데이터 블록으로 분할하는 것으로 이해할 수 있다. 용어 "분할 입도" 는 블록의 단위 크기로 이해할 수 있으며, 매트릭스의 행 수는 N의 정수배이고, 열 수는 M 의 정수배일 경우, 분할 입도에 따라 분할되며, 매트릭스는 복수 개의 데이터 블록으로 평균 분할되고, 각 데이터 블록의 크기는 분할 입도와 동일하다. 본 출원에서는, 데이터 블록 사이즈가 분할 입도와 동일한 데이터 블록을 제1 데이터 블록 혹은 베이스 데이터 블록이라고 한다.
도 3은 매트릭스 크기가 바로 분할 입도의 정수배인 실시예를 도시하었다. 도 3에서 예시하다 싶이, 12Х1024의 매트릭스를 예를 들면, 분할 입도가 4Х256인 것으로 가정했을 때, 매트릭스는 12개의 데이터 블록으로 분할될 수 있다. 즉, 데이터 블록 a 내지 데이터 블록 l으로 분할될 수 있다. 이 12개의 데이터 블록은 제 1 데이터 블록(혹은 베이스 데이터 블록) 이다. 각 제1 데이터 블록의 크기는 모두 4Х256이며, 각 제1 데이터 블록에 의해 점유되는 어드레스 공간의 크기는 모두 1KB이다. 그 중, 데이터 블록 a에 의해 점유되는 어드레스 공간은 0~1K의 어드레스, 데이터 블록 b에 의해 점유되는 어드레스 공간은 1K~2K의 어드레스, 데이터 블록 c에 의해 점유되는 어드레스 공간은 2K~3K의 어드레스 등이다.
그 외, 부분 실제 상황에서, 매트릭스의 사이즈는 분할 입도의 정수배가 아니고, 예를 들어, 매트릭스의 열 수 B가 M의 정수배가 아니거나, 혹은 매트릭스의 행 수 A가 N의 정수배가 아니다. 이로써, 매트릭스는 도 3 과 같이 마침 여러개의 제 1 데이터 블록으로 평균 분할되지 않는다. 이런 시나리오에 대해서는, 도 4에 도시된 분할 방법이 제공되며, 12Х1152의 매트릭스를 예를 들면, 분할 입도가 4Х256이라고 가정하고, 매트릭스가 균등하게 분할되지 않고, 매트릭스의 ((0,0), (11, 1023)) 의 부분에 대하여, 도 3에 도시된 분할 방식을 이용하여 12개의 제 1 데이터 블록으로 평균적으로 분할할 수 있다. 즉 데이터 블록 a 내지 데이터 블록 d, 데이터 블록 f 내지 데이터 블록 i, 데이터 블록 k 내지 데이터 블록 n으로 분할할 수 있다. 매트릭스의 ((0, 1024), (11, 1151)) 의 부분에 대해서는, 3개의 제 2 데이터 블록, 즉 데이터 블록 e, 데이터 블록 j 및 데이터 블록 o로 분할할 수 있다. 각 제2 데이터 블록은 인접한 제1 데이터 블록과 정렬되어 있으므로, 제2 데이터 블록은 정렬 데이터 블록으로 지칭될 수 있다. 각 제2 데이터 블록의 크기는 4Х128이고, 각 제 2 데이터 블록이 점유할 어드레스 공간의 크기는 모두 0.5kB이다.
본 출원에 있어서, 분할 입도 크기는 수요에 따라 미리 설정될 수 있으며, 예를 들어, 매트릭스의 액세스 수요에 따라 미리 설정될 수 있고; 오프-칩 메모리의 인터리빙 입도(interleaving granularity)에 따라 분할 입도를 미리 설정될 수도 있으며; 또한, 분할 입도는 경험 파라미터에 따라 미리 설정될 수도 있다.
단계 102: 상기 매트릭스 저장 방법은, 각각의 상기 제1 데이터 블록 중의 데이터를 오프-칩 메모리에 연속적으로 저장하며, 또한, 상기 각각의 제2 데이터 블록 중의 데이터를 상기 오프-칩 메모리에 연속적으로 저장한다.
매트릭스을 분할한 후에, 다음의 매트릭스 데이터 블록의 액세스 과정에서, 액세스 될 데이터가 오프-칩 메모리에서의 어드레스 공간의 연속성을 향상시킬 수 있도록 하기 위하여, 상기 단계에서는, 각 제1 데이터 블록중의 데이터를 오프-칩 메모리에 연속적으로 저장한다. 또한, 데이터 블록에 제2 데이터 블록이 포함된 시나리오에 대해, 각 제2 데이터 블록중의 데이터를 오프-칩 메모리에 연속적으로 저장한다.
데이터 블록중의 데이터를 오프-칩 메모리에 연속적으로 저장한다는 것은, 하나의 분할된 블록내의 데이터가 어드레스 공간에서 연속적인 어드레스를 점유하는 것을 실현하기 위하여, 데이터 블록의 데이터에 대해 어드레스 리맵핑하는 것으로 이해할 수 있다. 상술한 제1 데이터 블록 및 제2 데이터 블록은 어드레스 리맵핑된 데이터 블록으로 이해할 수 있다.
설명이 필요한 것은, 각각의 제1 데이터 블록 또는 제2 데이터 블록중의 데이터를 오프-칩 메모리에 연속적으로 저장할 때, 동일한 데이터 블록에서의 데이터가 연속적으로 저장될 것만을 요구하며, 상이한 데이터 블록 사이의 데이터가 연속적으로 저장될 필요가 있는지의 여부는 한정되어 있지 않는다. 예를 들면, 도 4에서, 데이터 블록 a내의 데이터는 오프-칩 메모리의 일련의 연속적인 어드레스를 점유하고 있으며, 데이터 블록 b내의 데이터도 오프-칩 메모리의 일련의 연속적인 어드레스를 점유하고 있는바, 데이터 블록 a 및 데이터 블록 b내의 데이터가 연속적인 어드레스를 점유하고 있는지 여부는 한정되지 않는다.
저장될 매트릭스를 상기와 같은 방식으로 오프-칩 메모리에 저장한 후에, 이 매트릭스에 대해 액세스가 필요할 경우, 액세스될 데이터 블록은 완정한 제1 데이터 블록 또는 완정한 제2 데이터 블록(제2 데이터 블록이 존재할 경우)을 포함할 필요가 있으며, 이로써 액세스한 데이터가 어드레스 공간에서의 연속성이 향상될 수 있다. 예를 들어, 도 3에 도시된 바와 같이, 액세스된 데이터 블록이 데이터 블록 c, 데이터 블록 d, 데이터 블록 g 및 데이터 블록 h를 포함하면, 즉 네 개의 완정한 제1 데이터 블록을 포함한다. 또 예를 들어, 도 4에 도시된 바와 같이, 액세스된 데이터 블록이 데이터 블록 d, 데이터 블록 e, 데이터 블록 i, 데이터 블록 j, 데이터 블록 n 및 데이터 블록 o를 포함하면, 즉, 세 개의 완정한 제1 데이터 블록 및 세 개의 완정한 제2 데이터 블록을 포함한다.
본 출원에서 제공하는 상술한 실시예들은 하기의 장점과 유익한 효과를 구비하고 있다. 미리 설정된 분할 입도에 따라 매트릭스를 분할하고 분할된 제1 데이터 블록 및 제2 데이터 블록(제2 데이터 블록이 존재할 경우) 중의 데이터를 오프-칩 메모리에 연속적으로 저장함으로써, 데이터 블록을 완정하고 연속적으로 오프-칩 메모리에 기록하는 것을 실현 할 수 있으며, 매트릭스의 데이터 블록에 대한 액세스가 필요할 때, 오프-칩 메모리에 연속적으로 저장된 데이터 블록에 대해 완정한 판독을 할 수 있고, 따라서 액세스 된 데이터가 어드레스 공간에서의 연속성이 향상될 수 있다. 액세스한 데이터가 어드레스 공간에서의 연속성이 향상되기 때문에, 데이터의 판독 속도가 증가될 수 있고, 따라서 액세스 효율이 향상될수 있다. 또한, 본 출원에서 제공하는 상술한 실시예들은 매트릭스의 처리 효율을 증가시킬 수 있다.
선택적으로, 상기 매트릭스의 행 수가 상기 N의 정수배가 아니면, 상기 복수의 데이터 블록은 또한 적어도 하나의 L행ХS열의 제3 데이터 블록을 더 포함하되 상기 L은 상기 N보다 작다.
부분 실제 상황에서, 매트릭스의 행 수 A는 N의 정수배가 아니다. 이로써, 매트릭스는 도 3 또는 도 4와 같이 마침 제 1 데이터 블록과 제 2 데이터 블록(제 2 데이터 블록이 존재하는 경우)으로 분할되지 않는다. 이때, 매트릭스가 제1 데이터 블록 및 제2 데이터 블록으로 분할된 후에, 나머지 데이터 블록을 적어도 하나의 제3 데이터 블록으로 분할하고, 각 제3 데이터 블록의 행 수 L은 나머지 데이터 블록의 행 수이며, 열 수 S의 값은 한정되지 않으며, 예를 들면 S의 값은 M이거나, M 이하 혹은 M 이상일 수 있다. S의 값이 M인 경우, 각 제3 데이터 블록은 인접한 제1 데이터 블록의 열과 정렬된다.
매트릭스가 제1 데이터 블록 및 제2 데이터 블록으로 분할된 후에, 나머지 데이터 블록의 행 수는 일반적으로 비교적 작으며, 동일하게, 제3 데이터 블록의 행 수도 비교적 작기 때문에, 제3 데이터 블록의 저장 방식은 본 출원에서는 한정하지 않는다. 즉 제3 데이터 블록은 임의의 가능한 저장 방식을 이용하여 오프-칩 메모리에 저장될 수 있다. 예를 들면, 제3 데이터 블록에 어드레스 리맵핑을 실행하거나, 또는 제3 데이터 블록에 어드레스 리맵핑을 실행하지 않아도 된다.
제3 데이터 블록에 어드레스 리맵핑이 실행되면, 상기 각 제3 데이터 블록 중의 데이터는 오프-칩 메모리에 연속적으로 저장될수 있으며, 이때, 액세스될 데이터 블록이 제3 데이터 블록을 포함할 때, 상기 액세스된 데이터가 어드레스 공간에서의 연속성이 더 향상될 수 있다. 제3 데이터 블록에 대해 어드레스 리맵핑이 수행되지 않으면, 제3 데이터 블록은 어드레스 리맵핑을 수행하지 않은 데이터 블록으로 이해되며, 리맵핑이 없는 데이터 블록이라고 칭될 수 있다.
제3 데이터 블록의 행 수는 일반적으로 작고, 액세스될 데이터 블록은 완정한 제3 데이터 블록을 포함한다고 확신할 수 없으며, 따라서, 제3 데이터 블록에 대해 어드레스 리맵핑이 수행되더라도 액세스 및 저장 대역폭에 대한 최적화의 작용은 일반적으로 비교적 작다. 이러한 점을 감안하여, 본 출원에서는 상기 제3 데이터 블록에 대해 어드레스 리맵핑을 진행할 지 여부에 대해 한정하지 않기에, 제3 데이터 블록의 저장 방식은 보다 큰 유연성을 갖게 된다.
나아가, 상기 제 3 데이터 블록의 수량은 1이며, 상기 S는 상기 매트릭스의 열 수와 동일하다.
매트릭스가 제1 데이터 블록 및 제2 데이터 블록으로 분할된 후에, 나머지 데이터 블록의 행 수는 일반적으로 비교적 작기 때문에, 전체 나머지 데이터 블록은 하나의 제3 데이터 블록으로 사용될 수 있다. 이로써, 매트릭스 분할을 보다 간략화할 수 있다.
도 5에 도시된 바와 같이, 하나의 13Х1152의 매트릭스를 예로 들어, 분할 입도가 4Х256이라고 가정하면, 매트릭스는 균등하게 분할될 수 없고, 매트릭스의 ((0, 0), (11, 1151)) 의 부분에 대하여, 도 4에 도시된 분할 방식을 이용하여 평균적으로 12개의 제 1 데이터 블록 및 3개의 제 2 데이터 블록으로 분할될 수 있다. 즉 데이터 블록 a 내지 데이터 블록 o로 분할될 수 있다. 매트릭스의 ((12, 0), (12, 1151)) 의 부분에 대해서는 하나의 제 3 데이터 블록, 즉 데이터 블록 p로 분할될 수 있다.
상기 매트릭스를 액세스할 경우, 예컨대, DMA가 매트릭스의 ((0, 256), (12, 511))블록에 대한 로딩을 요구하면, 오프-칩 메모리중에서 데이터 블록 b, 데이터 블록 g, 데이터 블록 l 및 부분 데이터 블록 p를 순차적으로 판독할 필요가 있다. 여기서, 부분 데이터 블록 p의 데이터에 대응하는 메모리 어드레스는 불연속적일 수 있지만, 기타 3개의 데이터 블록의 데이터에 대응하는 메모리 어드레스는 연속적이고, 액세스된 데이터가 오프-칩 메모리에서의 어드레스 공간의 연속성이 비교적 양호하다는 것을 알 수 있다.
또한, 예컨대, DMA가 매트릭스의 ((0, 768), (12, 1151)) 분할 블록에 대한 로딩을 요구하면, 오프-칩 메모리중에서 데이터 블록 d, 데이터 블록 e, 데이터 블록 i, 데이터 블록 j, 데이터 블록 n, 데이터 블록 o 및 부분 데이터 블록 p를 순차적으로 판독할 필요가 있다. 여기서, 부분 데이터 블록 p의 데이터에 대응하는 메모리 어드레스는 불연속적일 수 있지만, 기타 6개의 데이터 블록의 데이터에 대응하는 메모리 어드레스는 연속적이고, 액세스된 데이터가 오프-칩 메모리에서의 어드레스 공간의 연속성이 양호하다는 것을 알수 있다.
선택적으로, 만일 오프-칩 메모리에 복수 개의 저장 채널을 포함하는 경우, 상기 분할 입도는 단일 저장 채널의 저장 입도의 정수배이다.
매트릭스에 대한 다양한 연산을 개선하기 위하여, NPU 내부는 다량의 동작 가능한 연산 유닛으로 집적될 수 있다. DMA, 온-칩 메모리 및 연산 유닛 사이의 데이터 채널이 NPU 칩 내부에 있으므로, 높은 대역폭에 용이하게 도달할 수 있다. 오프-칩 메모리를 액세스하는 MC의 대역폭은 내장 메모리 프로토콜 표준의 공식화 주기와 물리적 구현 곤란성 등에 의해 한정되며, 단일 채널의 액세스 및 저장 대역폭은 상승되기 어렵고, 그에 따라 DMA가 온-칩 메모리에 데이터를 기록하는 속도는 한정되고, 매트릭스를 NPU에 전달하는 시간은 연산 시간을 초과할 수 있으며, 결과적으로 연산 유닛이 대량의 유휴 대기 시간을 갖고, NPU의 전체 성능 특성에 영향을 미친다.
이런 문제를 해결하기 위해, 일반적으로 NPU에 복수 개의 채널을 가진 오프-칩 메모리를 집적하여 액세스 대역폭을 확장하며, 도 6은 본 출원에 따른 복수 개의 채널을 집적한 오프-칩 메모리의 NPU 구조 예시도이다. 그 중, NOC(Network on Chip)는 온-칩 네트워크(on-chip storage)를 의미하며, 오프-칩 메모리의 채널 수량은 4개(4개에 한정되지 않음)이다. 복수 개의 채널을 가진 오프-칩 메모리를 집적한 조건하에서, DMA는 NOC에 대하여 액세스 및 저장 요청을 송신할 수 있고, NOC는 MC를 통해 복수 개의 오프-칩 메모리를 동시에 액세스 할 수 있고, 이로써, 전체 오프-칩 액세스(off-chip storage) 및 저장 대역폭은 수 배의 증가를 얻을 수 있다.
그러나, 실제 시나리오에서, 액세스 및 저장 요청은 복수 개의 채널 사이에서 평형을 유지하지 못할 수 있고, 즉, 액세스 및 저장 요청은 복수 개의 채널을 커버할 수 없고, 이로써 복수 개의 채널에 대한 액세스 및 저장 대역폭을 실제적으로 이용할 수 없어, 따라서 오프-칩 메모리 대역폭의 실제 이용율도 도달할 수 없게 된다. 매트릭스(벡터를 포함) 의 연산 동작을 예로 들면, 온-칩 메모리 공간의 한정으로 인해 일반적으로 DMA에 분할된 블록의 액세스 및 저장 명령을 전송하여, 매트릭스 분할 블록을 온-칩 메모리에 로딩하여 연산을 한다. 현재 매트릭스를 저장하는 방식은 기본적으로 행 저장 혹은 열 저장의 방식을 채택하며, 즉, 매트릭스의 행 (혹은 열) 데이터가 어드레스 공간에서 연속적이고, 행 저장(혹은 열 저장)은 요구되는 매트릭스 분할 블록 데이터에 비교적 용이하게 어드레싱될 수 있다. 그러나, 이는 1 회에 액세스 된 데이터가 어드레스 공간에서의 연속성을 확보할 수 없고, 액세스 된 데이터는 최종적으로 동일한 채널의 메모리에 분포되어, DMA 가 획득된 데이터 대역폭이 단지 설계 목표의 몇분의 1만 될 수 있다. 여기서, NPU는 4개의 저장 채널을 구비한 오프-칩 메모리를 예로 들고, 각 채널의 인터리빙된 입도는 256B를 예로 든다. NPU 가 도 7에 도시한 4Х1024 매트릭스의 ((0, 256), (3, 511)) 분할 블록을 로딩할 필요가 있다고 가정하고, 상기 매트릭스는 행 저장 방식으로 저장 채널 0 내지 저장 채널 3에 각각 저장되며, 매트릭스의 복수 개의 채널 어드레스 인터리빙 규칙에 따라, 매트릭스의 ((0, 256), (3, 511))분할 블록은 저장 채널 1의 오프-칩 메모리에만 저장될 것이다. 그러면, NPU의 DMA가 이러한 분할 블록을 실제로 로딩할 때, 단지 1/4의 오프-칩 메모리 대역폭만 실현할 수 있으며, 이 기간내에 3개의 저장 채널은 아이들 상태에 처하게 된다.
이러한 점에 비추어, 본 출원은 복수 개의 채널을 가진 오프-칩 메모리에 대한 매트릭스 저장 방법을 제공하며, 상기 방법은, 상기 오프-칩 메모리에 복수 개의 저장 채널을 포함하는 경우, 상기 분할 입도는 단일 저장 채널의 저장 입도의 정수배이다. 여기서, " 저장 입도 " 라는 용어는 인터리빙 입도로 이해할수 있다.
NPU가 4개의 저장 채널을 가진 오프-칩 메모리를 구비하고 있고 저장 입도는 256B라고 가정하면, 어드레스 분포 방식은 256*0~256*1-1일때 액세스 채널은 0이고, 256*1~256*2-1일때 액세스 채널은 1이며, 256*2~256*3-1일때 액세스 채널은 2이고, 256*3~256*4-1일때 액세스 채널은 3이며, 256*4~256*5-1일때 액세스 채널은 0???? 이다. 이로써, 액세스된 데이터가 어드레스 공간에서 연속적인 1KB일때, NPU는 동시에 4개의 채널을 액세스할 수 있으며, 예상된 액세스 및 저장 대역폭에 도달할 수 있다.
분할 입도가 단일 저장 채널의 저장 입도의 정수배이기에, 각각의 제 1 데이터 블록의 크기는 단일 저장 채널의 저장 입도의 정수배이며, 이로써, 매번 액세스할 때마다 반드시 완정한 제 1 데이터 블록이 포함되어야 하기 때문에, 매번 액세스 시, 적어도 하나의 저장 채널을 커버하고, 액세스된 데이터 블록의 수가 1개를 초과할 때, 매번 액세스시 적어도 두 개의 저장 채널을 커버하기에, 매번 액세스할 때, 저장 채널에 대한 커버리지를 증가시키게 된다. 상기 정수배는 1 배, 2 배, 3 배, 4 배 등일 수 있다. 도 6에 도시된 바와 같이, 4개의 저장 채널이 집적된 NPU 에 대해, 분할 입도는 단일 저장 채널의 저장 입도의 4배일 수 있으며, 따라서 각각의 제1 데이터 블록은 모든 저장 채널을 커버할 수 있어서 저장 채널의 커버리지를 더욱 증가시킬수 있다
본 실시 방식에서, 매트릭스의 분할 입도를 오프-칩 메모리의 저장 채널의 저장 입도에 관련시킴으로써 각 저장 채널의 커버리지를 향상시킬 수 있으며, 오프-칩 메모리의 액세스 및 저장 대역폭이 커져, 모든 저장 채널의 액세스 및 저장 대역폭을 가능한 이용할 수 있고, NPU의 성능을 확실히 향상시킬 수 있다.
설명이 필요한 것은, 본 출원중의 매트릭스 저장 방법의 선택 가능한 다양한 실시 방식들은, 서로 결합하여 실현될 수도 있고, 단독으로 실현될 수도 있으며, 본 출원에서는 이에 대해 한정하지 않는다.
본 출원의 상술한 실시예들은 매트릭스를 오프-칩 메모리에 저장하기 전에 미리 설정된 분할 입도에 따라 분할하고, 분할된 제1 데이터 블록 및 제2 데이터 블록 (제2 데이터 블록이 존재하는 상황에서) 중의 데이터가 오프-칩 메모리에 연속적으로 저장하는 장점 혹은 유익한 효과를 가진다. 본 출원은 상술한 기술 수단을 채택하였기 때문에, 데이터 블록을 완정하고 연속하여 오프-칩 메모리에 기록하는 것이 가능하며, 매트릭스의 데이터 블록을 액세스 할 필요가 있을 때, 오프-칩 메모리에 연속하여 저장된 데이터 블록에 대해 완정한 판독을 진행할 수 있고, 따라서, 액세스된 데이터가 어드레스 공간에서의 연속성을 향상시킨다. 또한, 본 출원에서 제공하는 상술한 실시예들은 매트릭스 처리 효율을 증가시킬 수 있다.
실시예 2:
본 출원은 실시예 1에서 제공되는 매트릭스 저장 방법과 대응하는 매트릭스 액세스 방법을 제공한다. 상기 방법중의 액세스된 매트릭스는 실시예 1의 매트릭스 저장 방법에서 오프-칩 메모리에 저장된 매트릭스이다. 상기 방법은 매트릭스 액세스 장치에 응용될 수 있으며, 예를 들면, NPU의 프로세서에 응용될 수 있다.
도 8에서 예시하다 싶이, 상기 매트릭스 액세스 방법은 아래 단계들을 포함한다.
단계 201: 매트릭스에 대한 액세스 요청을 수신하며, 상기 액세스 요청은 상기 매트릭스의 액세스 파라미터를 포함한다.
단계 202: 상기 액세스 파라미터에 대응하는 데이터 블록이 완정한 제1 데이터 블록 또는 완정한 제2 데이터 블록을 포함하는 경우, 상기 데이터 블록의 데이터를 오프-칩 메모리로부터 판독한다.
단계 203: 상기 액세스 파라미터에 대응하는 데이터 블록이 불완정한 제1 데이터 블록 또는 불완정한 제2 데이터 블록을 포함하는 경우, 상기 오프-칩 메모리로부터 상기 데이터 블록의 데이터를 판독하는 것을 금지한다.
실시예 1중의 매트릭스 저장 방법으로 오프-칩 메모리에 저장된 매트릭스는, 액세스될 때, 로딩될 데이터 블록의 규모에 일정한 요구가 있고, 즉 액세스될 데이터 블록은 반드시 완정한 제1 데이터 블록 또는 완정한 제2 데이터 블록(부분 제3 데이터 블록만 포함할 수도 있음)을 포함해야 한다. 만일, 액세스된 데이터 블록에 불완정한 제1 데이터 블록 또는 불완정한 제2 데이터 블록이 포함되여 있을 경우, 오프-칩 메모리로부터 데이터 블록을 로딩하는 것을 금지한다.
이하, 예시적으로 매트릭스에 대한 액세스의 전체 과정에 대하여 설명하도록 한다.
NPU가 매트릭스를 액세스해야 할 경우, DMA 컨트롤러는 매트릭스에 대한 액세스 요청을 수신하고, 그 액세스 요청은 매트릭스의 길이 n, 폭 m, 시작 어드레스의 base_addr 등의 매트릭스 정보를 포함할 수 있고, 또한 데이터 블록 좌측 위쪽 각도 요소의 위치 인덱스 (m_start, n_start) 및 데이터 블록 우측 아래쪽 각도 요소의 위치 인덱스 (m_end-1,n_end-1) 와 같은 액세스 될 데이터 블록 정보를 포함하며, 또한 (blk_m,blk_n)과 같은 분할 입도의 정보를 포함할 수도 있고, 그 분할 입도의 정보는 또한 제1 데이터 블록의 길이 및 폭 정보로 이해될 수 있다. 상기 정보 모두는 액세스 파라미터라고 이해될 수 있고, 액세스 파라미터에 의해, 매트릭스 중의 액세스될 데이터 블록이 확정될 수도 있다.
그 후, DMA 컨트롤러는 액세스 파라미터가 요구에 부합되는지 여부를 판단할 수 있고, 즉 액세스 파라미터에 대응하는 데이터 블록이 완정한 제1 데이터 블록 또는 완정한 제2 데이터 블록을 포함하는지 여부를 판단한다. 구체적으로, 다음 수식이 성립하는지 여부를 판단할 수 있다: m_start % blk_m == 0;n_start % blk_n ==0;m_end % blk_m == 0, 또는, m_end == m;n_end % blk_n == 0, 또는, n_end == n. 일반적으로, 하드웨어 회로가 보다 용이하게 판단될 수 있도록 blk_m 및 blk_n을 2의 제곱으로 설정할 수 있다. 상술한 바와 같은 수식이 성립하면, 액세스 파라미터가 요구에 부합된다는 것을 의미하고, 수식이 성립되지 않으면, 액세스 파라미터가 요구에 부합되지 않는다는 것을 의미한다.
액세스 파라미터가 요구에 부합된다면, 데이터 블록에 대해 액세스 할 수 있으며, 액세스 파라미터가 요구에 부합되지 않는다면, 오류 통지로 되돌아갈 수 있다.
데이터 블록에 대해 액세스를 실행할 때, 현재 처리할 데이터 블록의 타입 및 파라미터는 cur_m 및 cur_n에 기초하여 확정되고, cur_m의 초기값은 m_start이고, cur_n의 초기값은 n_start이다. 현재 처리할 데이터 블록이 제1 데이터 블록 또는 제2 데이터 블록인 경우, 일련의 연속적인 어드레스 공간을 액세스함으로써 필요한 데이터를 획득하고, 현재 데이터 블록을 처리 한 후에, 현재 처리된 데이터 블록의 타입에 따라 cur_m 및 cur_n이 업데이터 될 수 있으며, 이렇게 반복적으로 진행한다. 또한, 현재 처리될 데이터 블록이 제3 데이터 블록인 경우에는, 복수 개의 어드레스를 송신하여 필요한 데이터를 획득하며, 여기까지 데이터 블록에 대한 액세스를 완료하고, 전체 프로세스를 종료한다. 도 9는 매트릭스 액세스의 전체 과정을 도시하고 있다.
설명이 필요한 것은, 본 출원의 매트릭스 액세스 방법에 관련된 실시 방식은 실시예 1중의 매트릭스 액세스 관련 설명을 참조하면 되고, 동일한 유익한 효과를 도달할 수 있으며, 중복을 회피하기 위하여, 여기서 더는 설명하지 않는다.
본 출원의 상술한 실시예들은 매트릭스의 데이터 블록을 액세스 할 때, 액세스 파라미터에 대응하는 데이터 블록이 완정한 제1 데이터 블록 또는 제2 데이터 블록을 포함할 경우, 오프-칩 메모리의 연속된 어드레스 공간에서 당해 데이터 블록을 판독하고, 액세스 파라미터에 대응하는 데이터 블록이 불완정한 제1 데이터 블록 또는 제2 데이터 블록을 포함할 경우, 오프-칩 메모리의 연속된 어드레스 공간에서 당해 데이터 블록을 판독하는 것을 금지한다. 상술한 기술적 수단을 채택하었기 때문에, 연속적으로 오프-칩 메모리에 저장된 데이터 블록에 대해 완정한 판독을 진행할 수 있으며, 이에 따라, 액세스된 데이터가 어드레스 공간에서의 연속성이 향상된다. 또한, 본 출원에서 제공하는 상술한 실시예들은 매트릭스 프로세싱 효율을 증가시킬 수 있다.
본 출원은 매트릭스 저장 장치를 더 제공하며, 도 10에서 예시하다 싶이, 매트릭스 저장 장치(300)는 분할 모듈(301) 및 제1 저장 모듈(302)을 포함한다.
상기 분할 모듈(301)은, 미리 설정된 N행ХM열의 분할 입도에 따라 매트릭스를 복수 개의 데이터 블록으로 분할하기 위한 것이고, 상기 N과 M 중 적어도 하나는 1보다 크며; 그 중, 상기 복수의 데이터 블록은 적어도 하나의 N행ХM열의 데이터 블록인 제1 데이터 블록을 포함하며; 상기 매트릭스의 열 수가 상기 M의 정수배가 아닐 경우, 상기 복수 개의 데이터 블록은 적어도 하나의 N행ХP열의 제2 데이터 블록을 더 포함하며, 상기 제2 데이터 블록은 이웃하는 상기 제1 데이터 블록과 행이 정렬되고, 상기 P는 상기 M보다 작다.
상기 제1 저장 모듈(302)은, 각각의 상기 제1 데이터 블록중의 데이터를 연속해서 오프-칩 메모리에 저장하기 위한 것이며, 또한 각각의 상기 제2 데이터 블록중의 데이터를 연속해서 상기 오프-칩 메모리에 저장하기 위한 것이다.
선택적으로, 상기 매트릭스의 행 수가 상기 N의 정수배가 아닐 경우, 상기 복수의 데이터 블록은 또한 적어도 하나의 L행ХS열의 제3 데이터 블록을 더 포함하고, 상기 L은 상기 N보다 작다.
선택적으로, 상기 제 3 데이터 블록의 수량은 1이고, 상기 S는 상기 매트릭스의 열 수와 같다.
선택적으로, 상기 장치(300)는:
각각의 상기 제3 데이터 블록중의 데이터를 연속해서 상기 오프-칩 메모리에 저장하기 위한 제2 저장 모듈을 더 포함한다.
선택적으로, 상기 오프-칩 메모리가 복수 개의 저장 채널을 포함하는 경우, 상기 분할 입도는 단일 저장 채널의 저장 입도의 정수배이다.
본 출원에서 제공하는 매트릭스 저장 장치(300)는 상술한 매트릭스 저장 방법에 관한 실시예중의 매트릭스 저장 장치가 실현하는 각 과정을 전부 실현할 수 있으며, 동일한 유익한 효과를 도달할 수 있다. 중복되는 것을 회피하기 위하여, 여기에서 더 설명하지 않는다.
본 출원은 매트릭스 액세스 장치를 더 제공하며, 상술한 매트릭스 저장 장치(300)가 저장한 매트릭스를 액세스 하기 위한 것이며, 도 11에서 예시하다 싶이, 매트릭스 액세스 장치(400)은 수신 모듈(401), 판독 모듈(402) 및 제어 모듈(403)을 포함한다
수신 모듈(401)은, 상기 매트릭스에 대한 액세스 요청을 수신하기 위한 것이며, 상기 액세스 요청은 상기 매트릭스의 액세스 파라미터를 포함한다.
판독 모듈(402)은, 상기 액세스 파라미터에 대응하는 데이터 블록이 완정한 제1 데이터 블록 또는 완정한 제2 데이터 블록을 포함하는 경우, 상기 데이터 블록의 데이터를 오프-칩 메모리로부터 판독하기 위한 것이다.
제어 모듈(403)은, 상기 액세스 파라미터에 대응하는 데이터 블록이 불완정한 제1 데이터 블록 또는 불완정한 제2 데이터 블록을 포함하는 경우, 상기 오프-칩 메모리로부터 상기 데이터 블록의 데이터를 판독하는 것을 금지하기 위한 것이다.
본 출원의 실시예에 따르면, 본 출원은 전자 기기 및 판독 가능한 기록 매체를 더 제공한다.
도 12에서 예시하다 싶이, 도 12는 본 출원의 실시예에 따른 매트릭스 저장 방법을 실현하기 위한 전자 기기의 블록도이다. 전자 기기는 각종 형식의 디지털 컴퓨터를 표시하는 것이고, 예컨대, 랩톱 컴퓨터, 데스크탑 컴퓨터, 벤치, 개인 휴대 정보 단말기, 서버, 블레이드 서버, 대형 컴퓨터, 및 기타 적절한 컴퓨터 등이 있다. 전자 기기는 각종 형식의 모바일 장치를 표시할 수 있으며, 예컨대, 개인 디지털 프로세싱, 셀룰러 폰, 스마트 폰, 웨어러블 기기 및 기타 유사한 컴퓨팅 장치일 수 있다. 본 출원에서 도시된 컴포넌트, 그들의 연결 및 관계, 또한 그들의 기능은 단지 실예 일 뿐이며, 본 출원에서 묘사 및/또는 요구하는 부분은 본 출원의 실현을 한정하기 위한 것이 아니다.
도 12에서 예시하다 싶이, 본 전자 기기는, 하나 또는 복수 개의 프로세서(501), 메모리(502) 및 각 부분을 연결하는 인터페이스를 포함하며, 인터페이스는 고속 인터페이스 및 저속 인터페이스를 포함한다. 각 부분은 상이한 버스를 통해 상호 연결되여 있으며, 코먼 메인 보드에 장착되어 있거나, 또는 수요에 따라 기타 방식으로 장착되어 있을 수 있다. 프로세서는 전자 기기내에서 수행될 명령를 처리 할 수 있으며, 메모리 또는 메모리상에 저장되어, 외부 입력 장치 또는 외부 출력 장치(예컨대, 인터페이스에 커플링된 디스플레이 기기)에 GUI를 표시할 패턴 정보의 명령이 포함된다. 기타 실시 방식중에서, 수요에 따라 하기의 방식중 적어도 하나를 사용할수 있으며, 구체적으로: 여러개의 프로세서 및/또는 여러개의 버스와 여러개의 메모리를 여러개의 메모리와 함께 사용할 수 있다. 동일하게, 여러개의 전자 기기를 연결할 수 있으며, 각 기기는 필요한 부분 동작(예컨대, 서버 어레이, 블레이드 서버 세트, 혹은 다중 프로세서 시스템)을 제공할 수 있다. 도 12에는 하나의 프로세서(501)로 예를 들었다.
메모리(502)는 본 출원에 따른 비 일시적 컴퓨터 판독 가능한 기록 매체이다. 그 중, 상기 메모리에는 적어도 하나의 프로세서에서 수행하는 명령이 저장되어 있어, 본 출원에 따른 매트릭스 저장 방법은 상기 적어도 하나의 프로세서를 통하여 수행될 수 있다. 본 출원의 비 일시적 컴퓨터 판독 가능한 기록 매체는 컴퓨터 명령을 제장하며, 당해 컴퓨터 명령은 컴퓨터가 본 출원에 따른 매트릭스 저장 방법을 수행하는데 이용되는 것이다.
메모리(502)는 비 일시적 컴퓨터 판독 가능한 기록 매체로서, 비 일시적 소프트웨어 프로그램, 비 일시적 컴퓨터가 수행 가능한 프로그램 및 모듈을 저장하는데 이용될 수 있으며, 본 출원의 실시예를 예로 들면, 매트릭스 저장 방법은 프로그램 명령 또는 모듈(예를 들면, 도 10에서 도시하는 분할 모듈(301) 및 제1 저장 모듈(302))에 대응된다. 프로세서(501)는 메모리(502)에 저장되여 있는 비 일시적 소프트웨어 프로그램, 명령 및 모듈을 실행함으로서, 서버의 각종 기능 어플리케이션(Application) 및 데이터 프로세싱을 수행하고, 상술한 실시예중의 매트릭스 저장 방법을 실현한다.
메모리(502)는 프로그램 저장 구역 및 데이터 저장 구역을 포함할 수 있으며, 그 중, 프로그램 저장 구역은 운영 시스템(Operating system), 및 적어도 하나의 기능에 필요한 어플리케이션(Application)을 저장할 수 있고; 데이터 저장 구역은 매트릭스 저장 방법에 따른 전자 기기의 사용으로 의해 생성된 데이터 등을 저장할 수 있다. 그 외, 메모리(502)는 고속 랜덤 액세스 메모리를 포함하며, 또한 비 일시적 메모리를 더 포함할 수 있으며, 예하면, 적어도 하나의 디스크 메모리 장치, 플래시 메모리 장치, 혹은 기타 비 일시적 고체 메모리 장치를 포함할 수 있다. 일 실시예에서, 메모리(502)는 프로세서(501)와 상대적으로 원격 설치된 메모리를 선택할 수 있으며, 이러한 원격 메모리는 네트워크를 통하여 매트릭스 저장 방법에 따른 전자 기기와 연결 될 수 있다. 상술한 네트워크의 실시예에는 인터넷, 기업 내부 네트워크, 근거리 네트워크, 이동 통신망 및 이들의 조합이 포함되며, 이에 한정된 것은 아니다.
매트릭스 저장 방법에 따른 전자 기기는, 입력 장치(503) 및 출력장치(504)가 더 포함된다. 프로세서(501), 메모리(502), 입력 장치(503) 및 출력장치(504)는 버스 혹은 기타 방식을 통하여 연결될 수 있으며, 도 12에서는 버스를 통하여 연결하는 방식을 예로 도시하였다.
입력 장치(503)는 데이터, 워드 정보, 및 매트릭스 저장 방법에 따른 전자 기기의 사용자 설정 및 기능 제어에 관련된 키 정보를 생성하여 입력 받을 수 있으며, 예를 들면, 터치 스크린, 키패드, 마우스, 트랙플레이트, 터치 플레이트, 표시 레버, 하나 이상의 마우스 버튼, 트랙볼, 조이스틱 등의 입력 장치가 있다. 출력장치(504)는 디스플레이 장치, 보조 조명 장치 (예를 들어, LED) 및 촉각 피드백 장치 (예를 들어, 진동 모터) 등을 포함할 수 있다. 디스플레이 장치는 액정 표시(LCD) 장치, 발광 다이오드 (LED) 표시 장치, 및 플라즈마 표시 장치가 포함되며, 이에 한정되는 것은 아니다. 일부 실시예에서, 디스플레이 장치는 터치 스크린일 수 있다.
도 13에서 예시하다 싶이, 도 13은 본 출원의 실시예에 따른 매트릭스 액세스 방법을 실현하기 위한 전자 기기의 블록도이다. 전자 기기는 각종 형식의 디지털 컴퓨터를 표시하는 것이고, 예컨대, 랩톱 컴퓨터, 데스크탑 컴퓨터, 벤치, 개인 휴대 정보 단말기, 서버, 블레이드 서버, 대형 컴퓨터, 및 기타 적절한 컴퓨터 등이 있다. 전자 기기는 각종 형식의 모바일 장치를 표시할 수 있으며, 예컨대, 개인 디지털 프로세싱, 셀룰러 폰, 스마트 폰, 웨어러블 기기 및 기타 유사한 컴퓨팅 장치일 수 있다. 본 출원에서 도시된 컴포넌트, 그들의 연결 및 관계, 또한 그들의 기능은 단지 실예 일 뿐이며, 본 출원에서 묘사 및/또는 요구하는 부분은 본 출원의 실현을 한정하기 위한 것이 아니다.
도 13에서 예시하다 싶이, 본 전자 기기는, 하나 혹은 복수 개의 프로세서(601), 메모리(602) 및 각 컴포넌트를 연결하는 것인 인터페이스를 포함하며, 인터페이스는 고속 인터페이스 및 저속 인터페이스를 포함한다. 각 컴포넌트는 상이한 버스를 통해 상호 연결되여 있으며, 코먼 메인 보드에 장착되어 있거나, 혹은 수요에 따라 기타 방식으로 장착되여 있을 수 있다. 프로세서는 전자 기기내에서 수행될 명령에 대해 프로세싱 할 수 있으며, 메모리 또는 메모리상에 저장되어, 외부 입력 장치 혹은 외부 출력 장치(예컨대, 인터페이스에 커플링된 디스플레이 기기)에 GUI를 표시할 패턴 정보의 명령이 포함된다. 기타 실시 방식중에서, 수요에 따라 여러개의 프로세서 및/또는 여러개의 버스와 여러개의 메모리를 함께 사용할 수 있다. 동일하게, 여러개의 전자 기기를 연결할 수 있으며, 각 기기는 필요한 부분 동작(예컨대, 서버 어레이, 블레이드 서버 세트, 혹은 다중 프로세서 시스템)을 제공할 수 있다. 도 13에는 하나의 프로세서(601)로 예를 들었다.
메모리(602)는 본 출원에 따른 비 일시적 컴퓨터 판독 가능한 기록 매체이다. 그 중, 상기 메모리에는 적어도 하나의 프로세서에서 수행하는 명령이 저장되어 있어, 본 출원에서 제공하는 매트릭스 액세스 방법은 상기 적어도 하나의 프로세서를 통하여 수행될 수 있다. 본 출원의 비 일시적 컴퓨터 판독 가능한 기록 매체는 컴퓨터 명령을 제장하며, 그 컴퓨터 명령은 컴퓨터가 본 출원에 따른 매트릭스 액세스 방법을 수행하는데 이용되는 것이다.
메모리(602)는 비 일시적 컴퓨터 판독 가능한 기록 매체로서, 비 일시적 소프트웨어 프로그램, 비 일시적 컴퓨터가 수행 가능한 프로그램 및 모듈을 저장하는데 이용될 수 있으며, 본 출원의 실시예를 예로 들면, 매트릭스 액세스 방법은 프로그램 명령 혹은 모듈(예를 들면, 도 11에서 도시하는 수신 모듈(401), 판독 모듈(402) 및 제어 모듈(403))에 대응된다. 프로세서(601)는 메모리(602)에 저장되여 있는 비 일시적 소프트웨어 프로그램, 명령 및 모듈을 실행함으로서, 서버의 각종 기능 어플리케이션(Application) 및 데이터 프로세싱을 수행하고, 상술한 실시예 중의 매트릭스 액세스 방법을 실현한다.
메모리(602)는 프로그램 저장 구역 및 데이터 저장 구역을 포함할 수 있으며, 그 중, 프로그램 저장 구역은 운영 시스템(Operating system), 및 적어도 하나의 기능에 필요한 어플리케이션(Application)을 저장할 수 있고; 데이터 저장 구역은 매트릭스 액세스 방법에 따른 전자 기기의 사용으로 의해 생성된 데이터 등을 저장할 수 있다. 그 외, 메모리(602)는 고속 랜덤 액세스 메모리를 포함하며, 또한 비 일시적 메모리를 더 포함할 수 있으며, 예를 들면, 적어도 하나의 디스크 메모리 장치, 플래시 메모리 장치, 혹은 기타 비 일시적 고체 메모리 장치를 포함할 수 있다. 일 실시예에서, 메모리(602)는 프로세서(601)와 상대적으로 원격 설치된 메모리를 선택할 수 있으며, 이러한 원격 메모리는 네트워크를 통하여 매트릭스 액세스 방법에 따른 전자 기기와 연결 될 수 있다. 상술한 네트워크의 실시예에는 인터넷, 기업 내부 네트워크, 근거리 네트워크, 이동 통신망 및 이들의 조합이 포함되며, 이에 한정된 것은 아니다.
매트릭스 액세스 방법에 따른 전자 기기는, 입력 장치(603) 및 출력 장치(604)가 더 포함된다. 프로세서(601), 메모리(602), 입력 장치(603) 및 출력 장치(604)는 버스 또는 기타 방식을 통하여 연결될 수 있으며, 도 12에서는 버스를 통하여 연결하는 방식을 예로 도시하였다.
입력 장치(603)는 데이터, 워드 정보, 및 매트릭스 액세스 방법에 따른 전자 기기의 사용자 설치 및 기능 제어에 관련된 키 정보를 생성하여 입력 받을 수 있으며, 예하면, 터치 스크린, 키패드, 마우스, 트랙플레이트, 터치 플레이트, 표시 레버, 하나 이상의 마우스 버튼, 트랙볼, 조이스틱 등의 입력 장치가 있다. 출력장치(604)는 디스플레이 장치, 보조 조명 장치 (예를 들어, LED) 및 촉각 피드백 장치 (예를 들어, 진동 모터) 등을 포함할 수 있다. 디스플레이 장치는 액정 표시(LCD) 장치, 발광 다이오드 (LED) 표시 장치, 및 플라즈마 표시 장치가 포함되며, 이에 한정되는 것은 아니다. 일부 실시예에서, 디스플레이 장치는 터치 스크린일 수 있다.
여기에 기술된 시스템 및 기술의 다양한 실시예는 디지털 전자 회로 시스템, 집적 회로 시스템, 주문형 ASIC (주문형 집적 회로), 컴퓨터 하드웨어, 펌웨어, 소프트웨어 및 이들의 조합중 적어도 하나를 포함한 방식으로 구현될 수 있다. 여러 실시예는 저장 시스템, 적어도 하나의 입력 장치, 및 적어도 하나의 출력 장치로부터 데이터 및 명령을 수신할 수 있는 전용 혹은 범용 프로그램가능한 프로세서일 수 있는 적어도 하나의 프로그램가능한 프로세서를 포함하는 프로그램 가능한 시스템 상에서 실행 및/또는 해석을 수행할 수 있는 하나 이상의 컴퓨터 프로그램들에서 구현하고, 저장 시스템, 적어도 하나의 입력 장치, 및 적어도 하나의 출력 장치로 데이터 및 명령을 송신하는 것을 포함할 수 있다.
컴퓨트 프로그램(또한 프로그램, 소프트웨어, 소프트웨어 애플리케이션, 혹은 코드라고도 함)은 프로그램 가능한 프로세서의 머신 명령을 포함하고, 고급 과정, 대상에 대한 프로그래밍 언어, 어셈블리 언어, 머신 언어 중 적어도 하나를 포함한 방식을 이용하여 이러한 컴퓨팅 프로그램을 수행할 수 있다. 본 출원에서 사용되는 "기계 판독 가능 매체" 및 "컴퓨터 판독 가능 매체" 라는 용어는 머신 명령 및 데이터 중 적어도 하나를 프로그래밍 가능 프로세서에 제공하기 위한 임의의 컴퓨터 프로그램 제품, 기기, 디바이스 (예를 들어, 자기 디스크, 광 디스크, 메모리, 프로그램 가능 로직 디바이스(PLD)) 중의 적어도 하나를 지칭하고, 머신 판독 가능 신호로서 머신 명령을 수신하는 머신 판독 가능 매체를 포함한다. 용어 "머신 판독 가능 신호"는 머신 명령 및 데이터중 적어도 하나를 프로그래밍 가능 프로세서에 제공하기 위한 임의의 신호를 의미한다.
사용자와의 인터랙션(Interaction)을 제공하기 위해, 본 출원에서 설명된 시스템 및 기술은 사용자에게 정보를 디스플레이하기 위한 디스플레이 장치 (예를 들어, CRT 또는 LCD, 키보드 및 포인팅 장치 (예를 들어, 마우스 혹은 트랙볼) 를 구비하여 사용자가 키보드 및 포인팅 장치를 통해 컴퓨터에 입력을 제공할 수 있도록 한다. 사용자와의 인터랙션(Interaction)을 제공하기 위해 기타 종류의 장치가 사용될 수 있으며; 예를 들어, 사용자에게 제공된 피드백은 임의의 형태의 센싱 피드백 (예를 들어, 시각적 피드백, 청각적 피드백, 혹은 촉각 피드백) 일 수 있고; 또한 사용자로부터 입력을 수신하기 위한 임의의 형태 (음향 입력, 음성 입력, 혹은 촉각 입력을 포함함)로 구성될 수 있다.
본 출원에서, 시스템 및 기술은, 백스테이지 컴포넌트를 포함하는 컴퓨트 시스템 (예를 들어, 데이터 서버로서), 혹은 중간 컴포넌트를 포함하는 컴퓨트 시스템(예를 들어, 애플리케이션 서버)에서 구현될 수 있고, 혹은, 전단 컴포넌트를 포함하는 컴퓨트 시스템(예를 들어, 그래픽 사용자 인터페이스 혹은 네트워크 브라우저를 갖는 사용자 컴퓨터에서 사용자는 그래픽 사용자 인터페이스 혹은 네트워크 브라우저를 통하여 여기서 기술된 시스템 및 기술의 실시 방식에 따라 인터랙션할 수 있다)에서 구현될 수 있고, 혹은 이러한 백스테이지 컴포넌트, 중간 컴포넌트, 혹은 전단 컴포넌트를 포함하는 임의의 조합들을 가진 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 구성요소는 임의의 형태 혹은 매체 디지털 데이터 통신 (예를 들어, 통신 네트워크) 에 의해 서로 접속될 수 있다. 통신 네트워크는 예를 들어, 로컬 영역 네트워크 (LAN), 광역 네트워크 (WAN) 및 인터넷이 포함된다.
컴퓨터 시스템은 클라이언트 및 서버를 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 이격되고, 통상적으로 통신 네트워크를 통해 인터랙션을 진행한다. 대응되는 컴퓨터를 통하여 운행되고, 또한 서로 클라이언트-서버 관계를 구비한 컴퓨터 프로그램에서 클라이언트 및 서버의 관계를 생성한다.
본 출원의 실시예에 따른 기술방안에 의하면, 본 출원은, 매트릭스를 오프-칩 메모리에 저장하기 전에, 매트릭스를 미리 설정된 분할 입도에 따라 분할하여, 분할된 제1 데이터 블록 및 제2 데이터 블록(제2 데이터 블록이 존재하는 상황에서)중의 데이터를 연속적으로 오프-칩 메모리에 저장한다. 상술한 기술 방안을 채택하였기 때문에, 데이터 블록을 완정하고 연속적으로 오프-칩 메모리에 기록하는 것을 실현할 수 있고, 매트릭스의 데이터 블록을 액세스 할 필요가 있을 시, 연속적으로 오프-칩 메모리에 저장된 데이터 블록에 대하여 완정한 판독을 진행할 수 있으며, 이로써, 액세스 된 데이터가 어드레스 공간에서의 연속성을 향상시킬수 있다.
상술한 여러 가지 형태의 절차를 사용하여, 단계에 대한 재정렬, 추가 혹은 삭제를 할 수 있음을 이해해야 한다. 예를 들면, 본 출원에 기재된 각 단계는, 병행적으로 혹은 순차적으로 혹은 상이한 순서로 수행될 수도 있으며, 본 출원에서 요구되는 발명의 기술방안을 달성하여 희망하는 결과를 실현할 수만 있으면 되고, 이에 대해 한정하지 않는다.
상기 구체적인 실시 방식은, 본 출원의 보호 범위를 한정하는 것은 아니다. 설계 요건 및 기타 요소에 따라 다양한 변형, 조합, 하위 조합 및 대안이 이루어질 수 있음은 당업자에게 명백할 것이다. 본 출원의 사상 및 원리 내에서 진행된 임의의 수정, 균등화 대타 및 개선은 본 출원의 범주 내에 포함되어야 한다.

Claims (16)

  1. 매트릭스 액세스 방법에 있어서,
    매트릭스는 미리 설정된 N행×M열의 분할 입도에 따라 복수 개의 데이터 블록으로 분할하여 오프-칩 메모리(off chip memory)에 저장된 매트릭스이며, 상기 N과 M 중 적어도 하나는 1보다 크고, 상기 복수 개의 데이터 블록은 적어도 하나의 N행×M열의 데이터 블록인 제1 데이터 블록을 포함하며, 상기 매트릭스의 열 수가 상기 M의 정수배가 아닐 경우, 상기 복수 개의 데이터 블록은 적어도 하나의 N행×P열의 제2 데이터 블록을 더 포함하며, 상기 제2 데이터 블록은 이웃하는 상기 제1 데이터 블록과 행이 정렬되고, 상기 P는 상기 M보다 작으며;
    상기 매트릭스 액세스 방법은,
    상기 매트릭스에 대한 액세스 요청을 수신하되, 상기 액세스 요청은 상기 매트릭스의 액세스 파라미터를 포함하는 단계;
    상기 액세스 파라미터에 대응하는 데이터 블록이 완정한 제1 데이터 블록 또는 완정한 제2 데이터 블록을 포함하는 경우, 오프-칩 메모리로부터 상기 데이터 블록의 데이터를 판독하는 단계;
    상기 액세스 파라미터에 대응하는 데이터 블록이 불완정한 제1 데이터 블록 또는 불완정한 제2 데이터 블록을 포함하는 경우, 상기 오프-칩 메모리로부터 상기 데이터 블록의 데이터를 판독하는 것을 금지하는 단계를 포함하며,
    각각의 상기 제1 데이터 블록 중의 데이터는 오프-칩 메모리에 연속적으로 저장되고, 또한 각각의 상기 제2 데이터 블록 중의 데이터는 상기 오프-칩 메모리에 연속적으로 저장되는 매트릭스 액세스 방법.
  2. 제1항에 있어서,
    상기 매트릭스의 행 수가 상기 N의 정수배가 아닐 경우, 상기 복수 개의 데이터 블록은 또한 적어도 하나의 L행×S열의 제3 데이터 블록을 더 포함하며, 그 중, 상기 L은 N보다 작은 매트릭스 액세스 방법.
  3. 제2항에 있어서,
    상기 제3 데이터 블록의 수량은 1이고, 상기 S는 상기 매트릭스의 열 수와 같은 매트릭스 액세스 방법.
  4. 제2항에 있어서,
    각각의 상기 제3 데이터 블록 중의 데이터를 연속적으로 상기 오프-칩 메모리에 저장하는 단계를 더 포함하는 매트릭스 액세스 방법.
  5. 제1항에 있어서,
    상기 오프-칩 메모리가 복수 개의 저장 채널을 포함하는 경우, 상기 분할 입도는 단일 저장 채널의 저장 입도의 정수배인 매트릭스 액세스 방법.
  6. 매트릭스 액세스 장치에 있어서,
    미리 설정된 N행×M열의 분할 입도에 따라 복수 개의 데이터 블록으로 분할하여 오프-칩 메모리(off chip memory)에 저장된 매트릭스를 액세스하기 위한 것이며, 상기 N과 M 중 적어도 하나는 1보다 크고, 상기 복수 개의 데이터 블록은 적어도 하나의 N행×M열의 데이터 블록인 제1 데이터 블록을 포함하며, 상기 매트릭스의 열 수가 상기 M의 정수배가 아닐 경우, 상기 복수 개의 데이터 블록은 적어도 하나의 N행×P열의 제2 데이터 블록을 더 포함하며, 상기 제2 데이터 블록은 이웃하는 상기 제1 데이터 블록과 행이 정렬되고, 상기 P는 상기 M보다 작으며;
    상기 매트릭스 액세스 장치는,
    수신 모듈, 판독 모듈, 제어 모듈을 포함하며,
    상기 수신 모듈은, 상기 매트릭스에 대한 액세스 요청을 수신하기 위한 것이고, 상기 액세스 요청은 상기 매트릭스의 액세스 파라미터를 포함하고;
    상기 판독 모듈은, 상기 액세스 파라미터에 대응하는 데이터 블록이 완정한 제1 데이터 블록 또는 완정한 제2 데이터 블록을 포함하는 경우, 오프-칩 메모리로부터 상기 데이터 블록의 데이터를 판독하기 위한 것이고,
    상기 제어 모듈은, 상기 액세스 파라미터에 대응하는 데이터 블록이 불완정한 제1 데이터 블록 또는 불완정한 제2 데이터 블록을 포함하는 경우, 상기 오프-칩 메모리로부터 상기 데이터 블록의 데이터를 판독하는 것을 금지하기 위한 것이며,
    각각의 상기 제1 데이터 블록 중의 데이터는 오프-칩 메모리에 연속적으로 저장되고, 또한 각각의 상기 제2 데이터 블록 중의 데이터는 상기 오프-칩 메모리에 연속적으로 저장된 것인 매트릭스 액세스 장치.
  7. 제6항에 있어서,
    상기 매트릭스의 행 수가 상기 N의 정수배가 아닐 경우, 상기 복수 개의 데이터 블록은 또한 적어도 하나의 L행×S열의 제3 데이터 블록을 더 포함하며, 그 중, 상기 L은 N보다 작은 매트릭스 액세스 장치.
  8. 제7항에 있어서,
    상기 제3 데이터 블록의 수량은 1이고, 상기 S는 상기 매트릭스의 열 수와 같은 매트릭스 액세스 장치.
  9. 제7항에 있어서,
    각각의 상기 제3 데이터 블록 중의 데이터를 연속적으로 상기 오프-칩 메모리에 저장하기 위한 제2 저장 모듈을 더 포함하는 매트릭스 액세스 장치.
  10. 제6항에 있어서,
    상기 오프-칩 메모리가 복수 개의 저장 채널을 포함하는 경우, 상기 분할 입도는 단일 저장 채널의 저장 입도의 정수배인 매트릭스 액세스 장치.
  11. 전자 기기에 있어서,
    적어도 하나의 프로세서; 및
    상기 적어도 하나의 프로세서와 통신 연결되는 메모리를 포함하며,
    상기 메모리는 상기 적어도 하나의 프로세서에서 수행될 명령을 저장하며, 상기 명령은 상기 적어도 하나의 프로세서에서 수행되어, 상기 적어도 하나의 프로세서로 하여금 제1항 내지 제5항 중 어느 한 항에 기재된 방법을 수행하도록 하기 위한 것인 전자 기기.
  12. 컴퓨터 명령을 저장한 비일시적 컴퓨터 판독 가능한 기록 매체에 있어서,
    컴퓨터 명령은 컴퓨터로 하여금 제1항 내지 제5항 중 어느 한 항에 기재된 방법을 수행하도록 하기 위한 것인 비일시적 컴퓨터 판독 가능한 기록 매체.
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
KR1020200076140A 2019-12-31 2020-06-23 매트릭스 저장 방법, 매트릭스 액세스 방법, 장치 및 전자 기기 KR102359347B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201911420575.8A CN111176582A (zh) 2019-12-31 2019-12-31 矩阵存储方法、矩阵访问方法、装置和电子设备
CN201911420575.8 2019-12-31

Publications (2)

Publication Number Publication Date
KR20210086937A KR20210086937A (ko) 2021-07-09
KR102359347B1 true KR102359347B1 (ko) 2022-02-07

Family

ID=70623766

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200076140A KR102359347B1 (ko) 2019-12-31 2020-06-23 매트릭스 저장 방법, 매트릭스 액세스 방법, 장치 및 전자 기기

Country Status (5)

Country Link
US (1) US11635904B2 (ko)
EP (1) EP3846036B1 (ko)
JP (1) JP7221244B2 (ko)
KR (1) KR102359347B1 (ko)
CN (1) CN111176582A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113254392B (zh) * 2021-07-12 2022-06-14 深圳比特微电子科技有限公司 用于片上系统的数据存储方法和基于片上系统的设备
US20240037046A1 (en) * 2022-07-28 2024-02-01 Avago Technologies International Sales Pte. Limited Tensor transfer though interleaved data transactions
CN115248664B (zh) * 2022-09-22 2023-01-10 北京东远润兴科技有限公司 数据的读写方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110390075A (zh) * 2019-07-19 2019-10-29 广东省新一代通信与网络创新研究院 矩阵预处理方法、装置、终端及可读存储介质
US20190392297A1 (en) * 2016-12-30 2019-12-26 Intel Corporation Deep learning hardware

Family Cites Families (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU4219693A (en) * 1992-09-30 1994-04-14 Apple Computer, Inc. Inter-task buffer and connections
US5384890A (en) * 1992-09-30 1995-01-24 Apple Computer, Inc. Method and apparatus for providing multiple clients simultaneous access to a sound data stream
JPH07210672A (ja) * 1994-01-12 1995-08-11 Canon Inc 二値化方法及び装置
JP3677100B2 (ja) * 1994-10-26 2005-07-27 株式会社東芝 フラットパネル表示装置およびその駆動方法
GB2298101B (en) * 1995-02-20 1999-04-28 Sony Uk Ltd Frequency separation of image data
US5724086A (en) * 1995-05-12 1998-03-03 Eastman Kodak Company Printhead having data channels with revisable addresses for interleaving scan lines
US5808655A (en) * 1995-05-12 1998-09-15 Eastman Kodak Company Interleaving thermal printing with discontiguous dye-transfer tracks on an individual multiple-source printhead pass
EP1026662B1 (en) * 1996-08-05 2004-09-22 Yamaha Corporation Software sound source
JP3384290B2 (ja) * 1997-07-25 2003-03-10 ヤマハ株式会社 音源装置
RU2131145C1 (ru) * 1998-06-16 1999-05-27 Закрытое акционерное общество Научно-технический центр "Модуль" Нейропроцессор, устройство для вычисления функций насыщения, вычислительное устройство и сумматор
US6862692B2 (en) * 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
US9492114B2 (en) * 2004-06-18 2016-11-15 Banner Health Systems, Inc. Accelerated evaluation of treatments to prevent clinical onset of alzheimer's disease
US20070104078A1 (en) * 2004-11-03 2007-05-10 Koninklijke Philips Electronics N.V. Apparatus and method for reading information from an information carrier
EP1713083B1 (en) * 2005-04-11 2018-02-21 Micron Technology, Inc. Non-volatile memory electronic device with NAND structure being monolithically integrated on semiconductor
US7962731B2 (en) * 2005-10-20 2011-06-14 Qualcomm Incorporated Backing store buffer for the register save engine of a stacked register file
US7844804B2 (en) * 2005-11-10 2010-11-30 Qualcomm Incorporated Expansion of a stacked register file using shadow registers
JP2009517763A (ja) * 2005-12-01 2009-04-30 エヌエックスピー ビー ヴィ メモリ中の行列要素に効率的にアクセスするための方法および構成
JP4561998B2 (ja) * 2006-03-13 2010-10-13 日本電気株式会社 配列範囲外アクセス検出方式及び方法
US7836320B2 (en) * 2006-07-07 2010-11-16 Arm Limited Power management in a data processing apparatus having a plurality of domains in which devices of the data processing apparatus can operate
US7660911B2 (en) * 2006-12-20 2010-02-09 Smart Modular Technologies, Inc. Block-based data striping to flash memory
US7627294B2 (en) * 2007-02-27 2009-12-01 Broadcom Corporation Radio transmitter front-end with amplitude and phase correction and methods for use therewith
US20080260023A1 (en) * 2007-04-18 2008-10-23 Chih-Ta Star Sung Digital video encoding and decoding with refernecing frame buffer compression
US7917785B2 (en) * 2007-05-11 2011-03-29 International Business Machines Corporation Method of optimizing performance of multi-core chips and corresponding circuit and computer program product
US8166212B2 (en) * 2007-06-26 2012-04-24 Xerox Corporation Predictive DMA data transfer
KR101431205B1 (ko) * 2007-07-13 2014-08-18 삼성전자주식회사 캐시 메모리 장치 및 캐시 메모리 장치의 데이터 처리 방법
EP2592553B1 (en) * 2008-03-11 2015-11-18 Agere Systems, Inc. Methods and apparatus for storing data in a multi-level cell flash memory device with cross-page sectors, multi-page coding and per-page coding
US20100318310A1 (en) * 2009-06-15 2010-12-16 Infineon Technologies Ag Off-Chip Supply Of Calibration Data
US8583896B2 (en) * 2009-11-13 2013-11-12 Nec Laboratories America, Inc. Massively parallel processing core with plural chains of processing elements and respective smart memory storing select data received from each chain
WO2012059121A1 (en) * 2010-11-01 2012-05-10 Telefonaktiebolaget L M Ericsson (Publ) Memory arrangement for accessing matrices
WO2011157136A2 (zh) * 2011-05-31 2011-12-22 华为技术有限公司 一种数据管理方法、装置及数据芯片
CN102436426A (zh) * 2011-11-04 2012-05-02 忆正存储技术(武汉)有限公司 一种内嵌式存储器及内嵌式存储系统
US9256531B2 (en) 2012-06-19 2016-02-09 Samsung Electronics Co., Ltd. Memory system and SoC including linear addresss remapping logic
US20140281147A1 (en) * 2013-03-13 2014-09-18 Kabushiki Kaisha Toshiba Memory system
US20140289445A1 (en) * 2013-03-22 2014-09-25 Antony Savich Hardware accelerator system and method
CN103268037B (zh) * 2013-05-15 2015-07-29 京东方科技集团股份有限公司 一种彩膜基板、制备方法以及显示装置
US9563399B2 (en) * 2013-08-30 2017-02-07 Cavium, Inc. Generating a non-deterministic finite automata (NFA) graph for regular expression patterns with advanced features
TWI509451B (zh) * 2013-11-15 2015-11-21 Inst Information Industry 用電建議裝置、方法及其電腦程式產品
CN103927270B (zh) * 2014-02-24 2017-02-08 东南大学 一种面向多个粗粒度动态可重构阵列的共享数据缓存装置及控制方法
US9940026B2 (en) * 2014-10-03 2018-04-10 Micron Technology, Inc. Multidimensional contiguous memory allocation
US10580401B2 (en) * 2015-01-27 2020-03-03 Google Llc Sub-matrix input for neural network layers
WO2016172673A1 (en) * 2015-04-24 2016-10-27 Aplus Flash Technology, Inc. Partial/full array/block erase for 2d/3d hierarchical nand
US9886418B2 (en) * 2015-04-28 2018-02-06 Intel Corporation Matrix operands for linear algebra operations
CN104899182B (zh) * 2015-06-09 2017-10-31 中国人民解放军国防科学技术大学 一种支持可变分块的矩阵乘加速方法
DE102015110027B4 (de) * 2015-06-23 2017-01-12 Intel IP Corporation Kommunikationsvorrichtung und verfahren zum speichern von daten
US11051026B2 (en) * 2015-08-31 2021-06-29 Intel Corporation Method and system of frame re-ordering for video coding
CN111353589B (zh) * 2016-01-20 2024-03-01 中科寒武纪科技股份有限公司 用于执行人工神经网络正向运算的装置和方法
EP3423865B1 (en) * 2016-03-01 2024-03-06 Brightway Vision Ltd. Gated imaging apparatus, system and method
CN105912476A (zh) 2016-04-06 2016-08-31 中国科学院计算技术研究所 片上重复寻址的方法及装置
US10503641B2 (en) * 2016-05-31 2019-12-10 Advanced Micro Devices, Inc. Cache coherence for processing in memory
CN107678781B (zh) * 2016-08-01 2021-02-26 北京百度网讯科技有限公司 处理器以及用于在处理器上执行指令的方法
US10438115B2 (en) * 2016-12-01 2019-10-08 Via Alliance Semiconductor Co., Ltd. Neural network unit with memory layout to perform efficient 3-dimensional convolutions
SG11201802566PA (en) * 2016-12-29 2018-08-30 Huawei Tech Co Ltd Storage system and solid state disk
CN106933536B (zh) * 2017-03-01 2019-08-27 天地融科技股份有限公司 一种智能卡的应用加载运行方法及智能卡
US10346944B2 (en) * 2017-04-09 2019-07-09 Intel Corporation Machine learning sparse computation mechanism
WO2018192500A1 (zh) * 2017-04-19 2018-10-25 上海寒武纪信息科技有限公司 处理装置和处理方法
CN117933314A (zh) * 2017-04-21 2024-04-26 上海寒武纪信息科技有限公司 处理装置、处理方法、芯片及电子装置
CN108229645B (zh) 2017-04-28 2021-08-06 北京市商汤科技开发有限公司 卷积加速和计算处理方法、装置、电子设备及存储介质
US10338919B2 (en) * 2017-05-08 2019-07-02 Nvidia Corporation Generalized acceleration of matrix multiply accumulate operations
CN108984280B (zh) 2017-06-05 2022-04-22 深圳市中兴微电子技术有限公司 一种片外存储器的管理方法和装置、计算机可读存储介质
JP7006166B2 (ja) * 2017-11-17 2022-01-24 富士通株式会社 データ転送装置およびデータ転送方法
JP6953289B2 (ja) 2017-11-20 2021-10-27 キヤノン株式会社 モータ制御装置及び画像形成装置
CN109992743B (zh) * 2017-12-29 2020-06-16 华为技术有限公司 矩阵乘法器
US10963394B2 (en) * 2018-04-16 2021-03-30 Samsung Electronics Co., Ltd. System and method for optimizing performance of a solid-state drive using a deep neural network
CN108765247B (zh) * 2018-05-15 2023-01-10 腾讯科技(深圳)有限公司 图像处理方法、装置、存储介质及设备
CN108875077B (zh) 2018-07-10 2021-02-09 上海达梦数据库有限公司 数据库的列存储方法、装置、服务器及存储介质
CA3040669A1 (en) * 2018-10-17 2020-04-17 Alibaba Group Holding Limited Secret sharing with no trusted initializer
US10846363B2 (en) * 2018-11-19 2020-11-24 Microsoft Technology Licensing, Llc Compression-encoding scheduled inputs for matrix computations
JP7408671B2 (ja) * 2019-03-15 2024-01-05 インテル コーポレイション シストリックアレイに対するブロックスパース演算のためのアーキテクチャ
US11493985B2 (en) * 2019-03-15 2022-11-08 Microsoft Technology Licensing, Llc Selectively controlling memory power for scheduled computations
US11663454B2 (en) * 2019-03-29 2023-05-30 Aspiring Sky Co. Limited Digital integrated circuit with embedded memory for neural network inferring
US11928443B2 (en) * 2019-12-19 2024-03-12 Intel Corporation Techniques for transposing a matrix using a memory block

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190392297A1 (en) * 2016-12-30 2019-12-26 Intel Corporation Deep learning hardware
CN110390075A (zh) * 2019-07-19 2019-10-29 广东省新一代通信与网络创新研究院 矩阵预处理方法、装置、终端及可读存储介质

Also Published As

Publication number Publication date
JP2021111319A (ja) 2021-08-02
US20210200439A1 (en) 2021-07-01
JP7221244B2 (ja) 2023-02-13
CN111176582A (zh) 2020-05-19
EP3846036B1 (en) 2023-10-11
KR20210086937A (ko) 2021-07-09
EP3846036A1 (en) 2021-07-07
US11635904B2 (en) 2023-04-25

Similar Documents

Publication Publication Date Title
KR102359347B1 (ko) 매트릭스 저장 방법, 매트릭스 액세스 방법, 장치 및 전자 기기
KR102161448B1 (ko) 멀티 채널 메모리를 포함하는 시스템 및 그 동작 방법
US10991446B2 (en) Electronic device performing training on memory device by rank unit and training method thereof
CN106354656B (zh) 用于存储管理的方法和系统
CN107621959B (zh) 电子装置及其软件训练方法、计算系统
US20140359225A1 (en) Multi-core processor and multi-core processor system
CN110162491B (zh) 存储器控制器及其操作方法、应用处理器和数据处理系统
US20140351512A1 (en) Capacity expansion method and device
US10241687B2 (en) Method for operating semiconductor device and semiconductor system
CN113590508B (zh) 动态可重构的内存地址映射方法及装置
US9852807B1 (en) Content addressable memory in an emulation system
US9104496B2 (en) Submitting operations to a shared resource based on busy-to-success ratios
US10776280B1 (en) Data storage device and method for updating logical-to-physical mapping table
CN112698793A (zh) 一种数据存储方法、装置、机器可读介质及设备
KR102388746B1 (ko) 세이프 어드레스 매핑을 이용한 메모리 셀 액세스 제어 방법
CN111694513A (zh) 包括循环指令存储器队列的存储器器件和方法
EP3249540A1 (en) Method for writing multiple copies into storage device, and storage device
US20170010966A1 (en) Systems and methods facilitating reduced latency via stashing in system on chips
US20220318015A1 (en) Enforcing data placement requirements via address bit swapping
US11354130B1 (en) Efficient race-condition detection
CN116360672A (zh) 访问存储器的方法、装置和电子设备
US9690571B2 (en) System and method for low cost patching of high voltage operation memory space
JP7273176B2 (ja) シーケンス処理ユニットを備えたメモリ制御システム
US20230138048A1 (en) Memory device performing configurable mode setting and method of operating the same
US10586007B1 (en) Multi-dimensional placement

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant