KR102353859B1 - 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈 - Google Patents
컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈 Download PDFInfo
- Publication number
- KR102353859B1 KR102353859B1 KR1020170144577A KR20170144577A KR102353859B1 KR 102353859 B1 KR102353859 B1 KR 102353859B1 KR 1020170144577 A KR1020170144577 A KR 1020170144577A KR 20170144577 A KR20170144577 A KR 20170144577A KR 102353859 B1 KR102353859 B1 KR 102353859B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- memory
- command
- situation
- information
- Prior art date
Links
- 230000009977 dual effect Effects 0.000 title claims abstract description 78
- 238000012545 processing Methods 0.000 claims abstract description 46
- 238000011010 flushing procedure Methods 0.000 claims abstract description 11
- 238000000034 method Methods 0.000 claims description 34
- 230000008859 change Effects 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 26
- 238000007726 management method Methods 0.000 description 13
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 238000012937 correction Methods 0.000 description 3
- 238000013075 data extraction Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 239000003990 capacitor Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/602—Details relating to cache prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
몇몇 실시예에 따른 컴퓨팅 장치는, 프로세서, 상기 프로세서와 연결된 비휘발성 듀얼 인라인 메모리 모듈을 포함하고, 상기 비휘발성 듀얼 인라인 메모리 모듈은, 제1 처리 속도 및 제1 저장 용량을 갖는 제1 메모리, 상기 제1 처리 속도보다 느린 제2 처리 속도 및 상기 제1 저장 용량보다 큰 제2 저장 용량을 갖는 제2 메모리, 상기 제1 메모리 및 상기 제2 메모리 사이에 데이터를 플러쉬(flush) 또는 패치(fetch)하는 컨트롤러 및 호스트 인터페이스를 포함하고, 상기 프로세서는, 데이터의 축출이 필요한 제1 상황 또는 데이터의 프리 패치가 필요한 제2 상황을 인식한 경우, 상기 제1 상황 또는 상기 제2 상황과 관련된 데이터의 논리 주소에 관한 제1 정보, 상기 데이터의 길이에 대한 제2 정보 및 상기 제1 상황 또는 상기 제2 상황을 나타내는 제3 정보를 포함하는 커맨드를 상기 비휘발성 듀얼 인라인 메모리 모듈에 전송한다.
Description
본 발명은 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈에 관한 것이다.
메모리 장치는 크게 휘발성 메모리 장치(Volatile Memory Device)와 비휘발성 메모리 장치(Non-Volatile Memory Device)로 구분된다. 휘발성 메모리 장치는 읽고 쓰는 속도가 빠르지만 외부 전원 공급이 끊기면 저장된 내용이 사라져 버리는 단점이 있다. 반면에 비휘발성 메모리 장치는 외부 전원 공급이 중단되더라도 저장된 데이터를 유지할 수 있다. 그러므로 비휘발성 메모리 장치는 전원이 공급되었는지 여부에 관계없이 보존 되어야할 데이터를 기억시키는 데 사용된다.
한편, 최근에는 대용량의 시스템 메모리를 요구하는 응용이 확산되고 있다. 시스템 메모리로는 주로 휘발성 메모리를 많이 사용하는데 휘발성 메모리 예를 들어, DRAM(Dynamic Random Access Memory)의 집적도에 한계가 존재하기 때문에 DRAM의 저장 용량은 애플리케이션(Application)의 요구에 턱없이 부족한 경우가 많다. 따라서, 이러한 요구를 만족시키기 위한 연구가 진행되고 있다.
본 발명이 해결하고자 하는 기술적 과제는 저속 대용량 메모리와 고속 저용량 메모리를 하나의 비휘발성 듀얼 인라인 메모리 모듈에 내장하여 하나의 시스템 메모리처럼 사용할 수 있도록 함으로써 고속의 대용량 메모리를 장착한 것과 같은 효과를 발생시키는 것을 목적으로 한다.
본 발명이 해결하고자 하는 다른 기술적 과제는 고속의 저용량 메모리에 항상 필요한 데이터를 유지하도록 하는 것을 목적으로 한다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 컴퓨팅 장치는, 프로세서, 상기 프로세서와 연결된 비휘발성 듀얼 인라인 메모리 모듈을 포함하고, 상기 비휘발성 듀얼 인라인 메모리 모듈은, 제1 처리 속도 및 제1 저장 용량을 갖는 제1 메모리, 상기 제1 처리 속도보다 느린 제2 처리 속도 및 상기 제1 저장 용량보다 큰 제2 저장 용량을 갖는 제2 메모리, 상기 제1 메모리 및 상기 제2 메모리 사이에 데이터를 플러쉬(flush) 또는 패치(fetch)하는 컨트롤러 및 호스트 인터페이스를 포함하고, 상기 프로세서는, 데이터의 축출이 필요한 제1 상황 또는 데이터의 프리 패치가 필요한 제2 상황을 인식한 경우, 상기 제1 상황 또는 상기 제2 상황과 관련된 데이터의 논리 주소에 관한 제1 정보, 상기 데이터의 길이에 대한 제2 정보 및 상기 제1 상황 또는 상기 제2 상황을 나타내는 제3 정보를 포함하는 커맨드를 상기 비휘발성 듀얼 인라인 메모리 모듈에 전송한다.
몇몇 실시예에 따른 비휘발성 듀얼 인라인 메모리 모듈은, 제1 처리 속도 및 제1 저장 용량을 갖고 제1 저장 공간에 제1 데이터가 저장된 제1 메모리, 상기 제1 처리 속도보다 느린 제2 처리 속도 및 상기 제1 저장 용량보다 큰 제2 저장 용량을 갖고, 제2 저장 공간에 제2 데이터가 저장된 제2 메모리, 상기 제1 메모리 및 상기 제2 메모리 사이에 데이터를 플러쉬(flush) 또는 패치(fetch)시키는 컨트롤러 및 호스트 인터페이스를 포함하고, 상기 컨트롤러는, 상기 제1데이터의 논리 주소에 관한 제1 정보, 상기 제1 데이터의 길이에 대한 제2 정보 및 축출(eviction)하는 제1 상황을 나타내는 제3 정보를 포함하는 제1 커맨드를 상기 호스트 인터페이스를 통해 수신한 경우, 관리 맵을 확인하여 상기 제1 데이터에 변경이 가해졌는지 여부를 인식한다.
몇몇 실시예에 따른 비휘발성 듀얼 인라인 메모리 모듈은, 제1 처리 속도 및 제1 저장 용량을 갖는 제1 메모리, 상기 제1 처리 속도보다 느린 제2 처리 속도 및 상기 제1 저장 용량보다 큰 제2 저장 용량을 갖고, 제1 저장 공간에 제1 데이터가 저장된 제2 메모리, 상기 제1 메모리 및 상기 제2 메모리 사이에 데이터를 플러쉬(flush) 또는 패치(fetch)시키는 컨트롤러 및 호스트 인터페이스를 포함하고, 상기 컨트롤러는, 상기 제1 데이터의 논리 주소에 관한 제1 정보, 상기 제1 데이터의 길이에 대한 제2 정보 및 프리 패치(prefetch)하는 제1 상황을 나타내는 제3 정보를 포함하는 제1 커맨드를 상기 호스트 인터페이스를 통해 수신한 경우, 상기 제1 데이터를 상기 제1 메모리에 포함된 제2 저장 공간에 패치(fetch)하여 저장한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 몇몇 실시예에 따른 컴퓨팅 장치의 일례를 도시한 도면이다.
도 2는 본 발명의 몇몇 실시예에 따른 비휘발성 듀얼 인라인 메모리 모듈의 일례를 설명하기 위한 블록도이다.
도 3은 몇몇 실시예에 따른 컴퓨팅 장치의 프로세서를 통해 생성되는 커맨드의 일례를 설명하기 위해 도시한 도면이다.
도 4는 몇몇 실시예에 따른 컴퓨팅 장치의 프로세서를 통해 생성되는 커맨드의 다른 일례를 설명하기 위해 도시한 도면이다.
도 5는 몇몇 실시예에 따른 컴퓨팅 장치의 프로세서를 통해 코드 내에 데이터 축출 또는 데이터 프리 패치에 대응하는 커맨드를 삽입하는 방법의 일례를 설명하기 위해 도시한 도면이다.
도 6은 몇몇 실시예에 따른 컴퓨팅 장치의 프로세서를 통해 코드 내에 데이터 축출 또는 데이터 프리 패치에 대응하는 커맨드를 삽입하는 방법의 일례를 설명하기 위해 도시한 도면이다.
도 7은 몇몇 실시예에 따른 컴퓨팅 장치에서 비휘발성 듀얼 인라인 메모리 모듈 내에 저장된 데이터를 프리 패치하는 방법의 일례를 설명하기 위한 흐름도이다.
도 8은 몇몇 실시예에 따른 컴퓨팅 장치에서 비휘발성 듀얼 인라인 메모리 모듈 내에 저장된 데이터를 프리 패치하는 방법의 일례를 설명하기 위한 도면이다.
도 9는 몇몇 실시예에 따른 컴퓨팅 장치에서 비휘발성 듀얼 인라인 메모리 모듈 내에 저장된 데이터를 프리 패치하는 방법의 일례를 설명하기 위한 도면이다.
도 10은 몇몇 실시예에 따라 제1 메모리에 제1 데이터가 프리 패치된 상태에서 제1 데이터의 수정 명령을 수신한 경우 제1 데이터를 수정하는 방법의 일례를 설명하기 위해 도시한 도면이다.
도 11은 몇몇 실시예에 따라 제1 메모리에 제1 데이터가 프리 패치된 상태에서 제1 데이터의 수정 명령을 수신한 경우 제1 데이터를 수정하는 방법의 일례를 설명하기 위해 도시한 도면이다.
도 12는 몇몇 실시예에 따라 제1 메모리에 제1 데이터가 프리 패치된 상태에서 제1 데이터의 리드 명령을 수신한 경우 제1 데이터를 리드하는 방법의 일례를 설명하기 위해 도시한 도면이다.
도 13은 몇몇 실시예에 따라 제1 메모리에 제1 데이터가 프리 패치된 상태에서 제1 데이터의 리드 명령을 수신한 경우 제1 데이터를 리드하는 방법의 일례를 설명하기 위해 도시한 도면이다.
도 14는 몇몇 실시예에 따른 컴퓨팅 장치에서 비휘발성 듀얼 인라인 메모리 모듈 내에 저장된 데이터를 축출하는 방법의 일례를 설명하기 위한 흐름도이다.
도 15는 몇몇 실시예에 따른 컴퓨팅 장치에서 비휘발성 듀얼 인라인 메모리 모듈 내에 저장된 데이터를 축출하는 방법의 일례를 설명하기 위한 도면이다.
도 16은 몇몇 실시예에 따른 컴퓨팅 장치에서 비휘발성 듀얼 인라인 메모리 모듈 내에 저장된 데이터를 축출하는 방법의 일례를 설명하기 위한 도면이다.
도 17은 몇몇 실시예에 따른 컴퓨팅 장치에서 비휘발성 듀얼 인라인 메모리 모듈 내에 저장된 데이터를 축출하는 방법의 일례를 설명하기 위한 도면이다.
도 18은 몇몇 실시예에 따른 컴퓨팅 장치에서 비휘발성 듀얼 인라인 메모리 모듈 내에 저장된 데이터를 축출하는 방법의 일례를 설명하기 위한 도면이다.
도 19는 몇몇 실시예에 따른 컴퓨팅 장치에서 비휘발성 듀얼 인라인 메모리 모듈 내에 저장된 데이터를 축출하는 방법의 일례를 설명하기 위한 도면이다.
도 2는 본 발명의 몇몇 실시예에 따른 비휘발성 듀얼 인라인 메모리 모듈의 일례를 설명하기 위한 블록도이다.
도 3은 몇몇 실시예에 따른 컴퓨팅 장치의 프로세서를 통해 생성되는 커맨드의 일례를 설명하기 위해 도시한 도면이다.
도 4는 몇몇 실시예에 따른 컴퓨팅 장치의 프로세서를 통해 생성되는 커맨드의 다른 일례를 설명하기 위해 도시한 도면이다.
도 5는 몇몇 실시예에 따른 컴퓨팅 장치의 프로세서를 통해 코드 내에 데이터 축출 또는 데이터 프리 패치에 대응하는 커맨드를 삽입하는 방법의 일례를 설명하기 위해 도시한 도면이다.
도 6은 몇몇 실시예에 따른 컴퓨팅 장치의 프로세서를 통해 코드 내에 데이터 축출 또는 데이터 프리 패치에 대응하는 커맨드를 삽입하는 방법의 일례를 설명하기 위해 도시한 도면이다.
도 7은 몇몇 실시예에 따른 컴퓨팅 장치에서 비휘발성 듀얼 인라인 메모리 모듈 내에 저장된 데이터를 프리 패치하는 방법의 일례를 설명하기 위한 흐름도이다.
도 8은 몇몇 실시예에 따른 컴퓨팅 장치에서 비휘발성 듀얼 인라인 메모리 모듈 내에 저장된 데이터를 프리 패치하는 방법의 일례를 설명하기 위한 도면이다.
도 9는 몇몇 실시예에 따른 컴퓨팅 장치에서 비휘발성 듀얼 인라인 메모리 모듈 내에 저장된 데이터를 프리 패치하는 방법의 일례를 설명하기 위한 도면이다.
도 10은 몇몇 실시예에 따라 제1 메모리에 제1 데이터가 프리 패치된 상태에서 제1 데이터의 수정 명령을 수신한 경우 제1 데이터를 수정하는 방법의 일례를 설명하기 위해 도시한 도면이다.
도 11은 몇몇 실시예에 따라 제1 메모리에 제1 데이터가 프리 패치된 상태에서 제1 데이터의 수정 명령을 수신한 경우 제1 데이터를 수정하는 방법의 일례를 설명하기 위해 도시한 도면이다.
도 12는 몇몇 실시예에 따라 제1 메모리에 제1 데이터가 프리 패치된 상태에서 제1 데이터의 리드 명령을 수신한 경우 제1 데이터를 리드하는 방법의 일례를 설명하기 위해 도시한 도면이다.
도 13은 몇몇 실시예에 따라 제1 메모리에 제1 데이터가 프리 패치된 상태에서 제1 데이터의 리드 명령을 수신한 경우 제1 데이터를 리드하는 방법의 일례를 설명하기 위해 도시한 도면이다.
도 14는 몇몇 실시예에 따른 컴퓨팅 장치에서 비휘발성 듀얼 인라인 메모리 모듈 내에 저장된 데이터를 축출하는 방법의 일례를 설명하기 위한 흐름도이다.
도 15는 몇몇 실시예에 따른 컴퓨팅 장치에서 비휘발성 듀얼 인라인 메모리 모듈 내에 저장된 데이터를 축출하는 방법의 일례를 설명하기 위한 도면이다.
도 16은 몇몇 실시예에 따른 컴퓨팅 장치에서 비휘발성 듀얼 인라인 메모리 모듈 내에 저장된 데이터를 축출하는 방법의 일례를 설명하기 위한 도면이다.
도 17은 몇몇 실시예에 따른 컴퓨팅 장치에서 비휘발성 듀얼 인라인 메모리 모듈 내에 저장된 데이터를 축출하는 방법의 일례를 설명하기 위한 도면이다.
도 18은 몇몇 실시예에 따른 컴퓨팅 장치에서 비휘발성 듀얼 인라인 메모리 모듈 내에 저장된 데이터를 축출하는 방법의 일례를 설명하기 위한 도면이다.
도 19는 몇몇 실시예에 따른 컴퓨팅 장치에서 비휘발성 듀얼 인라인 메모리 모듈 내에 저장된 데이터를 축출하는 방법의 일례를 설명하기 위한 도면이다.
도 1은 몇몇 실시예에 따른 컴퓨팅 장치의 일례를 도시한 도면이다.
도 1을 참조하면, 컴퓨팅 장치(10)는 프로세서(Host CPU, 100), 적어도 하나의 듀얼 인라인 메모리 모듈(DIMM, 200) 및 적어도 하나의 비휘발성 듀얼 인라인 메모리 모듈(NVDIMM, 300)을 포함할 수 있다. 도 1에 도시된 구성요소들은 컴퓨팅 장치(10)를 구현하는데 있어서 필수적인 것은 아니어서, 위에서 열거된 구성요소들 보다 많거나 또는 적은 구성 요소들을 가질 수 있다.
컴퓨팅 장치(10)는 컴퓨터, 포터블 컴퓨터, UMPC(Ultra Mobile PC(personal Computer)), 워크스테이션(workstation), 데이터 서버(data server), 넷북, 웹 태블릿, 전자북, 디지털 카메라, 디지털 오디오, 녹음기/재생기, 디지털 사진기/비디오 기록기/재생기, 포터블 게임 머신, 네비게이션 시스템, 블랙 박스, 3D 텔레비전, 무선 환경에서 정보를 수신 및 송신하는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 혹은 컴퓨팅 시스템을 구성하는 다양한 전자 장치들 중 어느 하나로 사용될 수 있다.
프로세서(100)는 컴퓨팅 장치(10)의 전반적인 동작을 제어하도록 구현될 수 있다. 또한, 프로세서(100)는 컴퓨팅 장치(10)에서 수행되는 다양한 연산들을 수행 및 데이터를 처리할 수 있다. 프로세서(100)는 컴퓨팅 장치(10)를 구동하기 위한 운영 체제(Operating System; OS), 애플리케이션(Application) 및 데이터베이스 매니저를 구동할 수 있다.
프로세서(100)는 CPU(Central Processing Unit), 코프로세서(co-processor), APU(Arithmetic Processing Unit), GPU(Graphic Processing Unit), DSP(Digital Signal Processor) 등 일 수 있다.
몇몇 실시예에 따르면, 프로세서(100)는 듀얼 인라인 메모리 모듈(200) 및 비휘발성 듀얼 인라인 메모리 모듈(300)을 관리하기 위한 메모리 관리 유닛(Memory Management Unit, MMU)을 더 포함할 수도 있다.
몇몇 실시예에 따르면, 컴퓨팅 장치(10)는 듀얼 인라인 메모리 모듈(200)을 포함하지 않고 비휘발성 듀얼 인라인 메모리 모듈(300)만 포함할 수도 있다.
듀얼 인라인 메모리 모듈(200)은 적어도 하나의 DRAM(Dynamic Random Access Memory)을 포함할 수 있다.
비휘발성 듀얼 인라인 메모리 모듈(300)은 제1 처리 속도 및 제1 저장 용량을 갖는 제1 메모리 및 제1 처리 속도보다 느린 제2 처리 속도 및 제1 저장 용량보다 큰 제2 저장 용량을 갖는 제2 메모리를 포함할 수 있다. 비휘발성 듀얼 인라인 메모리 모듈(300)에 대해서는 도 2를 참조하여 좀더 자세히 후술한다.
도 2는 본 발명의 몇몇 실시예에 따른 비휘발성 듀얼 인라인 메모리 모듈의 일례를 설명하기 위한 블록도이다.
몇몇 실시예에 따른 비휘발성 듀얼 인라인 메모리 모듈(300)은, 컨트롤러(310), 버퍼 칩(320), 호스트 인터페이스(330), 버스(340), 전원 공급부(350), 제1 메모리(360) 및 제2 메모리(370)를 포함할 수 있다. 도 2에 도시된 구성요소들은 비휘발성 듀얼 인라인 메모리 모듈(300)을 구현하는데 있어서 필수적인 것은 아니어서, 위에서 열거된 구성요소들 보다 많거나 또는 적은 구성 요소들을 가질 수 있다.
컨트롤러(310)는 비휘발성 듀얼 인라인 메모리 모듈(300)의 전반적인 동작을 제어할 수 있다.
몇몇 실시예에 따라, 컨트롤러(310)는 호스트 인터페이스(330)를 통해 제1 메모리(360) 및 제2 메모리(370)를 제어하는 커맨드를 수신할 수도 있다. 컨트롤러(310)는, 상술한 커맨드를 수신한 경우 제1 메모리(360) 및 제2 메모리(370) 간에 데이터를 이동시키는 기능을 수행할 수도 있다. 즉, 컨트롤러(310)는 상술한 커맨드를 수신한 경우 제1 메모리(360) 및 제2 메모리(370) 사이에 데이터를 플러쉬(flush) 또는 패치(fetch) 시키는 기능을 수행할 수 있다.
일례로, 컨트롤러(310)는 데이터의 프리 패치(prefetch)에 대응하는 제1 명령을 수신한 경우, 제2 메모리(370)에 저장된 데이터를 제1 메모리(360)에 패치(fetch)하여 저장할 수 있다.
다른 일례로, 컨트롤러(310)는 데이터의 축출(eviction)에 대응하는 제2 명령을 수신한 경우, 제1 메모리(360)의 관리 맵을 통해 제1 메모리(360)에 저장된 데이터가 변경되었는지 여부를 파악할 수 있다. 컨트롤러(310)는 제1 메모리(360)에 저장된 데이터에 변화가 가해진 경우에 제1 메모리(360)에 저장된 데이터를 제2 메모리(370)에 플러쉬(flush)하여 저장할 수 있다.
버퍼 칩(320)은 비휘발성 듀얼 인라인 메모리 모듈(300)에 저장될 데이터 또는 비휘발성 듀얼 인라인 메모리 모듈(300)에서 읽혀질 데이터를 임시적으로 저장할 수 있다.
호스트 인터페이스(330)는 컴퓨팅 장치의 프로세서(도 1의 100)와 비휘발성 듀얼 인라인 메모리 모듈(300) 사이의 인터페이스를 제공할 수 있다.
컨트롤러(310)는 호스트 인터페이스(330)를 통해 컴퓨팅 장치의 프로세서(도 1의 100)로부터 커맨드, 데이터 및 신호 등을 수신할 수 있다. 또한, 컨트롤러(310)는 호스트 인터페이스(330)를 통해 커맨드, 데이터 및 신호 등을 호스트에게 전송할 수도 있다.
전원 공급부(350)는 컨트롤러(310)의 제어 하에서 비휘발성 듀얼 인라인 메모리 모듈(300)에 포함된 각 구성요소들에 전원을 공급할 수 있다. 이러한 전원 공급부(350)는 배터리를 포함할 수 있다. 여기서, 배터리는 내장형 배터리 또는 교체 가능한 형태의 배터리가 될 수 있다.
몇몇 실시예에 따르면, 컨트롤러(310)는 외부로부터 전원이 공급되지 않는 상황에서 전원 공급부(350)를 제어하여 비휘발성 듀얼 인라인 메모리 모듈(300)에 포함된 각 구성요소들에 전원을 공급할 수 있다. 전원 공급부(350)를 통해 전원이 공급되는 동안 컨트롤러(310)는 휘발성 메모리에 저장되어 있는 데이터들을 비휘발성 메모리에 플러쉬하여 저장할 수 있다. 따라서, 전원 공급이 갑자기 끊긴 경우, 휘발성 메모리에 저장된 데이터가 소멸되는 것을 방지할 수 있다.
컨트롤러(310), 버퍼 칩(320), 호스트 인터페이스(330), 전원 공급부(350), 제1 메모리(360) 및 제2 메모리(370)는 버스(340)를 통해 서로 데이터를 주고 받을 수 있다.
제1 메모리(360)는 제1 처리 속도 및 제1 저장 용량을 갖는 메모리일 수 있다. 여기서, 제1 메모리(360)는 제1 처리 속도를 갖는 복수의 메모리 칩(361, 362, ... )을 포함할 수 있다.
제2 메모리(370)는 제1 처리 속도보다 느린 제2 처리 속도 및 제1 저장 용량보다 큰 제2 저장 용량을 갖는 메모리일 수 있다. 여기서, 제2 메모리(370)는 제2 처리 속도를 갖는 복수의 메모리 칩(371, 372, ... )을 포함할 수 있다.
제1 메모리(360)는 휘발성 메모리일 수 있다. 예를 들어, 제1 메모리(360)는 RAM(random access memory), SRAM(static RAM), DRAM (dynamic RAM), SDRAM(synchronous DRAM), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), TTRAM(Twin Transistor RAM) 또는 이들의 다양한 조합으로 구성될 수 있다.
제2 메모리(370)는 비휘발성 메모리일 수 있다. 예를 들어, 제2 메모리(370)는 EEPROM(electrically erasable programmable read-only memory), 플래시(flash) 메모리, MRAM(magnetic RAM), 스핀전달토크 MRAM (spin-transfer torque MRAM), FeRAM(ferroelectric RAM), PRAM(phase change RAM), RRAM(resistive RAM), MMC(multimedia card), eMMC(embedded MMC), UFS(universal flash storage) 또는 이들의 다양한 조합으로 구현될 수 있다.
몇몇 실시예에 따르면, 제1 메모리(360)는 불휘발성 메모리일 수도 있다. 다만, 제1 메모리(360)가 불휘발성 메모리인 경우에도, 제1 메모리(360)의 처리 속도는 제2 메모리(370)의 처리 속도보다 빠르고, 제1 메모리(360)의 저장 용량은 제2 메모리(370)의 저장 용량보다 작을 수 있다.
예를 들어, 제1 메모리(360)가 복수의 PRAM 칩을 포함하는 경우, 제2 메모리(370)는 복수의 플래시 메모리 칩을 포함할 수 있다. 이 경우, 복수의 PRAM 칩에 의한 총 저장 용량은 복수의 플래시 메모리 칩에 의한 총 저장 용량보다 작을 수 있다.
도 3은 몇몇 실시예에 따른 컴퓨팅 장치의 프로세서를 통해 생성되는 커맨드의 일례를 설명하기 위해 도시한 도면이다. 도 4는 몇몇 실시예에 따른 컴퓨팅 장치의 프로세서를 통해 생성되는 커맨드의 다른 일례를 설명하기 위해 도시한 도면이다.
컴퓨팅 장치에 포함된 프로세서(도 1의 100)는, 데이터의 축출이 필요한 제1 상황 또는 데이터의 프리 패치가 필요한 제2 상황을 인식한 경우, 비휘발성 듀얼 인라인 메모리 모듈에 제1 상황 또는 제2 상황에 대응하는 커맨드(도 3의 400)를 전송할 수 있다.
도 3을 참조하면, 커맨드(400)는 예를 들어, 3개의 필드(field)를 포함할 수 있다. 여기서, 필드라 함은, 커맨드 내에 특정 정보가 포함된 영역을 의미할 수 있다.
제1 필드(401)에는 커맨드 이름이 포함될 수 있다. 예를 들어, 데이터의 축출 또는 데이터의 프리 패치에 관한 커맨드의 이름은 nvmadvise일 수 있다.
제2 필드(402)에는 데이터의 논리 주소에 대한 정보가 포함될 수 있다.
예를 들어, 제2 필드(402)는 프리 패치 또는 축출의 대상이 되는 데이터의 논리 주소(logical address)를 포함할 수 있다. 구체적으로, 축출 또는 프리패치의 대상이 되는 데이터의 논리 주소에 대한 정보 및 상기 축출 또는 프리패치의 대상이 되는 데이터의 길이에 대한 정보가 제2 필드(402)에 포함될 수 있다.
다른 일례로, 제2 필드(402)는 축출 또는 프리 패치의 대상이 되는 데이터의 논리 주소가 비연속적으로 복수 개인 경우, 상기 복수의 데이터 각각의 논리 주소에 관한 정보를 포함할 수 있다. 구체적으로, 축출 또는 프리 패치의 대상이 되는 복수의 데이터 각각의 논리 주소에 대한 정보 및 각각의 논리 주소에 대응하는 데이터의 길이에 대한 정보가 리스트로 제2 필드(402)에 포함될 수 있다. 이 경우, 복수의 데이터 각각에 대한 복수의 커맨드를 호출할 필요 없이 하나의 커맨드를 통해 복수의 데이터에 대한 프리 패치 또는 축출을 수행할 수 있어 처리 속도가 빨라질 수 있다.
제3 필드(403)는 데이터의 축출이 필요한 상황인지 또는 데이터의 프리 패치가 필요한 상황인지를 나타내는 정보를 포함할 수 있다.
일례로, 데이터의 축출이 필요한 상황에서 제3 필드(403)에 UNLOAD가 포함될 수 있다. 다른 일례로, 데이터의 프리 패치가 필요한 상황에서 제3 필드(403)에 LOAD가 포함될 수 있다. 즉, LOAD는 데이터의 프리 패치가 필요한 상황임을 나타내고, UNLOAD는 데이터의 축출이 필요한 상황임을 나타낼 수 있다.
도 3에서 상술한 커맨드(400)를 프리패치 또는 축출 커맨드로 이용하는 것이 일반적이지만, 다른 몇몇 실시예에서 DRAM에서 사용되는 라이트 커맨드(도 4의 500)와 유사한 구조를 가진 커맨드를 프리패치 또는 축출 커맨드로 이용할 수도 있다. 즉, 컴퓨팅 장치에 포함된 프로세서(도 1의 100)는, 데이터의 축출이 필요한 제1 상황 또는 데이터의 프리 패치가 필요한 제2 상황을 인식한 경우, 도 3에서 상술한 커맨드(400)와 다른 커맨드(도 4의 510)를 비휘발성 듀얼 인라인 메모리 모듈에 전송할 수도 있다.
도 4를 참조하면, DRAM에 사용되는 라이트 커맨드(500)는 제1 필드(501)에 명령어 이름을 포함할 수 있다. 라이트 커맨드(500)는 제2 필드(502)에 데이터를 저장할 저장 공간의 주소에 대한 정보(예를 들어 행 주소(ROW ADDRESS) 및 칼럼 주소(COLUMN ADDRESS))를 포함할 수 있다. 라이트 커맨드(500)는 제3 필드(503)에 라이트할 데이터를 포함할 수 있다. 라이트 커맨드(500)의 제4 필드(504)는 아웃오브밴드(Out Of Band; OOB) 영역일 수 있다.
제1 상황 또는 제2 상황에 대응하는 커맨드(510)는 제1 필드(511)에 명령어 이름을 포함할 수 있다. 예를 들어, 데이터의 축출 또는 데이터의 프리 패치에 관한 커맨드의 이름은 nvmadvise일 수 있다.
커맨드(510)는 제2 필드(512)에 더미 정보(NULL)를 포함할 수 있다. DRAM에서 사용될 경우 라이트 커맨드(500)의 제2 필드(502)는 데이터를 저장할 저장 공간의 주소에 대한 정보를 포함할 수 있지만, 비휘발성 듀얼 인라인 메모리 모듈은 DRAM과 다른 저장 공간의 주소를 가지기 때문이다.
커맨드(510)는 제3 필드(513)에 데이터가 저장된 영역에 대한 정보를 포함할 수 있다.
예를 들어, 제3 필드(513)는 축출 또는 프리 패치의 대상이 되는 데이터의 논리 주소에 관한 정보 및 상기 데이터의 길이에 대한 정보를 포함할 수 있다.
다른 일례로, 축출 또는 프리 패치의 대상이 되는 데이터의 논리 주소가 비연속적으로 복수 개인 경우, 복수의 데이터 각각의 논리 주소에 대한 정보 및 각각의 논리 주소에 대응하는 데이터의 길이에 대한 정보가 리스트로 제3 필드(513)에 포함될 수 있다. 이 경우, 복수의 데이터 각각에 대한 복수의 커맨드를 호출할 필요 없이 하나의 커맨드를 통해 복수의 데이터에 대한 프리 패치 또는 축출을 수행할 수 있어 처리 속도가 빨라진다.
커맨드(510)의 제4 필드(514)는 데이터의 축출이 필요한 상황인지 또는 데이터의 프리 패치가 필요한 상황인지를 나타내는 정보를 포함할 수 있다.
일례로, 데이터의 축출이 필요한 상황에서 제4 필드(514)에 UNLOAD가 포함될 수 있다. 다른 일례로, 데이터의 프리 패치가 필요한 상황에서 제4 필드(514)에 LOAD가 포함될 수 있다.
도 5 및 도 6은 몇몇 실시예에 따른 컴퓨팅 장치의 프로세서를 통해 코드 내에 데이터 축출 또는 데이터 프리 패치에 대응하는 커맨드를 삽입하는 방법의 일례를 설명하기 위해 도시한 도면들이다.
컴퓨팅 장치의 프로세서(도 1의 100)는 코드를 분석하여 코드 내에 명령어를 삽입하는 컴파일러(compiler)를 더 포함할 수 있다.
컴파일러는 코드를 분석하여 데이터의 축출이 필요한 상황인지 아니면 데이터의 프리 패치가 필요한 상황인지 여부를 인식할 수 있다.
예를 들어, 도 5를 참조하면, 컴파일러는 코드(600) 내에 메모리 해제와 관련된 명령어(C), 예를 들어, free(idName)을 인식할 수 있다. 이 경우, 컴파일러는 데이터의 축출이 필요한 상황이라고 인식할 수 있다.
도 6을 참조하면, 컴파일러는 데이터의 축출이 필요한 상황이라고 인식한 경우, 코드(600) 내에 축출에 대응하는 커맨드(410)를 삽입할 수 있다. 여기서, 축출에 대응하는 커맨드(410)는 메모리 해제와 관련된 명령어(C) 다음에 삽입될 수 있다.
예를 들어, 축출에 대응하는 커맨드(410)의 제1 필드에 커맨드 이름인 nvmadvise가 포함될 있고, 제2 필드에 시작 주소가 100이고 데이터 길이가 10이라는 정보가 포함될 수 있고, 제3 필드에 축출이 필요한 상황이라는 UNLOAD가 포함될 수 있다.
도 5와 관련하여 데이터 축출에 한정하여 설명하였으나, 이에 한정되는 것은 아니고 컴파일러는 코드를 분석하여 프리 패치가 필요한 상황이라고 인식한 경우, 프리 패치에 대응하는 커맨드를 코드 내에 삽입할 수도 있다.
한편, 도면에 도시되지는 않았지만, 몇몇 실시예에 따르면, 컴퓨팅 장치의 프로세서(도 1의 100)는 시스템 호출(system call)을 인터셉트할 수 있다. 여기서, 인터셉트 되는 시스템 호출은 운영 체제(Operating System; OS)에게 메모리의 저장 영역에 대한 정보를 전달하는 시스템 호출일 수 있다. 예를 들어, madvise 커맨드, fadvise 커맨드 등이 이에 해당할 수 있다. 여기서, madvise 커맨드는 int madvise(void*addr, size_t length, int advise) 형식으로서 운영 체제에게 메모리 영역의 사용 계획을 알리는 시스템 호출이고, fadvise 커맨드는 madvise 커맨드와 유사하게 운영 체제에게 파일 영역의 사용 계획을 알리는 시스템 호출이다.
프로세서(도 1의 100)는 인터셉트 된 시스템 호출이 데이터 축출과 관련된 커맨드인 경우, 데이터 축출과 관련된 커맨드를 도 3 또는 도 4에서 상술한 커맨드(400, 510)로 변환할 수 있다. 또한, 프로세서(도 1의 100)는 인터셉트 된 시스템 호출이 프리 패치와 관련된 커맨드인 경우, 프리 패치와 관련된 커맨드를 도 3 또는 도 4에서 상술한 커맨드(400, 510)로 변환할 수 있다.
예를 들어, 프로세서(도 1 의 100)가 인터셉트한 시스템 호출이 madvise 커맨드라 가정하면, madvise command 내의 세번째 파라미터 (int advise)에 첫번째 파라미터(void*addr) 및 두번째 파라미터(size_t length)에 의해 정의된 메모리 영역을 곧 사용할 예정이라는 정보(MADV_WILLNEED) 또는 상기 메모리 영역을 더 이상 사용하지 않을 것이라는 정보(MADV_DONTNEED)가 포함될 수 있다. 따라서, 프로세서(도 1의 100)는 madvise 커맨드 내의 세번째 파라미터를 확인하여 MADV_WILLNEED가 포함된 경우 프리 패치가 필요한 상황이라고 인식하고, madvise 커맨드를 제3 필드(도 3의 403)에 LOAD를 포함하는 nvmadvise 커맨드로 변환할 수 있다. 한편, 프로세서(도 1의 100)는 madvise 커맨드 내의 세번째 파라미터를 확인하여 MADV_DONTNEED가 포함된 경우 축출이 필요한 상황이라고 인식하고, madvise 커맨드를 제3 필드(도 3의 403)에 UNLOAD를 포함하는 nvmadvise 커맨드로 변환할 수 있다.
도 7은 몇몇 실시예에 따른 컴퓨팅 장치에서 비휘발성 듀얼 인라인 메모리 모듈 내에 저장된 데이터를 프리 패치하는 방법의 일례를 설명하기 위한 흐름도이다. 도 8 및 도 9는 몇몇 실시예에 따른 컴퓨팅 장치에서 비휘발성 듀얼 인라인 메모리 모듈 내에 저장된 데이터를 프리 패치하는 방법의 일례를 설명하기 위한 도면들이다. 도 10 및 도 11은 몇몇 실시예에 따라 제1 메모리에 제1 데이터가 프리 패치된 상태에서 제1 데이터의 수정 명령을 수신한 경우 제1 데이터를 수정하는 방법의 일례를 설명하기 위해 도시한 도면들이다. 도 12 및 도 13은 몇몇 실시예에 따라 제1 메모리에 제1 데이터가 프리 패치된 상태에서 제1 데이터의 리드 명령을 수신한 경우 제1 데이터를 리드하는 방법의 일례를 설명하기 위해 도시한 도면들이다.
도 7을 참조하면, 프로세서(100)는 데이터의 프리 패치가 필요한 상황을 인식할 수 있다(S110). 여기서, 프리 패치는 비휘발성 듀얼 인라인 메모리 모듈(300)에 포함된 제1 메모리 및 제2 메모리 중 느린 처리 속도를 가진 제2 메모리에 저장된 데이터를 빠른 처리 속도를 가진 제1 메모리에 미리 패치하여 저장하는 것을 의미할 수 있다.
일례로, 실행 중인 어플리케이션의 프로세스(process) 또는 쓰레드(Thread)에 명시적으로 프리 패치가 필요한 상황이 정의되어 있을 수 있다.
다른 일례로, 프로세서(100)는 시스템 호출을 인터셉트하여 시스템 호출을 분석함으로써 프리 패치가 필요한 상황을 인식할 수도 있다. 이에 대해 도 5 및 도 6을 참조하여 자세히 상술한바 자세한 설명은 생략한다.
프로세서(100)는 프리 패치가 필요한 상황을 인식한 경우(S110), 비휘발성 듀얼 인라인 메모리 모듈(300)에 프리 패치 커맨드를 전송할 수 있다(S120). 여기서, 프리 패치 커맨드는, 비휘발성 듀얼 인라인 메모리 모듈(300)내에 프리 패치의 대상이 되는 데이터의 논리 주소에 관한 제1 정보, 프리 패치할 데이터의 길이에 대한 제2 정보, 프리 패치하는 상황을 나타내는 제3 정보를 포함하는 커맨드일 수 있다. 이에 대해 도 3(또는 도 4)에서 자세히 상술한바 자세한 설명은 생략한다.
비휘발성 듀얼 인라인 메모리 모듈(300)의 컨트롤러(도 2의 310)는 상기 프리 패치 커맨드를 수신함에 따라 제2 메모리(도 3의 370)에 저장된 프리 패치할 데이터를 제1 메모리(도 2의 360)에 포함된 저장 공간에 패치하여 저장할 수 있다(S130).
예를 들어, 도 8을 참조하면, 비휘발성 듀얼 인라인 메모리 모듈(300)의 컨트롤러(310)는 호스트 인터페이스(330)를 통해 제1 데이터(data 1)에 대한 프리 패치 커맨드를 수신할 수 있다. 여기서, 제1 데이터(data 1)는 제1 메모리(360)의 제1 처리 속도보다 느린 제2 처리 속도를 가지고 제1 메모리(360)의 제1 저장 용량보다 큰 제2 저장 용량을 가지는 제2 메모리(370) 내의 제1 저장 공간(371a)에 저장된 데이터일 수 있다.
도 9를 참조하면, 컨트롤러(310)는 호스트 인터페이스(330)를 통해 제1 데이터에 대한 프리 패치 커맨드를 수신한 경우, 프리 패치 커맨드 내의 제1 정보 및 제2 정보에 기초하여 제2 메모리(370) 내의 제1 저장 공간(371a)을 인식할 수 있다. 그리고, 컨트롤러(310)는 제2 메모리(370)의 제1 저장 공간(371a)에 저장된 제1 데이터(data 1)를 제1 메모리(360)로 패치하여 제1 메모리(360)의 제2 저장 공간(361a)에 저장할 수 있다. 컨트롤러(310)는 제2 저장 공간(361a)에 제1 데이터(data 1)가 저장된 경우, 제1 데이터(data 1)가 저장된 공간이 제1 저장 공간(371a) 및 제2 저장 공간(361a)이라는 정보를 함께 저장할 수 있다.
도 7을 다시 참조하면, 비휘발성 듀얼 인라인 메모리 모듈(300)은 제1 데이터(data 1)에 대한 프리 패치가 완료된 경우, 프리 패치가 완료되었다는 신호를 호스트 인터페이스(330)를 통해 프로세서(100)에 전송할 수 있다. 프로세서(100)는 상기 신호를 수신함으로써 프리 패치가 완료되었다는 것을 인식할 수 있다.
몇몇 실시예에 따르면, 프로세서(100)는 데이터를 수정 또는 리드할 경우, 수정 명령 또는 리드 명령을 비휘발성 듀얼 인라인 메모리 모듈(300)에 전송할 수 있다(S140). 비휘발성 듀얼 인라인 메모리 모듈(300)은 수정 명령 또는 리드 명령을 수신한 경우, 처리 속도가 더 빠른 제1 메모리(도 2의 360)에 프리패치된 데이터를 수정하거나 리드할 수 있다(S150).
이하, 도 10 및 도 11을 참조하여 수정 명령에 따라 데이터를 수정하는 방법을 설명하고, 도 12 및 도 13을 참조하여 리드 명령에 따라 데이터를 리드하는 방법을 설명한다.
도 10을 참조하면, 비휘발성 듀얼 인라인 메모리 모듈(300)의 컨트롤러(310)는 호스트 인터페이스(330)를 통해 제1 데이터(data 1)를 수정하는 명령을 수신할 수 있다. 컨트롤러(310)는 호스트 인터페이스(330)를 통해 제1 데이터(data 1)를 수정하는 명령을 수신한 경우, 제1 메모리(360)의 제2 저장 공간(361a)에 저장된 제1 데이터(data 1)를 수정할 수 있다.
일례로, 도 11을 참조하면, 컨트롤러(310)는, 제1 데이터를 수정하라는 명령을 수신함에 따라 제1 메모리(360)의 제2 저장 공간과 다른 새로운 제3 저장 공간(361b)에 수정된 제1 데이터(data 1')를 저장할 수 있다. 그리고, 컨트롤러(310)는 제1 데이터(data 1)가 수정되었고, 제3 저장 공간(361b)에 수정된 제1 데이터(data 1')가 저장되어 있다는 정보를 관리 맵에 저장할 수 있다. 여기서, 관리 맵이라 함은, 논리 주소에 의해 검색되는 물리 주소(physical address)에 대한 정보, 데이터가 변경되었는지에 대한 정보 등을 관리하는 맵일 수 있다.
다른 일례로, 도면에 도시되지는 않았지만 컨트롤러(310)는, 제1 데이터를 수정하라는 명령을 수신함에 따라 제1 메모리(360)의 기존의 제2 저장 공간(361a)에 수정된 제1 데이터(data 1')를 저장할 수도 있다. 그리고, 컨트롤러(310)는 제1 데이터(data 1)가 수정되었고, 제2 저장 공간(361a)에 수정된 제1 데이터(data 1')가 저장되어 있다는 정보를 관리 맵에 저장할 수도 있다.
상술한 바와 같이 수정될 데이터를 처리 속도가 빠른 제1 메모리(360)에 프리 패치한 후 수정 명령이 수신되면, 처리 속도가 느린 제2 메모리(370)에 저장된 제1 데이터를 수정하지 않고, 처리 속도가 빠른 제1 메모리(360)에 저장된 제1 데이터를 수정함으로써 사용자에게 고속의 대용량 메모리를 사용하는 것과 같은 느낌을 줄 수 있다.
한편, 도면에 도시되지 않았지만, 컨트롤러(310)는 제1 데이터의 수정이 완료된 후 제1 데이터를 리드하는 명령을 호스트 인터페이스(330)를 통해 수신한 경우, 제1 메모리(360)의 수정된 제1 데이터(data 1')를 호스트 인터페이스(330)를 통해 전송할 수 있다.
몇몇 실시예에 따르면, 호스트 인터페이스(330)를 통해 축출 명령이 수신되지 않는 이상 제1 메모리(360)에 저장된 수정된 제1 데이터(data 1')는 제2 메모리(370)에 저장되지 않을 수 있다.
도 12를 참조하면, 비휘발성 듀얼 인라인 메모리 모듈(300)의 컨트롤러(310)는 호스트 인터페이스(330)를 통해 제1 데이터(data 1)를 리드하는 명령을 수신할 수 있다.
도 13을 참조하면, 컨트롤러(310)는 호스트 인터페이스(330)를 통해 제1 데이터(data 1)를 리드하는 명령을 수신한 경우, 제1 메모리(360)의 제2 저장 공간(361a)에 프리 패치된 제1 데이터(data 1)를 호스트 인터페이스(330)를 통해 전송할 수 있다. 즉, 컨트롤러(310)는 처리 속도가 느린 제2 메모리(370)에 저장된 제1 데이터를 전송하는 것이 아니라 처리 속도가 빠른 제1 메모리(360)에 저장된 제1 데이터를 전송함으로써 사용자에게 고속의 대용량 메모리를 사용하는 것과 같은 느낌을 줄 수 있다.
도 14는 몇몇 실시예에 따른 컴퓨팅 장치에서 비휘발성 듀얼 인라인 메모리 모듈 내에 저장된 데이터를 축출하는 방법의 일례를 설명하기 위한 흐름도이다. 도 15 내지 도 19는 몇몇 실시예에 따른 컴퓨팅 장치에서 비휘발성 듀얼 인라인 메모리 모듈 내에 저장된 데이터를 축출하는 방법의 일례를 설명하기 위한 도면들이다.
도 14를 참조하면, 프로세서(100)는 데이터의 축출이 필요한 상황을 인식할 수 있다(S210). 여기서, 데이터의 축출은 비휘발성 듀얼 인라인 메모리 모듈에 포함된 제1 메모리 및 제2 메모리 중 처리 속도가 빠른 제1 메모리에 저장된 갱신 데이터를 제2 메모리에 플러쉬하여 저장하는 것을 의미할 수 있다.
일례로, 실행 중인 어플리케이션의 프로세스(process) 또는 쓰레드(Thread)에 명시적으로 축출이 필요한 상황이 정의되어 있을 수 있다.
다른 일례로, 프로세서(100)는 시스템 호출을 인터셉트하여 시스템 호출을 분석함으로써 축출이 필요한 상황을 인식할 수도 있다.
프로세서(100)는 축출이 필요한 상황을 인식한 경우(S210), 비휘발성 듀얼 인라인 메모리 모듈(300)에 축출 커맨드를 전송할 수 있다(S220). 여기서, 축출 커맨드는, 비휘발성 듀얼 인라인 메모리 모듈(300)내에 축출의 대상이 되는 데이터의 논리 주소에 관한 제1 정보, 축출할 데이터의 길이에 대한 제2 정보, 축출하는 상황을 나타내는 제3 정보를 포함하는 커맨드일 수 있다.
비휘발성 듀얼 인라인 메모리 모듈(300)은 축출 커맨드를 수신한 경우, 축출 커맨드와 관련된 데이터를 관리 맵에서 확인할 수 있다. (S230). 여기서, 관리 맵이라 함은, 논리 주소에 의해 검색 가능한 물리 주소에 대한 정보, 데이터가 변경되었는지에 대한 정보 등을 관리하는 맵일 수 있다.
예를 들어, 도 15를 참조하면, 컨트롤러(310)는, 제1 데이터(data 1)에 대한 축출 명령을 호스트 인터페이스(330)를 통해 수신할 수 있다. 컨트롤러(310)는 제1 데이터(data 1)에 대한 축출 명령을 수신한 경우, 관리 맵을 확인하여 축출 명령에 대응하는 제1 데이터에 관한 정보를 획득할 수 있다.
도 14를 다시 참조하면, 비휘발성 듀얼 인라인 메모리 모듈(300)은 관리 맵을 확인(S230)함으로써, 제1 메모리(360)에 저장된 축출 명령과 관련된 데이터가 변경되었는지 여부를 인식할 수 있다(S240).
비휘발성 듀얼 인라인 메모리 모듈(300)은 제1 메모리(360)에 저장된 축출 명령과 관련된 데이터가 변경되지 않았다고 인식한 경우(S240, N), 제1 메모리(360)의 저장 공간 중 축출 명령과 관련된 데이터를 저장한 저장 공간을 가용한 공간으로 변경할 수 있다(S270).
예를 들어, 도 15를 다시 참조하면, 비휘발성 듀얼 인라인 메모리 모듈(300)의 컨트롤러(310)는 상술한 관리 맵을 확인함으로써 제1 메모리(360)의 제1 저장 공간(361a)에 저장된 축출 명령과 관련된 제1 데이터(data 1)가 제2 메모리(370) 내의 제2 저장 공간(371a)에 저장된 축출 명령과 관련된 제1 데이터(data 1)와 다르게 변경되었는지 여부를 인식할 수 있다.
컨트롤러(310)는 제1 메모리(360)에 저장된 제1 데이터(data 1)에 변경이 가해지지 않았다고 인식한 경우, 제2 메모리(370)에 제1 저장 공간(361a)에 저장된 제1 데이터(data 1)를 저장하지 않을 수 있다.
또한, 도 16을 참조하면, 컨트롤러(310)는 제1 메모리(360)에 저장된 제1 데이터(data 1)에 변경이 가해지지 않았다고 인식한 경우, 제1 메모리(360)에서 제1 데이터(data 1)가 저장된 제1 저장 공간(361a)을 가용 공간으로 변경할 수 있다.
한편, 도 14를 다시 참조하면, 비휘발성 듀얼 인라인 메모리 모듈(300)은 제1 메모리(360)에 저장된 축출 명령과 관련된 데이터가 변경되었다고 인식한 경우(S240, Y), 제1 메모리(360)에 저장된 축출 명령과 관련된 데이터를 제2 메모리(370)에 플러쉬하여 저장할 수 있다(S250).
비휘발성 듀얼 인라인 메모리 모듈(300)은 제2 메모리(360)에 데이터를 플러쉬하여 저장한 후에 제1 메모리(360) 내에서 축출 명령과 관련된 데이터가 저장되었던 저장 공간을 가용 공간으로 변경할 수 있다(S270).
예를 들어, 도 17을 참조하면, 컨트롤러(310)는, 제1 데이터(data 1)에 대한 축출 명령을 호스트 인터페이스(330)를 통해 수신할 수 있다.
컨트롤러(310)는 제1 데이터(data 1)에 대한 축출 명령을 수신한 경우, 축출 명령에 대응하는 제1 데이터에 관한 정보를 관리 맵에서 확인할 수 있다. 컨트롤러(310)는 관리 맵을 확인하여 제1 데이터가 변경되었는지 여부를 인식할 수 있다. 여기서, 제1 데이터(data 1)는 제1 메모리(360)에 저장되어 있는 데이터일 수 있다.
도 18을 참조하면, 컨트롤러(310)는 제1 데이터가 변경되었다고 인식한 경우, 제1 저장 공간(361a)에 저장된 축출 명령과 관련된 수정된 데이터(data 1')를 제2 메모리 내에서 수정 전 데이터(data 1)가 저장된 기존의 제2 저장 공간(371a) 혹은 다른 제3 저장 공간(372a)에 플러쉬하여 저장할 수 있다. 이 경우, 저장 공간이 변경 되었다면 제2 저장 공간(371a)에 저장된 수정 전 데이터(data 1)는 삭제될 수 있다. 또한, 데이터 저장 공간이 변경되었다면 컨트롤러(310)는 데이터(data 1)의 저장 공간이 제3 저장 공간(372a)이라는 정보를 갱신할 수 있다.
도 19를 참조하면, 컨트롤러(310)는 제2 메모리(360) 내의 제3 저장 공간(372a)에 데이터(data 1')를 플러쉬하여 저장한 후에 제1 메모리(360) 내에서 축출 명령과 관련된 데이터가 저장되었던 제1 저장 공간(361a)을 가용 공간으로 변경할 수 있다.
상술한 실시예에 의하면, 고속의 저용량 메모리인 제1 메모리에 항상 필요한 데이터만 남길 수 있다.
한편, 도 14를 다시 참조하면, 비휘발성 듀얼 인라인 메모리 모듈(300)은 축출 명령과 관련된 데이터에 대한 축출이 완료된 경우, 축출이 완료되었다는 신호를 호스트 인터페이스(330)를 통해 프로세서(100)에 전송할 수 있다. 프로세서(100)는 상기 신호를 수신함으로써 축출이 완료되었다는 것을 인식할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 프로세서 200: 듀얼 인라인 메모리 모듈
300: 비휘발성 듀얼 인라인 메모리 모듈 310: 컨트롤러
320: 데이터 버퍼 330: 호스트 인터페이스
340: 버스 350: 전원 공급부
360: 제1 메모리 370: 제2 메모리
300: 비휘발성 듀얼 인라인 메모리 모듈 310: 컨트롤러
320: 데이터 버퍼 330: 호스트 인터페이스
340: 버스 350: 전원 공급부
360: 제1 메모리 370: 제2 메모리
Claims (10)
- 프로세서; 및
상기 프로세서와 연결된 비휘발성 듀얼 인라인 메모리 모듈을 포함하고,
상기 비휘발성 듀얼 인라인 메모리 모듈은,
제1 처리 속도 및 제1 저장 용량을 갖는 제1 메모리, 상기 제1 처리 속도보다 느린 제2 처리 속도 및 상기 제1 저장 용량보다 큰 제2 저장 용량을 갖는 제2 메모리, 상기 제1 메모리 및 상기 제2 메모리 사이에 데이터를 플러쉬(flush) 또는 패치(fetch)하는 컨트롤러 및 호스트 인터페이스를 포함하고,
상기 프로세서는,
데이터의 축출이 필요한 제1 상황 또는 데이터의 프리 패치가 필요한 제2 상황을 인식한 경우, 상기 제1 상황 또는 상기 제2 상황과 관련된 데이터의 논리 주소에 관한 제1 정보, 상기 데이터의 길이에 대한 제2 정보 및 상기 제1 상황 또는 상기 제2 상황을 나타내는 제3 정보를 포함하는 커맨드를 상기 비휘발성 듀얼 인라인 메모리 모듈에 전송하는, 컴퓨팅 장치. - 제 1 항에 있어서,
상기 프로세서는,
제1 데이터의 축출(eviction)이 필요한 상황을 인식한 경우, 상기 제1 데이터의 논리 주소에 관한 정보, 상기 제1 데이터의 길이에 대한 정보 및 상기 제1 상황을 나타내는 정보를 포함하는 제1 커맨드를 상기 비휘발성 듀얼 인라인 메모리 모듈에 전송하는, 컴퓨팅 장치. - 제 1 항에 있어서,
상기 프로세서는,
제2 데이터의 프리 패치가 필요한 상황을 인식한 경우, 상기 제2 데이터의 논리 주소에 관한 정보, 상기 제2 데이터의 길이에 대한 정보 및 상기 제2 상황을 나타내는 정보를 포함하는 제2 커맨드를 상기 비휘발성 듀얼 인라인 메모리 모듈에 전송하는, 컴퓨팅 장치. - 제 1 항에 있어서,
상기 프로세서는,
시스템 호출(system call)을 인터셉트하고,
상기 시스템 호출이 상기 제1 상황과 관련된 커맨드인 경우, 상기 시스템 호출을 데이터 축출 커맨드로 변환하고,
상기 시스템 호출이 상기 제2 상황과 관련된 커맨드인 경우, 상기 시스템 호출을 데이터 프리 패치 커맨드로 변환하는, 컴퓨팅 장치. - 제1 처리 속도 및 제1 저장 용량을 갖고, 제1 저장 공간에 제1 데이터가 저장된 제1 메모리;
상기 제1 처리 속도보다 느린 제2 처리 속도 및 상기 제1 저장 용량보다 큰 제2 저장 용량을 갖고, 제2 저장 공간에 상기 제1 데이터에 대응하는 제2 데이터가 저장된 제2 메모리;
상기 제1 메모리 및 상기 제2 메모리 사이에 데이터를 플러쉬(flush) 또는 패치(fetch)시키는 컨트롤러; 및
호스트 인터페이스를 포함하고,
상기 컨트롤러는,
상기 제1 데이터의 논리 주소에 관한 제1 정보, 상기 제1 데이터의 길이에 대한 제2 정보 및 축출(eviction)하는 제1 상황을 나타내는 제3 정보를 포함하는 제1 커맨드를 상기 호스트 인터페이스를 통해 수신한 경우, 관리 맵을 확인하여 상기 제1 데이터에 변경이 가해졌는지 여부를 인식하는, 비휘발성 듀얼 인라인 메모리 모듈. - 제 5 항에 있어서,
상기 컨트롤러는,
상기 제1 데이터에 변경이 가해졌다고 인식한 경우, 상기 제2 메모리 내에서 상기 제2 저장 공간 또는 상기 제2 저장 공간과 다른 제3 저장 공간에 상기 제1 데이터를 플러쉬하여 저장하고,
상기 제2 데이터의 저장 공간이 변경된 경우 제2 데이터의 저장 공간 정보를 갱신하고,
상기 제1 저장 공간을 가용 공간으로 변경하는, 비휘발성 듀얼 인라인 메모리 모듈. - 제 5 항에 있어서,
상기 컨트롤러는,
상기 제1 데이터에 변경이 가해지지 않았다고 인식한 경우, 상기 제2 메모리에 상기 제1 데이터를 플러쉬하거나 저장하지 않고,
상기 제1 저장 공간을 가용 공간으로 변경하는, 비휘발성 듀얼 인라인 메모리 모듈. - 제1 처리 속도 및 제1 저장 용량을 갖는 제1 메모리;
상기 제1 처리 속도보다 느린 제2 처리 속도 및 상기 제1 저장 용량보다 큰 제2 저장 용량을 갖고, 제1 저장 공간에 제1 데이터가 저장된 제2 메모리;
상기 제1 메모리 및 상기 제2 메모리 사이에 데이터를 플러쉬(flush) 또는 패치(fetch)시키는 컨트롤러; 및
호스트 인터페이스를 포함하고,
상기 컨트롤러는,
상기 제1 데이터의 논리 주소에 관한 제1 정보, 상기 제1 데이터의 길이에 대한 제2 정보 및 프리 패치(prefetch)하는 제1 상황을 나타내는 제3 정보를 포함하는 제1 커맨드를 상기 호스트 인터페이스를 통해 수신한 경우, 상기 제1 데이터를 상기 제1 메모리에 포함된 제2 저장 공간에 패치하여 저장하는, 비휘발성 듀얼 인라인 메모리 모듈. - 제 8 항에 있어서,
상기 컨트롤러는,
상기 제1 데이터를 리드하는 제2 커맨드를 상기 호스트 인터페이스를 통해 수신한 경우, 상기 제2 저장 공간에 저장된 상기 제1 데이터를 상기 호스트 인터페이스를 통해 전송하는, 비휘발성 듀얼 인라인 메모리 모듈. - 제 8 항에 있어서,
상기 컨트롤러는,
상기 제1 데이터를 수정하는 제3 커맨드를 상기 호스트 인터페이스를 통해 수신한 경우, 상기 제1 메모리에 저장된 상기 제1 데이터를 수정하는, 비휘발성 듀얼 인라인 메모리 모듈.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170144577A KR102353859B1 (ko) | 2017-11-01 | 2017-11-01 | 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈 |
US15/933,451 US10621098B2 (en) | 2017-11-01 | 2018-03-23 | Computing device and non-volatile dual in-line memory module that evict and prefetch data with respect to memories having different operating speeds |
CN201811204256.9A CN109753237B (zh) | 2017-11-01 | 2018-10-16 | 计算设备和非易失性双列直插式存储器模块 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170144577A KR102353859B1 (ko) | 2017-11-01 | 2017-11-01 | 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190049098A KR20190049098A (ko) | 2019-05-09 |
KR102353859B1 true KR102353859B1 (ko) | 2022-01-19 |
Family
ID=66244028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170144577A KR102353859B1 (ko) | 2017-11-01 | 2017-11-01 | 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10621098B2 (ko) |
KR (1) | KR102353859B1 (ko) |
CN (1) | CN109753237B (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11016669B2 (en) * | 2018-05-01 | 2021-05-25 | Qualcomm Incorporated | Persistent write data for energy-backed memory |
US11354208B2 (en) * | 2019-09-11 | 2022-06-07 | International Business Machines Corporation | Adjustment of safe data commit scan based on operational verification of non-volatile memory |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170199814A1 (en) | 2016-01-11 | 2017-07-13 | Qualcomm Incorporated | Non-volatile random access system memory with dram program caching |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6311260B1 (en) | 1999-02-25 | 2001-10-30 | Nec Research Institute, Inc. | Method for perfetching structured data |
GB2373595B (en) * | 2001-03-15 | 2005-09-07 | Italtel Spa | A system of distributed microprocessor interfaces toward macro-cell based designs implemented as ASIC or FPGA bread boarding and relative common bus protocol |
US20030105926A1 (en) * | 2001-12-03 | 2003-06-05 | International Business Machies Corporation | Variable size prefetch cache |
US7882307B1 (en) * | 2006-04-14 | 2011-02-01 | Tilera Corporation | Managing cache memory in a parallel processing environment |
US7506119B2 (en) * | 2006-05-04 | 2009-03-17 | International Business Machines Corporation | Complier assisted victim cache bypassing |
US8032711B2 (en) | 2006-12-22 | 2011-10-04 | Intel Corporation | Prefetching from dynamic random access memory to a static random access memory |
US8874831B2 (en) * | 2007-06-01 | 2014-10-28 | Netlist, Inc. | Flash-DRAM hybrid memory module |
US8468151B2 (en) | 2010-06-29 | 2013-06-18 | Teradata Us, Inc. | Methods and systems for hardware acceleration of database operations and queries based on multiple hardware accelerators |
US8775775B1 (en) | 2011-03-31 | 2014-07-08 | Emc Corporation | Dynamic prefetch throttling for multi-controller systems |
US9196334B2 (en) | 2012-04-19 | 2015-11-24 | Qualcomm Incorporated | Hierarchical memory magnetoresistive random-access memory (MRAM) architecture |
US9390018B2 (en) | 2012-08-17 | 2016-07-12 | Advanced Micro Devices, Inc. | Data cache prefetch hints |
KR20150132101A (ko) * | 2013-03-15 | 2015-11-25 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | 확장 기입을 지원하는 메모리 모듈 제어기 |
US9195542B2 (en) * | 2013-04-29 | 2015-11-24 | Amazon Technologies, Inc. | Selectively persisting application program data from system memory to non-volatile data storage |
KR101667725B1 (ko) * | 2013-11-21 | 2016-10-20 | 엘지전자 주식회사 | 무선 전력 전송 장치 및 그 제어 방법 |
KR102135702B1 (ko) * | 2013-11-14 | 2020-07-20 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 데이터 저장 장치 및 그것의 동작 방법 |
US20150356125A1 (en) | 2014-06-06 | 2015-12-10 | Plexistor Ltd. | Method for data placement based on a file level operation |
NO2988221T3 (ko) * | 2014-06-27 | 2018-01-06 | ||
US9418013B2 (en) | 2014-06-30 | 2016-08-16 | Intel Corporation | Selective prefetching for a sectored cache |
US9645829B2 (en) * | 2014-06-30 | 2017-05-09 | Intel Corporation | Techniques to communicate with a controller for a non-volatile dual in-line memory module |
KR101699377B1 (ko) * | 2014-07-02 | 2017-01-26 | 삼성전자주식회사 | 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법 |
US9639481B2 (en) | 2014-08-08 | 2017-05-02 | PernixData, Inc. | Systems and methods to manage cache data storage in working memory of computing system |
KR102254101B1 (ko) | 2014-10-20 | 2021-05-20 | 삼성전자주식회사 | 데이터 처리 시스템 및 이의 동작 방법 |
US9606926B2 (en) | 2014-11-29 | 2017-03-28 | Freescale Semiconductor, Inc. | System for pre-fetching data frames using hints from work queue scheduler |
WO2016175855A1 (en) * | 2015-04-30 | 2016-11-03 | Hewlett Packard Enterprise Development Lp | Replicating data using dual-port non-volatile dual in-line memory modules |
US9971693B2 (en) * | 2015-05-13 | 2018-05-15 | Ampere Computing Llc | Prefetch tag for eviction promotion |
JP6458682B2 (ja) | 2015-08-24 | 2019-01-30 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
JP6479608B2 (ja) * | 2015-08-28 | 2019-03-06 | 東芝メモリ株式会社 | メモリ装置およびメモリ制御方法 |
US10031674B2 (en) * | 2015-10-07 | 2018-07-24 | Samsung Electronics Co., Ltd. | DIMM SSD addressing performance techniques |
US9934154B2 (en) | 2015-12-03 | 2018-04-03 | Samsung Electronics Co., Ltd. | Electronic system with memory management mechanism and method of operation thereof |
US11636122B2 (en) * | 2015-12-30 | 2023-04-25 | Futurewei Technologies, Inc. | Method and apparatus for data mining from core traces |
CN107039059B (zh) * | 2016-02-01 | 2022-05-10 | 三星电子株式会社 | 存储器封装,包括其的存储器模块及存储器封装操作方法 |
KR102646619B1 (ko) * | 2016-02-05 | 2024-03-11 | 삼성전자주식회사 | 컴포지트 메모리 장치를 포함하는 전자 장치에 파일 시스템을 제공하는 시스템 및 방법 |
KR102535738B1 (ko) * | 2016-03-28 | 2023-05-25 | 에스케이하이닉스 주식회사 | 비휘발성 듀얼 인 라인 메모리 시스템, 메모리 모듈, 및 메모리 모듈의 동작 방법 |
US10866897B2 (en) * | 2016-09-26 | 2020-12-15 | Samsung Electronics Co., Ltd. | Byte-addressable flash-based memory module with prefetch mode that is adjusted based on feedback from prefetch accuracy that is calculated by comparing first decoded address and second decoded address, where the first decoded address is sent to memory controller, and the second decoded address is sent to prefetch buffer |
US10268600B2 (en) * | 2017-09-12 | 2019-04-23 | Intel Corporation | System, apparatus and method for prefetch-aware replacement in a cache memory hierarchy of a processor |
US20190138236A1 (en) * | 2017-11-09 | 2019-05-09 | Dell Products, Lp | System and Method to Reserve Persistent Memory Space in an NVDIMM for NVDIMM Namespace Support |
-
2017
- 2017-11-01 KR KR1020170144577A patent/KR102353859B1/ko active IP Right Grant
-
2018
- 2018-03-23 US US15/933,451 patent/US10621098B2/en active Active
- 2018-10-16 CN CN201811204256.9A patent/CN109753237B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170199814A1 (en) | 2016-01-11 | 2017-07-13 | Qualcomm Incorporated | Non-volatile random access system memory with dram program caching |
Also Published As
Publication number | Publication date |
---|---|
KR20190049098A (ko) | 2019-05-09 |
CN109753237A (zh) | 2019-05-14 |
CN109753237B (zh) | 2024-04-05 |
US20190129854A1 (en) | 2019-05-02 |
US10621098B2 (en) | 2020-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9075725B2 (en) | Persistent memory for processor main memory | |
US20200081848A1 (en) | Storage device and system | |
US10943183B2 (en) | Electronics device performing software training on memory channel and memory channel training method thereof | |
CN107408079B (zh) | 带有一致单元的多级别***存储器的存储器控制器 | |
US11379381B2 (en) | Main memory device having heterogeneous memories, computer system including the same, and data management method thereof | |
US10621097B2 (en) | Application and processor guided memory prefetching | |
US10866921B2 (en) | Apparatuses and methods for an operating system cache in a solid state device | |
EP3757800A1 (en) | Memory system, computing system, and methods thereof | |
US20170091099A1 (en) | Memory controller for multi-level system memory having sectored cache | |
WO2017155638A1 (en) | Technologies for increasing associativity of a direct-mapped cache using compression | |
EP3183659B1 (en) | Power aware padding | |
US20190042415A1 (en) | Storage model for a computer system having persistent system memory | |
KR20210025344A (ko) | 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템, 그것의 데이터 관리 방법 | |
US9971549B2 (en) | Method of operating a memory device | |
KR102353859B1 (ko) | 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈 | |
US10509744B2 (en) | Semiconductor system including heterogeneous memory module | |
US20170153994A1 (en) | Mass storage region with ram-disk access and dma access | |
US20220229552A1 (en) | Computer system including main memory device having heterogeneous memories, and data management method thereof | |
US12019545B2 (en) | Memory system and operating method thereof | |
KR101416248B1 (ko) | 데이터 처리장치 및 그 데이터 처리방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |