KR102336335B1 - 메모리 서브 시스템에 대한 기입 원자성 관리 - Google Patents

메모리 서브 시스템에 대한 기입 원자성 관리 Download PDF

Info

Publication number
KR102336335B1
KR102336335B1 KR1020217012055A KR20217012055A KR102336335B1 KR 102336335 B1 KR102336335 B1 KR 102336335B1 KR 1020217012055 A KR1020217012055 A KR 1020217012055A KR 20217012055 A KR20217012055 A KR 20217012055A KR 102336335 B1 KR102336335 B1 KR 102336335B1
Authority
KR
South Korea
Prior art keywords
write
data
logical block
block addresses
range
Prior art date
Application number
KR1020217012055A
Other languages
English (en)
Other versions
KR20210050581A (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 KR20210050581A publication Critical patent/KR20210050581A/ko
Application granted granted Critical
Publication of KR102336335B1 publication Critical patent/KR102336335B1/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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • 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/7209Validity control, e.g. using flags, time stamps or sequence numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

대표적인 방법들, 장치들, 및 시스템들은 메모리 구성요소에 데이터를 원자적으로 기입하기 위한 명령어를 수신하는 것을 포함한다. 원자의 종료 표시자를 포함하는, 제1 데이터에 대한 복수의 기입 커맨드들이 생성된다. 제1 복수의 기입 커맨드들은 기입 커맨드들에 대응하는 복수의 변환 테이블 업데이트들을 누적하면서 메모리 구성요소로 전송된다. 하나 이상의 변환 테이블은 마지막 기입 커맨드가 메모리 구성요소로 성공적으로 전송되었다고 결정하는 것에 응답하여 복수의 변환 테이블 업데이트들로 업데이트된다.

Description

메모리 서브 시스템에 대한 기입 원자성 관리
본 개시는 개괄적으로 메모리 서브 시스템들에 관한 것이고, 보다 구체적으로는 메모리 서브 시스템들에서의 기입 원자성(write atomicity) 관리에 관한 것이다.
메모리 서브 시스템은 고체 상태 드라이브(SSD, solid-state drive)와 같은 저장 시스템일 수 있고, 데이터를 저장하는 하나 이상의 메모리 구성요소를 포함할 수 있다. 메모리 구성요소들은 예를 들어, 비휘발성 메모리 구성요소들 및 휘발성 메모리 구성요소들일 수 있다. 일반적으로, 호스트 시스템은 메모리 서브 시스템을 이용하여 메모리 구성요소들에 데이터를 저장하고 메모리 구성요소들로부터 데이터를 검색할 수 있다.
본 개시는 아래에 제공되는 발명을 실시하기 위한 구체적인 내용 및 본 개시의 다양한 실시 예들의 첨부 도면들로부터 보다 충분히 이해될 것이다. 그러나, 도면들은 본 개시를 특정 실시 예들로 제한하기 위한 것이 아니라, 단지 설명 및 이해를 위한 것일 뿐이다.
도 1은 본 개시의 일부 실시 예들에 따른 메모리 서브 시스템을 포함하는 예시적인 컴퓨팅 환경을 도시한다.
도 2는 본 개시의 일부 실시 예들에 따른 기입들에서의 원자성을 관리하는 예시적인 방법의 흐름도이다.
도 3은 본 개시의 일부 실시 예들에 따른 중복 기입들에서의 원자성을 관리하는 예시적인 방법의 흐름도이다.
도 4는 본 개시의 실시 예들이 동작할 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
본 개시의 양태들은 메모리 서브 시스템에서의 테이블 업데이트 누적기에 관한 것이다. 메모리 서브 시스템은 이하에서 "메모리 디바이스(memory device)"라고도 한다. 메모리 서브 시스템의 일례는 고체 상태 드라이브(SSD)와 같은 저장 시스템이다. 일부 실시 예들에서, 메모리 서브 시스템은 하이브리드 메모리/저장 서브 시스템이다. 일반적으로, 호스트 시스템은 하나 이상의 메모리 구성요소를 포함하는 메모리 서브 시스템을 이용할 수 있다. 호스트 시스템은 메모리 서브 시스템에 저장될 데이터를 제공할 수 있고 메모리 서브 시스템으로부터 검색될 데이터를 요청할 수 있다.
원자적 기입 동작들에 대한 기존 접근법들은 기입될 메모리 구성요소에 데이터의 전체 조각을 전송하기 전에 작업 메모리에 데이터의 전체 조각을 모으고 이어서 기입 동작을 반영하기 위해 논리-물리 변환 테이블들을 업데이트하는 것이다. 이러한 접근법은 메모리 구성요소들이 데이터의 전체 조각이 모아지기를 기다리는 동안 충분히 이용되지 않기 때문에 성능에 일관성이 없다.
본 개시의 양태들은 메모리 구성요소에 대한 데이터의 기입과 변환 테이블들에 대한 업데이트들을 분리함으로써 상기한 및 다른 결함들을 처리한다. 원자적 기입 동작에 대응하는 데이터의 청크들은 데이터가 호스트 시스템 또는 호스트 프로세스로부터 수신될 때 메모리 구성요소에서의 비휘발성 저장 장치에 기입되는 한편, 변환 테이블들에 대한 업데이트들은 데이터의 청크들이 메모리 구성요소에 전송될 때 메모리 서브 시스템에 의해 누적된다. 메모리 서브 시스템으로 전송되는 데이터의 각 청크는 원자성 표시자, 이를테면 원자의 시작, 중간, 및 종료와 연관된다. 원자의 종료 표시자와 연관된 데이터의 청크가 메모리 구성요소에 성공적으로 전송되면, 누적된 변환 테이블 업데이트들이 변환 테이블들에 적용되어, 원자적 기입 동작을 완료한다. 이러한 접근법은 모든 데이터가 기입된 후까지 변환 테이블 업데이트들을 보류함으로써 기입 동작의 원자성을 유지하면서 데이터가 수신될 때 메모리 구성요소로 데이터를 전송함으로써 성능을 원만하게 하여 기존 접근법을 개선한다.
도 1은 본 개시의 일부 실시 예들에 따른 메모리 서브 시스템(110)을 포함하는 예시적인 컴퓨팅 환경(100)을 도시한다. 메모리 서브 시스템(110)은 메모리 구성요소들(112A 내지 112N)과 같은 매체들을 포함할 수 있다. 메모리 구성요소들(112A 내지 112N)은 휘발성 메모리 구성요소들, 비휘발성 메모리 구성요소들, 또는 이들의 조합일 수 있다. 일부 실시 예들에서, 메모리 서브 시스템은 저장 시스템이다. 저장 시스템의 일례는 SSD이다. 일부 실시 예들에서, 메모리 서브 시스템(110)은 하이브리드 메모리/저장 서브 시스템이다. 일반적으로, 컴퓨팅 환경(100)은 메모리 서브 시스템(110)을 사용하는 호스트 시스템(120)을 포함할 수 있다. 예를 들어, 호스트 시스템(120)은 메모리 서브 시스템(110)에 데이터를 기입하고 메모리 서브 시스템(110)으로부터 데이터를 판독할 수 있다.
호스트 시스템(120)은 컴퓨팅 디바이스 이를테면 데스크탑 컴퓨터, 랩탑 컴퓨터, 네트워크 서버, 모바일 디바이스, 또는 메모리 및 프로세싱 디바이스를 포함하는 컴퓨팅 디바이스일 수 있다. 호스트 시스템(120)은 호스트 시스템(120)이 메모리 서브 시스템(110)으로부터 데이터를 판독하거나 이에 데이터를 기입할 수 있도록 메모리 서브 시스템(110)을 포함하거나 이에 연결될 수 있다. 호스트 시스템(120)은 물리적 호스트 인터페이스를 통해 메모리 서브 시스템(110)에 연결될 수 있다. "~에 연결된(coupled to)"은 본 명세서에서 사용될 때, 일반적으로 전기적, 광학적, 자기적 등과 같은 접속을 포함하여, 유선이든 무선이든, 간접 통신 접속 또는 직접 통신 접속일 수 있는, 구성요소들 사이의 접속을 나타낸다. 물리적 호스트 인터페이스의 예들은 SATA(serial advanced technology attachment) 인터페이스, PCIe(peripheral component Interconnect express) 인터페이스, USB(universal serial bus) 인터페이스, 파이버 채널, 직렬 접속 SCSI(SAS) 등을 포함하나, 이에 제한되지는 않는다. 물리적 호스트 인터페이스는 호스트 시스템(120)과 메모리 서브 시스템(110) 사이에서 데이터를 전송하는 데 사용될 수 있다. 호스트 시스템(120)은 또한 메모리 서브 시스템(110)이 PCIe 인터페이스에 의해 호스트 시스템(120)과 연결될 때 NVMe(NVM Express) 인터페이스를 이용하여 메모리 구성요소들(112A 내지 112N)에 액세스할 수 있다. 물리적 호스트 인터페이스는 메모리 서브 시스템(110)과 호스트 시스템(120) 사이에서 제어, 어드레스, 데이터, 및 다른 신호들을 전달하기 위한 인터페이스를 제공할 수 있다.
메모리 구성요소들(112A 내지 112N)은 상이한 유형들의 비휘발성 메모리 구성요소들 및/또는 휘발성 메모리 구성요소들의 임의의 조합을 포함할 수 있다. 비휘발성 메모리 구성요소들의 일례는 부정 곱(NAND) 유형 플래시 메모리를 포함한다. 메모리 구성요소들(112A 내지 112N) 각각은 단일 레벨 셀들(SLC들) 또는 다중 레벨 셀들(MLC들)(예를 들어, 삼중 레벨 셀들(TLC들) 또는 사중 레벨 셀들(QLC들))과 같은 메모리 셀들의 하나 이상의 어레이를 포함할 수 있다. 일부 실시 예들에서, 특정 메모리 구성요소는 메모리 셀들의 SLC 부분 및 MLC 부분 양자를 포함할 수 있다. 메모리 셀들 각각은 호스트 시스템(120)에 의해 사용되는 데이터의 하나 이상의 비트(예를 들어, 데이터 블록)를 저장할 수 있다. NAND 유형 플래시 메모리와 같은 비휘발성 메모리 구성요소들이 설명되지만, 메모리 구성요소들(112A 내지 112N)은 휘발성 메모리와 같은 임의의 다른 유형의 메모리에 기초할 수 있다. 일부 실시 예들에서, 메모리 구성요소들(112A 내지 112N)은 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 동적 랜덤 액세스 메모리(DRAM), 동기식 동적 랜덤 액세스 메모리(SDRAM), 상 변화 메모리(PCM), 자기 랜덤 액세스 메모리(MRAM), 부정 합(NOR) 플래시 메모리, 전기적으로 소거 가능한 프로그래밍 가능한 판독 전용 메모리(EEPROM), 및 비휘발성 메모리 셀들의 크로스 포인트 어레이일 수 있으나, 이에 제한되지는 않는다. 비휘발성 메모리의 크로스 포인트 어레이는 적층 가능한 크로스 그리드 데이터 액세스 어레이와 함께, 벌크 저항의 변화에 기초하여 비트 저장을 수행할 수 있다. 또한, 크로스 포인트 비휘발성 메모리는 많은 플래시 기반 메모리들과 달리, 제자리 기입 동작을 수행할 수 있으며, 이때 비휘발성 메모리 셀은 비휘발성 메모리 셀이 사전에 소거되지 않고도 프로그래밍될 수 있다. 뿐만 아니라, 메모리 구성요소들(112A 내지 112N)의 메모리 셀들은 데이터를 저장하는 데 사용되는 메모리의 유닛을 나타낼 수 있는 메모리 페이지들 또는 데이터 블록들로서 그룹화될 수 있다.
메모리 시스템 제어기(115)(이하 "제어기"라고 함)는 메모리 구성요소들(112A 내지 112N)에서의 데이터 판독, 데이터 기입 또는 데이터 소거와 같은 동작들 및 다른 이러한 동작들을 수행하기 위해 메모리 구성요소들(112A 내지 112N)과 통신할 수 있다. 제어기(115)는 하나 이상의 집적 회로 및/또는 개별 구성요소, 버퍼 메모리, 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 제어기(115)는 마이크로 제어기, 특수 목적 논리 회로부(예를 들어, 현장 프로그래밍 가능한 게이트 어레이(FPGA), 용도 특정 집적 회로(ASIC) 등), 또는 다른 적합한 프로세서일 수 있다. 제어기(115)는 로컬 메모리(119)에 저장된 명령어들을 실행하도록 구성된 프로세서(프로세싱 디바이스)(117)를 포함할 수 있다. 도시된 예에서, 제어기(115)의 로컬 메모리(119)는 메모리 서브 시스템(110)과 호스트 시스템(120) 사이의 통신을 핸들링하는 것을 포함하여, 메모리 서브 시스템(110)의 동작을 제어하는 다양한 프로세스들, 동작들, 논리 흐름들 및 루틴들을 수행하기 위한 명령어들을 저장하도록 구성된 내장 메모리를 포함한다. 일부 실시 예들에서, 로컬 메모리(119)는 메모리 포인터들, 페칭된 데이터 등을 저장하는 메모리 레지스터들을 포함할 수 있다. 로컬 메모리(119)는 또한 마이크로 코드를 저장하기 위한 판독 전용 메모리(ROM)를 포함할 수 있다. 도 1의 예시적인 메모리 서브 시스템(110)이 제어기(115)를 포함하는 것으로 도시되었지만, 본 개시의 또 다른 실시 예에서, 메모리 서브 시스템(110)은 제어기(115)를 포함하지 않을 수 있고, 대신에 외부 제어(예를 들어, 외부 호스트에 의해, 또는 메모리 서브 시스템과 별개인 프로세서 또는 제어기에 의해 제공되는)에 의존할 수 있다.
일반적으로, 제어기(115)는 호스트 시스템(120)으로부터 커맨드들 또는 동작들을 수신할 수 있고 커맨드들 또는 동작들을 메모리 구성요소들(112A 내지 112N)에 대한 목적하는 액세스를 달성하기 위한 명령어들 또는 적절한 커맨드들로 변환할 수 있다. 제어기(115)는 웨어 레벨링 동작들, 가비지 수집 동작들, 에러 검출 및 에러 정정 코드(ECC, error-correcting code) 동작들, 암호화 동작들, 캐싱 동작들, 및 메모리 구성요소들(112A 내지 112N)과 연관된 논리적 블록 어드레스와 물리적 블록 어드레스 사이의 어드레스 변환과 같은 다른 동작들도 담당할 수 있다. 제어기(115)는 또한 물리적 호스트 인터페이스를 통해 호스트 시스템(120)과 통신하기 위한 호스트 인터페이스 회로부를 포함할 수 있다. 호스트 인터페이스 회로부는 호스트 시스템으로부터 수신된 커맨드들을 메모리 구성요소들(112A 내지 112N)에 액세스하기 위한 커맨드 명령어들로 변환할 뿐만 아니라 메모리 구성요소들(112A 내지 112N)과 연관된 응답들을 호스트 시스템(120)에 대한 정보로 변환할 수도 있다.
메모리 서브 시스템(110)은 또한 도시되지 않은 추가 회로부 또는 구성요소들도 포함할 수 있다. 일부 실시 예들에서, 메모리 서브 시스템(110)은 메모리 구성요소들(112A 내지 112N)에 액세스하기 위한 어드레스를 제어기(115)로부터 수신하고 이 어드레스를 디코딩할 수 있는 어드레스 회로부(예를 들어, 로우 디코더 및 컬럼 디코더) 및 캐시 또는 버퍼(예를 들어, DRAM)를 포함할 수 있다.
메모리 서브 시스템(110)은 메모리 구성요소들(112A 내지 112N)에의 원자적 기입 동작이 완료될 때까지 논리적-물리적 어드레스 테이블들에 대한 업데이트들을 누적할 수 있는 테이블 업데이트 누적기(113)를 포함한다. 일부 실시 예들에서, 제어기(115)는 테이블 업데이트 누적기(113)의 적어도 일 부분을 포함한다. 예를 들어, 제어기(115)는 본 명세서에서 설명된 동작들을 수행하기 위한 로컬 메모리(119)에 저장된 명령어들을 실행하도록 구성된 프로세서(117)(프로세싱 디바이스)를 포함할 수 있다. 일부 실시 예들에서, 테이블 업데이트 누적기(113)는 호스트 시스템(110), 애플리케이션, 또는 운영 체제의 일부이다.
테이블 업데이트 누적기(113)는 데이터의 전체 원자가 기입될 메모리 구성요소로 전송된 것으로서 확정될 때까지 변환 테이블 업데이트들을 누적한다. 테이블 업데이트 누적기(113)의 동작들에 관한 추가 세부 사항들은 아래에 설명된다.
도 2는 본 개시의 일부 실시 예들에 따른, 기입들에서의 원자성을 관리하는 예시적인 방법(200)의 흐름도이다. 방법(200)은 하드웨어(예를 들어, 프로세싱 디바이스, 회로부, 전용 로직, 프로그래밍 가능한 로직, 마이크로 코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 프로세싱 디바이스 상에서 운영 또는 실행되는 명령어들), 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일부 실시 예들에서, 방법(200)은 도 1의 테이블 업데이트 누적기(113)를 사용하여 수행된다. 특정 시퀀스 또는 순서로 도시되지만, 달리 특정되지 않는 한, 프로세스들의 순서는 변경될 수 있다. 이에 따라, 도시된 실시 예들은 예들로서만 이해되어야 하고, 도시된 프로세스들은 상이한 순서로 수행될 수 있으며, 일부 프로세스들은 병렬적으로 수행될 수도 있다. 또한, 다양한 실시 예들에서 하나 이상의 프로세스가 생략될 수도 있다. 이에 따라, 모든 프로세스들이 모든 실시 예에서 필수적인 것은 아니다. 다른 프로세스 흐름들도 가능하다.
블록 205에서, 프로세싱 디바이스는 메모리 구성요소에 데이터의 일 부분을 기입하기 위한 제1 명령어를 수신한다. 일 실시예에서, 제1 명령어는 논리적 블록 어드레스들의 범위에 제1 데이터의 원자적 기입을 요청한다. 일 실시예에서, 프로세싱 디바이스는 로컬 메모리(119)에 저장될 수 있는 변환 테이블들(도시되지 않음)을 사용하여 논리적 블록 어드레스들을 물리적 어드레스들로 변환한다. 예를 들어, 프로세싱 디바이스는 플래시 변환 계층(FTL, flash translation layer) 테이블 또는 또 다른 논리적-물리적 변환 테이블을 사용할 수 있다. 일 실시 예에서, 제1 데이터의 크기는 하나보다 많은 기입 커맨드가 메모리 구성요소(예를 들어, 메모리 구성요소(112A))로 전송될 것을 필요로 한다.
블록 210에서, 프로세싱 디바이스는 하나 이상의 원자성 표시자를 포함하는, 제1 데이터에 대한 제1 복수의 기입 커맨드들을 생성한다. 예를 들어, 프로세싱 디바이스는 데이터의 각 청크가 단일 기입 커맨드를 통해 메모리 구성요소에 기입될 수 있도록 데이터를 청크들로 분할한다. 일 실시예에서, 프로세싱 디바이스는 "원자의 종료(end of atom)" 표시자를 마지막 기입 커맨드 및 데이터의 청크에 할당한다. 또 다른 실시예에서, 제1 데이터와 연관된 각 기입 커맨드에는 원자성 표시자, 이를테면 원자의 시작, 중간, 및 종료가 할당된다. 기입 커맨드들은 또한 기입 커맨드가 어느 원자적 기입 명령어와 연관되는지를 표시하는 원자적 섹션 식별자를 포함할 수도 있다. 프로세싱 디바이스는 하나 이상의 원자성 표시자를 데이터의 대응하는 청크(들)와 함께 기입될 메타 데이터로서 추가한다.
블록 215에서, 프로세싱 디바이스는 제1 복수의 기입 커맨드들을 메모리 구성요소로 전송한다. 일 실시예에서, 프로세싱 디바이스는 기입 커맨드를 메모리 구성요소로 전송하기 전에 메모리 구성요소로 전송될 기입 커맨드들에서의 데이터를 특정 데이터량(예를 들어, 64kb)까지 모은다. 대조적으로, 일례에서, 예를 들어, 호스트 시스템(110)으로부터 수신된 원자적 기입 명령어는 원자적으로 기입될 256kb까지의 데이터를 포함할 수 있다. 이 예에서, 프로세싱 디바이스는 기입 명령어를 64kb의 네 개의 기입 커맨드들로 분할한다. 네 개의 기입 커맨드들 각각은 마지막 기입 커맨드에서의 원자의 종료 표시자를 포함하여, 원자성 표시자를 포함한다. 예를 들어, 원자성 표시자들은 원자의 시작(start-of-atom) 표시자, 원자성 지속(atomicity-continued) 표시자, 및 전원자(full-atom) 표시자(예를 들어, 기입 명령어가 분할되지 않고 단일 커맨드에 맞는 경우)를 포함할 수 있다. 다른 실시 예들에서, 원자적 기입 명령어들은 원자적으로 기입될 수 있는 원자적 크기 한계(예를 들어, 256kb)까지의 데이터를 포함할 수 있다. 메모리 구성요소에 대한 기입 커맨드들은 메모리 구성요소로 기입 커맨드를 전송하기 전에 기입 커맨드에 프로세싱 디바이스가 모을 수 있는 최적 기입 커맨드 크기 한계의 데이터(예를 들어, 64kb)를 포함할 수 있다. 기입 커맨드들은 메모리 구성요소에서의 로직에 의한 프로세싱을 위해 버스를 통해 메모리 구성요소로 전송될 수 있다. 일 실시 예에서, 기입 커맨드들은 메모리 구성요소에 대해 가장 효율적인 속도로 메모리 구성요소로 전송되며, 이는 기입 커맨드를 전송하기 전에 얼마나 많은 데이터(상기한 예에서 64kb)가 누적되는지를 조절함으로써 조정될 수 있다. 일 실시 예에서, 호스트 시스템으로부터의 다수의 기입 명령어들은 다수의 상이한 원자적 기입 명령어들을 포함하여, 병렬로 프로세싱된다.
블록 220에서, 프로세싱 디바이스는 제1 복수의 기입 커맨드들에 대응하는 복수의 변환 테이블 업데이트들을 누적한다. 일 실시 예에서, 원자적 기입 명령어와 연관된 각 기입 커맨드는 데이터의 청크가 메모리 구성요소에 기입되게 한다. 데이터의 청크의 성공적인 기입은 호스트 시스템에 의해 예상된 논리적 어드레스가 청크가 기입되는 메모리 구성요소에서의 물리적 위치를 가리키도록 변환 테이블에 대한 대응하는 업데이트를 필요로 한다. 원자적 기입에서 데이터는 전체적으로 기입되거나 전혀 기입되지 않는다. 일 실시 예에서, 데이터의 청크들 또는 부분들이 수신됨에 따라 이것들이 메모리 구성요소(들)에 기입되는 동안, 기입의 원자적 특성은 데이터의 전체 원자가 메모리 구성요소 (들) 에 기입되었음을 확정할 때까지 변환 테이블들에 대한 업데이트들을 지연시킴으로써 실현된다. 프로세싱 디바이스가 변환 테이블들을 업데이트할 때까지, 호스트(110)로부터의 요청들은 원자성이 유지되도록 원자적 기입에 포함된 데이터의 기입된 부분에 액세스할 수 없다.
블록 225에서, 프로세싱 디바이스는 마지막 기입 커맨드가 메모리 구성요소로 성공적으로 전송되었다고 결정하는 것에 응답하여 하나 이상의 변환 테이블을 복수의 변환 테이블 업데이트들로 업데이트한다. 일 실시 예에서, 원자는 원자와 연관된 모든 기입 커맨드들이 메모리 구성요소에 의해 확정될 때 완전히 기입된 것으로 고려된다. 예를 들어, 프로세싱 디바이스는 메모리 구성요소가 "원자의 종료" 표시자를 포함하는 데이터의 마지막 청크의 기입의 성공을 확정할 때 전체 원자가 기입됨을 검출할 수 있다. 일 실시 예에서, 원자적 기입은 메모리 서브 시스템이 호스트 시스템로부터 원자적 기입의 데이터의 전부를 수신하는 것을 막거나 프로세싱 디바이스가 기입 명령어와 연관된 하나 이상의 기입 커맨드를 메모리 구성요소로 전송하는 것을 막는 실패(예를 들어, 예상치 못한 전력 손실)에 의해 인터럽트될 수 있다. 실패로부터 복구할 때, 처리 디바이스가 원자의 종료 원자성 표시자에 의해 표시된 마지막 기입 커맨드가 실패 이전에 메모리 구성요소에 의해 완료되지 않았다고 결정하면, 프로세싱 디바이스는 누적된 변환 테이블 업데이트들을 폐기함으로써 원자적 기입을 중단할 것이다. 예를 들어, 프로세싱 디바이스는 가비지 수집을 위해 불완전한 원자적 기입의 대상이 된 임의의 데이터를 플래깅한다. 복구의 또 다른 실시 예에서, 프로세싱 디바이스가 원자적 기입 명령어와 연관된 기입 커맨드들이 메모리 구성요소에 성공적으로 기입되었지만 변환 테이블들이 업데이트되지 않았다고 결정하면, 프로세싱 디바이스는 원자적 기입 완료 실패로부터 복구할 때 변환 테이블들을 업데이트할 수 있다. 예를 들어, 프로세싱 디바이스는 메모리 구성요소들을 판독하고 "원자의 종료" 표시자를 포함하는 데이터의 마지막 청크가 하나 이상의 메모리 구성요소에 기입되었음을 검출할 수 있다. 이 실시 예에서, 누적 변환 테이블들은 비휘발성 매체들(예를 들어, 메모리 구성요소(들)(112A-112N))에 저장된다.
도 3은 본 개시의 일부 실시 예들에 따른, 기입들에서의 원자성을 관리하는 예시적인 방법(300)의 흐름도이다. 방법(300)은 하드웨어(예를 들어, 프로세싱 디바이스, 회로부, 전용 로직, 프로그래밍 가능한 로직, 마이크로 코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 프로세싱 디바이스 상에서 운영 또는 실행되는 명령어들), 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일부 실시 예들에서, 방법(300)은 도 1의 테이블 업데이트 누적기(113)를 사용하여 수행된다. 특정 시퀀스 또는 순서로 도시되지만, 달리 특정되지 않는 한, 프로세스들의 순서는 변경될 수 있다. 이에 따라, 도시된 실시 예들은 예들로서만 이해되어야 하고, 도시된 프로세스들은 상이한 순서로 수행될 수 있으며, 일부 프로세스들은 병렬적으로 수행될 수도 있다. 또한, 다양한 실시 예들에서 하나 이상의 프로세스가 생략될 수도 있다. 이에 따라, 모든 프로세스들이 모든 실시 예에서 필수적인 것은 아니다. 다른 프로세스 흐름들도 가능하다.
블록 305에서, 프로세싱 디바이스는 (예를 들어, 도 2를 참조하여 설명된) 제1 기입 명령어의 논리적 블록 어드레스들의 범위와 중복되는 논리적 블록 어드레스들의 범위를 포함하는 메모리 구성요소에 제2 데이터를 기입하기 위한 제2 원자적 기입 명령어를 수신한다. 예를 들어, 프로세싱 디바이스는 논리적 블록 어드레스들의 중복되는 범위들에 관한 기입 명령어들을 검출할 수 있다. 두 개의 원자적 기입 명령어들의 원자적 특성을 유지하기 위해, 프로세싱 디바이스는 메모리에서의 결과적인 데이터가 제1 원자적 기입 명령어 다음에 제2 원자적 기입 명령어를 반영하거나 또는 그 반대로 반영하도록 두 개의 원자적 기입 명령어들을 직렬화한다. 일 실시 예에서, 프로세싱 디바이스는 제1 원자적 기입 명령어로부터의 모든 데이터가 메모리 구성요소(들)에 기입된 다음 제2 원자적 기입 명령어로부터 데이터의 전부가 기입되거나, 또는 그 반대도 가능하나, 인터리빙되지 않는 것을 보장한다. 또 다른 실시 예에서, 프로세싱 디바이스는 중복되는 논리적 블록 어드레스 범위가 동시에 기입되는 것을 방지하고 어느 기입 명령어가 모든 중복되는 논리적 블록 어드레스 범위에서 우세한지를 결정함으로써 (예를 들어, 잠금 또는 코히어런시 관리기를 통해) 기입 명령어들을 인터리빙하고 데이터 코히어런시를 보장한다.
일 실시 예에서, 프로세싱 디바이스는 원자적 기입 명령어에 의해 타겟이 되는 메모리의 영역 상에 잠금을 생성함으로써 원자적 기입 명령어들을 직렬화한다. 잠금은 잠금을 담당하는 기입 명령어가 완료되는 후까지 프로세싱 디바이스로 하여금 메모리의 잠금 영역의 일 부분을 포함하는 다른 기입 커맨드들의 프로세싱이 진행하는 것을 차단한다. 예를 들어, 프로세싱 디바이스는 제1 기입 명령어에 의해 타겟디이 되는 메모리의 영역을 잠금할 수 있고 제1기입 명령어가 완료되는 후까지 제2 기입 명령어가 진행하는 것을 차단할 수 있다.
블록 310에서, 프로세싱 디바이스는 도 2의 블록 210과 관련하여 설명된 제1 복수의 기입 커맨드들을 생성하는 것과 유사하게 제2 데이터에 대한 제2 복수의 기입 커맨드들을 생성한다.
블록 315에서, 프로세싱 디바이스는 제2 복수의 기입 커맨드들을 메모리 구성요소로 전송한다. 일 실시 예에서, 프로세싱 디바이스는 제1 복수의 기입 커맨드들을 제2 복수의 기입 커맨드들 전에 메모리 구성요소(들)로 전송한다. 예를 들어, 프로세싱 디바이스는 제1 복수의 기입 커맨드들의 완료 또는 제1 복수 기입 커맨드들의 중복되는 부분의 완료에 응답하여 제2 복수 기입 커맨드들을 메모리 구성요소에 전송할 수 있다. 이 실시 예에서, 메모리 구성요소(들)는 비휘발성 메모리에 제2 기입 명령어에서의 데이터 부분의 전부를 저장할 것인 한편, 메모리 제어기(들)는 제2 판독 명령어에서의 데이터의 부분과 중복되지 않는 제1 기입 명령어에 포함된 데이터의 부분의 하나 이상의 블록을 저장할 것이다. 일 실시 예에서, 프로세싱 디바이스는 제1 복수의 기입 커맨드들과 중복되는 블록 어드레스들에 대한 잠금의 해제에 응답하여 제2 복수의 기입 커맨드들을 전송하기 시작한다.
도 4는 기계로 하여금 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하게 하기 위한 명령어들의 세트가 실행될 수 있는 컴퓨터 시스템(400)의 예시적인 기계를 도시한다. 일부 실시 예들에서, 컴퓨터 시스템(400)은 메모리 서브 시스템(예를 들어, 도 1의 메모리 서브 시스템(110))을 포함하거나, 이에 연결되거나, 또는 이를 이용하는 호스트 시스템(예를 들어, 도 1의 호스트 시스템(120))에 대응할 수 있거나 제어기의 동작들을 수행하는 데(예를 들어, 도 1의 테이블 업데이트 누적기(113)에 대응하는 동작들을 수행하기 위해 운영 체제를 실행하는 데) 사용될 수 있다. 대안적인 실시 예들에서, 기계는 LAN, 인트라넷, 엑스트라넷, 및/또는 인터넷으로 다른 기계들에 접속(예를 들어, 네트워킹)될 수 있다. 기계는 클라이언트-서버 네트워크 환경에서의 서버 또는 클라이언트 기계로서, 피어-투-피어(또는 분산) 네트워크 환경에서의 피어 기계로서, 또는 클라우드 컴퓨팅 인프라스트럭처 또는 환경에서의 서버 또는 클라이언트 기계로서 동작할 수 있다.
기계는 개인용 컴퓨터(PC), 태블릿 PC, 셋탑 박스(STB), 개인용 정보 단말기(PDA), 휴대 전화, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브릿지, 또는 해당 기계에 의해 취해질 동작들을 지정하는 명령어들의 세트(순차적 또는 다른 방식)를 실행할 수 있는 임의의 기계일 수 있다. 나아가, 단일 기계가 도시되지만, "기계"라는 용어는 또한 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위한 명령어들의 세트(또는 다수의 세트들)를 개별적으로 또는 공동으로 실행하는 임의의 기계 모음을 포함하는 것으로 취해져야 한다.
예시적인 컴퓨터 시스템(400)은 버스(430)를 통해 서로 통신하는, 프로세싱 디바이스(402), 메인 메모리(404)(예를 들어, 판독 전용 메모리(ROM), 플래시 메모리, 동적 랜덤 액세스 메모리(DRAM) 이를테면 동기식 DRAM(SDRAM) 또는 램버스 DRAM(RDRAM) 등), 고정 메모리(406)(예를 들어, 플래시 메모리, 고정 랜덤 액세스 메모리(SRAM) 등), 및 데이터 저장 시스템(418)을 포함한다.
프로세싱 디바이스(402)는 마이크로 프로세서, 중앙 프로세싱 유닛 등과 같은 하나 이상의 범용 프로세싱 디바이스를 나타낸다. 보다 구체적으로, 프로세싱 디바이스는 복합 명령어 세트 컴퓨팅(CISC, complex instruction set computing) 마이크로 프로세서, 축소 명령어 세트 컴퓨팅(RISC, reduced instruction set computing) 마이크로 프로세서, 훨씬 긴 명령어(VLIW, very long instruction word) 마이크로 프로세서, 또는 다른 명령어 세트들을 구현하는 프로세서, 또는 명령어 세트들의 조합을 구현하는 프로세서들일 수 있다. 프로세싱 디바이스(402)는 또한 용도 특정 집적 회로(ASIC), 현장 프로그래밍 가능한 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 프로세싱 디바이스일 수 있다. 프로세싱 디바이스(402)는 본 명세서에서 논의된 동작들 및 단계들을 수행하기 위한 명령어들(426)을 실행하도록 구성된다. 컴퓨터 시스템(400)은 네트워크(420)를 통해 통신하기 위한 네트워크 인터페이스 디바이스(408)를 더 포함할 수 있다.
데이터 저장 시스템(418)은 본 명세서에서 설명된 방법론들 또는 기능들 중 임의의 하나 이상을 구현하는 명령어들의 하나 이상의 세트(426) 또는 소프트웨어가 저장되는 기계 판독 가능한 저장 매체(424)(컴퓨터 판독 가능한 매체라고도 함)를 포함할 수 있다. 명령어들(426)은 또한 기계 판독 가능한 저장 매체들을 또한 구성하는 컴퓨터 시스템(400), 메인 메모리(404) 및 프로세싱 디바이스(402)에 의한 이것들의 실행 동안 메인 메모리(404) 내에 그리고/또는 프로세싱 디바이스(402) 내에 완전히 또는 적어도 부분적으로 상주할 수 있다. 기계 판독 가능한 저장 매체(424), 데이터 저장 시스템(418), 및/또는 메인 메모리(404)는 도 1의 메모리 시스템(110)에 대응할 수 있다.
일 실시 예에서, 명령어들(426)은 테이블 업데이트 누적기(예를 들어, 도 1의 테이블 업데이트 누적기(113))에 대응하는 기능을 구현하기 위한 명령어들을 포함한다. 기계 판독 가능한 저장 매체(424)가 예시적인 실시 예에서 단일 매체인 것으로 도시되지만, "기계 판독 가능한 저장 매체"라는 용어는 명령어들의 하나 이상의 세트를 저장하는 단일의 매체 또는 다수의 매체들을 포함하는 것으로 취해져야 한다. "기계 판독 가능한 매체"라는 용어는 또한 기계에 의한 실행을 위한 명령어들의 세트를 저장하거나 인코딩할 수 있고 기계로 하여금 본 개시의 방법론들 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함하는 것으로 취해져야 한다. 이에 따라, "기계 판독 가능한 저장 매체"라는 용어는 고체 상태 메모리들, 광학 매체들, 및 자기 매체들을 포함하지만, 이에 제한되지는 않는 것으로 취해져야 한다.
선행하는 발명을 실시하기 위한 구체적인 내용의 일부 부분들은 컴퓨터 메모리 내의 데이터 비트들에 관한 동작들의 알고리즘들 및 상징적 표현들과 관련하여 제시되었다. 이러한 알고리즘적 설명 및 표현들은 데이터 프로세싱 분야의 통상의 기술자들에 의해 자신들의 작업 내용을 해당 기술분야의 다른 통상의 기술자들에게 가장 효과적으로 전달하는 데 사용되는 방식들이다. 알고리즘은 본 명세서에서, 그리고 일반적으로 요구되는 결과를 도출하는 동작들의 자기 일관적인 시퀀스인 것으로 구상된다. 동작들은 물리적 수량들의 물리적 조작들을 필요로 하는 것들이다. 반드시 그렇지는 아니지만, 일반적으로, 이러한 수량들은 저장, 조합, 비교, 및 이와 다른 방식으로 조작될 수 있는 전기적 또는 자기적 신호들의 형태를 띤다. 주로 일반적인 용법의 이유로, 이러한 신호들을 비트들, 값들, 요소들, 심볼들, 문자들, 용어들, 숫자들 등으로서 나타내는 것이 때때로 편리한 것으로 입증되었다.
그러나, 이러한 그리고 유사한 용어들은 모두 적절한 물리적 수량들과 연관되어야 하고 이러한 수량들에 적용되는 편리한 라벨들일 뿐임을 명심해야 한다. 본 개시는 컴퓨터 시스템, 또는 컴퓨터 시스템의 레지스터들 및 메모리들 내 물리적(전자적) 수량들로서 표현된 데이터를 조작하고 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 이러한 정보 저장 시스템들 내 물리적 수량들로서 유사하게 표현되는 다른 데이터로 변환하는 유사한 전자 컴퓨팅 디바이스의 동작 및 프로세스들을 나타낼 수 있다.
본 개시는 또한 본 명세서에서의 동작들을 수행하기 위한 장치에 관한 것이다. 이러한 장치는 의도된 목적들을 위해 특별히 구성될 수 있거나, 이는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 예를 들어, 컴퓨터 시스템 또는 다른 데이터 프로세싱 시스템, 이를테면 제어기(115)는 이의 프로세서가 메모리 또는 다른 비일시적인 기계 판독 가능한 저장 매체에 포함된 컴퓨터 프로그램(예를 들어, 명령어들의 시퀀스)을 실행하는 것에 응답하여 컴퓨터 구현 방법들(200 및 300)을 수행할 수 있다. 이러한 컴퓨터 프로그램은 컴퓨터 판독 가능한 저장 매체 이를테면 이에 제한되지는 않지만, 각각 컴퓨터 시스템 버스에 결합되는, 플로피 디스크, 광학 디스크, CD-ROM, 및 자기 광학 디스크, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), EPROM, EEPROM, 자기 또는 광학 카드, 또는 전자 명령어들을 저장하는 데 적합한 임의의 유형의 매체를 포함하는 임의의 유형의 디스크에 저장될 수 있다.
본 명세서에서 제시된 알고리즘들 및 디스플레이들은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치와 관련되는 것은 아니다. 다양한 범용 시스템들이 본 명세서에서의 교시에 따른 프로그램들과 함께 사용될 수 있거나, 방법을 수행하기 위해 보다 특화된 장치를 구성하는 것이 편리함이 증명될 수 있다. 이러한 다양한 시스템들에 대한 구조는 아래의 설명에서 제시된 바와 같이 나타날 것이다. 또한, 본 개시는 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 본 명세서에서 설명된 바와 같이 본 개시의 교시를 구현하는 데 다양한 프로그래밍 언어들이 사용될 수 있다는 것이 이해될 것이다.
본 개시는 컴퓨터 프로그램 제품, 또는 소프트웨어로서 제공될 수 있으며, 이는 본 개시에 따라 프로세스를 수행하기 위해 컴퓨터 시스템(또는 다른 전자 디바이스들)을 프로그래밍하는 데 사용될 수 있는 명령어들을 저장한 기계 판독 가능한 매체를 포함할 수 있다. 기계 판독 가능한 매체는 기계(예를 들어, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 일부 실시 예들에서, 기계 판독 가능한(예를 들어, 컴퓨터 판독 가능한) 매체는 기계(예를 들어, 컴퓨터) 판독 가능한 저장 매체 이를테면 판독 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 구성요소들 등을 포함한다.
앞에서의 명세서에서, 본 개시의 실시 예들은 이의 구체적인 예시적인 실시 예들을 참조하여 설명되었다. 다음의 청구항들에 제시된 바와 같이 본 개시의 실시 예들의 보다 넓은 사상 및 범위로부터 벗어나지 않고 다양한 변경이 이루어질 수 있음이 명백할 것이다. 따라서, 본 명세서 및 도면들은 제한적인 의미가 아니라 예시적인 의미로 간주되어야 한다.

Claims (20)

  1. 컴퓨터 구현 방법에 있어서,
    제어기에 의해, 호스트 시스템으로부터, 메모리 구성요소에 데이터의 제1 부분을 기입하기 위한 제1 명령어를 수신하는 단계로서, 상기 제1 명령어는 상기 데이터의 제1 부분의 원자적 기입(atomic write)이고, 상기 데이터의 제1 부분의 크기는 하나보다 많은 기입 커맨드가 상기 메모리 구성요소로 전송될 것을 필요로 하는, 상기 제1 명령어를 수신하는 단계;
    상기 제어기에 의해, 상기 제1 명령어를 수신하는 것에 응답하여, 상기 데이터의 제1 부분에 대한 제1 복수의 기입 커맨드들을 생성하는 단계로서, 마지막 기입 커맨드는 원자의 종료(end-of-atom) 원자성 표시자(atomicity indicator)를 포함하는, 상기 제1 복수의 기입 커맨드들을 생성하는 단계;
    상기 제1 복수의 기입 커맨드들을 상기 메모리 구성요소로 전송하는 단계;
    상기 제1 복수의 기입 커맨드들에 대응하는 복수의 변환 테이블 업데이트들을 누적하는 단계; 및
    상기 마지막 기입 커맨드가 상기 메모리 구성요소로 성공적으로 전송되었다고 결정하는 것에 응답하여 하나 이상의 변환 테이블을 상기 복수의 변환 테이블 업데이트들로 업데이트하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 하나 이상의 변환 테이블은 상기 메모리 구성요소에서의 논리적 블록 어드레스들로부터 물리적 어드레스들로의 매핑을 포함하는 것인, 방법.
  3. 제1항에 있어서, 각 기입 커맨드는 원자성 표시자를 포함하는 것인, 방법.
  4. 제1항에 있어서, 상기 제1 명령어는 상기 데이터의 제1 부분을 기입할 곳을 지정하는 논리적 블록 어드레스들의 제1 범위를 포함하고, 또한:
    상기 논리적 블록 어드레스들의 제1 범위에 대한 잠금을 행하는 단계를 더 포함하되, 상기 잠금은 상기 호스트 시스템이 상기 논리적 블록 어드레스들의 제1 범위에 기입하는 것을 방지하는 것인, 방법.
  5. 제4항에 있어서,
    상기 마지막 기입 커맨드가 상기 메모리 구성요소로 성공적으로 전송되었다고 결정하는 것에 응답하여 상기 논리적 블록 어드레스들의 제1 범위에 대한 상기 잠금을 해제하는 단계를 더 포함하는, 방법.
  6. 제5항에 있어서,
    상기 호스트 시스템으로부터, 데이터의 제2 부분을 상기 메모리 구성요소에 기입하기 위한 제2 명령어를 수신하는 단계로서, 상기 제2 명령어는 논리적 블록 어드레스들의 제2 범위를 포함하고, 상기 논리적 블록 어드레스들의 제2 범위는 상기 논리적 블록 어드레스들의 제1 범위와 중복되는, 상기 제2 명령어를 수신하는 단계;
    상기 데이터의 제2 부분에 대한 제2 복수의 기입 커맨드들을 생성하는 단계; 및
    상기 제2 복수의 기입 커맨드들을 상기 메모리 구성요소로 전송하는 단계로서, 상기 제1 복수의 기입 커맨드들 및 상기 제2 복수의 기입 커맨드들은 상기 메모리 구성요소가 상기 데이터의 제1 부분의 전부를 그리고 상기 데이터의 제2 부분의 전부보다 적은 부분을 상기 논리적 블록 어드레스들의 제2 범위에서의 하나 이상의 논리적 블록 어드레스에 연접하여 저장하게 하되, 상기 하나 이상의 논리적 블록 어드레스는 상기 논리적 블록 어드레스들의 제1 범위와 중복되지 않는, 상기 제2 복수의 기입 커맨드들을 전송하는 단계를 더 포함하는, 방법.
  7. 제6항에 있어서, 상기 제1 명령어는 상기 호스트 시스템 상에서 실행하는 제1 프로세스로부터 수신되고, 상기 제2 명령어는 상기 호스트 시스템 상에서 실행하는 제2 프로세스로부터 수신되는 것인, 방법.
  8. 명령어들을 포함하는 비일시적인 컴퓨터 판독 가능한 저장 매체로서, 상기 명령어들은 프로세싱 디바이스에 의해 실행될 때, 상기 프로세싱 디바이스로 하여금:
    제어기에 의해, 호스트 시스템으로부터, 메모리 구성요소에 데이터의 제1 부분을 기입하기 위한 제1 명령어를 수신하게 하되, 상기 제1 명령어는 상기 데이터의 제1 부분의 원자적 기입이고, 상기 데이터의 제1 부분의 크기는 하나보다 많은 기입 커맨드가 상기 메모리 구성요소로 전송될 것을 필요로 하는 것이고;
    상기 제어기에 의해, 상기 제1 명령어를 수신하는 것에 응답하여, 상기 데이터의 제1 부분에 대한 제1 복수의 기입 커맨드들을 생성하게 하되, 마지막 기입 커맨드는 원자의 종료 원자성 표시자를 포함하는 것이고;
    상기 제1 복수의 기입 커맨드들을 상기 메모리 구성요소로 전송하게 하고;
    상기 제1 복수의 기입 커맨드들에 대응하는 복수의 변환 테이블 업데이트들을 누적하게 하며;
    상기 마지막 기입 커맨드가 상기 메모리 구성요소로 성공적으로 전송되었다고 결정하는 것에 응답하여 하나 이상의 변환 테이블을 상기 복수의 변환 테이블 업데이트들로 업데이트하게 하는 것인, 비일시적인 컴퓨터 판독 가능한 저장 매체.
  9. 제8항에 있어서, 상기 하나 이상의 변환 테이블은 상기 메모리 구성요소에서의 논리적 블록 어드레스들로부터 물리적 어드레스들로의 매핑을 포함하는 것인, 비일시적인 컴퓨터 판독 가능한 저장 매체.
  10. 제8항에 있어서, 각 기입 커맨드는 원자성 표시자를 포함하는 것인, 비일시적인 컴퓨터 판독 가능한 저장 매체.
  11. 제8항에 있어서, 상기 제1 명령어는 상기 데이터의 제1 부분을 기입할 곳을 지정하는 논리적 블록 어드레스들의 제1 범위를 포함하고, 또한:
    상기 논리적 블록 어드레스들의 제1 범위에 대한 잠금을 행하게 하는 것을 더 포함하되, 상기 잠금은 상기 호스트 시스템이 상기 논리적 블록 어드레스들의 제1 범위에 기입하는 것을 방지하는 것인, 비일시적인 컴퓨터 판독 가능한 저장 매체.
  12. 제11항에 있어서,
    상기 마지막 기입 커맨드가 상기 메모리 구성요소로 성공적으로 전송되었다고 결정하는 것에 응답하여 상기 논리적 블록 어드레스들의 제1 범위에 대한 상기 잠금을 해제하게 하는 것을 더 포함하는, 비일시적인 컴퓨터 판독 가능한 저장 매체.
  13. 제12항에 있어서, 상기 프로세싱 디바이스는 또한:
    상기 호스트 시스템으로부터, 데이터의 제2 부분을 상기 메모리 구성요소에 기입하기 위한 제2 명령어를 수신하되, 상기 제2 명령어는 논리적 블록 어드레스들의 제2 범위를 포함하고, 상기 논리적 블록 어드레스들의 제2 범위는 상기 논리적 블록 어드레스들의 제1 범위와 중복되는 것이고;
    상기 데이터의 제2 부분에 대한 제2 복수의 기입 커맨드들을 생성하며;
    상기 제2 복수의 기입 커맨드들을 상기 메모리 구성요소로 전송하되, 상기 제1 복수의 기입 커맨드들 및 상기 제2 복수의 기입 커맨드들은 상기 메모리 구성요소가 상기 데이터의 제1 부분의 전부를 그리고 상기 데이터의 제2 부분의 전부보다 적은 부분을 상기 논리적 블록 어드레스들의 제2 범위에서의 하나 이상의 논리적 블록 어드레스에 연접하여 저장하게 하되, 상기 하나 이상의 논리적 블록 어드레스는 상기 논리적 블록 어드레스들의 제1 범위와 중복되지 않는 것인, 비일시적인 컴퓨터 판독 가능한 저장 매체.
  14. 제13항에 있어서, 상기 제1 명령어는 상기 호스트 시스템 상에서 실행하는 제1 프로세스로부터 수신되고, 상기 제2 명령어는 상기 호스트 시스템 상에서 실행하는 제2 프로세스로부터 수신되는 것인, 비일시적인 컴퓨터 판독 가능한 저장 매체.
  15. 시스템에 있어서,
    메모리 구성요소; 및
    상기 메모리 구성요소와 작동 가능하게 연결되는 프로세싱 디바이스로서:
    호스트 시스템으로부터, 상기 메모리 구성요소에 데이터의 제1 부분을 기입하기 위한 제1 명령어를 수신하되, 상기 제1 명령어는 상기 데이터의 제1 부분의 원자적 기입이고, 상기 데이터의 제1 부분의 크기는 하나보다 많은 기입 커맨드가 상기 메모리 구성요소로 전송될 것을 필요로 하며, 상기 제1 명령어는 상기 데이터의 제1 부분을 기입할 곳을 지정하는 논리적 블록 어드레스들의 제1 범위를 포함하는 것이고;
    상기 논리적 블록 어드레스들의 제1 범위에 대한 잠금을 행하되, 상기 잠금은 상기 호스트 시스템이 상기 논리적 블록 어드레스들의 제1 범위에 기입하는 것을 방지하는 것이고;
    상기 제1 명령어를 수신하는 것에 응답하여, 상기 데이터의 제1 부분에 대한 제1 복수의 기입 커맨드들을 생성하되, 마지막 기입 커맨드는 원자의 종료 원자성 표시자를 포함하는 것이고;
    상기 제1 복수의 기입 커맨드들을 상기 메모리 구성요소로 전송하고;
    상기 제1 복수의 기입 커맨드들에 대응하는 복수의 변환 테이블 업데이트들을 누적하며;
    상기 마지막 기입 커맨드가 상기 메모리 구성요소로 성공적으로 전송되었다고 결정하는 것에 응답하여 하나 이상의 변환 테이블을 상기 복수의 변환 테이블 업데이트들로 업데이트하는, 상기 프로세싱 디바이스를 포함하는, 시스템.
  16. 제15항에 있어서, 상기 하나 이상의 변환 테이블은 상기 메모리 구성요소에서의 논리적 블록 어드레스들로부터 물리적 어드레스들로의 매핑을 포함하는 것인, 시스템.
  17. 제15항에 있어서, 각 기입 커맨드는 원자성 표시자를 포함하는 것인, 시스템.
  18. 제17항에 있어서, 상기 프로세싱 디바이스는 또한:
    상기 마지막 기입 커맨드가 상기 메모리 구성요소로 성공적으로 전송되었다고 결정하는 것에 응답하여 상기 논리적 블록 어드레스들의 제1 범위에 대한 상기 잠금을 해제하는 것인, 시스템.
  19. 제18항에 있어서, 상기 프로세싱 디바이스는 또한:
    상기 호스트 시스템으로부터, 데이터의 제2 부분을 상기 메모리 구성요소에 기입하기 위한 제2 명령어를 수신하되, 상기 제2 명령어는 논리적 블록 어드레스들의 제2 범위를 포함하고, 상기 논리적 블록 어드레스들의 제2 범위는 상기 논리적 블록 어드레스들의 제1 범위와 중복되는 것이고;
    상기 데이터의 제2 부분에 대한 제2 복수의 기입 커맨드들을 생성하며;
    상기 제2 복수의 기입 커맨드들을 상기 메모리 구성요소로 전송하되, 상기 제1 복수의 기입 커맨드들 및 상기 제2 복수의 기입 커맨드들은 상기 메모리 구성요소가 상기 데이터의 제1 부분의 전부를 그리고 상기 데이터의 제2 부분의 전부보다 적은 부분을 상기 논리적 블록 어드레스들의 제2 범위에서의 하나 이상의 논리적 블록 어드레스에 연접하여 저장하게 하되, 상기 하나 이상의 논리적 블록 어드레스는 상기 논리적 블록 어드레스들의 제1 범위와 중복되지 않는 것인, 시스템.
  20. 제19항에 있어서, 상기 제1 명령어는 상기 호스트 시스템 상에서 실행하는 제1 프로세스로부터 수신되고, 상기 제2 명령어는 상기 호스트 시스템 상에서 실행하는 제2 프로세스로부터 수신되는 것인, 시스템.
KR1020217012055A 2018-10-25 2019-09-30 메모리 서브 시스템에 대한 기입 원자성 관리 KR102336335B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/171,261 US10761978B2 (en) 2018-10-25 2018-10-25 Write atomicity management for memory subsystems
US16/171,261 2018-10-25
PCT/US2019/053905 WO2020086220A1 (en) 2018-10-25 2019-09-30 Write atomicity management for memory subsystems

Publications (2)

Publication Number Publication Date
KR20210050581A KR20210050581A (ko) 2021-05-07
KR102336335B1 true KR102336335B1 (ko) 2021-12-09

Family

ID=70328684

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217012055A KR102336335B1 (ko) 2018-10-25 2019-09-30 메모리 서브 시스템에 대한 기입 원자성 관리

Country Status (5)

Country Link
US (1) US10761978B2 (ko)
EP (1) EP3871097A4 (ko)
KR (1) KR102336335B1 (ko)
CN (1) CN112912857B (ko)
WO (1) WO2020086220A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10922022B2 (en) * 2019-03-13 2021-02-16 Samsung Electronics Co., Ltd. Method and system for managing LBA overlap checking in NVMe based SSDs
US11615020B2 (en) 2021-08-12 2023-03-28 Micron Technology, Inc. Implementing mapping data structures to minimize sequentially written data accesses
US20230063057A1 (en) * 2021-08-27 2023-03-02 Micron Technology, Inc. Memory access managment
CN114327815A (zh) * 2021-12-10 2022-04-12 龙芯中科技术股份有限公司 原子性保持方法、处理器及电子设备

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110078393A1 (en) * 2009-09-29 2011-03-31 Silicon Motion, Inc. Memory device and data access method
US20130145064A1 (en) * 2005-12-02 2013-06-06 Branislav Radovanovic Scalable Data Storage Architecture And Methods Of Eliminating I/O Traffic Bottlenecks
US20140143476A1 (en) * 2012-11-16 2014-05-22 Rotem Sela Usage of cache and write transaction information in a storage device
US20140281145A1 (en) 2013-03-15 2014-09-18 Western Digital Technologies, Inc. Atomic write command support in a solid state drive
US20150039577A1 (en) 2013-08-01 2015-02-05 Fusion-Io, Inc. Systems and methods for atomic storage operations
US20170160988A1 (en) 2015-12-08 2017-06-08 Kabushiki Kaisha Toshiba Memory system that carries out an atomic write operation
US20170185354A1 (en) 2015-12-23 2017-06-29 Intel Corporation Techniques for a Write Transaction at a Storage Device
US20180004454A1 (en) 2016-06-30 2018-01-04 Seagate Technology Llc Implementing scattered atomic i/o writes
US20180032267A1 (en) 2016-07-29 2018-02-01 Western Digital Technologies Inc. Extensible storage system controller

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9170938B1 (en) * 2013-05-17 2015-10-27 Western Digital Technologies, Inc. Method and system for atomically writing scattered information in a solid state storage device
GB2527529B (en) 2014-06-24 2021-07-14 Advanced Risc Mach Ltd A device controller and method for performing a plurality of write transactions atomically within a non-volatile data storage device
JP6414853B2 (ja) 2015-12-14 2018-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法
US10656872B2 (en) * 2018-03-15 2020-05-19 Western Digital Technologies, Inc. Storage device with multi-die management

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130145064A1 (en) * 2005-12-02 2013-06-06 Branislav Radovanovic Scalable Data Storage Architecture And Methods Of Eliminating I/O Traffic Bottlenecks
US20110078393A1 (en) * 2009-09-29 2011-03-31 Silicon Motion, Inc. Memory device and data access method
US20140143476A1 (en) * 2012-11-16 2014-05-22 Rotem Sela Usage of cache and write transaction information in a storage device
US20140281145A1 (en) 2013-03-15 2014-09-18 Western Digital Technologies, Inc. Atomic write command support in a solid state drive
US20150039577A1 (en) 2013-08-01 2015-02-05 Fusion-Io, Inc. Systems and methods for atomic storage operations
US20170160988A1 (en) 2015-12-08 2017-06-08 Kabushiki Kaisha Toshiba Memory system that carries out an atomic write operation
JP2017107318A (ja) 2015-12-08 2017-06-15 株式会社東芝 メモリシステム、情報処理装置および処理方法
US20170185354A1 (en) 2015-12-23 2017-06-29 Intel Corporation Techniques for a Write Transaction at a Storage Device
US20180004454A1 (en) 2016-06-30 2018-01-04 Seagate Technology Llc Implementing scattered atomic i/o writes
US20180032267A1 (en) 2016-07-29 2018-02-01 Western Digital Technologies Inc. Extensible storage system controller

Also Published As

Publication number Publication date
CN112912857A (zh) 2021-06-04
US10761978B2 (en) 2020-09-01
EP3871097A1 (en) 2021-09-01
EP3871097A4 (en) 2022-07-20
CN112912857B (zh) 2022-07-29
US20200133833A1 (en) 2020-04-30
KR20210050581A (ko) 2021-05-07
WO2020086220A1 (en) 2020-04-30

Similar Documents

Publication Publication Date Title
KR102336335B1 (ko) 메모리 서브 시스템에 대한 기입 원자성 관리
CN113126907B (zh) 用于存储器装置的异步电力损失恢复
US11630778B2 (en) Efficient processing of commands in a memory sub-system
US11693768B2 (en) Power loss data protection in a memory sub-system
KR20220049027A (ko) 가비지 수집을 위한 메모리 컴포넌트에 대한 에러 제어 동작 수행
US11561902B2 (en) Cache operations in a hybrid dual in-line memory module
CN113934666B (zh) 数据接口桥的预取
KR20210019577A (ko) 비-휘발성 메모리에서 데이터 유효성 추적
US11971816B2 (en) Host system notification based on entry miss
US11797198B2 (en) Memory instruction for memory tiers
KR102403173B1 (ko) 메모리 시스템에의 중요 데이터 저장
CN114077404B (zh) 使存储器单元与主机系统解除关联
CN113168289B (zh) 使用逐出和恢复管理存储装置中的冗余上下文
CN113064548A (zh) 存储器子系统中的逻辑到物理页转译中的相干性问题解决方案
CN115729858A (zh) 存储器中用于数据分享的散列操作

Legal Events

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