KR20230135748A - 신경망을 이용하여 쓰기 주소를 결정하는 데이터 저장 장치 - Google Patents

신경망을 이용하여 쓰기 주소를 결정하는 데이터 저장 장치 Download PDF

Info

Publication number
KR20230135748A
KR20230135748A KR1020220033095A KR20220033095A KR20230135748A KR 20230135748 A KR20230135748 A KR 20230135748A KR 1020220033095 A KR1020220033095 A KR 1020220033095A KR 20220033095 A KR20220033095 A KR 20220033095A KR 20230135748 A KR20230135748 A KR 20230135748A
Authority
KR
South Korea
Prior art keywords
data
address
circuit
unit storage
storage device
Prior art date
Application number
KR1020220033095A
Other languages
English (en)
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 에스케이하이닉스 주식회사
Priority to KR1020220033095A priority Critical patent/KR20230135748A/ko
Priority to US17/889,297 priority patent/US11921628B2/en
Publication of KR20230135748A publication Critical patent/KR20230135748A/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • 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
    • 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/1008Correctness of operation, e.g. memory ordering
    • 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
    • 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/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • 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/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • 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/7202Allocation control and policies
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 기술에 의한 데이터 저장 장치는 다수의 단위 저장 공간을 포함하는 하나 또는 둘 이상의 비휘발성 메모리 장치; 쓰기 요청을 처리하기 위하여 다수의 단위 저장 공간 중 하나의 단위 저장 공간을 추천하는 추천 회로를 포함하되, 추천 회로는 요청 정보, 쓰기 요청에 대응하는 목표 주소, 다수의 단위 저장 공간에 저장된 데이터의 주소로부터 생성된 특징 데이터를 신경망 회로에 적용하여 하나의 단위 저장 공간을 추천한다.

Description

신경망을 이용하여 쓰기 주소를 결정하는 데이터 저장 장치{DATA STORAGE DEVICE FOR DETERMINING A WRITE ADDRESS USING A NEURAL NETWORK}
본 기술은 신경망을 이용하여 쓰기 주소를 결정하는 데이터 저장 장치에 관한 것이다.
솔리드 스테이트 드라이브(SSD)는 낸드 플래시 메모리와 같은 반도체 메모리에 데이터를 저장한다.
낸드 플래시 메모리는 단일 플레인 기준 읽기 최대 320MB/s, 쓰기 최대 42MB/s의 입출력 대역폭을 가진다.
이에 비하여 SSD에 채택되고 있는 NVMe 인터페이스는 최대 7.9 GB/s의 대역폭을 가진다.
이와 같이 인터페이스 장치와 낸드 플래시 메모리 장치 사이의 속도 차이를 극복하기 위하여 디램 버퍼를 추가하거나 서로 다른 채널/칩/다이/플레인에 나누어 데이터를 병렬적으로 처리하는 기술을 채택한다.
예를 들어 쓰기 동작 시에는 디램 버퍼에 데이터를 저장하고 버퍼의 데이터를 낸드 플래시 메모리에 플러시함으로써 쓰기 지연을 숨길 수 있다.
그러나 읽기 동작 시에는 낸드 플래시 메모리에서 출력된 데이터가 디램 버퍼를 통해 외부로 출력되기까지 대기해야 하므로 읽기 지연을 숨길 수 없다.
SSD와 같은 데이터 저장 장치에 제공되는 읽기 요청은 랜덤한 주소 패턴을 가지는 것이 일반적이어서 데이터를 프리페칭하여 읽기 성능을 향상시키기 어려워서 병렬적인 읽기 동작을 통해 성능을 향상시키는 것이 사실상 유일한 방법이다.
종래의 SSD에서는 입출력 요청을 여러 채널로 분산시키는 채널 스트라이핑, 한 패키지에서 입출력 요청을 처리하는 동안 입력된 요청을 다른 패키지에서 처리하는 웨이 파이프라이닝 등의 병렬 처리 동작을 수행할 수 있다.
또한 하나의 낸드 플래시 메모리 패키지는 독립적으로 동작 가능한 다수의 다이를 포함하며, 각 다이는 여러 개의 플레인을 포함한다. 다이는 웨이로 지칭하기도 한다.
이에 따라 다수의 다이에 번갈아가며 요청을 보내는 다이 인터리빙과 두 개 이상의 플레인을 동시에 동작시키는 멀티 플레인 동작을 통해 병렬 처리 동작을 수행한다.
종래에는 채널, 패키지, 다이, 플레인 수준의 병렬 처리 동작을 통해 쓰기 주소를 결정할 수 있으나 이는 미래의 읽기 요청 패턴을 고려하지 못하여 데이터 저장 장치의 병렬성을 최대로 활용하지 못하는 문제가 있다.
그 결과 동일한 채널이나 동일한 다이에 저장된 데이터에 대한 읽기 요청이 다수 개 제공되는 경우에는 병렬적인 동작이 불가능하여 읽기 성능을 향상시키기 어려운 문제가 있다.
KR 10-2021-0019576 A US 2020/0110536 A1
N. Elyasi, C. Choi, A. Sivasubramaniam, J. Yang and V. Balakrishnan, "Trimming the Tail for Deterministic Read Performance in SSDs," 2019 IEEE International Symposium on Workload Characterization (IISWC), 2019, pp. 49-58, doi: 10.1109/IISWC47752.2019.9042073. N. Elyasi, M. Arjomand, A. Sivasubramaniam, M. T. Kandemir and C. R. Das, "Content Popularity-Based Selective Replication for Read Redirection in SSDs," 2018 IEEE 26th International Symposium on Modeling, Analysis, and Simulation of Computer and Telecommunication Systems (MASCOTS), 2018, pp. 1-15, doi: 10.1109/MASCOTS.2018.00009. J. Liang, Y. Xu, D. Sun and S. Wu, "Improving Read Performance of SSDs via Balanced Redirected Read," 2016 IEEE International Conference on Networking, Architecture and Storage (NAS), 2016, pp. 1-10, doi: 10.1109/NAS.2016.7549406. U. Gupta et al., "The architectural implications of facebook's dnn-based personalized recommendation," in 2020 IEEE International Symposium on High Performance Computer Architecture (HPCA), 2020: IEEE, pp. 488-501. https://www.tensorflow.org/text/guide/word_embeddings
본 기술은 신경망 기술을 이용하여 미래에 읽기 요청을 처리할 때 병렬 처리 동작이 가능하도록 쓰기 주소를 결정하는 데이터 저장 장치에 관한 것이다.
본 발명의 일 실시예에 의한 데이터 저장 장치는 다수의 단위 저장 공간을 포함하는 하나 또는 둘 이상의 비휘발성 메모리 장치; 쓰기 요청을 처리하기 위하여 다수의 단위 저장 공간 중 하나의 단위 저장 공간을 추천하는 추천 회로를 포함하되, 추천 회로는 요청 정보, 쓰기 요청에 대응하는 목표 주소, 다수의 단위 저장 공간에 저장된 데이터의 주소로부터 생성된 특징 데이터를 신경망 회로에 적용하여 하나의 단위 저장 공간을 추천한다.
본 기술은 신경망을 이용해 미래의 읽기 패턴을 고려하여 쓰기 주소를 결정함으로써 데이터 저장 장치 내부의 병렬성을 최대로 활용하여 읽기 성능을 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 의한 데이터 저장 장치를 나타내는 블록도.
도 2는 본 발명의 일 실시예에 의한 추천 회로를 나타내는 블록도.
도 3은 임베딩 테이블을 나타내는 도면.
도 4는 비교 벡터 갱신 동작을 나타내는 설명도.
도 5는 학습 동작을 위한 학습 데이터 생성 방법을 나타내는 설명도.
도 6은 본 발명의 효과를 나타내는 그래프.
이하에서는 첨부한 도면을 참조하여 본 발명의 실시예를 개시한다.
도 1은 본 발명의 일 실시예에 의한 데이터 저장 장치(1000)를 나타내는 블록도이다.
이하에서는 데이터 저장 장치(1000)의 일 예로서 NAND 플래시 메모리를 포함하는 솔리드 스테이트 드라이브(SSD)를 예로 들어 본 발명을 개시한다.
이에 따라 데이터 저장 장치(1000)를 SSD 또는 SSD 장치로 지칭할 수 있다.
데이터 저장 장치(1000)는 호스트 인터페이스(10), FTL(20), 디램(30), 트랜잭션 큐(40), 채널(50), 및 플래시 메모리(60)를 포함한다.
데이터 저장 장치(1000)는 추천 회로(100)를 더 포함한다.
호스트 인터페이스(10)는 예를 들어 NVMe 표준에 의하여 호스트로부터 요청을 수신하고, 요청의 처리 결과를 호스트에 전송한다. NVMe 표준을 지원하는 인터페이스 기술 자체는 종래의 기술로서 구체적인 개시를 생략한다.
호스트 인터페이스(10)는 페이지 단위의 쓰기 요청을 생성하는데 쓰기 데이터가 한 페이지를 넘는 경우 다수의 페이지 단위의 쓰기 요청을 생성하여 개별적으로 FTL(20)과 추천 회로(100)에 제공할 수 있다.
이때 다수의 페이지 단위의 쓰기 요청은 순차적으로 제공될 수 있다. 이에 따라 FTL(20)과 추천 회로(100)는 하나의 논리 페이지 단위로 동작할 수 있다.
FTL(Flash Translation Layer, 20)은 SSD에서 일반적으로 사용되는 구성으로서 주소 맵핑, 가비지 콜렉션, 웨어 레벨링 등의 동작을 제어하며 이에 대해서는 구체적인 개시를 생략한다.
본 실시예에서 FTL(20)은 페이지 할당 회로(21)를 더 포함한다.
페이지 할당 회로(21)는 쓰기 요청에 대응하여 추천 회로(100)에서 제공한 추천 주소에 포함된 페이지를 할당한다.
본 실시예에서 추천 회로(100)에서 제공하는 추천 주소는 다이 주소에 대응한다. 이하에서는 다이 주소를 다이 번호 또는 다이 ID로 지칭할 수 있다. 플래시 메모리에서 다이는 웨이로 지칭할 수 있으며 이에 따라 다이 주소를 웨이 주소로 지칭할 수도 있다.
즉 페이지 할당 회로(21)는 다이에 포함된 물리 페이지를 실제 쓰기 주소로 제공한다. 이에 따라 할당된 페이지를 쓰기 주소로 지칭하고 페이지 할당 회로(21)는 쓰기 주소 할당 회로(21)로 지칭할 수 있다.
본 발명에서 제공하는 추천 주소가 다이 주소에 한정되는 것은 아니며 다른 실시예에서는 병렬적 처리를 수행할 수 있는 다른 단위의 주소를 추천 주소로 제공할 수 있다.
예를 들어 채널 단위의 병렬성 확보를 고려하는 경우 추천 주소로서 채널 주소를 제공할 수 있으며 페이지 할당 회로(21)는 추천된 채널 내에서 페이지 주소를 할당한다.
또 다른 예에서 다이의 하위 단위인 플레인 단위에서 병렬성 확보를 고려할 수 있는데 이 경우에는 추천 주소로서 플레인 주소를 제공할 수 있으며 페이지 할당 회로(21)는 추천된 플레인 내에서 페이지 주소를 할당할 수 있다.
이외에도 다양한 설계 변경이 가능하며 이들은 본 발명의 개시로부터 통상의 기술자가 용이하게 알 수 있는 것이다.
디램(30)은 호스트와 트랜잭션 큐(40) 사이에 연결되어 읽기 요청 또는 쓰기 요청을 위한 데이터를 저장한다.
호스트 인터페이스(10)는 DMA 제어 회로(11)를 더 포함하며 이를 통해 DMA 기술을 이용하여 호스트에 저장된 데이터를 디램(50)으로 읽어오거나 디램(50)에 저장된 데이터를 호스트에 제공할 수 있다.
DMA 기술을 이용하여 호스트와 SSD 사이에서 데이터를 송수신하는 기술 자체는 종래의 기술이므로 이에 대한 구체적인 개시는 생략한다.
FTL(20)은 할당된 페이지에 따라 주소 맵핑 동작을 수행할 수 있다.
트랜잭션 큐(40)는 플래시 메모리(50) 장치에 대한 읽기, 쓰기 요청에 대응하여 명령과 데이터를 큐잉하는 동작을 수행한다.
트랜잭션 큐(40)의 동작 자체는 종래의 구성이므로 구체적인 개시를 생략한다.
플래시 메모리(60)는 채널(50)에 연결되어 명령과 데이터를 송수신한다.
도 1에는 4개의 채널(50)이 도시되어 있으나 채널(50)의 개수는 실시예에 따라 다양하게 변경될 수 있다.
도 1에는 하나의 채널(50)에 하나의 플래시 메모리(60)가 연결되어 있으나 실시예에 따라 하나의 채널(50)에 다수의 플래시 메모리(60)가 연결될 수 있다.
플래시 메모리(60) 각각은 그 내부에 병렬적으로 동작할 수 있는 다수의 다이(70)를 포함한다.
도 1에는 하나의 플래시 메모리(60)에 두 개의 다이(70)가 포함된 것으로 도시되어 있으나 실시예에 따라 하나의 플래시 메모리(60)에 더 많은 개수의 다이(70)가 포함될 수 있다.
추천 회로(100)는 호스트 인터페이스(10)를 통해 페이지 단위의 쓰기 요청을 수신하면 이에 대응하는 추천 주소를 결정하여 페이지 할당 회로(21)에 제공한다. 전술한 바와 같이 본 실시예에서 추천 주소는 다이 주소에 대응한다.
본 실시예에서 추천 회로(100)는 추천 주소 결정을 위하여 신경망 기술을 사용한다.
추천 회로(100)는 하드웨어, 소프트웨어 또는 하드웨어와 소프트웨어의 조합으로 구현되어 신경망에 대한 학습 동작을 수행하고 학습된 신경망을 이용하여 추론 동작을 수행할 수 있다.
추천 회로(100)는 미래에 수행될 읽기 요청을 처리하는 과정에서 내부 병렬성을 최대로 활용할 수 있도록 추천 주소를 결정한다.
본 기술에서는 할당하고자 하는 목표 페이지 정보와, 각 다이에 저장된 페이지 정보를 이용하여 목표 페이지와 비슷한 시점에 각 다이에 요청이 주어질 확률을 예측하고 이 확률이 가장 낮은 다이에서 목표 페이지를 할당한다.
추천 회로(100)는 신경망 기술을 이용하여 위와 같은 확률이 가장 낮은 다이 주소를 추천한다.
본 실시예에서는 신경망 기술의 일종인 추천 시스템 기술을 응용하는데 종래의 추천 시스템은 사용자의 정보를 나타내는 임베딩 벡터와 아이템의 정보를 나타내는 임베딩 벡터를 비교하여 사용자가 해당 아이템을 클릭할 확률을 출력한다.
종래의 추천 시스템의 구성 및 동작은 비특허문헌 4에 상세히 기재된 바 있으므로 구체적인 설명을 생략한다.
도 2는 추천 회로(100)를 나타내는 블록도이다.
추천 회로(100)는 임베딩 테이블(110), 비교 벡터 생성 회로(120), 연접 회로(130), 다층 신경망 회로(140) 및 결정 회로(150)를 포함한다.
결정 회로(150)는 다층 신경망 회로(140)에서 출력된 다이별 점수를 참조하여 추천 주소를 결정한다.
예를 들어 다이별 점수는 목표 페이지와 비슷한 시점에 해당 다이에 요청이 주어질 확률에 대응할 수 있다. 이 경우 다이별 점수가 가장 낮은 다이의 주소를 추천 주소로 결정할 수 있다.
다층 신경망 회로(140)는 특징 벡터를 입력받아 각 다이별 점수를 출력한다. 다층 신경망 회로(140)는 완전 연결 신경망의 형태를 가질 수 있다.
연접 회로(130)는 요청 벡터, 목표 벡터, 비교 벡터를 연접하여 하나의 특징 벡터를 생성한다.
연접 회로(130)에 제공되는 요청 벡터는 요청의 순차 접근 또는 랜덤 접근 여부, 요청의 크기를 원소로 포함한다.
또한 연속된 요청에 대하여 같은 다이를 추천하지 않기 위하여 이전 요청에 대하여 추천했던 다이 주소를 더 포함한다.
임베딩 테이블(110)은 다수의 행을 구비한 테이블 구조로서 각 행은 논리 페이지 주소를 이용하여 접근할 수 있으며, 테이블의 행은 논리 페이지 주소에 대응하는 임베딩 벡터를 저장한다.
도 3은 임베딩 테이블(110)의 구조를 나타내는데 예를 들어 논리 페이지 주소(LPN) p에 대응하는 임베딩 벡터는 {e0, e1, ..., e8, e9}이다.
입력된 데이터를 벡터 형태로 변환하는 임베딩 기술은 비특허문헌 5와 같이 잘 알려진 것이므로 임베딩 기술 자체에 대한 구체적인 설명은 생략한다.
임베딩 테이블(110)은 신경망 학습 동작을 통해 결정되는데 이에 대해서는 아래에서 구체적으로 개시한다.
본 실시예에서 목표 페이지 정보는 쓰기 요청된 논리 페이지 주소(LPN)에 대응한다.
비교 벡터 생성 회로(120)는 다수의 다이 각각에 대응하는 다수의 비교 벡터를 생성한다.
본 실시예에서는 다수의 다이가 존재하므로 비교 벡터 역시 이에 대응하여 다수 개가 생성된다.
비교 벡터 생성 회로(120)는 예를 들어 1번 다이에 대응하는 비교 벡터를 생성하기 위하여 1번 다이에 저장된 논리 페이지 각각을 임베딩 테이블(110)에 적용하여 다수의 임베딩 벡터를 수신하고 수신된 다수의 임베딩 벡터를 원소별로 더하여 1번 다이에 대응하는 비교 벡터를 생성할 수 있다.
이와 같은 방식으로 다수의 다이에 대응하는 다수의 비교 벡터를 생성한다.
목표 벡터는 페이지 단위의 쓰기 요청이 입력될 때마다 쓰기 요청된 논리 주소에 대응하여 생성될 수 있다.
이에 비하여 비교 벡터 생성 회로(120)는 쓰기 요청이 수행되기 전에 미리 비교 벡터를 계산할 수 있다.
비교 벡터 생성 회로(120)는 다이에 대하여 쓰기 요청이 수행된 후 비교 벡터 갱신 동작을 추가로 수행할 수 있다.
도 4는 비교 벡터의 갱신 동작을 설명하는 도면이다.
도 4는 다이 A에서 논리 페이지(p)가 무효화되고 다이 B에 논리 페이지(p)가 기록되는 경우를 나타낸다.
이하에서, 논리 페이지(p)에 대응하는 임베딩 벡터를 Vp로 표현한다.
다이 A에 대응하는 기존의 비교 벡터(VA)에서 임베딩 벡터(Vp)를 뺀 값을 새로운 비교 벡터(VA')로 설정한다.
또한 다이 B에 대응하는 기존의 비교 벡터(VB)에 임베딩 벡터(Vp)를 더한 값을 새로운 비교 벡터(VB')로 설정한다.
다이 C는 위의 쓰기 동작에 영향을 받지 않으므로 쓰기 동작 이후 비교 벡터(VC')는 기존의 비교 벡터(VC)와 동일하다.
입출력 요청이 짧은 시간 간격으로 주어지는 버스트 동작에서는 추천 회로(100)의 추론 동작으로 인하여 SSD의 입출력 성능을 저하시킬 수 있다.
목표 벡터는 요청이 입력될 때마다 새로 생성되어야 한다.
이에 비하여 비교 벡터는 각 다이에 저장된 논리 페이지가 변경되지 않는 이상 변경되지 않으므로 호스트 요청이 제공되지 않는 시간 동안 비교 벡터를 미리 계산하여 성능 저하를 방지할 수 있다.
다이에 대한 쓰기, 소거 등의 요청이 수행되는 경우 해당 다이에 대해서는 비교 벡터를 새로 연산해야 한다. 이 경우에도 도 4와 같이 영향을 받는 페이지에 대응하는 임베딩 벡터를 기존의 비교 벡터에 더하거나 기존의 비교 벡터에서 뺌으로써 연산 시간을 줄일 수 있다.
추가적으로 본 기술에서는 추론 동작을 SSD의 입출력 동작 과정에 은닉하여 성능 저하를 방지할 수 있다.
호스트에서 SSD(1000)에 입출력 요청을 보내면 호스트 인터페이스(10)에서 NVMe 프로토콜에 의해 전송된 요청을 해석하여 요청의 종류, 논리 주소, 데이터 길이, 호스트 메모리 주소를 알아낸다.
이후, DMA 제어 회로(11)는 호스트 메모리 주소를 이용하여 호스트로부터 데이터를 읽어서 디램(30)에 저장하거나 디램(30)의 데이터를 호스트에 저장한다.
본 실시예에서는 DMA 제어 회로(11)에서 데이터를 디램(30)에 저장하는 DMA 동작 도중에 추천 회로(100)의 동작을 함께 수행하여 추천 회로(100)의 동작에 걸리는 시간을 은닉함으로써 SSD의 성능 저하를 방지한다.
추천 회로(100)의 임베딩 테이블(110) 및 다층 신경망 회로(140)는 각각 학습을 통해 값이 조절되는 변수를 포함한다.
본 실시예에서는 임베딩 테이블(110) 및 다층 신경망 회로(140)에 대해서 동시에 학습 동작을 수행하나 다른 실시예에서는 순차적으로 학습 동작을 수행할 수도 있다.
본 실시예에서는 지도 학습 방식을 적용하여 추천 회로(100)에 대한 학습 동작을 수행한다.
지도 학습에서는 입력값에 대응하는 출력값과 입력값에 대응하는 참값을 이용하여 계수를 조절한다. 이러한 지도 학습 기술 자체는 종래의 기술이므로 구체적인 개시를 생략한다.
지도 학습을 위해서는 신경망에 입력되는 입력값과 이에 대응하는 참값을 포함하는 데이터 셋을 준비해야 한다.
본 실시예에서는 일정 시간 SSD(1000)에 제공되는 트레이스 데이터를 이용하여 데이터 셋을 준비할 수 있다.
도 5(A)는 트레이스 데이터의 예를 나타낸다.
도시된 트레이스 데이터는 쓰기 요청(W1)과 그 이후 제공된 5개의 읽기 요청(R1 ~ R5)을 포함한다. 도 5는 5번째 읽기 요청(R5)과 쓰기 요청(W1)이 동일한 논리 주소에 대한 요청임을 가정한다.
트레이스 데이터로부터 데이터 셋을 생성하는 경우 쓰기 요청에 대하여 할당되어야 할 참값의 다이 주소를 결정하여야 한다.
도 5(B)는 쓰기 요청에 대응하는 참값의 다이 주소를 결정하는 방법을 설명한다.
먼저 트레이스 데이터를 참고하여 1번에서 4번까지 4개의 읽기 요청에 대응하는 다이 주소를 표시한다.
도 5(B)는 1번 읽기 요청(R1)은 채널 B의 1번 다이에 할당되고, 2번 읽기 요청(R2)은 채널 B의 2번 다이에 할당되고, 3번 읽기 요청(R3)은 채널 A의 2번 다이에 할당되고, 4번 읽기 요청(R4)은 채널 B의 1번 다이에 할당된 것을 가정한다.
도 5(B)에서 "버스"는 읽기 동작 결과 출력된 데이터가 채널 버스를 점유하는 시간을 나타낸다.
도 5(B)를 참조하면 5번 읽기 요청(R5)은 제공되는 시점을 고려할 때 2번, 3번, 4번 읽기 요청과 처리 시간이 중첩될 수 있으므로 읽기 성능을 향상시키기 위하여 이들과 중첩되지 않는 다이를 선택하는 것이 바람직하다.
이에 따라 병렬성을 향상시키기 위하여 5번 읽기 동작은 채널 A의 1번 다이에서 수행되는 것이 바람직하다.
이에 따라 쓰기 요청(W1)에 대응하는 다이 주소의 참값은 채널 A의 1번 다이로 결정된다.
이와 같은 방식으로 트레이스 데이터로부터 학습 데이터를 준비할 수 있다.
도 2에서 추천 회로(100)는 학습 제어 회로(160)를 더 포함할 수 있다.
학습 제어 회로(160)는 플래시 메모리(50)의 지정된 주소 영역에 미리 저장된 학습 데이터를 이용하여 지도 학습 과정을 제어할 수 있다.
학습 제어 회로(160)는 디램(30) 또는 플래시 메모리(50)의 또 다른 지정된 주소 영역에 일정시간 동안 트레이스 데이터를 저장할 수 있으며 트레이스 데이터로부터 학습 데이터를 생성하여 플래시 메모리(50)의 지정된 주소 영역에 학습 데이터를 저장하거나 갱신할 수 있다.
이에 따라 지도 학습 동작은 데이터 저장 장치(1000)의 초기화 과정에서만 수행될 수도 있고 데이터 저장 장치(1000)의 사용 도중 미리 지정된 시간 간격마다 수행되거나 데이터 저장 장치(1000)의 유휴 시간에 수행될 수도 있다.
도 6은 본 기술에 의한 효과를 나타내는 그래프이다.
도 6의 그래프는 종래의 기술에 따라 쓰기 동작을 수행하는 경우의 읽기 레이턴시에 대비하여 본 기술에 따라 쓰기 동작을 수행하는 경우의 읽기 레이턴시의 비율을 나타낸다.
도 6에서 가로축은 워크로드의 종류를 나타내고 세로축은 종래 기술 대비 읽기 레이턴시의 비율을 나타낸다.
도시된 바와 같이 모든 워크로드에 대비하여 본 기술을 적용하였을 때 읽기 레이턴시가 감소하였으며 평균 감소율은 25.4퍼센트이다.
이와 같이 본 기술을 적용하는 경우 데이터 저장 장치(1000)의 읽기 성능이 향상됨을 알 수 있다.
본 발명의 권리범위는 이상의 개시로 한정되는 것은 아니다. 본 발명의 권리범위는 청구범위에 문언적으로 기재된 범위와 그 균등범위를 기준으로 해석되어야 한다.
1000: 데이터 저장 장치(SSD 장치) 10: 호스트 인터페이스
11: DMA 제어 회로 20: FTL
21: 페이지 할당 회로 30: 디램(DRAM)
40: 트랜잭션 큐 50: 채널
60: 플래시 메모리 70: 다이
100: 추천 회로
110: 임베딩 테이블 120: 비교 벡터 생성 회로
130: 연접 회로 140: 다층 신경망 회로
150: 결정 회로 160: 학습 제어 회로

Claims (13)

  1. 다수의 단위 저장 공간을 포함하는 하나 또는 둘 이상의 비휘발성 메모리 장치;
    쓰기 요청을 처리하기 위하여 상기 다수의 단위 저장 공간 중 하나의 단위 저장 공간을 추천하는 추천 회로를 포함하되,
    상기 추천 회로는 요청 정보, 쓰기 요청에 대응하는 목표 주소, 다수의 단위 저장 공간에 저장된 데이터의 주소로부터 생성된 특징 데이터를 신경망 회로에 적용하여 상기 하나의 단위 저장 공간을 추천하는 데이터 저장 장치.
  2. 청구항 1에 있어서, 상기 추천 회로에서 추천된 하나의 단위 저장 공간 내에서 쓰기 주소를 할당하는 쓰기 주소 할당 회로를 더 포함하는 데이터 저장 장치.
  3. 청구항 1에 있어서, 상기 추천 회로는
    데이터 주소에 대응하는 임베딩 벡터를 저장하여 상기 목표 주소로부터 목표 벡터를 생성하는 임베딩 테이블;
    상기 다수의 단위 저장 공간 정보와 상기 임베딩 테이블 정보를 이용하여 다수의 비교 벡터를 생성하는 비교 벡터 생성 회로;
    상기 요청 정보에 대응하는 요청 벡터, 상기 목표 벡터, 및 상기 다수의 비교 벡터에 대응하는 상기 특징 데이터를 이용하여 다수의 단위 저장 공간에 대한 점수를 생성하는 다층 신경망 회로;
    상기 점수를 참조하여 상기 하나의 단위 저장 공간을 결정하는 결정 회로
    를 포함하는 데이터 저장 장치.
  4. 청구항 3에 있어서, 상기 요청 벡터, 상기 목표 벡터, 상기 다수의 비교 벡터를 연접하여 상기 특징 데이터를 생성하는 연접 회로를 더 포함하는 데이터 저장 장치.
  5. 청구항 3에 있어서, 상기 목표 주소는 논리 주소이고, 상기 비교 벡터 생성 회로는 어느 하나의 단위 저장 공간에 저장된 다수의 데이터에 대응하는 다수의 논리 주소에 대응하는 다수의 임베딩 벡터를 더하여 상기 어느 하나의 단위 저장 공간에 대응하는 비교 벡터를 생성하는 데이터 저장 장치.
  6. 청구항 5에 있어서, 상기 비교 벡터 생성 회로는 어느 하나의 단위 저장 공간에서 어느 하나의 논리 주소가 무효화되는 경우 무효화되는 논리 주소에 대응하는 임베딩 벡터를 기존의 비교 벡터에서 삭제하여 비교 벡터를 갱신하고, 어느 하나의 단위 저장 공간에 어느 하나의 논리 주소가 추가되는 경우 추가된 논리 주소에 대응하는 임베딩 벡터를 기존의 비교 벡터에 더하여 비교 벡터를 갱신하는 데이터 저장 장치.
  7. 청구항 3에 있어서, 상기 추천 회로는 학습 제어 회로를 더 포함하고,
    상기 하나 또는 둘 이상의 비휘발성 메모리 장치는 미리 저장된 주소에 학습 데이터를 저장하며,
    상기 학습 제어 회로는 상기 학습 데이터를 이용하여 상기 임베딩 테이블, 및 상기 다층 신경망 회로에 대한 학습 동작을 제어하는 데이터 저장 장치.
  8. 청구항 7에 있어서, 상기 학습 데이터는 상기 데이터 저장 장치에 제공되는 요청들의 집합인 트레이스 데이터로부터 생성된 것으로서,
    상기 학습 데이터는 쓰기 요청 정보와 이에 대응하여 추천될 단위 저장 공간의 참값의 쌍을 포함하고,
    상기 참값은 상기 트레이스 데이터에서 어느 하나의 쓰기 요청 이후에 제공된 다수의 읽기 요청 중 상기 어느 하나의 쓰기 요청과 논리 주소가 동일한 읽기 요청의 병렬 처리를 고려하여 결정되는 데이터 저장 장치.
  9. 청구항 2에 있어서, 상기 비휘발성 메모리 장치는 플래시 메모리 장치이고,
    상기 단위 저장 공간은 플래시 메모리 장치의 다이에 대응하고,
    상기 쓰기 주소는 추천된 다이 내부의 페이지 주소인 데이터 저장 장치.
  10. 청구항 9에 있어서, 호스트로부터 제공된 요청을 수신하여 디코딩하는 호스트 인터페이스;
    상기 쓰기 주소 할당 회로에서 결정된 쓰기 주소를 참조하여 주소 맵핑을 수행하는 FTL;
    호스트와 주고받을 데이터를 저장하는 휘발성 메모리 장치
    를 더 포함하는 데이터 저장 장치.
  11. 청구항 10에 있어서, 상기 호스트 인터페이스는 쓰기 요청된 데이터의 길이에 따라 다수의 페이지 단위의 쓰기 요청을 생성하는 데이터 저장 장치.
  12. 청구항 10에 있어서, 상기 호스트 인터페이스에서 디코딩된 정보는 호스트의 메모리 주소를 포함하고,
    상기 호스트 인터페이스는 상기 호스트의 메모리 주소와 상기 휘발성 메모리 장치 사이에서 데이터를 송수신하는 DMA 제어 회로를 더 포함하는 데이터 저장 장치.
  13. 청구항 12에 있어서, 쓰기 요청이 수신되는 경우, 상기 DMA 제어 회로에서 호스트의 데이터를 상기 휘발성 메모리 장치에 저장하는 동안 상기 추천 회로는 쓰기 동작을 수행할 단위 저장 공간을 결정하는 데이터 저장 장치.

KR1020220033095A 2022-03-17 2022-03-17 신경망을 이용하여 쓰기 주소를 결정하는 데이터 저장 장치 KR20230135748A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220033095A KR20230135748A (ko) 2022-03-17 2022-03-17 신경망을 이용하여 쓰기 주소를 결정하는 데이터 저장 장치
US17/889,297 US11921628B2 (en) 2022-03-17 2022-08-16 Data storage device for determining a write address using a neural network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220033095A KR20230135748A (ko) 2022-03-17 2022-03-17 신경망을 이용하여 쓰기 주소를 결정하는 데이터 저장 장치

Publications (1)

Publication Number Publication Date
KR20230135748A true KR20230135748A (ko) 2023-09-26

Family

ID=88066855

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220033095A KR20230135748A (ko) 2022-03-17 2022-03-17 신경망을 이용하여 쓰기 주소를 결정하는 데이터 저장 장치

Country Status (2)

Country Link
US (1) US11921628B2 (ko)
KR (1) KR20230135748A (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200110536A1 (en) 2018-10-09 2020-04-09 Western Digital Technologies, Inc. Optimizing data storage device operation by grouping logical block addresses and/or physical block addresses using hints
KR20210019576A (ko) 2018-07-11 2021-02-22 마이크론 테크놀로지, 인크. 메모리 액세스 가속화를 위한 예측 페이징

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180062247A (ko) * 2016-11-30 2018-06-08 삼성전자주식회사 효율적인 버퍼 할당을 수행하는 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법
US11226741B2 (en) * 2018-10-31 2022-01-18 EMC IP Holding Company LLC I/O behavior prediction based on long-term pattern recognition
KR20210055875A (ko) * 2019-11-08 2021-05-18 삼성전자주식회사 저장 장치와 저장 장치 시스템 그리고 그 동작 방법
US20230110401A1 (en) * 2021-10-08 2023-04-13 Marvell Asia Pte, Ltd. Machine Learning-Enabled Management of Storage Media Access

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210019576A (ko) 2018-07-11 2021-02-22 마이크론 테크놀로지, 인크. 메모리 액세스 가속화를 위한 예측 페이징
US20200110536A1 (en) 2018-10-09 2020-04-09 Western Digital Technologies, Inc. Optimizing data storage device operation by grouping logical block addresses and/or physical block addresses using hints

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
https://www.tensorflow.org/text/guide/word_embeddings
J. Liang, Y. Xu, D. Sun and S. Wu, "Improving Read Performance of SSDs via Balanced Redirected Read," 2016 IEEE International Conference on Networking, Architecture and Storage (NAS), 2016, pp. 1-10, doi: 10.1109/NAS.2016.7549406.
N. Elyasi, C. Choi, A. Sivasubramaniam, J. Yang and V. Balakrishnan, "Trimming the Tail for Deterministic Read Performance in SSDs," 2019 IEEE International Symposium on Workload Characterization (IISWC), 2019, pp. 49-58, doi: 10.1109/IISWC47752.2019.9042073.
N. Elyasi, M. Arjomand, A. Sivasubramaniam, M. T. Kandemir and C. R. Das, "Content Popularity-Based Selective Replication for Read Redirection in SSDs," 2018 IEEE 26th International Symposium on Modeling, Analysis, and Simulation of Computer and Telecommunication Systems (MASCOTS), 2018, pp. 1-15, doi: 10.1109/MASCOTS.2018.00009.
U. Gupta et al., "The architectural implications of facebook's dnn-based personalized recommendation," in 2020 IEEE International Symposium on High Performance Computer Architecture (HPCA), 2020: IEEE, pp. 488-501.

Also Published As

Publication number Publication date
US11921628B2 (en) 2024-03-05
US20230297500A1 (en) 2023-09-21

Similar Documents

Publication Publication Date Title
CN111684434B (zh) 多层存储器系统中的预测数据协作
CN111801659B (zh) 存储器系统中的数据存取及通信的优化
JP4926963B2 (ja) 多重メモリアクセスレイテンシ時間をサポートするコンピュータメモリシステムにおける性能を改善するためのシステムおよび方法
US10956081B2 (en) Method, system, and apparatus for multi-tiered progressive memory program operation suspend and resume
CN111684435B (zh) 实施于存储器系统中的通过消息传递接口的存储器存取通信
US9886194B2 (en) NVDIMM adaptive access mode and smart partition mechanism
US8144515B2 (en) Interleaved flash storage system and method
CN111699477A (zh) 在存储器系统中经由数据串流隔离的加速数据存取
US9671961B2 (en) Memory controller, storage apparatus, information processing system, and control method for the same
TW201917576A (zh) 記憶體系統及其操作方法
KR20190101095A (ko) 키-밸류 스토리지 장치 및 이의 동작 방법
US11481342B2 (en) Data storage system data access arbitration
KR102369402B1 (ko) 스토리지 장치, 이의 동작 방법 및 스토리지 장치를 포함하는 스토리지 시스템
US20220374692A1 (en) Interleaving memory requests to accelerate memory accesses
US10346052B2 (en) Memory system with priority processing and operating method thereof
US10929025B2 (en) Data storage system with I/O determinism latency optimization
US20220197563A1 (en) Qos traffic class latency model for just-in-time (jit) schedulers
US20140173223A1 (en) Storage controller with host collaboration for initialization of a logical volume
US11256621B2 (en) Dual controller cache optimization in a deterministic data storage system
KR20190130831A (ko) 컨트롤러 및 이를 포함하는 메모리 시스템
US20180188976A1 (en) Increasing read pending queue capacity to increase memory bandwidth
US8402199B2 (en) Memory management system and method thereof
US20240078199A1 (en) Just-in-time (jit) scheduler for memory subsystems
US20210096985A1 (en) Memory controller and storage device including the same
KR102422654B1 (ko) 프로세서 측 트랜잭션 콘텍스트 메모리 인터페이스 시스템 및 방법