KR20210111008A - 데이터 저장 장치 및 그것의 동작방법 - Google Patents

데이터 저장 장치 및 그것의 동작방법 Download PDF

Info

Publication number
KR20210111008A
KR20210111008A KR1020200025993A KR20200025993A KR20210111008A KR 20210111008 A KR20210111008 A KR 20210111008A KR 1020200025993 A KR1020200025993 A KR 1020200025993A KR 20200025993 A KR20200025993 A KR 20200025993A KR 20210111008 A KR20210111008 A KR 20210111008A
Authority
KR
South Korea
Prior art keywords
data
cache
memory
prefetcher
processor
Prior art date
Application number
KR1020200025993A
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 KR1020200025993A priority Critical patent/KR20210111008A/ko
Priority to US16/917,460 priority patent/US20210271600A1/en
Priority to CN202010766058.2A priority patent/CN113342254A/zh
Publication of KR20210111008A publication Critical patent/KR20210111008A/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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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
    • 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
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • 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
    • 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/60Details of cache memory
    • G06F2212/602Details relating to cache 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/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch
    • 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/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명의 실시 예에 따른 데이터 저장 장치는 복수의 명령들(instruction) 및 애플리케이션 동작 시 요구되는 데이터를 저장하는 제1 메모리; 애플리케이션을 동작 시키기 위한 데이터를 상기 제1 메모리부터 리드하여 저장하는 제1 캐시; 상기 복수의 명령 중 적어도 하나 이상을 리드하여 애플리케이션을 실행시키되, 포인터 추적(pointer chasing) 명령 또는 캐시 미스(cache miss) 발생 시, 상기 제1 캐시 또는 프리페처로 데이터 리드 요청을 전달하는 프로세서; 및 상기 제1 메모리로부터 상기 포인터 추적 명령 또는 상기 캐시 미스와 관련된 데이터를 리드하여 상기 제1 캐시로 전달하는 프리페처(prefetcher)를 포함할 수 있다.

Description

데이터 저장 장치 및 그것의 동작방법{Data storage device and operating method thereof}
본 발명은 반도체 장치에 관한 것으로, 보다 구체적으로는 데이터 저장 장치 및 그것의 동작방법에 관한 것이다.
일반적으로 데이터 저장 시스템은 휘발성이고 바이트(Byte) 접근이 가능한 DRAM(dynamic random access memory) 메모리 구조이거나 또는 불휘발성이고 블록 스토리지인 SSD(solid state drive) 또는 HDD(hard disk drive)의 구조일 수 있다. 상술한 DRAM에 비해 SSD 및 HDD는 접근속도가 수천 내지 수만 배 느릴 수 있다.
현재, 플래시 메모리의 불휘발성 특성과 DRAM의 고속 데이터 쓰기 및 읽기 지원이 가능하며, 바이트 단위 접근이 가능한 SCM(Storage Class Memory) 장치들이 확대 적용되고 있는 추세이다.
또한, Near Data Processing(NDP)은 호스트와 미디어 간 데이터 이동을 최소화하여 리소스 절약(resource saving)을 도모하는 것을 주된 목적으로 한다.
상술한 데이터 환경에서, 프로세서는 애플리케이션을 실행할 때 필요한 데이터를 획득하기 위해 메모리에 접근할 수 있다. 이 때, 프로세서에서 실행되는 애플리케이션에 따라 메모리에 접근하는 패턴이 불규칙한 경우에는 캐시로부터 원하는 데이터를 획득하지 못하는 캐시 미스(cache miss)가 종종 발생할 수 있다.
본 발명의 실시 예는 데이터 리드 성능이 향상된 데이터 저장 장치 및 그것의 동작방법을 제공하고자 한다.
본 발명의 실시 예에 따른 데이터 저장 장치는, 복수의 명령들(instruction) 및 애플리케이션 동작 시 요구되는 데이터를 저장하는 제1 메모리; 상기 복수의 명령들을 리드하여 저장하는 제2 캐시; 상기 애플리케이션을 동작 시키기 위한 데이터를 상기 제1 메모리부터 리드하여 저장하는 제1 캐시; 상기 복수의 명령 중 적어도 하나 이상을 리드하여 애플리케이션을 실행할 때 포인터 추적(pointer chasing) 명령 또는 제1 캐시에 대한 캐시 미스(cache miss)가 발생하게 되면, 상기 제1 캐시 또는 프리페처로 데이터 리드 요청을 전달하는 프로세서; 및 상기 제1 메모리로부터 상기 포인터 추적 명령 또는 상기 캐시 미스와 관련된 데이터를 리드하여 상기 제1 캐시로 전달하는 프리페처(prefetcher)를 포함하고, 상기 프리페처는 상기 프로세서로부터 발생된 현재 포인터의 데이터 리드 요청을 기초로 다음 연산에 필요한 데이터의 제1 메모리의 메모리 어드레스를 파악하고 파악된 상기 메모리 어드레스를 기초로 해당 데이터를 상기 제1 메모리로부터 리드하여 상기 제1 캐시에 저장할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치의 동작방법은, 프로세서가 복수의 명령들(instruction) 중 어느 하나 이상을 실행시켜 캐시로 데이터 리드를 요청하는 단계; 프로세서가 상기 캐시로부터의 상기 데이터 리드를 실패한 경우, 프리페처로 상기 데이터 리드 요청을 전송하는 단계; 제1 메모리로부터 상기 프로세서로부터 요청된 데이터를 리드하여 상기 캐시에 저장하는 단계; 상기 프리페처가 상기 프로세서로부터 발생된 현재 포인터의 데이터 리드 요청을 기초로 다음 연산에 필요한 데이터의 제1 메모리의 메모리 어드레스를 파악하는 단계; 및 파악된 상기 메모리 어드레스를 기초로 해당 데이터를 상기 제1 메모리로부터 리드하여 상기 캐시에 저장하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치의 동작방법은, 프로세서가 복수의 명령들(instruction) 중 어느 하나 이상을 실행시키는 단계; 상기 실행시키는 명령이 포인터 추적(pointer chasing) 명령인 경우, 캐시 또는 프리페처로 데이터 리드 요청을 전송하는 단계; 제1 메모리로부터 상기 프로세서로부터 요청된 데이터를 리드하여 상기 캐시에 저장하는 단계; 상기 프리페처가 상기 프로세서로부터 발생된 현재 포인터의 데이터 리드 요청을 기초로 다음 연산에 필요한 데이터의 제1 메모리의 메모리 어드레스를 파악하는 단계; 및 파악된 상기 메모리 어드레스를 기초로 해당 데이터를 상기 제1 메모리로부터 리드하여 상기 캐시에 저장하는 단계를 포함할 수 있다.
본 실시 예들에 따르면, 프로세서에서 애플리케이션을 실행하기 위해 요구되는 데이터를 캐시에 미리 저장하기 때문에, 캐시 미스(cache miss)를 미연에 방지할 수 있어 애플리케이션의 실행이 원활할 수 있고, 이에 따라 프로세서의 성능이 향상될 수 있다는 효과를 기대할 수 있다.
또한, 본 실시 예들은 프로세서에서 포인터 추적(point chasing) 명령을 실행할 때, 메모리 액세스 레이턴시(memory access latency)를 단축시킬 수 있다는 효과를 기대할 수 있는 것이다.
도 1은 본 발명의 실시 예에 따른 데이터 저장 시스템의 구성을 나타내는 도면이다.
도 2는 본 발명의 실시 예에 따른 2-tier Pooled Memory의 구성을 나타내는 도면이다.
도 3은 본 발명의 실시 예에 따른 데이터 저장 장치의 구성을 나타내는 도면이다.
도 4는 본 발명의 실시 예에 따른 프리페처에서 다음 주소를 파악하는 방법을 설명하기 위한 예시도이다.
도 5는 본 발명의 실시 예에 따른 프리페처에 의해서 메모리 접속 시간이 단축되는 경우를 설명하기 위한 예시도이다.
도 6은 본 발명의 실시예에 따른 데이터 저장 장치의 동작방법의 일 예를 설명하기 위한 흐름도이다.
도 7은 본 발명의 실시예에 따른 데이터 저장 장치의 동작방법의 다른 예를 설명하기 위한 흐름도이다.
이하, 첨부한 도면에 의거하여 본 발명의 바람직한 실시 예를 설명하도록 한다.
도 1은 본 발명의 실시 예에 따른 데이터 저장 시스템의 구성을 나타내는 도면이고, 도 2는 본 발명의 실시 예에 따른 2-tier Pooled Memory의 구성을 나타내는 도면이다.
도 1을 참조하면, 데이터 저장 시스템은 호스트 프로세서(host processor)(11) 및 호스트 프로세서(11)로부터 전달된 잡(job)을 처리하기 위한 데이터 저장 장치(20)를 포함할 수 있다. 이때, 호스트 프로세서(11)는 호스트 프로세서(11)와 관련된 정보를 저장하기 위한 DRAM(13)과 연결될 수 있다.
도 1에서 도시하는 바와 같이, 호스트 프로세서(11) 및 DRAM(13) 세트(10)는 복수 개일 수 있다. 상술한 호스트 프로세서(11)는 CPU(central processing unit), ISP(image signal processing unit), DSP(digital signal processing unit), GPU(graphics processing unit), VPU(vision processing unit), FPGA(field programmable gate array) 및 NPU(neural processing unit) 중 적어도 하나를 포함할 수 있다.
또한, 데이터 저장 장치(20)는 2-tier pooled memory로 도 1과 같이 복수 개로 구현될 수 있다.
도 2를 참고하면, 2-tier pooled memory 타입의 데이터 저장 장치(20)는 복수의 Near Data Processing(NDP)(21)를 포함하도록 구성될 수 있다.
상술한 NDP(21)는 호스트와 미디어 간 데이터 이동을 최소화하여 리소스 절약(resource saving)을 도모하는 것을 주된 목적으로 한다. NDP의 경우 분리된 아키텍처(disaggregated architecture)에서의 메모리 풀(memory pool) 활용을 통해 향상된 메모리 용량(memory capacity)을 확보할 수 있고, 이에 따라 다수의 호스트들로부터 다양한 잡(job)을 오프 로딩(off-loading) 받을 수 있다. 이로 인하여 오프 로딩된 다양한 잡 별로 우선순위가 상이할 수 있고, 각각을 처리하여 호스트로 응답(response) 해야 하는 데드라인(deadline) 역시 차이가 있을 수 있다.
이하에서 개시하는 데이터 저장 장치는 상술한 호스트 프로세서(11) 또는 NDP(21)에서 구현될 수 있으나, 이에 한정되지 않는다.
이하에서는, 호스트 프로세서(11) 또는 NDP(21)의 포인터 추적(pointer chasing)에 적합한 캐시 및 프리페처를 포함하는 데이터 저장 장치를 예로 들어 설명하기로 한다.
도 3은 본 발명의 실시 예에 따른 데이터 저장 장치의 구성을 나타내는 도면이다.
이하에서는, 본 발명의 실시 예에 따른 프리페처에서 다음 주소를 파악하는 방법을 설명하기 위한 예시도인 도 4 및 본 발명의 실시 예에 따른 프리페처에 의해서 메모리 접속 시간이 단축되는 경우를 설명하기 위한 예시도인 도 5를 참조하여 설명하기로 한다.
도 3을 참조하면, 데이터 저장 장치(100)는 제1 메모리(110), 제2 캐시(120), 제1 캐시(130), 프리페처(prefetcher)(140), 프로세서(150) 및 제2 메모리(160)를 포함할 수 있다.
제1 메모리(110)는 복수의 명령들(instruction) 및 애플리케이션 동작 시 요구되는 데이터를 저장할 수 있다.
상기 제1 메모리(110)는 DRAM(dynamic random access memory) 또는 SCM(storage class memory)일 수 있으며, 이에 한정되지 않는다.
제2 캐시(120)는 복수의 명령들을 로딩하여 저장할 수 있다. 이때, 제2 캐시(120)는 데이터 저장 장치(100)의 부팅 후 복수의 명령들을 제1 메모리(110)로부터 로딩하여 저장할 수 있는 것이다.
제1 캐시(130)는 애플리케이션을 동작 시키기 위한 데이터를 제1 메모리(110)부터 리드하여 저장할 수 있다.
제1 캐시(130)는 캐시 미스가 발생할 경우, 제1 메모리(110)로부터 캐시 미스가 발생된 데이터를 리드하여 저장하고, 프리페처(140)로 캐시 미스가 발생된 데이터 리드 요청을 전달할 수 있다.
제1 캐시(130)는 프로세서(150)로부터 수신한 포인터 추적 명령(pointer chasing instruction) 또는 캐시 미스 발생 시의 데이터 리드 요청을 프리페처(140)로 전달할 수 있다.
이때, 데이터 리드 요청은 프로세서(150)가 직접 프리페처(140)로 전달하는 것 이외에 제1 캐시(130)를 통해 프리페처(140)로 전달될 수도 있다.
프로세서(150)는 복수의 명령 중 적어도 하나 이상을 리드하여 애플리케이션을 실행할 때 포인터 추적(pointer chasing) 명령 또는 캐시 미스(cache miss) 발생하게 되면, 제1 캐시(130) 또는 프리페처(140)로 데이터 리드 요청을 전달할 수 있다. 상기 포인터 추적 명령은 프로세서(150)에서 링크된 데이터 구조 기반의 애플리케이션을 실행할 때 검색 이벤트 발생 시 검색어에 대응되는 결과를 출력해야 하는 경우, 프로세서(150)에 의해서 생성될 수 있다. 이때, 포인터 추적은 링크된 데이터 구조에서 1번째 포인터의 1번째 데이터를 확인하였을 경우, 상기 1번째 포인터에 매칭된 2번째 포인터를 기초로 2번째 데이터의 메모리 어드레스를 파악하고, 파악된 2번째 데이터의 메모리 어드레스를 기초로 2번째 메모리를 리드하는 과정 등과 같이, 현재 포인터를 통해 다음 포인터를 확인하고, 확인된 다음 포인터로 이동하는 과정의 반복을 통한 추적 과정을 의미할 수 있다.
상기 포인터 추적 명령은 간접 로드 명령(indirect load instruction) 및 특별 로드 명령(special load instruction)을 포함할 수 있다. 이때, 간접 로드 명령은 명령어에서 지정하는 번지에 저장된 값을 주소값으로 참조하는 명령을 의미할 수 있다. 특별 로드 명령은 프로그램 설계자의 필요에 따라 다른 명령들과 구별되게 처리될 수 있도록 설계된 명령으로, 본 실시예에서는 포인터 추적과 관련되어 구별되게 처리하도록 하는 명령일 수 있다. 이때, 특별 로드 명령은 간접 로드 명령과 비교하여 프로세서(150) 입장에서 포인터 추적 명령과 관련된 명령임을 즉각적으로 인지할 수 있다. 따라서, 프로세서(150)는 특별 로드 명령에 대한 데이터 리드 요청을 프리페처(140)로 직접 전달할 수 있다.
한편, 프로세서(150)는 간접 로드 명령을 발생시킬 경우, 제1 캐시(130)로 데이터 리드 요청을 전송하거나, 또는 제1 캐시(130)와 프리페처(140) 모두로 데이터 리드 요청을 전송할 수 있다.
다른 한편, 프로세서(150)는 특별 로드 명령을 발생시킬 경우, 제1 캐시(130) 및 프리페처(140) 모두로 데이터 리드 요청을 전송할 수 있다. 이때, 프로세서(150)는 포인터와 관련된 특별 로드 명령을 프리페처(140)에 캐시 미스 이전에 전달함에 따라, 프리페처(140)가 포인트 추적에 필요한 데이터를 사전에 제1 캐시(130)에 저장하여 캐시 미스 발생을 미연에 방지할 수 있도록 한 것이다.
상술한 프로세서(150)는 CPU(central processing unit), ISP(image signal processing unit), DSP(digital signal processing unit), GPU(graphics processing unit), VPU(vision processing unit), FPGA(field programmable gate array) NPU(neural processing unit) 및 Near Data Processing(NDP)중 적어도 하나일 수 있다.
프리페처(140)는 제1 메모리(110)로부터 포인터 추적 명령 또는 캐시 미스와 관련된 데이터를 리드하여 제1 캐시(130)로 전달할 수 있다.
또한, 프리페처(140)는 프로세서(150)로부터 발생된 현재 포인터의 데이터 리드 요청을 기초로 다음 연산에 필요한 데이터의 상기 제1 메모리(110)의 메모리 어드레스를 파악하고 파악된 상기 메모리 어드레스를 기초로 해당 데이터를 제1 메모리(110)로부터 리드하여 제1 캐시(130)에 저장할 수 있다. 이때, 프리페처(140)는 프로세서(150)에서의 연산과는 상관없이 파악된 다음 어드레스를 기반으로 데이터 리드 요청을 미리 발생할 수 있는 것이다.
즉, 상술한 프로세서(150)에서의 연산 시기와 프리페처(140)에서의 다음 연산에 필요한 데이터의 메모리 어드레스 파악 및 다음 연산에 필요한 데이터의 리드 시기는 서로 중첩될 수 있다.
도 5를 참고하면, 프로세서(150)가 포인터 추적(pointer chasing)과 관련된 로드 명령(load instruction) 외에 다른 연산을 하는 동안 프리페처(140)가 다음 연산에 필요한 리드 요청(read request)을 미리 발생시켜 제1 메모리(110)로부터 다음 연산에 필요한 데이터를 미리 제1 캐시(130)에 저장(도 5의 Prefetching)함에 따라, 메모리 액세스 레이턴시(memory access latency)를 단축시킬 수 있다는 효과를 기대할 수 있는 것이다. 또한, 제1 캐시(130)에 다음 연산에 필요한 데이터가 미리 저장되어 있기 때문에 캐시 미스도 미연에 방지할 수 있다는 효과도 있을 수 있다.
프리페처(140)는 링크 테이블 정보로부터 현재 포인터를 기초로 다음 포인터를 파악하고, 파악된 상기 다음 포인터의 데이터에 대한 메모리 어드레스를 확인할 수 있다.
도 4를 참고하면, 프리페처(140)는 제2 메모리(160)에 저장된 링크 테이블 정보(LTI)를 기초로 현재 포인터의 다음 포인터를 파악할 수 있고, 다음 포인터에 매칭된 데이터의 어드레스를 획득할 수 있는 것이다. 이를 위해, 제2 메모리(160)는 사전에 링크 테이블 정보를 제1 메모리(110)로부터 리드하여 저장할 수 있다.
이때, 링크 테이블 정보는 링크된 데이터 구조(linked data structure) 기반의 애플리케이션을 실행하기 위해 수행하는 포인터 추적을 통한 링크된 데이터 트래버싱(linked data traversing) 과정에서 적용되는 순서대로 나열된 포인터와 포인터에 매칭되는 데이터의 어드레스가 애플리케이션별로 구분되어 저장되어 있는 테이블을 의미하는 것으로 정의하기로 한다. 상기 링크된 데이터 구조는 포인터들로 연결되어 구성되는 데이터 노드들 세트로 구성된 데이터 구조를 의미하는 것이다. 예를 들어, 검색 엔진은 상술한 링크된 데이터 구조에서 입력되는 검색어들을 기초로 포인터 추적을 통해 링크된 데이터를 추적하여 제공하는 것이다.
한편, 프리페처(140)는 데이터 리드가 요청된 현재 포인터를 기준으로 주변 포인터의 순위(rank)를 기초로 다음 포인터에 요구되는 데이터의 메모리 주소를 파악하는 방법을 통해 다음 포인터의 데이터에 대한 상기 제1 메모리(110)의 메모리 어드레스를 파악하는 것 역시 가능하다 할 것이다.
프리페처(140)는 제1 캐시(130)를 검색하여 포인터 추적 명령 또는 캐시 미스와 관련된 데이터가 저장되어 있는지 여부를 확인하고, 확인 결과 제1 캐시(130)에 데이터가 존재하지 않는 경우, 제1 메모리(110)부터 포인터 추적 명령 또는 캐시 미스와 관련된 데이터를 리드하여 제1 캐시(130)에 전달할 수 있다.
프리페처(140)는 제1 캐시(130)를 검색하여 포인터 추적 명령 또는 캐시 미스와 관련된 데이터가 저장되어 있는지 여부를 확인하고, 확인 결과 제1 캐시(130)에 상기 데이터가 존재하는 경우, 다음 연산에 필요한 데이터를 제1 메모리(110)로부터 리드하여 제1 캐시(130)에 저장할 수 있다.
프리페처(140)는 캐시 미스가 발생된 데이터의 리드 요청을 기초로 다음 연산에 필요한 데이터의 메모리 어드레스를 파악하고, 파악된 상기 메모리 어드레스를 기초로 해당 데이터를 제1 메모리(110)로부터 리드하여 제1 캐시(130)에 저장할 수 있다.
제2 메모리(160)는 제1 메모리(110)로부터 애플리케이션별 링크 테이블 정보를 리드하여 저장할 수 있다.
도 4를 참고하면, 제2 메모리(160)는 데이터 저장 장치(100)의 부팅 후 애플리케이션별 링크 테이블 정보(LTI)를 제1 메모리(110)로부터 리드하여 저장할 수 있는 것이다.
상기 링크 테이블 정보는 링크된 데이터 구조(linked data structure) 기반의 애플리케이션을 실행하기 위해 수행하는 포인터 추적을 통한 링크된 데이터 트래버싱(linked data traversing) 과정에서 적용되는 순서대로 나열된 포인터와 포인터에 매칭되는 데이터의 어드레스가 애플리케이션별로 구분되어 저장되어 있는 테이블을 의미하는 것으로 정의하기로 한다. 즉, 프리페처(140)가 현재 포인터를 인지하고 있는 경우, 애플리케이션별 링크 테이블로부터 현재 포인터의 다음 포인터를 파악할 수 있고, 다음 포인터에 매칭된 데이터의 어드레스를 획득할 수 있는 것이다.
도 6은 본 발명의 실시예에 따른 데이터 저장 장치의 동작방법의 일 예를 설명하기 위한 흐름도로서, 캐시 미스(cache miss)가 발생하는 경우를 예로 들어 설명하기로 한다.
프로세서(150)는 복수의 명령들(instruction) 중 어느 하나 이상을 실행시켜 제1 캐시(130)로 데이터 리드를 요청할 수 있다(S101, S103).
이를 위해, 제1 캐시(130)는 사전에 애플리케이션을 동작 시키기 위한 데이터를 제1 메모리(110)부터 리드하여 저장할 수 있다.
다음, 프로세서(150)가 제1 캐시(130)로부터의 데이터 리드를 실패한 경우(cache miss), 프리페처(140)로 데이터 리드 요청을 전송할 수 있다(S105, 107).
다음, 프리페처(140)는 제1 메모리(110)로부터 프로세서(150)로부터 요청된 데이터를 리드하여 제1 캐시(130)에 저장할 수 있다(S109).
프리페처(140)가 데이터를 리드하는 경우, 프리페처(140)는 제1 캐시(130)를 검색하여 데이터가 저장되어 있는지 여부를 확인할 수 있다. 확인 결과 제1 캐시(130)에 데이터가 존재하지 않는 경우, 프리페처(140)는 제1 메모리(110)부터 데이터를 리드하여 제1 캐시(130)에 전달할 수 있다. 이때, 데이터는 프로세서(150)로부터 리드 요청된 데이터를 의미할 수 있다.
한편, 캐시 미스가 발생한 경우, 제1 캐시(130)가 제1 메모리(110)로부터 데이터를 리드하는 경우도 가능할 수 있다. 제1 캐시(130)가 데이터를 리드하는 경우, 제1 캐시(130)는 제1 메모리(110)로부터 프로세서(150)로부터 요청된 데이터를 리드하여 저장하고, 프리페처(140)로 캐시 미스가 발생된 데이터 리드 요청을 전달할 수 있다.
다음, 프리페처(140)는 프로세서(150)로부터 발생된 현재 포인터의 데이터 리드 요청을 기초로 다음 연산에 필요한 데이터의 제1 메모리(110)의 메모리 어드레스를 파악할 수 있다(S111).
일 예로, 프리페처(140)는 링크 테이블 정보로부터 현재 포인터를 기초로 다음 포인터를 파악하고, 파악된 상기 다음 포인터의 데이터에 대한 메모리 어드레스를 확인할 수 있다.
이를 위해, 단계 S111 이전에, 제2 메모리(160)는 제1 메모리(110)로부터 애플리케이션별 링크 테이블 정보를 리드하여 저장할 수 있다.
도 4를 참고하면, 프리페처(140)는 제2 메모리(160)에 저장된 링크 테이블 정보(LTI)를 기초로 현재 포인터의 다음 포인터를 파악할 수 있고, 다음 포인터에 매칭된 데이터의 어드레스를 획득할 수 있는 것이다.
상술한 링크 테이블 정보는 링크된 데이터 구조(linked data structure) 기반의 애플리케이션을 실행하기 위해 수행하는 포인터 추적을 통한 링크된 데이터 트래버싱(linked data traversing) 과정에서 적용되는 순서대로 나열된 포인터와 포인터에 매칭되는 데이터의 어드레스가 애플리케이션별로 구분되어 저장되어 있는 테이블을 의미하는 것으로 정의하기로 한다.
다른 예로, 프리페처(140)는 데이터 리드가 요청된 현재 포인터를 기준으로 주변 포인터의 순위(rank)를 기초로 다음 포인터에 요구되는 데이터의 메모리 주소를 파악할 수 있다.
다음, 프리페처(140)는 파악된 메모리 어드레스를 기초로 해당 데이터를 제1 메모리(110)로부터 리드하여 제1 캐시(130)에 저장할 수 있다(S113). 이때, 프리페처(140)는 프로세서(150)에서의 연산과는 상관없이 파악된 다음 어드레스를 기반으로 데이터 리드 요청을 미리 발생할 수 있는 것이다.
한편, 단계 S105의 확인 결과 캐시 미스가 발생되지 않은 경우, 프로세서(150)는 애플리케이션 실행 동작을 수행할 수 있다(S115). 이때, 프로세서(150)는 필요에 따라 단계 S101 이후의 동작을 반복 수행할 수 있다.
도 7은 본 발명의 실시예에 따른 데이터 저장 장치의 동작방법의 다른 예를 설명하기 위한 흐름도로서, 포인터 추적 명령이 발생하는 경우를 예로 들어 설명하기로 한다.
프로세서(150)는 복수의 명령들(instruction) 중 어느 하나 이상을 실행시킬 수 있다(S201).
다음, 프로세서(150)는 실행시키는 명령이 포인터 추적(pointer chasing) 명령인 경우, 제1 캐시(130) 또는 프리페처(140)로 데이터 리드 요청을 전송할 수 있다(S203, S205).
상기 포인터 추적 명령은 간접 로드 명령(indirect load instruction) 및 특별 로드 명령(special load instruction)을 포함할 수 있다.
이때, 간접 로드 명령은 명령어에서 지정하는 번지에 저장된 값을 주소값으로 참조하는 명령을 의미할 수 있다. 특별 로드 명령은 프로그램 설계자의 필요에 따라 다른 명령들과 구별되게 처리될 수 있도록 설계된 명령으로, 본 실시예에서는 포인터 추적과 관련되어 구별되게 처리하도록 하는 명령일 수 있다. 이때, 특별 로드 명령은 간접 로드 명령과 비교하여 프로세서(150) 입장에서 포인터 추적 명령과 관련된 명령임을 즉각적으로 인지할 수 있다. 따라서, 프로세서(150)는 특별 로드 명령에 대한 데이터 리드 요청을 프리페처(140)로 직접 전달할 수 있다.
단계 S205의 데이터 리드 요청을 전송하는 단계에서, 포인터 추적 명령이 간접 로드 명령인 경우, 프로세서(150)는 제1 캐시(130)로 데이터 리드 요청을 전송하거나, 또는 제1 캐시(130)와 프리페처(140) 모두로 데이터 리드 요청을 전송할 수 있다.
만약, 단계 S205의 데이터 리드 요청을 전송하는 단계에서, 포인터 추적 명령이 특별 로드 명령인 경우, 프로세서(150)는 제1 캐시(130) 및 프리페처(140) 모두로 데이터 리드 요청을 전송할 수 있다.
한편, 데이터 리드 요청이 프리페처(140)로 전달되는 경로는 프로세서(150)가 프리페처(140)로 직접 데이터 리드 요청을 전달하는 것도 가능하지만, 이외에 제1 캐시(130)를 경유하여 전달되는 것 역시 가능하다 할 것이다.
다음, 제1 메모리(110)로부터 프로세서(150)로부터 요청된 데이터를 리드하여 제1 캐시(130)에 저장할 수 있다(S207).
프리페처(140)가 데이터를 리드하는 경우, 프리페처(140)는 제1 캐시(130)를 검색하여 데이터가 저장되어 있는지 여부를 확인할 수 있다. 확인 결과 제1 캐시(130)에 데이터가 존재하지 않는 경우, 프리페처(140)는 제1 메모리(110)부터 데이터를 리드하여 제1 캐시(130)에 전달할 수 있다. 이때, 데이터는 프로세서(150)로부터 리드 요청된 데이터를 의미할 수 있다.
한편, 제1 캐시(130)가 데이터를 리드하는 경우, 제1 캐시(130)는 제1 메모리(110)로부터 프로세서(150)로부터 요청된 데이터를 리드하여 저장하고, 프리페처(140)로 프로세서(150)로부터 발생된 데이터 리드 요청을 전달할 수 있다.
다음, 프리페처(140)가 프로세서(150)로부터 발생된 현재 포인터의 데이터 리드 요청을 기초로 다음 연산에 필요한 데이터의 제1 메모리(110)의 메모리 어드레스를 파악할 수 있다(S209).
일 예로, 프리페처(140)는 링크 테이블 정보로부터 현재 포인터를 기초로 다음 포인터를 파악하고, 파악된 상기 다음 포인터의 데이터에 대한 메모리 어드레스를 확인할 수 있다.
이를 위해, 단계 S209 이전에, 제2 메모리(160)는 제1 메모리(110)로부터 애플리케이션별 링크 테이블 정보를 리드하여 저장할 수 있다.
도 4를 참고하면, 프리페처(140)는 제2 메모리(160)에 저장된 링크 테이블 정보(LTI)를 기초로 현재 포인터의 다음 포인터를 파악할 수 있고, 다음 포인터에 매칭된 데이터의 어드레스를 획득할 수 있는 것이다.
다른 예로, 프리페처(140)는 데이터 리드가 요청된 현재 포인터를 기준으로 주변 포인터의 순위(rank)를 기초로 다음 포인터에 요구되는 데이터의 제1 메모리(110)의 메모리 주소를 파악할 수 있다.
프리페처(140)는 파악된 메모리 어드레스를 기초로 해당 데이터를 제1 메모리(110)로부터 리드하여 제1 캐시(130)에 저장할 수 있다(S211). 이때, 프리페처(140)는 프로세서(150)에서의 연산과는 상관없이 파악된 다음 어드레스를 기반으로 데이터 리드 요청을 미리 발생할 수 있는 것이다.
단계 S203의 확인 결과, 포인터 추적 명령이 아닌 경우, 프로세서(150)는 제1 캐시(130)로부터 애플리케이션 실행을 위한 데이터를 리드하여 저장한 후, 애플리케이션 실행을 수행할 수 있다(S213, S215).
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100 : 데이터 저장 장치 110 : 제1 메모리
120 : 제2 캐시 130 : 제1 캐시
140 : 프리페처 150 : 프로세서
160 : 제2 메모리

Claims (19)

  1. 복수의 명령들(instruction) 및 애플리케이션 동작 시 요구되는 데이터를 저장하는 제1 메모리;
    상기 복수의 명령들을 리드하여 저장하는 제2 캐시;
    상기 애플리케이션을 동작 시키기 위한 데이터를 상기 제1 메모리부터 리드하여 저장하는 제1 캐시;
    상기 복수의 명령 중 적어도 하나 이상을 리드하여 애플리케이션을 실행할 때 포인터 추적(pointer chasing) 명령 또는 상기 제1 캐시에 대한 캐시 미스(cache miss)가 발생하게 되면, 상기 제1 캐시 또는 프리페처로 데이터 리드 요청을 전달하는 프로세서; 및
    상기 제1 메모리로부터 상기 포인터 추적 명령 또는 상기 캐시 미스와 관련된 데이터를 리드하여 상기 제1 캐시로 전달하는 프리페처(prefetcher)를 포함하고,
    상기 프리페처는 상기 프로세서로부터 발생된 현재 포인터의 데이터 리드 요청을 기초로 다음 연산에 필요한 데이터의 상기 제1 메모리의 메모리 어드레스를 파악하고 파악된 상기 메모리 어드레스를 기초로 해당 데이터를 상기 제1 메모리로부터 리드하여 상기 제1 캐시에 저장하는 데이터 저장 장치.
  2. 제1항에 있어서,
    상기 프로세서에서의 연산 시기와 상기 프리페처에서의 상기 다음 연산에 필요한 데이터의 메모리 어드레스 파악 및 상기 다음 연산에 필요한 데이터의 리드 시기는 서로 중첩되는 데이터 저장 장치.
  3. 제1항에 있어서,
    상기 제1 메모리로부터 애플리케이션별 링크 테이블 정보를 리드하여 저장하는 제2 메모리;
    를 더 포함하는 데이터 저장 장치.
  4. 제3항에 있어서,
    상기 프리페처는,
    상기 링크 테이블 정보로부터 상기 현재 포인터를 기초로 다음 포인터를 파악하고, 파악된 상기 다음 포인터의 데이터에 대한 메모리 어드레스를 확인하는 데이터 저장 장치.
  5. 제1항에 있어서,
    상기 포인터 추적 명령은 간접 로드 명령(indirect load instruction) 및 특별 로드 명령(special load instruction)을 포함하고,
    상기 프로세서는,
    상기 간접 로드 명령을 발생시킬 경우, 상기 제1 캐시로 상기 데이터 리드 요청을 전송하거나, 또는 상기 제1 캐시와 상기 프리페처 모두로 상기 데이터 리드 요청을 전송하는 데이터 저장 장치.
  6. 제1항에 있어서,
    상기 포인터 추적 명령은 간접 로드 명령 및 특별 로드 명령을 포함하고,
    상기 프로세서는,
    상기 특별 로드 명령을 발생시킬 경우, 상기 제1 캐시 및 상기 프리페처 모두로 상기 데이터 리드 요청을 전송하는 데이터 저장 장치.
  7. 제1항에 있어서,
    상기 프리페처는,
    상기 제1 캐시를 검색하여 상기 포인터 추적 명령 또는 상기 캐시 미스와 관련된 데이터가 저장되어 있는지 여부를 확인하고, 확인 결과 상기 제1 캐시에 상기 데이터가 존재하지 않는 경우, 상기 제1 메모리부터 상기 포인터 추적 명령 또는 상기 캐시 미스와 관련된 데이터를 리드하여 상기 제1 캐시에 전달하는 데이터 저장 장치.
  8. 제1항에 있어서,
    상기 프리페처는,
    상기 제1 캐시를 검색하여 상기 포인터 추적 명령 또는 상기 캐시 미스와 관련된 데이터가 저장되어 있는지 여부를 확인하고, 확인 결과 상기 제1 캐시에 상기 데이터가 존재하는 경우, 상기 다음 연산에 필요한 데이터를 상기 제1 메모리로부터 리드하여 상기 제1 캐시에 저장하는 데이터 저장 장치.
  9. 제1항에 있어서,
    상기 제1 캐시는,
    상기 캐시 미스가 발생할 경우, 상기 제1 메모리로부터 상기 캐시 미스가 발생된 데이터를 리드하여 저장하고, 상기 프리페처로 상기 캐시 미스가 발생된 데이터 리드 요청을 전달하는 데이터 저장 장치.
  10. 제9항에 있어서,
    상기 프리페처는,
    상기 캐시 미스가 발생된 데이터의 리드 요청을 기초로 다음 연산에 필요한 데이터의 메모리 어드레스를 파악하고, 파악된 상기 메모리 어드레스를 기초로 해당 데이터를 상기 제1 메모리로부터 리드하여 상기 제1 캐시에 저장하는 데이터 저장 장치.
  11. 제1항에 있어서,
    상기 제1 캐시는,
    상기 프로세서로부터 수신한 상기 포인터 추적 명령 또는 캐시 미스 발생 시의 데이터 리드 요청을 상기 프리페처로 전달하는 데이터 저장 장치.
  12. 제1항에 있어서,
    상기 제1 메모리는,
    DRAM(dynamic random access memory) 또는 SCM(storage class memory)인 데이터 저장 장치.
  13. 프로세서가 복수의 명령들(instruction) 중 어느 하나 이상을 실행시켜 제1 캐시로 데이터 리드를 요청하는 단계;
    프로세서가 상기 제1 캐시로부터의 상기 데이터 리드를 실패한 경우, 프리페처로 상기 데이터 리드 요청을 전송하는 단계;
    제1 메모리로부터 상기 프로세서로부터 요청된 데이터를 리드하여 상기 제1 캐시에 저장하는 단계;
    상기 프리페처가 상기 프로세서로부터 발생된 현재 포인터의 데이터 리드 요청을 기초로 다음 연산에 필요한 데이터의 상기 제1 메모리의 메모리 어드레스를 파악하는 단계; 및
    파악된 상기 메모리 어드레스를 기초로 해당 데이터를 상기 제1 메모리로부터 리드하여 상기 제1 캐시에 저장하는 단계를 포함하는 데이터 저장 장치의 동작방법.
  14. 제13항에 있어서,
    상기 메모리 어드레스를 파악하는 단계 이전에,
    상기 제1 메모리로부터 애플리케이션별 링크 테이블 정보를 리드하여 제2 메모리에 저장하는 단계를 더 포함하고,
    상기 메모리 어드레스를 파악하는 단계에서,
    상기 프리페처가 상기 링크 테이블 정보로부터 상기 현재 포인터를 기초로 다음 포인터를 파악하고, 파악된 상기 다음 포인터의 데이터에 대한 메모리 어드레스를 확인하는 데이터 저장 장치의 동작방법.
  15. 제13항에 있어서,
    상기 데이터를 리드하여 상기 제1 캐시에 저장하는 단계는,
    상기 프리페처가 상기 제1 캐시를 검색하여 상기 데이터가 저장되어 있는지 여부를 확인하는 단계; 및
    확인 결과 상기 제1 캐시에 상기 데이터가 존재하지 않는 경우, 상기 제1 메모리부터 상기 데이터를 리드하여 상기 제1 캐시에 전달하는 단계;
    를 포함하는 데이터 저장 장치의 동작방법.
  16. 제13항에 있어서,
    상기 프로세서로부터 요청된 데이터를 리드하여 상기 제1 캐시에 저장하는 단계는,
    상기 제1 캐시가 상기 제1 메모리로부터 상기 프로세서로부터 요청된 데이터를 리드하여 저장하고, 상기 프리페처로 상기 캐시 미스가 발생된 데이터 리드 요청을 전달하는 단계를 포함하는 데이터 저장 장치의 동작방법.
  17. 프로세서가 복수의 명령들(instruction) 중 어느 하나 이상을 실행시키는 단계;
    상기 실행시키는 명령이 포인터 추적(pointer chasing) 명령인 경우, 제1 캐시 또는 프리페처로 데이터 리드 요청을 전송하는 단계;
    제1 메모리로부터 상기 프로세서로부터 요청된 데이터를 리드하여 상기 제1 캐시에 저장하는 단계;
    상기 프리페처가 상기 프로세서로부터 발생된 현재 포인터의 데이터 리드 요청을 기초로 다음 연산에 필요한 데이터의 상기 제1 메모리의 메모리 어드레스를 파악하는 단계; 및
    파악된 상기 메모리 어드레스를 기초로 해당 데이터를 상기 제1 메모리로부터 리드하여 상기 제1 캐시에 저장하는 단계를 포함하는 데이터 저장 장치의 동작방법.
  18. 제17항에 있어서,
    상기 포인터 추적 명령은 간접 로드 명령(indirect load instruction) 및 특별 로드 명령(special load instruction)을 포함하고,
    상기 데이터 리드 요청을 전송하는 단계에서,
    상기 포인터 추적 명령이 간접 로드 명령인 경우, 상기 제1 캐시로 상기 데이터 리드 요청을 전송하거나, 또는 상기 제1 캐시와 상기 프리페처 모두로 상기 데이터 리드 요청을 전송하는 데이터 저장 장치의 동작방법.
  19. 제17항에 있어서,
    상기 포인터 추적 명령은 간접 로드 명령 및 특별 로드 명령을 포함하고,
    상기 데이터 리드 요청을 전송하는 단계에서,
    상기 포인터 추적 명령이 특별 로드 명령인 경우, 상기 제1 캐시 및 상기 프리페처 모두로 상기 데이터 리드 요청을 전송하는 데이터 저장 장치의 동작방법.
KR1020200025993A 2020-03-02 2020-03-02 데이터 저장 장치 및 그것의 동작방법 KR20210111008A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020200025993A KR20210111008A (ko) 2020-03-02 2020-03-02 데이터 저장 장치 및 그것의 동작방법
US16/917,460 US20210271600A1 (en) 2020-03-02 2020-06-30 Data storage device and operating method thereof
CN202010766058.2A CN113342254A (zh) 2020-03-02 2020-08-03 数据存储装置及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200025993A KR20210111008A (ko) 2020-03-02 2020-03-02 데이터 저장 장치 및 그것의 동작방법

Publications (1)

Publication Number Publication Date
KR20210111008A true KR20210111008A (ko) 2021-09-10

Family

ID=77463109

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200025993A KR20210111008A (ko) 2020-03-02 2020-03-02 데이터 저장 장치 및 그것의 동작방법

Country Status (3)

Country Link
US (1) US20210271600A1 (ko)
KR (1) KR20210111008A (ko)
CN (1) CN113342254A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11221792B1 (en) * 2020-10-13 2022-01-11 Bae Systems Information And Electronic Systems Integration Inc. Storage method using memory chain addressing
CN114063923A (zh) * 2021-11-17 2022-02-18 海光信息技术股份有限公司 数据读取方法、装置、处理器及电子设备
CN114625674B (zh) * 2022-03-24 2023-07-18 广东华芯微特集成电路有限公司 预驱指令架构与预驱指令架构的预取方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120131305A1 (en) * 2010-11-22 2012-05-24 Swamy Punyamurtula Page aware prefetch mechanism

Also Published As

Publication number Publication date
CN113342254A (zh) 2021-09-03
US20210271600A1 (en) 2021-09-02

Similar Documents

Publication Publication Date Title
US7493450B2 (en) Method of triggering read cache pre-fetch to increase host read throughput
US10620832B1 (en) Method and apparatus to abort a command
US7058764B2 (en) Method of adaptive cache partitioning to increase host I/O performance
US7979631B2 (en) Method of prefetching data in hard disk drive, recording medium including program to execute the method, and apparatus to perform the method
US10013361B2 (en) Method to increase performance of non-contiguously written sectors
KR20210111008A (ko) 데이터 저장 장치 및 그것의 동작방법
US11379381B2 (en) Main memory device having heterogeneous memories, computer system including the same, and data management method thereof
US11500572B2 (en) Method of optimizing performance of a data storage system
KR20190111406A (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
US20190303226A1 (en) Semiconductor memory module and memory system including the same
KR20210025344A (ko) 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템, 그것의 데이터 관리 방법
CN108228088B (zh) 用于管理存储系统的方法和设备
JP2022050757A (ja) メモリシステム
US11983115B2 (en) System, device and method for accessing device-attached memory
US6263408B1 (en) Method and apparatus for implementing automatic cache variable update
US20180329824A1 (en) Storage apparatus and control method thereof
JP7170093B2 (ja) 記憶デバイスのための改良された先読み能力
US11662949B2 (en) Storage server, a method of operating the same storage server and a data center including the same storage server
US9529721B2 (en) Control device, and storage system
US7421536B2 (en) Access control method, disk control unit and storage apparatus
JPH01159746A (ja) ディスクキャッシュ制御方式
US11809341B2 (en) System, device and method for indirect addressing
US20230384960A1 (en) Storage system and operation method therefor
US20240061785A1 (en) Memory device and memory system
KR20230068743A (ko) 이종 메모리를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법