KR102517685B1 - 메모리 블록 복구 방법 및 디바이스 - Google Patents

메모리 블록 복구 방법 및 디바이스 Download PDF

Info

Publication number
KR102517685B1
KR102517685B1 KR1020207015217A KR20207015217A KR102517685B1 KR 102517685 B1 KR102517685 B1 KR 102517685B1 KR 1020207015217 A KR1020207015217 A KR 1020207015217A KR 20207015217 A KR20207015217 A KR 20207015217A KR 102517685 B1 KR102517685 B1 KR 102517685B1
Authority
KR
South Korea
Prior art keywords
memory
controller
information
logical address
recycled
Prior art date
Application number
KR1020207015217A
Other languages
English (en)
Other versions
KR20200078592A (ko
Inventor
플로리안 롱노스
웨이 양
Original Assignee
후아웨이 테크놀러지 컴퍼니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 후아웨이 테크놀러지 컴퍼니 리미티드 filed Critical 후아웨이 테크놀러지 컴퍼니 리미티드
Publication of KR20200078592A publication Critical patent/KR20200078592A/ko
Application granted granted Critical
Publication of KR102517685B1 publication Critical patent/KR102517685B1/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/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency 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/72Details relating to flash memory management
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • 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/7211Wear leveling

Abstract

메모리 블록 재활용 방법 및 장치가 제공된다. 이러한 방법은, 매체 제어기에 의해, 메모리 제어기에 의해 전송되는 언맵 커맨드를 수신하는 단계- 언맵 커맨드는 재활용될 메모리 블록의 메모리 논리 어드레스 정보를 포함함 -(S201); 및, 매체 제어기에 의해, 메모리 논리 어드레스 정보에 기초하여 메모리 블록을 재활용하는 단계- 재활용된 메모리 블록은 이용가능 메모리 블록임 -(S202)를 포함한다. 메모리 제어기에 의해 전송되는 언맵 커맨드를 수신한 후에, 매체 제어기는, 언맵 커맨드에 포함되는 재활용될 메모리 블록의 메모리 논리 어드레스 정보에 기초하여, 대응하는 메모리 블록을 해제하고, 메모리 블록을 재활용하고, 그렇게 함으로써 매체 제어기의 매체 관리 동작 효과를 강화하고, NVDIMM의 저장 성능을 개선하고, NVDIMM의 서비스 수명을 연장한다.

Description

메모리 블록 복구 방법 및 디바이스
본 출원은 컴퓨터 기술의 분야에, 특히, 메모리 블록 재활용 방법 및 장치에 관련된다.
비-휘발성 듀얼 인-라인 메모리 모듈(non-volatile dual in-line memory module, NVDIMM)은 컴퓨터의 랜덤 액세스 메모리(random access memory, RAM)이다. NVDIMM은 복수의 비-휘발성 메모리(non-volatile memory, NVM) 칩들을 포함할 수 있다. NVDIMM은 심지어 시스템이 완전히 파워 오프될 때에도 완전한 메모리 데이터를 여전히 저장할 수 있다. NVDIMM 상의 NVM 칩은 구체적으로 비-휘발성 랜덤 액세스 메모리(non-volatile random access memory, NVRAM)일 수 있다는 점이 이해될 수 있다. NVDIMM 상의 NVM은 상 변화 메모리(phase change memory, PCM), 저항성 랜덤 액세스 메모리(resistive random access memory, RRAM), 자기 랜덤 액세스 메모리(magnetic random access memory, MRAM), 스핀-전달 토크 자기 랜덤 액세스 메모리(spin-transfer torque MRAM, STT MRAM) 등을 포함할 수 있다. NVDIMM은 NVDIMM-P 프로토콜을 사용하여 메모리 제어기와 통신한다. NVDIMM-P 프로토콜은 더블 데이터 레이트(double data rate, DDR) 프로토콜과 호환가능한 버스 액세스 프로토콜이다.
그러나, 동적 랜덤 액세스 메모리(Dynamic Random Access Memory, DRAM)와 비교하여, NVM은 열악한 피로 저항 및 제한된 수량의 기입 횟수를 갖는다. 따라서, NVM 칩에서의 일부 메모리 블록들이 최대 기입 횟수에 도달할 때, NVM 칩은 이용불가능하고, 전체 NVDIMM의 서비스 수명이 영향을 받는다. NVM 칩에서의 상이한 메모리 블록들의 불균형 기입 횟수를 회피하고, 웨어 레벨링 효과를 강화하고, NVDIMM의 서비스 수명을 연장하기 위해, NVDIMM 상에서 메모리 관리가 수행될 필요가 있다.
본 출원의 실시예들은 메모리 블록 재활용 방법 및 장치를 제공하여, 메모리 블록 재활용 속도를 개선하고 웨어 레벨링 효과를 강화한다.
제1 양태에 따르면, 본 출원의 실시예는 메모리 블록 재활용 방법을 제공하고, 이러한 방법은 컴퓨터 시스템에 적용되고, 컴퓨터 시스템은 메모리 제어기, 매체 제어기, 및 매체 제어기에 접속되는 비-휘발성 메모리를 포함하고, 메모리 제어기는 NVDIMM-P 프로토콜을 사용하여 매체 제어기와 통신하고, 비-휘발성 메모리는 복수의 메모리 블록들을 포함하고, 이러한 방법은,
매체 제어기에 의해, 메모리 제어기에 의해 전송되는 언맵 커맨드를 수신하는 단계- 언맵 커맨드는 재활용될 메모리 블록의 메모리 논리 어드레스 정보를 포함함 -; 및, 매체 제어기에 의해, 메모리 논리 어드레스 정보에 기초하여 메모리 블록을 재활용하는 단계- 재활용된 메모리 블록은 이용가능 메모리 블록임 -를 포함한다.
메모리 제어기에 의해 전송되는 언맵 커맨드를 수신한 후에, 매체 제어기는, 언맵 커맨드에 포함되는 재활용될 메모리 블록의 메모리 논리 어드레스 정보에 기초하여, 대응하는 메모리 블록을 해제하고, 메모리 블록을 재활용하고, 그렇게 함으로써 매체 제어기의 매체 관리 동작 효과를 강화하고, NVDIMM의 저장 성능을 개선하고, NVDIMM의 서비스 수명을 연장한다.
가능한 구현에서, 매체 제어기에 의해, 메모리 논리 어드레스 정보에 기초하여 메모리 블록을 재활용하는 단계는,
매체 제어기에 의해, 메모리 논리 어드레스 정보에 기초하여 메모리 블록의 메모리 논리 어드레스와 대응하는 메모리 물리 어드레스 사이의 매핑 관계를 삭제하는 단계; 및, 매체 제어기에 의해, 메모리 블록의 메모리 물리 어드레스를 메모리 유휴 리스트에 추가하는 단계를 포함한다.
매체 제어기는 메모리 블록의 메모리 논리 어드레스와 대응하는 메모리 물리 어드레스 사이의 매핑 관계를 제 시간에 삭제할 수 있기 때문에, 이용가능 메모리 블록들의 수량이 증가될 수 있고, 메모리 블록들 사이의 웨어 레벨링의 효과가 강화될 수 있고, NVDIMM의 성능이 개선될 수 있고, NVDIMM의 서비스 수명이 연장될 수 있다. 이러한 방식으로, NVDIMM이 메모리로서 사용될 때 메모리 모듈이 관리된다.
가능한 구현에서, 메모리 논리 어드레스 정보는 재활용될 메모리 블록의 시작 어드레스 및 길이 정보를 포함하고, 시작 어드레스는 재활용될 메모리 블록의 제1 어드레스를 표시하기 위해 사용되고, 길이 정보는 재활용될 메모리 블록의 수량을 표시하기 위해 사용된다.
가능한 구현에서, 언맵 커맨드는 소거 모드 표시 정보를 추가로 포함하고; 이러한 방법은,
소거 모드 표시 정보가 메모리 블록에서의 데이터 정보를 소거하라고 명령할 때, 매체 제어기에 의해, 미리 정의된 패턴을 메모리 블록에 기입하는 단계를 추가로 포함한다.
이러한 구현에서, 언맵 커맨드는 소거 모드 표시 정보를 추가로 포함한다. 이러한 경우에, 메모리 블록에서의 데이터가 민감한 데이터일 때 매체 제어기는 미리 정의된 패턴으로 민감한 데이터를 덮어쓰기하라고 명령을 받을 수 있고, 그렇게 함으로써 민감한 데이터를 보호하고 NVDIMM의 보안성을 개선한다.
가능한 구현에서, 이러한 방법은,
매체 제어기에 의해, 메모리 제어기에 의해 전송되는 판독 커맨드를 수신하는 단계- 판독 커맨드는 판독될 데이터의 메모리 논리 어드레스 정보를 포함함 -;
매체 제어기에 의해, 메모리 논리 어드레스 정보에 기초하여 대응하는 메모리 물리 어드레스가 발견되지 않는다고 결정하는 단계; 및
매체 제어기에 의해, 에러 응답 정보를 메모리 제어기에 전송하는 단계- 에러 응답 정보는 판독 커맨드가 실행되는 것에 실패한다는 점을 표시하기 위해 사용됨 -를 추가로 포함한다.
제2 양태에 따르면, 본 출원의 실시예는 메모리 블록 재활용 방법을 추가로 제공한다. 이러한 방법은 컴퓨터 시스템에 적용되고, 컴퓨터 시스템은 프로세서, 메모리 제어기, 매체 제어기, 및 매체 제어기에 접속되는 비-휘발성 메모리를 포함하고, 메모리 제어기는 NVDIMM-P 프로토콜을 사용하여 매체 제어기와 통신하고, 비-휘발성 메모리는 복수의 메모리 블록들을 포함하고, 이러한 방법은,
메모리 제어기에 의해, 프로세서에 의해 전송되는 트림(TRIM) 명령어를 수신하는 단계- 트림 명령어는 재활용될 메모리 블록의 메모리 논리 어드레스 정보를 포함함 -; 및
메모리 제어기에 의해, 언맵 커맨드를 매체 제어기에 전송하는 단계를 포함한다.
언맵 커맨드는 재활용될 메모리 블록의 메모리 논리 어드레스 정보를 포함하고, 언맵 커맨드는 매체 제어기에게 메모리 블록을 재활용하라고 명령하기 위해 사용되고, 재활용된 메모리 블록은 이용가능 메모리 블록이다.
가능한 구현에서, 메모리 논리 어드레스 정보는 재활용될 메모리 블록의 시작 어드레스 및 길이 정보를 포함하고, 시작 어드레스는 재활용될 메모리 블록의 제1 어드레스를 표시하기 위해 사용되고, 길이 정보는 재활용될 메모리 블록의 수량을 표시하기 위해 사용된다.
가능한 구현에서, 언맵 커맨드는 소거 모드 표시 정보를 추가로 포함하고; 소거 모드 표시 정보가 메모리 블록에서의 데이터 정보를 소거하라고 명령할 때, 언맵 커맨드는 매체 제어기에게 미리 정의된 패턴을 메모리 블록에 기입하라고 명령하기 위해 추가로 사용된다.
가능한 구현에서, 이러한 방법은,
메모리 제어기에 의해, 판독 커맨드를 매체 제어기에 전송하는 단계- 판독 커맨드는 판독될 데이터의 메모리 논리 어드레스 정보를 포함함 -; 및
메모리 제어기에 의해, 매체 제어기에 의해 전송되는 에러 응답 정보를 수신하는 단계- 에러 응답 정보는 판독 커맨드가 실행되는 것에 실패한다는 점을 표시하기 위해 사용됨 -를 추가로 포함한다.
제3 양태에 따르면, 본 출원의 실시예는 메모리를 추가로 제공하고, 이는 제1 양태에서의 메모리 블록 재활용 방법을 수행하도록 구성된다. 이러한 메모리는 제1 양태에서의 것과 동일한 기술적 특징 및 기술적 효과를 갖는다. 상세사항들은 본 출원에서 다시 설명되지 않는다.
본 출원의 실시예들의 제3 양태는 메모리를 제공하고, 이는 매체 제어기 및 매체 제어기에 접속되는 비-휘발성 메모리를 포함하고, 매체 제어기는 NVDIMM-P 프로토콜을 사용하여 프로세서의 메모리 제어기와 통신하고, 비-휘발성 메모리는 복수의 메모리 블록들을 포함하고, 매체 제어기는,
메모리 제어기에 의해 전송되는 언맵 커맨드를 수신하도록- 언맵 커맨드는 재활용될 메모리 블록의 메모리 논리 어드레스 정보를 포함함 -; 그리고
메모리 논리 어드레스 정보에 기초하여 메모리 블록을 재활용하도록- 재활용된 메모리 블록은 이용가능 메모리 블록임 - 구성된다.
선택적 구현에서, 메모리 제어기는,
매체 제어기에 의해, 메모리 논리 어드레스 정보에 기초하여 메모리 블록의 메모리 논리 어드레스와 대응하는 메모리 물리 어드레스 사이의 매핑 관계를 삭제하도록; 그리고
메모리 블록의 메모리 물리 어드레스를 메모리 유휴 리스트에 추가하도록 추가로 구성된다.
가능한 구현에서, 메모리 논리 어드레스 정보는 재활용될 메모리 블록의 시작 어드레스 및 길이 정보를 포함하고, 시작 어드레스는 재활용될 메모리 블록의 제1 어드레스를 표시하기 위해 사용되고, 길이 정보는 재활용될 메모리 블록의 수량을 표시하기 위해 사용된다.
가능한 구현에서, 언맵 커맨드는 소거 모드 표시 정보를 추가로 포함하고, 매체 제어기는,
소거 모드 표시 정보가 메모리 블록에서의 데이터 정보를 소거하라고 명령할 때, 미리 정의된 패턴을 메모리 블록에 기입하도록 추가로 구성된다.
선택적 구현에서, 매체 제어기는,
메모리 제어기에 의해 전송되는 판독 커맨드를 수신하도록- 판독 커맨드는 판독될 데이터의 메모리 논리 어드레스 정보를 포함함 -;
메모리 논리 어드레스 정보에 기초하여 대응하는 메모리 물리 어드레스가 발견되지 않는다고 결정하도록; 그리고
에러 응답 정보를 메모리 제어기에 전송하도록- 에러 응답 정보는 판독 커맨드가 실행되는 것에 실패한다는 점을 표시하기 위해 사용됨 - 추가로 구성된다.
제4 양태에 따르면, 본 출원의 실시예는 컴퓨터 시스템을 추가로 제공한다. 컴퓨터 시스템은 프로세서, 메모리 제어기, 매체 제어기, 및 매체 제어기에 접속되는 비-휘발성 메모리를 포함하고, 메모리 제어기는 NVDIMM-P 프로토콜을 사용하여 매체 제어기와 통신하고, 비-휘발성 메모리는 복수의 메모리 블록들을 포함하고, 메모리 제어기는,
프로세서에 의해 전송되는 트림 명령어를 수신하도록- 트림 명령어는 재활용될 메모리 블록의 메모리 논리 어드레스 정보를 포함함 -; 그리고
언맵 커맨드를 매체 제어기에 전송하도록- 언맵 커맨드는 재활용될 메모리 블록의 메모리 논리 어드레스 정보를 포함하고, 언맵 커맨드는 매체 제어기에게 메모리 블록을 재활용하라고 명령하기 위해 사용됨 - 구성된다.
매체 제어기는,
메모리 제어기에 의해 전송되는 언맵 커맨드를 수신하도록; 그리고
메모리 논리 어드레스 정보에 기초하여 메모리 블록을 재활용하도록- 재활용된 메모리 블록은 이용가능 메모리 블록임 - 구성된다.
가능한 구현에서, 메모리 논리 어드레스 정보는 재활용될 메모리 블록의 시작 어드레스 및 길이 정보를 포함하고, 시작 어드레스는 재활용될 메모리 블록의 제1 어드레스를 표시하기 위해 사용되고, 길이 정보는 재활용될 메모리 블록의 수량을 표시하기 위해 사용된다.
가능한 구현에서, 언맵 커맨드는 소거 모드 표시 정보를 추가로 포함하고; 매체 제어기는,
소거 모드 표시 정보가 메모리 블록에서의 데이터 정보를 소거하라고 명령할 때, 미리 정의된 패턴을 메모리 블록에 기입하도록 추가로 구성된다.
가능한 구현에서, 메모리 제어기는,
프로세서에 의해 전송되는 메모리 액세스 요청을 수신하도록- 메모리 액세스 요청은 판독될 데이터의 메모리 논리 어드레스 정보를 포함함 - 추가로 구성된다.
메모리 제어기는 메모리 액세스 요청에 기초하여 판독 커맨드를 매체 제어기에 전송하도록- 판독 커맨드는 메모리 논리 어드레스 정보를 운반함 - 추가로 구성된다.
매체 제어기는,
메모리 논리 어드레스 정보에 기초하여 대응하는 메모리 물리 어드레스가 발견되지 않는다고 결정하도록; 그리고
에러 응답 정보를 메모리 제어기에 전송하도록- 에러 응답 정보는 판독 커맨드가 실행되는 것에 실패한다는 점을 표시하기 위해 사용됨 - 추가로 구성된다.
메모리 제어기는 에러 응답 정보에 기초하여 판독 실패 정보를 프로세서에 전송하도록 추가로 구성된다.
본 출원의 실시예들에서의 기술적 해결책들을 더 명확하게 설명하기 위해, 다음은 실시예들을 설명하기 위해 요구되는 첨부 도면들을 간단히 설명한다. 다음의 설명에서의 첨부 도면들은 단지 본 출원의 일부 실시예들을 도시한다는 점이 명확하다.
도 1은 본 출원의 실시예에 따른 컴퓨터 시스템의 개략적인 아키텍처 도면이다.
도 2는 본 출원의 실시예 1에 따른 메모리 블록 재활용 방법의 개략적인 흐름도이다.
도 3은 본 출원의 실시예 2에 따른 메모리 블록 재활용 방법의 시그널링 흐름도이다.
도 4는 본 출원의 실시예에 따른 데이터 판독 방법의 흐름도이다.
해당 분야에서의 기술자가 본 출원에서의 기술적 해결책들을 더 잘 이해하게 하기 위해, 다음은 본 출원의 실시예들에서의 첨부 도면들을 참조하여 본 출원의 실시예들에서의 기술적 해결책들을 명확하게 설명한다. 설명되는 실시예들은 본 출원의 실시예들의 전부가 아니라 단지 일부라는 점이 명확하다.
도 1은 본 출원의 실시예에 따른 컴퓨터 시스템의 개략적인 아키텍처 도면이다. 도 1에 도시되는 바와 같이, 컴퓨터 시스템(100)은 적어도 프로세서(102), 메모리 제어기(106), 및 NVDIMM(108)을 포함할 수 있다. 일반적으로, 메모리 제어기(106)는 프로세서(102)에 집적될 수 있다. 도 1에 도시되는 컴포넌트들 외에도, 컴퓨터 시스템(100)은 통신 인터페이스 및 외부 저장 디바이스로서 사용되는 디스크와 같은 다른 컴포넌트를 추가로 포함할 수 있다는 점이 주목되어야 한다. 이러한 것은 본 명세서에서 제한되지 않는다.
프로세서(processor)(102)는 컴퓨터 시스템(100)의 컴퓨팅 코어 및 제어 코어(control core)이다. 프로세서(102)는 하나 이상의 프로세서 코어(core)(104)를 포함할 수 있다. 프로세서(102)는 매우 큰 규모의 집적 회로일 수 있다. 프로세서(102) 상에는 운영 체제 및 다른 소프트웨어 프로그램이 설치되어, 프로세서(102)는 NVDIMM(108), 캐시, 및 디스크에 액세스할 수 있다. 본 출원의 이러한 실시예에서, 프로세서(102)에서의 코어(104)는, 예를 들어, 중앙 처리 유닛(central processing unit, CPU)일 수 있거나, 또는 다른 주문형 집적 회로(application-specific integrated circuit, ASIC)일 수 있다는 점이 이해될 수 있다.
메모리 제어기(memory controller)(106)는 컴퓨터 시스템(100) 내부의 NVDIMM(108)을 제어하는 그리고 NVDIMM(108)으로부터 코어(104)로의 데이터 송신을 관리하도록 그리고 계획하도록 구성되는 버스 회로 제어기이다. 메모리 제어기(106)를 사용하여 NVDIMM(108)과 코어(104) 사이에 데이터가 교환될 수 있다. 메모리 제어기(106)는 별도의 칩일 수 있고, 시스템 버스를 사용하여 코어(104)에 접속된다. 해당 분야에서의 기술자는 메모리 제어기(106)가 (도 1에 도시되는 바와 같이) 대안적으로 프로세서(102)에 집적될 수 있거나, 또는 노스브리지에 내장될 수 있다는 점을 학습할 수 있다. 메모리 제어기(106)의 구체적 위치는 본 출원의 이러한 실시예에서 제한되지 않는다. 실제 적용에서, 메모리 제어기(106)는 통신 인터페이스(1062) 및 제어 회로(1064)를 포함할 수 있고, 메모리 제어기(106)는 통신 인터페이스(1062)를 통해 프로세서(102) 및 NVDIMM(108)과 통신할 수 있다. 메모리 제어기(106)는, 제어 회로(1064)를 사용하여, NVDIMM(108)에 데이터를 기입하기 위해 또는 NVDIMM(108)으로부터 데이터를 판독하기 위해 필요한 로직을 제어할 수 있다.
NVDIMM(108)은 컴퓨터 시스템(100)의 RAM(random access memory)이고, 컴퓨터 시스템(100)의 메모리 또는 저장 디바이스로서 사용될 수 있다. NVDIMM(108)은 매체 제어기(110), 적어도 하나의 NVM(112), 및 하나 이상의 캐시(114)를 포함할 수 있다. 매체 제어기(110)는 제어 능력을 갖는 로직 회로를 포함할 수 있다. NVM(112)은 운영 체제에서 현재 실행중인 다양한 소프트웨어, 입력 및 출력 데이터, 외부 저장 디바이스와 교환되는 정보 등을 저장하도록 구성된다. NVM(112)은 칩 형태로 존재할 수 있다. 예를 들어, NVM(112)은 상 변화 메모리(phase change memory, PCM), 저항성 랜덤 액세스 메모리(resistive random access memory, RRAM), 자기 랜덤 액세스 메모리(magnetic random access memory, MRAM), 또는 스핀-전달 토크 자기 랜덤 액세스 메모리(spin-transfer torque MRAM, STT MRAM)와 같은, 메모리로서 사용될 수 있는 비-휘발성 메모리를 포함할 수 있다.
메모리 제어기(106)는 버스(105)를 사용하여 NVDIMM(108)에 접속된다. 메모리 제어기(106)는 NVDIMM-P 프로토콜을 준수하여 NVDIMM(108)과 통신한다. NVDIMM-P 프로토콜은 더블 데이터 레이트(double data rate, DDR) 프로토콜과 호환가능한 비동기 프로토콜이다. 매체 제어기(110)는, 메모리 제어기(106)의 메모리 액세스 커맨드에 기초하여, NVM(112)에 저장된 데이터에 액세스할 수 있다. 메모리 제어기(106)에 의해 전송되는 메모리 액세스 커맨드는 판독 커맨드 또는 기입 커맨드일 수 있다는 점이 이해될 수 있다. 매체 제어기(110)는, 메모리 제어기(106)에 의해 전송되는 판독 커맨드에 기초하여, NVM(112)으로부터 데이터를 판독하고 판독 버퍼에 데이터를 저장하고, 메모리 제어기(106)에 비동기 신호를 전송하여 메모리 제어기(106)에게 판독 버퍼로부터 데이터를 판독하라고 명령할 수 있거나; 또는 매체 제어기(110)는, 메모리 제어기(106)에 의해 전송되는 기입 커맨드에 기초하여, 데이터를 기입 버퍼에 먼저 저장하고, 기입 버퍼에서의 데이터를 NVM(112) 또는 캐시(114)에 기입할 수 있다.
본 출원의 이러한 실시예에서, 버스(105)는 적어도 데이터 버스 및 커맨드/어드레스 버스를 포함할 수 있다. 데이터 버스는 데이터 및 메타데이터를 송신하도록 구성된다. 커맨드/어드레스 버스는 판독 커맨드 또는 기입 커맨드와 같은 메모리 액세스 커맨드를 송신하도록 구성된다. 캐시(114)는 NVM(112)으로부터 매체 제어기(110)에 의해 판독되는 데이터를 캐시하도록 구성된다.
NVDIMM의 서비스 수명을 연장하고 NVDIMM의 성능을 개선하기 위해, 매체 제어기는 상이한 매체 관리 동작들, 예를 들어, 웨어 레벨링(Wear Leveling), 불량 블록 관리, 및 캐시와 NVM 사이의 데이터 마이그레이션을 수행할 필요가 있다. 웨어 레벨링은, NVDIMM의 서비스 수명을 연장하기 위해, 메모리 블록들의 소거/기입 횟수의 수량들이 동일하다는 점을 보장하도록, 데이터가 가능한 한 NVDIMM의 각각의 메모리 블록에 균등하게 분포되는 것을 의미한다. 새로운 메모리 블록을 데이터에 할당할 때, 매체 제어기는 메모리 유휴 리스트로부터 웨어 횟수의 수량이 더 작은 메모리 블록을 우선적으로 선택한다. 불량 블록 관리는, 메모리 블록이 불량 블록인 것으로 결정한 후에, 현재 불량 블록에서의 데이터에 대해 메모리 유휴 리스트로부터 새로운 메모리 블록이 선택되는 것을 의미한다. 캐시와 NVM 사이의 데이터 마이그레이션은 자주 액세스된 데이터를 캐시에 저장하고, 드물게 액세스된 데이터를 NVM에 마이그레이션하여, 판독/기입 요청의 처리 속도를 개선하는 것이다. 그러나, 캐시에서의 데이터가 NVM에 기입될 때, 새로운 메모리 블록은 캐시에서의 데이터에 대해 메모리 유휴 리스트로부터 선택될 필요가 있다. 메모리 유휴 리스트의 적시의 업데이트는 매체 제어기의 매체 관리 동작의 관리 효과를 결정하고, NVDIMM의 서비스 수명 및 성능에 추가로 영향을 미친다는 점이 전술한 분석으로부터 학습될 수 있다.
전술한 매체 관리 동작의 효율을 개선하기 위해, 본 출원의 실시예는 메모리 블록 재활용 방법 및 장치를 제공한다.
다음은, 구체적 실시예들을 참조하여, 본 출원의 실시예들에서 제공되는 메모리 블록 재활용 방법 및 장치를 상세히 설명한다. 다음의 구체적 실시예들에서, 동일한 또는 유사한 개념들 또는 프로세스들은 일부 실시예들에서 상세히 설명되지 않을 수 있다.
본 출원의 실시예의 하나의 양태는 메모리 블록 재활용 방법을 제공한다. 도 2는 본 출원의 실시예 1에 따른 메모리 블록 재활용 방법의 개략적인 흐름도이다. 이러한 실시예에서, 매체 제어기는 메모리 제어기에 의해 전송되는 언맵 커맨드를 수신하고, 언맵 커맨드에 기초하여 메모리 블록을 재활용하고, 메모리 블록을 이용가능 메모리 블록으로 변환하고, 그렇게 함으로써 매체 제어기의 매체 관리 동작의 관리 효과를 강화하고, NVDIMM의 저장 성능을 추가로 개선하고, NVDIMM의 서비스 수명을 연장한다. 도 2에 도시되는 바와 같이, 이러한 실시예에서 제공되는 메모리 블록 재활용 방법은 도 1에 도시되는 컴퓨터 시스템에 적용된다. 예를 들어, 이러한 메모리 블록 재활용 방법은 도 1에서의 매체 제어기에 의해 실행될 수 있다. 컴퓨터 시스템은 메모리 제어기, 매체 제어기, 및 매체 제어기에 접속되는 비-휘발성 메모리를 포함한다. 메모리 제어기는 NVDIMM-P 프로토콜을 사용하여 매체 제어기와 통신한다. 비-휘발성 메모리는 복수의 메모리 블록들을 포함한다. 메모리 블록 재활용 방법은 다음의 단계들을 포함한다.
S201. 메모리 제어기가 언맵 커맨드를 매체 제어기에 전송함- 언맵 커맨드는 재활용될 메모리 블록의 메모리 논리 어드레스 정보를 포함함 -.
예를 들어, 메모리 제어기에 의해 전송되는 액세스 요청을 수신할 때, 매체 제어기는 일반적으로 대응하는 메모리 물리 어드레스를 액세스 요청에서의 메모리 논리 어드레스에 할당하고, 메모리 논리 어드레스와 메모리 물리 어드레스 사이의 매핑 관계를 저장한다. 메모리 제어기가 메모리 논리 어드레스를 판독 또는 기입할 때, 매체 제어기는 매핑 관계에 기초하여 대응하는 메모리 물리 어드레스에 대응하는 데이터를 판독 또는 기입할 수 있다. 매체 제어기가 메모리 물리 어드레스를 메모리 논리 어드레스에 할당할 때, 매체 제어기는 메모리 유휴 리스트로부터 메모리 블록을 선택한다. NVM 칩에서의 메모리 블록들 사이의 웨어 레벨링 효과를 보장하기 위해, 사용되지 않은 메모리 블록이 제 시간에 이용가능 메모리 블록으로 변환되어, 일부 메모리 블록들이 매체 관리에 참여할 수 없고, 메모리 리소스들이 낭비되고, NVDIMM의 서비스 수명이 단축되는 경우들을 회피하는 것이 보장되어야 한다. 전술한 목적들을 달성하기 위해, 메모리 제어기는 언맵 커맨드(unmap command)를 매체 제어기에 전송한다. 언맵 커맨드는 재활용될 메모리 블록의 메모리 논리 어드레스 정보를 운반한다. 언맵 커맨드는 매체 제어기에게 언맵 커맨드에 기초하여 메모리 블록을 재활용하라고 명령하기 위해 사용된다. 언맵 커맨드를 수신할 때, 매체 제어기는 언맵 커맨드에서의 재활용될 메모리 블록의 메모리 논리 어드레스 정보에 기초하여 재활용될 메모리 블록의 메모리 물리 어드레스 정보를 결정할 수 있다.
S202. 매체 제어기가 메모리 논리 어드레스 정보에 기초하여 메모리 블록을 재활용함- 재활용된 메모리 블록은 이용가능 메모리 블록임 -.
예를 들어, 매체 제어기는 언맵 커맨드에서의 메모리 논리 어드레스 정보에 기초하여 명시된 메모리 블록을 재활용한다. 재활용된 메모리 블록은 이용가능 메모리 블록이고, 매체 제어기는 웨어 레벨링과 같은 매체 관리를 수행할 때 메모리 블록을 관리할 수 있다. 객체를 해제할 때, 기존 메모리 제어기는 일반적으로 객체에 대응하는 데이터에 의해 점유되는 메모리 블록의 언맵 커맨드를, 매체 제어기에, 전송하지 않는다. 이러한 실시예에서, 언맵 커맨드는 매체 제어기에 전송되고, 명시된 메모리 블록은 재활용되어, 메모리 블록은 이용가능 메모리 블록으로 변환되고, 사용되지 않은 메모리 블록은 가능한 한 빨리 해제될 수 있다. 이러한 것은 오버-할당(over-allocation)에 의해 야기되는 비교적 높은 오버헤드들을 회피한다. 이러한 방식으로, 사용되지 않은 메모리 블록은 매체 관리 동작에서 가능한 한 빨리 관리될 수 있고, 그렇게 함으로써 NVDIMM의 저장 성능을 개선하고 NVDIMM의 서비스 수명을 연장한다.
본 출원의 실시예는 메모리 블록 재활용 방법을 제공한다. 이러한 방법은, 매체 제어기에 의해, 메모리 제어기에 의해 전송되는 언맵 커맨드를 수신하는 단계- 언맵 커맨드는 재활용될 메모리 블록의 메모리 논리 어드레스 정보를 포함함 -; 및, 매체 제어기에 의해, 메모리 논리 어드레스 정보에 기초하여 메모리 블록을 재활용하는 단계- 재활용된 메모리 블록은 이용가능 메모리 블록임 -를 포함한다. 메모리 제어기에 의해 전송되는 언맵 커맨드를 수신한 후에, 매체 제어기는, 언맵 커맨드에 포함되는 재활용될 메모리 블록의 메모리 논리 어드레스 정보에 기초하여, 대응하는 메모리 블록을 해제하고, 메모리 블록을 재활용하고, 그렇게 함으로써 매체 제어기의 매체 관리 동작 효과를 강화하고, NVDIMM의 저장 성능을 개선하고, NVDIMM의 서비스 수명을 연장한다.
예를 들어, 도 2에 도시되는 실시예에 기초하여, 본 출원의 실시예는 메모리 블록 재활용 방법을 추가로 제공한다. 도 3은 본 출원의 실시예 2에 따른 메모리 블록 재활용 방법의 시그널링 흐름도이다. 이러한 실시예에서, 매체 제어기가 언맵 커맨드에 기초하여 메모리 블록을 재활용하는 구체적인 프로세스가 상세히 설명된다. 도 3에 도시되는 바와 같이, 메모리 블록 재활용 방법은 다음의 단계들을 포함한다.
S301. 매체 제어기가 메모리 제어기에 의해 전송되는 언맵 커맨드를 수신함- 언맵 커맨드는 재활용될 메모리 블록의 메모리 논리 어드레스 정보를 포함함 -.
예를 들어, 이러한 실시예에서의 S301은 도 2에 도시되는 실시예에서 S201과 동일하다. 상세사항들은 본 출원에서 다시 설명되지 않는다.
선택적으로, 도 2 및 도 3에 도시되는 실시예들에서, 메모리 논리 어드레스 정보는 재활용될 메모리 블록의 시작 어드레스 및 길이 정보를 포함하고, 시작 어드레스는 재활용될 메모리 블록의 제1 어드레스를 표시하기 위해 사용되고, 길이 정보는 재활용될 메모리 블록의 수량을 표시하기 위해 사용된다.
예를 들어, 메모리 블록을 재활용할 때, 매체 제어기는, 언맵 커맨드에서의 재활용될 메모리 블록의 시작 어드레스 및 재활용될 메모리 블록의 총 길이에 기초하여, 메모리 물리 어드레스에서의 구체적 어드레스들에 대응하는 재활용될 메모리 블록들을 결정한다. 예를 들어, 재활용될 메모리 블록이 연속적인 메모리 블록들 1, 2 및 3을 포함할 때, 시작 어드레스는, 예를 들어, 메모리 블록 1의 제1 어드레스일 수 있고, 길이 정보는 3일 수 있다. 선택적으로, 메모리 제어기 및 매체 제어기는 메모리 블록의 입도에 동의한다. 선택적으로, 언맵 커맨드는 메모리 블록의 입도 크기 정보를 추가로 포함할 수 있다.
선택적으로, 전술한 실시예들에 기초하여, S301 전에, 메모리 블록 재활용 방법은 다음의 단계를 추가로 포함한다:
S300. 메모리 제어기가 프로세서에 의해 전송되는 트림 명령어를 수신함- 트림 명령어는 재활용될 메모리 블록의 메모리 논리 어드레스 정보를 포함함 -.
예를 들어, 프로세서(예를 들어, 도 1에서의 임의의 프로세서 코어(104))는 트림 명령어(TRIM instruction)를 메모리 제어기에 전송하고, 트림 명령어를 수신한 후에, 메모리 제어기는 언맵 커맨드를 매체 제어기에 전송한다. 트림 명령어는 메모리에 어느 메모리 블록들이 더 이상 사용되지 않는지 통지하기 위해 운영 체제에 의해 사용되는 그리고 소거될 수 있는 커맨드이다.
구체적으로, 프로세서에서 실행되는 운영 체제가 객체를 삭제할 때, 매체 제어기는 객체가 삭제된 점을 학습할 수 없고, 매체 제어기는 논리 어드레스와 물리 어드레스 사이의 매핑 관계를 여전히 저장한다. 따라서, 본 출원의 이러한 실시예에서, 객체 파일이 삭제될 때, 프로세서는 트림 명령어를 메모리 제어기에 전송할 수 있고- 트림 명령어는 메모리 블록의 어드레스를 운반하고, 트림 명령어는 메모리 블록의 데이터에 대응하는 객체가 삭제되었다는 점을 메모리 제어기에 통지하기 위해 사용됨 -, 메모리 블록의 데이터는 삭제될 수 있고, 메모리 블록은 재활용될 수 있다.
실제 적용에서, 프로세서가 다음의 경우들 중 어느 하나를 검출할 때, 프로세서는 트림 명령어를 메모리 제어기에 전송한다:
객체 및 객체에 대응하는 데이터가 해제됨, 크기가 미리 설정된 크기를 초과하는 메모리 블록이 해제됨, 애플리케이션이 종료됨, 메모리의 판독/기입 요청들의 수량이 미리 설정된 수량 미만임, 또는 프로세서가, 미리 설정된 운영 체제 메모리 관리 알고리즘에 기초하여, 트림 명령어가 전송될 필요가 있다고 결정함.
예를 들어, 프로세서가 객체가 해제되는 것을 검출할 때, 프로세서는 트림 명령어를 메모리 제어기에 전송하여 객체에 의해 점유되는 메모리 블록을 재활용한다. 선택적으로, 프로세서 코어와 메모리 제어기 사이의 시그널링 상호작용을 감소시키기 위해, 프로세서가 크기가 미리 설정된 크기를 초과하는 메모리 블록이 해제되는 것을 검출할 때, 프로세서는 트림 명령어를 메모리 제어기에 전송하여 메모리 블록을 재활용한다. 선택적으로, 애플리케이션이 종료되는 것을 검출할 때, 프로세서는 트림 명령어를 메모리 제어기에 전송하여 애플리케이션에 의해 점유되는 메모리 블록을 재활용한다. 선택적으로, 비교적 작은 수량의 판독/기입 요청들이 존재한다는 것을 검출할 때, 즉, 메모리가 유휴 상태일 때, 프로세서는 트림 명령어를 메모리 제어기에 전송하여, 메모리가 혼잡 상태일 때 메모리를 해제하는 것을 회피하고, 그렇게 함으로써 메모리의 판독/기입 성능을 개선한다. 선택적으로, 프로세서는, 미리 설정된 운영 체제 메모리 관리 알고리즘에 기초하여, 트림 명령어가 전송될 필요가 있다고 결정할 때, 트림 명령어를 메모리 제어기에 대안적으로 전송할 수 있다.
실제 적용에서, 매체 제어기와 메모리 제어기 사이에 제4-세대 더블 데이터 레이트(fourth-generation double data rate, DDR4) 동기화 인터페이스 또는 제5-세대 더블 데이터 레이트(fifth-generation double data rate, DDR5) 동기화 인터페이스가 사용될 수 있다. 상이한 DDR 인터페이스들이 사용될 때, 메모리 제어기에 의해 매체 제어기에 전송되는 언맵 커맨드들의 포맷들은 상이하다.
제1 가능한 구현에서, DDR4 인터페이스는 매체 제어기와 메모리 제어기 사이에 사용되고, 언맵 커맨드(unmap command)의 포맷은 다음의 표 1에 도시된다:
Figure 112020053530798-pct00001
예를 들어, 언맵 커맨드의 제한된 길이로 인해, 재활용될 메모리 블록의 완전한 어드레스 정보는 운반될 수 없다. 따라서, 언맵 커맨드를 전송한 후에, 메모리 제어기는 어드레스 확장 커맨드를 일반적으로 추가로 전송한다. 언맵 커맨드 및 어드레스 확장 커맨드는 백-투-백으로 전송된다. 구체적으로, 메모리 제어기는 언맵 커맨드 및 어드레스 확장 커맨드를 교대로 전송한다. 예를 들어, 제1 클록 비트에서 제1 언맵 커맨드를 전송한 후에, 메모리 제어기는 제2 클록 비트에서 제1 어드레스 확장 커맨드를 전송하고, 다음으로 후속 클록 비트들에서 제2 언맵 커맨드 및 제2 어드레스 확장 커맨드를 순차적으로 전송한다. 언맵 커맨드 및 어드레스 확장 커맨드는 2개의 클록 비트들에서 전송된다. 어드레스 확장 커맨드의 포맷이 표 1에 또한 도시된다. 하나의 클록 비트는 하나의 클록 변경 에지이고, 이러한 변경 에지는 상승 에지 또는 하강 에지일 수 있다.
예를 들어, 표 1에 도시되는 바와 같이, 언맵 커맨드 및 어드레스 확장 커맨드에서, H(high)는 바이너리 데이터 1을 표현하고, L(low)은 바이너리 데이터 0을 표현한다. CKE0(Clock Enable) 비트는 클록 인에이블 신호를 표시하기 위해 사용되고, 이전(previous cycle) 비트는 이전 클록이 유효한지를 표시하기 위해 사용되고, 현재(current cycle) 비트는 현재 클록이 유효한지를 표시하기 위해 사용된다. 표 1에 도시되는 바와 같이, 이전 비트 및 현재 비트 양자 모두가 H일 때, 클록 인에이블 신호는 유효하고, 매체 제어기는 클록 인에이블 신호가 유효할 때 언맵 커맨드를 수신한다. CS(Chip Select)는 칩 선택 신호이다. 메모리 채널 상에 복수의 메모리 모듈들이 존재하고, 메모리 제어기는, 칩 선택 신호를 사용하여, 언맵 커맨드 및 어드레스 확장 커맨드를 수신하는 메모리 모듈을 결정할 수 있다. 메모리 모듈에 의해 수신되는 칩 선택 신호가 L일 때, 이것은 메모리 모듈이 선택되어, 언맵 커맨드 및 어드레스 확장 커맨드를 수신하는 점을 표시한다. ADDR[39:2] 필드는 재활용될 메모리 블록의 시작 어드레스를 저장하기 위해 사용된다. 다시 말해서, ADDR[39:2]는 재활용될 메모리 블록의 시작 어드레스, 즉, 제1 재활용될 메모리 블록의 시작 어드레스이다. LENGTH[4:0]은 재활용될 메모리 블록의 길이 정보를 표시하기 위해 사용되고, 재활용될 메모리 블록의 수량을 표시하기 위해 구체적으로 사용될 수 있다. LENGTH[4:0]을 예로서 사용하여, LENGTH[4:0] 필드의 최대 값은 32이다. 이러한 경우, 하나의 언맵 커맨드는 32개의 메모리 블록들을 재활용하라고 명령하기 위해 사용될 수 있다. OPCODE[0] 필드는 소거 모드 정보를 표시하기 위해 사용된다.
제2 가능한 구현에서, DDR5 인터페이스가 매체 제어기와 메모리 제어기 사이에 사용되고, 언맵 커맨드의 포맷은 다음의 표 2에 도시된다:
Figure 112020053530798-pct00002
제1 가능한 구현과 유사하게, 언맵 커맨드의 제한된 길이로 인해, 언맵 커맨드는 재활용될 메모리 블록의 완전한 어드레스 정보를 운반할 수 없다. 따라서, 언맵 커맨드를 전송한 후에, 메모리 제어기는 어드레스 확장 커맨드를 일반적으로 추가로 전송한다. 언맵 커맨드 및 어드레스 확장 커맨드는 백-투-백으로 전송된다. 구체적으로, 메모리 제어기는 언맵 커맨드 및 어드레스 확장 커맨드를 교대로 전송한다. 제1 가능한 구현과 상이하게, 이러한 구현에서, 언맵 커맨드 및 어드레스 확장 커맨드 양자 모두는 전송에서 2개의 클록 사이클들을 소비할 필요가 있고, 각각의 클록 사이클은 하나의 클록 상승 에지 및 하나의 클록 하강 에지를 포함한다. 이러한 실시예에서, 제1 클록 사이클의 2개의 클록 에지들 상에서 언맵 커맨드의 제1 부분을 전송한 후에, 메모리 제어기는 제2 클록 사이클의 2개의 클록 에지들 상에서 언맵 커맨드의 제2 부분을 전송하고, 다음으로 메모리 제어기는 제3 클록 사이클의 2개의 클록 에지들 상에서 어드레스 확장 커맨드의 제1 부분을 전송하고 다음으로 제4 클록 사이클의 2개의 클록 에지들 상에서 어드레스 확장 커맨드의 제2 부분을 전송한다. 메모리 제어기는 후속 클록 비트들에서 순차적으로 다른 언맵 커맨드들 및 어드레스 확장 커맨드들을 전송한다. 어드레스 확장 커맨드의 포맷이 표 2에 또한 도시된다.
언맵 커맨드 및 어드레스 확장 커맨드에서, H(high)는 바이너리 데이터 1을 표현하고, L(low)은 바이너리 데이터 0을 표현한다. CS(Chip Select)는 칩 선택 신호이다. 제1 클록 사이클에서의 CS가 L인 것이 검출될 때, 이것은 언맵 커맨드 또는 어드레스 확장 커맨드가 시작됨을 표시한다. 제2 클록 사이클에서의 언맵 커맨드 또는 어드레스 확장 커맨드에 대해, CS가 H인 것으로 검출될 때, 이것은 언맵 커맨드 또는 어드레스 확장 커맨드의 제2 부분이 수신되는 점을 표시한다. 그러나, 제2 클록에서 CS가 L인 것으로 여전히 검출될 때, 이것은 언맵 커맨드 또는 어드레스 확장 커맨드에서 에러가 발생한다는 점을 표시한다. 이러한 경우, 2개의 클록 사이클들에서의 언맵 커맨드 또는 어드레스 확장 커맨드는 폐기될 수 있거나, 또는 제1 클록 사이클에서의 언맵 커맨드 또는 어드레스 확장 커맨드는 폐기될 수 있다. ADDR[39:1] 필드는 재활용될 메모리 블록의 시작 어드레스를 표시하기 위해 사용된다. 다시 말해서, ADDR[39:1] 필드는 제1 재활용될 메모리 블록의 시작 어드레스를 표시하기 위해 사용된다. LENGTH[6:0]는 재활용될 메모리 블록의 길이 정보를 표시하기 위해 사용되고, 재활용될 메모리 블록의 수량을 표시하기 위해 구체적으로 사용될 수 있다. LENGTH[6:0]을 예로서 사용하면, LENGTH[6:0] 필드의 최대 값은 128이다. 이러한 경우, 하나의 언맵 커맨드는 128개의 메모리 블록들을 재활용하라고 명령하기 위해 사용될 수 있다. OPCODE[0] 필드는 소거 모드 정보를 표시하기 위해 사용된다.
S302. 매체 제어기가 메모리 논리 어드레스 정보에 기초하여 메모리 블록의 메모리 논리 어드레스와 대응하는 메모리 물리 어드레스 사이의 매핑 관계를 삭제함. 구체적으로, 언맵 커맨드를 수신한 후에, 매체 제어기는, 언맵 커맨드에서의 제1 메모리 논리 어드레스 정보에 기초하여, 제1 메모리 논리 어드레스에 대응하는 제1 메모리 물리 어드레스를 결정할 수 있다. 이러한 경우에, 매체 제어기는 제1 메모리 논리 어드레스와 제1 메모리 물리 어드레스 사이의 매핑 관계를 삭제할 수 있어, 제1 메모리 물리 어드레스에 대한 대응하는 메모리 논리 어드레스가 존재하지 않고; 매체 제어기는 새로운 메모리 논리 어드레스를 제1 메모리 물리 어드레스에 할당할 수 있다. 제1 메모리 논리 어드레스와 제1 메모리 물리 어드레스 사이의 매핑 관계가 삭제되지 않으면, 매체 제어기는 메모리 제어기가 다음에 제1 메모리 논리 어드레스에 액세스할 때에만 제1 메모리 물리 어드레스에 액세스할 수 있다. 그러나, 2개의 액세스들 사이의 간격은 매우 길 수 있어서, 제1 메모리 물리 어드레스의 소거/기입 횟수의 수량이 확실히 NVM에서의 다른 메모리 블록의 소거/기입 횟수의 수량 미만이다. 이러한 것은 NVDMM의 서비스 수명에 영향을 미칠 수 있다.
S303. 매체 제어기가 메모리 블록의 메모리 물리 어드레스를 메모리 유휴 리스트에 추가함. 본 출원의 이러한 실시예에서, 대응하는 메모리 논리 어드레스가 존재하지 않는 메모리 물리 어드레스에 대응하는 메모리 블록이 이용가능 메모리 블록이고, 매체 제어기는 메모리 물리 어드레스를 메모리 유휴 리스트에 추가한다. 본 출원의 이러한 실시예에서, 메모리 유휴 리스트에서 표시되는 메모리 블록은 이용가능 메모리 블록이다. 다시 말해서, 메모리 블록이 새로운 액세스 요청에 할당될 필요가 있을 때, 매체 제어기는 메모리 유휴 리스트에 기초하여 메모리 블록을 할당할 수 있다. 실제 적용에서, 메모리 유휴 리스트에서의 메모리 블록들은 메모리 블록들의 기입 횟수의 수량들의 오름차순으로 배열될 수 있다. 메모리 블록을 할당하는 프로세스에서, 매체 제어기는 작은 수량의 소거/기입 횟수가 있는 메모리 블록을 우선적으로 할당할 수 있다. 물론, 실제 적용에서, 매체 제어기는 메모리 블록을 대안적으로 랜덤하게 할당할 수 있다. 이러한 것은 본 명세서에서 제한되지 않는다. 본 출원의 이러한 실시예에 따른 NVDIMM을 포함하는 컴퓨터 시스템에서, 메모리 제어기는 NVDIMM-P 프로토콜에 따라 언맵 커맨드를 매체 제어기에 전송하여, 매체 제어기에게 메모리 블록을 재활용하라고 명령할 수 있다. 언맵 커맨드를 수신한 후에, 매체 제어기는 언맵 커맨드에서 운반되는 메모리 논리 어드레스 정보에 기초하여 메모리 블록의 메모리 논리 어드레스와 대응하는 메모리 물리 어드레스 사이의 매핑 관계를 삭제하고, 대응하는 메모리 블록을 재활용할 수 있다.
메모리 제어기가 본 출원의 이러한 실시예에 따라 언맵 커맨드를 매체 제어기 전송하는 이러한 방식에서, 매체 제어기는 제 시간에 메모리 블록의 메모리 논리 어드레스와 대응하는 메모리 물리 어드레스 사이의 매핑 관계를 삭제할 수 있어, 이용가능 메모리 블록들의 수량이 증가될 수 있고, 메모리 블록들 사이의 웨어 레벨링 효과가 강화될 수 있고, NVDIMM의 성능이 연장될 수 있고, NVDIMM의 서비스 수명이 연장될 수 있다. 이러한 방식으로, NVDIMM이 메모리로서 사용될 때 메모리 모듈이 관리된다.
해당 분야에서의 기술자는, NVM 칩이 바이트 단위로 기입하는 것을 지원하기 때문에, 메모리 업데이트 동안, 메모리 블록에서의 데이터가 직접 재기입될 수 있고, 소거 및 가비지 수집이 사용되지 않는 메모리 블록에 대해 수행될 필요가 없다는 점을 사전에 알 수 있다. 이러한 경우, 실제 적용에서, 처리 속도를 개선하기 위해, 메모리 블록이 해제될 때, 재활용된 메모리 블록은 소거되지 않을 수 있다. 그러나, 민감한 데이터에 대해, 소거되지 않은 데이터의 누설의 위험이 존재할 수 있다. 따라서, 본 출원의 이러한 실시예에서, 표 1 및 표 2에 도시되는 바와 같이, 언맵 커맨드는 OPCODE[0] 필드를 추가로 포함할 수 있다. OPCODE[0] 필드는 소거 모드 정보를 표시하기 위해 사용된다. 구체적으로, 매체 제어기는, 언맵 커맨드에서의 OPCODE[0] 필드의 소거 모드 표시 정보에 기초하여, 데이터 블록이 소거될 필요가 있는지를 결정할 수 있다. 예를 들어, OPCODE[0]의 값이 0일 때, 이것은 메모리 블록에서의 데이터 정보가 소거될 필요가 없다는 점을 표시한다. OPCODE[0]의 값이 1일 때, 이것은 메모리 블록에서의 데이터 정보가 소거될 필요가 있다는 점을 표시한다.
구체적으로, 도 3에 도시되는 바와 같이, S302후에, 메모리 블록 재활용 방법은 다음의 단계를 추가로 포함할 수 있다.
S304. 소거 모드 표시 정보가 메모리 블록에서의 데이터 정보를 소거하라고 명령할 때, 매체 제어기가 미리 정의된 패턴을 메모리 블록에 기입함. 예를 들어, 본 출원의 이러한 실시예에서, OPCODE[0]의 값이 1일 때, 매체 제어기는 메모리 블록의 메모리 논리 어드레스와 대응하는 메모리 물리 어드레스 사이의 매핑 관계를 삭제한다. 메모리 블록이 재활용된 후에, 매체 제어기는 미리 정의된 패턴(pre-defined pattern)을 재활용된 메모리 블록에 기입하여, 메모리 블록에서의 원래의 데이터를 덮어쓰고, 메모리 블록들에서의 민감한 데이터의 누설을 방지할 수 있다. 실제 적용에서, 미리 정의된 패턴은 미리 설정된 레지스터에 저장될 수 있다. 미리 정의된 패턴은 전부 0들, 전부 1들, 또는 임의의 다른 미리 정의된 데이터일 수 있다. 이러한 것은 본 명세서에서 제한되지 않는다. 실제 적용에서, S304는 S303 이전에 수행될 수 있거나, 또는 S303이후에 수행될 수 있거나, 또는 S303과 동시에 수행될 수 있다. 이러한 것은 본 출원에서 제한되지 않는다.
본 출원의 이러한 실시예에 따른 메모리 블록 재활용 방법에서, 언맵 커맨드는 소거 모드 표시 정보를 추가로 포함하여, 메모리 블록에서의 데이터가 민감한 데이터일 때, 매체 제어기는 미리 정의된 패턴을 사용하여 민감한 데이터를 덮어쓰라고 명령을 받을 수 있고, 그렇게 함으로써 민감한 데이터를 보호하고 NVDIMM의 보안성을 개선한다.
또한, 실제 적용에서는, 복수의 프로세서들 또는 복수의 프로세서 코어들이 동일한 메모리 블록에 액세스하는 경우가 존재할 수 있다. 이러한 경우, 메모리 블록이 재활용된 후에, 다른 프로세서가 메모리 블록에 액세스하는 경우가 존재할 수 있다. 다음은 메모리 제어기와 매체 제어기 사이에 존재하는 그리고 메모리 블록이 재활용된 후에 존재하는 데이터 판독 프로세스를 상세히 설명한다. 도 4는 본 출원의 실시예에 따른 데이터 판독 방법의 흐름도이다. 도 4에 도시되는 바와 같이, 이러한 방법은 다음의 단계들을 포함할 수 있다.
S402. 메모리 제어기가 프로세서에 의해 전송되는 메모리 액세스 요청을 수신함- 메모리 액세스 요청은 판독될 데이터의 메모리 논리 어드레스 정보를 포함함 -. 본 출원의 이러한 실시예에서, 메모리 액세스 요청에서의 메모리 논리 어드레스 정보는 전술한 실시예에서 설명된 트림 커맨드에서의 메모리 논리 어드레스 정보와 동일하다.
S404. 메모리 제어기가 판독 커맨드를 매체 제어기에 전송함. 구체적으로, 메모리 제어기는 수신된 메모리 액세스 요청에 기초하여 판독 커맨드를 매체 제어기에 전송하고, 판독 커맨드는 메모리 블록에서의 데이터를 판독하기 위해 사용되고, 메모리 액세스 요청은 액세스될 메모리 블록의 메모리 논리 어드레스를 운반한다.
S406. 매체 제어기가 메모리 논리 어드레스 정보에 기초하여 대응하는 메모리 물리 어드레스가 발견되지 않는 것으로 결정함. 판독 커맨드를 수신한 후, 매체 제어기는 판독 커맨드에서의 메모리 논리 어드레스에 대응하는 메모리 물리 어드레스에 대해 쿼리한다. 판독 커맨드에서의 메모리 논리 어드레스 정보는 트림 커맨드에서의 메모리 논리 어드레스 정보와 동일하기 때문에, 매체 제어기는, 트림 명령어에 기초하여, 메모리 논리 어드레스에 대응하는 메모리 블록을 재활용하였다. 따라서, 매체 제어기는 메모리 논리 어드레스 정보에 기초하여 대응하는 메모리 물리 어드레스를 발견할 수 없다.
S408. 매체 제어기가 에러 응답 정보를 메모리 제어기에 전송함. 이러한 에러 응답 정보는 판독 커맨드가 실행되는 것에 실패한다는 점을 표시하기 위해 사용된다. 위에 설명된 바와 같이, 매체 제어기는 메모리 논리 어드레스 정보에 기초하여 대응하는 메모리 물리 어드레스를 발견할 수 없기 때문에, 매체 제어기는 대응하는 물리 어드레스로부터 대응하는 데이터를 획득하여 이러한 데이터를 메모리 제어기에 리턴할 수 있다. 따라서, 이러한 단계에서, 매체 제어기는 에러 응답 정보를 메모리 제어기에 전송하여, 판독 커맨드가 실행되는 것에 실패한다는 점을 메모리 제어기에 통지할 수 있다.
S410. 메모리 제어기가 에러 응답 정보에 기초하여 판독 실패 정보를 프로세서에 전송함. 예를 들어, 매체 제어기에 의해 전송되는 에러 응답 정보를 수신한 후에, 메모리 제어기는 에러 응답 정보에 기초하여 판독 실패 정보를 프로세서에 추가로 전송할 수 있고, 판독 실패 정보는 판독 커맨드가 실행되는 것에 실패한다는 점을 프로세서에 통지하기 위해 사용된다.
선택적으로, 에러 응답 정보를 수신할 때, 메모리 제어기는 에러 응답 정보에 운반되는 에러 타입 표시 정보에 기초하여 에러 타입을 결정할 필요가 있다. 구체적으로, 메모리 제어기는 에러 타입 표시 정보와 실패 타입 사이의 미리 설정된 매핑 관계에 기초하여 수신된 에러 응답 정보에서 에러 타입을 결정할 수 있다. 에러 타입 표시 정보와 실패 타입 사이의 미리 설정된 매핑 관계는 모드 레지스터에 저장될 수 있다.
선택적으로, 본 출원의 이러한 실시예에서, 에러 응답 정보는 에러 타입 표시 정보 및 에러 표시 정보(예를 들어, 포이즌 비트에 의해 표시되는 정보)를 포함한다. 에러 표시 정보는 판독 커맨드가 실행되는 것에 실패한다는 점을 표시하기 위해 사용되고, 에러 타입 표시 정보는 실패 타입을 표시하기 위해 사용된다. 실패 타입들은 에러 데이터, 정정불가능 체크 코드 에러, 매체 에러, 및 메모리 채널 에러를 포함한다.
예를 들어, 에러 응답 정보는 포이즌 비트를 포함한다. 포이즌 비트의 값이 0일 때, 이것은 판독 커맨드가 성공적으로 실행된다는 점을 표시한다. 포이즌 비트의 값이 1일 때, 이것은 판독 커맨드가 실행되는 것에 실패한다는 점을 표시한다. 에러 응답 정보는 판독-커맨드 실행 실패의 타입을 표시하기 위해 사용되는 에러 타입 표시 정보를 추가로 포함한다. 예를 들어, 메모리 제어기는, 에러 응답 정보에서의 포이즌 비트의 값이 1인 것에 기초하여, 판독 커맨드가 실행되는 것이 실패한 것으로 결정하고, 에러 타입 표시 정보에 기초하여, 판독-커맨드 실행 실패의 타입이 메모리 블록에 대응하는 메모리 물리 어드레스가 아니라고 결정할 수 있다. 예를 들어, 에러 타입 표시 정보의 상이한 값들은 상이한 에러 타입들을 표현할 수 있다. 에러 타입은 추가로, 에러 데이터, 정정불가능 체크 코드 에러, 매체 에러, 메모리 채널 에러 등일 수 있다.
하나의 경우에서, 매체 제어기와 메모리 제어기 사이에 DDR4 인터페이스가 사용될 때, 에러 응답 정보의 가능한 포맷이 다음의 표 3에 도시된다.
Figure 112020053530798-pct00003
DQ0 내지 DQ63 및 CB0 내지 CB7 전부는 데이터 라인들이고, 데이터를 송신하기 위해 사용된다. UI0 내지 UI7은 클록 라인들이고, 이는 데이터 송신 동안 사용되는 클록 비트들을 표시한다. 예를 들어, UI0은 제1 클록 비트이고, 상승 클록 에지이고, UI1은 제2 클록 비트이고 하강 클록 에지이다. DDR4에서, 에러 응답 정보를 전송하기 위해 적어도 4개의 클록 사이클이 요구된다. 표 3에 도시되는 바와 같이, 본 출원의 이러한 실시예에 도시되는 에러 응답 정보에서, RID[7:0] 필드는 판독 커맨드의 식별자 ID를 표시하기 위해 사용된다. 에러 표시 정보는 판독 커맨드가 부정확한지를 표시하기 위해 사용된다. 에러 타입 표시 정보 필드는 에러 타입을 표시하기 위해 사용된다. ECC(Error Correcting Code, ECC) 필드는 송신된 데이터의 정정 정보를 표시하기 위해 사용된다. RFU 필드는 예약된 필드이다.
다른 경우에, 매체 제어기와 메모리 제어기 사이에 DDR5 인터페이스가 사용될 때, 에러 응답 정보의 가능한 포맷이 다음의 표 4에 도시된다.
Figure 112020053530798-pct00004
표 3에 도시되는 에러 응답 정보와는 상이하게, DDR5에서, 데이터 라인은 비교적 작은 수량의 비트들을 포함하고, DQ는 32 비트이다. 이러한 경우, 동일한 수량의 비트들이 있는 에러 응답 정보를 송신하기 위해, DDR5에서 요구되는 클록 비트들의 수량은 DDR4에서 요구되는 클록 비트들의 수량보다 크다.
메모리 제어기에 의해 프로세서에 전송되는 판독 실패 정보는 에러 타입 표시 정보 및 에러 표시 정보를 포함할 수 있다. 선택적으로, 판독 실패 정보는 대안적으로 에러 표시 정보일 수 있고, 에러 표시 정보는 판독 실패를 표시하기 위해서만 사용된다.
본 출원의 실시예들의 다른 양태는 메모리를 추가로 제공한다. 예를 들어, 이러한 메모리는 도 1에서의 NVDIMM일 수 있다. 메모리의 구조는 도 1에서의 NVDIMM에 도시될 수 있고, 메모리는 매체 제어기(110) 및 매체 제어기(110)에 접속되는 비-휘발성 메모리(예를 들어, 도 1에서의 NVM(112))를 포함한다. 매체 제어기(110)는 NVDIMM-P 프로토콜을 사용하여 프로세서의 메모리 제어기(106)와 통신하고, 비-휘발성 메모리는 복수의 메모리 블록들을 포함한다. 매체 제어기(110)는, 예를 들어, 도 2 내지 도 4에서의 메모리 블록 재활용 방법들을 수행할 수 있다. 구체적으로, 매체 제어기(110)는,
메모리 제어기(106)에 의해 전송되는 언맵 커맨드를 수신하도록- 언맵 커맨드는 재활용될 메모리 블록의 메모리 논리 어드레스 정보를 포함함 -; 그리고
메모리 논리 어드레스 정보에 기초하여 메모리 블록을 재활용하도록- 재활용된 메모리 블록은 이용가능 메모리 블록임 - 구성된다.
선택적으로, 매체 제어기(110)는,
매체 제어기에 의해, 메모리 논리 어드레스 정보에 기초하여 메모리 블록의 메모리 논리 어드레스와 대응하는 메모리 물리 어드레스 사이의 매핑 관계를 삭제하도록; 그리고
메모리 블록의 메모리 물리 어드레스를 메모리 유휴 리스트에 추가하도록 추가로 구성된다.
선택적으로, 메모리 논리 어드레스 정보는 재활용될 메모리 블록의 시작 어드레스 및 길이 정보를 포함하고, 시작 어드레스는 재활용될 메모리 블록의 제1 어드레스를 표시하기 위해 사용되고, 길이 정보는 재활용될 메모리 블록의 수량을 표시하기 위해 사용된다.
선택적으로, 언맵 커맨드는 소거 모드 표시 정보를 추가로 포함하고, 매체 제어기(110)는,
소거 모드 표시 정보가 메모리 블록에서의 데이터 정보를 소거하라고 명령할 때, 미리 정의된 패턴을 메모리 블록에 기입하도록 추가로 구성된다.
선택적으로, 매체 제어기(110)는,
메모리 제어기(106)에 의해 전송되는 판독 커맨드를 수신하도록- 판독 커맨드는 판독될 데이터의 메모리 논리 어드레스 정보를 포함함 -;
메모리 논리 어드레스 정보에 기초하여 대응하는 메모리 물리 어드레스가 발견되지 않는다고 결정하도록; 그리고
에러 응답 정보를 메모리 제어기(106)에 전송하도록- 에러 응답 정보는 판독 커맨드가 실행되는 것에 실패한다는 점을 표시하기 위해 사용됨 - 추가로 구성된다.
본 출원의 실시예들의 다른 양태는 컴퓨터 시스템을 추가로 제공한다. 이러한 컴퓨터 시스템의 구조는 도 1에 도시되고, 이러한 컴퓨터 시스템은 프로세서(102), 메모리 제어기(106), 매체 제어기(110), 및 매체 제어기(110)에 접속되는 비-휘발성 메모리(예를 들어, 도 1에서의 NVM(112))를 포함한다. 메모리 제어기(106)는 NVDIMM-P 프로토콜을 사용하여 매체 제어기(110)와 통신하고, 비-휘발성 메모리는 복수의 메모리 블록들을 포함하고, 메모리 제어기(106)는,
프로세서(102)에 의해 전송되는 트림 명령어를 수신하도록- 트림 명령어는 재활용될 메모리 블록의 메모리 논리 어드레스 정보를 포함함 -; 그리고
언맵 커맨드를 매체 제어기(110)에 전송하도록- 언맵 커맨드는 재활용될 메모리 블록의 메모리 논리 어드레스 정보를 포함하고, 언맵 커맨드는 매체 제어기(110)에게 메모리 블록을 재활용하라고 명령하기 위해 사용됨 - 구성된다.
매체 제어기(110)는,
메모리 제어기(106)에 의해 전송되는 언맵 커맨드를 수신하도록; 그리고
메모리 논리 어드레스 정보에 기초하여 메모리 블록을 재활용하도록- 재활용된 메모리 블록은 이용가능 메모리 블록임 - 구성된다.
선택적으로, 메모리 논리 어드레스 정보는 재활용될 메모리 블록의 시작 어드레스 및 길이 정보를 포함하고, 시작 어드레스는 재활용될 메모리 블록의 제1 어드레스를 표시하기 위해 사용되고, 길이 정보는 재활용될 메모리 블록의 수량을 표시하기 위해 사용된다.
선택적으로, 언맵 커맨드는 소거 모드 표시 정보를 추가로 포함하고; 매체 제어기(110)는,
소거 모드 표시 정보가 메모리 블록에서의 데이터 정보를 소거하라고 명령할 때, 미리 정의된 패턴을 메모리 블록에 기입하도록 추가로 구성된다.
선택적으로, 메모리 제어기(106)는,
프로세서에 의해 전송되는 메모리 액세스 요청을 수신하도록- 메모리 액세스 요청은 판독될 데이터의 메모리 논리 어드레스 정보를 포함함 - 추가로 구성된다.
메모리 제어기(106)는 메모리 액세스 요청에 기초하여 판독 커맨드를 매체 제어기(110)에 전송하도록- 판독 커맨드는 메모리 논리 어드레스 정보를 운반함 - 추가로 구성된다.
매체 제어기(110)는,
메모리 논리 어드레스 정보에 기초하여 대응하는 메모리 물리 어드레스가 발견되지 않는다고 결정하도록; 그리고
에러 응답 정보를 메모리 제어기(106)에 전송하도록- 에러 응답 정보는 판독 커맨드가 실행되는 것에 실패한다는 점을 표시하기 위해 사용됨 - 추가로 구성된다.
메모리 제어기(106)는 에러 응답 정보에 기초하여 판독 실패 정보를 프로세서에 전송하도록 추가로 구성된다.
본 출원에서 제공되는 실시예들은 단지 예들이라는 점이 주목되어야 한다. 해당 분야에서의 기술자는, 설명의 편의성 및 간결성을 위해, 전술한 실시예들에서, 실시예들이 상이한 양태들을 강조하고, 실시예에서 상세히 설명되지 않은 부분에 대해서는, 다른 실시예의 관련 설명을 참조할 수 있다는 점을 명확하게 알 수 있다. 본 출원의 실시예들, 청구항들, 및 첨부 도면들에 개시되는 특징들은 독립적으로 존재할 수 있거나, 또는 조합하여 존재할 수 있다. 본 출원의 실시예들에서 하드웨어 형태로 설명되는 특징들은 소프트웨어에 의해 실행될 수 있고, 그 반대도 마찬가지이다. 이러한 것은 본 명세서에서 제한되지 않는다.
해당 분야에서의 통상의 기술자는, 본 명세서에 개시되는 실시예들에서 설명되는 예들과 조합하여, 전자 하드웨어에 의해 또는 컴퓨터 소프트웨어와 전자 하드웨어의 조합에 의해 유닛들 및 알고리즘 단계들이 구현될 수 있다는 점을 인식할 수 있다. 이러한 기능들이 하드웨어 또는 소프트웨어에 의해 수행되는지는 기술적 해결책들의 특정 애플리케이션 및 설계 제약들에 의존한다. 해당 분야에서의 기술자는 각각의 특정한 애플리케이션에 대해 설명되는 기능들을 구현하기 위해 상이한 방법들을 사용할 수 있지만, 이러한 구현이 본 출원의 범위를 벗어나는 것으로 고려되어서는 안 된다.
전술한 실시예들의 전부 또는 일부는 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합에 의해 구현될 수 있다. 이러한 실시예들을 구현하기 위해 소프트웨어 프로그램이 사용될 때, 실시예들의 전부 또는 일부는 컴퓨터 프로그램 제품의 형태로 구현될 수 있다. 이러한 컴퓨터 프로그램 제품은 하나 이상의 컴퓨터 명령어를 포함한다. 이러한 컴퓨터 프로그램 명령어들이 컴퓨터 상에서 로딩되고 실행될 때, 본 출원의 실시예들에 따른 프로시저들 또는 기능들의 전부 또는 일부가 생성된다. 이러한 컴퓨터는, 범용 컴퓨터, 전용 컴퓨터, 컴퓨터 네트워크, 또는 다른 프로그램가능 장치일 수 있다. 이러한 컴퓨터 명령어들은 컴퓨터-판독가능 저장 매체에 저장될 수 있거나 또는 컴퓨터-판독가능 저장 매체로부터 다른 컴퓨터-판독가능 저장 매체로 송신될 수 있다. 예를 들어, 이러한 컴퓨터 명령어들은 웹사이트, 컴퓨터, 서버, 또는 데이터 센터로부터 유선(예를 들어, 동축 케이블, 광 섬유 또는 DSL(digital subscriber line)) 또는 무선(예를 들어, 적외선, 라디오, 또는 마이크로웨이브) 방식으로, 다른 웹사이트, 컴퓨터, 서버, 또는 데이터 센터로 송신될 수 있다. 이러한 컴퓨터-판독가능 저장 매체는 컴퓨터에 의해 액세스가능한 임의의 사용가능 매체, 또는, 하나 이상의 사용가능 매체를 집적하는, 서버 또는 데이터 센터와 같은, 데이터 저장 디바이스일 수 있다. 이러한 사용가능 매체는, 자기 매체(예를 들어, 플로피 디스크, 하드 디스크, 또는 자기 테이프), 광 매체(예를 들어, DVD), 또는 반도체 매체(예를 들어, 고체 상태 디스크(Solid State Disk(SSD))와 같은, 프로그램 코드를 저장할 수 있는 다양한 비-일시적(non-transitory) 머신-판독가능 매체일 수 있다.
본 출원에서 제공되는 실시예들은 단지 예들이라는 점이 주목되어야 한다. 해당 분야에서의 기술자는, 설명의 편의성 및 간결성을 위해, 전술한 실시예들에서, 실시예들이 상이한 양태들을 강조하고, 실시예에서 상세히 설명되지 않은 부분에 대해서는, 다른 실시예의 관련 설명을 참조할 수 있다는 점을 명확하게 알 수 있다. 본 출원의 실시예들, 청구항들, 및 첨부 도면들에 개시되는 특징들은 독립적으로 존재할 수 있거나, 또는 조합하여 존재할 수 있다. 본 출원의 실시예들에서 하드웨어 형태로 설명되는 특징들은 소프트웨어에 의해 실행될 수 있고, 그 반대도 마찬가지이다. 이러한 것은 본 명세서에서 제한되지 않는다.

Claims (20)

  1. 메모리 블록 재활용 방법으로서, 상기 방법은 메모리 제어기, 매체 제어기, 및 상기 매체 제어기에 접속되는 비-휘발성 메모리를 포함하는 컴퓨터 시스템에 적용되고, 상기 방법은,
    상기 매체 제어기에 의해, 상기 메모리 제어기에 의해 전송되는 언맵 커맨드를 수신하는 단계 - 상기 메모리 제어기는 NVDIMM-P 프로토콜을 사용하여 상기 매체 제어기와 통신하고, 상기 언맵 커맨드는 상기 비-휘발성 메모리에서의 복수의 메모리 블록들의 하나 이상의 재활용될 메모리 블록의 메모리 논리 어드레스 정보를 포함함 -; 및
    상기 매체 제어기에 의해, 상기 메모리 논리 어드레스 정보에 기초하여 상기 하나 이상의 메모리 블록을 재활용하는 단계 - 상기 하나 이상의 재활용된 메모리 블록들은 이용가능 메모리 블록들임 - 를 포함하고,
    상기 언맵 커맨드는 소거 모드 표시 정보를 추가로 포함하고,
    상기 방법은, 상기 매체 제어기에 의해, 상기 소거 모드 표시 정보가 상기 하나 이상의 메모리 블록에서의 데이터를 소거하라고 명령할 때, 미리 정의된 패턴을 상기 하나 이상의 메모리 블록에 기입하는 단계를 추가로 포함하는 방법.
  2. 제1항에 있어서, 상기 매체 제어기에 의해, 상기 메모리 논리 어드레스 정보에 기초하여 상기 하나 이상의 메모리 블록을 재활용하는 단계는,
    상기 매체 제어기에 의해, 상기 메모리 논리 어드레스 정보에 기초하여 상기 하나 이상의 메모리 블록 각각의 메모리 논리 어드레스와 대응하는 메모리 물리 어드레스 사이의 매핑 관계를 삭제하는 단계; 및
    상기 매체 제어기에 의해, 상기 하나 이상의 메모리 블록의 메모리 물리 어드레스들을 메모리 유휴 리스트에 추가하는 단계를 포함하는 방법.
  3. 제1항에 있어서, 상기 메모리 논리 어드레스 정보는 상기 하나 이상의 재활용될 메모리 블록의 시작 어드레스 및 길이 정보를 포함하고, 상기 시작 어드레스는 상기 하나 이상의 재활용될 메모리 블록의 제1 어드레스를 표시하기 위해 사용되고, 상기 길이 정보는 상기 하나 이상의 재활용될 메모리 블록의 수량을 표시하기 위해 사용되는 방법.
  4. 삭제
  5. 제1항에 있어서, 상기 방법은,
    상기 매체 제어기에 의해, 상기 메모리 제어기에 의해 전송되는 판독 커맨드를 수신하는 단계 - 상기 판독 커맨드는 판독될 데이터의 메모리 논리 어드레스 정보를 포함함 -;
    상기 매체 제어기에 의해, 판독될 데이터의 메모리 논리 어드레스 정보에 기초하여 대응하는 메모리 물리 어드레스가 발견되지 않는다고 결정하는 단계; 및
    상기 매체 제어기에 의해, 에러 응답 정보를 상기 메모리 제어기에 전송하는 단계 - 상기 에러 응답 정보는 상기 판독 커맨드가 실행되는 것에 실패한다는 점을 표시함 -
    를 추가로 포함하는 방법.
  6. 메모리 블록 재활용 방법으로서, 상기 방법은 프로세서, 메모리 제어기, 매체 제어기, 및 상기 매체 제어기에 접속되는 비-휘발성 메모리를 포함하는 컴퓨터 시스템에 적용되고, 상기 방법은,
    상기 메모리 제어기에 의해, 상기 프로세서에 의해 전송되는 트림 명령어를 수신하는 단계 - 상기 트림 명령어는 상기 비-휘발성 메모리의 복수의 메모리 블록들에서의 하나 이상의 재활용될 메모리 블록의 메모리 논리 어드레스 정보를 포함함 -; 및
    상기 메모리 제어기에 의해, 언맵 커맨드를 상기 매체 제어기에 전송하는 단계를 포함하고;
    상기 메모리 제어기는 NVDIMM-P 프로토콜을 사용하여 상기 매체 제어기와 통신하고, 상기 언맵 커맨드는 상기 하나 이상의 재활용될 메모리 블록의 메모리 논리 어드레스 정보를 포함하고, 상기 언맵 커맨드는 상기 매체 제어기에게 상기 하나 이상의 메모리 블록을 재활용하라고 명령하고, 상기 하나 이상의 재활용된 메모리 블록은 이용가능한 메모리 블록이고,
    상기 언맵 커맨드는 소거 모드 표시 정보를 추가로 포함하고,
    상기 소거 모드 표시 정보가 상기 하나 이상의 메모리 블록에서의 데이터를 소거하라고 명령할 때, 상기 언맵 커맨드는 상기 매체 제어기에게 미리 정의된 패턴을 상기 하나 이상의 메모리 블록에 기입하라고 명령하기 위해 추가로 사용되는 방법.
  7. 제6항에 있어서, 상기 메모리 논리 어드레스 정보는 상기 하나 이상의 재활용될 메모리 블록의 시작 어드레스 및 길이 정보를 포함하고, 상기 시작 어드레스는 상기 하나 이상의 재활용될 메모리 블록의 제1 어드레스를 표시하기 위해 사용되고, 상기 길이 정보는 상기 하나 이상의 재활용될 메모리 블록의 수량을 표시하기 위해 사용되는 방법.
  8. 삭제
  9. 제6항에 있어서, 상기 방법은,
    상기 메모리 제어기에 의해, 판독 커맨드를 상기 매체 제어기에 전송하는 단계 - 상기 판독 커맨드는 판독될 데이터의 메모리 논리 어드레스 정보를 포함함 -; 및
    상기 메모리 제어기에 의해, 상기 판독될 데이터의 메모리 논리 어드레스 정보에 기초하여 대응하는 메모리 물리 어드레스가 발견되지 않을 때 상기 매체 제어기에 의해 전송되는 에러 응답 정보를 수신하는 단계 - 상기 에러 응답 정보는 상기 판독 커맨드가 실행되는 것에 실패한다는 점을 표시하기 위해 사용됨 -
    를 추가로 포함하는 방법.
  10. 메모리로서,
    비-휘발성 메모리, 및
    상기 비-휘발성 메모리에 접속되는 매체 제어기를 포함하고, 상기 매체 제어기는,
    메모리 제어기에 의해 전송되는 언맵 커맨드를 수신하도록 - 상기 매체 제어기는 NVDIMM-P 프로토콜을 사용하여 상기 메모리 제어기와 통신하고, 상기 언맵 커맨드는 상기 비-휘발성 메모리에서의 하나 이상의 재활용될 메모리 블록의 메모리 논리 어드레스 정보를 포함함 -; 그리고
    상기 메모리 논리 어드레스 정보에 기초하여 상기 하나 이상의 메모리 블록을 재활용하도록 - 상기 하나 이상의 재활용된 메모리 블록들은 이용가능 메모리 블록들임 - 구성되고,
    상기 언맵 커맨드는 소거 모드 표시 정보를 추가로 포함하고,
    상기 매체 제어기는, 상기 소거 모드 표시 정보가 상기 하나 이상의 메모리 블록에서의 데이터를 소거하라고 명령할 때 미리 정의된 패턴을 상기 하나 이상의 메모리 블록에 기입하도록 추가로 구성되는, 메모리.
  11. 제10항에 있어서, 상기 매체 제어기는,
    상기 메모리 논리 어드레스 정보에 기초하여 상기 하나 이상의 메모리 블록 각각의 메모리 논리 어드레스 정보와 대응하는 메모리 물리 어드레스 사이의 매핑 관계를 삭제하도록; 그리고
    상기 하나 이상의 메모리 블록의 메모리 물리 어드레스들을 메모리 유휴 리스트에 추가하도록 추가로 구성되는 메모리.
  12. 제10항 또는 제11항에 있어서, 상기 메모리 논리 어드레스 정보는 상기 하나 이상의 재활용될 메모리 블록의 시작 어드레스 및 길이 정보를 포함하고, 상기 시작 어드레스는 상기 하나 이상의 재활용될 메모리 블록의 제1 어드레스를 표시하기 위해 사용되고, 상기 길이 정보는 상기 하나 이상의 재활용될 메모리 블록의 수량을 표시하는 메모리.
  13. 삭제
  14. 제10항 내지 제11항 중 어느 한 항에 있어서, 상기 매체 제어기는,
    상기 메모리 제어기에 의해 전송되는 판독 커맨드를 수신하도록- 상기 판독 커맨드는 판독될 데이터의 메모리 논리 어드레스 정보를 포함함 -;
    상기 판독될 데이터의 메모리 논리 어드레스 정보에 기초하여 대응하는 메모리 물리 어드레스가 발견되지 않는다고 결정하도록; 그리고
    에러 응답 정보를 상기 메모리 제어기에 전송하도록- 상기 에러 응답 정보는 상기 판독 커맨드가 실행되는 것에 실패한다는 점을 표시함 - 추가로 구성되는 메모리.
  15. 컴퓨터 시스템으로서,
    하나 이상의 재활용될 메모리 블록의 메모리 논리 어드레스 정보를 포함하는 트림 명령어를 전송하도록 구성되는 프로세서;
    상기 프로세서에 접속되는 메모리 제어기를 포함하고, 상기 메모리 제어기는,
    상기 트림 명령어를 수신하도록; 그리고
    상기 메모리 제어기에 접속되는 매체 제어기에, 상기 매체 제어기에 접속되는 비-휘발성 메모리에서의 하나 이상의 메모리 블록을 재활용하라고 상기 매체 제어기에게 명령하는 언맵 커맨드를 전송하도록 - 상기 매체 제어기는 NVDIMM-P 프로토콜을 사용하여 상기 메모리 제어기와 통신하고, 상기 언맵 커맨드는 상기 하나 이상의 재활용될 메모리 블록의 메모리 논리 어드레스 정보를 포함함 - 구성되고;
    상기 매체 제어기는,
    상기 메모리 제어기에 의해 전송되는 언맵 커맨드를 수신하도록; 그리고
    상기 메모리 논리 어드레스 정보에 기초하여 상기 하나 이상의 메모리 블록을 재활용하도록 - 상기 하나 이상의 재활용된 메모리 블록들은 이용가능 메모리 블록들임 - 구성되고,
    상기 언맵 커맨드는 소거 모드 표시 정보를 추가로 포함하고,
    상기 매체 제어기는, 상기 소거 모드 표시 정보가 상기 하나 이상의 메모리 블록에서의 데이터를 소거하라고 명령할 때 미리 정의된 패턴을 상기 하나 이상의 메모리 블록에 기입하도록 추가로 구성되는 시스템.
  16. 제15항에 있어서, 상기 메모리 논리 어드레스 정보는 상기 하나 이상의 재활용될 메모리 블록의 시작 어드레스 및 길이 정보를 포함하고, 상기 시작 어드레스는 상기 하나 이상의 재활용될 메모리 블록의 제1 어드레스를 표시하기 위해 사용되고, 상기 길이 정보는 상기 하나 이상의 재활용될 메모리 블록의 수량을 표시하기 위해 사용되는 시스템.
  17. 삭제
  18. 제15항 내지 제16항 중 어느 한 항에 있어서, 상기 메모리 제어기는,
    상기 프로세서에 의해 전송되는 메모리 액세스 요청을 수신하도록- 상기 메모리 액세스 요청은 판독될 데이터의 메모리 논리 어드레스 정보를 포함함 -;
    상기 메모리 액세스 요청에 기초하여 판독 커맨드를 상기 매체 제어기에 전송하도록- 상기 판독 커맨드는 상기 판독될 데이터의 메모리 논리 어드레스 정보를 운반함 - 추가로 구성되고;
    상기 매체 제어기는,
    상기 판독될 데이터의 메모리 논리 어드레스 정보에 기초하여 대응하는 메모리 물리 어드레스가 발견되지 않는다고 결정하도록; 그리고
    에러 응답 정보를 상기 메모리 제어기에 전송하도록- 상기 에러 응답 정보는 상기 판독 커맨드가 실행되는 것에 실패한다는 점을 표시함 - 추가로 구성되고;
    상기 메모리 제어기는 상기 에러 응답 정보에 기초하여 판독 실패 정보를 상기 프로세서에 전송하도록 추가로 구성되는 시스템.
  19. 제15항 내지 제16항 중 어느 한 항에 있어서, 재활용의 과정에서, 상기 매체 제어기는,
    상기 메모리 논리 어드레스 정보에 기초하여 상기 하나 이상의 메모리 블록 각각의 메모리 논리 어드레스 정보와 대응하는 메모리 물리 어드레스 사이의 매핑 관계를 삭제하도록; 그리고
    상기 하나 이상의 메모리 블록의 메모리 물리 어드레스들을 메모리 유휴 리스트에 추가하도록 구성되는 시스템.
  20. 하나 이상의 컴퓨터 실행가능 명령어를 포함하는 컴퓨터 판독가능 저장 매체로서, 상기 하나 이상의 컴퓨터 실행가능 명령어가 컴퓨터 상에서 실행될 때, 상기 컴퓨터는 제1항 내지 제3항, 제5항 내지 제7항, 및 제9항 중 어느 한 항에 따른 방법을 수행하는 컴퓨터 판독가능 저장 매체.
KR1020207015217A 2017-11-07 2017-11-07 메모리 블록 복구 방법 및 디바이스 KR102517685B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/109808 WO2019090493A1 (zh) 2017-11-07 2017-11-07 内存块回收方法和装置

Publications (2)

Publication Number Publication Date
KR20200078592A KR20200078592A (ko) 2020-07-01
KR102517685B1 true KR102517685B1 (ko) 2023-04-05

Family

ID=66437532

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207015217A KR102517685B1 (ko) 2017-11-07 2017-11-07 메모리 블록 복구 방법 및 디바이스

Country Status (6)

Country Link
US (2) US20200257620A1 (ko)
EP (2) EP3696681B1 (ko)
JP (1) JP7279889B2 (ko)
KR (1) KR102517685B1 (ko)
CN (2) CN111108488B (ko)
WO (1) WO2019090493A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7159069B2 (ja) * 2019-01-29 2022-10-24 キオクシア株式会社 メモリシステムおよび制御方法
JP2021135760A (ja) * 2020-02-27 2021-09-13 キオクシア株式会社 メモリシステムおよびメモリ制御方法
CN112162701B (zh) * 2020-09-18 2023-12-22 北京浪潮数据技术有限公司 一种存储空间回收方法、装置、设备及计算机存储介质
US20220318042A1 (en) * 2021-04-01 2022-10-06 RAMScaler, Inc. Distributed memory block device storage
TWI773371B (zh) * 2021-06-09 2022-08-01 宇瞻科技股份有限公司 固態硬碟

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102047341A (zh) 2008-02-29 2011-05-04 马维尔国际贸易有限公司 用于混合非易失性固态存储系统的疲劳管理系统和方法
US20110161559A1 (en) 2009-12-31 2011-06-30 Yurzola Damian P Physical compression of data with flat or systematic pattern
CN102622310A (zh) 2011-01-30 2012-08-01 成都市华为赛门铁克科技有限公司 无效数据擦除方法、装置及系统
CN102622309A (zh) 2011-01-30 2012-08-01 成都市华为赛门铁克科技有限公司 数据安全擦除方法及装置
US20120260349A1 (en) 2011-04-08 2012-10-11 Kabushiki Kaisha Toshiba Storage device, storage system, and authentication method
JP2014232543A (ja) * 2012-06-19 2014-12-11 株式会社東芝 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
US20160299715A1 (en) 2015-04-10 2016-10-13 Kabushiki Kaisha Toshiba Storage system capable of invalidating data stored in a storage device thereof
US20170102873A1 (en) * 2015-10-07 2017-04-13 Craig Hanson Dimm ssd addressing performance techniques
US20170147258A1 (en) 2015-11-19 2017-05-25 SK Hynix Inc. Memory system and operating method thereof
JP2017157214A (ja) * 2016-03-03 2017-09-07 三星電子株式会社Samsung Electronics Co.,Ltd. インモジュール機能を遂行するメモリモジュール

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1271524C (zh) * 2003-03-19 2006-08-23 华为技术有限公司 一种静态内存管理方法
JP4515793B2 (ja) * 2004-03-11 2010-08-04 株式会社東芝 メモリカード装置およびメモリカード制御方法
US7502256B2 (en) 2004-11-30 2009-03-10 Siliconsystems, Inc. Systems and methods for reducing unauthorized data recovery from solid-state storage devices
US8108579B2 (en) 2005-03-31 2012-01-31 Qualcomm Incorporated Mechanism and method for managing data storage
JP5087954B2 (ja) * 2007-03-01 2012-12-05 横河電機株式会社 メモリ管理装置
US8407445B1 (en) * 2010-03-31 2013-03-26 Emc Corporation Systems, methods, and computer readable media for triggering and coordinating pool storage reclamation
US8949502B2 (en) * 2010-11-18 2015-02-03 Nimble Storage, Inc. PCIe NVRAM card based on NVDIMM
US10803970B2 (en) * 2011-11-14 2020-10-13 Seagate Technology Llc Solid-state disk manufacturing self test
EP2791775A1 (en) 2012-03-13 2014-10-22 Hitachi, Ltd. Storage system having nonvolatile semiconductor storage device with nonvolatile semiconductor memory
JP5659178B2 (ja) 2012-03-16 2015-01-28 株式会社東芝 不揮発性記憶装置及び不揮発性メモリの制御方法
US8938584B2 (en) * 2012-04-30 2015-01-20 Dell Products, Lp System and method to keep parity consistent in an array of solid state drives when data blocks are de-allocated
JP5586718B2 (ja) * 2012-06-19 2014-09-10 株式会社東芝 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
US9235344B2 (en) * 2012-11-28 2016-01-12 International Business Machines Corporation Identifying redundant data for disk image streaming
US9229854B1 (en) * 2013-01-28 2016-01-05 Radian Memory Systems, LLC Multi-array operation support and related devices, systems and software
CN103559138B (zh) * 2013-10-09 2016-03-30 华为技术有限公司 固态硬盘及其空间管理方法
CN103577343B (zh) * 2013-11-20 2016-04-06 华为技术有限公司 内存管理方法和装置
CN103970680A (zh) * 2014-04-28 2014-08-06 上海华为技术有限公司 内存管理方法、装置及嵌入式系统
CN103984641B (zh) * 2014-05-22 2017-12-22 华为技术有限公司 一种基于精简配置技术的存储空间回收方法及其装置
US9841902B2 (en) * 2014-11-20 2017-12-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Peripheral component interconnect express controllers configured with non-volatile memory express interfaces
JP2016206938A (ja) 2015-04-22 2016-12-08 キヤノン株式会社 情報処理システム、情報処理システムのメモリ制御方法、及びプログラム
JP2017027388A (ja) * 2015-07-23 2017-02-02 株式会社東芝 メモリシステムおよび不揮発性メモリの制御方法
US20170206165A1 (en) * 2016-01-14 2017-07-20 Samsung Electronics Co., Ltd. Method for accessing heterogeneous memories and memory module including heterogeneous memories
CN105760311B (zh) * 2016-02-17 2019-08-30 珠海全志科技股份有限公司 trim命令响应方法和系统及操作系统
US9927999B1 (en) 2016-09-09 2018-03-27 Western Digital Technologies, Inc. Trim management in solid state drives
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
CN106980541B (zh) * 2017-03-10 2019-11-19 浙江大学 一种大页内存压缩回收系统及方法
US11243899B2 (en) * 2017-04-28 2022-02-08 International Business Machines Corporation Forced detaching of applications from DMA-capable PCI mapped devices
CN107291625B (zh) * 2017-06-19 2020-06-09 济南浪潮高新科技投资发展有限公司 一种用于Nand Flash的指针式逻辑地址映射表实现方法
GB2563883B (en) 2017-06-28 2019-10-09 Advanced Risc Mach Ltd Invalidation of a target realm in a realm hierarchy
US10649967B2 (en) 2017-07-18 2020-05-12 Vmware, Inc. Memory object pool use in a distributed index and query system
US10585754B2 (en) * 2017-08-15 2020-03-10 International Business Machines Corporation Memory security protocol
US10275352B1 (en) * 2017-12-28 2019-04-30 Advanced Micro Devices, Inc. Supporting responses for memory types with non-uniform latencies on same channel

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102047341A (zh) 2008-02-29 2011-05-04 马维尔国际贸易有限公司 用于混合非易失性固态存储系统的疲劳管理系统和方法
US20110161559A1 (en) 2009-12-31 2011-06-30 Yurzola Damian P Physical compression of data with flat or systematic pattern
CN102622310A (zh) 2011-01-30 2012-08-01 成都市华为赛门铁克科技有限公司 无效数据擦除方法、装置及系统
CN102622309A (zh) 2011-01-30 2012-08-01 成都市华为赛门铁克科技有限公司 数据安全擦除方法及装置
US20120260349A1 (en) 2011-04-08 2012-10-11 Kabushiki Kaisha Toshiba Storage device, storage system, and authentication method
JP2014232543A (ja) * 2012-06-19 2014-12-11 株式会社東芝 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
US20160299715A1 (en) 2015-04-10 2016-10-13 Kabushiki Kaisha Toshiba Storage system capable of invalidating data stored in a storage device thereof
US20170102873A1 (en) * 2015-10-07 2017-04-13 Craig Hanson Dimm ssd addressing performance techniques
US20170147258A1 (en) 2015-11-19 2017-05-25 SK Hynix Inc. Memory system and operating method thereof
JP2017157214A (ja) * 2016-03-03 2017-09-07 三星電子株式会社Samsung Electronics Co.,Ltd. インモジュール機能を遂行するメモリモジュール

Also Published As

Publication number Publication date
JP7279889B2 (ja) 2023-05-23
CN111108488B (zh) 2022-05-10
KR20200078592A (ko) 2020-07-01
EP3696681B1 (en) 2023-12-20
EP4345629A2 (en) 2024-04-03
EP3696681A4 (en) 2020-10-21
JP2021501941A (ja) 2021-01-21
EP3696681A1 (en) 2020-08-19
US20230325311A1 (en) 2023-10-12
WO2019090493A1 (zh) 2019-05-16
CN113760185A (zh) 2021-12-07
CN111108488A (zh) 2020-05-05
US20200257620A1 (en) 2020-08-13
US11886333B2 (en) 2024-01-30

Similar Documents

Publication Publication Date Title
KR102517685B1 (ko) 메모리 블록 복구 방법 및 디바이스
CN107844431B (zh) 映射表更新方法、存储器控制电路单元与存储器存储装置
WO2017000658A1 (zh) 存储系统、存储管理装置、存储器、混合存储装置及存储管理方法
US11960749B2 (en) Data migration method, host, and solid state disk
TWI660346B (zh) 記憶體管理方法以及儲存控制器
CN107908571B (zh) 一种数据写入方法、闪存装置及存储设备
US11249911B2 (en) Storage device, memory system, and operating method for managing host-resident L2P map cache
US20160124639A1 (en) Dynamic storage channel
US20150081953A1 (en) Ssd (solid state drive) device
TWI698749B (zh) 資料儲存裝置與資料處理方法
US20190303226A1 (en) Semiconductor memory module and memory system including the same
US11573732B2 (en) Storage device, memory system comprising the same, and operation method thereof
CN113641597A (zh) 管理数据存储的方法及装置以及计算机可读取存储介质
KR101549569B1 (ko) 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치
CN110515861B (zh) 处理刷写命令的存储设备及其方法
US20220300185A1 (en) Storage device, storage system, and control method
TWI697778B (zh) 資料儲存裝置與資料處理方法
EP3779704B1 (en) Storage device, memory system comprising the same, and operating method thereof
US20230147477A1 (en) Storage device, memory system comprising the same, and operation method thereof
TW201604772A (zh) 資料儲存裝置及操作該資料儲存裝置的方法
KR20230139248A (ko) 메모리 컨트롤러 및 그것을 포함하는 메모리 시스템
CN116560568A (zh) 数据处理方法、存储器控制器、存储器及存储介质
CN113448487A (zh) 写入闪存管理表的计算机可读取存储介质、方法及装置
CN117008970A (zh) 指令时序确定方法、主控芯片、固态硬盘和存储介质

Legal Events

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