KR102542580B1 - Dnn을 사용하여 ssd의 성능을 최적화하기 위한 시스템 및 방법 - Google Patents

Dnn을 사용하여 ssd의 성능을 최적화하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102542580B1
KR102542580B1 KR1020190029002A KR20190029002A KR102542580B1 KR 102542580 B1 KR102542580 B1 KR 102542580B1 KR 1020190029002 A KR1020190029002 A KR 1020190029002A KR 20190029002 A KR20190029002 A KR 20190029002A KR 102542580 B1 KR102542580 B1 KR 102542580B1
Authority
KR
South Korea
Prior art keywords
predicted
request
host
dnn
data
Prior art date
Application number
KR1020190029002A
Other languages
English (en)
Other versions
KR20190120698A (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 KR20190120698A publication Critical patent/KR20190120698A/ko
Application granted granted Critical
Publication of KR102542580B1 publication Critical patent/KR102542580B1/ko

Links

Images

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/061Improving I/O performance
    • 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/0658Controller construction arrangements
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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
    • 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
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • 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
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/088Non-supervised learning, e.g. competitive learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

데이터 저장 장치의 컨트롤러는: 인터페이스를 호스트 컴퓨터로 제공하는 호스트 인터페이스; LBA(Logical block address)를, 호스트 인터페이스를 통해 호스트 컴퓨터로부터 수신되는 I/O(Input/Output) 요청과 관련되는 PBA(Physical Block Address)로 변환하는 FTL(Flash Translation Layer); 데이터 저장 장치의 플래시 미디어로 인터페이스를 제공하여 데이터 저장 장치의 플래시 미디어 상에 저장되는 데이터에 접근하는 플래시 인터페이스; 및 호스트 컴퓨터의 I/O 액세스 패턴을 예측하기 위한 하나 이상의 DNN(Deep Neural Network) 모듈을 포함한다. 호스트 인터페이스는 하나 이상의 입력 벡터를 하나 이상의 DNN 모듈에 제공하고, 하나 이상의 DNN 모듈은 하나 이상의 예측 출력들을 하나 이상의 입력 벡터를 사용하여 호스트 컴퓨터로부터 수신되는 하나 이상의 과거 I/O 요청 및 현재 I/O 요청과 관련되는 FTL로 제공하고, 하나 이상의 예측 출력들은 현재 I/O 요청에 이어 적어도 하나의 예측된 I/O 요청을 포함한다. FTL은 적어도 하나의 예측된 I/O 요청과 관련된 플래시 미디어에 저장되는 데이터를 프리 페치한다.

Description

DNN을 사용하여 SSD의 성능을 최적화하기 위한 시스템 및 방법{SYSTEM AND METHOD FOR OPTIMIZING PERFORMANCE OF A SOLID-STATE DRIVE USING A DEEP NEURAL NETWORK}
본 개시는 DNN(Deep Neural Network)와 관련되고, 좀 더 상세하게는 DNN을 이용하여 SSD(Solid-State Drive)의 성능을 최적화하기 위한 시스템 및 방법과 관련된다.
SSD(Solid-State Drive)는 데이터를 저장하기 위한 플래시 미디어를 포함한다. 호스트는 LBA(Logical Block Address)를 사용하여 SSD에 저장된 데이터에 접근한다. 호스트가 데이터 입력/출력(I/O) 요청을 수행할 때, SSD의 SSD 컨트롤러는 호스트 I/O 동작들을 수행하기 위해 몇몇의 내부 동작들을 실행해야 할 수 있다. 예로서, SSD 컨트롤러는, 온/칩에 나타나지 않고, 논리-물리 어드레스 변환을 위해 LBA 룩업을 수행하고, 하나 이상의 플래시 채널을 통한 물리 위치(페이지/블록)로부터 사용자 데이터를 페치(fetch) 하면, 호스트의 I/O 요청에 응답하여 FTL(Flash Translation Layer)의 데이터 구조를 페치한다. 또한, SSD 컨트롤러는 LDPC(Low-Density Parity Check) 및 BCH(Bose-Chaudhuri-Hocquenghem)와 같은 복잡한 알고리즘들을 사용하여 에러 정정들을 수행하고, 에러 정정된 데이터의 압축을 해제하고, 압축되지 않은 데이터를 해독하고, FTL 데이터 구조를 업데이트하고, 다양한 통계 데이터와 로그들을 호스트 컴퓨터에 제공하고, 캐시를 오프로딩 한다. 또한 SSD 컨트롤러는 재활용 및 가비지 컬렉션과 같은 내부 백그라운드 동작들이 있을 경우 위의 단계들을 수행해야 한다.
이상에서 설명된 바와 같이, SSD에 저장된 데이터에 액세스하는 단계들과 동작들은 복잡하고 SSD 컨트롤러의 리소스들과 시간을 많이 소비할 수 있다. SSD를 위해 필요한 내부 작업들을 수행 및 관리 하기 위한 복잡한 알고리즘들을 채용하는 동안, SSD 컨트롤러는 호스트에서 시작된 I/O 동작들을 수행하기 위해 호스트 컴퓨터로 충분한 대역폭과 대기 시간을 제공해야 한다. 동시에 SSD 컨트롤러는 I/O 동작들의 비용을 최적화 하기 위해 최소한의 전력을 소비하고 메모리 버퍼들과 같은 최소한의 리소스들을 사용하려고 시도한다.
본 개시는 SSD 컨트롤러 또는 SSD 컨트롤러와 FPGA(Field-Programmable Gate Array)의 조합 내부로의 호스트 I/O 액세스들의 시간적 및 공간적 패턴들을 검출하기 위한 DNN(Deep Neural Network) 기반의 접근법을 제안한다.
일 실시 예에 따르면, 데이터 저장 장치의 컨트롤러는 인터페이스를 호스트 컴퓨터로 제공하는 호스트 인터페이스; LBA를, 호스트 인터페이스를 통해 호스트 컴퓨터로부터 수신되는 I/O 요청과 관련되는 PBA로 변환하는 FTL; 데이터 저장 장치의 플래시 미디어로 인터페이스를 제공하여 데이터 저장 장치의 플래시 미디어 상에 저장되는 데이터에 접근하는 플래시 인터페이스; 및 호스트 컴퓨터의 I/O 액세스 패턴을 예측하기 위한 하나 이상의 DNN 모듈을 포함한다. 호스트 인터페이스는 하나 이상의 입력 벡터를 하나 이상의 DNN 모듈에 제공하고, 하나 이상의 DNN 모듈은 하나 이상의 예측 출력들을 하나 이상의 입력 벡터를 사용하여 호스트 컴퓨터로부터 수신되는 하나 이상의 과거 I/O 요청 및 현재 I/O 요청과 관련되는 FTL로 제공하고, 하나 이상의 예측 출력들은 현재 I/O 요청에 이어 적어도 하나의 예측된 I/O 요청을 포함한다. FTL은 적어도 하나의 예측된 I/O 요청과 관련된 플래시 미디어에 저장되는 데이터를 프리 페치(prefetch)한다.
다른 실시 예에 따르면, 데이터 저장 장치는, 하나 이상의 플래시 미디어; 하나 이상의 플래시 미디어를 제어하도록 구성되는 컨트롤러; 및 호스트 컴퓨터의 I/O 액세스 패턴을 예측하기 위한 하나 이사의 DNN 모듈을 포함한다. 하나 이상의 DNN 모듈은 컨트롤러로부터 하나 이상의 입력 벡터를 수신하고, 하나 이상의 입력 벡터를 사용하여 호스트 컴퓨터로부터 수신되는 하나 이상의 과거 I/O 요청들 및 현재 I/O 요청과 관련되는 컨트롤러로 하나 이상의 예측 출력을 제공하고, 하나 이상의 예측 출력은 현재 I/O 요청 이후의 적어도 하나의 예측된 I/O 요청을 포함한다. 컨트롤러는 적어도 하나의 예측된 I/O 요청과 관련된 플래시 미디어에 저장된 데이터를 프리 페치한다.
다른 실시 예에 따르면, 브릿지 장치는, 하나 이상의 프로세서; 하나 이상의 DNN 모듈; 하나 이상의 프로세서 및 하나 이상의 DNN 모듈 사이에서 인터페이스를 제공하는 프로세서 액세스 모듈; 호스트 인터페이스; 및 SSD에 대한 장치 인터페이스를 포함한다. 하나 이상의 DNN 모듈은 호스트 인터페이스를 통해 SSD로부터 하나 이상의 입력 벡터를 수신하고, 원격 이니시에이터로부터 수신되는 하나 이상의 과거 I/O 요청, 및 하나 이상의 입력 벡터를 사용하여 원격 이니시에시터로부터 수신되는 현재 I/O 요청과 관련되는 SSD로 하나 이상의 예측 출력을 제공하고, 하나 이상의 예측 출력은 현재 I/O 요청 이후의 적어도 하나의 예측된 I/O 요청을 포함한다. SSD는 적어도 하나의 예측된 I/O 요청과 관련되는 플래시 미디어에 저장되는 데이터를 프리 페치하고, 데이터를 장치 인터페이스를 통해 브릿지 장치로 제공한다.
구현의 다양한 진보한 상세 사항들 및 이벤트들의 조압을 포함하는, 이상의 그리고 다른 바람직한 특징들은 첨부된 도면들을 참조하여 더 상세하게 설명되고, 청구항에서 지적될 것이다. 본 명세서에서 설명되는 특정 시스템들 및 방법들은 예시의 방법으로 보여질 뿐 제한들로서 보여지지 않는다. 해당 기술의 통상의 기술자에 의해 이해될 것과 같이, 본 명세서에서 설명되는 원리들 및 특징들은 본 개시의 범위로부터 벗어남이 없이 다양하고 많은 실시 예들에서 채용될 수 있다.
SSD 컨트롤러는 다양한 지시자들을 기반으로 데이터 액세스들 패턴들과 관련된 정보를 사용하여 대역폭, 대기 시간, 및 내부 리소스들의 사용과 관련된 SSD의 성능을 최적화 할 수 있다.
도 1은, 일 실시 예에 따른, 액세스 패턴 인지 능력을 갖는 예시적인 SSD의 블록도를 보여준다.
도 2는, 일 실시 예에 따른, 예시적인 DNN 모델의 블록도를 보여준다.
도 3은, 일 실시 예에 따른, 호스트 액세스 패턴들을 예측하기 위한 DNN 모듈을 구현하는 예시적인 브릿시 장치의 블록도를 보여준다.
본 명세서에서 개시된 특징들 및 교시들 각각은 SSD(Solid-State Drive)의 성능을 최적화하기 위한 시스템 및 방법을 제공하기 위한 다른 특징들 및 교시들과 함께 또는 분리되어 사용될 수 있다. 이러한 추가적인 특징들 및 교시들이 분리되거나 결합되어 이용되는 대표적인 예들은 첨부된 도면들을 참조하여 상세히 설명된다. 이러한 상세한 설명은 단지 본 교시들의 측면들을 실시하기 위한 기술 분야에서 상세한 지식을 가진 자를 교시하기 위한 것이고, 청구항들의 범위를 제한하지 않는다. 그러므로, 상세한 설명에 상술된 특징들의 조합들은 넓은 의미에서 교시를 실시할 필요가 없을 수도 있고, 대신에 본 교시들 특히 대표적인 실시 예들을 설명하기 위해 단지 교시된다.
아래의 설명에서, 설명의 목적으로만 특정 명칭이 본 발명의 완전한 이해를 제공하기 위해 설명된다. 그러나, 이러한 특정 세부 사항들이 본 발명의 사상을 실시하기 위해 필요하지 않는 것은 당업자에게 명백할 것이다.
상세한 설명의 몇몇 부분들은 알고리즘 및 컴퓨터 메모리 내 데이터 비트들에 대한 동작들의 심볼 표현의 측면에서 제공된다. 이들 알고리즘 설명들 및 표현들은 다른 분야의 당업자들에게 작업의 실체를 효과적으로 전달하기 위해, 데이터 처리 분야의 당업자들에 의해 사용된다. 여기에서 알고리즘은 일반적으로 소망하는 결과에 이르는 단계들에 대한 일관성 있는 순서일 수 있다. 단계들은 물리적 양의 물리적 조작이 필요한 것들이다. 일반적으로, 필수적이진 않지만, 이러한 양들은 저장, 전달, 결합, 비교, 그리고 다르게 조작될 수 있는 전기 또는 자기 신호의 형태를 취한다. 이러한 신호들을 비트들, 값들, 요소들, 심볼들, 특징들, 용어들, 숫자들 등으로 지칭하는 것이 주로 공통적인 사용의 이유로 때때로 편리하게 입증되었다.
그러나, 이들 및 유사한 용어들 모두는 적절한 물리량과 연관되며 단지 이러한 양에 적용되는 편리한 라벨이라는 것을 명심해야 한다. 구체적으로는 아래의 설명으로부터 명백한 바와 같이, 설명에서, 이러한 “처리”, “컴퓨팅”, “계산”, “결정”, “표시” 등과 같은 용어를 사용하는 논의는 컴퓨터 시스템 또는 컴퓨터 레지스터 및 메모리들 내에서 물리적(전기적) 양으로서 나타나는 데이터를 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 정보 스토리지, 전송 또는 표시 장치들 내에서 물리적 양으로서 나타나는 유사한 다른 데이터로 조작 및 변형하는 유사한 전자 컴퓨팅 장치의 활동 및 과정을 나타내는 것으로 인식된다.
또한, 대표적인 실시 예들 및 독립항들의 다양한 특징들은 본문에서의 사상들의 추가적인 유용한 실시 예들을 제공하기 위하여 특별하고 명확하게 열거되는 방식으로 조합될 수 있다. 또한, 객체들의 그룹의 표시들 또는 값 범위들 전부는 본래 기재의 목적뿐만 아니라, 특허 청구된 내용을 제한하기 위한 목적을 위하여 가능한 중간 값 또는 중간 객체 모두를 기재할 수 있다. 또한, 도면들에 도시된 구성들의 모양들 및 면적들은 본 발명이 구현되는 방식에 대한 이해를 돕기 위하여 디자인되었으나, 실시 예들에 도시된 모양들 및 면적들을 한정하는 것으로 의도되지 않는다.
임박한 호스트 액세스 입력/출력(I/O) 동작의 예측은 SSD의 성능을 최적화하는데 매우 유용 할 수 있다. 호스트 어플리케이션들이 그들의 기능들을 반복적으로 수행함에 따라, 이러한 호스트 액세스 패턴들 중 일부는, SSD들과 같은 데이터 저장 장치들에 대한 I/O 액세스 패턴들과 관련하여 나타날 수 있다. 이러한 스토리지-액세스 패턴들은 오랜 기간들 동안 반복될 수 있기 때문에 식별되기 어려울 수 있다. 또한, 많은 호스트 어플리케이션들이 데이터 저장 장치를 공유할 수 있으므로, 다수의 호스트 어플리케이션들로부터 기원하는 다수의 패턴들이 서로를 인식하고 식별하기 어려워질 수 있다. 본 개시는 SSD 컨트롤러 또는 SSD 컨트롤러와 FPGA(Field-Programmable Gate Array)의 조합 내에서 호스트 I/O 액세스들의 시간적 및 공간적 패턴들을 검출하기 위한 DNN(Deep Neural Nnetwork) 기반의 접근법을 제안한다.
SSD 컨트롤러가 호스트 I/O 동작을 수신하면 SSD 컨트롤러는 논리 어드레스(예컨대, LBA(Logical Block Address))에서 물리 어드레스(예컨대, PBA(Physical Block Address))로의 변환을 수행하고 물리 어드레스(예컨대, 페이지 또는 블록)로 부터 온-칩 버퍼(예컨대, 읽기 버퍼)로 사용자 데이터를 가져온다. SSD 컨트롤러는 LDPC(Low-Density Parity Check) 및 BCH(Bose-Chaudhuri-Hocquenghem)와 같은 에러 정정 알고리즘을 실행하여 일반적이지 않은 호스트 I/O 액세스 패턴들을 배제하고 읽기 동작 중에 발생할 수 있는 임의의 비트 에러들을 정정하고, 요청 호스트에 제공하기 전에 사용자 데이터를 해독 및/또는 압축 해제(un-compress) 할 수 있다. 이러한 모든 동작들은 리사이클링 및 GC(Garbage Collection)와 같은 내부 백그라운드 동작들과 SSD의 제한된 리소스들을 놓고 경쟁해야 할 수 있다.
가까운 미래에 SSD 컨트롤러가 호스트 I/O 동작들(예컨대, 이후에 액세스하기 위한 LBA들)을 미리 알고 있다면, SSD 컨트롤러는 일부 동작들을 미리 처리하고 요청된 호스트 I/O 동작에 대한 최적화된 성능을 제공 할 수 있다. 예로서, 호스트에 의한 임박한 스토리지 액세스를 아는 것을 통해, SSD 컨트롤러는 내부의 백그라운드 동작들을 최적화시키면서 높은 히트율 및 낮은 대기 시간으로 호스트 I/O 동작들을 실행하기 위해 액세스 가능성이 높은 플래시 미디어로부터 사용자 데이터를 프리 페치 할 수 있다. 예로서, 긴 시간 구간들 동안 기능들을 반복적으로 수행하는 다수의 호스트 어플리케이션들은 특정 패턴의 LBA 시퀀스들을 야기할 수 있다. 그러나, 상태 기계(state machine)들을 사용하여 길고 복잡한 LBA 패턴들을 검출하는 것은 복잡하고 비실용적 일 수 있다. 본 시스템 및 방법은 호스트 I/O 액세스들에서의 LBA 패턴들 또는 명령 패턴들의 검출, 및 SSD의 특정 물리 어드레스들에 대한 임박한 액세스의 예측을 제공한다. 호스트 액세스 패턴 인식을 위한 본 기술은 SSD의 내부 리소스들의 최적화된 할당 및 사용을 달성하기 위해 공간 패턴들(예컨대, LBA) 및 시간 패턴들 모두를 검출하도록 적용될 수 있다.
본 개시는 뉴럴 네트워크를 사용하여 호스트 I/O 액세스에서 공간 패턴들을 검출하는 기술을 설명한다. 하나 이상의 호스트 상에서 실행되는 다양한 어플리케이션들은 사용자 데이터를 SSD와 같은 동일한 데이터 스토리지에 저장할 수 있다. 이는 기술 발전에 따라 SSD의 저장 용량이 크게 증가함에 따라 발생할 가능성이 높다. 호스트 어플리케이션들은 SSD로부터 데이터를 읽고 쓰므로, SSD로의 데이터 액세스들에 다수의 패턴들이 있을 수 있다. 이러한 패턴들은 시간에 따라 길어지고 확장될 수 있다. SSD의 SSD 컨트롤러는 LBA 또는 LBA-클러스터 패턴들, NVMe(Non-volatile Memory express) 명령들(본 명세서에서는 연산 부호(opcode)라고도 지칭됨) 및/또는 예상되는 호스트 스토리지 액세스들의 임박한 유휴 간격들과 같은 호스트 어플리케이션에 의한 다양한 데이터 액세스들 패턴들을 감지 할 수 있다. SSD 컨트롤러는 다양한 지표를 기반으로 데이터 액세스들 패턴들과 관련된 정보를 사용하여 대역폭, 대기 시간, 및 내부 리소스들의 사용 측면에서 SSD의 성능을 최적화 할 수 있다.
일 실시 예에 따르면, 본 시스템 및 방법은 LSTM(Long Short Term Memory) 네트워크, 및 CNN(Convolutional Neural Network)과 같은 DNN(Deep Neural Network) 기반의 스킴을 채용하여, LBA/LBA 클러스터 패턴들과 같은 호스트 어플리케이션들에 의해 데이터 액세스 패턴들을 검출하고, LBA/LBA 클러스터 액세스들 및 임박한 호스트 명령들과 같은 임박한 호스트 액세스 I/O 동작들을 효율적으로 예측한다. 예측된 호스트 액세스 I/O 동작들은 호스트에 의해 요청된 데이터를 제공하기 위해 SSD 내부 동작들을 수행하는데 뿐만 아니라 임박한 호스트 I/O 액세스 동작들에 대한 정보를 활용하여 내부 백그라운드 동작들을 스케줄링하는데 사용될 수 있다. 이러한 동작들의 예시들은, 1) 데이터의 프리 페치(캐시 프리 페치와는 별도의), 2) 캐시 만료 정책(Cache Eviction Policy)의 최적화, 3) 플러쉬(Flush), 트림(Trim), 및 NVMe-MI(NVMe-Management Interface)와 같은 임박한 명령의 최적화 된 실행, 및 4) 리사이클 및 가비지 컬렉션(garbage collection; GC)과 같은 내부 백그라운드 동작들의 최적화된 스케줄링 등을 포함하나, 이에 제한되지 않는다.
도 1은, 일 실시 예에 따른 액세스 패턴 인식 성능을 갖는 예시적인 SSD의 블록도를 보여준다. SSD(100)는 SSD 컨트롤러(110) 및 하나 이상의 플래시 미디어(151)를 포함한다. SSD 컨트롤러(110)는 호스트 인터페이스(111), 플래시 변환 계층(Flash Translation layer; FTL, 112), 및 플래시 인터페이스(113)를 포함하는 3개의 기능 단위들 또는 부분들을 갖는다. SSD 컨트롤러(110)의 플래시 인터페이스(113) 칩)는 각각의 플래시 채널(125)을 통해 플래시 미디어(151)에 액세스한다.
몇몇의 실시 예들에서, SSD(100)는 NVMe 표준 또는 NVMe-oF(NVMe over Fabrics) 표준과 호환 가능하다. NVMe-oF의 경우, 호스트 어플리케이션을 실행하는 호스트 컴퓨터(미도시)는 이더넷, 파이버 채널(Fibre Channel) 및 인피티밴드(InfiniBand)를 포함하나 이에 제한되지 않는 다양한 네트워크 패브릭들을 통해 SSD(100)와 결합 될 수 있다. 호스트 컴퓨터 및 호스트 어플리케이션이라는 용어는 혼동을 야기하지 않고 본 개시에서 상호 교환적으로 사용될 수 있다.
호스트 인터페이스(111)는 PCIe(Peripheral Component Interconnect express) 또는 이더넷과 같은 다양한 프로토콜들을 통해 호스트 I/O 명령들(121)을 수신하고, 명령 인출, 명령 실행의 개시, 데이터 전송들, 및 호스트 어플리케이션으로 완료 엔트리들의 포스팅을 수행 할 수 있다. 호스트 인터페이스(111)는 페치된 명령들을 파싱하고, 파싱된 명령들로부터 LBA, 데이터 전송의 길이, 및 다른 명령 필드들을 추출하고, 이들을 FTL 계층(112)에 제공 할 수 있다. FTL 계층(112)은 논리 어드레스(예를 들어, 논리 블록 어드레스)로부터 대응하는 물리 어드레스로의 변환을 수행하고, 백그라운드 동작들을 실행하는데 필요한 내부 데이터뿐만 아니라 사용자 데이터를 교환하기 위해 플래시 인터페이스(113)와 인터페이싱 한다. 물리 어드레스는 튜플 형태, 예컨대 플래시 채널, 블록 번호, 페이지 번호, 페이지 오프셋일 수 있다. 물리 어드레스는 호스트 I/O 명령의 유형에 의존하여 읽기 명령에 대한 사용자 데이터를 페치하거나 쓰기 명령에 대해 수신된 데이터를 프로그램(또는, 쓰기)하는 데 사용될 수 있다.
호스트 인터페이스(111)가 명령들을 페치하고 LBA들 및 다른 필드들을 FTL 계층(112)에 제공함에 따라, 호스트 인터페이스(111)는 DNN 모듈(161)의 하나 이상의 DNN 엔진으로 입력들(171)의 세트(본 명세서에서, 입력 벡터로도 지칭됨)을 제공할 수도 있다. 각각의 DNN 엔진은 도 2에 도시된 바와 같이 각각의 DNN 모델을 채용하는 DNN 프로세서로서 지칭 될 수도 있다. 도 1에 도시된 예에서, DNN 모듈(161)은 SSD(110)의 플래시 미디어(151)로의 액세스를 관리하고 제어하는 SSD 컨트롤러(110)의 일부로서 구현된다. 그러나, DNN 모듈(161) 및/또는 이하에서 더 상세히 설명 될 예측 에러 추정기(163)는 본 개시의 범위로부터 벗어나지 않고 SSD(100) 외부에 구현 될 수 있음이 이해된다.
일 실시 예에 따르면, SSD 컨트롤러(110)는 FPGA(Field-Programmable Gate Array) 및 ASIC(Application-Specific Integrated Circuit)에서 구현 될 수 있다. 다른 실시 예에서, DNN 모듈(161) 및 SSD 컨트롤러(111)는 단일 ASIC에서 구현 될 수 있다. DNN 모듈(161)로 구현된 본 SSD(100)는 패턴 인식, 이미지 분류, 객체 검출, 및 세그먼테이션을 포함하는 컴퓨터 비전과 같은 다양한 대상 어플리케이션들에 적용될 수 있다. DNN 모듈(161)로 구현된 본 SSD(100)는 자율 주행 및 증강 현실(augmented reality; AR) 또는 가상 현실(virtual reality; VR)과 같은 다른 상업적인 어플리케이션들에 더 적용될 수 있다.
DNN 모듈(161)은 LBA, 연산 코드, 델타 시간, 네임 스페이스 ID(NSID), 호스트 ID 등과 같은 입력 벡터들(171)을 처리하고, 호스트 어플리케이션에 의해 즉각 액세스 될 수 있는 LBA 또는 LBA 클러스터를 예측한다. DNN 예측들의 결과들은 하나 이상의 과거 호스트 I/O 요청 및 현재 호스트 I/O 요청을 현재 호스트 I/O 다음일 수 있는 예측된 호스트 I/O 요청과 관련시키는 예측 테이블(162)에 저장 될 수 있다. 예측 테이블(162)의 형식은 시스템 구성 및 대상 어플리케이션(들)에 의존하여 변할 수 있다.
LBA, 연산 코드, 유휴 시간 등과 같은 DNN 모듈(161)로부터의 예측 출력(172)은 FTL 계층(112)에 공급되어, 호스트 I/O 동작들의 검출된 패턴에 응답하여 SSD(100)의 성능을 최적화하기 위한 다양한 룩업 동작들을 수행한다. 호스트 어플리케이션이 사용자 데이터에 액세스함에 따라, 예측 에러 추정기(163)는 호스트 I/O 액세스의 예측된 패턴과 검출된 실제 호스트 I/O 액세스를 비교하고, 예측 결과과 실제 호스트 액세스 패턴(들)과 일치하지 않으면, DNN 모듈(161)의 임의의 예측 에러들(173)을 계산한다. 예측 에러 추정기(163)는 추가의 트레이닝 및 재학습을 위해 DNN(161)에 예측 에러들(173)을 피드백한다. DNN 모듈(161)의 (재)트레이닝/(재)학습 프로세스는 DNN 모델을 계속 정제하고 SSD(100)의 성능을 최적화하기 위해 호스트 I/O 동작들의 패턴들을 더 잘 예측한다. 반복되는 트레이닝/학습 과정이 반복됨에 따라 예측 테이블(162)이 업데이트 된다.
호스트 인터페이스(111)는 호스트 액세스들이 발생함에 따라 입력 벡터(171)를 DNN 모듈(161)에 공급한다. 입력 벡터(171)는 플래시 미디어(151)로의 액세스 패턴을 식별하는데 사용될 수 있는 호스트 액세스들에 관한 다양한 입력들을 포함 할 수 있다. 호스트 액세스 패턴들이 복수의 입력 벡터를 통해 식별됨에 따라 DNN 모듈(161)은 현재 입력 벡터뿐만 아니라 현재 입력 벡터보다 먼저 수신되는 복수의 입력 벡터를 이용하여 호스트 액세스 패턴을 검출 할 수 있다. 입력 벡터(171)에 포함되는 엔트리들의 예시는 LBA, LBA(들)의 범위, 호스트 액세스(읽기/쓰기)의 길이, 호스트 액세스(읽기/쓰기)의 수, 네임 스페이스 ID, 호스트 ID(예컨대, 호스트 NQN(NVMe Qualified Name), 명령 연산 부호(OPC), 명령 opcode(예컨대, 읽기/쓰기/플러쉬 등)에 의해 지시되는 I/O 유형, 스트림 ID, NVM 세트 ID, 시간 델타 및/또는 타임 스탬프, 및 다른 관련 스토리지 파라미터들 일수 있으나 이에 제한되지 않는다.
FTL(112)로 공급되는 예측 출력들(172)의 예시들은 LBA, LBA 클러스터, 호스트 액세스의 유형(예컨대, 호스트 명령들, 읽기/쓰기/플러쉬 등), 임박한 유휴 간격, 임박한 액세스 볼륨(예컨대, b/w, 크기 등), 및 DNN 모듈(161)에 관한 다른 정보를 포함하되 이에 제한되지 않는다.
일 실시 예에 따르면, 본 시스템 및 방법은 호스트 I/O 동작들의 액세스 패턴들을 효율적으로 검출하기 위해 하나 이상의 DNN 모듈(예컨대, LSTM 네트워크, CNN)과 함께 다양한 특징들을 구현 및 사용할 수 있다. 이러한 특징들의 예시들은 지도 학습(예컨대, 사용자 시작 학습(user-initiated learning)) 및 비지도 학습(예컨대, 자가 학습 또는 훈련), 새로운 패턴들을 학습하고 비활성화된 패턴 잊기를 포함 할 수 있지만 이에 제한되지 않는다. 본 시스템 및 방법의 이러한 몇몇의 특징들은 이하에서 더 구체적으로 설명 될 것이다.
일 실시 예에 따르면, 본 시스템 및 방법은 LSTM 네트워크를 동작시킬 수 있다. LSTM 네트워크는 RNN(Recurrent Neural Network)의 계층을 형성하기 위해 복수의 LSTM 유닛들(또는 블록들)을 포함한다. LSTM 유닛은, 셀, 및 입력 게이트, 출력 게이트, 및 잊기(forget) 게이트와 같은 복수의 게이트로 구성된다. 셀은 임의의 시간 간격들 동안 값들을 "기억"하는 역할을 한다. 이러한 3개의 게이트들 각각은 다중 계층 피드포워드 RNN에서 "일반적인" 인공 뉴런으로서 기능한다. 이러한 게이트들은 가중치 합계의 활성화(활성화 기능 사용)를 계산할 수 있으며, 이러한 게이트들과 셀은 서로 연결된다. "Long Short Term"이라는 표현은 LSTM 네트워크가 장기간 동안 지속될 수 있는 단기 메모리를 모델링 할 수 있다는 사실을 의미한다. LSTM 모델은 중요 이벤트들 사이의 알 수 없는 크기 및 지속 시간의 시간차를 고려할 때 시계열을 분류하고, 처리하고, 예측하는데 적합하다.
I/O 특징 디스크립터들의 시퀀스는 LSTM 네트워크에 의해 유지되며 다음 I/O 동작 또는 다음 몇 개의 I/O 동작들에 관한 추론을 만들기 위해 사용된다. 각 I/O 특징 디스크립터의 항목들은 이상 설명된 바와 같이 "입력 벡터"로서 설명된다. 입력 벡터는 새로운 호스트 명령들이 수신 될 때 업데이트 된다. 시퀀스는 훈련 된 LSTM 네트워크에 대한 입력으로, 이전에 발견된 경우 해당 시퀀스를 일치시킬 수 있으며 다음 I/O 동작(들)에 대한 예측들을 수행 할 수 있다.
일 실시 예에 따르면, 호스트 명령에서의 LBA 액세스는 청크 번호들로 변환 될 수 있으며, 더 큰 청크 크기는 플래시 미디어(151) 상의 소거 블록의 크기에 대응한다. 액세스 될 다음 청크 번호의 DNN 모듈(161)로부터의 예측 출력(172)은 FTL(112)에 공급되어 대응하는 청크 및 소거 블록 상의 프리 페치, 가비지 콜렉션, 및 다른 동작들을 스케줄링 할 수 있다.
LSTM 네트워크는 호스트 액세스가 수행됨으로서 지속적으로 트레이닝 되도록 구성 될 수 있다. LSTM 트레이닝을 위해 선택된 시퀀스의 최대 크기(본 명세서에서 에포크(epoch) 길이로도 지칭됨)는 몇몇 제약들에 기초하여 결정될 수 있다. 예로서, 시퀀스의 최대 크기는 호스트 액세스 패턴이 식별될 수 있는 최대 액세스 길이보다 크거나 같을 수 있다. 또한, 시퀀스의 최대 크기는 패턴 검출을 위해 사용 가능한 계산 리소스들이 다른 SSD 동작들, 특히 호스트 시작 I/O 동작들에 지연이나 영향을 미치지 않는 최대 길이 보다 작거나 같을 수 있다. 일반적으로 최대 에포크 길이는 더 많은 리소스들을 필요로 한다. 일 실시 예에 따르면, LSTM 트레이닝을 위한 시퀀스의 최대 크기는 시스템 요구 사항 및 SSD의 동작 조건이 변함에 따라 선택되고 업데이트 될 수 있다. 일 실시 예에서, LSTM 트레이닝에 기초한 시퀀스의 최대 크기는 플래시 미디어(151)에 사용자 데이터를 저장하고 액세스하는 대상 어플리케이션 또는 대상 어플리케이션들, 트레이닝/학습, 및 호스트 액세스 패턴들의 예측들의 수행을 위한 DNN 모듈(161)의 리소스들(예컨대, 프로세서, 메모리 버퍼)의 이용가능성, 및 I/O 동작들을 위한 호스트 어플리케이션들로부터 수신되는 작업량들에 기초하여 결정될 수 있다.
일 실시 예에 따르면, 본 시스템 및 방법은 호스트 액세스 패턴의 시퀀스들을 검출하기 위해 다중 계층의 뉴럴 네트워크를 채용할 수 있다. 도 2는 일 실시 예에 따른 예시적인 DNN 모델의 블록도를 도시한다. DNN 모델(200)은, 입력 계층(201), 하나 이상의 중간 계층(211) 및 출력 계층(221)을 포함하는 다중 계층을 포함한다. DNN 모델(200)의 각 계층은 여기서는 또한 뉴런으로 지칭되는 복수의 노드를 포함한다. 각 노드 또는 뉴런은 하나 이상의 입력 및 출력을 갖는 계산 단위를 나타냅니다. 계층의 복수의 노드로부터의 각각의 입력은 인접한 계층의 각 노드에 공급 될 수 있다. 유사하게, 출력은 인접 층의 복수의 노드에 공급 될 수 있다.
본 예시 에서, 입력 층(201)은 l개의 노드를 갖고, 중간 계층들(211) 각각은 m 개의 노드를 갖고, 출력 계층(221)은 n 개의 노드를 갖는다. 네트워크의 각 노드는 인접 계층의 모든 노드에 연결됩니다. 노드들 l, m, n의 수는 DNN 모델(200)의 어플리케이션에 따라 서로 동일하거나 상이 할 수 있다. 본 실시 예는 동일한 수의 노드를 갖는 2개의 중간 계층들(211)만을 도시하고 있지만, 본 발명의 범위를 벗어나지 않으면 서, 임의의 개수의 중간 계층과 중간 계층들 각각의 다른 수의 중간 계층이 존재할 수 있다.
일 실시 예에 따르면, DNN 모델(200)은 호스트 컴퓨터상에서 실행되는 어플리케이션에서 구현 될 수 있다. 호스트 컴퓨터는, DNN 모델(200)의 컴퓨팅 리소스들로서 CPU(Central Processing Unit)들, 및/또는 GPU(graphics Processing Unit)들과 같은 복수의 프로세서를 가질 수 있다. 다른 실시 예에 따르면, DNN 모델(200)은 DNN 모델(200)의 컴퓨팅 리소스들로서 하나 이상의 CPU 및/또는 GPU를 포함하는 SSD와 같은 데이터 저장 장치에서 구현 될 수 있다. 다른 실시 예들에서, 복수의 컴퓨팅 리소스들은 컴퓨터 시스템 상에 분산 될 수 있고, DNN 모델(200)의 계산은 하나 이상의 호스트 컴퓨터들 및 하나 이상의 데이터 저장 장치를 통해 분산 될 수 있다.
입력 계층(210)은 입력 벡터들(250)(예컨대, 도 1의 입력 벡터(171))을 수신하고, 출력 계층(221)은 예측 출력들(251)(예컨대, 도 1의 예측 출력(172))을 생성 할 수 있다. 입력 벡터들(250)은 LBA 또는 LBA들의 범위, 연산 코드, 스트림 ID, 네임 스페이스 ID, 데이터 크기, 타임 스탬프 중 하나 이상을 포함 할 수 있다. 예측 출력(251)은 호스트에 의해 발행 될 다음 명령들 또는 다음 명령들의 몇몇에 관한 정보를 포함 할 수 있다. 입력 벡터들(250)의 시퀀스에 기초하여 예측된 호스트 명령들 각각에 대해, 예측 출력(251)은 임박한 호스트 명령 자체, 호스트에 의해 발행될 가능성이 있는 읽기 또는 쓰기 명령에 대응하는 LBA 또는 LBA 범위, 또는 명령의 데이터 사이즈에 대응할 수 있다. 다른 예시 에서, 예측 출력(251)은 예측 된 호스트 명령이 읽기, 쓰기, 플러쉬, (동기화 캐시)명령, 관리 명령, 또는 진단 명령인지를 나타내는 범주 형 변수를 포함 할 수 있다.
일 실시 예에 따르면, LSTM 네트워크를 포함하는 DNN 모델(200)은 다양한 가능한 액세스 패턴들을 사용하여 트레이닝을 수행하기 위해 호스트로부터 SSD로 다수의 랜덤하게 선택된 I/O 작업량들이 전송되는 지정된 트레이닝 모드에서 트레이닝 될 수 있다. 또는, LSTM 네트워크는 SSD 컨트롤러(예컨대, 도 1의 SSD 컨트롤러(110))가, 그 예측 성공률이 계속 개선되는 한 입력 호스트 명령들로부터 주기적으로 그리고 지속적으로 학습하도록 설계 될 수 있다. 임박한 호스트 명령들에 관한 정보는 다음의 몇 가지 호스트 명령들에 관한 추론을 생성하기 위해 훈련된 LSTM 모델로 주기적으로 전송된다. 훈련된 LSTM 모델이 낮은 정확도를 나타내는 경우, SSD 컨트롤러는 완전히 새로운 재 훈련 및/또는 현재 추론 활동이 종료되도록 하는 플래그 또는 값을 설정하고, 새로운 LSTM 트레이닝을 실행하기 위한 리소스들을 할당 및 청구 할 수 있다.
도 1을 참조하면, SSD 컨트롤러(110)는 임박한 호스트 입출력 액세스들에 관한 DNN 모듈(161)로부터의 예측을 사용하여 SSD(100)의 성능을 최적화 한다. 임박한 호스트 I/O 액세스들에 대한 정보를 사용할 수 있는 다양한 방법들이 있다. 예로서, SSD 컨트롤러(110)는 예상되는 사용자 데이터의 프리 페치, 데이터 캐시 만료 정책들의 채용, 필요하다면 FTL 데이터 구조들의 프리 페치, 명령 실행 최적화, 예상되는 호스트 플러쉬 명령에 기초한 쓰기 버퍼 플러쉬 최적화, 예상되는 호스트 "Get Log" 명령에 앞서 통계 및 로그 데이터 준비, 다양한 다른 사용자 I/O 및 관리 NVMe 명령들 수행, NVMe 기반 데이터 저장 장치(예컨대, NVMe 기반 SSD)의 인벤토리 작성, 구성, 및 모니터링을 위한 NVMe-MI 명령 최적화, 예상되는 유휴 기간에 기반한 내부 동작들의 스케줄링의 최적화를 할 수 있다. 또한, SSD 컨트롤러(110)는, 예컨대, 사용자가 AWS(Amazon Web Services) 또는 "Microsoft Windows Azure"와 같은 하이퍼 스케일러에 의해 제공되는 임대된 컴퓨팅 및 저장 리소스들 상에서 새롭게 출시된 어플리케이션을 시작할 때, SSD(100) 상에서 사용자 구성(user-configurable) 리셋을 실행할 수 있다.
DNN 모듈(161)은 호스트 어플리케이션의 길고, 복잡하고, 인터리빙 된 데이터 액세스 패턴을 검출 할 수 있다. 예로서, 특정 LBA 또는 LBA 클러스터에 대한 예측된 임박한 호스트 읽기 명령에 기초하여, SSD(110) 컨트롤러는 데이터를 프리 페치 할 수 있다. 프리 페치된 데이터는 SSD(100)의 온-칩 또는 오프-칩 메모리에 저장 될 수 있다. 이러한 프레 페치된 데이터는 최소한의 지연 시간으로 호스트 어플리케이션에 제공 될 수 있다. 이 기술은 읽기 대기 시간 성능을 크게 감소 시킨다.
DNN 모듈(161)이 임박한 LBA 또는 LBA 클러스터를 식별하여 읽기 또는 쓰기 동작을 DNN 모듈(161)에 대해 실행할 때, SSD 컨트롤러(110)는 그 정보를 사용하여 더 최적화된 캐시 관리를 수행 할 수 있다. 예로서, 캐시 축출(eviction) 동작에서, SSD 컨트롤러(110)는 축출을 위한 캐시에서 블록을 선택해야 한다. DNN 또는 LSTM은 캐시에 존재하는 각 블록에 대한 임박한 호스트 액세스 확률을 계산 및 할당 한다. 블록이 캐시로부터 축출되어야 하는 경우, SSD 컨트롤러(110)는 임박한 액세스 가능성이 가장 낮은 블록을 선택한다. 캐시 내의 다수의 블록들이 호스트 액세스의 동일한 최저 확률을 갖는다면, 이후 SSD 컨트롤러(110)는 축출에 대한 동일한 최저 확률을 갖는 블록들 중에서 가장 오래된 타임 스탬프를 갖는 블록을 선택한다. 예측된 데이터가 온-칩 또는 오프-칩 캐시 버퍼들에 존재한다면, SSD(110) 컨트롤러는 데이터에 대한 축출 우선 순위를 낮출 수 있다. 반면, 특정 LBA 범위들 또는 LBA 클러스터들이 가까운 미래에 예측되지 않으면, SSD(110) 컨트롤러는 LBA들에 대한 축출 우선 순위를 증가시킨다. 축출 우선 순위는 특정 LBA 범위들 또는 LBA 클러스터들에 대한 임박한 액세스의 예측에 기초하여 동적으로 변경 될 수 있다.
호스트 명령들을 실행할 때, 쓰기 캐시(116) 및 읽기 프리 페치 캐시(117)와 같은 플래시 미디어(151)에 저장된 FTL 데이터 구조(115)가 FTL(112)에 페치 될 필요가 있을 수 있다. DNN 모듈(161)이 가까운 미래에 액세스 될 LBA 또는 LBA 클러스터를 예측할 때, SSD 컨트롤러(110)는 FTL 데이터 구조(115)를 프리 페치하여 연관된 호스트 I/O 명령을 실행하기 위한 대기 시간을 감소시킬 수 있다.
호스트 어플리케이션은 일반 데이터 읽기 및 쓰기 명령들 외에도 다양한 명령들을 발행할 수 있다. DNN 모듈(161)이 임박한 명령들을 예측할 때, SSD 컨트롤러(110)는 그 정보를 기회에 따라(opportunistically) 사용할 수 있다. 예로서, 호스트는 때때로 플러쉬 명령을 발행 할 수 있다. 플러쉬 명령이 가까운 미래에 예상되면, SSD 컨트롤러(110)는 잠재적으로 쓰기 캐시 플러쉬 동작을 조기에 시작 할 수 있다. "Get Smart page" 또는 "Get Log page"와 같은 호스트 명령이 예상될 때, SSD 컨트롤러(110)는 데이터를 준비 상태로 유지할 수 있다. 이러한 접근법은 NVMe 호환 SSD의 관리 인터페이스 명령들(예컨대, NVMe-MI 명령들)뿐만 아니라 다양한 관리 명령들과 관련된 SSD(100)에 저장된 데이터를 관리 및 준비하기 위해 기회에 따라 사용될 수 있다.
SSD 컨트롤러(110)는 주기적으로 다수의 하우스-키핑(house-keeping) 작업(본 명세서에서 백그라운드 동작들로도 지칭됨)을 주기적으로 수행 할 수 있다. 일반적으로, SSD 컨트롤러(110)는 동시에 실행 된 호스트 I/O 명령들에 대한 영향을 최소화하기 위해 백그라운드 동작들과 같은 수행을 시도한다. 이러한 동작들은 자연적으로는 본질적으로 비동기이기 때문에 I/O 대기 시간들에 영향을 주지 않으면 서 백그라운드 동작들의 최적화된 스케줄링을 수행하는 것이 어렵고 난해한 문제가 된다. DNN 모듈(161)이 호스트 데이터 액세스들 사이의 유휴 간격을 예측할 때, SSD 컨트롤러(110)는 유휴 간격에 관한 정보를 이용하여 일부 백그라운드 동작들을 기회에 따라 앞당길 수 있다. 유사하게, SSD 컨트롤러(110)는 예상되는 무거운 호스트 데이터 액세스들의 임의의 DNN 예측을 사용하여 일부 백그라운드 동작들을 연기 할 수 있다.
도 3은, 일 실시 예에 따른 호스트 액세스 패턴들을 예측하기 위한 DNN 모듈을 구현하는 예시적인 브리지 장치의 블록도를 보여준다. 브리지 장치(301)는 펌웨어(F/W)(311)명령을 실행하는 프로세셔(310), 프로세서 액세스 모듈(PAM)(312), DNN 모듈(313), 쓰기 버퍼(314), NVMe-oF 하드웨어(H/W) 데이터 경로(315), 읽기 버퍼(316), PCIe 어플리케이션(PAPP) 계층(317), 및 PCIe 루트 포트(RP)(318)를 포함한다. 브리지 장치(301)는 NVMe-oF 표준과 호환될 수 있다. 이 경우, 브리지 장치(301)는 원격 이니시에이터(340)(예컨대, 호스트 컴퓨터 또는 호스트 컴퓨터 상에서 실행중인 어플리케이션)로부터 NVMe-oF 명령들을 수신하고, NVMe와 호환 가능한 SSD일 수 있는 백엔드 SSD(350)로 데이터 저장 인터페이스를 제공할 수 있다. 일 실시 예에서, 브리지 장치(301)는 FPGA 또는 ASIC에서 구현되는 바와 같이 NVMe-oF 표준과 호환 가능한 이더넷 SSD(Ethernet SSD; eSSD) 내에 통합 될 수 있다. 브리지 장치(301)는 DNN 학습 및 트레이닝을 수행하기 위한 컴퓨팅 및 메모리 리소스들을 포함 할 수 있다. 할당된 컴퓨팅 및 메모리 리소스들을 사용하여, 브리지 장치(301)는 호스트 컴퓨터 또는 호스트 어플리케이션으로부터 다양한 계산 및 저장 집중 기능들을 오프 로딩하여 본 예시에서 SSD(350)인 데이터 저장 장치 근처 또는 내부에서 가속된 데이터 액세스를 제공 할 수 있다.
NVMe-oF 하드웨어(H/W) 데이터 경로(315)는 이더넷 기반 전송 프로토콜을 통한 RDMA(Remote Direct Memory Access) 프로토콜을 사용하여 원격 이니시에이터(340)에 호스트 인터페이스를 제공한다. 쓰기 데이터 버퍼(314) 및 읽기 데이터 버퍼(316)를 포함하는 온-칩 데이터 버퍼들은 원격 이니시에이터(340)와 백엔드 SSD(350) 사이의 데이터 전송을 용이하게 하는데 사용된다. PAPP 계층(317) 및 PCIe RP(318)는 백엔드 SSD(350)에 NVMe 인터페이스를 제공한다. 프로세서 액세스 모듈(312)은 NVMe-OF H/W 데이터 경로(315)에 대한 액세스를 펌웨어(311)를 실행하는 임베디드 프로세서(310)에 제공한다. DNN 모듈(313)은 LBA/호스트 액세스 예측을 구현하기 위해 이상 설명된 LSTM/CNN 로직을 구현할 수 있다. NVMe-oF H/W 데이터 경로(315)는 LBA들 및 호스트 명령들과 같은 원격 이니시에이터(340)로부터 수신된 입력 벡터를 DNN 모듈(313)에 공급한다. 임베디드 프로세서(310) 상에서 실행되는 펌웨어(311)는 DNN 모듈(313)로부터 예측된 LBA들 및 연산 코드들을 읽을 수 있을 뿐만 아니라 DNN 모듈(313)을 구성 할 수 있다. 펌웨어(311)는 DNN 모듈(313)로부터의 예측 출력들을 이용하여 DNN 모듈(313)의 예측 정확도 및 다른 성능 파라미터들에 접근 할 수 있다. 펌웨어(311)와 함께 DNN 모듈(313)은 도 1의 예측 에러 추정기(163)와 같은 기능을 수행하기 위해 예측 에러들의 정확도를 추정 할 수 있다.
일 실시 예에 따르면, 데이터 저장 장치의 컨트롤러는 인터페이스를 호스트 컴퓨터로 제공하는 호스트 인터페이스; LBA를, 호스트 인터페이스를 통해 호스트 컴퓨터로부터 수신되는 I/O 요청과 관련되는 PBA로 변환하는 FTL; 데이터 저장 장치의 플래시 미디어로 인터페이스를 제공하여 데이터 저장 장치의 플래시 미디어 상에 저장되는 데이터에 접근하는 플래시 인터페이스; 및 호스트 컴퓨터의 I/O 액세스 패턴을 예측하기 위한 하나 이상의 DNN 모듈을 포함한다. 호스트 인터페이스는 하나 이상의 입력 벡터를 하나 이상의 DNN 모듈에 제공하고, 하나 이상의 DNN 모듈은 하나 이상의 예측 출력들을 하나 이상의 입력 벡터를 사용하여 호스트 컴퓨터로부터 수신되는 하나 이상의 과거 I/O 요청 및 현재 I/O 요청과 관련되는 FTL로 제공하고, 하나 이상의 예측 출력들은 현재 I/O 요청에 이어 적어도 하나의 예측된 I/O 요청을 포함한다. FTL은 적어도 하나의 예측된 I/O 요청과 관련된 플래시 미디어에 저장되는 데이터를 프리 페치한다.
하나 이상의 예측 출력은 호스트 동작들 사이의 유휴 시간을 식별하고, FTL은 유휴 시간 동안 플래시 미디어의 백그라운드 동작들을 수행할 수 있다.
하나 이상의 DNN 모듈은 현재 I/O 요청에 기초하여 복수의 예측 출력들을 저장하는 예측 테이블을 포함할 수 있다.
제어기는 하나 이상의 DNN 모듈로 예측 에러를 제공하여, 하나 이상의 과거 I/O 요청들, 현재 I/O 요청, 및 적어도 하나의 예측된 I/O 요청과 관련되는 I/O 액세스 패턴의 트레이닝 및 학습을 수행하도록 구성되는 예측 에러 추정기를 더 포함할 수 있다.
FTL은, 시간을 결정하고, FTL의 데이터 구조의 페칭 또는 업데이트, 에러 정정의 수행, 데이터의 압축 해제, 데이터의 해독, 백그라운드 동작들의 수행, 호스트 컴퓨터에 통계들 및 로그들의 제공, 및 호스트 컴퓨터의 I/O 액세스 패턴에 기초한 캐시의 오프로딩 중 하나 이상을 수행할 수 있다.
컨트롤러는 FPGA, ASIC, 또는 FPGA 및 ASIC의 조합에서 구현될 수 있다.
하나 이상의 DNN 모듈은 LSTM 네트워크 또는 CNN을 채용할 수 있다.
데이터 저장 장치는 NVMe SSD 또는 NVMe-oF SSD일 수 있다.
하나 이상의 입력 벡터는, LBA, LBA들의 범위들, 호스트 액세스의 길이, 호스트 액세스의 수, 네임스페이스 ID, 호스트 ID, 명령 연산 코드, 명령 연산 코드로 표시되는 I/O 유형, 스트림 ID, NVM 세트 ID, 시간 델타, 및/또는 타임 스탬프 중 하나 이상을 포함할 수 있다.
하나 이상의 예측 출력은 LBA, LBA 클러스터, 호스트 액세스의 유형, 임박한 유휴 간격, 임박한 액세스 볼륨 중 하나 이상을 포함할 수 있다.
하나 이상의 DNN 모듈은 임박한 액세스의 확률을 캐시에 존재하는 각 블록에 할당할 수 있고, 컨트롤러는 캐시로부터 가장 낮은 확률의 블록을 축출할 수 있다.
컨트롤러는, 캐시의 다수의 블록들이 동일하고 가장 낮은 확률을 가지면, 가장 오래된 타임 스탬프를 갖는 블록을 캐시로부터 축출할 수 있다.
다른 실시 예에 따르면, 데이터 저장 장치는, 하나 이상의 플래시 미디어; 하나 이상의 플래시 미디어를 제어하도록 구성되는 컨트롤러; 및 호스트 컴퓨터의 I/O 액세스 패턴을 예측하기 위한 하나 이상의 DNN 모듈을 포함한다. 하나 이상의 DNN 모듈은 컨트롤러로부터 하나 이상의 입력 벡터를 수신하고, 하나 이상의 입력 벡터를 사용하여 호스트 컴퓨터로부터 수신되는 하나 이상의 과거 I/O 요청들 및 현재 I/O 요청과 관련되는 컨트롤러로 하나 이상의 예측 출력을 제공하고, 하나 이상의 예측 출력은 현재 I/O 요청 이후의 적어도 하나의 예측된 I/O 요청을 포함한다. 컨트롤러는 적어도 하나의 예측된 I/O 요청과 관련된 플래시 미디어에 저장된 데이터를 프리 페치한다.
하나 이상의 예측 출력은 호스트 동작들 사이의 유휴 시간을 식별하고, FTL은 유휴 시간 동안 플래시 미디어의 백그라운드 동작들을 수행할 수 있다.
컨트롤러는 하나 이상의 DNN 모듈로 예측 에러를 제공하여 하나 이상의 과거 I/O 요청들, 현재 I/O 요청, 및 적어도 하나의 예측된 I/O 요청과 관련된 호스트 액세스 패턴의 트레이닝 또는 학습을 수행하도록 구성되는 예측 에러 추정기를 포함할 수 있다.
컨트롤러는 FPGA, ASIC, 또는 FPGA 및 ASIC의 조합에서 구현될 수 있다.
데이터 저장 장치는 NVMe SSD 또는 NVMe-oF sSD일 수 있다.
하나 이상의 DNN 모듈은 임박한 액세스의 확률에 기초하여 캐시에 존재하는 각 블록으로 번호를 할당할 수 있고, 컨트롤러는 캐시로부터 가장 낮은 확률의 블록을 축출할 수 있다.
컨트롤러는, 캐시의 다수의 블록들이 동일하고 가장 낮은 확률을 가지면 캐시로부터 가장 오래된 타임 스탬프를 갖는 블록을 축출할 수 있다.
다른 실시 예에 따르면, 브릿지 장치는, 하나 이상의 프로세서; 하나 이상의 DNN 모듈; 하나 이상의 프로세서 및 하나 이상의 DNN 모듈 사이에서 인터페이스를 제공하는 프로세서 액세스 모듈; 호스트 인터페이스; 및 SSD에 대한 장치 인터페이스를 포함한다. 하나 이상의 DNN 모듈은 호스트 인터페이스를 통해 SSD로부터 하나 이상의 입력 벡터를 수신하고, 원격 이니시에이터로부터 수신되는 하나 이상의 과거 I/O 요청, 및 하나 이상의 입력 벡터를 사용하여 원격 이니시에시터로부터 수신되는 현재 I/O 요청과 관련되는 SSD로 하나 이상의 예측 출력을 제공하고, 하나 이상의 예측 출력은 현재 I/O 요청 이후의 적어도 하나의 예측된 I/O 요청을 포함한다. SSD는 적어도 하나의 예측된 I/O 요청과 관련되는 플래시 미디어에 저장되는 데이터를 프리 페치하고, 데이터를 장치 인터페이스를 통해 브릿지 장치로 제공한다.
브릿지 장치는 원격 이니시에티터 및 SSD 사이에서 전송될 데이터를 저장하는 복수의 버퍼를 더 포함할 수 있다.
SSD에 대한 인터페이스는 PPAP 계층 및 PCIe RP를 포함할 수 있다.
호스트 인터페이스는 NVMe-oF와 호환 가능한 패르빅 인터페이스일 수 있고, 장치 인터페이스는 NVMe와 호환 가능할 수 있다.
하나 이상의 DNN 모듈은 FPGA, ASIC, 및 FPGA 및 ASIC의 조합에서 구현될 수 있다.
이상의 예시적인 실시 예들은 DNN을 사용하여 SSD의 성능을 최적화하기 위한 시스템 및 방법을 구현하는 다양한 실시 예들을 도시하기 위해 이상에서 설명되었다. 및 개시된 예시적인 실시 예들로부터의 다양한 변형들 및 일탈들이 해당 기술의 통상의 기술자에게 발생할 것이다. 본 발명의 범위 내로 의도되는 주제가 이하의 청구항들에서 설명된다.

Claims (10)

  1. 데이터 저장 장치의 컨트롤러에 있어서,
    인터페이스를 호스트 컴퓨터로 제공하는 호스트 인터페이스;
    LBA(Logical block address)를, 상기 호스트 인터페이스를 통해 상기 호스트 컴퓨터로부터 수신되는 I/O(Input/Output) 요청과 관련되는 PBA(Physical Block Address)로 변환하는 FTL(Flash Translation Layer);
    상기 데이터 저장 장치의 플래시 미디어에 저장되는 데이터에 접근하기 위한 인터페이스를, 상기 데이터 저장 장치의 상기 플래시 미디어로 제공하는 플래시 인터페이스; 및
    상기 호스트 컴퓨터의 I/O 액세스 패턴을 예측하는 하나 이상의 DNN(Deep Neural Network) 모듈을 포함하되,
    상기 호스트 인터페이스는 하나 이상의 입력 벡터를 상기 하나 이상의 DNN 모듈에 제공하고, 상기 하나 이상의 DNN 모듈은 상기 하나 이상의 입력 벡터를 사용하여 상기 호스트 컴퓨터로부터 수신되는 하나 이상의 과거 I/O 요청 및 현재 I/O 요청과 관련되는 하나 이상의 예측 출력들을 상기 FTL로 제공하고, 그리고 상기 하나 이상의 예측 출력들은 상기 현재 I/O 요청에 이후의 적어도 하나의 예측된 I/O 요청 및 예측 유휴 기간을 포함하고,
    상기 FTL은 상기 적어도 하나의 예측된 I/O 요청과 관련된 상기 플래시 미디어에 저장된 데이터를 프리페치할 것, 또는 상기 하나 이상의 예측 출력들에 기초하여 상기 적어도 하나의 예측된 I/O 요청과 관련된 상기 데이터를 프리페칭하기 앞서 상기 예측 유휴 기간 내에 상기 플래시 미디어의 백그라운드 동작을 수행할 것을 결정하고, 그리고
    상기 하나 이상의 입력 벡터들은 LBA, 및 상기 호스트 컴퓨터의 I/O 액세스 패턴에 대한 식별자를 포함하는 컨트롤러.
  2. 제 1 항에 있어서,
    상기 FTL은 상기 적어도 하나의 예측 I/O 요청과 관련된 상기 데이터의 크기에 기초하여 상기 백그라운드 동작을 연기하는 컨트롤러.
  3. 제 1 항에 있어서,
    상기 하나 이상의 DNN 모듈은:
    상기 현재 I/O 요청에 기초하여, 복수의 예측 출력들을 저장하는 예측 테이블을 포함하는 컨트롤러.
  4. 제 1 항에 있어서,
    상기 하나 이상의 DNN 모듈로 예측 에러를 제공하여, 상기 하나 이상의 과거 I/O 요청들, 상기 현재 I/O 요청, 및 상기 적어도 하나의 예측된 I/O 요청과 관련되는 상기 I/O 액세스 패턴을 상기 하나 이상의 DNN 모듈로 하여금 트레이닝 또는 학습하도록 구성되는 예측 에러 추정기를 더 포함하는 컨트롤러.
  5. 제 1 항에 있어서,
    상기 FTL은, 시간을 결정하고, 상기 FTL의 데이터 구조의 페칭 또는 업데이트, 에러 정정의 수행, 상기 데이터의 압축 해제(un-compressing), 상기 데이터의 해독, 상기 호스트 컴퓨터로 통계들 및 로그들 제공, 및 상기 호스트 컴퓨터의 상기 I/O 액세스 패턴에 기초한 캐시의 오프로딩 중 하나 이상을 수행하는 컨트롤러.
  6. 제 1 항에 있어서,
    상기 하나 이상의 DNN 모듈은, 캐시에 존재하는 각 블록으로 임박한 액세스의 확률을 할당하고, 상기 컨트롤러는 상기 캐시로부터 가장 낮은 확률을 가진 블록을 축출하는 컨트롤러.
  7. 하나 이상의 플래시 미디어;
    상기 하나 이상의 플래시 미디어를 제어하도록 구성되는 컨트롤러; 및
    호스트 컴퓨터의 I/O 액세스 패턴을 예측하기 위한 하나 이상의 DNN(deep neural network) 모듈을 포함하되,
    상기 하나 이상의 DNN 모듈은 상기 컨트롤러로부터 하나 이상의 입력 벡터를 수신하며, 상기 하나 이상의 입력 벡터를 사용하여 상기 호스트 컴퓨터로부터 수신되는 하나 이상의 과거 I/O 요청 및 현재 I/O 요청과 관련되는 하나 이상의 예측 출력들을 상기 컨트롤러로 제공하고, 그리고 상기 하나 이상의 예측 출력들은 상기 현재 I/O 요청에 이후의 적어도 하나의 예측된 I/O 요청 및 예측 유휴 기간을 포함하고,
    상기 컨트롤러는 상기 적어도 하나의 예측된 I/O 요청과 관련된 상기 플래시 미디어에 저장된 데이터를 프리페치할 것을 결정하거나, 또는 상기 하나 이상의 예측 출력들에 기초하여 상기 적어도 하나의 예측된 I/O 요청과 관련된 상기 데이터를 프리페칭하기 앞서 상기 예측 유휴 기간 내에 상기 플래시 미디어의 백그라운드 동작을 수행할 것을 결정하고, 그리고
    상기 하나 이상의 입력 벡터들은 LBA, 및 상기 호스트 컴퓨터의 I/O 액세스 패턴에 대한 식별자를 포함하는 데이터 저장 장치.
  8. 제 7 항에 있어서,
    상기 컨트롤러는 상기 적어도 하나의 예측 I/O 요청과 관련된 상기 데이터의 크기에 기초하여 상기 백그라운드 동작을 연기하는 FTL(flash translation layer)를 포함하는 데이터 저장 장치.
  9. 제 7 항에 있어서,
    상기 컨트롤러는 예측 에러 추정기를 더 포함하고,
    상기 예측 에러 추정기는, 상기 하나 이상의 DNN 모듈로 예측 에러를 제공하여, 상기 하나 이상의 과거 I/O 요청들, 상기 현재 I/O 요청, 및 상기 적어도 하나의 예측된 I/O 요청과 관련되는 상기 호스트 컴퓨터의 I/O 액세스 패턴을 상기 하나 이상의 DNN 모듈로 하여금 트레이닝 또는 학습하도록 구성되는 데이터 저장 장치.
  10. 브릿지 장치에 있어서,
    하나 이상의 프로세서;
    하나 이상의 DNN(deep neural network) 모듈;
    상기 하나 이상의 프로세서 및 상기 하나 이상의 DNN 모듈 사이에 인터페이스를 제공하는 프로세서 액세스 모듈;
    호스트 인터페이스; 및
    SSD(Solid-State Drive)로의 장치 인터페이스를 포함하되,
    상기 하나 이상의 DNN 모듈은 상기 호스트 인터페이스를 통해 상기 SSD로부터 하나 이상의 입력 벡터를 수신하고, 상기 하나 이상의 입력 벡터를 사용하여 원격 이니시에이터로부터의 하나 이상의 과거 I/O 요청 및 상기 원격 이니시에이터로부터 수신된 현재 I/O 요청과 관련되는 하나 이상의 예측 출력들을 상기 SSD로 제공하고, 그리고 상기 하나 이상의 예측 출력들은 상기 현재 I/O 요청에 이후의 적어도 하나의 예측된 I/O 요청 및 예측 유휴 기간을 포함하고,
    상기 SSD는 상기 적어도 하나의 예측된 I/O 요청과 관련되는 플래시 미디어에 저장되는 데이터를 프리페치 할 것, 또는 상기 하나 이상의 예측 출력들에 기초하여 상기 적어도 하나의 예측된 I/O 요청과 관련된 상기 데이터를 프리페칭하기 앞서 상기 예측 유휴 기간 내에 상기 플래시 미디어의 백그라운드 동작을 수행할 것을 결정하고, 그리고 상기 데이터를 상기 장치 인터페이스를 통해 상기 브릿지 장치로 제공하고,
    상기 하나 이상의 입력 벡터들은 LBA, 및 호스트 컴퓨터의 I/O 액세스 패턴에 대한 식별자를 포함하는 브릿지 장치.

KR1020190029002A 2018-04-16 2019-03-13 Dnn을 사용하여 ssd의 성능을 최적화하기 위한 시스템 및 방법 KR102542580B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862658190P 2018-04-16 2018-04-16
US62/658,190 2018-04-16
US16/012,470 2018-06-19
US16/012,470 US10963394B2 (en) 2018-04-16 2018-06-19 System and method for optimizing performance of a solid-state drive using a deep neural network

Publications (2)

Publication Number Publication Date
KR20190120698A KR20190120698A (ko) 2019-10-24
KR102542580B1 true KR102542580B1 (ko) 2023-06-12

Family

ID=68161714

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190029002A KR102542580B1 (ko) 2018-04-16 2019-03-13 Dnn을 사용하여 ssd의 성능을 최적화하기 위한 시스템 및 방법

Country Status (3)

Country Link
US (1) US10963394B2 (ko)
KR (1) KR102542580B1 (ko)
CN (1) CN110389909B (ko)

Families Citing this family (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11494484B2 (en) * 2016-10-24 2022-11-08 Nubeva, Inc. Leveraging instrumentation capabilities to enable monitoring services
US11494582B2 (en) 2018-02-08 2022-11-08 Western Digital Technologies, Inc. Configurable neural network engine of tensor arrays and memory cells
US11164073B2 (en) 2018-02-08 2021-11-02 Western Digital Technologies, Inc. Systolic neural network processor with feedback control
KR102608825B1 (ko) * 2018-04-26 2023-12-04 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이의 동작 방법
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
US11816043B2 (en) 2018-06-25 2023-11-14 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of I/O requests
CN109189693B (zh) * 2018-07-18 2020-10-30 深圳大普微电子科技有限公司 一种对lba信息进行预测的方法及ssd
KR20200015260A (ko) * 2018-08-03 2020-02-12 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
EP3626167A1 (en) * 2018-09-21 2020-03-25 IMEC vzw A method of generating a model for heart rate estimation from a photoplethysmography signal and a method and a device for heart rate estimation
US11366610B2 (en) 2018-12-20 2022-06-21 Marvell Asia Pte Ltd Solid-state drive with initiator mode
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11200193B2 (en) 2019-03-14 2021-12-14 Marvell Asia Pte, Ltd. Transferring data between solid state drives (SSDs) via a connection between the SSDs
EP3938880A1 (en) 2019-03-14 2022-01-19 Marvell Asia Pte, Ltd. Ethernet enabled solid state drive (ssd)
CN113767360A (zh) * 2019-03-14 2021-12-07 马维尔亚洲私人有限公司 在驱动器级别处对非易失性存储器联网消息的终止
US10929058B2 (en) * 2019-03-25 2021-02-23 Western Digital Technologies, Inc. Enhanced memory device architecture for machine learning
US11783176B2 (en) 2019-03-25 2023-10-10 Western Digital Technologies, Inc. Enhanced storage device memory architecture for machine learning
US10958527B2 (en) * 2019-06-12 2021-03-23 International Business Machines Corporation Transaction fencing in a multi-domain network
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11301132B2 (en) * 2019-08-30 2022-04-12 Micron Technology, Inc. Scheduling media management operations based on provided host system usage requirements
US11003384B2 (en) 2019-08-30 2021-05-11 Micron Technology, Inc. Scheduling media management operations based on determined host system usage requirements
KR20210032222A (ko) * 2019-09-16 2021-03-24 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그것의 동작 방법
US11711310B2 (en) 2019-09-18 2023-07-25 Tweenznet Ltd. System and method for determining a network performance property in at least one network
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US11971824B2 (en) 2019-10-28 2024-04-30 Aetherai Ip Holding Llc Enhancing memory utilization and throughput in executing a computational graph
CN110764714B (zh) * 2019-11-06 2021-07-27 深圳大普微电子科技有限公司 一种数据处理方法、装置、设备及可读存储介质
US11175856B2 (en) * 2019-11-08 2021-11-16 Micron Technology, Inc. Background operation selection based on host idle time
US20210142146A1 (en) * 2019-11-13 2021-05-13 Micron Technology, Inc. Intelligent image sensor stack
CN110955405B (zh) * 2019-11-26 2023-07-25 深圳鲲云信息科技有限公司 一种输入数据的处理及指数值获取方法、装置及电子设备
US11716338B2 (en) * 2019-11-26 2023-08-01 Tweenznet Ltd. System and method for determining a file-access pattern and detecting ransomware attacks in at least one computer network
US11218396B2 (en) * 2019-12-23 2022-01-04 Seagate Technology Llc Port-to-port network routing using a storage device
KR102211655B1 (ko) 2019-12-26 2021-02-04 한양대학교 에리카산학협력단 프록시 서버 및 이를 이용한 웹 오브젝트 예측 방법
CN111176582A (zh) * 2019-12-31 2020-05-19 北京百度网讯科技有限公司 矩阵存储方法、矩阵访问方法、装置和电子设备
CN111240743B (zh) * 2020-01-03 2022-06-03 格兰菲智能科技有限公司 人工智能集成电路
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
KR20210092980A (ko) * 2020-01-17 2021-07-27 삼성전자주식회사 스토리지 컨트롤러, 이를 포함하는 스토리지 시스템 및 스토리지 컨트롤러의 동작 방법
US11972361B2 (en) * 2020-01-29 2024-04-30 Samsung Electronics Co., Ltd. Performance optimization of object grouping schema in a network key-value storage device using adaptive regression
US11379447B2 (en) 2020-02-06 2022-07-05 Alibaba Group Holding Limited Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller
US10997080B1 (en) 2020-02-11 2021-05-04 Western Digital Technologies, Inc. Method and system for address table cache management based on correlation metric of first logical address and second logical address, wherein the correlation metric is incremented and decremented based on receive order of the first logical address and the second logical address
KR102267477B1 (ko) * 2020-02-20 2021-06-22 삼성전자주식회사 스토리지 장치 및 이의 동작 방법
US11449386B2 (en) 2020-03-20 2022-09-20 Alibaba Group Holding Limited Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory
CN113435601A (zh) * 2020-03-23 2021-09-24 华为技术有限公司 数据预取方法、装置以及存储设备
US11636059B2 (en) * 2020-03-31 2023-04-25 Samsung Electronics Co., Ltd. Scaling performance in a storage server with storage devices
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11301173B2 (en) 2020-04-20 2022-04-12 Alibaba Group Holding Limited Method and system for facilitating evaluation of data access frequency and allocation of storage device resources
US11281575B2 (en) * 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11294808B2 (en) 2020-05-21 2022-04-05 Micron Technology, Inc. Adaptive cache
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US20210390053A1 (en) * 2020-06-15 2021-12-16 Micron Technology, Inc. Host-Assisted Memory-Side Prefetcher
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11409657B2 (en) 2020-07-14 2022-08-09 Micron Technology, Inc. Adaptive address tracking
US11422934B2 (en) 2020-07-14 2022-08-23 Micron Technology, Inc. Adaptive address tracking
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
SG10202009754QA (en) * 2020-10-01 2020-11-27 Flexxon Pte Ltd Module and method for detecting malicious activities in a storage device
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
CN112433682B (zh) * 2020-12-15 2023-12-05 合肥大唐存储科技有限公司 固态硬盘中控制参数的获取方法、存储介质和电子装置
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11514992B2 (en) 2021-02-25 2022-11-29 Microchip Technology Inc. Method and apparatus for reading a flash memory device
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
CN113094368B (zh) * 2021-04-13 2022-08-05 成都信息工程大学 一种提升缓存访问命中率的系统及方法
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
CN113162632B (zh) * 2021-04-29 2022-08-09 东方红卫星移动通信有限公司 智能qc-ldpc译码方法、译码器及低轨卫星通信系统
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
US11934696B2 (en) 2021-05-18 2024-03-19 Microchip Technology Inc. Machine learning assisted quality of service (QoS) for solid state drives
WO2022245385A1 (en) * 2021-05-18 2022-11-24 Microchip Technology Inc. Machine learning assisted quality of service (qos) for solid state drives
US11699493B2 (en) 2021-05-24 2023-07-11 Microchip Technology Inc. Method and apparatus for performing a read of a flash memory using predicted retention-and-read-disturb-compensated threshold voltage shift offset values
CN113223584A (zh) * 2021-05-26 2021-08-06 合肥康芯威存储技术有限公司 一种存储器及其数据读取方法
US11514994B1 (en) 2021-05-28 2022-11-29 Microchip Technology Inc. Method and apparatus for outlier management
US11513720B1 (en) 2021-06-11 2022-11-29 Western Digital Technologies, Inc. Data storage device having predictive analytics
KR102365312B1 (ko) 2021-06-17 2022-02-23 삼성전자주식회사 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법
KR20230031425A (ko) * 2021-08-27 2023-03-07 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
WO2023055676A1 (en) 2021-09-28 2023-04-06 Microchip Technology Inc. Ldpc decoding with trapped-block management
WO2023055462A1 (en) * 2021-09-30 2023-04-06 Micron Technology, Inc. Delta predictions for page scheduling
CN113741567B (zh) * 2021-11-08 2022-03-29 广东省新一代通信与网络创新研究院 矢量加速器及其控制方法、装置
US20230236977A1 (en) * 2022-01-21 2023-07-27 Nvidia Corporation Selectable cache policy
US20230251792A1 (en) * 2022-02-04 2023-08-10 Western Digital Technologies, Inc. Memory Device Based Accelerated Deep-Learning System
CN114637466B (zh) * 2022-03-03 2022-11-11 深圳大学 一种数据读写行为推测方法、装置、存储介质及电子设备
US11977779B2 (en) * 2022-05-11 2024-05-07 Bank Of America Corporation Smart queue for distributing user requests to automated response generating systems
US11983442B2 (en) * 2022-06-22 2024-05-14 Western Digital Technologies, Inc. Data storage device and method for multi-level conditional prediction of future random read commands

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160381176A1 (en) 2015-06-25 2016-12-29 International Business Machines Corporation Data prefetching for large data systems
US20170185543A1 (en) 2015-12-29 2017-06-29 Emc Corporation Method and system for providing access of a storage system using a shared storage module as a transport mechanism
US20180067863A1 (en) 2016-01-22 2018-03-08 Samsung Electronics Co., Ltd. Computing system with cache management mechanism and method of operation thereof
US20180276116A1 (en) 2017-03-21 2018-09-27 Western Digital Technologies, Inc. Storage System and Method for Adaptive Scheduling of Background Operations
US20180303028A1 (en) 2017-04-19 2018-10-25 Viking Gmbh Method for operating a system of self-driving ground working devices

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8112755B2 (en) * 2006-06-30 2012-02-07 Microsoft Corporation Reducing latencies in computing systems using probabilistic and/or decision-theoretic reasoning under scarce memory resources
US7979627B2 (en) * 2007-05-14 2011-07-12 Buffalo Inc. Storage device with binary and multivalued memory
US8468318B2 (en) * 2010-09-15 2013-06-18 Pure Storage Inc. Scheduling of I/O writes in a storage environment
US9582204B2 (en) * 2014-01-07 2017-02-28 Apple Inc. Speculative prefetching of data stored in flash memory
US9959203B2 (en) * 2014-06-23 2018-05-01 Google Llc Managing storage devices
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US10025532B2 (en) 2015-09-11 2018-07-17 Sandisk Technologies Llc Preserving read look ahead data in auxiliary latches
KR102229013B1 (ko) * 2016-09-02 2021-03-17 삼성전자주식회사 자동 스트림 검출 및 할당 알고리즘
US10394706B2 (en) * 2017-11-02 2019-08-27 Western Digital Technologies, Inc. Non-volatile storage with adaptive command prediction
US10884637B2 (en) * 2018-04-03 2021-01-05 Elastic Flash Inc. Workload based storage optimization

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160381176A1 (en) 2015-06-25 2016-12-29 International Business Machines Corporation Data prefetching for large data systems
US20170185543A1 (en) 2015-12-29 2017-06-29 Emc Corporation Method and system for providing access of a storage system using a shared storage module as a transport mechanism
US20180067863A1 (en) 2016-01-22 2018-03-08 Samsung Electronics Co., Ltd. Computing system with cache management mechanism and method of operation thereof
US20180276116A1 (en) 2017-03-21 2018-09-27 Western Digital Technologies, Inc. Storage System and Method for Adaptive Scheduling of Background Operations
US20180303028A1 (en) 2017-04-19 2018-10-25 Viking Gmbh Method for operating a system of self-driving ground working devices

Also Published As

Publication number Publication date
KR20190120698A (ko) 2019-10-24
CN110389909A (zh) 2019-10-29
US20190317901A1 (en) 2019-10-17
US10963394B2 (en) 2021-03-30
CN110389909B (zh) 2022-03-15

Similar Documents

Publication Publication Date Title
KR102542580B1 (ko) Dnn을 사용하여 ssd의 성능을 최적화하기 위한 시스템 및 방법
US11948073B2 (en) Machine learning inference engine scalability
US10331997B2 (en) Adaptive configuration of a neural network device
US8930625B2 (en) Weighted history allocation predictor algorithm in a hybrid cache
CN112997138A (zh) 对存储介质访问的支持人工智能的管理
US9396164B2 (en) Sparsity-driven matrix representation to optimize operational and storage efficiency
US20140089631A1 (en) Power savings via dynamic page type selection
US10748060B2 (en) Pre-synaptic learning using delayed causal updates
US11586578B1 (en) Machine learning model updates to ML accelerators
US11449230B2 (en) System and method for Input/Output (I/O) pattern prediction using recursive neural network and proaction for read/write optimization for sequential and random I/O
US9558123B2 (en) Retrieval hash index
US11301250B2 (en) Data prefetching auxiliary circuit, data prefetching method, and microprocessor
CN115516437A (zh) 主机辅助的存储器侧预取器
KR20160081815A (ko) 데이터 관리 메커니즘을 구비하는 전자 시스템 및 그것의 동작 방법
US20210149805A1 (en) Method and Apparatus for Adjusting Cache Prefetch Policies Based on Predicted Cache Pollution From Dynamically Evolving Workloads
CN112416437A (zh) 信息处理方法、信息处理装置和电子设备
TW202238368A (zh) 記憶體通道控制器之晶片上互連
US9032152B2 (en) Cache miss detection filter
CN113435601A (zh) 数据预取方法、装置以及存储设备
US20200379814A1 (en) Computer resource scheduling using generative adversarial networks
US12001382B2 (en) Methods, apparatus, and articles of manufacture to generate command lists to be offloaded to accelerator circuitry
CN118043790A (zh) 高带宽收集高速缓存
US11263517B1 (en) Flexible weight expansion
CN108564170B (zh) 一种基于noc的可重构神经网络运算方法和电路
US8484423B2 (en) Method and apparatus for controlling cache using transaction flags

Legal Events

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