KR102364332B1 - 비휘발성 메모리 지속화 방법 및 컴퓨팅 디바이스 - Google Patents

비휘발성 메모리 지속화 방법 및 컴퓨팅 디바이스 Download PDF

Info

Publication number
KR102364332B1
KR102364332B1 KR1020197010570A KR20197010570A KR102364332B1 KR 102364332 B1 KR102364332 B1 KR 102364332B1 KR 1020197010570 A KR1020197010570 A KR 1020197010570A KR 20197010570 A KR20197010570 A KR 20197010570A KR 102364332 B1 KR102364332 B1 KR 102364332B1
Authority
KR
South Korea
Prior art keywords
write
memory
media
write instruction
target
Prior art date
Application number
KR1020197010570A
Other languages
English (en)
Other versions
KR20190047035A (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 KR20190047035A publication Critical patent/KR20190047035A/ko
Application granted granted Critical
Publication of KR102364332B1 publication Critical patent/KR102364332B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0637Permissions
    • 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/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/39Credit based
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System (AREA)

Abstract

본 출원은 비휘발성 메모리(NVM) 지속화 방법 및 컴퓨팅 디바이스를 개시한다. 메모리 제어기와 연관된 적어도 2개의 메모리 기입 명령어 세트 각각에 대해 크레디트 값이 구성되고, 매체 제어기와 연관된 적어도 2개의 매체 기입 명령어 세트 각각에 대해 크레디트 값이 구성되고, 크레디트 값은 기입 명령어의 송신 및 수신 상태와 실행 상태에 기초하여 변화되고, 복수의 메모리 기입 명령어 세트에 각각 대응하는 크레디트 값들은 매체 제어기에서의 복수의 특정된 매체 기입 명령어 세트에 각각 대응하는 크레디트 값들과 동기화된 채로 유지되고; 메모리 제어기 및 매체 제어기의 크레디트 값들이 동기화된 채로 유지된 후에, 기입 명령어의 지속화가 완료되었는지가 크레디트 값들에 기초하여 정확하게 발견될 수 있다. 또한, 복수의 메모리 기입 명령어 세트들을 설정하는 것은, 지속화 질의 동안 메모리 기입 명령어 세트의 입도에서 국부적 차단을 구현하여, 메모리 제어기의 병렬 처리 효율을 향상시킬 수 있다.

Description

비휘발성 메모리 지속화 방법 및 컴퓨팅 디바이스
본 발명은 컴퓨터 분야에 관한 것으로, 특히, 비휘발성 메모리(Non-Volatile Memory, NVM) 지속화 방법 및 컴퓨팅 디바이스에 관한 것이다.
데이터 지속화(data persistence)는 시스템 충돌 또는 전력 장애가 발생할 때에도 지속적 비휘발성 메모리(NVM)에 성공적으로 기입된 데이터가 손실되지 않음을 나타낸다. 예를 들어, 애플리케이션 프로그램의 데이터가 지속화 속성을 가질 때, 애플리케이션 프로그램은 NVM에 저장된 데이터에 기초하여, 시스템 충돌 또는 전력 장애가 발생한 후에 정상 실행 상태(normal running state)로 복원될 수 있다. 현재의 애플리케이션에서는, NVM이 보통 메모리로서 사용되므로, 애플리케이션 프로그램의 실행은 시스템 충돌 또는 전력 장애가 발생한 후에 메모리로부터 직접 복원될 수 있다. 그러나, NVM이 메모리로서 사용될 때, 기존의 더블 데이터 레이트(Double Data Rate, DDR) 메모리 프로토콜은 데이터 지속화 확인(data persistence confirmation)을 지원할 수 없다. 그 이유는, 기존의 DDR 메모리 프로토콜에서는, 데이터가 중앙 처리 유닛(Central Processing Unit, CPU) 캐시에 기입된 직후에 기입 명령어가 커밋(commit)되고, CPU 및 애플리케이션 프로그램은 기입 명령어의 데이터가 메모리에 실제로 기입되는지를 계속 추적하고 학습할 수 없기 때문이다.
기입 명령어의 데이터가 메모리에 기입되는지를 결정하기 위해, 지속화 확인 해결책이 현재 제안되고, 즉, PCOMMIT 명령어 및 CLFLUSH 명령어가 지속화 확인을 구현하는 데 사용된다. CLFLUSH 명령어는 CPU 캐시에 특정된 데이터를 라이트백(write back)하는 데 사용될 수 있고, 기입 명령어가 생성되어 메모리 제어기에 전송된다. PCOMMIT 명령어에 의해, 메모리 제어기 내의 모든 기입 명령어들이 메모리에 강제적으로 기입된다. PCOMMIT 명령어의 실행 프로세스에서, 메모리 제어기는 메모리 제어기 내의 모든 기입 명령어들이 메모리 칩에 전송될 때까지, 메모리 제어기에 진입하는 새로운 기입 명령어를 차단하는 것을 유지한다. 전술한 방법에 따르면, 데이터가 메모리에 성공적으로 기입되고 데이터의 지속화가 완료되었다는 것이 확인될 수 있다.
현재의 지속화 확인 해결책에서, PCOMMIT 명령어는 메모리 제어기 내의 모든 기입 명령어들에 대해 지속화 동작이 완료되도록 지시하는 데 사용된다. PCOMMIT 명령어의 실행 프로세스에서, 메모리 제어기에 진입하기 위한 모든 기입 명령어들이 차단된다. 이것은, PCOMMIT 명령어의 실행에 영향을 미치는 것을 피하기 위해, 메모리 제어기에 전송되는 새로운 기입 명령어들을 감소시킨다. 그러나, 전술한 효과가 달성되는 동안에는 모든 애플리케이션 프로그램들의 기입 명령어들이 메모리 제어기에 전송될 수 없다. 따라서, PCOMMIT 명령어를 호출하는 애플리케이션 프로그램은 다른 애플리케이션 프로그램들의 성능에 크게 영향을 미치고, 전체 시스템 실행 효율성이 낮아진다.
본 발명의 실시예들은 NVM 지속화 방법 및 컴퓨팅 디바이스를 제공하는 것이다. 메모리 기입 명령어 세트 당 최소 입도 기반으로(on a minimum granularity basis of per memory write instruction set) 국부적 차단(local blocking)이 구현되도록, 복수의 메모리 기입 명령어 세트가 설정되고, 그에 의해 메모리 제어기의 병렬 처리 효율을 향상시킨다.
제1 양태에 따르면, 본 출원은 비휘발성 메모리(NVM) 지속화 방법을 제공한다.
메모리 제어기는 적어도 2개의 메모리 기입 명령어 세트와 연관되고, 적어도 2개의 메모리 기입 명령어 세트는 메모리 제어기에 설정될 수 있다. 예를 들어, 적어도 2개의 메모리 기입 명령어 세트는 메모리 제어기의 버퍼 공간에 위치한다. 적어도 2개의 메모리 기입 명령어 세트 각각에 대해 크레디트 값(credit value)이 구성되고, 크레디트 값은 메모리 기입 명령어 세트에 진입하도록 허용되는 기입 명령어들의 양을 나타낸다. 메모리 기입 명령어 세트의 크레디트 값이 0과 동일할 때, 기입 명령어는 메모리 기입 명령어 세트에 진입하도록 허용되지 않고, 각각의 메모리 기입 명령어 세트는 최대 크레디트 값을 갖는다.
NVM은 전력 장애가 발생한 후에 여전히 데이터를 보유할 수 있는 메모리이고, NVM은 판독 전용 메모리(Read-Only Memory, ROM), 프로그램가능 판독 전용 메모리(Programmable Read-Only Memory, PROM), 전기적으로 변경가능한 판독 전용 메모리(Electrically Alterable Read-Only Memory, EAROM), 소거가능한 프로그램가능 판독 전용 메모리(Erasable Programmable Read-Only Memory, EPROM), 전기적으로 소거가능한 프로그램가능 판독 전용 메모리(Electrically Erasable Programmable Read-Only Memory, EEPROM), 또는 플래시 메모리(Flash Memory)를 포함하며, 이것으로 제한되지 않는다. NVM의 매체 제어기(medium controller)는 적어도 2개의 매체 기입 명령어 세트(medium write instruction set)와 연관되고, 적어도 2개의 매체 기입 명령어 세트는 매체 제어기에 설정될 수 있다. 예를 들어, 적어도 2개의 매체 기입 명령어 세트는 매체 제어기의 버퍼 공간에 위치한다. 적어도 2개의 매체 기입 명령어 세트 각각에 대해 크레디트 값이 구성되고, 크레디트 값은 매체 기입 명령어 세트에 진입하도록 허용되는 기입 명령어들의 양을 나타낸다. 매체 기입 명령어 세트의 크레디트 값이 0과 동일할 때, 기입 명령어는 매체 기입 명령어 세트에 진입하도록 허용되지 않고, 각각의 매체 기입 명령어 세트는 최대 크레디트 값을 갖는다. 메모리 기입 명령어 세트 및 매체 기입 명령어 세트의 데이터 구조는 큐(queue), 어레이(array), 링크된 리스트(linked list), 스택(stack), 또는 그와 유사한 것일 수 있다. 이것은 본 출원에서 제한되지 않는다.
적어도 2개의 메모리 기입 명령어 세트에서의 메모리 기입 명령어 세트들의 양은 적어도 2개의 매체 기입 명령어 세트에서의 매체 기입 명령어 세트들의 양과 동일하고, 적어도 2개의 메모리 기입 명령어 세트와 적어도 2개의 매체 기입 명령어 세트는 일대일 매핑 관계를 가지며, 서로 연관되는 메모리 기입 명령어 세트와 매체 기입 명령어 세트의 최대 크레디트 값들은 동일하다.
본 출원에서의 지속화 방법은 메모리에 기입될 데이터를 NVM에 기입하는 프로세스에 적용되고, 메모리 제어기가 먼저 기입 명령어를 수신하는 단계 - 기입 명령어는 기입될 데이터의 기입 어드레스를 포함하고, 기입 명령어는 프로세서에 의해 전송될 수 있음 - ; 메모리 제어기가 기입 어드레스에 기초하여 적어도 2개의 메모리 기입 명령어 세트로부터 타겟 메모리 기입 명령어 세트를 결정하고, 선택된 기입 명령어를 타겟 메모리 기입 명령어 세트에 저장하는 단계 - 타겟 메모리 기입 명령어 세트는 적어도 2개의 메모리 기입 명령어 세트 중 하나임 - ; 및 메모리 제어기가 타겟 메모리 기입 명령어 세트의 크레디트 값을 특정된 값만큼 감소시키는 단계 - 특정된 값은 미리 설정된 값이고, 특정된 값의 특정 값은 제한되지 않음 - 를 포함한다.
메모리 제어기는 미리 설정된 선택 규칙에 따라 적어도 2개의 메모리 기입 명령어 세트로부터 타겟 메모리 기입 명령어 세트를 선택하고, 타겟 메모리 기입 명령어 세트로부터 기입 명령어를 페치(fetch)하고, 페치된 기입 명령어를 매체 제어기에 전송할 수 있다.
매체 제어기는 기입 명령어를 수신하고, 기입 어드레스에 기초하여 적어도 2개의 매체 기입 명령어 세트로부터 타겟 매체 기입 명령어 세트를 결정하고 - 타겟 매체 기입 명령어 세트 및 타겟 메모리 기입 명령어 세트는 바인딩 관계(binding relationship)를 갖고, 타겟 매체 기입 명령어 세트는 적어도 2개의 매체 기입 명령어 세트 중 하나임 - ; 매체 제어기는 타겟 매체 기입 명령어 세트에 기입 명령어를 저장하고, 타겟 매체 기입 명령어 세트의 크레디트 값을 특정된 값만큼 감소시킨다.
매체 제어기는 미리 설정된 선택 규칙에 따라 적어도 2개의 매체 기입 명령어 세트로부터 타겟 매체 기입 명령어 세트를 선택하고, 타겟 매체 기입 명령어 세트로부터 기입 명령어를 페치할 수 있다.
매체 제어기는 기입 명령어에서 운반(carry)되는 기입 어드레스를 획득하고, 미리 설정된 어드레스 매핑 테이블에 기초하여, NVM의 것이고 기입 어드레스와 연관되는 물리 블록 어드레스를 질의(query)하고, 기입 명령어에 대응하는 기입될 데이터를 물리 블록 어드레스에 대응하는 물리 블록에 기입하고; 어드레스 매핑 테이블에서 물리 블록 어드레스가 발견되지 않으면, 즉, 물리 블록 어드레스가 할당되어 있지 않으면, 매체 제어기는 할당을 위한 물리 블록을 자유 물리 블록 리스트(free physical block list)로부터 선택하고, 어드레스 매핑 테이블에서, 선택된 물리 블록의 물리 블록 어드레스와 기입 어드레스 사이의 매핑 관계를 설정(establish)한다.
기입될 데이터가 NVM에 성공적으로 기입되는 것으로 결정한 후에, 매체 제어기는 타겟 매체 기입 명령어 세트의 크레디트 값을 특정된 값만큼 증가시키고, 매체 제어기는 타겟 매체 기입 명령어 세트의 크레디트 값을 메모리 제어기에 전송하여, 타겟 메모리 기입 명령어 세트의 크레디트 값과 타겟 매체 기입 명령어 세트의 크레디트 값이 동기화된 채로 유지되게 한다.
전술한 실시예에서, 복수의 특정된 메모리 기입 명령어 세트들에 각각 대응하는 크레디트 값들은 매체 제어기 내의 복수의 특정된 매체 기입 명령어 세트들에 각각 대응하는 크레디트 값들과 동기화된 채로 유지된다. 매체 제어기는 각각의 매체 기입 명령어 세트의 크레디트 값에 기초하여 기입 명령어의 실행 상태를 결정할 수 있고, 따라서 메모리 제어기와 매체 제어기의 크레디트 값들이 동기화된 채로 유지된 후에, 기입 명령어의 지속화가 완료되는지는 크레디트 값들에 기초하여 정확하게 발견될 수 있다. 또한, 복수의 메모리 기입 명령어 세트들을 설정하는 것은, 지속화 질의 동안 메모리 기입 명령어 세트의 입도에서 국부적 차단을 구현하여, 메모리 제어기의 병렬 처리 효율을 향상시킬 수 있다.
이 양태의 가능한 구현에서, NVM의 전체 어드레스 섹션은 복수의 비중첩 어드레스 섹션으로 미리 분할되고, 적어도 2개의 메모리 기입 명령어 세트 각각에 대해 NVM의 어드레스 섹션이 구성되고, 적어도 2개의 메모리 기입 명령어 세트 각각은 상이한 어드레스 섹션을 갖는다. 메모리 제어기가 기입 어드레스에 기초하여 적어도 2개의 메모리 기입 명령어 세트로부터 타겟 메모리 기입 명령어 세트를 결정하고, 기입 명령어를 타겟 메모리 기입 명령어 세트에 저장하고, 타겟 메모리 기입 명령어 세트의 크레디트 값을 특정된 값만큼 감소시키는 것은: 메모리 제어기에 의해, 기입 명령어에서 운반되는 기입 어드레스가 위치하는 타입 어드레스 섹션을 결정하는 것 - 타겟 어드레스 섹션은 적어도 2개의 메모리 기입 명령어 세트에 대해 각각 미리 구성되는 어드레스 섹션들 중 하나임 - ; 타겟 어드레스 섹션과 연관된 메모리 기입 명령어 세트를 타겟 메모리 기입 명령어 세트로서 사용하는 것 - 특정된 값은 1임 - ; 및 메모리 제어기에 의해, 기입 명령어를 타겟 메모리 기입 명령어 세트에 저장하고, 타겟 메모리 기입 명령어 세트의 크레디트 값을 1만큼 감소시키는 것을 포함한다. 전술한 실시예에서, 타겟 메모리 기입 명령어 세트는 기입 어드레스가 위치하는 어드레스 섹션에 기초하여 결정되고, 따라서 기입 명령어가 신속하고 정확하게 저장될 수 있어서, 처리 효율을 향상시킨다.
이 양태의 가능한 구현에서, NVM의 전체 어드레스 섹션은 복수의 비중첩 어드레스 섹션으로 미리 분할되고, 어드레스 섹션들의 양은 적어도 2개의 매체 기입 명령어 세트 내의 매체 기입 명령어 세트들의 양과 동일하고, 적어도 2개의 매체 기입 명령어 세트 각각에 대해 상이한 어드레스 섹션이 구성된다. 매체 제어기가 기입 어드레스에 기초하여 적어도 2개의 매체 기입 명령어 세트로부터 타겟 매체 기입 명령어 세트를 결정하고, 타겟 매체 기입 명령어 세트에 기입 명령어를 저장하고, 타겟 매체 기입 명령어 세트의 크레디트 값을 특정된 값만큼 감소시키는 것은: 매체 제어기에 의해, 기입 명령어에서 운반되는 기입 어드레스를 획득하고, 기입 어드레스가 위치하는 타겟 어드레스 섹션을 결정하는 것 - 타겟 어드레스 섹션은 적어도 2개의 매체 기입 명령어 세트에 대해 각각 구성되는 어드레스 섹션들 중 하나임 - ; 및 매체 제어기에 의해, 타겟 매체 기입 명령어 세트에 기입 명령어를 저장하는 것을 포함한다. 예를 들어, 타겟 매체 기입 명령어 세트의 데이터 구조가 큐인 경우, 매체 제어기는 큐의 테일(tail)에서 기입 명령어를 저장한다. 다른 예에서, 타겟 매체 기입 명령어 세트의 데이터 구조가 스택인 경우, 매체 제어기는 스택의 최상부(top)에서 기입 명령어를 저장한다. 미리 설정된 특정된 값이 1인 경우, 기입 명령어를 저장한 후에, 매체 제어기는 타겟 매체 기입 명령어 세트의 크레디트 값을 1만큼 감소시킨다. 전술한 실시예에서, 타겟 매체 기입 명령어 세트는 기입 어드레스가 속하는 타겟 어드레스 섹션을 이용하여 결정되고, 따라서 기입 명령어는 신속하고 정확하게 저장될 수 있어서, 처리 효율을 향상시킨다.
이 양태의 가능한 구현에서, 미리 설정된 명시된 값이 1인 경우, 타겟 메모리 기입 명령어 세트를 결정한 후에, 메모리 제어기는 타겟 메모리 기입 명령어 세트의 현재 크레디트 값을 획득하고; 현재 크레디트 값이 0보다 큰지를 결정하고; 결정 결과가 현재 크레디트 값이 0보다 크다는 것이면, 기입 명령어를 타겟 메모리 기입 명령어 세트에 저장하거나; 또는 결정 결과가 현재 크레디트 값이 0보다 크지 않다는 것이면, 기입 명령어를 캐싱하고, 미리 설정된 기간(period)에 기초하여 타겟 메모리 기입 명령어 세트의 크레디트 값을 질의하고, 타겟 메모리 기입 명령어 세트의 크레디트 값이 0보다 크다는 것을 발견하면, 캐싱된 기입 명령어를 타겟 메모리 기입 명령어 세트에 저장한다. 전술한 실시예에서, 메모리 제어기가 기입 명령어들을 적시에(in a timely manner) 처리할 수 없기 때문에 생기는 과부하를 피하기 위해, 메모리 제어기에 진입하는 기입 명령어들의 양은 크레디트 값을 사용하여 제어된다.
이 양태의 가능한 구현에서, 타겟 매체 기입 명령어 세트를 결정한 후에, 매체 제어기는 타겟 매체 기입 명령어 세트의 현재 크레디트 값을 획득하고; 현재 크레디트 값이 0보다 큰지를 결정하고; 결정 결과가 현재 크레디트 값이 0보다 크다는 것이면, 기입 명령어를 타겟 매체 기입 명령어 세트에 저장하거나; 또는 결정 결과가 현재 크레디트 값이 0보다 크지 않다는 것이면, 기입 명령어를 캐싱하고, 미리 설정된 기간에 기초하여 타겟 매체 기입 명령어 세트의 크레디트 값을 질의하고, 타겟 매체 기입 명령어 세트의 크레디트 값이 0보다 크다는 것을 발견하면, 캐싱된 기입 명령어를 타겟 매체 기입 명령어 세트에 저장한다. 전술한 실시예에서, 매체 제어기가 기입 명령어들을 적시에 처리할 수 없기 때문에 생기는 과부하를 피하기 위해, 매체 제어기에 진입하는 기입 명령어들의 양은 크레디트 값을 사용하여 제어된다.
이 양태의 가능한 구현에서, 메모리 제어기가 기입 어드레스를 운반하는 기입 명령어를 수신하기 전에, 방법은: NVM의 전체 어드레스 섹션을 복수의 비중첩 어드레스 섹션으로 미리 분할하는 단계를 추가로 포함하고, 어드레스 섹션들의 양은 메모리 기입 명령어 세트들의 양과 동일하고, 메모리 기입 명령어 세트들의 양은 매체 기입 명령어 세트들의 양과 동일하다. 메모리 제어기는, 라이브러리 함수를 호출함으로써, 적어도 2개의 메모리 기입 명령어 세트 각각의 어드레스 섹션을 구성하고, 여기서 각각의 메모리 기입 명령어 세트는 상이한 어드레스 섹션을 갖고; 메모리 제어기는 적어도 2개의 매체 기입 명령어 세트 각각의 어드레스 섹션을 구성하고, 여기서 각각의 매체 기입 명령어 세트는 상이한 어드레스 섹션을 갖고, 바인딩 관계를 갖는 메모리 기입 명령어 세트와 매체 기입 명령어 세트는 동일한 어드레스 섹션을 갖는다. 전술한 실시예에서, 적어도 2개의 메모리 기입 명령어 세트와 적어도 2개의 매체 기입 명령어 세트의 어드레스 섹션들은 라이브러리 함수를 호출함으로써 구성되고, 그에 따라서 타겟 메모리 기입 명령어 세트 및 타겟 매체 기입 명령어 세트는 기입 명령어의 기입 어드레스에 기초하여 결정된다.
이 양태의 가능한 구현에서, 매체 제어기가 타겟 매체 기입 명령어 세트의 크레디트 값을 메모리 제어기에 전송하는 것은, 매체 제어기에 의해, 메모리 제어기에 의해 전송된 질의 요청을 수신하는 것을 포함하고, 질의 요청은 타겟 매체 기입 명령어 세트의 크레디트 값을 질의하는 데 사용된다. 매체 제어기는 타겟 매체 기입 명령어 세트의 크레디트 값을 레지스터에 저장할 수 있고, 타겟 매체 기입 명령어 세트의 크레디트 값이 업데이트되는 것을 발견하면, 매체 제어기는 레지스터에 저장되어 있는 타겟 매체 기입 명령어 세트의 크레디트 값을 즉시 업데이트한다. 메모리 제어기는 타겟 매체 기입 명령어 세트의 크레디트 값에 관해 레지스터를 직접 질의할 수 있다. 질의 요청을 수신한 후에, 매체 제어기는 타겟 매체 기입 명령어 세트의 크레디트 값을 운반하는 질의 응답을 메모리 제어기에 전송한다.
이 양태의 가능한 구현에서, 매체 제어기가 타겟 매체 기입 명령어 세트의 크레디트 값을 메모리 제어기에 전송하는 것은, 매체 제어기에 의해, 메모리 제어기에 주기적으로 타겟 매체 기입 명령어 세트의 크레디트 값을 능동적으로 전송하는 것을 포함한다.
이 양태의 가능한 구현에서, 방법은: 메모리 제어기에 의해, 타겟 메모리 기입 명령어 세트에 대한 지속화 질의 명령어(persistence query instruction)를 수신하고, 지속화 질의 명령어의 수신 순간(receiving moment)을 획득하는 단계; 메모리 제어기에 의해, 수신 순간 이후에 타겟 메모리 기입 명령어 세트에 진입하는 기입 명령어를 차단하는 단계; 메모리 제어기에 의해, 타겟 메모리 기입 명령어 세트의 크레디트 값을 판독하는 단계; 판독한 크레디트 값이 미리 설정된 최대 값과 동일한 경우, 메모리 제어기에 의해, 타겟 메모리 기입 명령어 세트에서의 기입 명령어의 지속화가 완료되었다고 결정하는 단계를 추가로 포함한다. 전술한 실시예에서, 메모리 제어기는 지속화 질의 명령어를 수신하고, 다른 메모리 기입 명령어 세트를 차단할 필요 없이, 질의되어야 하는 메모리 기입 명령어 세트만을 차단할 필요가 있어서, 메모리 기입 명령어 세트의 입도에서의 국부적 차단이 구현되어, 메모리 제어기의 병렬 처리 효율을 향상시킨다.
이 양태의 가능한 구현에서, 메모리 제어기가 수신 순간 이후에 타겟 메모리 기입 명령어 세트에 진입하는 기입 명령어를 차단하는 것은 수신 순간 이후에 타겟 메모리 기입 명령어 세트에 진입하는 기입 명령어를 캐싱하는 것; 또는 메모리 제어기에 의해, 수신 순간에 타겟 메모리 기입 명령어 세트에 소프트웨어 뮤텍스(software mutex)를 추가하는 것을 포함한다.
이 양태의 가능한 구현에서, 방법은: 매체 제어기에 의해, 타겟 매체 기입 명령어 세트에 대한 지속화 질의 명령어를 수신하는 단계; 매체 제어기에 의해, 타겟 매체 기입 명령어 세트의 크레디트 값을 판독하는 단계; 및 판독한 크레디트 값이 미리 설정된 최대 값과 동일한 경우, 매체 제어기에 의해, 타겟 매체 기입 명령어 세트에서의 기입 명령어의 지속화 동작이 완료되었다고 결정하는 단계를 추가로 포함한다. 전술한 실시예에서, 매체 제어기는 지속화 질의 명령어를 수신하고, 다른 매체 기입 명령어 세트를 차단할 필요 없이, 질의되어야 하는 매체 기입 명령어 세트만을 차단할 필요가 있어서, 메모리 기입 명령어 세트의 입도에서의 국부적 차단이 구현되어, 메모리 제어기의 병렬 처리 효율을 향상시킨다.
제2 양태에 따르면, 본 출원은 컴퓨팅 디바이스를 추가로 제공하고, 여기서 컴퓨팅 디바이스는 메모리 제어기, 매체 제어기, 및 비휘발성 메모리(NVM)를 포함하고, 컴퓨팅 디바이스는 데이터 센터 서버, 네트워크 서버, 비디오 서버, 워크스테이션, 개인용 컴퓨터, 또는 이와 유사한 것을 포함하고, 이것으로 제한되지 않는다. 메모리 제어기는 버퍼 공간을 포함하고, 버퍼 공간은 적어도 2개의 메모리 기입 명령어 세트를 저장하는 데 사용되고, 적어도 2개의 메모리 기입 명령어 세트 각각에 대해 크레디트 값이 구성되고; 매체 제어기는 버퍼 공간을 포함하고, 버퍼 공간은 적어도 2개의 매체 기입 명령어 세트를 저장하는 데 사용되고, 매체 제어기는 적어도 2개의 매체 기입 명령어 세트와 연관되고, 적어도 2개의 매체 기입 명령어 세트 각각에 대해 크레디트 값이 구성된다. 메모리 기입 명령어 세트와 매체 기입 명령어 세트의 데이터 구조는 큐, 어레이, 스택, 링크된 리스트, 또는 이와 유사한 것일 수 있다. 이것은 본 출원에서 제한되지 않는다. 적어도 2개의 메모리 기입 명령어 세트에서의 메모리 기입 명령어 세트들의 양은 적어도 2개의 매체 기입 명령어 세트에서의 매체 기입 명령어 세트들의 양과 동일할 수 있고, 적어도 2개의 메모리 기입 명령어 세트와 적어도 2개의 매체 기입 명령어 세트는 일대일 매핑 관계를 가지며, 연관 관계를 갖는 메모리 기입 명령어 세트와 매체 기입 명령어 세트의 크레디트 값들은 동일하다.
메모리 제어기는:
기입 명령어를 수신하고 - 기입 명령어는 기입될 데이터의 기입 어드레스를 포함함 -;
기입 어드레스에 기초하여, 메모리 제어기의 버퍼 공간에 저장된 적어도 2개의 메모리 기입 명령어 세트로부터 타겟 메모리 기입 명령어 세트를 선택하고, 기입 명령어를 타겟 메모리 기입 명령어 세트에 저장하고, 타겟 메모리 기입 명령어 세트의 크레디트 값을 특정된 값만큼 감소시키고;
타겟 메모리 기입 명령어 세트에서의 기입 명령어를 매체 제어기에 전송하고;
매체 제어기에 의해 전송되는 타겟 매체 기입 명령어 세트의 크레디트 값을 수신하고; 그리고
타겟 매체 기입 명령어 세트의 크레디트 값에 기초하여 타겟 메모리 기입 명령어 세트의 크레디트 값을 업데이트하도록 구성된다.
매체 제어기는:
메모리 제어기에 의해 전송된 기입 명령어를 수신하고;
기입 어드레스에 기초하여, 매체 제어기의 버퍼 공간에 저장된 적어도 2개의 매체 기입 명령어 세트로부터 타겟 매체 기입 명령어 세트를 결정하고;
기입 명령어를 타겟 매체 기입 명령어 세트에 저장하고, 타겟 매체 기입 명령어 세트의 크레디트 값을 특정된 값만큼 감소시키고;
타겟 매체 기입 명령어 세트에서의 기입 명령어를 NVM에 전송하고, NVM이 기입 명령어를 성공적으로 실행한 후에, 타겟 매체 기입 명령어 세트의 크레디트 값을 특정된 값만큼 증가시키고; 그리고
타겟 매체 기입 명령어 세트의 크레디트 값을 메모리 제어기에 전송하도록 구성된다.
전술한 실시예에서, 복수의 특정된 메모리 기입 명령어 세트에 각각 대응하는 크레디트 값들은 복수의 특정된 매체 기입 명령어 세트에 각각 대응하는 크레디트 값들과 동기화된 채로 유지된다. 매체 제어기는 각각의 매체 기입 명령어 세트의 크레디트 값에 기초하여 기입 명령어의 실행 상태를 결정할 수 있고, 따라서 메모리 제어기와 매체 제어기의 크레디트 값들이 동기화된 채로 유지된 후에, 기입 명령어의 지속화가 완료되는지는 크레디트 값들에 기초하여 정확하게 발견될 수 있다. 또한, 복수의 메모리 기입 명령어 세트들을 설정하는 것은, 지속화 질의 동안 메모리 기입 명령어 세트의 입도에서 국부적 차단을 구현하여, 메모리 제어기의 병렬 처리 효율을 향상시킬 수 있다.
이 양태의 가능한 구현에서, 메모리 제어기는 수신기, 캐시 제어기, 복수의 카운터, 및 송신기를 추가로 포함하고, 하나의 카운터는 각각의 메모리 기입 명령어 세트에 대해 구성되고;
매체 제어기는 수신기, 캐시 제어기, 복수의 카운터, 및 송신기를 추가로 포함하고, 하나의 카운터는 각각의 매체 기입 명령어 세트에 대해 구성되고;
메모리 제어기의 수신기는 기입 어드레스를 운반하는 기입 명령어를 수신하도록 구성되고;
메모리 제어기의 캐시 제어기는, 기입 어드레스에 기초하여, 메모리 제어기의 버퍼 공간에 저장된 적어도 2개의 메모리 기입 명령어 세트로부터 타겟 메모리 기입 명령어 세트를 선택하고, 기입 명령어를 타겟 메모리 기입 명령어 세트에 저장하고, 타겟 메모리 기입 명령어 세트의 크레디트 값을 특정된 값만큼 감소시킬 것을 타겟 메모리 기입 명령어 세트에 대응하는 카운터에 지시하도록 구성되고;
메모리 제어기의 송신기는 타겟 메모리 기입 명령어 세트에서의 기입 명령어를 매체 제어기의 수신기에 전송하도록 구성되고;
메모리 제어기의 수신기는 매체 제어기의 송신기에 의해 전송되는 타겟 매체 기입 명령어 세트의 크레디트 값을 수신하도록 추가로 구성되고;
메모리 제어기의 캐시 제어기는 타겟 매체 기입 명령어 세트의 크레디트 값에 기초하여 타겟 메모리 기입 명령어 세트의 크레디트 값을 업데이트할 것을 메모리 제어기에 대응하는 카운터에 지시하도록 추가로 구성되고;
매체 제어기의 수신기는 메모리 제어기의 송신기에 의해 전송된 기입 명령어를 수신하도록 구성되고;
매체 제어기의 캐시 제어기는, 기입 어드레스에 기초하여, 매체 제어기의 버퍼 공간에 저장된 적어도 2개의 매체 기입 명령어 세트로부터 타겟 매체 기입 명령어 세트를 결정하고, 기입 명령어를 타겟 매체 기입 명령어 세트에 저장하고, 타겟 매체 기입 명령어 세트의 크레디트 값을 특정된 값만큼 감소시킬 것을 타겟 매체 기입 명령어 세트에 대응하는 카운터에 지시하도록 구성되고;
매체 제어기의 송신기는 타겟 매체 기입 명령어 세트에서의 기입 명령어를 NVM에 전송하도록 구성되고;
매체 제어기의 캐시 제어기는, NVM이 기입 명령어를 성공적으로 실행한 후에, 타겟 매체 기입 명령어 세트의 크레디트 값을 특정된 값만큼 증가시킬 것을 타겟 매체 기입 명령어 세트에 대응하는 카운터에 지시하도록 추가로 구성되고;
매체 제어기의 송신기는 타겟 매체 기입 명령어 세트의 크레디트 값을 메모리 제어기의 수신기에 전송하도록 추가로 구성된다.
이 양태의 가능한 구현에서, 적어도 2개의 메모리 기입 명령어 세트 각각에 대해 NVM의 어드레스 섹션이 구성되고;
메모리 제어기의 캐시 제어기는:
기입 어드레스가 위치하는 타겟 어드레스 섹션을 결정하고, 타겟 어드레스 섹션과 연관된 메모리 기입 명령어 세트를 타겟 메모리 기입 명령어 세트로서 사용하고; 그리고
기입 명령어를 타겟 메모리 기입 명령어 세트에 저장하고, 타겟 메모리 기입 명령어 세트의 크레디트 값을 1만큼 감소시킬 것을 타겟 메모리 기입 명령어 세트에 대응하는 카운터에 지시하도록 구성된다.
이 양태의 가능한 구현에서, 적어도 2개의 매체 기입 명령어 세트 각각에 대해 NVM의 어드레스 섹션이 구성되고;
매체 제어기의 캐시 제어기는:
기입 어드레스가 위치하는 타겟 어드레스 섹션을 결정하고, 타겟 어드레스 섹션과 연관된 매체 기입 명령어 세트를 타겟 매체 기입 명령어 세트로서 사용하고; 그리고
기입 명령어를 타겟 매체 기입 명령어 세트에 저장하고, 타겟 매체 기입 명령어 세트의 크레디트 값을 1만큼 감소시킬 것을 타겟 매체 기입 명령어 세트에 대응하는 카운터에 지시하도록 구성된다.
이 양태의 가능한 구현에서, 메모리 제어기의 캐시 제어기는:
라이브러리 함수를 호출함으로써, 적어도 2개의 메모리 기입 명령어 세트 각각의 어드레스 섹션을 구성하고, 적어도 2개의 매체 기입 명령어 세트 각각의 어드레스 섹션을 구성하도록 추가로 구성되고, 적어도 2개의 메모리 기입 명령어 세트와 적어도 2개의 매체 기입 명령어 세트는 일대일 매핑 관계를 갖고, 서로 연관되는 메모리 기입 명령어 세트와 매체 기입 명령어 세트는 동일한 어드레스 섹션을 갖는다.
이 양태의 가능한 구현에서, 매체 제어기의 송신기는:
메모리 제어기의 송신기에 의해 전송된 크레디트 값 질의 요청에 따라, 타겟 매체 기입 명령어 세트의 크레디트 값을 운반하는 질의 응답을 메모리 제어기의 수신기에 반환하도록 구성된다.
이 양태의 가능한 구현에서, 매체 제어기의 송신기는:
메모리 제어기의 수신기에 주기적으로 타겟 매체 기입 명령어 세트의 크레디트 값을 능동적으로 전송하도록 구성된다.
이 양태의 가능한 구현에서, 메모리 제어기의 캐시 제어기는:
타겟 메모리 기입 명령어 세트에 대한 지속화 질의 명령어를 수신하고, 지속화 질의 명령어의 수신 순간을 획득하고; 수신 순간 이후에 타겟 메모리 기입 명령어 세트에 진입하는 기입 명령어를 차단하고; 타겟 메모리 기입 명령어 세트에 대응하는 카운터로부터 타겟 메모리 기입 명령어 세트의 크레디트 값을 판독하고; 판독한 크레디트 값이 미리 설정된 최대 값과 동일한 경우, 타겟 메모리 기입 명령어 세트에서의 기입 명령어의 지속화가 완료되었다고 결정하도록 추가로 구성된다.
이 양태의 가능한 구현에서, 매체 제어기의 캐시 제어기는:
타겟 매체 기입 명령어 세트에 대한 수신된 지속화 질의 명령어에 따라, 타겟 매체 기입 명령어 세트에 대응하는 카운터로부터 타겟 매체 기입 명령어 세트의 크레디트 값을 판독하고; 판독한 크레디트 값이 미리 설정된 최대 값과 동일한 경우, 타겟 매체 기입 명령어 세트에서의 기입 명령어의 지속화 동작이 완료되었다고 결정하도록 추가로 구성된다.
이하에서는 실시예들을 설명하기 위해 요구되는 첨부 도면들을 간단히 설명한다.
도 1은 본 발명의 실시예에 따른 컴퓨팅 디바이스의 개략적인 구조도이다.
도 2a는 본 발명의 실시예에 따른 NVM 지속화 방법의 개략적인 흐름도이다.
도 2b 내지 도 2e는 본 발명의 실시예에 따른 메모리 제어기 및 매체 제어기의 크레디트 값들의 조정 원리의 개략도이다.
도 3은 본 발명의 실시예에 따른 컴퓨팅 디바이스의 다른 개략적인 구조도이다.
이하에서는 본 발명의 실시예들에서의 첨부 도면들을 참조하여 본 발명의 실시예들에서의 기술적 해결책들을 명확하게 설명한다.
도 1을 참조하면, 도 1은 본 발명의 실시예에 따른 컴퓨팅 디바이스의 개략적인 구조도이다. 본 발명의 이 실시예에서, 컴퓨팅 디바이스는 메모리 제어기(10), 매체 제어기(11), 및 NVM(12)을 포함하고, 컴퓨팅 디바이스는 데이터 센터 서버, 네트워크 서버, 비디오 서버, 게이트웨이 서버, 개인용 컴퓨터, 모바일 단말기, 또는 이와 유사한 것을 포함하고, 이것으로 제한되지 않는다. NVM은 전력 장애가 발생한 후에 여전히 데이터를 보유할 수 있는 메모리이고, NVM은 ROM, PROM, EAROM, EPROM, EEPROM, 또는 플래시 메모리를 포함하고, 이것으로 제한되지 않는다.
메모리 제어기(10)는 적어도 2개의 메모리 기입 명령어 세트와 연관되고, 적어도 2개의 메모리 기입 명령어 세트는 메모리 제어기에 설정될 수 있다. 예를 들어, 적어도 2개의 메모리 기입 명령어 세트는 메모리 제어기의 버퍼 공간(100)에 설정된다. 적어도 2개의 메모리 기입 명령어 세트 각각에 대해 크레디트 값이 구성되고, 크레디트 값은 메모리 기입 명령어 세트에 진입하도록 허용되는 기입 명령어들의 양을 나타낸다.
매체 제어기(11)는 적어도 2개의 매체 기입 명령어 세트와 연관되고, 적어도 2개의 매체 기입 명령어 세트는 매체 제어기에 설정될 수 있다. 예를 들어, 적어도 2개의 매체 기입 명령어 세트는 버퍼 공간(110)에 위치된다. 적어도 2개의 매체 기입 명령어 세트 각각에 대해 크레디트 값이 구성되고, 크레디트 값은 매체 기입 명령어 세트에 진입하도록 허용되는 기입 명령어들의 양을 나타낸다. 메모리 기입 명령어 세트 및 매체 기입 명령어 세트의 데이터 구조는 큐일 수 있다.
적어도 2개의 메모리 기입 명령어 세트에서의 메모리 기입 명령어 세트들의 양은 적어도 2개의 매체 기입 명령어 세트에서의 매체 기입 명령어 세트들의 양과 동일하다. 메모리 기입 명령어 세트들의 양은 n이고, 매체 기입 명령어 세트들의 양은 n이고, 여기서 n은 1보다 큰 정수인 것으로 가정한다. n개의 메모리 기입 명령어 세트들 및 n개의 매체 기입 명령어 세트들은 일대일 매핑 관계를 갖고, 하나의 메모리 기입 명령어 세트와 하나의 매체 기입 명령어 세트는 바인딩 관계를 갖는다. 초기 상태에서, n개의 메모리 기입 명령어 세트들 각각은 최대 크레디트 값을 갖고, n개의 매체 기입 명령어 세트들 각각은 최대 크레디트 값을 가지며, 바인딩 관계를 갖는 메모리 기입 명령어 세트와 매체 기입 명령어 세트는 동일한 최대 크레디트 값을 갖는다.
컴퓨팅 디바이스의 작동 프로세스는:
메모리 제어기에 의해, 기입 명령어를 수신하는 단계 - 기입 명령어는 기입될 데이터의 기입 어드레스를 포함함 -;
메모리 제어기에 의해, 기입 어드레스에 기초하여 적어도 2개의 메모리 기입 명령어 세트로부터 타겟 메모리 기입 명령어 세트를 결정하고, 기입 명령어를 타겟 메모리 기입 명령어 세트에 저장하고, 타겟 메모리 기입 명령어 세트의 크레디트 값을 특정된 값만큼 감소시키는 단계;
메모리 제어기에 의해, 타겟 메모리 기입 명령어 세트에서의 기입 명령어를 매체 제어기에 전송하는 단계;
매체 제어기에 의해, 메모리 제어기에 의해 전송된 기입 명령어를 수신하는 단계;
매체 제어기에 의해, 기입 어드레스에 기초하여 적어도 2개의 매체 기입 명령어 세트로부터 타겟 매체 기입 명령어 세트를 결정하고, 기입 명령어를 타겟 매체 기입 명령어 세트에 저장하고, 타겟 매체 기입 명령어 세트의 크레디트 값을 특정된 값만큼 감소시키는 단계;
매체 제어기에 의해, 미리 설정된 어드레스 매핑 테이블에 기초하여, 기입 어드레스와 연관되는 NVM의 물리 블록 어드레스를 질의하고, 기입 명령어에 대응하는 기입될 데이터를 물리 블록 어드레스에 대응하는 물리 블록에 기입하는 단계; 및 어드레스 매핑 테이블에서 물리 블록 어드레스가 발견되지 않으면, 즉, 물리 블록 어드레스가 할당되어 있지 않으면, 매체 제어기에 의해, 자유 물리 블록 리스트로부터 할당을 위한 물리 블록을 선택하고, 어드레스 매핑 테이블에서, 선택된 물리 블록의 물리 블록 어드레스와 기입 어드레스 사이의 매핑 관계를 설정하는 단계; 및
NVM이 기입 명령어를 성공적으로 실행하고, 기입될 데이터를 대응하는 물리 블록에 기입한 후에, 매체 제어기에 의해, 타겟 매체 기입 명령어 세트의 크레디트 값을 특정된 값만큼 증가시키고, 즉, NVM이 기입 명령어의 지속화를 완료한다는 것을 확인한 후에, 매체 제어기에 의해, 타겟 매체 기입 명령어 세트의 크레디트 값을 최대 값으로 복원하는 단계; 매체 제어기에 의해, 타겟 매체 기입 명령어 세트의 크레디트 값을 메모리 제어기에 전송하는 단계; 메모리 제어기에 의해, 매체 제어기에 의해 전송되는 타겟 매체 기입 명령어 세트의 크레디트 값을 수신하는 단계; 및 메모리 제어기에 의해, 타겟 메모리 기입 명령어 세트의 크레디트 값과 연관된 타겟 매체 기입 명령어 세트의 크레디트 값이 동기화된 채로 유지되도록, 타겟 매체 기입 명령어 세트의 크레디트 값에 기초하여 타겟 메모리 기입 명령어 세트의 크레디트 값을 업데이트하는 단계를 포함한다.
가능한 구현에서, NVM의 전체 어드레스 섹션은 복수의 비중첩 어드레스 섹션으로 미리 분할된다. 메모리 제어기와 연관된 적어도 2개의 메모리 기입 명령어 세트의 양은 복수의 어드레스 섹션의 양과 동일하고, 어드레스 섹션은 각각의 메모리 기입 명령어 세트에 할당된다. 마찬가지로, 매체 제어기와 연관된 적어도 2개의 매체 기입 명령어 세트의 양은 복수의 어드레스 섹션의 양과 동일하고, 어드레스 섹션은 각각의 매체 기입 명령어 세트에 할당된다. 이러한 방식으로, 기입 명령어를 수신할 때, 메모리 제어기 및 매체 제어기는 기입 어드레스가 속하는 어드레스 섹션에 기초하여 타겟 메모리 기입 명령어 세트 및 타겟 매체 기입 명령어 세트를 결정할 수 있다.
3개의 메모리 기입 명령어 큐가 메모리 제어기의 버퍼 공간에 설정된다: 메모리 기입 명령어 큐 1, 메모리 기입 명령어 큐 2, 및 메모리 기입 명령어 큐 3. 3개의 매체 기입 명령어 큐가 매체 제어기의 버퍼 공간에 설정된다: 매체 기입 명령어 큐 1, 매체 기입 명령어 큐 2, 및 매체 기입 명령어 큐 3. 메모리 기입 명령어 큐 1 및 매체 기입 명령어 큐 1에 할당된 어드레스 섹션은 0x90000000 내지 0x90ffffff이고, 여기서 0x90000000는 어드레스 섹션의 시작 어드레스이고, 0x90ffffff는 어드레스 섹션의 종료 어드레스이다. 메모리 기입 명령어 큐 2에 할당된 어드레스 섹션은 0x856000000 내지 0x857fffff이고, 여기서 0x856000000은 시작 어드레스이고, 0x857fffff는 종료 어드레스이다. 메모리 기입 명령어 큐 3에 할당된 어드레스 섹션은 0x65600000 내지 0x657fffff이고, 여기서 0x65600000은 시작 어드레스이고, 0x657fffff는 종료 어드레스이다.
전술한 실시예의 구현을 통해, 복수의 특정된 메모리 기입 명령어 세트들에 각각 대응하는 크레디트 값들은 복수의 특정된 매체 기입 명령어 세트들에 각각 대응하는 크레디트 값들과 동기화된 채로 유지된다. 매체 제어기는 각각의 매체 기입 명령어 세트의 크레디트 값에 기초하여 기입 명령어의 실행 상태를 결정할 수 있고, 따라서 메모리 제어기와 매체 제어기의 크레디트 값들이 동기화된 채로 유지된 후에, 기입 명령어의 지속화가 완료되는지는 크레디트 값들에 기초하여 정확하게 발견될 수 있다. 또한, 복수의 메모리 기입 명령어 세트들을 설정하는 것은, 지속화 질의 동안 메모리 기입 명령어 세트의 입도에서 국부적 차단을 구현하여, 메모리 제어기의 병렬 처리 효율을 향상시킬 수 있다.
도 2를 참조하면, 도 2는 본 발명의 실시예에 따른 비휘발성 메모리 지속화 방법의 개략적인 흐름도이다. 본 발명의 이 실시예에서, 방법은 다음의 단계들을 포함한다.
S201. 메모리 제어기는 기입 명령어를 수신한다.
구체적으로, 기입 명령어는 기입될 데이터의 기입 어드레스를 포함하고, 기입 명령어는 프로세서에 의해 전송될 수 있다. 메모리 제어기는, 어드레스 버스를 이용하여, 프로세서에 의해 전송된 기입 어드레스를 수신하고, 데이터 버스를 이용하여, 프로세서에 의해 전송된 기입될 데이터를 수신할 수 있다.
S202. 메모리 제어기는 기입 어드레스에 기초하여 적어도 2개의 메모리 기입 명령어 세트로부터 타겟 메모리 기입 명령어 세트를 결정한다.
구체적으로, 메모리 제어기는 적어도 2개의 메모리 기입 명령어 세트와 연관된다. 메모리 기입 명령어 세트는 기입 명령어를 저장하는 데 사용된다. 메모리 기입 명령어 세트의 데이터 구조는 큐, 어레이, 스택, 또는 링크된 리스트일 수 있다. 적어도 2개의 메모리 기입 명령어 세트는 메모리 제어기에 설정될 수 있다. 예를 들어, 적어도 2개의 메모리 기입 명령어 세트는 메모리 제어기의 버퍼 공간에 설정된다. 메모리 제어기는 기입 어드레스에 기초하여 적어도 2개의 메모리 기입 명령어 세트로부터 타겟 메모리 기입 명령어 세트를 결정한다.
가능한 구현에서, 메모리 제어기가 기입 어드레스에 기초하여 적어도 2개의 메모리 기입 명령어 세트로부터 타겟 메모리 기입 명령어 세트를 결정하는 것은: NVM의 전체 어드레스 섹션을 적어도 2개의 어드레스 섹션으로 미리 분할하는 것 - 분할된 어드레스 섹션들의 양은 메모리 기입 명령어 세트들의 양과 동일하고, 적어도 2개의 어드레스 섹션 각각은 하나의 메모리 기입 명령어 세트와 연관됨 - ; 및 메모리 제어기에 의해, 기입 어드레스가 속하는 어드레스 섹션을 결정하고, 기입 어드레스가 속하는 어드레스 섹션과 연관된 메모리 기입 명령어 세트를 타겟 메모리 기입 명령어 세트로서 사용하는 것을 포함한다.
예를 들어, 도 2b를 참조하면, 특정된 값이 1과 동일하고, 4개의 메모리 기입 명령어 세트가 메모리 제어기에 설정된다: 각각 5, 4, 4 및 3의 최대 크레디트 값들에 대응하는 메모리 기입 명령어 세트 1, 메모리 기입 명령어 세트 2, 메모리 기입 명령어 세트 3, 및 메모리 기입 명령어 세트 4; 4개의 매체 기입 명령어 세트가 매체 제어기에 설정된다: 매체 기입 명령어 세트 1, 매체 기입 명령어 세트 2, 매체 기입 명령어 세트 3, 및 매체 기입 명령어 세트 4. 4개의 메모리 기입 명령어 세트와 4개의 매체 기입 명령어 세트는 일대일 매핑 관계를 갖는다. 매핑 관계는 다음과 같다: 메모리 기입 명령어 세트 1이 매체 기입 명령어 세트 1과 연관되고, 메모리 기입 명령어 세트 2가 매체 기입 명령어 세트 2와 연관되고, 메모리 기입 명령어 세트 3이 매체 기입 명령어 세트 3과 연관되고, 메모리 기입 명령어 세트 4가 매체 기입 명령어 세트 4와 연관되고, 서로 연관되는 메모리 기입 명령어 세트와 매체 기입 명령어 세트의 크레디트 값들은 동일하다. 4개의 메모리 기입 명령어 세트 및 4개의 매체 기입 명령어 세트에 대해 구성되는 어드레스 섹션들 및 크레디트 값들이 표 1에 도시되어 있다.
Figure 112019037692157-pct00001
메모리 제어기는 기입 명령어를 수신한다. 기입 명령어는 기입될 데이터의 기입 어드레스 0x656033fe를 포함하고, 메모리 제어기는, 4개의 어드레스 섹션에 기초하여, 기입 어드레스가 속하는 어드레스 섹션 0x65600000 내지 0x657fffff을 결정하는 것으로 가정한다. 어드레스 섹션은 메모리 기입 명령어 세트 3에 대응하고, 메모리 기입 명령어 세트 3은 타겟 메모리 기입 명령어 세트이고, 메모리 제어기는 기입 명령어를 메모리 기입 명령어 세트 3에 저장한다.
S203. 메모리 제어기는 기입 명령어를 타겟 메모리 기입 명령어 세트에 저장하고, 타겟 메모리 기입 명령어 세트의 크레디트 값을 특정된 값만큼 감소시킨다.
구체적으로, 크레디트 값은 타겟 메모리 기입 명령어 세트에 진입하도록 허용되는 기입 명령어들의 양을 나타낸다. 타겟 메모리 기입 명령어 세트의 크레디트 값이 미리 설정된 값보다 작은 경우, 기입 명령어가 타겟 메모리 기입 명령어 세트에 진입하도록 허용되지 않는다. 타겟 메모리 기입 명령어 세트는 최대 크레디트 값을 가지며, 최대 값은 타겟 메모리 기입 명령어 세트에 진입하도록 허용되는 기입 명령어들의 최대 양을 나타낸다. 메모리 제어기는 기입 명령어를 타겟 메모리 기입 명령어 세트에 저장한다. 예를 들어, 타겟 메모리 기입 명령어 세트의 데이터 구조가 큐인 경우, 메모리 제어기는 타겟 메모리 기입 명령어 세트의 큐의 테일에서 기입 명령어를 저장하거나; 또는 타겟 메모리 기입 명령어 세트의 데이터 구조가 스택인 경우, 메모리 제어기는 타겟 메모리 기입 명령어 세트의 스택의 최상부에서 기입 명령어를 저장한다. 메모리 제어기는 기입 명령어를 타겟 메모리 기입 명령어 세트에 저장하고, 이어서 메모리 기입 명령어 세트의 크레디트 값을 특정된 값만큼 감소시킨다. 특정된 값의 특정 값은 제한되지 않고, 필요에 따라 설정될 수 있다.
전술한 예의 계속으로서, 도 2c를 참조하면, 메모리 제어기는 메모리 기입 명령어 세트 3의 크레디트 값 4를 1만큼 감소시키고, 메모리 기입 명령어 세트 3의 업데이트된 크레디트 값은 3이다.
S204. 메모리 제어기는 타겟 메모리 기입 명령어 세트로부터 기입 명령어를 페치한다.
구체적으로, 메모리 제어기는 미리 설정된 선택 규칙에 따라 적어도 2개의 메모리 기입 명령어 세트로부터 메모리 기입 명령어 세트를 선택할 수 있다. 선택된 메모리 기입 명령어 세트가 S203에서의 타겟 메모리 기입 명령어 세트일 때, 그리고 S203에서의 기입 명령어가 페치 순간에 도달했을 때, 메모리 제어기는 타겟 메모리 기입 명령어 세트로부터 기입 명령어를 페치한다. 선택 규칙은: 랜덤 선택, 메모리 기입 명령어 세트의 수에 기초한 폴링, 메모리 기입 명령어 세트의 우선순위에 기초한 폴링, 또는 이와 유사한 것일 수 있다.
S205. 메모리 제어기는 기입 명령어를 매체 제어기에 전송한다.
기입 명령어는 기입될 데이터의 기입 어드레스를 운반한다.
S206. 매체 제어기는 기입 명령어에서 운반되는 기입 어드레스에 기초하여 적어도 2개의 매체 기입 명령어 세트로부터 타겟 매체 기입 명령어 세트를 결정한다.
구체적으로, 매체 기입 명령어 세트는 기입 명령어를 저장하는 데 사용된다. 매체 기입 명령어 세트의 데이터 구조는 큐, 링크된 리스트, 어레이, 또는 스택을 포함하고, 이것으로 제한되지 않으며, 적어도 2개의 매체 기입 명령어 세트는 매체 제어기에 설정될 수 있다. 예를 들어, 적어도 2개의 매체 기입 명령어 세트는 매체 제어기의 버퍼 공간에 설정된다. 매체 제어기는 기입 명령어에서 운반되는 기입 어드레스에 기초하여 적어도 2개의 매체 기입 명령어 세트로부터 타겟 매체 기입 명령어 세트를 결정한다.
가능한 구현에서, 매체 제어기에 의해 타겟 매체 기입 명령어 세트를 결정하기 위한 방법은: NVM의 전체 어드레스 섹션을 적어도 2개의 연속적이고 비중첩인 어드레스 섹션으로 분할하는 단계 - 적어도 2개의 어드레스 섹션 각각은 하나의 매체 기입 명령어 세트와 연관되고, 적어도 2개의 매체 기입 명령어 세트 내의 매체 기입 명령어 세트들의 양은 적어도 2개의 메모리 기입 명령어 세트 내의 메모리 기입 명령어 세트들의 양과 동일하고, 서로 연관되는 메모리 기입 명령어 세트 및 매체 기입 명령어 세트에 대해 구성된 어드레스 섹션들은 동일함 - ; 및 매체 제어기에 의해, 기입 어드레스가 속하는 어드레스 섹션을 결정하고, 기입 어드레스가 속하는 섹션에 대응하는 매체 기입 명령어 세트를 타겟 매체 기입 명령어 세트로서 사용하는 단계일 수 있다.
전술한 예의 계속으로서, 도 2c를 참조하면, 메모리 제어기는 메모리 기입 명령어 세트 3으로부터 기입 명령어를 페치하고, 기입 명령어를 매체 제어기에 전송한다. 매체 제어기는, 기입 명령어의 기입 어드레스 0x656033fe에 기초하여, 기입 어드레스가 속하는 어드레스 섹션 0x65600000 내지 0x657fffff을 결정한다. 어드레스 섹션은 매체 기입 명령어 세트 3에 대응하고, 매체 기입 명령어 세트 3은 타겟 매체 기입 명령어 세트이고, 매체 제어기는 기입 명령어를 매체 기입 명령어 세트 3에 저장한다.
S207. 매체 제어기는 기입 명령어를 타겟 매체 기입 명령어 세트에 저장하고, 타겟 매체 기입 명령어 세트의 크레디트 값을 특정된 값만큼 감소시킨다.
구체적으로, 크레디트 값은 타겟 매체 기입 명령어 세트에 진입하도록 허용되는 기입 명령어들의 양을 나타낸다. 타겟 매체 기입 명령어 세트의 크레디트 값이 미리 설정된 값보다 작은 경우, 기입 명령어는 타겟 매체 기입 명령어 세트에 진입하도록 허용되지 않는다. 타겟 매체 기입 명령어 세트는 최대 크레디트 값을 가지며, 최대 값은 타겟 매체 기입 명령어 세트에 진입하도록 허용되는 기입 명령어들의 최대 양을 나타낸다. 연관 관계를 갖는 메모리 기입 명령어 세트와 매체 기입 명령어 세트의 최대 크레디트 값들이 동일하기 때문에, 타겟 메모리 기입 명령어 세트 및 타겟 매체 기입 명령어 세트의 최대 크레디트 값들은 동일하다. 타겟 매체 기입 명령어 세트의 데이터 구조는 어레이, 링크된 리스트, 큐, 또는 스택을 포함하고, 이것으로 제한되지 않는다. 매체 제어기는 기입 명령어를 타겟 매체 기입 명령어 세트에 저장하고, 이어서 타겟 매체 기입 명령어 세트의 크레디트 값을 특정된 값만큼 감소시킨다. 특정된 값의 특정 값은 제한되지 않고, 필요에 따라 설정될 수 있다.
전술한 예의 계속으로서, 도 2c를 참조하면, 매체 제어기는 기입 명령어를 매체 기입 명령어 세트 3에 저장하고, 매체 제어기는 매체 기입 명령어 세트 3의 크레디트 값 4를 1만큼 감소시키고, 매체 기입 명령어 세트 3의 업데이트된 크레디트 값은 3이다.
S208. 매체 제어기는 타겟 매체 기입 명령어 세트로부터 기입 명령어를 페치한다.
구체적으로, 매체 제어기는 미리 설정된 선택 규칙에 따라 적어도 2개의 매체 기입 명령어 세트로부터 하나의 매체 기입 명령어 세트를 선택할 수 있다. 선택된 매체 기입 명령어 세트가 S207에서의 타겟 매체 기입 명령어 세트일 때, 그리고 S207에서의 타겟 매체 기입 명령어 세트에서 기입 명령어를 페치하기 위한 순간에 도달했을 때, 매체 제어기는 타겟 매체 기입 명령어 세트로부터 기입 명령어를 페치한다. 적어도 2개의 매체 기입 명령어 세트로부터 매체 기입 명령어 세트를 선택하기 위한 선택 규칙은: 랜덤 선택, 매체 기입 명령어 세트의 수에 기초한 폴링, 또는 매체 기입 명령어 세트의 우선순위에 기초한 폴링일 수 있다.
S209. 매체 제어기는 기입 명령어를 NVM에 전송한다.
구체적으로, 매체 제어기는 기입 명령어에서 운반되는 기입 어드레스를 획득하고, 미리 설정된 어드레스 매핑 테이블에 기초하여 기입 어드레스를 물리 블록 어드레스로 변환하고, 매체 제어기는 물리 블록 어드레스를 운반하는 기입 명령어를 NVM에 전송한다.
S210. NVM은 지속화 동작을 완료하기 위해 기입 명령어를 실행한다.
구체적으로, NVM은 기입될 데이터를 물리 블록 어드레스가 가리키는 물리 블록에 기입하고, 기입될 데이터가 기입된 후에, 지속화 동작이 완료된다.
S211. NVM은 매체 제어기에 응답 메시지를 반환하고, 여기서 응답 메시지는 기입 명령어의 지속화 동작이 NVM에서 완료되었다는 것을 매체 제어기에 통지하는 데 사용된다.
S212. 매체 제어기는 타겟 매체 기입 명령어 세트의 크레디트 값을 특정된 값만큼 증가시킨다.
기입 명령어의 지속화 동작이 NVM에서 완료되었다고 결정하면, 매체 제어기는 타겟 매체 기입 명령어 세트의 크레디트 값을 특정된 값만큼 증가시킨다. 이러한 방식으로, 기입 명령어가 타겟 매체 기입 명령어 세트에 진입하고 나서 크레디트 값이 특정된 값만큼 감소하는 S207 이후에, 그리고 기입 명령어의 지속화 동작이 완료되고 나서 타겟 매체 기입 명령어 세트의 크레디트 값이 특정된 값만큼 증가한 후에, 타겟 매체 기입 명령어 세트의 크레디트 값은 최대 값으로 복원된다.
전술한 예의 계속으로서, 도 2d를 참조하면, 매체 제어기는 매체 기입 명령어 세트 3으로부터 기입 명령어를 페치하고, 기입 명령어를 NVM에 전송한다. NVM은 미리 설정된 어드레스 매핑 테이블에 기초하여 기입 어드레스를 물리 블록 어드레스에 매핑하고, 기입될 데이터를 물리 블록 어드레스에 대응하는 물리 블록에 기입한다. NVM이 지속화 동작을 완료하기 위해 기입될 데이터를 물리 블록에 성공적으로 기입한 후에, NVM은 응답 메시지를 매체 제어기에 반환할 수 있다. 기입 명령어의 지속화 동작이 완료되었다고 결정한 후에, 매체 제어기는 매체 기입 명령어 세트 3의 크레디트 값을 1만큼 증가시키고, 그러면 매체 기입 명령어 세트 3의 크레디트 값은 4가 된다.
S213. 타겟 메모리 기입 명령어 세트의 크레디트 값을 타겟 매체 기입 명령어 세트의 크레디트 값과 동기화한다.
구체적으로, 크레디트 값들을 동기화하기 위한 방법은, 메모리 제어기에 의해, 미리 설정된 기간에 기초하여 타겟 매체 기입 명령어 세트의 크레디트 값에 대해 매체 제어기에 능동적으로 질의하는 단계 - 타겟 매체 기입 명령어 세트의 크레디트 값은 매체 제어기의 레지스터에 저장될 수 있고, 메모리 제어기는 발견된 크레디트 값에 기초하여, 타겟 메모리 기입 명령어 세트의 크레디트 값을 업데이트함 -; 또는 매체 제어기에 의해, 메모리 제어기가 통지된 크레디트 값에 기초하여 타겟 메모리 기입 명령어 세트의 크레디트 값을 업데이트하도록, 타겟 매체 기입 명령어 세트의 크레디트 값이 업데이트되었다는 것을 메모리 제어기에 능동적으로 통지하는 단계; 또는 타겟 매체 기입 명령어 세트의 크레디트 값을 기입 명령어의 응답 메시지에 추가하는 단계일 수 있다.
전술한 예의 계속으로서, 도 2e를 참조하면, 매체 제어기는 매체 기입 명령어 세트 3의 업데이트된 크레디트 값 4를 메모리 제어기에 전송하고, 메모리 제어기는 매체 기입 명령어 세트 3의 크레디트 값 4에 기초하여 메모리 기입 명령어 세트 3의 크레디트 값을 4로 업데이트한다.
선택적으로, 미리 설정된 특정된 값이 1인 경우, 타겟 메모리 기입 명령어 세트를 결정한 후에, 메모리 제어기는 타겟 메모리 기입 명령어 세트의 현재 크레디트 값을 획득하고, 현재 크레디트 값이 0보다 큰지를 결정하고; 결정 결과가 현재 크레디트 값이 0보다 크다는 것이면, 기입 명령어를 타겟 메모리 기입 명령어 세트에 저장하거나; 또는 결정 결과가 현재 크레디트 값이 0보다 크지 않다는 것이면, 기입 명령어를 캐싱하고, 미리 설정된 기간에 기초하여 타겟 메모리 기입 명령어 세트의 크레디트 값을 질의하고, 타겟 메모리 기입 명령어 세트의 크레디트 값이 0보다 크다는 것을 발견하면, 캐싱된 기입 명령어를 타겟 메모리 기입 명령어 세트에 저장한다. 전술한 실시예에서, 메모리 제어기가 기입 명령어들을 적시에 처리할 수 없기 때문에 생기는 과부하를 피하기 위해, 메모리 제어기에 진입하는 기입 명령어들의 양은 크레디트 값을 사용하여 제어된다.
선택적으로, 타겟 매체 기입 명령어 세트를 결정한 후에, 매체 제어기는 타겟 매체 기입 명령어 세트의 현재 크레디트 값을 획득하고, 현재 크레디트 값이 0보다 큰지를 결정하고; 결정 결과가 현재 크레디트 값이 0보다 크다는 것이면, 기입 명령어를 타겟 매체 기입 명령어 세트에 저장하거나; 또는 결정 결과가 현재 크레디트 값이 0보다 크지 않다는 것이면, 기입 명령어를 캐싱하고, 미리 설정된 기간에 기초하여 타겟 메모리 기입 명령어 세트의 크레디트 값을 질의하고, 타겟 매체 기입 명령어 세트의 크레디트 값이 0보다 크다는 것을 발견하면, 캐싱된 기입 명령어를 타겟 매체 기입 명령어 세트에 저장한다. 전술한 실시예에서, 매체 제어기가 기입 명령어들을 적시에 처리할 수 없기 때문에 생기는 과부하를 피하기 위해, 매체 제어기에 진입하는 기입 명령어들의 양은 크레디트 값을 사용하여 제어된다.
선택적으로, 본 출원의 비휘발성 메모리 지속화 방법은:
메모리 제어기에 의해, 타겟 메모리 기입 명령어 세트에 대한 지속화 질의 명령어를 수신하고, 지속화 질의 명령어의 수신 순간을 획득하는 단계;
메모리 제어기에 의해, 수신 순간 이후에 타겟 메모리 기입 명령어 세트에 진입(enter)하는 기입 명령어를 차단하는 단계;
메모리 제어기에 의해, 타겟 메모리 기입 명령어 세트의 크레디트 값을 판독하는 단계; 및
판독한 크레디트 값이 미리 설정된 최대 값과 동일한 경우, 메모리 제어기에 의해, 타겟 메모리 기입 명령어 세트에서의 기입 명령어의 지속화가 완료되었다고 결정하는 단계를 추가로 포함한다.
구체적으로, 메모리 제어기는 타겟 메모리 기입 명령어 세트에 대한 지속화 질의 명령어를 수신한다. 지속화 질의 명령어는 프로세서에 의해 전송될 수 있고, 지속화 질의 명령어는 CPU 명령어 또는 호출 함수일 수 있다. CPU 명령어 또는 호출 함수는 타겟 메모리 기입 명령어 세트의 식별자를 운반한다. 지속화 질의 명령어를 수신하는 수신 순간 이후에, 메모리 제어기는, 타겟 메모리 기입 명령어 세트에 진입하는 기입 명령어를 차단한다. 메모리 제어기는 적어도 2개의 타겟 메모리 기입 명령어 세트 내의 타겟 메모리 기입 명령어 세트와 상이한 다른 메모리 기입 명령어 세트에 대해 차단 동작을 수행하지 않는다. 메모리 제어기는 타겟 메모리 기입 명령어 세트의 크레디트 값을 판독한다. 판독한 크레디트 값이 미리 설정된 최대 값과 동일한 경우, 그것은 타겟 메모리 기입 명령어 세트에서의 기입 명령어가 크레디트 값을 점유하지 않으며, 타겟 메모리 기입 명령어 세트에서의 기입 명령어의 지속화 동작이 완료되었다는 것을 나타낸다.
전술한 예의 계속으로서, 도 2e를 참조하면, 메모리 제어기가 메모리 기입 명령어 세트 3에 대한 지속 질의 명령어를 수신할 때, 메모리 제어기는 지속화 질의 명령어의 수신 순간 t0을 획득하고, 메모리 제어기는 순간 t0 이후에 메모리 기입 명령어 세트 3에 진입하는 기입 명령어를 차단한다. 차단 방법은 순간 t0 이후에 메모리 기입 명령어 세트 3에 진입하는 기입 명령어를 캐싱하는 단계; 또는 메모리 기입 명령어 세트 3에 소프트 뮤텍스(soft mutex)를 추가하는 단계 - 기입 명령어는 메모리 기입 명령어 세트들 1, 2 및 4에 여전히 정상적으로 진입할 수 있음 - 일 수 있다. 메모리 제어기가 메모리 기입 명령어 세트 3의 크레디트 값을 획득하고, 메모리 기입 명령어 세트 3의 크레디트 값이 4의 최대 값과 동일하다고 발견하면, 메모리 제어기는 메모리 기입 명령어 세트 3 내의 기입 명령어가 크레디트 값을 점유하지 않고, 메모리 기입 명령어 세트 3의 지속화 동작이 완료되었다는 것을 결정한다.
다른 예를 들어, 매체 제어기가 매체 기입 명령어 세트 3에 대한 지속화 질의 명령어를 수신하고, 매체 기입 명령어 세트 3의 크레디트 값을 획득하고, 매체 기입 명령어 세트 3의 크레디트 값이 4의 최대 값과 동일하다고 발견하면, 매체 기입 명령어 세트 3 내의 기입 명령어는 크레디트 값을 점유하지 않고, 매체 기입 명령어 세트 3에서의 기입 명령어의 지속화 동작이 완료된다.
선택적으로, 메모리 제어기에 의해, 수신 순간 이후에 타겟 메모리 기입 명령어 세트에 진입하는 기입 명령어를 차단하는 것은:
메모리 제어기에 의해, 수신 순간 이후에 타겟 메모리 기입 명령어 세트에 진입하는 기입 명령어를 캐싱하는 것; 또는
메모리 제어기에 의해, 수신 순간에 타겟 메모리 기입 명령어 세트에 소프트웨어 뮤텍스를 추가하는 것을 포함한다.
구체적으로, 메모리 제어기에 의해, 수신 순간 이후에 타겟 메모리 기입 명령어 세트에 진입하는 기입 명령어를 차단하기 위한 방법은: 메모리 제어기에 의해, 수신 순간 이후에 타겟 메모리 기입 명령어 세트에 진입하는 기입 명령어를 캐싱하고, 타겟 메모리 기입 명령어 세트의 크레디트 값이 미리 설정된 최대 값과 동일하다고 결정하면, 메모리 제어기에 의해, 캐싱된 기입 명령어를 타겟 메모리 기입 명령어 세트에 전송하는 단계; 또는 메모리 제어기에 의해, 타겟 메모리 기입 명령어 세트에 진입하는 기입 명령어를 차단하기 위해, 타겟 메모리 기입 명령어 세트에 소프트 뮤텍스를 추가하는 단계를 포함한다.
선택적으로, 본 출원의 비휘발성 메모리 지속화 방법은:
매체 제어기에 의해, 타겟 매체 기입 명령어 세트에 대한 지속화 질의 명령어를 수신하는 단계;
매체 제어기에 의해, 타겟 매체 기입 명령어 세트의 크레디트 값을 판독하는 단계; 및
판독한 크레디트 값이 미리 설정된 최대 값과 동일한 경우, 매체 제어기에 의해, 타겟 매체 기입 명령어 세트에서의 기입 명령어의 지속화 동작이 완료되었다고 결정하는 단계를 추가로 포함한다.
구체적으로, 매체 제어기는 타겟 매체 기입 명령어 세트에 대한 지속화 질의 명령어를 수신하고, 여기서 지속화 질의 명령어는 프로세서에 의해 전송될 수 있고, 지속화 질의 명령어는 CPU 명령어 또는 호출 함수일 수 있고, CPU 명령어 또는 호출 함수는 타겟 매체 기입 명령어 세트의 식별자를 운반한다. 매체 제어기는 타겟 매체 기입 명령어 세트의 크레디트 값을 판독하고, 판독한 크레디트 값이 미리 설정된 최대 값과 동일한 경우, 그것은 타겟 매체 기입 명령어 세트에서의 기입 명령어가 크레디트 값을 점유하지 않으며, 타겟 매체 기입 명령어 세트에서의 기입 명령어의 지속화 동작이 완료되었다는 것을 나타낸다.
전술한 실시예에서, 복수의 특정된 메모리 기입 명령어 세트에 각각 대응하는 크레디트 값들은 복수의 특정된 매체 기입 명령어 세트에 각각 대응하는 크레디트 값들과 동기화된 채로 유지된다. 매체 제어기는 각각의 매체 기입 명령어 세트의 크레디트 값에 기초하여 기입 명령어의 실행 상태를 결정할 수 있고, 따라서 메모리 제어기와 매체 제어기의 크레디트 값들이 동기화된 채로 유지된 후에, 기입 명령어의 지속화가 완료되는지는 크레디트 값들에 기초하여 정확하게 발견될 수 있다. 또한, 복수의 메모리 기입 명령어 세트들을 설정하는 것은, 지속화 질의 동안 메모리 기입 명령어 세트의 입도에서 국부적 차단을 구현하여, 메모리 제어기의 병렬 처리 효율을 향상시킬 수 있다.
도 3을 참조하면, 도 3은 본 출원의 실시예에 따른 컴퓨팅 디바이스의 다른 개략적인 구조도이다. 이 실시예에서, 컴퓨팅 디바이스는 메모리 제어기(10), 매체 제어기(11), 및 NVM(12)을 포함한다. 메모리 제어기(10)는 버퍼 공간(100), 수신기(101), 캐시 제어기(102), n개의 카운터, 및 송신기(103)를 포함하고, 여기서 n개의 메모리 기입 명령어 세트는 버퍼 공간(100)에 설정되고, 각각의 메모리 기입 명령어 세트에 대해 하나의 카운터가 구성되고, n은 1보다 큰 정수이다.
매체 제어기(11)는 버퍼 공간(110), 수신기(111), 캐시 제어기(112), n개의 카운터, 및 송신기(113)를 포함하고, 여기서 n개의 매체 기입 명령어 세트는 버퍼 공간(110)에 설정되고, 각각의 매체 기입 명령어 세트에 대해 하나의 카운터가 구성된다.
NVM(12)의 전체 어드레스 섹션은 n개의 어드레스 섹션으로 분할되고, n개의 메모리 기입 명령어 세트와 n개의 어드레스 섹션은 일대일 매핑 관계를 갖고, n개의 매체 기입 명령어 세트와 n개의 어드레스 섹션은 일대일 매핑 관계를 갖는다.
메모리 제어기(10) 및 매체 제어기(11)에 포함된 컴포넌트들은 주문형 집적 회로(영어: Application-Specific Integrated Circuit, 줄여서 ASIC)를 이용하여 구현될 수 있거나, 또는 프로그래머블 로직 디바이스(영어: Programmable Logic Device, 줄여서 PLD)를 이용하여 구현될 수 있다는 점에 유의해야 한다. PLD는 복잡한 프로그래머블 로직 디바이스(영어: Complex Programmable Logic Device, 줄여서 CPLD), FPGA, 또는 일반 어레이 로직(영어: Generic Array Logic, 줄여서 GAL), 또는 이들의 임의의 조합일 수 있다.
컴퓨팅 디바이스의 작동 프로세스는 다음을 포함한다:
메모리 제어기(10)의 수신기(101)는 기입 어드레스를 운반하는 기입 명령어를 수신하도록 구성되고;
메모리 제어기(10)의 캐시 제어기(102)는: 기입 어드레스에 기초하여, 메모리 제어기의 버퍼 공간에 저장된 적어도 2개의 메모리 기입 명령어 세트로부터 타겟 메모리 기입 명령어 세트를 선택하고, 기입 명령어를 타겟 메모리 기입 명령어 세트에 저장하고, 타겟 메모리 기입 명령어 세트의 크레디트 값을 특정된 값만큼 감소시킬 것을 타겟 메모리 기입 명령어 세트에 대응하는 카운터에 지시하도록 구성되고;
메모리 제어기(10)의 송신기(103)는 타겟 메모리 기입 명령어 세트에서의 기입 명령어를 매체 제어기의 수신기에 전송하도록 구성되고;
메모리 제어기(10)의 수신기(101)는 매체 제어기의 송신기에 의해 전송되는 타겟 매체 기입 명령어 세트의 크레디트 값을 수신하도록 추가로 구성되고;
메모리 제어기(10)의 캐시 제어기(102)는 타겟 매체 기입 명령어 세트의 크레디트 값에 기초하여 타겟 메모리 기입 명령어 세트의 크레디트 값을 업데이트할 것을 메모리 제어기에 대응하는 카운터에 지시하도록 추가로 구성되고;
매체 제어기(11)의 수신기(111)는 메모리 제어기의 송신기에 의해 전송된 기입 명령어를 수신하도록 구성되고;
매체 제어기(11)의 캐시 제어기(112)는, 기입 어드레스에 기초하여, 매체 제어기의 버퍼 공간에 저장된 적어도 2개의 매체 기입 명령어 세트로부터 타겟 매체 기입 명령어 세트를 결정하고, 기입 명령어를 타겟 매체 기입 명령어 세트에 저장하고, 타겟 매체 기입 명령어 세트의 크레디트 값을 특정된 값만큼 감소시킬 것을 타겟 매체 기입 명령어 세트에 대응하는 카운터에 지시하도록 구성되고;
매체 제어기(11)의 송신기(113)는 타겟 매체 기입 명령어 세트에서의 기입 명령어를 NVM(12)에 전송하도록 구성되고;
매체 제어기(11)의 캐시 제어기(112)는 NVM이 기입 명령어를 성공적으로 실행한 후에, 타겟 매체 기입 명령어 세트의 크레디트 값을 특정된 값만큼 증가시킬 것을 타겟 매체 기입 명령어 세트에 대응하는 카운터에 지시하도록 추가로 구성되고;
매체 제어기(11)의 송신기(113)는 타겟 매체 기입 명령어 세트의 크레디트 값을 메모리 제어기의 수신기에 전송하도록 추가로 구성된다.
가능한 구현에서, 적어도 2개의 메모리 기입 명령어 세트 각각에 대해 NVM의 어드레스 섹션이 구성된다.
메모리 제어기(10)의 캐시 제어기(102)는:
기입 어드레스가 위치하는 타겟 어드레스 섹션을 결정하고, 타겟 어드레스 섹션과 연관된 메모리 기입 명령어 세트를 타겟 메모리 기입 명령어 세트로서 사용하고; 그리고
기입 명령어를 타겟 메모리 기입 명령어 세트에 저장하고, 타겟 메모리 기입 명령어 세트의 크레디트 값을 1만큼 감소시킬 것을 타겟 메모리 기입 명령어 세트에 대응하는 카운터에 지시하도록 구성된다.
가능한 구현에서, 적어도 2개의 매체 기입 명령어 세트 각각에 대해 NVM의 어드레스 섹션이 구성된다.
매체 제어기(11)의 캐시 제어기(112)는:
기입 어드레스가 위치하는 타겟 어드레스 섹션을 결정하고, 타겟 어드레스 섹션과 연관된 매체 기입 명령어 세트를 타겟 매체 기입 명령어 세트로서 사용하고; 그리고
기입 명령어를 타겟 매체 기입 명령어 세트에 저장하고, 타겟 매체 기입 명령어 세트의 크레디트 값을 1만큼 감소시킬 것을 타겟 매체 기입 명령어 세트에 대응하는 카운터에 지시하도록 구성된다.
가능한 구현에서, 메모리 제어기(10)의 캐시 제어기(102)는:
라이브러리 함수를 호출함으로써, 적어도 2개의 메모리 기입 명령어 세트 각각의 어드레스 섹션을 구성하고, 적어도 2개의 매체 기입 명령어 세트 각각의 어드레스 섹션을 구성하도록 추가로 구성되고, 적어도 2개의 메모리 기입 명령어 세트와 적어도 2개의 매체 기입 명령어 세트는 일대일 매핑 관계를 갖고, 서로 연관되는 메모리 기입 명령어 세트와 매체 기입 명령어 세트는 동일한 어드레스 섹션을 갖는다.
가능한 구현에서, 매체 제어기(11)의 송신기(113)는:
메모리 제어기의 송신기에 의해 전송된 크레디트 값 질의 요청에 따라, 타겟 매체 기입 명령어 세트의 크레디트 값을 운반하는 질의 응답을 메모리 제어기의 수신기에 반환하도록 구성된다.
가능한 구현에서, 매체 제어기(11)의 송신기(113)는:
메모리 제어기의 수신기에 주기적으로 타겟 매체 기입 명령어 세트의 크레디트 값을 능동적으로 전송하도록 구성된다.
가능한 구현에서, 메모리 제어기(10)의 캐시 제어기(102)는:
타겟 메모리 기입 명령어 세트에 대한 지속화 질의 명령어를 수신하고, 지속화 질의 명령어의 수신 순간을 획득하고; 수신 순간 이후에 타겟 메모리 기입 명령어 세트에 진입하는 기입 명령어를 차단하고; 타겟 메모리 기입 명령어 세트에 대응하는 카운터로부터 타겟 메모리 기입 명령어 세트의 크레디트 값을 판독하고; 판독한 크레디트 값이 미리 설정된 최대 값과 동일한 경우, 타겟 메모리 기입 명령어 세트에서의 기입 명령어의 지속화가 완료되었다고 결정하도록 추가로 구성된다.
가능한 구현에서, 매체 제어기(11)의 캐시 제어기(112)는:
타겟 매체 기입 명령어 세트에 대한 수신된 지속화 질의 명령어에 따라, 타겟 매체 기입 명령어 세트에 대응하는 카운터로부터 타겟 매체 기입 명령어 세트의 크레디트 값을 판독하고; 판독한 크레디트 값이 미리 설정된 최대 값과 동일한 경우, 타겟 매체 기입 명령어 세트에서의 기입 명령어의 지속화 동작이 완료되었다고 결정하도록 추가로 구성된다.
전술한 실시예에서, 복수의 특정된 메모리 기입 명령어 세트에 각각 대응하는 크레디트 값들은 복수의 특정된 매체 기입 명령어 세트에 각각 대응하는 크레디트 값들과 동기화된 채로 유지된다. 매체 제어기는 각각의 매체 기입 명령어 세트의 크레디트 값에 기초하여 기입 명령어의 실행 상태를 결정할 수 있고, 따라서 메모리 제어기와 매체 제어기의 크레디트 값들이 동기화된 채로 유지된 후에, 기입 명령어의 지속화가 완료되는지는 크레디트 값들에 기초하여 정확하게 발견될 수 있다. 또한, 복수의 메모리 기입 명령어 세트들을 설정하는 것은, 지속화 질의 동안 메모리 기입 명령어 세트의 입도에서 국부적 차단을 구현하여, 메모리 제어기의 병렬 처리 효율을 향상시킬 수 있다.
본 기술분야의 통상의 기술자는 실시예들에서의 방법들의 프로세스들 중 일부 또는 전부가 관련 하드웨어에 지시하는 컴퓨터 프로그램에 의해 구현될 수 있다는 점을 이해할 수 있다. 프로그램은 컴퓨터 판독가능 저장 매체에 저장될 수 있다. 프로그램이 실행될 때, 실시예들에서의 방법들의 프로세스들이 수행된다. 전술한 저장 매체는 자기 디스크, 콤팩트 디스크, 판독 전용 메모리(Read-Only Memory, ROM), 또는 랜덤 액세스 메모리(Random Access Memory, RAM)를 포함할 수 있다.
위에서 개시한 것은 단지 본 발명의 실시예들일 뿐이고, 본 발명의 보호 범위를 제한하려고 의도되는 것은 아니다. 본 기술분야의 통상의 기술자는 전술한 실시예들을 구현하는 프로세스들 및 본 발명의 청구항들에 따라 이루어진 등가의 수정들 중 전부 또는 일부가 본 발명의 범위 내에 속할 것임을 이해할 수 있다.

Claims (33)

  1. 메모리에 기입될 데이터를 비휘발성 메모리(NVM)에 기입하는 프로세스에 적용되는 비휘발성 메모리(NVM) 지속화 방법(persistence method)으로서,
    메모리 제어기에 의해, 기입 명령어를 수신하는 단계 - 상기 기입 명령어는 상기 기입될 데이터의 기입 어드레스를 포함함 - ;
    상기 메모리 제어기에 의해, 상기 기입 어드레스에 기초하여 적어도 2개의 메모리 기입 명령어 세트로부터 타겟 메모리 기입 명령어 세트를 선택하고, 상기 기입 명령어를 상기 타겟 메모리 기입 명령어 세트에 저장하고, 상기 타겟 메모리 기입 명령어 세트의 크레디트 값(credit value)을 특정된 값만큼 감소시키는 단계;
    상기 메모리 제어기에 의해, 상기 타겟 메모리 기입 명령어 세트에서의 상기 기입 명령어를 매체 제어기에 전송하는 단계;
    상기 기입 명령어를 수신한 후에, 상기 매체 제어기에 의해, 상기 기입 어드레스에 기초하여 적어도 2개의 매체 기입 명령어 세트로부터 타겟 매체 기입 명령어 세트를 결정하고, 상기 기입 명령어를 상기 타겟 매체 기입 명령어 세트에 저장하고, 상기 타겟 매체 기입 명령어 세트의 크레디트 값을 상기 특정된 값만큼 감소시키는 단계;
    상기 매체 제어기에 의해, 상기 타겟 매체 기입 명령어 세트에서의 상기 기입 명령어를 상기 NVM에 전송하고, 상기 NVM이 상기 기입 명령어를 성공적으로 실행한 후에, 상기 매체 제어기에 의해, 상기 타겟 매체 기입 명령어 세트의 크레디트 값을 상기 특정된 값만큼 증가시키는 단계;
    상기 매체 제어기에 의해, 상기 타겟 매체 기입 명령어 세트의 크레디트 값을 상기 메모리 제어기에 전송하는 단계; 및
    상기 타겟 매체 기입 명령어 세트의 크레디트 값을 수신한 후에, 상기 메모리 제어기에 의해, 상기 타겟 매체 기입 명령어 세트의 크레디트 값에 기초하여 상기 타겟 메모리 기입 명령어 세트의 크레디트 값을 업데이트하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 적어도 2개의 메모리 기입 명령어 세트 각각은 상기 NVM의 어드레스 섹션과 연관되고;
    상기 메모리 제어기에 의해, 상기 기입 어드레스에 기초하여 적어도 2개의 메모리 기입 명령어 세트로부터 타겟 메모리 기입 명령어 세트를 선택하고, 상기 기입 명령어를 상기 타겟 메모리 기입 명령어 세트에 저장하고, 상기 타겟 메모리 기입 명령어 세트의 크레디트 값을 특정된 값만큼 감소시키는 단계는:
    상기 메모리 제어기에 의해, 상기 기입 어드레스가 위치하는 타겟 어드레스 섹션을 결정하고, 상기 타겟 어드레스 섹션과 연관된 메모리 기입 명령어 세트를 상기 타겟 메모리 기입 명령어 세트로서 사용하는 단계; 및
    상기 메모리 제어기에 의해, 상기 기입 명령어를 상기 타겟 메모리 기입 명령어 세트에 저장하고, 상기 타겟 메모리 기입 명령어 세트의 크레디트 값을 1만큼 감소시키는 단계를 포함하는 방법.
  3. 제2항에 있어서, 상기 적어도 2개의 매체 기입 명령어 세트 각각에 대해 상기 NVM의 어드레스 섹션이 구성되고;
    상기 매체 제어기에 의해, 상기 기입 어드레스에 기초하여 상기 적어도 2개의 매체 기입 명령어 세트로부터 타겟 매체 기입 명령어 세트를 결정하고, 상기 기입 명령어를 상기 타겟 매체 기입 명령어 세트에 저장하고, 상기 타겟 매체 기입 명령어 세트의 크레디트 값을 상기 특정된 값만큼 감소시키는 단계는:
    상기 매체 제어기에 의해, 상기 기입 어드레스가 위치하는 상기 타겟 어드레스 섹션을 결정하고, 상기 타겟 어드레스 섹션과 연관된 매체 기입 명령어 세트를 상기 타겟 매체 기입 명령어 세트로서 사용하는 단계; 및
    상기 매체 제어기에 의해, 상기 기입 명령어를 상기 타겟 매체 기입 명령어 세트에 저장하고, 상기 타겟 매체 기입 명령어 세트의 크레디트 값을 1만큼 감소시키는 단계를 포함하는 방법.
  4. 제3항에 있어서, 메모리 제어기에 의해, 기입 명령어를 수신하기 전에,
    상기 메모리 제어기에 의해, 라이브러리 함수(library function)를 호출(invoking)함으로써 상기 적어도 2개의 메모리 기입 명령어 세트 각각의 어드레스 섹션을 구성하고, 상기 적어도 2개의 매체 기입 명령어 세트 각각의 어드레스 섹션을 구성하는 단계를 추가로 포함하고, 상기 적어도 2개의 메모리 기입 명령어 세트와 상기 적어도 2개의 매체 기입 명령어 세트는 일대일 매핑 관계를 갖고, 서로 연관되는 메모리 기입 명령어 세트와 매체 기입 명령어 세트는 동일한 어드레스 섹션을 갖는 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 매체 제어기에 의해, 상기 타겟 매체 기입 명령어 세트의 크레디트 값을 상기 메모리 제어기에 전송하는 단계는:
    상기 매체 제어기에 의해, 상기 메모리 제어기에 의해 전송된 질의 요청을 수신하는 단계 - 상기 질의 요청은 상기 타겟 매체 기입 명령어 세트의 크레디트 값을 질의하는 데 사용됨 -; 및
    상기 매체 제어기에 의해, 상기 타겟 매체 기입 명령어 세트의 크레디트 값을 운반(carry)하는 질의 응답을 상기 메모리 제어기에 전송하는 단계를 포함하는 방법.
  6. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 매체 제어기에 의해, 상기 타겟 매체 기입 명령어 세트의 크레디트 값을 상기 메모리 제어기에 전송하는 단계는:
    상기 매체 제어기에 의해, 상기 메모리 제어기에 주기적으로 상기 타겟 매체 기입 명령어 세트의 크레디트 값을 능동적으로 전송하는 단계를 포함하는 방법.
  7. 제1항에 있어서,
    상기 메모리 제어기에 의해, 상기 타겟 메모리 기입 명령어 세트에 대한 지속화 질의 명령어(persistence query instruction)를 수신하고, 상기 지속화 질의 명령어의 수신 순간을 획득하는 단계;
    상기 메모리 제어기에 의해, 상기 수신 순간 이후에 상기 타겟 메모리 기입 명령어 세트에 진입(enter)하는 기입 명령어를 차단하는 단계;
    상기 메모리 제어기에 의해, 상기 타겟 메모리 기입 명령어 세트의 크레디트 값을 판독하는 단계; 및
    상기 판독한 크레디트 값이 미리 설정된 최대 값과 동일한 경우, 상기 메모리 제어기에 의해, 상기 타겟 메모리 기입 명령어 세트에서의 상기 기입 명령어의 지속화가 완료되었다고 결정하는 단계
    를 추가로 포함하는 방법.
  8. 제7항에 있어서, 상기 메모리 제어기에 의해, 상기 수신 순간 이후에 상기 타겟 메모리 기입 명령어 세트에 진입하는 기입 명령어를 차단하는 단계는:
    상기 메모리 제어기에 의해, 상기 수신 순간 이후에 상기 타겟 메모리 기입 명령어 세트에 진입하는 기입 명령어를 캐싱(caching)하는 단계; 또는
    상기 메모리 제어기에 의해, 상기 수신 순간에 상기 타겟 메모리 기입 명령어 세트에 소프트웨어 뮤텍스(software mutex)를 추가하는 단계를 포함하는 방법.
  9. 제1항에 있어서,
    상기 매체 제어기에 의해, 상기 타겟 매체 기입 명령어 세트에 대한 지속화 질의 명령어를 수신하는 단계;
    상기 매체 제어기에 의해, 상기 타겟 매체 기입 명령어 세트의 크레디트 값을 판독하는 단계; 및
    상기 판독한 크레디트 값이 미리 설정된 최대 값과 동일한 경우, 상기 매체 제어기에 의해, 상기 타겟 매체 기입 명령어 세트에서의 상기 기입 명령어의 지속화 동작이 완료되었다고 결정하는 단계
    를 추가로 포함하는 방법.
  10. 비휘발성 메모리(NVM)에 데이터의 기입의 완료를 확인(confirming)하기 위한 방법으로서,
    메모리 제어기에 의해 CPU로부터, 상기 메모리 제어기에 의해 유지되는 복수의 메모리 기입 명령어 세트 내의 제1 메모리 기입 명령어 세트의 식별자를 포함하는 지속화 질의(persistence query)를 수신하는 단계 - 상기 제1 메모리 기입 명령어 세트는 상기 메모리 제어기가 상기 지속화 질의를 수신할 때 다수의 기입 명령어들을 포함함 - ;
    상기 메모리 제어기에 의해, 상기 지속화 질의를 수신하는 것에 후속하여 상기 CPU로부터, 상기 제1 메모리 기입 명령어 세트에 버퍼링될 제1 새로운 기입 명령어, 및 상기 지속화 질의에 의해 식별되지 않은 제2 메모리 기입 명령어 세트에 버퍼링될 제2 새로운 기입 명령어를 수신하는 단계;
    상기 메모리 제어기에 의해, 상기 제1 새로운 기입 명령어를 상기 제1 메모리 기입 명령어 세트에 추가하지 않음으로써 상기 제1 새로운 기입 명령어를 차단하는 단계;
    상기 메모리 제어기에 의해, 상기 제2 새로운 기입 명령어를 상기 제2 메모리 기입 명령어 세트에 추가하는 단계;
    상기 메모리 제어기에 의해, 상기 제1 메모리 기입 명령어 세트 내의 상기 다수의 기입 명령어들을 상기 NVM의 매체 제어기에 전송하여 상기 다수의 기입 명령어들의 데이터를 상기 NVM에 기입하는 단계;
    상기 다수의 기입 명령어들의 데이터가 상기 매체 제어기에 의해 상기 NVM에 기입되었다는 것을 확인하는 단계; 및
    상기 확인에 응답하여, 상기 메모리 제어기에 의해, 제3 새로운 기입 명령어를 상기 제1 메모리 기입 명령어 세트 내에 추가함으로써 상기 제1 메모리 기입 명령어 세트를 재개방(reopening)하는 단계
    를 포함하는 방법.
  11. 제10항에 있어서,
    상기 매체 제어기에 의해, 상기 메모리 제어기로부터 상기 제1 메모리 기입 명령어 세트의 상기 다수의 기입 명령어들을 수신하는 단계;
    상기 매체 제어기에 의해, 상기 복수의 메모리 기입 명령어 세트에 대응하는 복수의 매체 기입 명령어 세트 내의 제1 매체 기입 명령어 세트에 상기 다수의 기입 명령어들을 버퍼링하는 단계;
    상기 매체 제어기에 의해, 상기 다수의 기입 명령어들의 데이터를 상기 NVM에 기입하는 단계; 및
    상기 매체 제어기에 의해, 상기 제1 매체 기입 명령어 세트의 크레디트 값을 업데이트하는 단계 - 상기 크레디트 값은 완료된 기입 명령어들의 양을 나타냄 -
    를 추가로 포함하는 방법.
  12. 제11항에 있어서,
    상기 매체 제어기에 의해, 상기 크레디트 값을 상기 메모리 제어기에 전송하는 단계를 추가로 포함하고,
    상기 메모리 제어기에 의해 확인하는 단계는, 상기 크레디트 값에 따라 상기 다수의 기입 명령어들의 데이터가 상기 NVM에 기입되었다는 것을 결정하는 단계를 포함하는 방법.
  13. 제11항에 있어서, 각각의 메모리 기입 명령어 세트 및 대응하는 매체 기입 명령어 세트는 상기 NVM의 어드레스 섹션과 연관되는 방법.
  14. 제13항에 있어서, 상기 제1 메모리 기입 명령어 세트는 상기 NVM의 제1 어드레스 섹션과 연관되고, 상기 다수의 기입 명령어들의 기입 어드레스들은 상기 제1 어드레스 섹션에 속하는 방법.
  15. 제12항에 있어서, 상기 메모리 기입 명령어 세트들 및 상기 매체 기입 명령어 세트들 각각은 크레디트 값을 갖고, 상기 방법은,
    상기 메모리 제어기에 의해, 상기 제1 매체 기입 명령어 세트의 수신된 크레디트 값에 따라 상기 제1 메모리 기입 명령어 세트의 크레디트 값을 업데이트하는 단계를 추가로 포함하고, 상기 제1 메모리 기입 명령어 세트의 크레디트 값은 완료된 기입 명령어들의 양을 나타내는 방법.
  16. 컴퓨터 시스템으로서,
    CPU;
    비휘발성 메모리(NVM);
    상기 NVM에 결합된 매체 제어기; 및
    상기 매체 제어기에 결합된 메모리 제어기
    를 포함하고, 상기 메모리 제어기는:
    상기 CPU로부터, 상기 메모리 제어기에 의해 유지되는 복수의 메모리 기입 명령어 세트 내의 제1 메모리 기입 명령어 세트의 식별자를 포함하는 지속화 질의를 수신하고 - 상기 제1 메모리 기입 명령어 세트는 상기 메모리 제어기가 상기 지속화 질의를 수신할 때 다수의 기입 명령어들을 포함함 - ;
    상기 지속화 질의를 수신하는 것에 후속하여 상기 CPU로부터, 상기 제1 메모리 기입 명령어 세트에 버퍼링될 제1 새로운 기입 명령어, 및 상기 지속화 질의에 의해 식별되지 않은 제2 메모리 기입 명령어 세트에 버퍼링될 제2 새로운 기입 명령어를 수신하고;
    상기 제1 새로운 기입 명령어를 상기 제1 메모리 기입 명령어 세트에 추가하지 않음으로써 상기 제1 새로운 기입 명령어를 차단하고;
    상기 제2 새로운 기입 명령어를 상기 제2 메모리 기입 명령어 세트에 추가하고;
    상기 제1 메모리 기입 명령어 세트 내의 상기 다수의 기입 명령어들을 상기 NVM의 매체 제어기에 전송하여 상기 다수의 기입 명령어들의 데이터를 상기 NVM에 기입하고;
    상기 다수의 기입 명령어들의 데이터가 상기 매체 제어기에 의해 상기 NVM에 기입되었다는 것을 확인하고; 그리고
    상기 다수의 기입 명령어들의 데이터가 상기 NVM에 기입되었다는 것을 확인하는 것에 응답하여, 제3 새로운 기입 명령어를 상기 제1 메모리 기입 명령어 세트에 추가함으로써 상기 제1 메모리 기입 명령어 세트를 재개방하도록
    구성되는 컴퓨터 시스템.
  17. 제16항에 있어서, 상기 매체 제어기는,
    상기 메모리 제어기로부터 상기 다수의 기입 명령어들을 수신하고;
    복수의 매체 기입 명령어 세트 내의 제1 매체 기입 명령어 세트에 상기 다수의 기입 명령어들을 버퍼링하고;
    상기 다수의 기입 명령어들의 데이터를 상기 NVM에 기입하고; 그리고
    상기 제1 매체 기입 명령어 세트의 크레디트 값을 업데이트하도록 - 상기 크레디트 값은 완료된 기입 명령어들의 양을 나타냄 -
    구성되는 컴퓨터 시스템.
  18. 제17항에 있어서, 상기 매체 제어기는 상기 메모리 제어기에 상기 크레디트 값을 전송하도록 추가로 구성되고,
    상기 메모리 제어기는 상기 매체 제어기로부터 수신되는 상기 크레디트 값에 따라 상기 제1 메모리 기입 명령어 세트의 상기 다수의 기입 명령어들의 데이터가 상기 NVM에 기입되는 것을 확인하도록 구성되는 컴퓨터 시스템.
  19. 제17항에 있어서, 각각의 메모리 기입 명령어 세트 및 대응하는 매체 기입 명령어 세트는 상기 NVM의 어드레스 섹션과 연관되는 컴퓨터 시스템.
  20. 제19항에 있어서, 상기 제1 메모리 기입 명령어 세트는 상기 NVM의 제1 어드레스 섹션과 연관되고, 상기 제1 메모리 기입 명령어 세트의 상기 다수의 기입 명령어들의 기입 어드레스들은 상기 제1 어드레스 섹션에 속하는 컴퓨터 시스템.
  21. 제18항에 있어서, 상기 메모리 기입 명령어 세트들 및 상기 매체 기입 명령어 세트들 각각은 크레디트 값을 갖고, 상기 메모리 제어기는,
    상기 제1 매체 기입 명령어 세트의 수신된 크레디트 값에 따라 상기 제1 메모리 기입 명령어 세트의 크레디트 값을 업데이트하도록 추가로 구성되고, 상기 제1 메모리 기입 명령어 세트의 크레디트 값은 완료된 기입 명령어들의 양을 나타내는 컴퓨터 시스템.
  22. 메모리 제어기, 매체 제어기, 및 상기 매체 제어기에 연결된 비휘발성 메모리(NVM)를 포함하는 컴퓨터 시스템에 적용되는 데이터 지속화 확인 방법(data persistence confirmation method)으로서,
    상기 메모리 제어기에 의해 상기 매체 제어기로부터, 타겟 매체 기입 명령어 세트의 크레디트 값을 수신하는 단계 - 상기 매체 제어기는 복수의 매체 기입 명령어 세트와 연관되고, 상기 메모리 제어기는 복수의 메모리 기입 명령어 세트와 연관되고, 상기 타겟 매체 기입 명령어 세트의 기입 명령어들 각각은 상기 메모리 제어기에서의 타겟 메모리 기입 명령어 세트로부터의 것이고, 상기 타겟 매체 기입 명령어 세트는 상기 복수의 매체 기입 명령어 세트 중 하나이고, 상기 타겟 메모리 기입 명령어 세트는 상기 복수의 메모리 기입 명령어 세트 중 하나이고, 상기 타겟 메모리 기입 명령어 세트와 상기 타겟 매체 기입 명령어 세트는 동일한 최대 크레디트 값을 갖고, 상기 타겟 매체 기입 명령어 세트의 크레디트 값은 상기 타겟 매체 기입 명령어 세트에 진입하도록 허용되는 기입 명령어들의 양을 나타냄 - ;
    상기 메모리 제어기에 의해, 상기 타겟 매체 기입 명령어 세트의 크레디트 값에 기초하여 상기 타겟 메모리 기입 명령어 세트의 크레디트 값을 업데이트하는 단계 - 상기 타겟 메모리 기입 명령어 세트의 크레디트 값은 상기 타겟 메모리 기입 명령어 세트에 진입하도록 허용되는 기입 명령어들의 양을 나타냄 - ; 및
    상기 메모리 제어기에 의해, 상기 타겟 메모리 기입 명령어 세트의 업데이트된 크레디트 값이 상기 최대 크레디트 값과 동일할 때 상기 타겟 메모리 기입 명령어 세트의 상기 기입 명령어들의 데이터의 지속화가 완료되었다고 결정하는 단계
    를 포함하는 방법.
  23. 제22항에 있어서, 상기 수신하는 단계 전에, 상기 방법은:
    상기 메모리 제어기에 의해, 제1 데이터의 기입 어드레스를 포함하는 제1 기입 명령어를 수신하는 단계;
    상기 메모리 제어기에 의해, 상기 제1 기입 명령어를 상기 기입 어드레스에 대응하는 상기 타겟 메모리 기입 명령어 세트에 저장하는 단계;
    상기 메모리 제어기에 의해, 상기 타겟 메모리 기입 명령어 세트의 제1 크레디트 값을 특정된 값만큼 감소시켜서 제2 크레디트 값을 획득하는 단계;
    상기 메모리 제어기에 의해, 상기 타겟 메모리 기입 명령어 세트에서의 상기 제1 기입 명령어를 상기 매체 제어기에 전송하는 단계;
    상기 매체 제어기에 의해, 상기 제1 기입 명령어를 상기 기입 어드레스에 대응하는 상기 타겟 매체 기입 명령어 세트에 저장하는 단계;
    상기 타겟 매체 기입 명령어 세트의 제3 크레디트 값을 상기 특정된 값만큼 감소시켜서 제4 크레디트 값을 획득하는 단계; 및
    상기 매체 제어기에 의해, 상기 제1 데이터를 상기 NVM에 기입한 후에 상기 타겟 매체 기입 명령어 세트의 상기 제4 크레디트 값을 상기 특정된 값만큼 증가시켜서 상기 타겟 매체 기입 명령어 세트의 크레디트 값을 획득하는 단계
    를 추가로 포함하는 방법.
  24. 제23항에 있어서, 상기 복수의 메모리 기입 명령어 세트 각각은 상기 NVM의 어드레스 섹션과 연관되고, 상기 복수의 매체 기입 명령어 세트 각각은 상기 NVM의 어드레스 섹션과 연관되고;
    상기 메모리 제어기에 의해, 상기 제1 기입 명령어를 상기 기입 어드레스에 대응하는 상기 타겟 메모리 기입 명령어 세트에 저장하는 단계는:
    상기 메모리 제어기에 의해, 상기 제1 기입 명령어를 상기 기입 어드레스가 속하는 타겟 어드레스 섹션과 연관된 상기 타겟 메모리 기입 명령어 세트에 저장하는 단계를 포함하고;
    상기 매체 제어기에 의해, 상기 제1 기입 명령어를 상기 기입 어드레스에 대응하는 상기 타겟 매체 기입 명령어 세트에 저장하는 단계는:
    상기 매체 제어기에 의해, 상기 제1 기입 명령어를 상기 기입 어드레스가 속하는 상기 타겟 어드레스 섹션과 연관된 상기 타겟 매체 기입 명령어 세트에 저장하는 단계를 포함하는 방법.
  25. 제22항에 있어서,
    상기 메모리 제어기에 의해, 상기 타겟 메모리 기입 명령어 세트에 대한 지속화 질의 명령어를 수신하는 단계;
    상기 메모리 제어기에 의해, 상기 지속화 질의 명령어가 수신된 후에 상기 타겟 메모리 기입 명령어 세트에 저장될 제2 기입 명령어를 차단하는 단계; 및
    상기 메모리 제어기에 의해, 상기 지속화 질의 명령어를 상기 매체 제어기에 전송하는 단계를 추가로 포함하고,
    상기 타겟 매체 기입 명령어 세트의 크레디트 값을 수신하는 단계는:
    상기 메모리 제어기에 의해 상기 매체 제어기로부터, 상기 지속화 질의 명령어에 응답하여 상기 매체 제어기에 의해 전송된 상기 타겟 매체 기입 명령어 세트의 크레디트 값을 수신하는 단계를 포함하는 방법.
  26. 제25항에 있어서,
    상기 매체 제어기에 의해, 상기 메모리 제어기에 의해 전송된 상기 지속화 질의 명령어를 수신하는 단계;
    상기 매체 제어기에 의해, 상기 타겟 매체 기입 명령어 세트의 크레디트 값을 판독하는 단계; 및
    상기 매체 제어기에 의해, 상기 타겟 매체 기입 명령어 세트의 판독한 크레디트 값이 상기 최대 크레디트 값과 동일할 때 상기 타겟 매체 기입 명령어 세트에서의 상기 기입 명령어의 데이터의 지속화가 완료되었다고 결정하는 단계
    를 추가로 포함하는 방법.
  27. 제22항 내지 제24항 중 어느 한 항에 있어서,
    상기 메모리 제어기에 의해, 상기 복수의 메모리 기입 명령어 세트 각각과 연관된 어드레스 섹션을 구성하는 단계; 및
    상기 메모리 제어기에 의해, 상기 복수의 매체 기입 명령어 세트 각각과 연관된 어드레스 섹션을 구성하는 단계를 추가로 포함하고,
    상기 타겟 메모리 기입 명령어 세트와 상기 타겟 매체 기입 명령어 세트는 동일한 어드레스 섹션과 연관되는 방법.
  28. 컴퓨터 시스템으로서,
    비휘발성 메모리(NVM);
    상기 NVM에 연결되는 매체 제어기; 및
    상기 매체 제어기에 연결되는 메모리 제어기
    를 포함하고,
    제22항 내지 제26항 중 어느 한 항에 따른 방법을 수행하도록 구성되는 컴퓨터 시스템.
  29. 컴퓨터 판독가능 저장 매체로서, 하나 이상의 컴퓨터 실행가능 명령어를 포함하고, 상기 하나 이상의 컴퓨터 실행가능 명령어가 컴퓨터에서 실행될 때, 상기 컴퓨터는 제10항 내지 제15항 중 어느 한 항에 따른 방법을 수행하는 컴퓨터 판독가능 저장 매체.
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
KR1020197010570A 2016-09-30 2017-09-30 비휘발성 메모리 지속화 방법 및 컴퓨팅 디바이스 KR102364332B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201610878743.8 2016-09-30
CN201610878743.8A CN107885671B (zh) 2016-09-30 2016-09-30 一种非易失性内存的持久化方法和计算设备
PCT/CN2017/104743 WO2018059572A1 (zh) 2016-09-30 2017-09-30 一种非易失性内存的持久化方法和计算设备

Publications (2)

Publication Number Publication Date
KR20190047035A KR20190047035A (ko) 2019-05-07
KR102364332B1 true KR102364332B1 (ko) 2022-02-17

Family

ID=61762503

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197010570A KR102364332B1 (ko) 2016-09-30 2017-09-30 비휘발성 메모리 지속화 방법 및 컴퓨팅 디바이스

Country Status (6)

Country Link
US (1) US10976956B2 (ko)
EP (1) EP3514690B1 (ko)
JP (1) JP6878577B2 (ko)
KR (1) KR102364332B1 (ko)
CN (2) CN107885671B (ko)
WO (1) WO2018059572A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107885671B (zh) 2016-09-30 2021-09-14 华为技术有限公司 一种非易失性内存的持久化方法和计算设备
US11048645B2 (en) * 2018-02-01 2021-06-29 Samsung Electronics Co., Ltd. Memory module, operation method therof, and operation method of host
US10782916B2 (en) 2018-08-08 2020-09-22 Micron Technology, Inc. Proactive return of write credits in a memory system
US10969994B2 (en) 2018-08-08 2021-04-06 Micron Technology, Inc. Throttle response signals from a memory system
US11074007B2 (en) * 2018-08-08 2021-07-27 Micron Technology, Inc. Optimize information requests to a memory system
US11409436B2 (en) 2018-08-08 2022-08-09 Micron Technology, Inc. Buffer management in memory systems for read and write requests
US11947995B2 (en) 2020-05-19 2024-04-02 Intel Corporation End-to-end data protection for far memory data transfer from host to media
US20220374168A1 (en) * 2021-05-21 2022-11-24 Micron Technology, Inc. Memory with memory-initiated command insertion, and associated systems, devices, and methods

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6289386B1 (en) * 1998-05-11 2001-09-11 Lsi Logic Corporation Implementation of a divide algorithm for buffer credit calculation in a high speed serial channel
JP2016514320A (ja) * 2013-03-15 2016-05-19 インテル・コーポレーション メモリシステム

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW451132B (en) * 1998-12-15 2001-08-21 Nippon Electric Co System and method for cache processing
US7103672B1 (en) * 2000-05-01 2006-09-05 Hewlett-Packard Development Company, L.P. Method and apparatus for improving system performance through remote credit management
JP3525867B2 (ja) * 2000-07-07 2004-05-10 日本電気株式会社 通信装置および通信端末
JP4403677B2 (ja) * 2001-08-27 2010-01-27 ブラザー工業株式会社 通信装置及び通信システム
CN1292568C (zh) 2001-09-02 2006-12-27 中兴通讯股份有限公司 一种多队列数据分组连续转发的装置和方法
CN1249722C (zh) 2002-01-23 2006-04-05 华为技术有限公司 多计数器的构造方法、多计数器及使用其的多队列装置
JP2006172314A (ja) * 2004-12-17 2006-06-29 Jidosha Denki Kogyo Co Ltd 不揮発性メモリのデータ書込み装置
JP2006309579A (ja) * 2005-04-28 2006-11-09 Hitachi Ltd 記憶制御装置及びストレージシステム
US8516211B2 (en) * 2005-06-17 2013-08-20 Flexera Software Llc Secure storage management system and method
CN101082852B (zh) * 2006-05-29 2012-07-18 联阳半导体股份有限公司 用于存储器的控制装置及控制方法
US7702871B1 (en) * 2007-08-31 2010-04-20 Emc Corporation Write pacing
CN101801061B (zh) 2010-02-11 2013-06-05 华为技术有限公司 一种信用度消耗法则上报方法、准入控制方法及装置
JP2012252416A (ja) * 2011-05-31 2012-12-20 Toshiba Corp 記憶装置、データ制御方法、及びデータコントローラ
US10706021B2 (en) * 2012-01-17 2020-07-07 Oracle International Corporation System and method for supporting persistence partition discovery in a distributed data grid
US10359972B2 (en) * 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
JP5978660B2 (ja) * 2012-03-06 2016-08-24 ソニー株式会社 情報処理装置及び情報処理方法
KR101380452B1 (ko) 2012-08-14 2014-04-14 한국과학기술원 버퍼리스 온칩 네트워크의 전력 소모 감소를 위한 목적지 기반 크레딧 흐름 제어 방법 및 장치
CN102890631B (zh) * 2012-09-13 2016-12-07 新浪网技术(中国)有限公司 基于持久化消息队列传输消息的方法及消息传输装置
KR101932920B1 (ko) 2012-09-14 2019-03-18 삼성전자 주식회사 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법
JP2014230072A (ja) * 2013-05-22 2014-12-08 株式会社リコー データ通信デバイス、データ通信装置及びデータ通信方法
CN103268291B (zh) * 2013-05-23 2016-02-24 清华大学 在闪存存储系统中延迟持久化索引元数据的方法
CN104239252A (zh) * 2013-06-21 2014-12-24 华为技术有限公司 数据存储系统的数据传输方法、装置及系统
US9423959B2 (en) * 2013-06-29 2016-08-23 Intel Corporation Method and apparatus for store durability and ordering in a persistent memory architecture
WO2015005903A1 (en) * 2013-07-09 2015-01-15 Hewlett-Packard Development Company, L.P. Write flow control for memory modules that include or interface with non-compliant memory technologies
US20170097795A1 (en) * 2014-04-07 2017-04-06 Hitachi, Ltd. Storage system
CN104079502B (zh) 2014-06-27 2017-05-10 国家计算机网络与信息安全管理中心 一种多用户多队列调度方法
JP6331787B2 (ja) * 2014-07-08 2018-05-30 富士通株式会社 データ送受信システム、データ送信装置およびデータ送受信システムの制御方法
US10489158B2 (en) * 2014-09-26 2019-11-26 Intel Corporation Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores
US9626297B2 (en) * 2014-10-08 2017-04-18 Wisconsin Alumni Research Foundation Memory fault patching using pre-existing memory structures
US20160188414A1 (en) * 2014-12-24 2016-06-30 Intel Corporation Fault tolerant automatic dual in-line memory module refresh
US10318340B2 (en) * 2014-12-31 2019-06-11 Ati Technologies Ulc NVRAM-aware data processing system
US11579774B2 (en) * 2015-01-20 2023-02-14 Ultrata, Llc Object memory data flow triggers
CN104881371B (zh) * 2015-05-29 2018-02-09 清华大学 持久性内存事务处理缓存管理方法与装置
US10579560B2 (en) * 2016-08-31 2020-03-03 Futurewei Technologies, Inc. Transaction-based hybrid memory
CN107885671B (zh) * 2016-09-30 2021-09-14 华为技术有限公司 一种非易失性内存的持久化方法和计算设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6289386B1 (en) * 1998-05-11 2001-09-11 Lsi Logic Corporation Implementation of a divide algorithm for buffer credit calculation in a high speed serial channel
JP2016514320A (ja) * 2013-03-15 2016-05-19 インテル・コーポレーション メモリシステム

Also Published As

Publication number Publication date
US10976956B2 (en) 2021-04-13
EP3514690A1 (en) 2019-07-24
EP3514690A4 (en) 2019-10-30
KR20190047035A (ko) 2019-05-07
CN110088740A (zh) 2019-08-02
JP2019533244A (ja) 2019-11-14
JP6878577B2 (ja) 2021-05-26
CN107885671B (zh) 2021-09-14
CN110088740B (zh) 2021-10-19
EP3514690B1 (en) 2023-06-21
WO2018059572A1 (zh) 2018-04-05
US20190220224A1 (en) 2019-07-18
CN107885671A (zh) 2018-04-06

Similar Documents

Publication Publication Date Title
KR102364332B1 (ko) 비휘발성 메모리 지속화 방법 및 컴퓨팅 디바이스
WO2021254330A1 (zh) 内存管理方法、系统、客户端、服务器及存储介质
CN109690512B (zh) 具有触发操作的gpu远程通信
CN112578997B (zh) 一种数据迁移方法、系统及相关设备
WO2020019743A1 (zh) 流量控制方法及装置
US20220057966A1 (en) Memory system and method of controlling nonvolatile memory
US20230153264A1 (en) Data transmission method, chip, and device
CN103236989A (zh) 一种内容分发网络中的缓存控制方法、设备及系统
US11966585B2 (en) Storage device and storage system
CN113794764A (zh) 服务器集群的请求处理方法、介质和电子设备
CN115934625B (zh) 一种用于远程直接内存访问的敲门铃方法、设备及介质
CN111124270A (zh) 缓存管理的方法、设备和计算机程序产品
CN110650182B (zh) 网络缓存方法、装置、计算机设备及存储介质
US11321255B2 (en) Packet processing device and packet processing method
CN113220650B (zh) 数据存储方法、装置、设备、存储介质及程序
CN113467719A (zh) 数据写入方法及装置
CN110557341A (zh) 数据限流的方法和装置
CN116032498A (zh) 一种内存区域注册方法、装置及设备
CN114785739A (zh) 逻辑卷服务质量的控制方法、装置、设备及介质
CN108628764B (zh) 用于对存储器缓冲区存取进行细粒度完成跟踪的技术
CN111625500A (zh) 文件快照方法及装置、电子设备和存储介质
CN110881277A (zh) 一种数据存储方法、装置及相关设备
CN114615273B (zh) 基于负载均衡系统的数据发送方法、装置和设备
CN111796901A (zh) 切换共享内存区的方法和装置、存储介质和电子设备
JP6835758B2 (ja) フロー制御装置および方法

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
GRNT Written decision to grant