KR20170088743A - 이중화 저장 블록들 및 분산 소프트웨어 스택들을 위한 동적 가비지 컬렉션 p/e 정책들 - Google Patents

이중화 저장 블록들 및 분산 소프트웨어 스택들을 위한 동적 가비지 컬렉션 p/e 정책들 Download PDF

Info

Publication number
KR20170088743A
KR20170088743A KR1020160160759A KR20160160759A KR20170088743A KR 20170088743 A KR20170088743 A KR 20170088743A KR 1020160160759 A KR1020160160759 A KR 1020160160759A KR 20160160759 A KR20160160759 A KR 20160160759A KR 20170088743 A KR20170088743 A KR 20170088743A
Authority
KR
South Korea
Prior art keywords
ssd
strategy
page
block
garbage collection
Prior art date
Application number
KR1020160160759A
Other languages
English (en)
Other versions
KR102403034B1 (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 KR20170088743A publication Critical patent/KR20170088743A/ko
Application granted granted Critical
Publication of KR102403034B1 publication Critical patent/KR102403034B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address 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/0608Saving storage space on storage 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

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 Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

솔리드 스테이트 드라이브(solid state drive, SSD)가 개시된다. 상기 SSD는 데이터를 저장하기 위한 스토리지, 다양한 인스트럭션들과 데이터를 수신하는 수신 회러를 포함한다. 수신 회로는 상기 P/E 전략에 따라 가비지 컬렉션을 수행하기 위한 인스트럭션을 수신할 수 있다. 상기 SSD는 적응형 P/E 전략이 선택될 때 지연된 프로그램 동작을 수행하면서 가비지 컬렉션을 수행하는 가비지 컬렉션 로직을 포함할 수 있다. 또한, 상기 SSD는 빅팀 블록이 소거되기 전에 프로그램되지 않은 페이지들을 식별하는 맵핍 테이블을 포함할 수 있고, 따라서 지연된 프로그램 동작 동안에 복사를 요청할 수 있다.

Description

이중화 저장 블록들 및 분산 소프트웨어 스택들을 위한 동적 가비지 컬렉션 P/E 정책들{DYNAMIC GARBAGE COLLECTION P/E POLICIES FOR REDUNDANT STORAGE BLOCKS AND DISTRIBUTED SOFTWARE STACKS}
본 발명의 개념은 분산 저장 시스템들에 관한 것으로, 좀 더 자세하게는 분산 저장 시스템들의 솔리드 스테이트 드라이브들(solid state drives, SSDs)에서 가비지 컬렉션을 수행하는 것에 관한 것이다.
솔리드 스테이트 드라이브들(solid state drives, SSDs)은 데이터 센터들에서 전통적인 하드 디스크 드라이브들(HDDs)을 빠르게 대체하고 있다. SSDs의 기가바이트당 비용은 점차적으로 감소하고, 및 SSDs는 레이턴시(latency)와 성능을 한층 더 향상시키고 있다.
SSD는 플래시 메모리 기반 데이터 저장 장치이다. 데이터는 개별적인 셀들에 저장되고, 이 셀들은 페이지로 불리는 그룹들로 조직화된다. 페이지들은 블록들로 불리는 그룹들로 조직화된다. 페이지는 읽거나 쓰기 위한 최소 단위이다. 읽기들이나 쓰기들은 페이지 단위로 정렬된다. 비록 요청이 페이지 보다 작은 데이터 양이더라도, 전체 페이지가 읽혀지거나 쓰여진다.
SSDs에서, 덮어 쓰기들(overwrites)은 허용되지 않는다. 기존 데이터가 변경될 때, 변경되는 데이터를 저장하는 페이지는 SSD 내의 내부 레지스터로 복사되고, 업데이터되고, 그리고 나서 프리(free) 페이지로 쓰여진다. 이전 페이지(old page)는 부실(stale) 페이지 혹은 무효 페이지로 마크된다. 이러한 마크는 여기에 저장된 데이터가 더 이상 유효하지 않다고 지시한다. 부실 데이터는 덮어 쓰여 질 수 없고, 프리인 것으로 마크되도록 리클레임(복구, reclaim, 소거를 통해) 되어야 한다. 이러한 복구 동작은 가비지 컬렉션으로 불린다.
하지만, 읽기 및 쓰기 요청들이 페이지들에서 실행될 동안에, 페이지들은 개별적으로 소거 될 수 없다. 소거 유닛의 크기는 대개 블록이다.
블록은 일부 유효 페이지들 및 일부 무효/부실 페이지들을 포함한다. 이러한 상황에서, 블록이 소거되기 전에, 유효 페이지는 다른 블록의 프리 페이지로 복사 되어야 한다(이른바, 프로그램 동작). 모든 유효 데이터가 다른 블록으로 복사된 후에, 블록은 소거 될 수 있다. 가비지 컬렉션은 프로그램 동작과 소거 동작 모두를 포함한다. 소거/프로그램 동작들의 조합은, P/E(program/erase) 싸이클로 불린다.
쓰기 요청들이 가비지 컬렉션 동안에 도착하면, 가비지 컬렉션이 완료될 때까지 쓰기 요청들이 지연된다(are stalled). 이러한 상황에서, 쓰기 요청은 P/E 싸이클을 위해 필요한 레이턴시의 합과 동등한 추가적인 레이턴시를 발생시킨다(쓰기 동작 그 자체를 위하여 필요한 레이턴시를 초과). 중요한 쓰기들에서, 이러한 추가적인 레이턴시는 매우 비싸다는 게 증명된다. 추가로, 대용량 쓰기 워크로드들에서, 가비지 컬렉션은 자주 발생하고, 따라서 쓰기 및 읽기 요청들에 대한 간섭을 증가시킬 것이다.
분산 저장 시스템의 SSDs에서 P/E 싸이클 때문에 쓰기 요청들에 의해 발생되는 잠재적인 레이턴시를 줄이기 위한 방법들이 요구되고 있다.
본 발명의 목적은 분산 저장 시스템의 SSDs에서 P/E 싸이클 때문에 쓰기 요청들에 의해 발생되는 잠재적인 레이턴시를 줄이기 위한 장치 및 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(solid state drive, SSD)는: 데이터를 저장하기 위한 스토리지; 가비지 컬렉션을 수행하기 위하여 호스트 머신으로부터 인스트럭션을 수신하고, 상기 인스트럭션은 상기 SSD에 의해 사용될 P/E(program/erase) 전략을 포함하는 수신 회로; 가비지 컬렉션을 수행하기 위한 상기 인스트럭션을 수신하는 상기 수신 회로에 응답하여 가비지 컬렉션을 수행하고, 상기 P/E 전략에 따라 가비지 컬렉션 동안에 프로그램 동작을 수행하는 프로그램 로직을 포함하는 가비지 컬렉션 로직; 및 제 2 저장 장치에 복제된 복사본으로부터 나중에 페칭하기 위하여 빅팀 블록(victim block)에서 적어도 하나의 페이지를 식별하는 맵핑 테이블을 포함하고, 상기 프로그램 로직은, 상기 P/E 전략이 적응형 P/E 전략일 때, 상기 빅팀 블록을 소거하기 전에 상기 SSD에 제 2 블록에 상기 적어도 하나의 페이지를 복사하지 않고, 상기 제 2 저장 장치에 복제된 복사본으로부터 페칭하기 위하여 상기 SSD에서 빅팀 블록의 상기 적어도 하나의 페이지를 상기 맵핑 테이블에 마크하도록 동작할 수 있다.
본 발명의 다른 실시 예에 따른 솔리드 스테이트 드라이브(SSD)는: 데이터를 저장하기 위한 스토리지; 가비지 컬렉션을 수행하기 위하여 호스트 머신으로부터 인스트럭션을 수신하고, 상기 인스트럭션은 상기 SSD에 의해 사용될 P/E(program/erase) 전략을 갖는 수신 회로; 가비지 컬렉션을 수행하기 위하여 상기 인스트럭션을 수신하는 상기 수신 회로에 응답하여 가비지 컬렉션을 수행하고, 상기 P/E 전략에 따라 가비지 컬렉션 동안에 프로그램 동작을 수행하는 프로그램 로직을 포함하는 가비지 컬렉션 로직; 상기 SSD의 빅팀 블록에 적어도 하나의 페이지의 복사본을 캐싱하는 DRAM(dynamic random access memory); 및 상기 P/E 전략이 적응형 P/E 전략일 때, 상기 빅팀 블록을 소거하기 전에 상기 빅팀 블록으로부터 상기 DRAM에서 캐시된 복사본으로 상기 적어도 하나의 페이지를 복사하고, 그리고, 상기 빅팀 블록을 소거하기 전에 상기 SSD의 제 2 블록에 상기 적어도 하나의 페이지를 복사하지 않고 상기 빅팀 블록을 소거한 후에 상기 제 2 블록에 상기 캐시된 복사본을 복사하도록 동작하는 SSD 제어기를 포함할 수 있다.
본 발명의 실시 예에 따른 호스트 머신은: 프로세서; 네트워크에 상기 호스트 머신을 연결하도록 동작하는 네트워크 커넥터; 적어도 하나의 SSD(solid state drive)의 I/O(input/output) 부하를 모니터링하도록 동작하는 부하 모니터; 상기 I/O 부하에 근거로 하여 적어도 하나의 디폴트 P/E 전략 및 적응형 P/E 전략 중에서 선택하도록 동작하는 P/E(program/erase) 전략 선택기; 및 상기 선택된 P/E 전략을 갖는 상기 적어도 하나의 SSD에 가비지 컬렉션 인스트럭션을 전송하도록 동작하는 트랜스미터를 포함할 수 있다.
본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(SSD)의 동작 방법은: 상기 SSD에서, 호스트 머신으로부터 가비지 컬렉션을 수행하기 위한 인스트럭션을 수신하고, 상기 인스트럭션은 상기 SSD에 의해 사용될 P/E 전략을 갖는 단계; 소거될 상기 SSD의 빅팀 블록을 식별하는 단계; 상기 빅팀 블록에서 유효 데이터를 저장하는 적어도 하나의 페이지를 식별하는 단계; 상기 P/E 전략이 적응형 P/E 전략을 이용하도록 명세화될 때, 상기 빅팀 블록을 소거한 후에 상기 SSD의 제 2 블록에 상기 적어도 하나의 페이지를 복사하도록 배열하는 단계; 및 상기 빅팀 블록을 소거하는 단계를 포함할 수 있다.
도 1은 본 발명의 실시 예들에 따른, 분산 저장 시스템의 SSDs을 갖는 호스트 머신을 보여주는 도면이다.
도 2는 도 1의 SSD와 본 발명의 실시 예들에 따른 가비지 컬렉션을 시작하는 SSD을 자세하게 보여주는 도면이다.
도 3은 소거 동작을 수행하는 도 2의 SSD를 보여주는 도면이다.
도 4는 쓰기 요청을 완료하는 도 2 내지 도 3의 SSD를 보여주는 도면이다.
도 5는 지연된 프로그램 동작을 수행하는 도 2 내지 도 4의 SSD를 보여주는 도면이다.
도 6은 지연된 프로그램 동작의 적용을 받는 데이터에 대한 쓰기 요청을 완료하는 도 2 내지 도 3의 SSD를 보여주는 도면이다.
도 7은 본 발명의 선택적인 실시 예들에 따른, 가비지 컬렉션을 시작하는 도 2의 SSD을 보여주는 도면이다.
도 8은 지연된 프로그램 동작을 수행하는 도 7의 SSD를 보여주는 도면이다.
도 9는 도 1의 호스트 머신을 자세하게 보여주는 도면이다.
도 10은 도 9의 호스트 머신을 좀 더 자세하게 보여주는 도면이다.
도 11은 도 9의 P/E 전략 선택기를 자세하게 보여주는 도면이다.
도 12는 도 9의 프로그램 인스트럭터를 자세하게 보여주는 도면이다.
도 13은 시간에 대한 도 9의 호스트 머신의 I/O 부하의 그래프를 보여주는 도면이다.
도 14a ~ 도 14c는 본 발명의 실시 예에 따른, 다수의 P/E 전략들중 임의의 것을 이용하여 가비지 컬렉션을 수행하는 도 1 내지 도 2의 SSD를 위한 과정에 대한 플로우챠트를 보여주는 도면이다.
도 15a ~ 도 15b는 본 발명의 실시 예들에 따른, 지연된 프로그램 동작의 적용을 받는 데이터에 대한 지연된 프로그램 동작 혹은 쓰기 요청을 수행하는 도 1 내지 도 2의 SSD를 위한 과정에 대한 플로우챠트를 보여주는 도면이다.
도 16a ~ 도 16c는 본 발명의 실시 예들에 따른, 다수의 P/E 전략들중 임의의 것을 이용하여 가비지 컬렉션을 수행하기 위하여 도 1의 호스트 머신이 도 1 내지 도 2의 SSD를 지시하기 위한 과정에 대한 플로우챠트를 보여주는 도면이다.
이하 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다. 다음의 상세한 설명에서, 본 발명의 개념을 완전히 이해할 수 있도록 수많은 특정 세부 사항들이 제시된다. 하지만, 당업자는 이러한 특정 세부 사항들 없이 본 발명의 개념을 실행할 수 있음을 알아야 한다. 다른 예들에서, 공지된 방법들, 절차들, 구성 요소들, 회로들 및 네트워크들은 실시 예들의 양태들을 불필요하게 모호하게 하지 않기 위해 상세하게 설명되지 않았다.
제 1, 제 2 등의 용어가 본 명세서에서 다양한 구성 요소를 설명하기 위해 사용될 수 있지만, 이들 구성 요소는 이들 용어에 의해 제한되지 않음을 이해할 것이다. 이 용어는 하나의 요소를 다른 요소와 구별하기 위해서만 사용된다. 예를 들어, 제 1 모듈은 제 2 모듈로 지칭 될 수 있고, 마찬가지로, 제 2 모듈은 본 발명의 개념의 범위를 벗어나지 않는 한 제 1 모듈로 지칭 될 수 있다.
본 발명의 개념의 설명에 사용된 용어는 특정 실시 예만을 설명하기 위한 것이며, 본 발명의 개념을 제한하려는 목적은 아니다. 본 발명의 개념 및 첨부된 청구 범위의 설명에서 사용된 바와 같이, 단수 형태 "a", "an" 및 "the"는 문맥에 달리 명시되지 않는 한 복수 형태를 포함하는 것으로 의도된다. 본 명세서에서 사용 된 "및/혹은"이라는 용어는 하나 이상의 관련 열거된 항목의 임의의 그리고 모든 가능한 조합들을 포함한다. 본 명세서에서 사용되는, "갖는" 및/혹은 "포함하다"의 용어는 특징, 숫자, 단계, 동작, 구조적 요소, 부분, 또는 그것들의 조합의 존재를 지칭하며, 추가적인 하나 또는 그 이상의 특징, 숫자, 단계, 동작, 구조적 요소, 부분, 또는 그것들의 조합의 가능성 및 존재를 제외하지 않는다. 도면의 구성 요소들 및 특징들은 반드시 일정한 비율로 그려지는 것은 아니다.
데이터 가용성(data availability)는 대부분의 엔터프라이즈 데이터 센터 어플리케이션들에서 매우 중요한 인자(factor)이다. 현대의 소프트웨어로 정의된 저장 시스템들은 고장난 디스크들 혹은 노드들을 고치기 위하여 레플리케이션(replication, 복제)을 이용할 수 있다. 전형적으로, Ceph와 같은 시스템들에 볼 수 있는 바와 같이, 디폴트 레플리케이션 팩터는 3이다(즉, 데이터 유닛들의 각각은 분산 저장 시스템 내의 3개의 위치들에 존재한다). 동일 데이터의 복수의 복사본들은 데이터 센터의 일부가 고장난 경우에 가용성을 활성화 하도록 존재할 수 있다.
또한, 이중화화는 가비지 컬렉션 때문에 중요한 입출력(I/O)에서 레이턴시를 줄이는 방법을 제공할 수 있다. 전체 P/E 싸이클을 수행하는 것을 대신하여, 프로그램 동작은 분산 저장 시스템 내의 다른 곳에서 복제된 데이터에 대해 연기될 수 있다. 지연된 프로그램 동작은 좀 더 편한 시간에 나중에 수행될 수 있다. 예를 들어, 입출력 부하가 떨어졌을 때, 혹은 가비지 컬렉션을 수행한 후 충분한 시간이 흘렀을 때이다. 이런 방식에서, 가비지 컬렉션에 따른 추가적인 레이턴시는 단지 소거 동작에 의해 야기되는 레이턴시만으로 줄어든다. 좀 더 자세하게, 중요한 I/O은 SSD 내의 휘발성 RAM으로 복사되고, SSD의 다른 블록에 쓰여지는 빅팀(victim) 블록들(가비지 컬렉션을 위해 타겟팅 된 블록들)로부터 유효 데이터가 읽혀 지도록 기다릴 필요가 없다.
만일 지연된 프로그램 동작이 수행되기 전에 지연된 프로그램 동작에 종속된 데이터를 위한 SSD에 읽기 요청이 도달하면, 읽기 요청은 요청된 데이터를 저장하는 다른 장치로 재전송 될 수 있다.
만일 지연된 프로그램 동작이 수행되기 전에 지연된 프로그램 동작에 종속된 데이터를 위한 SSD에 쓰기 요청이 도달하면, SSD는 페이지의 복제된 복사본을 캐시 할 수 있고, 쓰기 요청에 따라 데이터를 변조할 수 있고, 그 후에 SSD에 변조된 페이지에 쓸 수 있다.
데이터에 대한 여러 복사본들을 갖는 분산 저장 시스템에서 SSD가 비록 동작하더라도, 만일 빅팀 블록에 유효 페이지의 복사본들이 존재하지 않으면, 유효 페이지는 데이터의 손실을 피하기 위하여, 전형적인 P/E 싸이클과 마찬가지로 프로그램 되어야 한다는 것을 유의해야 한다.
본 발명의 실시 예들에서, 호스트 머신은 사용할 P/E 싸이클 전략을 적응적으로 결정할 수 있다(시스템 부하, I/O 우선권, 혹은 다른 기준에 기초하여). 가비지 컬렉션은 SSD가 적응형 P/E 전략을 사용한다고 알리지 않는다면 통상적으로 진행될 수 있다. 또한, SSD 제어기는 소거된 빅팀 블록들로부터의 유효 페이지들의 복사본들을 또한 요청할 수 있다.
도 1은 본 발명의 실시 예들에 따른, 분산 저장 시스템의 SSDs(solid state drives)을 갖는 호스트 머신을 보여주는 도면이다. 도 1을 참조하면, 호스트 머신(105)이 보여진다. 도 1은 호스트 머신(105)의 모든 내부 구성 요소들을 나타내지 않더라도(도 9에서는 호스트 머신(105)을 보다 자세하게 나타낸다), 도 1은 SSD(110) 및 저장 장치(115)를 포함하는 호스트 머신(105)을 나타낸다. 저장 장치(115)는 다른 SSD일 수 있거나, 혹은 보다 전통적인 하드 디스크 드라이브(HDD)와 같은 다른 저장 장치일 수 있다. 설명의 편의를 위하여, 저장 장치(115)는 다른 SSD로써 취급된다. 도 1이 단지 SSD(110)와 저장 장치(115)를 나타내지만, 호스트 머신(105)은 호스트 머신(105)이 어떻게 구현되는지에 따라 이론적으로 임의의 개수의 저장 장치를 제공할 수 있다.
SSD(110)은 블록들(A, B, C; 120)을 포함하는 것으로 도시된다. 저장 장치(115)는 블록(D; 125)을 포함하는 것으로 도시된다. 블록들(A, B, C; 120)은 아래의 도 2 내지 도 6을 참조하여 좀 더 자세하게 설명될 것이다. 블록(D; 125)은 다양한 페이지들을 포함하는 것으로 도시된다. 특히, 다양한 페이지들은 여럿 중에서도 논리 페이지 어드레스들 (LPA1(130), LPA2 (135), LPA3(140))을 포함한다. 블록(125)은 도 1에서 6 개의 페이지들을 포함하는 것으로 도시되지만, SSD(110)와 저장 장치(115)의 블록들은 종종 6개 이상의 임의의 페이지들을 포함할 수 있다.
SSD(110)가 가비지 컬렉션을 수행하려고 할 때, SSD(110)는 호스트 머신(105)에 알릴 수 있다. 그러면, 호스트 머신(105)은 가비지 컬렉션을 수행하기 위하여 SSD(110)에 언제 지시할 지 및 사용할 P/E 전략은 무엇인 지를 결정할 수 있다.
호스트 머신(105)은 네트워크(145)에 연결되도록 도시된다. 네트워크(145)는, LAN(local area network), WAN(wide area network), 혹은 인터넷과 같은 글로벌 네트워크를 갖는 임의의 다양한 네트워크일 수 있다. 네트워크(145)는 무선 혹은 유선 네트워크일 수 있다. 또한, 네트워크(145)는 서로 다른 복수의 네트워크들의 조합을 포함할 수 있다. 예를 들어, 네트워크(145)는 유선 및 무선 억세스 포인트들의 모두를 포함하고, 통신을 안전하게 하기 위하여 VPN(virtual private network)을 이용하는 글로벌 네트워크를 통하여 서로 통신할 수 있는 복수의 LANs일 수 있다. 도 1이 거기에 부착된 라우터 및 다른 장치들을 도시하지 않지만, 네트워크(145)는 라우터들, 다른 호스트 머신들, 네트워크에 부착된 스토리지(network attached storage), 및 필요한 다른 장치들을 포함할 수 있다.
또한, 클라이언트 머신들(150)은 네트워크(145)에 연결될 수 있다. 클라이언트 머신들(150)은 분산 저장 네트워크로부터 데이터를 억세스하는 임의의 머신들 일 수 있다. 클라이언트 머신들(150)이 전통적인 타워(혹은 미니타워(minitower)) 컴퓨터들로 도시되더라도, 클라이언트 머신들(150)은 제한되지 않지만, 서버들, 랩탑 컴퓨터들, 태블릿 컴퓨터들, 및 스마트폰들과 같은 모바일 장치들을 포함하는 임의의 다른 다양한 머신들을 포함할 수 있다. 도 1은 2 개의 클라이언트 머신들(150)을 도시하지만, 임의의 개수의 클라이언트 머신들은 분산 저장 시스템으로부터 데이터를 억세스 할 수 있다.
도 2는 도 1의 SSD(110)와 본 발명의 실시 예들에 따른 가비지 컬렉션을 시작하는 도 1의 SSD(110)를 자세하게 보여주는 도면이다. 도 2을 참조하면, SSD(110)는 수신 회로(203), 전송 회로(206), 가비지 컬렉션 로직(209), 구현 로직(212), SSD 제어기(215), 플래시 메모리(218), 맵핑 테이블(221), 및 DRAM(dynamic random access memory, 224)을 포함하는 것으로 도시된다. SSD(110)는 정보를 수신 및 전송하기 위하여 수신 회로(203) 및 전송 회로(206)를 이용할 수 있다. 이러한 정보는, 예를 들어, 클라이언트 머신들(150)로부터 읽기 및 쓰기 요청들, 읽기 및 쓰기 요청들의 결과들, 호스트 머신(105)과의 인스트럭션 및 데이터 교환들 등을 포함할 수 있다. 도 2가 DRAM(224)을 갖는 SSD(110)를 도시하지만, SRAM(static random access memory)이 DRAM(224)을 대신하여 사용될 수 있다.
SSD(110)는 가비지 컬렉션을 수행하기 위하여 가비지 컬렉션 로직(209)을 사용할 수 있다. 상술 된 바와 같이, 가비지 컬렉션은 프로그램과 소거 동작들 모두를 포함할 수 있지만, 본 발명의 실시 예들에서 프로그램 동작들은 소거 동작들보다 선행하기 보다는 후속할 수 있다. 가비지 컬렉션을 지원하기 위하여, 가비지 컬렉션 로직(209)은 프로그램 동작들을 수행하는 프로그램 로직(227) 및 소거 동작들을 수행하는 소거 로직(230)을 포함할 수 있다.
SSD(110)는 호스트 머신(105)에 의해 그렇게 하도록 지시 받을 때, 가비지 컬렉션 만을 수행하기 위하여 SSD(110)를 구현시키도록 구현 로직(212)을 사용할 수 있다. 그와 달리, SSD(110)는 SSD(110)가 가비지 컬렉션이 필요하다고 결정할 때마다 가비지 컬렉션을 수행할 수 있다. 이는 불필요한 지연을 야기하는 클라이언트 머신들(150)의 읽기 및 쓰기 요청들을 간섭할 수 있다.
SSD 제어기(215)는 SSD(110)의 전체 동작을 관리할 수 있다. 예를 들어, SSD 제어기(215)는 다른 가능성들 중에서도, DRAM(224)에 저장된 임의의 정보를 관리하고, 그리고 클라이언트 머신들(150)의 읽기 및 쓰기 요청들을 적절하게 지시하도록 DRAM(224)과 인터페이스 할 수 있다.
한편, 도 2가 가비지 컬렉션 로직(209) 및 구현 로직(212)에 관련하여 SSD(110)내에서 분리된 구성요소로 SSD 제어기(215)를 도시하지만, SSD 제어기(215)는 이러한 구성 요소들을 포함할 수 있다. 즉, SSD 제어기(215)는, SSD 제어기(215)로부터 분리된 구성 요소들이 아니라, 도 2에 도시된 다양한 구성 요소들을 포함할 수 있다.
플래시 메모리(218)는 비휘발성 메모리에 데이터를 저장할 수 있다. 도 2는 플래시 메모리(281)에 저장된 블록들(A, B, C; 233, 236, 239)을 나타낸다. 블록들(A, B; 233, 236)은 3개의 유효 LPAs(242, 269 및 245)와 함께, 몇몇의 무효 페이지들을 포함하며, 가비지 컬렉션 동작 동안 소거될 블록들을 나타내기 위해서이다. 블록(C; 239)은 프리 페이지들을 갖는 블록을 나타낸다. 상술 된 바와 같이, 도 2가 6 개의 페이지들을 갖는 블록들(A, B; 233, 236)을 도시하지만, 블록(C; 239) 및 블록들(A, B; 233, 236)은 종종 6 개 이상의 임의의 페이지들을 가질 수 있다.
맵핑 테이블(221)은 소거될 빅팀 블록들에 대한 정보를 제공한다. 예를 들어, 블록들(A, B; 222, 236)이 소거를 위한 빅팀 블록들로 선택된다면, 맵핑 테이블(221)은 이러한 블록들의 임의의 유효 페이지들이 분산 저장 시스템 내의 어느 곳엔가 복사되었는지에 대한 정보를 저장할 수 있다. 도 1에 도시된 바와 같이, 도 1의 저장 장치(115)는 LPA1(130), LPA2(135), LPA3(140)을 갖는 블록(D; 125)을 저장할 수 있다. 따라서, 도 2에서 맵핑 테이블(221)은 블록(A)의 LPA1 및 LPA2와 블록(B)의 LPA3가 마크들(248, 251, 및 254)로 도시된 바와 같이 복제되었다는 것을 지시할 수 있다. 맵핑 테이블(221)은 순간의 특성을 갖는 다른 정보를 저장하는 데 사용되는 DRAM(224)에 저장될 수 있다. 예를 들어, 도 1의 클라이언트 머신들(150)이 플래시 메모리(218)에 저장된 데이터를 업데이트 할 때, 페이지는 DRAM(224)으로 복사되고, 업데이트되고 난 후, 플래시 메모리(218)의 프리 페이지에 쓰여질 수 있다.
도 2에서, SSD(110)는 호스트 머신(105)으로부터 인스트럭션(257)을 수신할 수 있다. 인스트럭션(257)은 가비지 컬렉션을 수행하기 위한 인스트럭션일 수 있다. 호스트 머신(105)은 P/E 전략(260)을 포함할 수 있고, P/E 전략은 SSD(110)가 디폴트 P/E 전략 혹은 적응형 P/E 전략을 사용할 지을 명시화한다. 디폴트 P/E 전략은 빅팀 블록들(233, 236)의 소거 전에 프로그램 동작을 수행하는 것 일수 있다(즉, 빅팀 블록들(233, 236)으로부터 블록(C; 239)와 같은 다른 블록들로 유효 페이지들을 복사하는). 반면에, 적응형 P/E 전략은 호스트 머신(105)이 프로그램 동작 때문에 발생하는 임의의 지연을 회피하기 원한다면, 프로그램 동작을 지연시키는 것 일 수 있다.
P/E 전략(260)이 적응형 P/E 전략으로 특정하는 경우, SSD(110)는 통상적으로 프로그램 동작을 요구하는 빅팀 블록들(233, 236)의 임의의 유효 페이지들이 존재하는 지를 판별할 수 있다. 만일 그렇다면, SSD(110)는 유효 페이지들의 복제된 복사본들이 존재하는 지 여부를 판별하도록 호스트 머신(105)에 쿼리(263)을 전송할 수 있다. 호스트 머신(105)으로부터의 리플라이(266)를 수신하면, SSD(110)는 빅팀 블록들(233, 236)의 유효 페이지들이 나중에 복제본 요구할 것이라는 것을 반영하도록 맵핑 테이블(221)을 업데이트 할 수 있다. 만약 리플라이(266)가 빅팀 블록들(233, 236)의 일부 유효 페이지들이 복제되지 않았다고 지시하면, P/E 전략이 적응형 P/E 전략을 특정하였다는 사실에도 불구하고 이러한 페이지들은 프로그램 될 필요가 있다는 것을 알아야 한다. 이는 복제본의 부족 때문에, 이러한 유효 페이지들이 우선적으로 프로그램되지 않는다면, 이러한 유효 페이지들 내의 데이터가 손실될 수 있기 때문이다.
한편, 도 2가 빅팀 블록들(233, 236)으로 선택되는 블록들(A, B, 233, 236)을 도시하지만, 블록들의 임의의 개수가 SSD(110)에 프로그램된 임의의 기준을 사용하여 빅팀 블록들로 선택될 수 있다. 따라서, 블록들(A, B; 233, 236) 중 하나만 빅팀 블록으로 선택 될 수 있거나, 다른 블록들이 빅팀 블록들로 선택될 수 있다.
도 3은 소거 동작을 수행하는 도 2의 SSD(110)를 보여주는 도면이다. 도 3을 참조하면, SSD(110)는, 좀 더 자세하게, 소거 로직(230)은 빅팀 블록들(233, 236)을 소거 했으며, 따라서 빅팀 블록들(233, 236)의 모든 페이지들이 이제 프리하다. 도 2의 P/E 전략(260)이 적응형 P/E 전략으로 특정 되었기 때문에, 빅팀 블록들(233, 236)은 빅팀 블록들(233, 236)의 유효 페이지들을 먼저 프로그래밍하지 않고 소거되었다. 프로그램되지 않은 유효 페이지들의 복제된 복사본들이 다른 저장 장치들(도 1의 저장 장치(115))에 존재하지 않을 지도 모른다는 것에 대해 우려할 필요가 없다. 도 2의 쿼리(263) 및 리플라이(266)는 유효 데이터의 복제된 복사본들이 존재하는 지를 지시한다. 만일 도 2의 쿼리(263) 및 리플라이(266)가 빅팀 블록들(233, 236)의 유효 페이지들의 복제된 복사본들이 존재하지 않는다고 지시하면, SSD(110)는, 도 2의 P/E 전략(260)이 적응형 P/E 전략이더라도 이러한 페이지들(자세하게는, 복제된 복사본들이 존재하지 않는 빅팀 블록들(233, 236)의 유효 페이지들)을 프로그램 할 수 있다.
만약 SSD(110) 빅팀 블록들(233, 236)에 유효 페이지들이 존재하지 않는다면, SSD(110)는 도 2의 P/E 전략(260)을 무시 할 수 있다(또는 더 정확하게는, 도 2의 P/E 전략(260)은 무관한 것으로 되게 된다). 달리 말하면, 만약 빅팀 블록들(233, 236)이 오직 무효 페이지들만 포함하는 경우, 소거 동작 이전 혹은 이후에서 프로그램을 요하는 데이터가 없다는 것이다.
도 4는 쓰기 요청을 완료하는 도 2 내지 도 3의 SSD(110)를 보여주는 도면이다. 도 4를 참조하면, 도 2 내지 도 3의 빅팀 블록들(233, 236)이 소거된 후, 그러나 유효 데이터의 복사본들이 지연된 프로그램을 위하여 얻어지기 전에, 호스트 머신(105)은 SSD(110)에 쓰기 요청(405)을 전송한다. 그러면, SSD(110)는, 지연된 프로그램 동작을 수행하기도 전에 블록(C; 239)에 쓰기 1(410)로써 데이터를 쓸 수 있다.
도 5는 지연된 프로그램 동작을 수행하는 도 2 내지 도 4의 SSD(110)를 보여주는 도면이다. 도 5를 참조하면, 호스트 머신(105)은 SSD(110)에 프로그램 인스트럭션(505)을 전송한다. 프로그램 인스트럭션(505)은 지연된 프로그램 동작을 수행할 시간이라는 것을 SSD(110)에 알려준다. 그러면 SSD(110)는 가비지 컬렉션이 발생할 때 프로그램되지 않고 소거된 유효 페이지들의 복사본들을 요청하면서, 호스트 머신(105)에 요청(510)을 전송할 수 있다. 그러면 SSD(110)은 호스트 머신(105)으로부터 복사본들(515)을 전송 받을 수 있고, 그 후에 페이지들(520, 525, 및 530)로써 블록(C, 239)에 복사본들(515)을 쓸 수 있다.
한편, 도 5는 도 2에 도시된 바와 같이, 호스트 머신(105)에 요청(510)을 전송하는 SSD(110)가 도시되지만, SSD(110)는 도 2의 빅팀 블록들(233, 236)의 유효 페이지들이 복제되었는 지를 문의하면서, 호스트 머신(105)에 도 2의 쿼리(263)를 전송할 수 있다. 본 발명의 실시 예들에서, 호스트 머신(105)은 도 2의 쿼리(263)에 포함된 페이지들을 기억할 수 있고, 그리고 SSD(110)가 호스트 머신(105)에 요청(510)을 전송하는 필요를 회피하면서, 인스트럭션(505)의 일부로써 복사본들(515)을 전송할 수 있다.
도 2 내지 도 5는 어떻게 지연된 프로그램 동작이 읽기 및 쓰기 요청들에 대한 잠재적인 지연을 줄이도록 사용되는지를 도시한다. 특히, 도 4는 SSD(110)가 지연된 프로그램 동작을 수행하기 전에 어떻게 쓰기 요청이 처리되는 지를 도시한다. 하지만, 만일 도 4의 쓰기 요청(405)이 도 2 내지 도 3의 빅팀 블록들(233, 236)의 유효 페이지들 중 하나에 있었던 데이터의 일부를 변조하고자 하였다면 어떻게 되는가 다시 말하면, 도 1의 클라이언트 머신들(150)이 프로그램되지 않고 SSD(110)로부터 소거된 데이터를 변조하려고 시도했다면 어떻게 되는가?
도 6은 지연된 프로그램 동작의 적용을 받는 데이터에 대한 쓰기 요청을 완료하는 도 2 내지 도 3의 SSD(110)를 보여주는 도면이다. 도 6에서, 호스트 머신(105)은 쓰기 요청(605)을 SSD(110)로 전송한다. 그러나 도 4의 쓰기 요청(405)과 달리, 쓰기 요청(605)은 도 2의 빅팀 블록들(233, 236)의 유효 페이지들 중 하나에서 데이터를 변조한다. 이러한 실시 예에서, 쓰기 요청(605)은 LPA1(도 2의 242)을 변조할 수 있다. SSD(110)가 그 페이지(지연된 프로그램 동작을 갖는)를 더 이상 저장하지 않기 때문에, SSD(110)는 페이지의 복사를 위한 요청을 하면서, 호스트 머신(105)에 요청(610)을 전송할 수 있다. 그 후, 호스트 머신(105)은 SSD(110)가 캐시된 복사본(620)로써 DRAM(224)에 저장할 수 있는 복사본(615)을 SSD(110)로 전송할 수 있다. 그 후, SSD(110)는 변조된 캐시된 복사본(630)을 생성하면서, 변이(625)로 도시된 바와 같이, 쓰기 요청(605)에 따라 캐시된 복사본(620)을 변조할 수 있다. 그 후, SSD(110)는, 변조된 캐시된 복사본(630)을 변이(635)로 도시된 바와 같이, 블록(C; 239)에 페이지(640)로 쓸 수 있다. 마지막으로, SSD(110)가 LPA1(도 2의 242)를 업데이트 하였기 때문에, SSD(110)는, SSD(110)가 더 이상 LPA1(도 2의 242)을 필요로하지 않는다는 것을 반영하도록 맵핑 테이블(221)을 업데이트 할 수 있다. 이는 맵핑 테이블(221)로부터 마크(645)를 제거함으로써 도시된다.
한편, SSD(110)가 상술 된 바와 같이 호스트 머신(105)을 요청할 수 있더라도, 본 발명의 다른 실시 예들에서, SSD(110)는 가비지 컬렉션을 수행하기 전에 유효 데이터의 복사본들을 캐시 할 수 있다. 즉, 도 2의 P/E 전략(260)이 적응형 P/E 전략일 대, SSD(110)는 호스트 머신(105)으로부터 유효 데이터의 복사본을 요청할 필요 없이, 유효 데이터를 복사할 수 있고, 그리고 DRAM(224)에 캐시된 복사본(620)으로서 복사본을 저장할 수 있다. 도 7 및 도 8은 본 발명의 이러한 선택적인 실시 예를 설명한다.
도 7은 본 발명의 선택적인 실시 예들에 따른, 가비지 컬렉션을 시작하는 도 2의 SSD(110)를 보여주는 도면이다. 도 7을 참조하면, SSD(110)는 가비지 컬렉션을 수행하기 위하여 인스트럭션(257)을 수신할 수 있다. 여기서 인스트럭션(257)은 사용할 P/E 전략(260)을 특정 시킬 수 있다. P/E 전략(260)이 적응형 P/E 전략을 특정하는 경우, 블록들(A, B; 233, 236)에 유효 데이터의 복제된 복사본들의 존재에 대하여 호스트 머신(105)에 쿼링(문의)하는 것 대신에, SSD(110)는 변이(705)로 도시된 바와 같이, DRAM(224) 내의 유효 데이터를 캐시할 수 있다. DRAM(224)은 SSD(110)가 지연된 프로그램 동작을 수행하기 위한 인스트럭션을 수신할 때까지 캐시된 복사본들(710, 715, 및 720)을 저장할 수 있다.
또한, 도 2를 참조하여 설명된 바와 같이, 도 2의 SSD(110)가 유효 데이터의 복제된 데이터가 없다는 것을 결정할 경우, 유효 데이터를 캐싱하는 것은 적절한 전략일 수 있다. 적응형 P/E 전략이 특정되었더라도 즉각적으로 이러한 페이지들을 프로그램 하기 보다는, SSD(110)는 DRAM(224)에 유효 페이지들을 캐시 할 수 있고, 그리고 나중에 플래시 메모리(218)로 캐시된 페이지들을 쓸 수 있다.
또한, SSD(110)는 데이터 손실에 대한 보호 수단으로써 혹은 목표 개수의 데이터의 복제된 복사본들을 유지하도록 유효한 데이터를 캐시할 수 있다. 즉, SSD(110)는 유효 데이터의 복제된 복사본들이 손실되거나 혹은 예를 들어, 유효 데이터의 복제된 복사본들을 저장하는 드라이버의 실패에 기인한 다른 이유들의 경우에, DRAM(224)에 유효 데이터의 복사본들을 저장할 수 있다. 만일, 유효 데이터의 복사본들이 지연된 프로그램 동작이 시작된 후에도 여전히 DRAM(224)에 남아 있다면, SSD(110)는 다른 드라이버들에 복제된 복사본들을 대신하여 이러한 복사본들을 접근할 수 있다. 여기서 DRAM(224)의 복사본들을 접근하는 것이 일반적으로 다른 드라이버들의 복제된 복사본들을 접근하는 것보다 더 낮은 레이턴시를 갖기 때문이다. SSD(110)가 다른 드라이버들의 복제된 복사본들이 아닌 유효 데이터의 캐시된(혹은 백업) 복사본들을 접근할지 여부는, 어떤 복사본이 더 최신 데이터일 것인지에 의존할 수 있다. 어떤 복사본이 더 최신인 지는, 캐싱 정책 및 분산 저장 시스템에 쓰여지는 복사본들의 순서처럼 다양한 요인들에 따라 의존할 수 있다. 예를 들어, SSD(110)가 쓰기 데이터에 대한 인스트럭션을 수신하기 위한 마지막 장치이면, 유효 데이터의 복제된 복사본들을 저장하는 다른 장치들이 최신일 가능성이 더 높다.
도 8은 지연된 프로그램 동작을 수행하는 도 7의 SSD(110)를 보여주는 도면이다. 도 8을 참조하면, SSD(110)는 블록(C; 239)에서 쓰기 1(410)을 차지하는, 도 4의 쓰기 요청(405)을 이미 처리했다. 수신 회로(203)가 프로그램 인스트럭션(505)을 수신할 때, SSD(110)는 변이(805)의 일부로써, 페이지들(810, 815, 및 820)로 도시된 바와 같이, 플래시 메모리(218)로 캐시된 복사본들(710, 715, 및 725)을 복사할 수 있다. 그 후에, SSD(110)는 DRAM(224)로부터 캐시된 복사본들(710, 715, 및 725)을 삭제할 수 있다.
도 9는 도 1의 호스트 머신(105)을 자세하게 보여주는 도면이다. 도 9를 참조하면, 호스트 머신(105)은 프로세서(905), 메모리(910), 송신기(915), 수신기(920), 네트워크 커넥터(925), 부하 모니터(930), P/E 전략 선택기(935), 프로그램 인스트럭터(940), 구현 로직(945), SSD(110), 및 저장 장치(115)를 포함할 수 있다. 프로세서(905) 및 메모리(910)는 호스트 머신(105)의 동작을 제공하도록 중앙 처리 유닛 및 메모리(휘발성 혹은 비휘발성 중 어느 하나)의 임의의 원하는 다양한 종류 일 수 있다. 송신기(915) 및 수신기(920)는, SSD(110), 저장 장치(115), 및 도 1의 클라이언트 머신들(150)을 포함하는 다양한 종류의 소스들로부터 개별적으로 정보를 호스트 머신(105)으로부터 송신하거나 호스트 머신(105)에서 수신하는데 이용될 수 있다(네트워크 커넥터(925) 및 도 1의 네트워크(145)을 통하여). 네트워크 커넥터(925)는 예를 들어, 이더넷 네트워크 카드 혹은 무선 네트워크 카드를 포함하는 다양한 종류의 네트워크 커넥터일 수 있다. 한편 도 9는 SSD(110)가 호스트 머신(105)에 설치되는 것을 제안하지만, SSD(110)는 그 밖의 다른 곳에 설치되더라도 호스트 머신(105)과 통신할 수 있을 수 있다.
부하 모니터(930)는 호스트 머신(105)(혹은, 본 발명의 일부 실시 예들에서, 일반적으로 분산 저장 시스템)의 I/0 부하를 모니터 할 수 있다. 전형적으로, 도 1의 클라이언트 머신들(150) 혹은 다른 저장 장치들은, 도 1의 SSD(110), 저장 장치(115), 및 분산 저장 시스템의 다른 저장 장치들의 데이터를 더 혹은 덜 접근할 필요가 있는 만큼, 분산 저장 시스템의 I/O 부하는 가변 한다. 도 1의 클라이언트 머신들(150)이 데이터를 접근하기 위한 요청들을 더 많이 할 때, I/O 부하는 더 높아진다. 도 1의 클라이언트 머신들(150)이 데이터를 접근하기 위한 요청들을 더 적게 할 때, I/O 부하는 더 낮아진다. 부하 모니터(930)는 시간 경과에 따라 접근 요청들의 개수를 추적할 수 있고, 그리고 I/O 부하를 위한 값을 계산할 수 있다.
부하 모니터(930)에 의해 계산된 것처럼 I/O 부하가 주어질 때, P/E 전략 선택기(935)는 SSD(100)(혹은 호스트 머신(105)의 다른 SSD)가 가비지 컬렉션을 수행하는 것이 필요할 때 사용될 P/E 전략을 선택한다. 만일, I/O 부하가 적다면, 디폴트 P/E 전략(소거 동작을 수행하기 전에 프로그램 동작을 수행하기 위하여)은 선택될 수 있다. 그 외에는, 적응형 P/E 전략(프로그램 동작을 지연하기 위하여)이 선택될 수 있다. 그 후에, 송신기(915)는 도 2의 선택된 P/E 전략(260)과 함께, 도 2의 인스트럭션(257)을 SSD(100)로 전송하기 위하여 사용될 수 잇다.
프로그램 인스트럭터(940)는 SSD(110)가 지연된 프로그램 동작이 수행할 때를 판별할 수 있다. 도 12 내지 도 13을 참조하여 자세하게 아래에서 설명되는 바와 같이, 프로그램 인스트럭터(940)는 SSD(110)가 I/O 부하 혹은 SSD(110)가 소거 동작을 수행한 이후 얼마의 시간이 경과 하였는지 중 어느 하나를 근거로 하여 지연된 프로그램 동작을 수행할 때를 판별할 수 있다.
마지막으로, 호스트 머신(105)은 호스트 머신(105)에 의해 그렇게 하도록 지시될 때만 가비지 컬렉션을 오직 수행하도록 SSD(110, 및 호스트 머신(105)에 임의의 다른 SSDs)를 지시하기 위하여 구현 로직(945)을 사용할 수 있다. 상술된 바와 같이, 호스트 머신(105)에 의한 지시에 응답하여 SSD(110)가 가비지 컬렉션을 수행하게 하는 것은, 높은 I/O 부하의 주기 동안에 프로그램 동작을 수행하는 SSD(110)를 피할 수 있다.
도 9를 참조하면, 부하 모니터(930), P/E 전략 선택기(935), 프로그램 인스트럭터(940), 및 구현 로직(945)과 같은 다양한 구성 요소들이 도시된다. 이러한 구성들은, 개별적으로 혹은 집합적으로, 호스트 머신(105)내의 하드웨어 요소들로써 구현될 수 있거나 혹은 프로세서(905)에서 실행되는 소프트웨어 요소들로 구현될 수 있다.
도 10은 도 9의 호스트 머신(105)을 좀 더 자세하게 보여주는 도면이다. 도 10을 참조하면, 전형적으로, 호스트 머신(105)은 메모리 제어기(1005) 및 클록(1010)을 포함할 수 있는 적어도 하나의 프로세서(905)를 포함할 수 있다. 여기서 적어도 하나의 프로세서(905)는 호스트 머신(105)의 구성 요소들의 동작들을 코디네이트(조정) 하는데 사용될 수 있다. 또한, 프로세서들(905)은 메모리(910)에 연결될 수 있고, 이러한 메모리(910)는 RAM(random access memory), ROM(read-only memory), 혹은 다른 상태 저장 매체(other state preserving medium) 등과 같은 것을 포함할 수 있다. 또한, 프로세서들(905)은 저장 장치들(110, 115)에 연결될 수 있고, 그리고 네트워크 커넥터(925)에 연결될 수 있다. 여기서 네트워크 커넥터(925)는, 예를 들어, 이더넷 커넥트일 수 있다. 또한 프로세서들(905)은 버스(1015)에 연결될 수 있고, 버스(1015)는 유저 인터페이스(1020) 및 입력/출력 인터페이스 포트들에 부착될 수 있다. 입력/출력 인터페이스 포트들은 다른 구성 요소들 중에서 입력/출력 엔진(1025)을 이용하여 관리될 수 있다.
도 11은 도 9의 P/E 전략 선택기(935)를 자세하게 보여주는 도면이다. 도 11을 참조하면, P/E 전략 선택기(935)는 디폴트 P/E 전략(1105), 적응형 P/E 전략(1110), 및 비교기(1115)를 포함할 수 있다. 상술 된 바와 같이, 디폴트 P/E 전략(1105)은 가비지 컬렉션을 수행할 때 디폴트 프로그램/소거 시퀀스를 수행하도록 도 2의 SSD(110)를 지시한다. 따라서, 도 2의 SSD(110)가 도 2의 빅팀 블록들(233, 236)을 식별한 후에, 도 2의 SSD(110)는(도 2의 가비지 컬렉션 로직(209)을 이용하여) 프로그램 로직(227)을 이용하여 선택된 빅팀 블록들에서 임의의 유효 페이지들을 프로그램 할 수 있고, 그 후에, 도 2의 소거 로직(230)을 이용하여 선택된 빅팀 블록들을 소거할 수 있다.
반면에, 적응형 P/E 전략(1110)은 나중으로 프로그램 동작을 연기하면서 소거 동작 만을 수행하기 위하여 도 2의 SSD(110)를 지시한다. 따라서, 도 2의 SSD(110)가 도 2의 빅팀 블록들(233, 236)을 식별한 후에, 도 2의 SSD(110)는(도 2의 가비지 컬렉션 로직(209)을 이용하여) 도 2의 빅팀 블록들(233, 236)의 모든 유효 페이지들이 복제되었는지에 대해 도 2의 호스트 머신(105)를 검증할 수 있고, 그 후에 도 2의 소거 로직(230)을 이용하여 선택된 빅팀 블록들을 소거할 수 있다. 나중에, 도 9의 프로그램 인스트럭터(940)에 의해 지시될 때, SSD(110)는 도 2의 호스트 머신(105)을 통하여 복제된 복사본들로부터 유효 페이지들을 접근하면서, 도 2의 프로그램 로직(227)을 이용하여 지연된 프로그램 동작을 수행할 수 있다. (만일 호스트 머신(105)이 도 2의 빅팀 블록들(233, 236)의 모든 페이지들이 복제되었는 지를 검증하지 못하면, 그러면 복제되지 않은 임의의 유효 페이지들은, 데이터 손실을 방지하기 위하여 도 2의 소거 로직(230)이 소거 동작을 수행하기 전에, 도 2의 프로그램 로직(227)을 이용하여 프로그램 되어야 한다.)
P/E 전략 선택기(935)는, 도 9의 부하 모니터(930)에 의해 판별되는 것과 같이, I/O 부하를 이용하여 디폴트 P/E 전략(1105) 및 적응형 P/E 전략(1110) 사이에 선택할 수 있다. P/E 전략 선택기(935)는 비교기(1115)를 이용하여 I/O 부하와 부하 문턱값(1120)을 비교할 수 있다. 만일 비교가 I/O 부하가 높다는 것을 지시하면(예를 들어, 부하 문턱값(1120) 보다 높다), P/E 전략 선택기(935)는 적응형 P/E 전략(1110)을 선택할 수 있다. 반대로, P/E 전략 선택기(935)는 디폴트 P/E 전략(1105)을 선택할 수 있다. 부하 문턱값(1120)은 임의의 목표 값으로 설정될 수 있고, 부하 문턱값(1120)의 현재 값이 너무 높거나 너무 낮은 것으로 판별되면 시간에 따라 가변 될 수 있다.
도 12는 도 9의 프로그램 인스트럭터(940)를 자세하게 보여주는 도면이다. 도 12을 참조하면, 프로그램 인스트럭터(940)는 비교기(1205), 부하 문턱값(1120), 및 시간 문턱값(1210)을 포함한다. 프로그램 인스트럭터(940)는 도 9의 부하 모니터(930)으로부터 I/O 부하를 수신할 수 있고, 그리고 I/O 부하와 부하 문턱값(1120)을 비교할 수 있다. 만일, 도 9의 부하 모니터(930)로부터의 I/O 부하가 부하 문턱값(1120)아래로 떨어지면(비교기(1205)에 의해 판별된 바와 같이), 프로그램 인스트럭터(940)는 지연된 프로그램 동작을 수행하도록 도 2의 SSD(110)를 지시할 수 있다.
또한, 프로그램 인스트럭터(940)는, 도 2의 SSD(110)가 도 11의 적응형 P/E 전략(1110)을 이용하여 가비지 컬렉션을 수행한 이후 얼마의 시간이 경과 하였는지를 추적할 수 있다. 만일, 너무 많은 시간이 경과하였다면, 프로그램 인스트럭터(940)는, 도 9의 부하 모니터(930)에 의해 판별된 바와 같은 I/O 부하가 부하 문턱값(1120) 보다 여전히 높더라도, 지연된 프로그램 동작을 수행하기 위하여 도 2의 SSD(110)를 지시할 수 있다. 이런 방식으로, 지연된 프로그램 동작은 영원히 기다리지 않는다. 이는 프로그램 되지 않고 소거된 유효 페이지들이 도 2의 SSD(110)상에서 복구되어야 하는 것을 방지할 수 있다.
설령 도 12가 도 11의 P/E 전략 선택기(935)와 같이 동일한 부하 문턱값(1120)을 이용하는 프로그램 인스트럭터(940)를 도시할지라도, 본 발명의 일부 실시 예들에서, 프로그램 인스트럭터(940)는 서로 다른 부하 문턱값(1120)을 사용할 수 있다. 즉, 도 11의 디폴트 P/E 전략(1105) 혹은 도 11의 적응형 P/E 전략(1110)을 이용할 지를 선택하는데 이용되는 부하 문턱값은, 지연된 프로그램을 수행할 때를 판별하는데 사용되는 부하 문턱값과 서로 다를 수 있다. 예를 들어, 본 발명의 실시 예들에서 관심 있는 레이턴시는 프로그램 동작을 수행하는 데 연관된 레이턴시이기 때문에, P/E 전략을 선택하는데 사용되는 부하 문턱값은 지연된 프로그램 동작을 수행하는 때를 판별하는데 사용되는 부하 문턱값보다 더 낮을 수 있다. 도 11의 부하 문턱값(1120)과 같이, 프로그램 인스트럭터(940)에 의해 사용되는 부하 문턱값은 정적이거나 시간에 따라 가변 할 수 있다.
도 13은 시간에 대한 도 9의 호스트 머신의 I/O 부하의 그래프를 보여주는 도면이다. 도 13을 참조하면, 그래프(1305)는 시간에 대한 I/O 부하(1310)를 도시한다. 참고로, 부하 문턱값(1120) 또한 도시된다. 시점(1315)에서, 도 2의 호스트 머신(105)은 가비지 컬렉션을 수행하기 위하여 도 2의 SSD(110)를 지시할 수 있다. 시점(1315)에서 I/O 부하(1310)가 부하 문턱값(1120) 보다 높기 때문에, 도 9의 P/E 전략 선택기(935)는 도 11의 적응형 P/E 전략(1110)을 사용하도록 선택할 수 있다.
시점(1315) 후에 일부 구간 동안에, I/O 부하(1310)가 부하 문턱값(1120)보다 더 높다. 따라서, 기간(1320)이 도 2의 시간 문턱값(1210)을 초과한 후에, 시점(1325)에서 프로그램 인스트럭터(940)는, I/O 부하(1310)가 여전히 부하 문턱값(1120)보다 더 높을지라도, 지연된 프로그램 동작을 수행하도록 도 2의 SSD(110)를 지시할 수 있다.
시점(1330)에서, 도 2의 호스트 머신(105)은 가비지 컬렉션을 수행하기 위하여 도 2의 SSD(110)를 다시 지시할 수 있다. 시점(1330)에서, I/O 부하(1310)가 부하 문턱값(1120) 보다 더 높기 때문에, 도 9의 P/E 전략 선택기(935)는 도 11의 적응형 P/E 전략(1110)을 이용하도록 다시 선택할 수 있다. 그러나 결국에, 시점(1335)에서, I/O 부하(1310)가 부하 문턱값(1120) 아래로 떨어진다. 이 시점에서, 도 9의 프로그램 인스트럭터(940)는 지연된 프로그램 동작을 수행하도록 도 2의 SSD(110)를 지시할 수 있다.
마지막으로, 시점(1340)에서, 호스트 머신(105)은 가비지 컬렉션을 수행하도록 도 2의 SSD(110)를 지시할 수 있다. 시점(1340)에서 I/O 부하(1310)가 부하 문턱값(1120) 보다 더 낮기 때문에, 도 9의 P/E 전략 선택기(935)는 도 11의 디폴트 P/E 전략(1105)을 사용하도록 선택할 수 있다.
한편, 도 13은 상술 된 바와 같이 모든 가비지 컬렉션 인스트럭션들이 동일 SSD에 발행되는 것으로 설명되었지만, 서로 다른 가비지 컬렉션 인스트럭션들은 도 2의 호스트 머신(105)과 통신하는 서로 다른 SSDs에 발행될 수 있다. 따라서, 상술 된 바와 같이 다양한 가비지 컬렉션 동작들은 동일 SSD에 의해 모두 수행될 필요가 없다.
도 14a ~ 도 14c는 본 발명의 실시 예에 따른, 다수의 P/E 전략들중 임의의 것을 이용하여 가비지 컬렉션을 수행하는 도 1 내지 도 2의 SSD를 위한 과정에 대한 플로우챠트를 보여주는 도면이다. 도14a을 참조하면, 1405 단계에서, 도 2의 수신 회로(203)는 도 2의 호스트 머신(105)으로부터 인스트럭션 없이 가비지 컬렉션을 수행하지 않도록, 도 2의 호스트 머신(105)으로부터 구현 인스트럭션을 수신할 수 있다(도 2의 구현 로직(212)을 이용하여). 1410 단계에서, 도 2의 수신 회로(203)는 가비지 컬렉션을 수행하기 위하여 도 2의 호스트 머신(105)으로부터 인스트럭션을 수신할 수 있다. 1415 단계에서, 도 2의 수신 회로(203)는 도 2의 호스트 머신(105)으로부터 선택된 P/E 전략을 수신할 수 있다. 1420 단계에서, 도 2의 SSD 제어기(215)는 소거 될 도 2의 빅팀 블록들(233, 236)을 식별할 수 있다. 1425 단계에서, 도 2의 SSD 제어기(215)는 도 2의 빅팀 블록들(233, 236)에서 유효 페이지들(242, 269, 및 245)을 식별할 수 있다.
도 14b를 참조하면, 1430 단계에서, 도 2의 SSD 제어기(215)는 사용될 P/E 전략을 판별할 수 있다. 만일 도 11의 적응형 P/E 전략(1110)이 사용된다면, 그 후에 1435 단계에서, 도 2의 SSD 제어기(215)는 도 2의 DRAM(224)에 빅팀 블록들(233, 236)로부터 복사본을 캐시할 수 있다. 선택적으로, 1440 단계에서, 도 2의 SSD 제어기(215)는 도 1의 저장 장치(115)와 같은, 다른 저장 장치들이 도 2의 빅팀 블록들(233, 236)로부터의 도 2의 유효 페이지들(242, 269, 및 245)의 복제본들(replicas)을 저장하는 지를 판별할 수 있다.
도 14c을 참조하면, 만일 다른 저장 장치들이 도 2의 빅팀 블록들(233, 236)로부터의 도 2의 유효 페이지들(242, 269, 및 245)의 복제본들을 저장한다면, 1445 단계에서, 도 2의 SSD 제어기(215)는 도 2의 맵핑 테이블(221)에 지연된 프로그램 동작에서 나중에 페칭하기 위해서 이러한 페이지들을 마크할 수 있다. 그 외에는, 1450 단계에서, 도 2의 프로그램 로직(227)는 복제본들이 없는 도 2의 빅팀 블록들(233, 236)로부터의 이러한 유효 페이지들에 대한 프로그램 동작을 수행할 수 있다. 점선(1455)에 의해 도시된 바와 같이, 1440 단계, 1445 단계, 및 1450 단계는 도 2의 빅팀 블록들(233, 236)에서 모든 유효 페이지들을 검사하는데 필요한 만큼 반복 수행될 수 있다.
반면에, 만일, 1430 단계에서 도 2의 SSD 제어기(215)가 디폴트 P/E 전략이 사용될 것을 판별한다면, 프로세싱은 도 2의 프로그램 로직(227)을 이용하여 도 2의 빅팀 블록들(233, 236)의 모든 유효 페이지들에 대한 프로그램 동작을 수행하도록 1450 단계를 진행할 수 있다.
도 2의 SSD 제어기(215)가 도 11의 디폴트 P/E 전략(1105) 혹은 도 11의 적응형 P/E 전략(1110)이 사용될 지를 판별하는 것에 상관없이, 임의의 필요한 프로그램 동작들이 1450 단계에서 수행된 후에, 1460 단계에서, 도 2의 소거 로직(230)은 도 2의 빅팀 블록들(233, 236)을 소거할 수 있으며, 이후, 도 2의 SSD(110)가 가비지 컬렉션을 완료한다.
한편, 도 14a 내지 도 14c는 예시적인 플로우챠트를 도시하며, 도 14a 내지 도 14c에 도시된 단계들의 순서는 가변 될 수 있다. 예를 들어, 단계들(1405, 1410, 및 1415)은 임의의 순서로 발생할 수 있거나 동일한 시간에(혹은 거의 동일한 시간)에 발생할 수 있다. 유사하게, 단계들(1420, 1425, 및 1430)은 임의의 순서로 발생할 수 있거나 동일한 시간(혹은 거의 동일한 시간)에 발생할 수 있다.
도 15a 내지 도 15b는 본 발명의 실시 예들에 따른, 지연된 프로그램 동작의 적용을 받는 데이터에 대한 지연된 프로그램 동작 혹은 쓰기 요청을 수행하는 도 1 내지 도 2의 SSD를 위한 과정에 대한 플로우챠트를 보여주는 도면이다. 도 15a을 참조하면, 1505 단계에서, 도 2의 수신 회로(203)는 지연된 프로그램 동작을 수행하도록 도 5의 인스트럭션(505)을 수신할 수 있다. 선택적으로, 1510 단계에서, 도 2의 수신 회로(203)는 지연된 프로그램 동작에 종속된 페이지에 영향을 주면서 도 6의 쓰기 인스트럭션(605)을 수신할 수 있다. 사용된 과정들이 유사하기 때문에, 양쪽 과정들의 실시 예들은 도 15 a 및 도 15b에 도시된다.
도 2의 SSD(110)가 지연된 프로그램 동작을 수행하고 있는 지 혹은 지연된 프로그램 동작에 종속되는 페이지를 변조하기 위하여 도 6의 쓰기 인스트럭션(605)을 수행하는 지에 상관없이, 도 2의 SSD 제어기(215)는 문제의 페이지가 도 2의 DRAM(224)에 캐시 되어 있는 지를 판별할 수 있다. 만일, 예를 들어, 도 2의 SSD(110)가 문제의 페이지들을 캐시 했다면, 문제의 페이지는 도 2의 DRAM(224)에 캐시 될 수 있다. 만일 문제의 페이지가 도 2의 DRAM(224)에 현재적으로 캐시 되어 있지 않다면, 1515 단계에서 도 2의 송신 회로(206)는 도 1의 저장 장치(115)와 같은 다른 저장 장치로부터 페이지의 도 6의 복사본(620)을 요청하면서, 도 6의 요청(610)을 발행할 수 있다. 1520 단계에서, 도 2의 수신 회로(203)는 도 2의 호스트 머신(105)으로부터 도 6의 복사본(620)을 수신할 수 있다.
도 15b를 참조하면, 만일 도 2의 SSD(110)가 지연된 프로그램 동작을 수행하고 있었다면, 1525 단계에서 도 2의 SSD 제어기(215)는 블록 C(도 2의 239)에서 도 6의 페이지(640)와 같은 유효 페이지에 도 6의 복사본(620)을 쓸 수 있다.
만일 도 2의 SSD(110)가 지연된 프로그램 동작에 종속하는 데이터에 대한 쓰기 요청을 처리하고 있었다면, 1530 단계에서 도 2의 SSD 제어기(215)는 도 2의 DRAM(224)에 도 6의 복사본(620)을 캐시할 수 있다. 1535 단계에서, 도 2의 SSD 제어기(215)는 도 6의 쓰기 요청(605)에 따라 도 6의 캐시된 복사본(620)을 변조할 수 있고, 그리고 1540 단계에서, 도 2의 SSD 제어기(215)는 블록 C(도 2의 239)에서 도 6의 페이지(640)에 변조된 캐시된 복사본(630)을 쓸 수 있다.
어느 경우에나, 페이지가 도 2의 플래시 메모리(218)에 쓰여진 후에, 1545 단계에서, 도 2의 SSD 제어기(215)는 도 2의 맵핑 테이블(221)로부터 페이지를 언마크(unmark) 할 수 있다(도 2의 SSD(110)가 데이터의 유효 복사본을 현재 저장하고 있기 때문이다).
만약 문제의 페이지(자연 후에 프로그램 되거나, 도 6의 쓰기 인스트럭션(605)에 의해 변조되어질)가 도 2의 DRAM(224)에 이전에 캐시 되었다면, 도 15a의 1505 단계 및 1510 단계에서 적절한 인스트럭션을 수신한 후에, 프로세싱은 곧바로 1535 단계(만일 문제의 페이지가 도 6의 쓰기 인스트럭션(605)에 의해 변조되는 것이라면) 혹은 1540 단계(만일 문제의 페이지가 지연 후에 프로그램되는 것이라면)로 점핑(jumping) 할 수 있다. 또한, 1545 단계는 생략될 수 있다(만일, 문제의 페이지가 도 2의 맵핑 테이블(221)에 마크되지 않았다면).
도 16a 내지 도 16c는 본 발명의 실시 예들에 따른, 다수의 P/E 전략들중 임의의 것을 이용하여 가비지 컬렉션을 수행하기 위하여 도 1 내지 도 2를 지시하도록 도 1의 호스트 머신을 위한 과정에 대한 플로우챠트를 보여주는 도면이다. 도 16을 참조하면, 1605 단계에서, 도 9의 송신기(915)는 도 2의 호스트 머신(105)에 의해 그렇게 하도록 지시되지 않고는 가비지 컬렉션을 수행하지 않도록 도 2의 SSD(110)를 지시할 수 있다. 1610 단계에서, 도 2의 호스트 머신(105)은 도 2의 SSD(110)가 가비지 컬렉션을 수행할 필요가 있는 지를 판별할 수 있다. 이는, 예를 들어, 도 2의 SSD(110)로부터 도 2의 SSD(110)가 가비지 컬렉션을 수행할 필요하다는 통지를 수신하는 도 9의 수신기(920)에 의해 발생할 수 있다. 1615 단계에서, 도 9의 부하 모니터(930)는 도 13의 I/O 부하(1310)를 판별할 수 있다.
도 16b을 참조하면, 1620 단계에서, 도 9의 P/E 전략 선택기(935)는 도 11의 디폴트 P/E 전략(1105) 혹은 적응형 P/E 전략(1110)을 사용할 지를 판별할 수 있다. 만일 도 9의 P/E 전략 선택기(935)가 도 11의 적응형 P/E 전략(1110)을 사용할 지를 판별한다면, 1625 단계에서, 도 9의 P/E 전략 선택기(935)는 도 11의 적응형 P/E 전략(1110)을 선택할 수 있다. 반면에, 1630 단계에서, 도 9의 P/E 전략 선택기(935)는 도 11의 디폴트 P/E 전략(1105)을 선택할 수 있다. 어느 쪽이든, 1635 단계에서, 도 9의 송신기(915)는 선택된 P/E 전략을 이용하는 가비지 컬렉션을 수행하도록 도 2의 SSD(110)를 지시할 수 있다.
1640 단계에서, 도 2의 호스트 머신(105)은 어떤 P/E 전략이 선택되었는 지를 판별할 수 있다. 만일 도 9의 P/E 전략 선택기(935)가 도 11의 디폴트 P/E 전략(1105)을 선택했다면, 더 이상 할 일이 없다. 도 16c를 참조하면, 반면에, 도 9의 P/E 전략 선택기(935)가 도 11의 적응형 P/E 전략(1110)을 선택했다면, 1645 단계에서, 부하 모니터(930)는 시간에 대하여 I/O 부하(1310)를 추적할 수 있다. 1650 단계에서, 도 9의 프로그램 인스트럭터(940)는 I/O 부하(1310)가 도 12의 부하 문턱값(1120) 아래로 떨어지는 지를 판별할 수 있다. 만일 그렇다면, 1640 단계에서 도 9의 프로그램 인스트럭터(940)는 지연된 프로그램 동작을 수행하도록 도 2의 SSD(110)를 지시할 수 있다. 그 외에는, 1655 단계에서 도 9의 프로그램 인스트럭터(940)는 도 2의 SSD(110)가 가비지 컬렉션의 소거 동작을 완료한 이후 도 13의 기간(1320)이 얼마나 경과 하였는지를 추적할 수 있다. 1660 단계에서, 도 9의 프로그램 인스트럭터(940)는 도 13의 기간(1320)이 도 12의 시간 문턱값(1210)을 초과하는지 여부를 판별할 수 있다. 만약 그렇다면, 프로세싱은 1640 단계에서 계속될 수 있으며, 도 9의 프로그램 인스트럭터(940)는 지연된 프로그램 동작을 수행하기 위하여 도 2의 SSD(110)를 지시할 수 있다. 그 외에는, 제어는 지연된 프로그램 동작을 수행하기 위하여 도 2의 SSD(110)를 지시할 때를 알기 위해 확인을 계속하도록 1645 단계로 되돌아갈 수 있다.
한편, 도 16a 내지 도 16c는 예시적인 플로우챠트를 도시하지만, 도 16a 내지 도 16c의 단계들의 순서는 가변 될 수 있다. 예를 들어, 1610 단계와 1615 단계는 임의의 순서로 발생할 수 있거나 혹은 동일한 시간(혹은 거의 동일한 시간)에 발생할 수 있다.
도 14a 내지 도 16c에서, 본 발명의 일부 실시 예들이 도시된다. 하지만, 당업자는 단계들의 순서를 변경하거나 단계들을 생략하거나, 혹은 도면에 도시되지 않은 단계들을 포함하는 다른 실시 예들이 가능하다고 이해되어야 할 것이다. 플로우챠트들의 이러한 모든 변형들은 명시적으로 기술되었든 그렇지 않든, 본 발명의 실시 예들로 간주된다.
다음의 설명은 본 발명의 개념의 특정 형태를 구현할 수 있는 적절한 머신 또는 머신의 간단한 일반적인 설명을 제공하는 것을 목적으로 하고 있다. 일반적으로 머신 혹은 머신들은 프로세서, 메모리, 예를 들면, RAM, ROM, 혹은 다른 상태 저장 매체, 저장 장치, 비디오 인터페이스 및 입력 / 출력 인터페이스 포트들을 포함할 수 있다. 머신 혹은 머신들은, 키보드, 마우스 등과 같은 전통적인 입력 장치, 다른 컴퓨터, 가상 현실 환경과의 상호 작용, 생체로부터 받은 피드백, 혹은 다른 입력 신호로부터 입력에 의해 적어도 일부분에서 제어될 수 있다. 본 명세서에서 사용하는 용어 "머신"은 널리 싱글 시스템, 가상 컴퓨터 또는 통신 가능하게 결합된 머신 시스템, 가상 머신 또는 함께 작동하는 장치를 포함할 수 있다고 의도된다. 일반적인 머신은 개인 또는 공공 교통 기관, 예를 들어, 자동차, 기차, 택시 등과 같은 개인용 컴퓨터, 워크 스테이션, 서버, 휴대용 컴퓨터, 휴대용 장치, 전화, 태블릿 등의 컴퓨팅 장치 및 수송 장치를 포함할 수 있다.
머신 혹은 머신들은, 프로그래밍 또는 논-프로그래머블 논리 장치 및 어레이와 같은 내장 컨트롤러, 주문형 집적 회로 (ASIC), 임베디드 컴퓨터, 스마트 카드 등을 포함 할 수 있다. 머신 혹은 머신들은 컴퓨터 또는 컴퓨터 네트워크 인터페이스, 모뎀 또는 다른 통신 연결을 통해 같은 하나 이상의 원격 컴퓨터에 하나 이상의 연결을 이용할 수 있다. 머신들은 인트라넷 등의 인터넷 로컬 영역 네트워크, 광역 네트워크 등의 물리적 및/또는 논리적인 네트워크를 통해 상호 연결할 수 있다. 네트워크 통신이 무선 주파수(RF), 위성, 마이크로파, IEEE 545.11, 블루투스, 광학, 자외선, 케이블, 레이저 등을 포함하는 단거리/장거리 무선 유무선 캐리어들을 이용할 수 있다고 당업자에게 이해되어야 할 것이다.
본 발명의 실시 예에 따른 개념은, 기능들, 과정들, 데이터 구조들, 어플리케이션 프로그램들 등을 포함하는 데이터와 함께 혹은 참조하여 설명될 수 있다. 이러한 데이터는 업무들을 수행하거나 요약 데이터 종류/ 로-레벨 하드웨어 콘텍스트를 정의하는 머신에 결과들에 억세스 된다. 예를 들어, 연관된 데이터는 휘발성 및/혹 비휘발성 메모리, 예를 들어 RAM, ROM 등에 저장되거나, 다른 저장 장치들 및 저장 매체에 연관된 것들, 예를 들어, 하드 드라이브들, 플로피 디스크들, 광학 스토리지, 테이프들, 플래시 메모리, 메모리 스틱들, 디지털 비디오 디스크, 바이오 스토리지 등과 같은 것에 저장될 수 있다. 연관 데이터는, 물리 및/혹 논리 네트워크를 포함하는 전송 환경들 위에, 패킷들, 직렬 데이터, 병렬 데이터, 전파 신호들 등과 같은 형태로 전송될 수 있고, 압축되거나 암호화된 포맷으로 사용될 수 있다. 연관 데이터는 분배 환경에 사용될 수 있고, 그리고 머신 억세스를 위하여 국부적으로 및/혹 원격적으로 저장될 수 있다.
설명된 도시 된 실시 예를 참조하여 본 발명의 개념의 원리를 예시했지만, 그것은 도시된 실시 예는 이러한 원리에서 벗어나지 않고 배치 및 상세에서 변경할 수 어떤 원하는 방식으로 결합할 수 있는 것으로 이해되어야 할 것이다.
본 발명의 개념의 실시 예들은 하나 이상의 프로세서에 의해 실행 가능한 명령을 포함하는 유형의 비 일시적 기계 판독 가능 매체를 포함 할 수 있으며, 상기 명령은 본 명세서에서 설명된 바와 같은 발명 개념의 요소를 수행하기 위한 명령을 포함한다.
도시된 실시 예들을 참조하여 본 발명의 개념의 원리를 설명하도록 도시 하였지만, 도시된 실시 예들은 그러한 원리를 벗어나지 않고 배열 및 세부 사항을 수정할 수 있으며 임의의 원하는 방식으로 조합될 수 있음을 알 수 있을 것이다. 또한, 전술 한 설명은 특정 실시 예에 초점을 맞추었지만, 다른 구성들도 고려된다. 특히, "발명의 실시 예에 따른" 등과 같은 표현이 본 명세서에서 사용되더라도, 이러한 문구는 일반적으로 실시 예 가능성을 나타내기 위한 것이고, 본 발명의 개념을 특정 실시 예의 구성으로 한정하려는 것은 아니다. 본 명세서에 사용된 바와 같이, 이들 용어는 다른 실시 예들과 조합 가능한 동일하거나 상이한 실시 예들을 나타낼 수 있다.
상술한 예시적인 실시 예들은 본 발명의 개념을 제한하는 것으로 해석되어서는 안 된다. 비록 일부 실시 예들이 설명되었지만, 당업자는 본 개시의 신규한 교시 및 이점으로부터 실질적으로 벗어나지 않고도 이들 실시 예들에 많은 수정이 가능하다는 것을 용이하게 이해할 것이다. 따라서, 이러한 모든 수정들은 청구항에 정의된 본 발명의 개념의 범위 내에 포함되는 것으로 의도된다.
본 발명의 실시 예들은 아래의 진술들에 의해 제한되지 않으면서 확장될 수 있다.
진술 1. 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(SSD)는: 데이터를 저장하는 스토리지;
가비지 컬렉션을 수행하기 위하여 호스트 머신으로부터 인스트럭션을 수신하고, 상기 인스트럭션은 상기 SSD에 의해 사용될 Program/Erase(P/E) 전략을 포함하는 수신 회로;
가비지 컬렉션을 수행하기 위하여 상기 인스트럭션(257)을 수신하는 수신 회로에 응답하여 가비지 컬렉션을 수행하고 가비지 컬렉션 로직을 포함하고, 상기 가비지 컬렉션 로직은 상기 P/E 전략에 따른 가비지 컬렉션 동안에 프로그램 동작을 수행하기 위한 프로그램 로직을 포함하고; 및
나중에 제 2 저장 장치의 복제된 복사본으로부터 페칭하기 위하여 빅팀 블록의 적어도 하나의 페이지를 식별하는 맵핑 테이블; 을 포함하고,
상기 프로그램 로직은, 상기 P/E 전략이 적응형 P/E 전략이면, 빅팀 블록을 소거하기 전에 상기 SSD의 제 2 블록에 상기 적어도 하나의 페이지를 복사하지 않고, 상기 제 2 저장 장치로부터 복제된 복사본을 페칭하기 위하여, 상기 SSD의 상기 빅팀 블록에 적어도 하나의 페이지를 상기 맵핑 테이블에 마크하도록 동작한다.
진술 2. 본 발명의 실시 예는 진술 1에 따른 SSD를 포함하고, 클라이언트 머신으로부터 쓰기 요청을 수신하는 수신 회로에 응답하여, 프로그램 로직은 상기 제 2 저장 장치로부터 상기 SSD의 메모리에 상기 적어도 하나의 페이지의 복제된 복사본을 캐시하고, 상기 쓰기 요청에 응답하여 상기 메모리에서 상기 적어도 하나의 페이지의 상기 캐시된 복사본을 변조하고, 및 상기 SSD의 상기 제 2 블록에 상기 적어도 하나의 상기 변조된 복사본을 쓰도록 동작한다.
진술 3. 본 발명의 실시 예는 진술 2에 따른 SSD를 포함하고, 상기 프로그램 로직은 상기 맵핑 테이블에 상기 적어도 하나의 페이지를 언마크 하도록 동작한다.
진술 4. 본 발명의 실시 예는 진술 1에 따른 SSD를 포함하고, 상기 프로그램 로직은 상기 P/E 전략이 디폴트 P/E 전략이면 상기 빅팀 블록을 소거하기 전에 상기 빅팀 블록으로부터 상기 SSD의 상기 제 2 블록으로 상기 적어도 하나의 페이지를 복사하도록 동작한다.
진술 5. 본 발명의 실시 예는 진술 1에 따른 SSD를 포함하고, 상기 P/E 전략이 상기 적응형 P/E 전략이면, 상기 프로그램 로직은 상기 호스트 머신의 I/O 부하가 부하 문턱값보다 적을 대 상기 제 2 저장 장치로부터 상기 SSD의 상기 제 2 블록으로 상기 적어도 하나의 페이지의 상기 복제된 복사본을 복사하도록 동작한다.
진술 6. 본 발명의 실시 예는 진술 1에 따른 SSD를 포함하고, 상기 P/E 전략이 상기 적응형 P/E 전략이면, 상기 프로그램 로직은 시간 문턱값이 경과 된 후에 상기 제 2 저장 장치로부터 상기 SSD의 상기 제 2 블록으로 상기 적어도 하나의 페이지의 상기 복제된 복사본을 복사하도록 동작한다.
진술 7. 본 발명의 실시 예는 진술 1에 따른 SSD를 포함하고, 제 2 저장 장치에 상기 적어도 하나의 페이지의 복제된 복사본이 없으면, 상기 프로그램 로직은 P/E 전략이 적응형 P/E 전략이더라도 상기 빅팀 블록이 소거되기 전에, 상기 빅팀 블록으로부터 상기 SSD의 상기 제 2 블록에 상기 적어도 하나의 페이지를 복사하도록 동작한다.
진술 8. 본 발명의 실시 예는 진술 1에 따른 SSD를 포함하고, 상기 SSD는 상기 호스트 머신에 의해 지시되지 않으면 상기 SSD가 가비지 컬렉션을 수행하지 하도록 구현시키는 구현 로직을 더 포함한다.
진술 9. 본 발명의 실시 예에 따른 SSD(solid state drive)는,
데이터를 저장하기 위한 스토리지;
가비지 컬렉션을 수행하도록 호스트 머신으로부터 인스트럭션을 수신하고, 상기 인스트럭션은 상기 SSD에 의해 사용될 P/E 전략을 포함하는 수신 회로;
가비지 컬렉션을 수행하도록 상기 인스트럭션(272)를 수신하는 수신 회로에 응답하여 가비지 컬렉션을 수행하는 가비지 컬렉션 로직을 포함하고, 상기 가비지 컬렉션 로직은 상기 P/E 전략에 따른 가비지 컬렉션 동안에 프로그램 동작을 수행하기 위한 프로그램 로직을 포함하고;
상기 SSD의 빅팀 블록에 상기 적어도 하나의 복사본을 캐시하는 DRAM; 및
상기 빅팀 블록을 소거하기 전에 상기 빅팀 블록들로부터의 적어도 하나의 페이지를 상기 DRAM에 캐시된 복사본에 복사하고, 그리고 상기 P/E 전략이 적응형 P/E 전략이면 상기 빅팀 블록을 소거하기 전에 상기 SSD에 상기 적어도 하나의 페이지를 복사하지 않으면서 상기 빅팀 블록을 소거 한 후에 상기 제 2 블록으로 상기 캐시된 복사본을 복사하도록 동작하는 SSD 제어기를 포함한다.
진술 10. 본 발명의 실시 예는 진술 9에 따른 SSD를 포함하고, 상기 프로그램 로직은 상기 P/E 전략이 디폴트 P/E 전략이면 상기 빅팀 블록을 소거 하기 전에 상기 빅팀 블록을 상기 SSD의 상기 제 2 블록으로 적어도 하나의 페이지를 복사하도록 동작한다.
진술 11. 본 발명의 실시 예는 진술 9에 따른 SSD를 포함하고, 상기 P/E 전략이 상기 디폴트 P/E 전략이면, 상기 프로그램 로직은 상기 호스트 머신의 I/O 부하가 부하 문턱값보다 적을 때, 상기 DRAM으로부터 상기 SSD의 상기 제 2 블록으로 상기 적어도 하나의 페이지를 복사하도록 동작한다.
진술 12. 본 발명의 실시 예는 진술 9에 따른 SSD를 포함하고, 상기 P/E 전략이 상기 디폴트 P/E 전략이면, 상기 프로그램 로직은 시간 문턱값이 경과한 후에, 상기 DRAM으로부터 상기 SSD의 상기 제 2 블록으로 상기 적어도 하나의 페이지를 복사하도록 동작한다.
진술 13. 본 발명의 실시 예는 진술 9에 따른 SSD를 포함하고, 제 2 저장 장치에 상기 적어도 하나의 페이지의 복제된 복사본이 없으면, 상기 프로그램 로직은 P/E 전략이 적응형 P/E 전략이더라도 상기 빅팀 블록이 소거되기 전에, 상기 빅팀 블록으로부터 상기 SSD의 상기 제 2 블록에 상기 적어도 하나의 페이지를 복사하도록 동작한다.
진술 14. 본 발명의 실시 예는 진술 9에 따른 SSD를 포함하고, 상기 SSD는 상기 호스트 머신에 의해 지시되지 않으면 상기 SSD가 가비지 컬렉션을 수행하지 하도록 구현시키는 구현 로직을 더 포함한다.
진술 15. 본 발명의 실시 예에 따른 SSD(solid state drive)는,
데이터를 저장하기 위한 스토리지;
가비지 컬렉션을 수행하도록 호스트 머신으로부터 인스트럭션을 수신하고, 상기 인스트럭션은 상기 SSD에 의해 사용될 P/E 전략을 포함하는 수신 회로;
가비지 컬렉션을 수행하도록 상기 인스트럭션(272)를 수신하는 수신 회로에 응답하여 가비지 컬렉션을 수행하는 가비지 컬렉션 로직을 포함하고, 상기 가비지 컬렉션 로직은 상기 P/E 전략에 따른 가비지 컬렉션 동안에 프로그램 동작을 수행하기 위한 프로그램 로직을 포함하고; 및
상기 P/E 전략이 적응형 P/E 전략이면 빅팀 블록을 소거하기 전에 상기 SSD의 제 2 블록에 빅팀 블록의 적어도 하나의 페이지를 복사하지 않고, 상기 빅팀 블록의 상기 적어도 하나의 페이지를 위한 지연 프로그램 동작을 수행하기 위한 수단을 포함한다.
진술 16. 본 발명의 실시 예는 진술 15에 따른 SSD를 포함하고, 상기 지연된 프로그램 동작을 수행하기 위한 수단은:
제 2 저장 장치의 복제된 복사본으로부터 나중에 페칭하기 위하여 상기 빅팀 블록에서 상기 적어도 하나의 페이지를 식별하기 위한 맵핑 테이블을 포함하고;
상기 프로그램 로직은 상기 제 2 저장 장치의 복제된 복사본으로부터 페칭하기 위하여 상기 빅팀 블록의 상기 적어도 하나의 페이지를 상기 맵핑 테이블에서 마크하도록 동작한다.
진술 17. 본 발명의 실시 예는 진술 16에 따른 SSD를 포함하고, 클라이언트 머신으로부터 쓰기 요청을 수신하는 상기 수신 회로에 응답하여, 상기 프로그램 로직은 상기 제 2 저장 장치로부터 상기 SSD의 메모리로 상기 적어도 하나의 페이지의 상기 복제된 복사본을 캐시하고, 상기 쓰기 요청에 응답하여 상기 메모리에서 상기 적어도 하나의 상기 캐시된 복사본을 변조하고, 및 상기 SSD 의 상기 제 2 블록에 상기 적어도 하나의 페이지의 상기 변조된 복사본을 쓰도록 동작한다.
진술 18. 본 발명의 실시 예는 진술 17에 따른 SSD를 포함하고, 상기 프로그램 로직은 상기 맵핑 테이블에서 상기 적어도 하나의 페이지를 언마크 하도록 동작한다.
진술 19. 본 발명의 실시 예는 진술 15에 따른 SSD를 포함하고,
상기 지연된 프로그램 동작을 수행하기 위한 수단은 상기 SSD의 상기 빅팀 블록에서 상기 적어도 하나의 복사본을 캐시하는 DRAM을 포함하고; 그리고
상기 SSD는 상기 빅팀 블록을 소거하기 전에 상기 빅팀 블록(233, 236)의 상기 적어도 하나의 페이지를 상기 DRAM의 캐시된 복사본으로 복사하고 및 상기 빅팀 블록을 소거한 후에 상기 제 2 블록으로 상기 캐시된 복사본을 복사하도록 동작하는 SSD 제어기를 더 포함한다.
진술 20. 본 발명의 실시 예는 진술 15에 따른 SSD를 포함하고, 상기 프로그램 로직은 상기 P/E 전략이 디폴트 P/E 전략이면 상기 빅팀 블록을 소거 하기 전에 상기 빅팀 블록을 상기 SSD의 상기 제 2 블록으로 적어도 하나의 페이지를 복사하도록 동작한다.
진술 21. 본 발명의 실시 예는 진술 15에 따른 SSD를 포함하고, 상기 P/E 전략이 상기 디폴트 P/E 전략이면, 상기 프로그램 로직은 상기 호스트 머신의 I/O 부하가 부하 문턱값보다 적을 때, 상기 DRAM으로부터 상기 SSD의 상기 제 2 블록으로 상기 적어도 하나의 페이지를 복사하도록 동작한다.
진술 22. 본 발명의 실시 예는 진술 15에 따른 SSD를 포함하고, 상기 P/E 전략이 상기 디폴트 P/E 전략이면, 상기 프로그램 로직은 시간 문턱값이 경과한 후에, 상기 DRAM으로부터 상기 SSD의 상기 제 2 블록으로 상기 적어도 하나의 페이지를 복사하도록 동작한다.
진술 23. 본 발명의 실시 예는 진술 15에 따른 SSD를 포함하고, 제 2 저장 장치에 상기 적어도 하나의 페이지의 복제된 복사본이 없으면, 상기 프로그램 로직은 P/E 전략이 적응형 P/E 전략이더라도 상기 빅팀 블록이 소거되기 전에, 상기 빅팀 블록으로부터 상기 SSD의 상기 제 2 블록에 상기 적어도 하나의 페이지를 복사하도록 동작한다.
진술 24. 본 발명의 실시 예는 진술 9에 따른 SSD를 포함하고, 상기 SSD는 상기 호스트 머신에 의해 지시되지 않으면 상기 SSD가 가비지 컬렉션을 수행하지 하도록 구현시키는 구현 로직을 더 포함한다.
진술 25. 본 발명의 실시 예에 따른 호스트 머신은:
프로세서;
네트워크를 위하여 상기 호스트 머신에 연결되도록 동작하는 네트워크 커넥터;
적어도 하나의 SSD의 입출력(I/O) 부하를 모니터 하기 위한 부하 모니터;
상기 I/O 부하에 근거로 하여 디폴트 P/E(program/erase) 전략 및 적응형 P/E 전략 중에서 선택하도록 동작하는 P/E 전략 선택기; 및
상기 선택된 P/E 전략을 갖는 상기 적어도 하나의 SSD에 가비지 컬렉션 인스트럭션을 전송하도록 동작하는 송신기를 포함한다.
진술 26. 본 발명의 실시 예는 진술 25에 따른 호스트 머신(105)을 포함하고, 상기 호스트 머신은 상기 적어도 하나의 SSD를 더 포함한다.
진술 27. 본 발명의 실시 예는 진술 25에 따른 호스트 머신을 포함하고, 상기 부하 모니터는 상기 적어도 하나의 SSD의 상기 I/O 부하를 주기적으로 판별하도록 동작한다.
진술 28. 본 발명의 실시 예는 진술 25에 따른 호스트 머신을 포함하고, 상기 부하 모니터는 상기 적어도 하나의 SSD가 가비지 컬렉션을 수행할 필요한 지를 판별하도록 동작한다.
진술 29. 본 발명의 실시 예는 진술 25에 따른 호스트 머신을 포함하고, 상기 P/E 전략 선택기는 상기 I/O 부하와 부하 문턱값을 비교하는 비교기를 포함한다.
진술 30. 본 발명의 실시 예는 진술 29에 따른 호스트 머신을 포함하고, 상기 P/E 전략 선택기는 상기 I/O 부하와 부하 문턱값보다 적을 때 상기 디폴트 P/E 전략을 선택하도록 동작한다.
진술 31. 본 발명의 실시 예는 진술 29에 따른 호스트 머신을 포함하고, 상기 P/E 전략 선택기는 상기 I/O 부하와 부하 문턱값보다 많을 때 적응형 디폴트 P/E 전략을 선택하도록 동작한다.
진술 32. 본 발명의 실시 예는 진술 25에 따른 호스트 머신을 포함하고,
상기 호스트 머신은 지연된 프로그램 동작을 수행하기 위하여 상기 적어도 하나의 SSD 를 지시할 때를 판별하도록 동작하는 프로그램 인스트럭터를 더 포함하고; 그리고
상기 송신기는 상기 적어도 하나의 SSD에 상기 지연된 프로그램 동작을 수행하도록 인스트럭션을 송신하도록 동작한다.
진술 33. 본 발명의 실시 예는 진술 22에 따른 호스트 머신을 포함하고,
상기 프로그램 인스트럭터는 상기 I/O 부하를 부하 문턱값과 비교하는 비교기를 포함하고; 및
상기 프로그램 인스트럭터는, 상기 I/O 부하가 상기 부하 문턱값보다 적으면 상기 지연된 프로그램 동작을 수행하도록 상기 적어도 하나의 SSD을 지시하도록 동작한다.
진술 34. 본 발명의 실시 예는 진술 22에 따른 호스트 머신을 포함하고,
상기 프로그램 인스트럭터는 상기 P/E 전략 선택기가 적응형 P/E 전략을 선택한 구간을 측정하기 위한 타이머를 포함하고; 및
상기 프로그램 인스트럭터는 상기 구간이 시간 문턱값 보다 길다면 상기 지연된 프로그램 동작을 수행하도록 상기 적어도 하나의 SSD 를 지시하도록 동작한다.
진술 35. 본 발명의 실시 예는 진술 25에 따른 호스트 머신을 포함하고, 상기 부하 모니터 및 상기 P/E 전략 선택기는 상기 프로세서에 의해 실행될 수 있다.
진술 36. 본 발명의 실시 예는 진술 25에 따른 호스트 머신을 포함하고, 상기 부하 모니터 및 상기 P/E 전략 선택기는 상기 호스트 머신에 하드웨어 모듈들로 존재한다.
진술 37. 본 발명의 실시 예는 진술 25에 따른 호스트 머신을 포함하고, 상기 호스트 머신은, 상기 호스트 머신에 의해 지시될 때만 가비지 컬렉션을 수행하도록 상기 적어도 하나의 SSD를 구현하도록 동작하는 구현 로직을 더 포함한다.
진술 38. 본 발명의 실시 예는 방법을 포함하고, 상기 방법은,
호스트 머신으로부터 SSD(solid state drive)에서, 가비지 컬렉션을 수행하기 위하여 상기 SSD에서 사용될 P/E(program/erase) 전략을 갖는 인스트럭션을 수신하는 단계;
소거될 상기 SSD 의 빅팀 블록을 식별하는 단계;
유효 데이터를 저장하는 상기 빅팀 블록의 적어도 하나의 페이지를 식별하는 단계;
상기 P/E 전략이 적응형 P/E 전략을 사용하도록 명세화되면, 상기 빅팀 블록을 소거한 후에 상기 SSD의 제 2 블록에 상기 적어도 하나의 페이지를 복사하도록 배열하는 단계; 및
상기 빅팀 블록을 소거하는 단계를 포함한다.
진술 39. 본 발명의 실시 예는 진술 38에 따른 방법을 포함하고, 상기 빅팀 블록을 소거한 후에 상기 SSD의 제 2 블록에 상기 적어도 하나의 페이지를 복사하도록 배열하는 단계는, 상기 SSD의 제 2 블록에 상기 적어도 하나의 페이지를 복사하지 않고 상기 제 2 저장 장치의 복제된 복사본으로부터 페칭하기 위하여 상기 적어도 하나의 페이지를 맵핑 테이블에서 마크하는 단계를 포함한다.
진술 40. 본 발명의 실시 예는 진술 39에 따른 방법을 포함하고, 복제된 복사본으로부터 페칭하기 위하여 상기 적어도 하나를 마크하는 단계는, 상기 제 2 저장 장치에 상기 적어도 하나의 페이지의 복제된 복사본이 존재하지 않으면 상기 빅팀 블록을 소거하기 전에 상기 SSD의 상기 제 2 블록으로 상기 적어도 하나의 페이지를 복사하는 단계를 포함한다.
진술 41. 본 발명의 실시 예는 진술 38에 따른 방법을 포함하고, 상기 빅팀 블록을 소거한 후에 상기 SSD의 제 2 블록에 상기 적어도 하나의 페이지를 복사하도록 배열하는 단계는, 상기 빅팀 블록을 소거하기 전에 DRAM(dynamic random access memory)에서 상기 적어도 하나의 페이지의 복사본을 캐시하는 단계를 포함한다.
진술 42. 본 발명의 실시 예는 진술 41에 따른 방법을 포함하고, 상기 빅팀 블록을 소거한 후에 상기 SSD의 제 2 블록에 상기 적어도 하나의 페이지를 복사하도록 배열하는 단계는, 상기 빅팀 블록을 소거한 후에 상기 제 2 블록을 상기 캐시된 복사본을 쓰는 단계를 더 포함한다.
진술 43. 본 발명의 실시 예는 진술 38에 따른 방법을 포함하고, 상기 P/E 전략이 디폴트 P/E 전략을 이용하도록 명세화 되면, 상기 빅팀 블록을 소거하기 전에 상기 SSD의 상기 제 2 블록에 상기 적어도 하나의 페이지를 복사하는 단계를 더 포함한다.
진술 44. 본 발명의 실시 예는 진술 38에 따른 방법을 포함하고, 상기 방법은, 상기 SSD의 입출력(I/O) 부하가 적을 때, 상기 제 2 저장 장치로부터 상기 SSD의 상기 제 2 블록으로 상기 적어도 하나의 페이지의 상기 복제된 복사본을 복사하는 단계를 더 포함한다.
진술 45. 본 발명의 실시 예는 진술 38에 따른 방법을 포함하고, 상기 방법은, 시간 문턱값이 경과된 후에, 상기 제 2 저장 장치로부터 상기 SSD의 상기 제 2 블록으로 상기 적어도 하나의 페이지의 상기 복제된 복사본을 복사하는 단계를 더 포함한다.
진술 46. 본 발명의 실시 예는 진술 38에 따른 방법을 포함하고,
상기 방법은,
상기 적어도 하나의 페이지에 쓰기 요청을 수신하는 단계;
상기 쓰기 요청에 따라 상기 SSD의 상기 적어도 하나의 페이지의 캐시된 복사본을 변조하는 단계; 및
상기 SSD의 상기 제 2 블록으로 상기 적어도 하나의 페이지의 상기 변조된 복사본을 쓰는 단계를 포함한다.
진술 47. 본 발명의 실시 예는 진술 46에 따른 방법을 포함하고, 상기 방법은, 상기 제 2 저장 장치로부터 상기 SSD의 메모리로 상기 적어도 하나의 페이지의 상기 복제된 복사본을 캐시하는 단계를 더 포함한다.
진술 48. 본 발명의 실시 예는 진술 46에 따른 방법을 포함하고, 상기 방법은 상기 복제된 복사본으로부터 나중에 페칭하기 위하여 상기 적어도 하나의 페이지를 언마크하는 단계를 더 포함한다.
진술 49. 본 발명의 실시 예는 진술 38에 따른 방법을 포함하고, 상기 방법은, 상기 호스트 머신에 의해 지시되지 않고 가비지 컬렉션을 수행하지 않도록 상기 SSD를 구현하는 단계를 더 포함한다.
진술 50. 본 발명의 실시 예는 방법을 포함하고, 상기 방법은,
호스트 머신과 통신하는 SSD(solid state drive)가 가비지 컬렉션이 필요한 지를 판별하는 단계;
상기 호스트 머신에서 현재의 입출력(I/O) 부하를 판별하는 단계;
상기 호스트 머신에서 상기 현재의 I/O 부하에 근거로 하여 디폴트 P/E(program/erase) 전략 및 적응형 P/E 전략 중 선택하는 단계; 및
상기 선택된 P/E 전략을 이용하여 가비지 컬렉션을 수행하도록 상기 SSD를 지시하는 단계를 포함한다.
진술 51. 본 발명의 실시 예는 진술 50에 따른 방법을 포함하고, 상기 디폴트 P/E(program/erase) 전략 및 상기 적응형 P/E 전략 중 선택하는 단계는:
상기 현재의 I/O 부하를 부하 문턱값과 비교하는 단계;
상기 현재의 I/O 부하가 상기 부하 문턱값보다 적으면, 상기 디폴트 P/E 전략을 선택하는 단계; 및
상기 현재의 I/O 부하가 상기 부하 문턱값보다 많으면, 상기 적응형 P/E 전략을 선택하는 단계를 포함한다.
진술 52. 본 발명의 실시 예는 진술 50에 따른 방법을 포함하고, 상기 방법은,
상기 선택된 P/E 전략이 상기 적응형 P/E 전략이면, 상기 현재의 I/O 부하를 추적하는 단계; 및
상기 현재의 I/O 부하가 상기 부하 문턱값보다 아래로 떨어지면, 지연된 프로그램 동작을 수행하기 위하여 상기 SSD를 지시하는 단계를 더 포함한다.
진술 53. 본 발명의 실시 예는 진술 50에 따른 방법을 포함하고, 상기 방법은,
상기 SSD가 가비지 컬렉션을 수행한 구간을 추적하는 단계; 및
상기 구간이 시간 문턱값을 초과하면, 지연된 프로그램 동작을 수행하도록 상기 SSD를 지시하는 단계를 더 포함한다.
진술 54. 본 발명의 실시 예는 진술 50에 따른 방법을 포함하고, 상기 방법은, 상기 호스트 머신에 의해 지시되지 않으면 가비지 컬렉션을 수행하지 않도록 상기 SSD를 구현하는 단계를 더 포함한다.
결론적으로, 본 명세서에 설명된 실시 예들에 대한 다양한 변경의 관점에서,이 상세한 설명 및 첨부 자료는 단지 예시적인 것으로 의도된 것이며, 본 발명의 개념의 범위를 제한하는 것으로 간주 되지 않아야 한다. 그러므로, 본 발명의 개념으로써 청구되는 것은, 다음의 청구 범위 및 그 균등물의 범위 및 사상 내에 있을 수 있는 모든 변형들이다.
223, 236: 빅팀 블록
224: DRAM
110: SSD
105: 호스트 머신
257: 인스트럭션
233, 236: 빅팀 블록

Claims (10)

  1. 솔리드 스테이트 드라이브(solid state drive, SSD)에 있어서:
    데이터를 저장하기 위한 스토리지;
    가비지 컬렉션을 수행하기 위하여 호스트 머신으로부터 인스트럭션을 수신하고, 상기 인스트럭션은 상기 SSD에 의해 사용될 P/E(program/erase) 전략을 포함하는 수신 회로;
    가비지 컬렉션을 수행하기 위한 상기 인스트럭션을 수신하는 상기 수신 회로에 응답하여 가비지 컬렉션을 수행하고, 상기 P/E 전략에 따라 가비지 컬렉션 동안에 프로그램 동작을 수행하는 프로그램 로직을 포함하는 가비지 컬렉션 로직; 및
    제 2 저장 장치에 복제된 복사본으로부터 나중에 페칭하기 위하여 빅팀 블록(victim block)에서 적어도 하나의 페이지를 식별하는 맵핑 테이블을 포함하고,
    상기 프로그램 로직은, 상기 P/E 전략이 적응형 P/E 전략일 때, 상기 빅팀 블록을 소거하기 전에 상기 SSD에 제 2 블록에 상기 적어도 하나의 페이지를 복사하지 않고, 상기 제 2 저장 장치에 복제된 복사본으로부터 페칭하기 위하여 상기 SSD에서 빅팀 블록의 상기 적어도 하나의 페이지를 상기 맵핑 테이블에 마크하도록 동작하는 솔리드 스테이트 드라이브.
  2. 제 1 항에 있어서,
    클라이언트 머신으로부터 쓰기 요청을 수신하는 상기 수신 회로에 응답하여, 상기 프로그램 로직은 상기 제 2 저장 장치로부터 상기 SSD의 메모리로 상기 적어도 하나의 페이지의 상기 복제된 복사본을 캐시하도록 동작하고, 상기 쓰기 요청에 응답하여 상기 메모리에서 상기 적어도 하나의 페이지의 상기 캐시된 복사 본을 변조하고, 및 상기 SSD의 상기 제 2 블록에 상기 적어도 하나의 페이지의 상기 변조된 복사본을 쓰는 솔리드 스테이트 드라이브.
  3. 제 1 항에 있어서,
    상기 P/E 전략이 상기 적응형 P/E 전략일 때, 상기 프로그램 로직은 상기 호스트 머신의 I/O 부하가 부하 문턱 값보다 낮으면 상기 제 2 저장 장치로부터 상기 SSD의 상기 제 2 블록으로 상기 적어도 하나의 페이지의 상기 복제된 복사본을 복사하도록 동작하는 솔리드 스테이트 드라이브.
  4. 제 1 항에 있어서,
    상기 P/E 전략이 상기 적응형 P/E 전략일 때, 상기 프로그램 로직은 시간 문턱 값이 지난 후에 상기 제 2 저장 장치로부터 상기 SSD의 상기 제 2 블록으로 상기 적어도 하나의 페이지의 상기 복제된 복사본을 복사하도록 동작하는 솔리드 스테이트 드라이브.
  5. 제 1 항에 있어서,
    상기 프로그램 로직은, 상기 적어도 하나의 페이지의 복제된 복사본이 상기 제 2 저장 장치에 존재하지 않을 때, 상기 P/E 전략이 상기 적응형 P/E 전략을 갖더라도 상기 빅팀 블록을 소거하기 전에 상기 빅팀 블록으로부터 상기 SSD의 상기 제 2 블록으로 상기 적어도 하나의 페이지를 복사하도록 동작하는 솔리드 스테이트 드라이브.
  6. 솔리드 스테이트 드라이브(SSD)에 있어서:
    데이터를 저장하기 위한 스토리지;
    가비지 컬렉션을 수행하기 위하여 호스트 머신으로부터 인스트럭션을 수신하고, 상기 인스트럭션은 상기 SSD에 의해 사용될 P/E(program/erase) 전략을 갖는 수신 회로;
    가비지 컬렉션을 수행하기 위하여 상기 인스트럭션을 수신하는 상기 수신 회로에 응답하여 가비지 컬렉션을 수행하고, 상기 P/E 전략에 따라 가비지 컬렉션 동안에 프로그램 동작을 수행하는 프로그램 로직을 포함하는 가비지 컬렉션 로직;
    상기 SSD의 빅팀 블록에 적어도 하나의 페이지의 복사본을 캐시하는 DRAM(dynamic random access memory); 및
    상기 P/E 전략이 적응형 P/E 전략일 때, 상기 빅팀 블록을 소거하기 전에 상기 빅팀 블록으로부터 상기 DRAM에서 캐시된 복사본으로 상기 적어도 하나의 페이지를 복사하고, 그리고, 상기 빅팀 블록을 소거하기 전에 상기 SSD의 제 2 블록에 상기 적어도 하나의 페이지를 복사하지 않고 상기 빅팀 블록을 소거한 후에 상기 제 2 블록에 상기 캐시된 복사본을 복사하도록 동작하는 SSD 제어기를 포함하는 솔리드 스테이트 드라이브.
  7. 호스트 머신에 있어서:
    프로세서;
    네트워크에 상기 호스트 머신을 연결하도록 동작하는 네트워크 커넥터;
    적어도 하나의 SSD(solid state drive)의 I/O(input/output) 부하를 모니터링하도록 동작하는 부하 모니터;
    상기 I/O 부하에 근거로 하여 적어도 하나의 디폴트 P/E 전략 및 적응형 P/E 전략 중에서 선택하도록 동작하는 P/E(program/erase) 전략 선택기; 및
    상기 선택된 P/E 전략을 갖는 상기 적어도 하나의 SSD에 가비지 컬렉션 인스트럭션을 전송하도록 동작하는 트랜스미터를 포함하는 호스트 머신.
  8. 솔리드 스테이트 드라이브(SSD)의 동작 방법에 있어서:
    상기 SSD에서, 호스트 머신으로부터 가비지 컬렉션을 수행하기 위한 인스트럭션을 수신하고, 상기 인스트럭션은 상기 SSD에 의해 사용될 P/E 전략을 갖는 단계;
    소거될 상기 SSD의 빅팀 블록을 식별하는 단계;
    상기 빅팀 블록에서 유효 데이터를 저장하는 적어도 하나의 페이지를 식별하는 단계;
    상기 P/E 전략이 적응형 P/E 전략을 이용하도록 명세화될 때, 상기 빅팀 블록을 소거한 후에 상기 SSD의 제 2 블록에 상기 적어도 하나의 페이지를 복사하도록 배열하는 단계; 및
    상기 빅팀 블록을 소거하는 단계를 포함하는 방법.
  9. 제 8 항에 있어서,
    상기 빅팀 블록을 소거한 후에 상기 SSD의 상기 제 2 블록에 상기 적어도 하나의 페이지를 복사하도록 배열하는 단계는, 상기 SSD의 상기 제 2 블록에 상기 적어도 하나의 페이지를 복사하지 않고 제 2 저장 장치에서 복제된 복사본으로부터 페칭하기 위하여 상기 맵 테이블에서 상기 적어도 하나의 페이지를 마킹하는 단계를 포함하는 방법.
  10. 제 8 항에 있어서,
    상기 빅팀 블록을 소거한 후에 상기 SSD의 상기 제 2 블록에 상기 적어도 하나의 페이지를 복사하도록 배열하는 단계는, 상기 빅팀 블록을 소거하기 전에 DRAM(dynamic random access memory)에서 상기 적어도 하나의 페이지의 복사본을 캐시하는 단계를 포함하는 방법.
KR1020160160759A 2016-01-25 2016-11-29 이중화 저장 블록들 및 분산 소프트웨어 스택들을 위한 동적 가비지 컬렉션 p/e 정책들 KR102403034B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662286926P 2016-01-25 2016-01-25
US62/286,926 2016-01-25
US15/133,205 2016-04-19
US15/133,205 US10649681B2 (en) 2016-01-25 2016-04-19 Dynamic garbage collection P/E policies for redundant storage blocks and distributed software stacks

Publications (2)

Publication Number Publication Date
KR20170088743A true KR20170088743A (ko) 2017-08-02
KR102403034B1 KR102403034B1 (ko) 2022-05-27

Family

ID=59360534

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160160759A KR102403034B1 (ko) 2016-01-25 2016-11-29 이중화 저장 블록들 및 분산 소프트웨어 스택들을 위한 동적 가비지 컬렉션 p/e 정책들

Country Status (2)

Country Link
US (1) US10649681B2 (ko)
KR (1) KR102403034B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022212285A1 (en) * 2021-03-27 2022-10-06 Bishwajit Dutta Host controlled garbage collection in a solid state drive

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10884926B2 (en) 2017-06-16 2021-01-05 Alibaba Group Holding Limited Method and system for distributed storage using client-side global persistent cache
US10564856B2 (en) 2017-07-06 2020-02-18 Alibaba Group Holding Limited Method and system for mitigating write amplification in a phase change memory-based storage device
US10678443B2 (en) 2017-07-06 2020-06-09 Alibaba Group Holding Limited Method and system for high-density converged storage via memory bus
US10423508B2 (en) * 2017-08-11 2019-09-24 Alibaba Group Holding Limited Method and system for a high-priority read based on an in-place suspend/resume write
US10496829B2 (en) 2017-09-15 2019-12-03 Alibaba Group Holding Limited Method and system for data destruction in a phase change memory-based storage device
US10642522B2 (en) 2017-09-15 2020-05-05 Alibaba Group Holding Limited Method and system for in-line deduplication in a storage drive based on a non-collision hash
US10503409B2 (en) 2017-09-27 2019-12-10 Alibaba Group Holding Limited Low-latency lightweight distributed storage system
US10789011B2 (en) 2017-09-27 2020-09-29 Alibaba Group Holding Limited Performance enhancement of a storage device using an integrated controller-buffer
US10860334B2 (en) 2017-10-25 2020-12-08 Alibaba Group Holding Limited System and method for centralized boot storage in an access switch shared by multiple servers
US10445190B2 (en) 2017-11-08 2019-10-15 Alibaba Group Holding Limited Method and system for enhancing backup efficiency by bypassing encoding and decoding
US10877898B2 (en) 2017-11-16 2020-12-29 Alibaba Group Holding Limited Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
US10891239B2 (en) 2018-02-07 2021-01-12 Alibaba Group Holding Limited Method and system for operating NAND flash physical space to extend memory capacity
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
US10831404B2 (en) 2018-02-08 2020-11-10 Alibaba Group Holding Limited Method and system for facilitating high-capacity shared memory using DIMM from retired servers
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
CN108829346B (zh) * 2018-05-28 2020-11-17 华中科技大学 一种适应闪存页差异的固态硬盘的用户写请求处理方法
US11816043B2 (en) 2018-06-25 2023-11-14 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of I/O requests
US10921992B2 (en) 2018-06-25 2021-02-16 Alibaba Group Holding Limited Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency
US10871921B2 (en) 2018-07-30 2020-12-22 Alibaba Group Holding Limited Method and system for facilitating atomicity assurance on metadata and data bundled storage
US10747673B2 (en) 2018-08-02 2020-08-18 Alibaba Group Holding Limited System and method for facilitating cluster-level cache and memory space
US10996886B2 (en) 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
CN110858121B (zh) * 2018-08-23 2023-07-11 阿里巴巴集团控股有限公司 后台操作的调度方法及装置
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US10852948B2 (en) 2018-10-19 2020-12-01 Alibaba Group Holding System and method for data organization in shingled magnetic recording drive
US10795586B2 (en) 2018-11-19 2020-10-06 Alibaba Group Holding Limited System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash
US10769018B2 (en) 2018-12-04 2020-09-08 Alibaba Group Holding Limited System and method for handling uncorrectable data errors in high-capacity storage
US10884654B2 (en) 2018-12-31 2021-01-05 Alibaba Group Holding Limited System and method for quality of service assurance of multi-stream scenarios in a hard disk drive
US10977122B2 (en) 2018-12-31 2021-04-13 Alibaba Group Holding Limited System and method for facilitating differentiated error correction in high-density flash devices
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11132291B2 (en) 2019-01-04 2021-09-28 Alibaba Group Holding Limited System and method of FPGA-executed flash translation layer in multiple solid state drives
US10860420B2 (en) 2019-02-05 2020-12-08 Alibaba Group Holding Limited Method and system for mitigating read disturb impact on persistent memory
US11200337B2 (en) 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
US10970212B2 (en) 2019-02-15 2021-04-06 Alibaba Group Holding Limited Method and system for facilitating a distributed storage system with a total cost of ownership reduction for multiple available zones
US11061834B2 (en) 2019-02-26 2021-07-13 Alibaba Group Holding Limited Method and system for facilitating an improved storage system by decoupling the controller from the storage medium
US10783035B1 (en) 2019-02-28 2020-09-22 Alibaba Group Holding Limited Method and system for improving throughput and reliability of storage media with high raw-error-rate
US10891065B2 (en) 2019-04-01 2021-01-12 Alibaba Group Holding Limited Method and system for online conversion of bad blocks for improvement of performance and longevity in a solid state drive
US10922234B2 (en) 2019-04-11 2021-02-16 Alibaba Group Holding Limited Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
US10908960B2 (en) 2019-04-16 2021-02-02 Alibaba Group Holding Limited Resource allocation based on comprehensive I/O monitoring in a distributed storage system
US11169873B2 (en) 2019-05-21 2021-11-09 Alibaba Group Holding Limited Method and system for extending lifespan and enhancing throughput in a high-density solid state drive
US11899576B2 (en) * 2019-06-11 2024-02-13 Micron Technology, Inc. Dynamically modifying garbage collection rates for a memory subsystem in a closed-loop system
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11042307B1 (en) 2020-01-13 2021-06-22 Alibaba Group Holding Limited System and method for facilitating improved utilization of NAND flash based on page-wise operation
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US10923156B1 (en) 2020-02-19 2021-02-16 Alibaba Group Holding Limited Method and system for facilitating low-cost high-throughput storage for accessing large-size I/O blocks in a hard disk drive
US10872622B1 (en) 2020-02-19 2020-12-22 Alibaba Group Holding Limited Method and system for deploying mixed storage products on a uniform storage infrastructure
US11150986B2 (en) 2020-02-26 2021-10-19 Alibaba Group Holding Limited Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction
US11144250B2 (en) 2020-03-13 2021-10-12 Alibaba Group Holding Limited Method and system for facilitating a persistent memory-centric system
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120030441A1 (en) * 2010-07-29 2012-02-02 Takahiro Yamashita Semiconductor memory device detecting error
US20120151124A1 (en) * 2010-12-08 2012-06-14 Sung Hoon Baek Non-Volatile Memory Device, Devices Having the Same, and Method of Operating the Same
US20130125116A1 (en) * 2011-11-10 2013-05-16 Institute For Information Industry Method and Device for Adjusting Virtual Resource and Computer Readable Storage Medium
US20130185487A1 (en) * 2012-01-18 2013-07-18 Samsung Electronics Co., Ltd Memory system and mobile device including host and flash memory-based storage device
US20140181370A1 (en) * 2012-12-21 2014-06-26 Lsi Corporation Method to apply fine grain wear leveling and garbage collection
US20150261674A1 (en) * 2014-03-11 2015-09-17 Amazon Technologies, Inc. Page cache write logging at block-based storage
US9229854B1 (en) * 2013-01-28 2016-01-05 Radian Memory Systems, LLC Multi-array operation support and related devices, systems and software

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101638764B1 (ko) 2008-12-19 2016-07-22 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 균일한 판독 대기시간을 위한 중복 데이터 저장
US8677203B1 (en) 2010-01-11 2014-03-18 Apple Inc. Redundant data storage schemes for multi-die memory systems
US8799561B2 (en) * 2012-07-27 2014-08-05 International Business Machines Corporation Valid page threshold based garbage collection for solid state drive
KR102053953B1 (ko) * 2013-02-04 2019-12-11 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 프로그램 방법
US9645924B2 (en) 2013-12-16 2017-05-09 International Business Machines Corporation Garbage collection scaling
US9798620B2 (en) 2014-02-06 2017-10-24 Sandisk Technologies Llc Systems and methods for non-blocking solid-state memory
US9727456B2 (en) * 2014-11-03 2017-08-08 Pavilion Data Systems, Inc. Scheduled garbage collection for solid state storage devices

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120030441A1 (en) * 2010-07-29 2012-02-02 Takahiro Yamashita Semiconductor memory device detecting error
US20120151124A1 (en) * 2010-12-08 2012-06-14 Sung Hoon Baek Non-Volatile Memory Device, Devices Having the Same, and Method of Operating the Same
US20130125116A1 (en) * 2011-11-10 2013-05-16 Institute For Information Industry Method and Device for Adjusting Virtual Resource and Computer Readable Storage Medium
US20130185487A1 (en) * 2012-01-18 2013-07-18 Samsung Electronics Co., Ltd Memory system and mobile device including host and flash memory-based storage device
US20140181370A1 (en) * 2012-12-21 2014-06-26 Lsi Corporation Method to apply fine grain wear leveling and garbage collection
US9229854B1 (en) * 2013-01-28 2016-01-05 Radian Memory Systems, LLC Multi-array operation support and related devices, systems and software
US9519578B1 (en) * 2013-01-28 2016-12-13 Radian Memory Systems, Inc. Multi-array operation support and related devices, systems and software
US20150261674A1 (en) * 2014-03-11 2015-09-17 Amazon Technologies, Inc. Page cache write logging at block-based storage

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022212285A1 (en) * 2021-03-27 2022-10-06 Bishwajit Dutta Host controlled garbage collection in a solid state drive

Also Published As

Publication number Publication date
KR102403034B1 (ko) 2022-05-27
US20170212708A1 (en) 2017-07-27
US10649681B2 (en) 2020-05-12

Similar Documents

Publication Publication Date Title
KR102403034B1 (ko) 이중화 저장 블록들 및 분산 소프트웨어 스택들을 위한 동적 가비지 컬렉션 p/e 정책들
KR102168838B1 (ko) 저장 장치들에 대한 매핑 테이블들
CN111241006B (zh) 存储阵列及控制方法
JP6517685B2 (ja) メモリシステムおよび制御方法
US20150331624A1 (en) Host-controlled flash translation layer snapshot
US8966155B1 (en) System and method for implementing a high performance data storage system
US20190324859A1 (en) Method and Apparatus for Restoring Data after Power Failure for An Open-Channel Solid State Drive
US9208101B2 (en) Virtual NAND capacity extension in a hybrid drive
JP7010809B2 (ja) デデュープ可能なメモリキャッシュ及びそのための動作方法
CN105103234A (zh) 固态驱动器体系结构
KR20140113211A (ko) 비휘발성 메모리 시스템, 이를 포함하는 시스템 및 상기 비휘발성 메모리 시스템의 적응적 사용자 저장 영역 조절 방법
JP2011192260A (ja) 半導体記憶装置
WO2009143381A2 (en) Use of rdma to access non-volatile solid-state memory in a network storage system
US20200264973A1 (en) Method and apparatus for managing map data in memory system
US20160350003A1 (en) Memory system
US10235284B2 (en) Memory system
US10416895B2 (en) Storage devices managing duplicated data based on the number of operations
KR20200113992A (ko) 메모리 시스템의 복구 동작 중 비휘발성 메모리 오픈 블록의 셀 디스터브를 줄이는 방법 및 장치
KR20180119470A (ko) 가비지 컬렉션 - 자동 데이터 배치
US20160342542A1 (en) Delay destage of data based on sync command
US20140325168A1 (en) Management of stored data based on corresponding attribute data
US9865323B1 (en) Memory device including volatile memory, nonvolatile memory and controller
JP2006099802A (ja) 記憶制御装置およびキャッシュメモリの制御方法
KR20180109675A (ko) 저장된 교체 정보를 갖는 스누프 필터, 이에 대한 방법 및 희생자 전용 캐시와 스누프 필터 공유 교체 정책을 포함하는 시스템
US20230205427A1 (en) Storage device including memory controller and operating method of the same

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant