KR20170108788A - 사용자 구성가능한 수동 배경 동작 - Google Patents
사용자 구성가능한 수동 배경 동작 Download PDFInfo
- Publication number
- KR20170108788A KR20170108788A KR1020160160770A KR20160160770A KR20170108788A KR 20170108788 A KR20170108788 A KR 20170108788A KR 1020160160770 A KR1020160160770 A KR 1020160160770A KR 20160160770 A KR20160160770 A KR 20160160770A KR 20170108788 A KR20170108788 A KR 20170108788A
- Authority
- KR
- South Korea
- Prior art keywords
- solid state
- state drive
- condition
- queue depth
- ssd
- Prior art date
Links
- 239000007787 solid Substances 0.000 claims abstract description 79
- 238000000034 method Methods 0.000 claims abstract description 51
- 238000012544 monitoring process Methods 0.000 claims description 12
- 230000015654 memory Effects 0.000 description 22
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 229910052724 xenon Inorganic materials 0.000 description 1
- FHNFHKCVQCLJFQ-UHFFFAOYSA-N xenon atom Chemical compound [Xe] FHNFHKCVQCLJFQ-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0261—Garbage collection, i.e. reclamation of unreferenced memory using reference counting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
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)
- Memory System (AREA)
Abstract
솔리드 스테이트 드라이브가 수동 가비지 컬렉션을 수행하게 허용하는 시스템 및 방법이 설명된다. 솔리드 스테이트 드라이브는 데이터를 저장하는 스토리지 및 스토리지에서 가비지 컬렉션을 수행할 수 있는 가비지 컬렉션 로직을 포함할 수 있다. 수신 회로는 호스트로부터 구성 회로를 수신할 수 있다. 구성 커맨드는 유휴 구간 그리고/또는 큐 깊이 문턱과 같은 조건을 포함할 수 있다. 조건 스토리지는 조건을 저장할 수 있다. 상태 판별기는 솔리드 스테이트 드라이브의 상태를 판별할 수 있다. 비교기는 솔리드 스테이트 드라이브의 상태를 조건과 비교하여 수동 가비지 컬렉션을 트리거할 지를 판별할 수 있다.
Description
본 발명은 일반적으로 솔리드 스테이트 드라이브들(Solid State Drives, SSDs)에 관한 것으로, 더 상세하게는 솔리드 스테이트 드라이브들이 가비지 컬렉션을 수행하는 때를 향상시키는 것에 관한 것이다.
가비지 컬렉션은 솔리드 스테이트 솔리드 스테이트 드라이브들(Solid State Drives, SSDs)에서 통상적으로 발생한다. SSD가 자유 소거 블록들을 소진한 때에, SSD는 가비지 컬렉션(Garbage Collection, GC)을 수행하여 새로운 쓰기에 사용하기 위한 새로운 소거 블록들을 확보한다. 쓰기/읽기는 해당 요청이 서비스되기 전에 가비지 컬렉션이 완료되는 것을 기다려야 하므로, 가비지 컬렉션은 SSD의 읽기/쓰기 성능을 느리게 한다. 스토리지 지능과 같은 특성들은 호스트 개시 가비지 컬렉션으로 이러한 문제를 해소하는 것을 돕는다. 그러나 이는 가비지 컬렉션을 시작하기 위하여 호스트가 가비지 컬렉션 커맨드를 이슈하고 장치에게 알리는 것을 필요로 한다.
대용량 데이터베이스의 성능을 개선하고 그리고 레이턴시의 최소화 및 유지 비용의 절감의 두 가지 목표들의 균형을 이루는 방법에 대한 요구가 존재한다.
본 발명의 목적은 대용량 데이터베이스의 성능을 개선하고 그리고 레이턴시의 최소화 및 유지 비용의 절감의 두 가지 목표들의 균형을 이루는 장치 및 방법을 제공하는 데에 있다.
본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(SSD)는 데이터를 위한 스토리지, 스토리지에서 가비지 컬렉션을 수행하는 가비지 컬렉션 로직, 유휴 구간 및 큐 깊이 문턱을 포함하는 세트로부터 얻어지는 조건을 포함하는 구성 커맨드 및 데이터 요청들을 수신하는 수신 회로, 조건을 저장하는 조건 스토리지, 솔리드 스테이트 드라이브의 상태를 판별하는 상태 판별기, 그리고 조건으로 솔리드 스테이트 드라이브의 상태를 비교하는 비교기를 포함한다.
본 발명의 실시 예에 따른 방법은 솔리드 스테이트 드라이브(SSD)에서 유휴 구간 및 큐 깊이 문턱을 포함하는 세트로부터 얻어지는 조건을 포함하는 구성 커맨드를 수신하는 단계, 조건을 솔리드 스테이트 드라이브에 저장하는 단계, 그리고 조건을 이용하여 솔리드 스테이트 드라이브에서 가비지 컬렉션을 수행하는 단계를 포함한다.
본 발명의 실시 예에 따른 물품은, 물품은 실재하는 스토리지 매체를 포함하고, 실재하는 저장 매체는 그것에 저장된 비임시 명령들을 포함하고, 비임시 명령들이 실행되면, 솔리드 스테이트 드라이브(SSD)에서 유휴 구간 및 큐 깊이 문턱을 포함하는 세트로부터 얻어지는 조건을 포함하는 구성 커맨드를 수신하는 단계, 솔리드 스테이트 드라이브에 조건을 저장하는 단계, 그리고 조건을 이용하여 솔리드 스테이트 드라이브에서 가비지 컬렉션을 수행하는 단계가 유발된다.
본 발명에 따르면, 솔리드 스테이트 드라이브(SSD)의 수동 가비지 컬렉션은 구성 커맨드에 의해 실행 시기가 제어된다. 구성 커맨드는 사용자에 의해 구성될 수 있다. 따라서, SSD는 개선되고, 레이턴시의 최소화 및 유지 비용의 절감의 두 가지 목표들의 균형을 이루는 SSD 장치 및 방법이 제공된다.
도 1은 본 발명의 기술적 사상의 실시 예에 따른 수동 가비지 컬렉션을 수행하도록 구성된 솔리드 스테이트 드라이브를 포함하는 시스템을 보여준다.
도 2는 도 1의 컴퓨터의 추가적인 상세를 보여준다.
도 3은 수동 가비지 컬렉션을 수행하도록 구성된 도 1의 솔리드 스테이트 드라이브의 상세를 보여준다.
도 4는 구성 커맨드에 뒤이어 데이터 요청들을 도 1의 솔리드 스테이트 드라이브에 전송하는 도 1의 시스템을 보여준다.
도 5는 본 발명의 기술적 사상의 실시 예에 따른 도 1의 솔리드 스테이트 드라이브가 얼마나 오래 유휴 상태였는지에 기반하여 수동 가비지 컬렉션을 수행할지를 판별하는 데에 사용되는 도 3의 비교기를 보여준다.
도 6은 본 발명의 기술적 사상의 실시 예에 따른 도 1의 솔리드 스테이트 드라이브의 큐 깊이에 기반하여 수동 가비지 컬렉션을 수행할지를 판별하는 데에 사용되는 도 3의 비교기를 보여준다.
도 7은 도 1의 솔리드 스테이트 드라이브가 다중 커맨드 큐들을 포함할 때에 도 1의 솔리드 스테이트 드라이브의 큐 깊이를 판별하는 도 3의 상태 판별기를 보여준다.
도 8a 및 도 8b는 본 발명의 기술적 사상의 실시 예에 따른 도 1의 솔리드 스테이트 드라이브에서 배경 가비지 컬렉션을 관리하기 위한 절차를 보여주는 순서도이다.
도 9는 본 발명의 기술적 사상의 실시 예에 따른 도 1의 솔리드 스테이트 드라이브가 수동 가비지 컬렉션을 수행하도록 어떻게 구성되는지의 예시적인 절차의 순서도이다.
도 10은 본 발명의 기술적 사상의 실시 예에 따른 도 1의 솔리드 스테이트 드라이브가 유휴 시간을 이용하여, 그리고 선택적으로 자유 블록 카운트를 이용하여 도 1의 솔리드 스테이트 드라이브가 수동 가비지 컬렉션을 언제 수행할지를 판별하는 예시적인 절차의 순서도이다.
도 11은 본 발명의 기술적 사상의 실시 예에 따른 도 1의 솔리드 스테이트 드라이브가 큐 깊이를 이용하여, 그리고 선택적으로 자유 블록 카운트를 이용하여 도 1의 솔리드 스테이트 드라이브가 수동 가비지 컬렉션을 언제 수행할지를 판별하는 예시적인 절차의 순서도이다.
도 12는 본 발명의 기술적 사상의 실시 예에 따른 도 1의 솔리드 스테이트 드라이브가 다중 커맨드 큐들을 포함할 때에 도 3의 상태 판별기가 도 1의 솔리드 스테이트 드라이브의 큐 깊이를 판별하는 예시적인 절차의 순서도이다.
도 2는 도 1의 컴퓨터의 추가적인 상세를 보여준다.
도 3은 수동 가비지 컬렉션을 수행하도록 구성된 도 1의 솔리드 스테이트 드라이브의 상세를 보여준다.
도 4는 구성 커맨드에 뒤이어 데이터 요청들을 도 1의 솔리드 스테이트 드라이브에 전송하는 도 1의 시스템을 보여준다.
도 5는 본 발명의 기술적 사상의 실시 예에 따른 도 1의 솔리드 스테이트 드라이브가 얼마나 오래 유휴 상태였는지에 기반하여 수동 가비지 컬렉션을 수행할지를 판별하는 데에 사용되는 도 3의 비교기를 보여준다.
도 6은 본 발명의 기술적 사상의 실시 예에 따른 도 1의 솔리드 스테이트 드라이브의 큐 깊이에 기반하여 수동 가비지 컬렉션을 수행할지를 판별하는 데에 사용되는 도 3의 비교기를 보여준다.
도 7은 도 1의 솔리드 스테이트 드라이브가 다중 커맨드 큐들을 포함할 때에 도 1의 솔리드 스테이트 드라이브의 큐 깊이를 판별하는 도 3의 상태 판별기를 보여준다.
도 8a 및 도 8b는 본 발명의 기술적 사상의 실시 예에 따른 도 1의 솔리드 스테이트 드라이브에서 배경 가비지 컬렉션을 관리하기 위한 절차를 보여주는 순서도이다.
도 9는 본 발명의 기술적 사상의 실시 예에 따른 도 1의 솔리드 스테이트 드라이브가 수동 가비지 컬렉션을 수행하도록 어떻게 구성되는지의 예시적인 절차의 순서도이다.
도 10은 본 발명의 기술적 사상의 실시 예에 따른 도 1의 솔리드 스테이트 드라이브가 유휴 시간을 이용하여, 그리고 선택적으로 자유 블록 카운트를 이용하여 도 1의 솔리드 스테이트 드라이브가 수동 가비지 컬렉션을 언제 수행할지를 판별하는 예시적인 절차의 순서도이다.
도 11은 본 발명의 기술적 사상의 실시 예에 따른 도 1의 솔리드 스테이트 드라이브가 큐 깊이를 이용하여, 그리고 선택적으로 자유 블록 카운트를 이용하여 도 1의 솔리드 스테이트 드라이브가 수동 가비지 컬렉션을 언제 수행할지를 판별하는 예시적인 절차의 순서도이다.
도 12는 본 발명의 기술적 사상의 실시 예에 따른 도 1의 솔리드 스테이트 드라이브가 다중 커맨드 큐들을 포함할 때에 도 3의 상태 판별기가 도 1의 솔리드 스테이트 드라이브의 큐 깊이를 판별하는 예시적인 절차의 순서도이다.
본 발명의 기술적 사상의 실시 예들이 참조되며, 이들의 예들이 첨부된 도면들에 도시된다. 후술되는 상세한 설명에서, 다양한 특정한 상세들이 본 발명의 기술적 사상의 충분한 이해를 돕기 위하여 제공된다. 그러나 이 분야에 통상적인 기술을 가진 자들은 이러한 특정한 상세들 없이도 본 발명의 기술적 사상을 구현할 수 있다. 다른 예들로서, 잘 알려진 방법들, 절차들, 구성 요소들, 회로들, 그리고 네트워크들은 실시 예들의 측면들을 불필요하게 모호하게 하지 않기 위해 상세하게 설명되지 않는다.
여기에서 제1, 제2 등과 같은 용어들이 다양한 원소들을 설명하기 위하여 사용되지만, 이러한 원소들은 이러한 용어들에 의해 한정되지 않는다. 이러한 용어들은 하나의 원소를 다른 하나의 원소와 구별하기 위해서만 사용된다. 예를 들어, 본 발명의 기술적 사상의 범위로부터 멀어지지 않으면서 제1 모듈은 제2 모듈로 명명될 수 있다. 마찬가지로, 제2 모듈은 제1 모듈로 명명될 수 있다.
본 발명의 기술적 사상의 설명에서 사용되는 용어들은 특정한 실시 예들을 설명하기 위한 목적으로만 사용되며, 본 발명의 기술적 사상을 한정하는 것으로 의도되지 않는다. 본 발명의 기술적 사상의 설명 및 첨부된 청구항들에서 사용되는 바와 같이, 맥락에서 명확하게 명시되지 않으면 단수 표현들은 복수 표현들 또한 포함하는 것으로 의도된다. "그리고/또는"의 용어는 하나 또는 그보다 많은 연관된 항목들의 임의의 그리고 가능한 모든 조합들을 포함하는 것으로 참조된다. "포함한다" 그리고/또는 "포함하는"의 용어들은 상세한 설명에서 사용된 때에 언급된 특성들, 정수들, 단계들, 동작들, 원소들, 그리고/또는 구성 요소들의 존재를 명시하며, 하나 또는 그보다 많은 다른 특성들, 정수들, 단계들, 동작들, 원소들, 구성 요소들, 그리고/또는 그것들의 그룹들의 존재 또는 추가를 배제하지 않는다. 도면들의 구성 요소들 및 특성들은 실제 비율에 필수적으로 비례하지 않는다.
가비지 컬렉션과 같은 호스트 개시 배경 동작들의 효능은, 장치의 상태가 특정한 문턱을 지났을 때에 입출력 요청들 사이에서 장치가 자동으로 배경 동작들을 시작하도록 구성되는 것을 허용함으로써 향상될 수 있다. 이러한 특성은 커맨드 또는 셋팅 페이지를 통해 호스트에 의해 활성화 또는 비활성화될 수 있다.
장치가 자동으로 배경 동작들을 시작하도록 구성되는 것을 허용하는 것은 호스트가 응용들에 대한 최소한의 수정으로 또는 수정 없이 입력/출력(I/O)의 향상을 얻는 것을 도울 수 있다. 이러한 특성은 호스트 응용에 의해 예측되지 않은 솔리드 스테이트 드라이브(SSD)의 유휴 시간들의 사용을 극대화할 수 있다. 호스트는 SSD가 커맨드 요청들 사이에서(즉, 유휴 시간들) 자동으로 배경 동작들을 시작하도록 구성할 수 있다.
일 예로서, 호스트는 유휴 구간이 특정 시간, 예를 들어 50ms에 도달하면 자동으로 배경 동작들을 시작하도록 SSD를 구성할 수 있다. SSD는 큐에 호스트 커맨드들이 없을 때에 유휴 타이머를 시작하고, 50ms가 지난 때에 배경 동작들을 시작할 수 있다.
다른 예로서, 호스트는 커맨드 큐 깊이가 특정 레벨(예를 들어 10 커맨드) 미만으로 떨어질 때 자동으로 배경 동작들을 시작하도록 SSD를 구성할 수 있다. 이러한 낮은 큐 깊이는 장치에게 가벼운(light) 트래픽이 존재함을 나타내고, 따라서 SSD는 배경 동작들을 실행할 수 있다. 이는 처리 중인 현재 I/O의 성능에 영향을 줄 수 있으나, I/O에 전체적인 심각한 영향을 주지는 않는다.
장치는 장치의 인터페이스 프로토콜, 예를 들어 스카시(SCSI, Small Computer System Interface), NVM 익스프레스(Non-Volatile Memory Express, NVMe), AT Attachment (ATA), Serial ATA (SATA), iSCSI, 파이버 채널(Fiber Channel, FC), 이더넷(Ethernet) 등을 이용하도록 구성될 수 있다. 예를 들어, SCSI에서, 구성 값들은 모드 페이지들에 설정되어 수동 가비지 컬렉션을 활성화하고 그리고 배경 동작 조건 설정들을 설정할 수 있다. NVMe에서, 이러한 설정들은 특성 페이지들에 설정될 수 있다.
도 1은 본 발명의 기술적 사상의 실시 예에 따른 수동(passive) 가비지 컬렉션을 수행하도록 구성된 솔리드 스테이트 드라이브(Solid State Drive, SSD)를 포함하는 시스템을 보여준다. 도 1을 참조하면, 컴퓨터(105)는 프로세서(110), 메모리(115), 그리고 SSD (120)를 포함한다. 프로세서(110)는 임의의 다양한 프로세서, 예를 들어 인텔 제논, 셀러론, 이타늄, 또는 아톰 프로세서, 또는 AMD 옵테론 프로세서일 수 있다. 메모리(115)는 불휘발성 메모리(예를 들어 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 지속성 랜덤 액세스 메모리(Persistent Random Access Memory, PRAM) 등과 같은 임의의 다양한 메모리일 수 있으나, 일반적으로 동적 랜덤 액세스 메모리(DRAM)일 수 있다. SSD (120)는 임의의 다양한 SSD일 수 있다. 또한, SSD (120)는 본 발명의 기술적 사상의 실시 예들로부터 효과를 볼 수 있는 등가적인 스토리지 장치로 대체될 수 있다. 컴퓨터(105)는 랩톱 컴퓨터, 서버, 또는 스마트폰과 같은 모바일 컴퓨팅 장치와 같은 범용성을 읽지 않으며 유사한 기능을 제공하는 임의의 기계로 대체될 수 있다. 간결함을 위하여, 컴퓨터(105)는 호스트로 칭해진다.
도 2는 도 1의 호스트(105)의 추가적인 상세를 보여준다. 도 2를 참조하면, 통상적으로 호스트(105)는 하나 또는 그보다 많은 프로세서들(110)을 포함한다. 프로세서들(110)은 컨트롤러(205) 및 클럭(210)을 포함한다. 프로세서들(110)은 호스트(105)의 구성 요소들의 동작들을 조정하는 데에 사용된다. 프로세서들(110)은 예를 들어 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 또는 다른 상태 저장 매체를 포함하는 메모리(115)와 연결될 수 있다. 프로세서들(110)은 스토리지 장치(120)에 연결되고, 그리고 예를 들어 이더넷 커넥터 또는 무선 커넥터일 수 있는 네트워크 커넥터(215)에 연결된다. 프로세서들(110)은 사용자 인터페이스(225)가 부착될 수 있고 그리고 다른 구성 요소들 중에서 입력/출력 엔진(230)을 이용하여 관리될 수 있는 입력/출력 인터페이스 포트들이 부착될 수 있는 버스(220)에 연결될 수 있다.
도 3은 수동 가비지 컬렉션을 수행하도록 구성된 도 1의 SSD (120)의 상세들을 보여준다. 도 3에서, SSD (120)는 정보(동작들 또는 데이터와 같은)를 전송 및 수신하는 데에 사용될 수 있는 회로(305)를 포함할 수 있다. SSD (120)는 SSD 컨트롤러(310) 및 플래시 메모리(315)를 포함할 수 있다. SSD 컨트롤러(310)는 SSD (120)의 동작을 제어할 수 있다. 플래시 메모리(315)는 가비지 컬렉션의 대상일 수 있는 블록들에 데이터를 저장할 수 있다.
SSD 컨트롤러(310)는 다른 구성 요소들 중에서도 상태 판별기(320), 비교기(325), 조건 스토리지(330), 트리거 회로(335), 그리고 가비지 컬렉션 로직(340)을 포함할 수 있다. 상태 판별기(320)는 SSD (120)의 상태를 판별할 수 있다. SSD (120)의 상태는 도 1의 호스트(105)에 의해 어떤 조건이 명시되는지에 의존할 수 있다. 앞서 언급된 바와 같이, 호스트(105)는 유휴 구간(즉 SSD (120)가 도 1의 호스트(105) 또는 다른 호스트들로부터의 요청들을 처리하지 않는 구간) 또는 큐 깊이(즉, 얼마나 많은 커맨드들이 처리되기를 대기하고 있는지)과 같은 상이한 조건들을 명시할 수 있다. 도 1의 호스트(105)에 의해 명시된 조건에 의존하여, 상태 판별기(320)는 SSD (120)의 적절한 상태를 판별할 수 있다.
비교기(325)는 상태 판별기(320)에 의해 판별된 SSD (120)의 상태를 도 1의 호스트(105)에 의해 명시된 조건과 비교할 수 있다. 예를 들어, 도 1의 호스트(105)가 50ms의 유휴 구간을 명시하였으면, 비교기(325)는 이 유휴 구간을 상태 판별기(320)에 의해 판별되는 SSD (120)가 실제로 유휴 상태였던 길이와 비교할 수 있다. SSD (120)가 적어도 50ms 동안 유휴 상태였으면, 비교기(325)는 해당 조건이 만족되었음을 나타낼 수 있다. 다른 예로서, 도 1의 호스트(105)가 10 커맨드들의 큐 깊이를 명시하였으면, 비교기(325)는 이러한 큐 깊이를 SSD (120)에 현재 계류중인 커맨드들의 수와 비교할 수 있다. SSD (120)가 10 커맨드들보다 많지 않은 커맨드들을 현재 계류중이면, 비교기(325)는 해당 조건이 만족되었음을 나타낼 수 있다.
조건 스토리지(330)는 수동 가비지 컬렉션을 언제 수행할지를 판별하는 데에 사용되는 조건을 SSD (120)에 국부적으로 저장할 수 있다. 예를 들어, 도 1의 호스트(105)가 50ms의 유휴 구간을 명시하였으면, 조건 스토리지(330)는 50ms를 조건으로 저장할 수 있다. 다른 예로서, 도 1의 호스트(105)가 10 커맨드들의 큐 깊이를 명시하였으면, 조건 스토리지(330)는 10 커맨드들을 조건으로 저장할 수 있다. 비교기(325)는 조건 스토리지(330)으로부터의 조건을 액세스할 수 있다.
조건들은 단일 또는 복합적일 수 있다. 예를 들어, 도 1의 호스트는 50ms의 유휴 구간과 같은 단일 조건을 명시할 수 있다. 이후에, SSD (120)가 50ms 동안 유휴 상태이면, 수동 가비지 컬렉션이 트리거될 수 있다. 이러한 방식으로 수동 가비지 컬렉션을 수행하는 것의 장점은 SSD (120)가 도 1의 호스트(105)로부터의 명령 없이 최선을 다하여 플래시 메모리(315) 내에 가능한 많은 자유 소거 블록들을 유지하는 것이다. 그러나 도 1의 호스트(105)는 50ms의 유휴 구간 및 10,000 자유 소거 블록들 미만의 복합 조건을 명시할 수 있다. 이러한 방법에서, SSD (120)가 충분한 구간 동안 유휴 상태였더라도, SSD (120)가 충분한 자유 소거 블록들을 가지면, SSD (120)는 수동 가비지 컬렉션을 수행하지 않는다. 수동 가비지 컬렉션을 수행하지 않음에 의해, SSD (120)는 가비지 컬렉션이 완료될 때까지 대기하여야 하는 다른 커맨드가 입력될 때에 불필요하게 바빠지는 것을 회피할 수 있다.
복합 조건들이 사용될 때에, 이들은 통상적인 논리 연산자들(논리합, 논리곱 그리고 부정)을 이용하여 필요한 방법으로 그리고 필요한 수만큼 조합될 수 있다. 예를 들어, 도 1의 호스트(105)는 50ms의 구간, 10 커맨드들 이하의 큐 깊이, 그리고 10,000 미만의 자유 소거 블록들의 논리곱(AND)의 조건을 명시할 수 있다. 이러한 조합은, 수동 가비지 컬렉션을 수행하기 위해서는 50ms의 구간 동안에 SSD (120)의 큐 깊이가 10 커맨드들 미만이어야 하고, 그리고도 플래시 메모리(315)에 10,000 미만의 자유 소거 블록들이 존재할 때에만 수동 가비지 컬렉션이 수행됨을 명시한다. 이 예에서, 유휴 구간(즉 SSD (120)가 커맨드들을 처리하지 않는 구간)을 측정하는 것보다는, 구간은 SSD (120)의 전체 상태(큐에 10 또는 그보다 적은 커맨드들이 존재하고 10,000 미만의 자유 소거 블록들이 존재)가 변경되지 않고 유지되는 구간을 말한다. 이러한 구간의 더 일반화된 개념을 이용하여, 유휴 구간은 50ms의 구간 및 0의 큐 깊이의 논리곱의 복합 조건을 이용하여 명시될 수 있다.
조건이 복합적일 때, 상태 판별기(320)는 SSD (120)에 대한 다중 상태들을 판별할 수 있다. 예를 들어, 도 1의 호스트(105)가 50ms의 구간 및 10,000 미만의 자유 소거 블록들의 논리곱의 조건을 명시하면, 상태 판별기(320)는 SSD (120)의 유휴 시간 및 자유 소거 블록 카운트 모두를 판별할 수 있다.
트리거 회로(335)는 비교기(325)의 결과를 수신할 수 있다. 트리거 회로(335)는 조건이 만족될 때에 수동 가비지 컬렉션을 수행하도록 가비지 컬렉션 로직(340)에 트리거 신호를 전송할 수 있다.
가비지 컬렉션 로직(340)은 플래시 메모리(315)에서 가비지 컬렉션을 수행하는 로직일 수 있다. 가비지 컬렉션 그 자체는 통상적인 것이며, 여기에서 더 설명될 필요가 없다.
도 3에서 상태 판별기(320), 비교기(330), 조건 스토리지(330), 그리고 트리거 회로(335)가 SSD 컨트롤러(310) 내에서 분리된 구성 요소들로 도시되지만, 본 발명의 기술적 사상의 실시 예들은 이러한 구성 요소들을 단일 유닛으로 또는 임의의 필요한 부분 조합들로 조합할 수 있다. 도 3은 수동 가비지 컬렉션을 수행하는 것과 연관된 동작들을 더 잘 보여주기 위하여 이러한 구성 요소들을 분리된 요소들로 도시한다.
도 4는 도 1의 SSD (120)로 구성 커맨드에 뒤이어 데이터 요청들을 전송하는 도 1의 호스트(105)를 보여준다. 도 4에서, 호스트(105)는 SSD (120)로 구성 커맨드(405)를 전송할 수 있다. 구성 커맨드(405)는 단일 조건 또는 복합 조건 중 하나일 수 있는 조건(410)을 포함할 수 있다. 일단 구성 커맨드(405)를 이용하여 수동 가비지 컬렉션이 구성되면, 호스트(105)는 데이터 요청들(415, 420, 425)을 전송할 수 있다. 도 4에서 호스트(105)는 세 개의 데이터 요청들(415, 420, 425)을 전송하는 것으로 도시되나, 본 발명의 기술적 사상의 실시 예들은 임의의 수의 데이터 요청들을 지원할 수 있다.
추가적으로, 호스트(105)는 다중 구성 커맨드들(405)을 전송할 수 있다. 예를 들어, 호스트(105)는 10 커맨드들의 큐 깊이를 조건(410)으로 명시하는 제1 구성 커맨드를 전송할 수 있다. 그러나 SSD (120)에 대한 응답 시간에 기반하여, 호스트(105)는 조건(410)을 50ms의 유휴 구간으로 변경할 것을 결정할 수 있다. 호스트(105)는 필요한 만큼 많은 구성 커맨드들(405)을 전송할 수 있다. 통상적으로, 가장 최신의 구성 커맨드가 이전의 구성 커맨드들을 무효로 할 수 있다.
도 5는 본 발명의 기술적 사상의 실시 예에 따른 도 1의 SSD (120)가 얼마나 오래 유휴 상태였는지에 기반하여 수동 가비지 컬렉션을 수행할지를 판별하는 데에 사용되는 도 3의 비교기(330)를 보여준다. 도 5에서, 조건(505)은 유휴 구간, 예를 들어 50ms로 설정될 수 있다. 상태 판별기(320)는 도 1의 SSD (120)가 얼마나 오래 유휴 상태였는지 추적할 수 있다. 예를 들어, 상태 판별기(320)는 SSD (120)가 유휴 상태가 된 때에 타이머를 시작하고, 상태(510)로 도시된 주기적 상태 정보를 비교기(330)로 전송할 수 있다. 비교기(330)는 상태(510)를 조건(505)과 비교할 수 있다. 상태(510)에 기반하여 조건(505)이 만족되면, 비교기(330)는 도 3의 트리거 회로(335)로 전송되는 트리거(515)를 이용하여 성공적인 비교를 나타낼 수 있다.
도 5는 비교기(330)가 자유 소거 블록들의 수(520)를 수신하는 것 또한 보여준다. 앞서 언급된 바와 같이, 도 1의 호스트(105)가 복합 조건을 명시한 상황에서, 자유 소거 블록들의 수(520)는 상태 판별기(320)에 의해 또한 판별될 수 있다. 그러나 도 1의 조건(410)이 도 1의 SSD (120)의 유휴 시간만을 고려하는 경우, 자유 소거 블록들의 수(520)는 도 5에서 생략될 수 있다.
도 6은 본 발명의 기술적 사상의 실시 예에 따른 도 1의 SSD (120)의 큐 깊이에 기반하여 수동 가비지 컬렉션을 수행할지를 판별하는 데에 사용되는 도 3의 비교기(330)를 보여준다. 도 4의 조건(410)으로 유휴 시간을 사용하는 대신에 도 6이 도 4의 조건(410)으로 큐 깊이를 사용하는 것을 제외하면, 도 6은 도 5와 유사하다. 따라서, 조건(605)은 비교기(330)에 의해 고려되는 큐 깊이 문턱을 보여준다. 비교기(330)는 상태(610)로서 상태 판별기(320)에 의해 판별되는 커맨드 큐의 깊이를 고려할 수 있다. 비교의 결과로서, 비교기(330)는 조건(605)이 만족된 때에 트리거(515)를 생성할 수 있다.
도 5와 같이, 도 6에서 비교기(330)는 자유 소거 블록들의 수(520) 또한 수신할 수 있다. 조건(410)이 자유 소거 블록들의 문턱 수를 포함하면, 상태 판별기(320)는 비교기(330)가 자유 소거 블록들의 문턱 수와 비교할 수 있는 자유 소거 블록들의 수(520)를 판별할 수 있다. 도 4의 조건(410)이 자유 소거 블록들의 문턱 수를 포함하지 않으면, 자유 소거 블록들의 수(520)는 도 6으로부터 생략될 수 있다.
도 7은 도 1의 SSD (120)가 다중 커맨드 큐들을 포함할 때, 도 1의 SSD (120)의 큐 깊이를 판별하는 도 3의 상태 판별기(320)를 보여준다. 도 7에서, 상태 판별기(320)는 도 1의 SSD (120)의 세 개의 커맨드 큐들의 깊이들을 나타내는 깊이들(705, 710, 715)을 수신할 수 있다. 도 7에서 세 개의 깊이들(705, 710, 715)이 도시되지만, 본 발명의 기술적 사상의 실시 예들은 임의의 개수의 커맨드 큐들에 대한 임의의 개수의 깊이들을 지원할 수 있다.
깊이들(705, 710, 715)이 주어지면, 상태 판별기(320)는 도 6의 커맨드 큐 깊이(610)로서 임의의 필요한 통계를 계산할 수 있다. 예시적인 통계는 평균(720)(산술 평균이라고도 불림), 합(725), 중간(730), 최소(735), 그리고 최대(740)를 포함할 수 있다. 그러나 본 발명의 기술적 사상의 다른 실시 예들은 다른 통계들을 계산할 수 있다. 평균(720)은 모든 깊이들(705, 710, 715)의 합을 깊이들(705, 710, 715)의 개수로 나눈 것으로 계산될 수 있다. 합(725)은 모든 깊이들(705, 710, 715)의 합으로 단순하게 계산될 수 있다(합(725)은 모든 큐들에서 계류중인 커맨드들의 전체 개수를 나타낸다). 중간(730)은 모든 큐 사이즈들이 수치적으로 정렬된 경우에 중간 큐의 사이즈를 나타낸다. 최소(735)는 계류 중인 커맨드들의 수가 가장 작은 큐의 사이즈를 나타낸다. 그리고 최대(740)는 계류 중인 커맨드들의 수가 가장 큰 큐의 사이즈를 나타낸다.
도 8a 및 도 8b는 본 발명의 기술적 사상의 실시 예에 따른 도 1의 SSD (120)에서 배경 가비지 컬렉션을 관리하기 위한 절차의 순서도를 보여준다. 도 8a의 블록(805)에서, 도 3의 SSD 컨트롤러(310)는 도 1의 SSD (120)가 배경 가비지 컬렉션을 수행하도록 셋업되는지 판별한다. 그렇다면, 블록(810)에서, 도 3의 SSD 컨트롤러(310)는(도 3의 상태 판별기(320), 비교기(325), 그리고 조건 스토리지(330) 모두를 통해) 도 4의 조건(410)이 만족될 때까지 대기할 수 있다. 도 4의 조건(410)이 만족되면, 블록(815)에서, 도 3의 트리거 회로(335)는 배경 가비지 컬렉션을 시작하도록 가비지 컬렉션 로직(340)을 트리거할 수 있다.
도 8b의 블록(820)에서, 도 3의 SSD 컨트롤러(310)는 배경 가비지 컬렉션이 발생하는 동안 호스트 커맨드가 완료 계류중인지 판별할 수 있다. 호스트 커맨드가 완료 계류중이 아니면, 블록(825)에서 배경 가비지 컬렉션이 지속된다. 그렇지 않으면, 블록(830)에서, 도 3의 SSD 컨트롤러(310)는(도 3의 상태 판별기(320), 비교기(325), 그리고 조건 스토리지(330) 모두를 통해) 도 4의 조건(410)이 여전히 만족되는지 판별할 수 있다. 그렇다면, 제어는 블록(825)으로 지속되어, 배경 가비지 컬렉션이 지속된다. 그렇지 않으면, 블록(835)에서, 배경 가비지 컬렉션이 중지되어 계류중인 호스트 커맨드의 처리가 허용될 수 있다.
도 9는 본 발명의 기술적 사상의 실시 예에 따른 도 1의 SSD (120)가 수동 가비지 컬렉션을 수행하도록 어떻게 구성되는 지에 대한 예시적인 절차의 순서도를 보여준다. 도 9의 블록(905)에서, 도 3의 수신 회로(305)는 도 4의 구성 커맨드(405)를 수신할 수 있다. 블록(910)에서, 도 3의 SSD 컨트롤러(310)는 도 4의 구성 커맨드(405)에서 도 4의 조건(410)을 식별할 수 있다. 블록(915)에서, 구성 스토리지(330)는 도 4의 조건(410)을 저장할 수 있다. 블록(920)에서, 도 3의 SSD 컨트롤러(310)는 도 4의 조건(410)을 이용하여 수동적으로 가비지 컬렉션을 트리거할지 판별할 수 있다. 블록(920)이 어떻게 수행되는 지의 예시들은 아래 도 10 및 도 11에서 도시된다.
블록(925)에서, 도 3의 수신 회로(305)는 도 1의 호스트(105)로부터 가비지 컬렉션을 수신하기 위한 커맨드를 수신할 수 있다. 이 커맨드는 호스트 개시 가비지 컬렉션을 위한 것일 수 있다. 블록(930)에서, 도 3의 가비지 컬렉션 로직(340)은 호스트 개시 가비지 컬렉션을 수행할 수 있다. 절차는 블록(920)으로 되돌아갈 수 있다. 호스트 개시 가비지 컬렉션은 선택적인 것이며, 점선 화살표(935)로 도시된 바와 같이 생략될 수 있다.
도 10은 본 발명의 기술적 사상의 실시 예에 따른 도 1의 SSD (120)가 도 5의 유휴 시간을 이용하고, 그리고 선택적으로 도 1의 SSD (120)에 대한 도 5의 자유 블록 카운트(520)를 이용하여 수동 가비지 컬렉션을 수행할 때를 판별하는 예시적인 절차의 순서도이다. 도 10의 블록(1005)에서, 상태 판별기(320)는 도 1의 SSD (120)에 대한 도 5의 유휴 시간(510)을 추적할 수 있다. 블록(1010)에서, 도 3의 비교기(330)는 도 5의 유휴 시간(510)을 도 5의 유휴 구간(505)과 비교할 수 있다. 블록(1015)에서, 도 3의 SSD 컨트롤러(310)는 도 5의 유휴 시간(510)이 도 5의 유휴 구간(505)을 만족하는지 판별할 수 있다. 그렇지 않으면, 제어는 블록(1005)으로 되돌아간다.
도 5의 유휴 시간(510)이 도 5의 유휴 구간(505)을 만족하면, 블록(1020)에서 도 3의 SSD 컨트롤러(310)는 도 1의 SSD (120)에 충분한 수의 자유 소거 블록들이 존재하는지 판별한다. 충분한 수의 자유 소거 블록들이 있으면, 제어는 블록(1005)으로 되돌아간다. 그렇지 않으면, 제어는 블록(930)으로 진행하며, 가비지 컬렉션 로직(340)은 도 3의 플래시 메모리(315)에서 가비지 컬렉션을 수행할 수 있다. 도 10에서, 블록(930)은 호스트 개시 가비지 컬렉션 동작보다는 수동 가비지 컬렉션 동작이다. 그러나 도 3의 가비지 컬렉션 로직(340)에게 차이는 없다. 점선 화살표(1025)로 도시된 바와 같이, 도 1의 SSD (120)의 자유 소거 블록들의 수가 도 4의 조건(410)의 일부가 아닌 경우, 블록(1020)은 선택적이다.
도 11은 본 발명의 기술적 사상의 실시 예에 따른 도 1의 SSD (120)가 도 6의 큐 깊이(605)를 이용하고, 그리고 선택적으로 도 1의 SSD (120)에 대한 도 6의 자유 블록 카운트(520)를 사용하여 수동 가비지 컬렉션을 수행할 때를 판별하는 예시적인 절차의 순서도를 보여준다. 도 11의 블록(1105)에서, 상태 판별기(320)는 도 1의 SSD (120)에 대한 도 6의 큐 깊이(605)를 추적할 수 있다. 블록(1110)에서, 도 3의 비교기(330)는 도 6의 큐 깊이(605)를 도 6의 큐 깊이 문턱(610)과 비교할 수 있다. 블록(1115)에서, 도 3의 SSD 컨트롤러(310)는 도 6의 큐 깊이(605)가 도 6의 큐 깊이 문턱(610)을 만족하는지 판별한다. 그렇지 않으면, 제어는 블록(1105)으로 되돌아간다.
도 6의 큐 깊이(605)가 도 6의 큐 깊이 문턱(610)을 만족하면, 블록(1120)에서 도 3의 SSD 컨트롤러(310)는 도 1의 SSD (120)의 자유 소거 블록들의 수가 충분한지 판별할 수 있다. 자유 소거 블록들의 수가 충분하면, 제어는 블록(1105)으로 되돌아간다. 그렇지 않으면, 제어는 블록(930)으로 진행하고, 가비지 컬렉션 로직(340)은 도 3의 플래시 메모리(315)에서 가비지 컬렉션을 수행할 수 있다. 도 11에서, 블록(930)은 호스트 개시 가비지 컬렉션 동작이 아닌 수동 가비지 컬렉션 동작이다. 그러나 도 3의 가비지 컬렉션 로직(340)에게 차이는 없다. 점선 화살표(1125)로 도시된 바와 같이, 도 1의 SSD (120)의 자유 소거 블록들의 수가 도 4의 조건(410)의 일부가 아닌 경우, 블록(1120)은 선택적이다.
도 12는 본 발명의 기술적 사상의 실시 예에 따른 도 3의 상태 판별기(320)가 도 1의 SSD (120)가 다중 커맨드 큐들을 포함할 때에 도 1의 SSD (120)에 대한 도 6의 큐 깊이(610)를 판별하는 예시적인 절차의 순서도를 보여준다. 블록(1205)에서, 도 3의 상태 판별기(320)는 복수의 큐들 각각에 대한 도 7의 깊이들(705, 710, 715)을 판별할 수 있다. 블록(1210)에서, 도 3의 상태 판별기(320)는 복수의 큐들에 대한 도 7의 깊이들(705, 710, 715)로부터 도 7의 평균(720), 합(725), 중간(730), 최소(735), 또는 최대(740)와 같은 통계를 계산할 수 있다. 상태 판별기(320)는 계산된 통계들을 도 6의 큐 깊이(610)로 사용할 수 있다.
도 8a 내지 도 12에서, 본 발명의 기술적 사상의 일부 실시 예들이 도시된다. 그러나 이 분야에 숙련된 자들은, 블록들의 순서를 바꿈으로서, 블록들을 생략함으로써, 또는 도면들에 도시되지 않은 연결들을 포함함으로써 본 발명의 기술적 사상의 다른 실시 예들이 가능함을 인식할 것이다. 순서도들의 이러한 모든 변경들은 직접적으로 설명되었든 아니든 본 발명의 기술적 사상의 실시 예들로 여겨진다.
아래의 설명은 본 발명의 기술적 사상의 일부 측면들이 구현되는 적절한 기계 또는 기계들의 짧고 일반적인 설명을 제공하고자 한다. 기계 또는 기계들은 적어도 일부는 다른 기계로부터 수신되는 지시들, 가상현실(VR) 환경과의 상호 작용, 생체 피드백, 또는 다른 입력 신호뿐 아니라 키보드, 마우스 등과 같은 통상적인 입력 장치들로부터의 입력에 의해 제어될 수 있다. 여기에서 사용되는 바와 같이, "기계"의 용어는 단일 기계, 가상 기계, 또는 기계들, 가상 기계들 또는 함께 동작하는 장치들과 통신하도록 결합된 시스템을 넓게 포함하는 것으로 의도된다. 예시적인 기계들은 예를 들어 자동차, 기차, 택시 등과 같은 개인용 또는 공공 수송과 같은 수송 장치들뿐 아니라 개인용 컴퓨터들, 워크스테이션들, 서버들, 포터블 컴퓨터들, 핸드헬드 장치들, 전화들, 태블릿들 등과 같은 컴퓨팅 장치들을 포함할 수 있다.
기계 또는 기계들은 프로그램 가능한 또는 프로그램 불가능한 논리 장치들 또는 어레이들, ASIC (Application Specific Integrated Circuit), 임베디드 컴퓨터들, 스마트 카드들 등과 같은 임베디드 컨트롤러들을 포함할 수 있다. 기계 또는 기계들은 네트워크 인터페이스, 모뎀, 또는 다른 통신 결합들을 통해서와 같이 하나 또는 그보다 많은 원격 기계들에 대한 하나 또는 그보다 많은 연결들을 활용할 수 있다. 기계들은 인트라넷, 인터넷, LAN (local area networks), WAN (wide area networks) 등과 같은 물리적 그리고/또는 논리적 네트워크의 수단으로 서로 연결될 수 있다. 이 분야에 숙련된 자는 네트워크 통신이 다양한 유선 그리고/또는 무선 근거리 또는 원거리 캐리어들 및 무선 주파수(RF), 위성, 마이크로파, IEEE 802.11, 블루투스, 광학, 적외선, 케이블, 레이저 등을 포함하는 프로토콜을 활용함을 이해할 것이다.
본 발명의 기술적 사상의 실시 예들은, 기계에 의해 액세스되는 때에 기계가 작업들을 수행하거나 또는 추상적인 데이터 타입들 또는 저레벨 하드웨어 콘텍스트들을 정의하는 것을 유발하는 함수들, 절차들, 데이터 구조들, 응용 프로그램들 등을 포함하는 연관된 데이터를 참조하여 또는 협력하여 설명될 수 있다. 연관된 데이터는, 예를 들어 RAM, ROM 등과 같은 휘발성 그리고/또는 불휘발성 메모리, 또는 다른 스토리지 장치들, 그리고 하드 드라이브, 플로피 디스크, 광학 스토리지, 테이프들, 플래시 메모리, 메모리 스틱들, 디지털 비디오 디스크들, 생체 스토리지 등을 포함하는 연관된 스토리지 매체에 저장될 수 있다. 연관된 데이터는 물리적 그리고/또는 논리적 네트워크를 포함하는 전송 환경들을 거쳐 패킷들, 직렬 데이터, 병렬 데이터, 전송신호들 등의 형태로 전달되고, 압축된 또는 암호화된 포맷으로 이용될 수 있다. 연관된 데이터는 분산 환경에서 사용될 수 있으며, 기계 액세스에 대해 지역적 그리고/또는 원격으로 저장될 수 있다.
본 발명의 기술적 사상의 실시 예들은 하나 또는 그보다 많은 프로세서들에 의해 실행 가능하며 여기에 설명된 바와 같이 본 발명의 기술적 사상의 원소들을 수행하게 하는 명령들을 포함하는 실재하는 비임시 기계 독출 매체를 포함할 수 있다.
도시된 실시 예들을 참조하여 설명된 본 발명의 기술적 사상의 원칙들을 가지면, 도시된 실시 예들이 이러한 원칙들로부터 멀어지지 않으면서 배열 및 상세에서 수정될 수 있고 필요한 임의의 방법으로 조합될 수 있음이 이해될 것이다. 앞선 설명이 구체적인 실시 예들에 집중하였지만, 다른 구성들 또한 고려된다. 구체적으로, "본 발명의 기술적 사상의 실시 예에 따른"과 같은 설명들 또는 여기에 사용된 유사한 것들에 불구하고, 이러한 문구들은 일반적으로 실시 예의 가능성들을 참조하며, 본 발명의 기술적 사상을 구체적인 실시 예의 구성들로 한정하는 것을 의도하지 않는다. 여기에 사용되는 바와 같이, 이러한 용어들은 다른 실시 예들로 조합 가능한 동일한 또는 상이한 실시 예들을 참조할 수 있다.
앞서 설명된 실시 예들은 본 발명의 기술적 사상을 그것들로 한정하는 것으로 해석되지 않는다. 적은 실시 예들만이 설명되었지만, 이 분야에 숙련된 자들은 본 기재의 신규한 설명들 및 장점들로부터 실질적으로 멀어지지 않으면서 이러한 실시 예들에 많은 수정들이 가능함을 충분히 이해할 것이다. 따라서, 이러한 모든 수정들은 청구항들에서 정의되는 바와 같이 본 발명의 기술적 사상의 범위 내에 포함되는 것으로 의도된다.
본 발명의 기술적 사상의 실시 예들은 한정 없이 아래의 서술들로 확장될 수 있다.
제1 서술. 본 발명의 기술적 사상의 실시 예는 솔리드 스테이트 드라이브(SSD)를 포함한다. SSD는 데이터를 위한 스토리지, 상기 스토리지에서 가비지 컬렉션을 수행하는 가비지 컬렉션 로직, 유휴 구간 및 큐 깊이 문턱을 포함하는 세트로부터 얻어지는 조건을 포함하는 구성 커맨드 및 데이터 요청들을 수신하는 수신 회로, 상기 조건을 저장하는 조건 스토리지, 상기 SSD의 상태를 판별하는 상태 판별기, 그리고 상기 조건으로 상기 SSD의 상태를 비교하는 비교기를 포함한다.
제2 서술. 본 발명의 기술적 사상의 실시 예는 제1 서술에 따른 SSD를 포함하고, 상기 비교기가 상기 SSD의 상기 상태가 상기 조건을 만족함을 가리키면 상기 가비지 컬렉션 로직이 상기 스토리지에서 가비지 컬렉션을 수행하도록 트리거하는 트리거 회로를 더 포함한다.
제3 서술. 본 발명의 기술적 사상의 실시 예는 제1 서술에 따른 SSD를 포함하고, 상기 조건은 복합 조건을 포함한다.
제4 서술. 본 발명의 기술적 사상의 실시 예는 제2 서술에 따른 SSD를 포함하고, 상기 트리거 회로는 상기 비교기가 상기 SSD의 상태가 상기 조건을 만족하고 그리고 상기 SSD의 자유 소거 블록들의 수가 문턱보다 낮음을 가리키면 상기 가비지 컬렉션 로직이 상기 스토리지에서 가비지 컬렉션을 수행하도록 트리거한다.
제5 서술. 본 발명의 기술적 사상의 실시 예는 제1 서술에 따른 SSD를 포함하고, 상기 수신 회로는 호스트로부터 상기 구성 커맨드를 수신한다.
제6 서술. 본 발명의 기술적 사상의 실시 예는 제1 서술에 따른 SSD를 포함하고, 상기 조건은 유휴 구간을 포함하고, 상기 상태 판별기는 상기 SSD에 대한 유휴 시간을 판별하고, 상기 비교기는 상기 SSD에 대한 유휴 시간을 상기 유휴 구간과 비교한다.
제7 서술. 본 발명의 기술적 사상의 실시 예는 제1 서술에 따른 SSD를 포함하고, 상기 조건은 큐 깊이 문턱을 포함하고, 상기 상태 판별기는 상기 SSD에 대한 커맨드 큐 깊이를 판별하고, 상기 비교기는 상기 SSD에 대한 상기 커맨드 큐 깊이를 상기 큐 깊이 문턱과 비교한다.
제8 서술. 본 발명의 기술적 사상의 실시 예는 제7 서술에 따른 SSD를 포함하고, 상기 상태 판별기는 복수의 깊이들로부터 상기 SSD에 대한 상기 커맨드 큐 깊이를 판별한다.
제9 서술. 본 발명의 기술적 사상의 실시 예는 제8 서술에 따른 SSD를 포함하고, 상기 상태 판별기는 상기 커맨드 큐 깊이를 상기 복수의 깊이들의 평균으로 계산한다.
제10 서술. 본 발명의 기술적 사상의 실시 예는 제8 서술에 따른 SSD를 포함하고, 상기 상태 판별기는 상기 커맨드 큐 깊이를 상기 복수의 깊이들의 합으로 계산한다.
제11 서술. 본 발명의 기술적 사상의 실시 예는 제8 서술에 따른 SSD를 포함하고, 상기 상태 판별기는 상기 커맨드 큐 깊이를 상기 복수의 깊이들의 중간으로 계산한다.
제12 서술. 본 발명의 기술적 사상의 실시 예는 제8 서술에 따른 SSD를 포함하고, 상기 상태 판별기는 상기 커맨드 큐 깊이를 상기 복수의 깊이들의 최대로 계산한다.
제13 서술. 본 발명의 기술적 사상의 실시 예는 제8 서술에 따른 SSD를 포함하고, 상기 상태 판별기는 상기 커맨드 큐 깊이를 상기 복수의 깊이들의 최소로 계산한다.
제14 서술. 본 발명의 기술적 사상의 실시 예는 제1 서술에 따른 SSD를 포함하고, 상기 수신 회로는 상기 호스트로부터 명령을 수신하여 가비지 컬렉션을 수행한다.
제15 서술. 본 발명의 기술적 사상의 실시 예는 제1 서술에 따른 SSD를 포함하고, 상기 구성 커맨드는 사용자 구성 가능한 구성 커맨드이다.
제16 서술. 본 발명의 기술적 사상의 실시 예는 방법을 포함한다. 방법은 솔리드 스테이트 드라이브(SSD)에서 유휴 구간 및 큐 깊이 문턱을 포함하는 세트로부터 얻어지는 조건을 포함하는 구성 커맨드를 수신하는 단계, 상기 조건을 상기 SSD에 저장하는 단계, 그리고 상기 조건을 이용하여 상기 SSD에서 가비지 컬렉션을 수행하는 단계를 포함한다.
제17 서술. 본 발명의 기술적 사상의 실시 예는 제16 서술에 따른 방법을 포함하고, SSD에서 구성 커맨드를 수신하는 단계는 상기 SSD에서 호스트로부터 상기 구성 커맨드를 수신하는 단계를 포함한다.
제18 서술. 본 발명의 기술적 사상의 실시 예는 제16 서술에 따른 방법을 포함하고, 상기 조건을 이용하여 상기 SSD에서 가비지 컬렉션을 수행하는 단계는, 상기 SSD의 상태를 모니터하는 단계, 상기 SSD의 상태를 상기 조건과 비교하는 단계, 그리고 상기 SSD의 상태가 상기 조건을 만족하면 상기 SSD에서 가비지 컬렉션을 수행하는 단계를 포함한다.
제19 서술. 본 발명의 기술적 사상의 실시 예는 제18 서술에 따른 방법을 포함하고, SSD에서 구성 커맨드를 수신하는 단계는 상기 SSD에서 상기 유휴 구간을 포함하는 상기 구성 커맨드를 수신하는 단계를 포함하고, 상기 SSD의 상태를 모니터하는 단계는 상기 SSD에 대한 유휴 시간을 추적하는 단계를 포함하고, 상기 SSD의 상태를 상기 조건과 비교하는 단계는 상기 SSD에 대한 유휴 시간을 상기 유휴 구간과 비교하는 단계를 포함한다.
제20 서술. 본 발명의 기술적 사상의 실시 예는 제18 서술에 따른 방법을 포함하고, SSD에서 구성 커맨드를 수신하는 단계는 상기 SSD에서 상기 큐 깊이 문턱을 포함하는 상기 구성 커맨드를 수신하는 단계를 포함하고, 상기 SSD의 상태를 모니터하는 단계는 상기 SSD에 대한 커맨드 큐 깊이를 판별하는 단계를 포함하고, 그리고 상기 SSD의 상태를 상기 조건과 비교하는 단계는 상기 큐 깊이 문턱을 상기 SSD에 대한 커맨드 큐 깊이와 비교하는 단계를 포함한다.
제21 서술. 본 발명의 기술적 사상의 실시 예는 제20 서술에 따른 방법을 포함하고, 상기 SSD의 상태를 모니터하는 단계는 상기 SSD에 대한 커맨드 큐 깊이를 판별하는 단계를 포함하고, 상기 SSD에 대한 커맨드 큐 깊이를 판별하는 단계는 복수의 커맨드 큐들에 대한 복수의 깊이들을 판별하는 단계, 그리고 상기 복수의 깊이들로부터 상기 커맨드 큐 깊이를 판별하는 단계를 포함한다.
제22 서술. 본 발명의 기술적 사상의 실시 예는 제21 서술에 따른 방법을 포함하고, 상기 복수의 깊이들로부터 상기 커맨드 큐 깊이를 판별하는 단계는 상기 커맨드 큐 깊이를 상기 복수의 깊이들 모두의 평균으로 계산하는 단계를 포함한다.
제23 서술. 본 발명의 기술적 사상의 실시 예는 제21 서술에 따른 방법을 포함하고, 상기 복수의 깊이들로부터 상기 커맨드 큐 깊이를 판별하는 단계는 상기 커맨드 큐 깊이를 상기 복수의 깊이들 모두의 합으로 계산하는 단계를 포함한다.
제24 서술. 본 발명의 기술적 사상의 실시 예는 제21 서술에 따른 방법을 포함하고, 상기 복수의 깊이들로부터 상기 커맨드 큐 깊이를 판별하는 단계는 상기 커맨드 큐 깊이를 상기 복수의 깊이들 모두의 중간으로 계산하는 단계를 포함한다.
제25 서술. 본 발명의 기술적 사상의 실시 예는 제21 서술에 따른 방법을 포함하고, 상기 복수의 깊이들로부터 상기 커맨드 큐 깊이를 판별하는 단계는 상기 커맨드 큐 깊이를 상기 복수의 깊이들 모두의 최대로 계산하는 단계를 포함한다.
제26 서술. 본 발명의 기술적 사상의 실시 예는 제21 서술에 따른 방법을 포함하고, 상기 복수의 깊이들로부터 상기 커맨드 큐 깊이를 판별하는 단계는 상기 커맨드 큐 깊이를 상기 복수의 깊이들 모두의 최소로 계산하는 단계를 포함한다.
제27 서술. 본 발명의 기술적 사상의 실시 예는 제16 서술에 따른 방법을 포함하고, SSD에서 구성 커맨드를 수신하는 단계는 상기 SSD에서 복합 조건을 포함하는 구성 커맨드를 수신하는 단계를 포함한다.
제28 서술. 본 발명의 기술적 사상의 실시 예는 제18 서술에 따른 방법을 포함하고, 상기 SSD의 상태가 상기 조건을 만족하면 상기 SSD에서 가비지 컬렉션을 수행하는 단계는 상기 SSD의 상태가 상기 조건을 만족하고 그리고 상기 SSD의 자유 소거 블록들의 수가 문턱보다 낮은 경우 상기 SSD에서 가비지 컬렉션을 수행하는 단계를 포함한다.
제29 서술. 본 발명의 기술적 사상의 실시 예는 제16 서술에 따른 방법을 포함하고, 호스트로부터 명령을 수신하여 가비지 컬렉션을 수행하는 단계를 더 포함한다.
제30 서술. 본 발명의 기술적 사상의 실시 예는 제16 서술에 따른 방법을 포함하고, SSD에서 구성 커맨드를 수신하는 단계는 상기 SSD에서 상기 유휴 구간 및 상기 큐 깊이 문턱을 포함하는 세트로부터 얻어지는 조건을 포함하는 사용자 구성 가능한 구성 커맨드를 수신하는 단계를 포함한다.
제31 서술. 본 발명의 기술적 사상의 실시 예는 실재하는 스토리지 매체를 포함하는 물품을 포함한다. 상기 실재하는 저장 매체는 그것에 저장된 비임시 명령들을 포함한다. 상기 비임시 명령들이 실행되면, 솔리드 스테이트 드라이브(SSD)에서 유휴 구간 및 큐 깊이 문턱을 포함하는 세트로부터 얻어지는 조건을 포함하는 구성 커맨드를 수신하는 단계, 상기 SSD에 상기 조건을 저장하는 단계, 그리고 상기 조건을 이용하여 상기 SSD에서 가비지 컬렉션을 수행하는 단계가 유발된다.
제32 서술. 본 발명의 기술적 사상의 실시 예는 제31 서술에 따른 물품을 포함한다. SSD에서 구성 커맨드를 수신하는 단계는 상기 SSD에서 호스트로부터 상기 구성 커맨드를 수신하는 단계를 포함한다.
제33 서술. 본 발명의 기술적 사상의 실시 예는 제31 서술에 따른 물품을 포함한다. 상기 조건을 이용하여 상기 SSD에서 가비지 컬렉션을 수행하는 단계는 상기 SSD의 상태를 모니터하는 단계, 상기 SSD의 상태를 상기 조건과 비교하는 단계, 그리고 상기 SSD의 상태가 상기 조건을 만족하면 상기 SSD에서 가비지 컬렉션을 수행하는 단계를 포함한다.
제34 서술. 본 발명의 기술적 사상의 실시 예는 제33 서술에 따른 물품을 포함하고, SSD에서 구성 커맨드를 수신하는 단계는 상기 SSD에서 상기 유휴 구간을 포함하는 상기 구성 커맨드를 수신하는 단계를 포함하고, 상기 SSD의 상태를 모니터하는 단계는 상기 SSD에 대한 유휴 시간을 추적하는 단계를 포함하고, 상기 SSD의 상태를 상기 조건과 비교하는 단계는 상기 SSD에 대한 유휴 시간을 상기 유휴 구간과 비교하는 단계를 포함한다.
제35 서술. 본 발명의 기술적 사상의 실시 예는 제33 서술에 따른 물품을 포함하고, SSD에서 구성 커맨드를 수신하는 단계는 상기 SSD에서 상기 큐 깊이 문턱을 포함하는 상기 구성 커맨드를 수신하는 단계를 포함하고, 상기 SSD의 상태를 모니터하는 단계는 상기 SSD에 대한 커맨드 큐 깊이를 판별하는 단계를 포함하고, 그리고 상기 SSD의 상태를 상기 조건과 비교하는 단계는 상기 큐 깊이 문턱을 상기 SSD에 대한 커맨드 큐 깊이와 비교하는 단계를 포함한다.
제36 서술. 본 발명의 기술적 사상의 실시 예는 제35 서술에 따른 물품을 포함하고, 상기 SSD의 상태를 모니터하는 단계는 상기 SSD에 대한 커맨드 큐 깊이를 판별하는 단계를 포함하고, 상기 SSD에 대한 커맨드 큐 깊이를 판별하는 단계는 복수의 커맨드 큐들에 대한 복수의 깊이들을 판별하는 단계, 그리고 상기 복수의 깊이들로부터 상기 커맨드 큐 깊이를 판별하는 단계를 포함한다.
제37 서술. 본 발명의 기술적 사상의 실시 예는 제36 서술에 따른 물품을 포함하고, 상기 복수의 깊이들로부터 상기 커맨드 큐 깊이를 판별하는 단계는 상기 커맨드 큐 깊이를 상기 복수의 깊이들 모두의 평균으로 계산하는 단계를 포함한다.
제38 서술. 본 발명의 기술적 사상의 실시 예는 제36 서술에 따른 물품을 포함하고, 상기 복수의 깊이들로부터 상기 커맨드 큐 깊이를 판별하는 단계는 상기 커맨드 큐 깊이를 상기 복수의 깊이들 모두의 합으로 계산하는 단계를 포함한다.
제39 서술. 본 발명의 기술적 사상의 실시 예는 제36 서술에 따른 물품을 포함하고, 상기 복수의 깊이들로부터 상기 커맨드 큐 깊이를 판별하는 단계는 상기 커맨드 큐 깊이를 상기 복수의 깊이들 모두의 중간으로 계산하는 단계를 포함한다.
제40 서술. 본 발명의 기술적 사상의 실시 예는 제36 서술에 따른 물품을 포함하고, 상기 복수의 깊이들로부터 상기 커맨드 큐 깊이를 판별하는 단계는 상기 커맨드 큐 깊이를 상기 복수의 깊이들 모두의 최대로 계산하는 단계를 포함한다.
제41 서술. 본 발명의 기술적 사상의 실시 예는 제36 서술에 따른 물품을 포함하고, 상기 복수의 깊이들로부터 상기 커맨드 큐 깊이를 판별하는 단계는 상기 커맨드 큐 깊이를 상기 복수의 깊이들 모두의 최소로 계산하는 단계를 포함한다.
제42 서술. 본 발명의 기술적 사상의 실시 예는 제31 서술에 따른 물품을 포함하고, SSD에서 구성 커맨드를 수신하는 단계는 상기 SSD에서 복합 조건을 포함하는 구성 커맨드를 수신하는 단계를 포함한다.
제43 서술. 본 발명의 기술적 사상의 실시 예는 제33 서술에 따른 물품을 포함하고, 상기 SSD의 상태가 상기 조건을 만족하면 상기 SSD에서 가비지 컬렉션을 수행하는 단계는 상기 SSD의 상태가 상기 조건을 만족하고 그리고 상기 SSD의 자유 소거 블록들의 수가 문턱보다 낮은 경우 상기 SSD에서 가비지 컬렉션을 수행하는 단계를 포함한다.
제44 서술. 본 발명의 기술적 사상의 실시 예는 제31 서술에 따른 물품을 포함하고, 상기 실재하는 스토리지 매체는 기계에 의해 실행된 때에 호스트로부터 명령을 수신하여 가비지 컬렉션을 수행하는 단계를 유발하는 비임시 명령들을 더 저장한다.
제45 서술. 본 발명의 기술적 사상의 실시 예는 제31 서술에 따른 물품을 포함하고, SSD에서 구성 커맨드를 수신하는 단계는 상기 SSD에서 상기 유휴 구간 및 상기 큐 깊이 문턱을 포함하는 세트로부터 얻어지는 조건을 포함하는 사용자 구성 가능한 구성 커맨드를 수신하는 단계를 포함한다.
결론적으로, 여기에 설명된 실시 예들에 대한 치환의 넓은 다양성의 관점에서, 상세한 설명 및 첨부된 소재들은 설명만을 의도하는 것이고, 본 발명의 기술적 사상의 범위를 제한하는 것으로 여겨지지 않는다. 따라서, 본 발명의 기술적 사상으로 청구되는 것은 이러한 모든 수정들을 후술되는 청구항들 및 이것에 등가적인 것들의 범위 및 사상 내로 포함된다.
110: 프로세서
115: 메모리
120: 솔리드 스테이트 드라이브
205: 메모리 컨트롤러
210: 클럭
215: 네트워크 커넥터
225: 사용자 인터페이스
230; 입력/출력 엔진
310: SSD 컨트롤러
315: 플래시 메모리
320: 상태 판별기
325: 비교기
330: 조건 스토리지
335: 트리거 회로
340: 가비지 컬렉션 로직
405: 구성 커맨드
410: 조건
415, 420, 425: 데이터 요청
505: 유휴 구간
510: 유휴 시간
515: 트리거
520: 자유 소거 블록들의 수
330: 비교기
605: 큐 깊이 문턱
610: 커맨드 큐 깊이
705, 710, 715: 깊이
720: 평균
725: 합
730: 중간
735: 최소
740: 최대
115: 메모리
120: 솔리드 스테이트 드라이브
205: 메모리 컨트롤러
210: 클럭
215: 네트워크 커넥터
225: 사용자 인터페이스
230; 입력/출력 엔진
310: SSD 컨트롤러
315: 플래시 메모리
320: 상태 판별기
325: 비교기
330: 조건 스토리지
335: 트리거 회로
340: 가비지 컬렉션 로직
405: 구성 커맨드
410: 조건
415, 420, 425: 데이터 요청
505: 유휴 구간
510: 유휴 시간
515: 트리거
520: 자유 소거 블록들의 수
330: 비교기
605: 큐 깊이 문턱
610: 커맨드 큐 깊이
705, 710, 715: 깊이
720: 평균
725: 합
730: 중간
735: 최소
740: 최대
Claims (20)
- 솔리드 스테이트 드라이브(SSD)에 있어서:
데이터를 위한 스토리지;
상기 스토리지에서 가비지 컬렉션을 수행하는 가비지 컬렉션 로직;
유휴 구간 및 큐 깊이 문턱을 포함하는 세트로부터 얻어지는 조건을 포함하는 구성 커맨드 및 데이터 요청들을 수신하는 수신 회로;
상기 조건을 저장하는 조건 스토리지;
상기 솔리드 스테이트 드라이브의 상태를 판별하는 상태 판별기; 그리고
상기 조건으로 상기 솔리드 스테이트 드라이브의 상태를 비교하는 비교기를 포함하는 솔리드 스테이트 드라이브. - 제1항에 있어서,
상기 솔리드 스테이트 드라이브의 상기 상태가 상기 조건을 만족함을 가리키면 상기 가비지 컬렉션 로직이 상기 스토리지에서 가비지 컬렉션을 수행하도록 트리거하는 트리거 회로를 더 포함하는 솔리드 스테이트 드라이브. - 제2항에 있어서,
상기 트리거 회로는 상기 비교기가 상기 솔리드 스테이트 드라이브의 상태가 상기 조건을 만족하고 그리고 상기 솔리드 스테이트 드라이브의 자유 소거 블록들의 수가 문턱보다 낮음을 가리키면 상기 가비지 컬렉션 로직이 상기 스토리지에서 가비지 컬렉션을 수행하도록 트리거하는 솔리드 스테이트 드라이브. - 제1항에 있어서,
상기 조건은 유휴 구간을 포함하고, 상기 상태 판별기는 상기 솔리드 스테이트 드라이브에 대한 유휴 시간을 판별하고, 상기 비교기는 상기 솔리드 스테이트 드라이브에 대한 유휴 시간을 상기 유휴 구간과 비교하는 솔리드 스테이트 드라이브. - 제1항에 있어서,
상기 조건은 큐 깊이 문턱을 포함하고, 상기 상태 판별기는 상기 솔리드 스테이트 드라이브에 대한 커맨드 큐 깊이를 판별하고, 상기 비교기는 상기 솔리드 스테이트 드라이브에 대한 상기 커맨드 큐 깊이를 상기 큐 깊이 문턱과 비교하는 솔리드 스테이트 드라이브. - 제5항에 있어서,
상기 상태 판별기는 복수의 깊이들로부터 상기 솔리드 스테이트 드라이브에 대한 상기 커맨드 큐 깊이를 판별하는 솔리드 스테이트 드라이브. - 제6항에 있어서,
상기 상태 판별기는 상기 커맨드 큐 깊이를 상기 복수의 깊이들의 평균으로 계산하는 솔리드 스테이트 드라이브. - 제6항에 있어서,
상기 상태 판별기는 상기 커맨드 큐 깊이를 상기 복수의 깊이들의 최대로 계산하는 솔리드 스테이트 드라이브. - 제6항에 있어서,
상기 상태 판별기는 상기 커맨드 큐 깊이를 상기 복수의 깊이들의 합으로 계산하는 솔리드 스테이트 드라이브. - 제6항에 있어서,
상기 상태 판별기는 상기 커맨드 큐 깊이를 상기 복수의 깊이들의 중간으로 계산하는 솔리드 스테이트 드라이브. - 제6항에 있어서,
상기 상태 판별기는 상기 커맨드 큐 깊이를 상기 복수의 깊이들의 최소로 계산하는 솔리드 스테이트 드라이브. - 방법에 있어서:
솔리드 스테이트 드라이브(SSD)에서 유휴 구간 및 큐 깊이 문턱을 포함하는 세트로부터 얻어지는 조건을 포함하는 구성 커맨드를 수신하는 단계;
상기 조건을 상기 솔리드 스테이트 드라이브에 저장하는 단계; 그리고
상기 솔리드 스테이트 드라이브에서 가비지 컬렉션을 수행하기 위해 상기 조건을 이용하는 단계를 포함하는 방법. - 제12항에 있어서,
상기 조건을 이용하여 상기 솔리드 스테이트 드라이브에서 가비지 컬렉션을 수행하는 단계는:
상기 솔리드 스테이트 드라이브의 상태를 모니터하는 단계;
상기 솔리드 스테이트 드라이브의 상태를 상기 조건과 비교하는 단계; 그리고
상기 솔리드 스테이트 드라이브의 상태가 상기 조건을 만족하면 상기 솔리드 스테이트 드라이브에서 가비지 컬렉션을 수행하는 단계를 포함하는 방법. - 제13항에 있어서,
상기 솔리드 스테이트 드라이브에서 유휴 구간 및 큐 깊이 문턱을 포함하는 세트로부터 얻어지는 조건을 포함하는 구성 커맨드를 수신하는 단계는 상기 솔리드 스테이트 드라이브에서 상기 유휴 구간을 포함하는 상기 구성 커맨드를 수신하는 단계를 포함하고,
상기 솔리드 스테이트 드라이브의 상태를 모니터하는 단계는 상기 솔리드 스테이트 드라이브에 대한 유휴 시간을 추적하는 단계를 포함하고,
상기 솔리드 스테이트 드라이브의 상태를 상기 조건과 비교하는 단계는 상기 솔리드 스테이트 드라이브에 대한 유휴 시간을 상기 유휴 구간과 비교하는 단계를 포함하는 방법. - 제13항에 있어서,
상기 솔리드 스테이트 드라이브에서 유휴 구간 및 큐 깊이 문턱을 포함하는 세트로부터 얻어지는 조건을 포함하는 구성 커맨드를 수신하는 단계는 상기 큐 깊이 문턱을 포함하는 상기 구성 커맨드를 수신하는 단계를 포함하고,
상기 솔리드 스테이트 드라이브의 상태를 모니터하는 단계는 상기 솔리드 스테이트 드라이브에 대한 커맨드 큐 깊이를 판별하는 단계를 포함하고, 그리고
상기 솔리드 스테이트 드라이브의 상태를 상기 조건과 비교하는 단계는 상기 큐 깊이 문턱을 상기 솔리드 스테이트 드라이브에 대한 상기 커맨드 큐 깊이와 비교하는 단계를 포함하는 방법. - 제13항에 있어서,
상기 솔리드 스테이트 드라이브의 상태를 모니터하는 단계는 상기 솔리드 스테이트 드라이브에 대한 커맨드 큐 깊이를 판별하는 단계를 포함하고,
상기 솔리드 스테이트 드라이브에 대한 커맨드 큐 깊이를 판별하는 단계는:
복수의 커맨드 큐들에 대한 복수의 깊이들을 판별하는 단계; 그리고
상기 복수의 깊이들로부터 상기 커맨드 큐 깊이를 판별하는 단계를 포함하는 방법. - 제16항에 있어서,
상기 복수의 깊이들로부터 상기 커맨드 큐 깊이를 판별하는 단계는 상기 커맨드 큐 깊이를 상기 복수의 깊이들 모두의 평균으로 계산하는 단계를 포함하는 방법. - 제13항에 있어서,
상기 솔리드 스테이트 드라이브의 상태가 상기 조건을 만족하면 상기 솔리드 스테이트 드라이브에서 가비지 컬렉션을 수행하는 단계는 상기 솔리드 스테이트 드라이브의 상태가 상기 조건을 만족하고 그리고 상기 솔리드 스테이트 드라이브의 자유 소거 블록들의 수가 문턱보다 낮은 경우 상기 솔리드 스테이트 드라이브에서 가비지 컬렉션을 수행하는 단계를 포함하는 방법. - 제12항에 있어서,
호스트로부터 명령을 수신하여 가비지 컬렉션을 수행하는 단계를 더 포함하는 방법. - 실재하는 스토리지 매체를 포함하는 물품에 있어서:
상기 실재하는 스토리지 매체는 그것에 저장된 비임시 명령들을 포함하고, 상기 비임시 명령들이 실행되면,
솔리드 스테이트 드라이브(SSD)에서 유휴 구간 및 큐 깊이 문턱을 포함하는 세트로부터 얻어지는 조건을 포함하는 구성 커맨드를 수신하고;
상기 솔리드 스테이트 드라이브에 상기 조건을 저장하고; 그리고
상기 조건을 이용하여 상기 솔리드 스테이트 드라이브에서 가비지 컬렉션을 수행하는 것이 유발되는 물품.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662309954P | 2016-03-17 | 2016-03-17 | |
US62/309,954 | 2016-03-17 | ||
US15/151,470 US10409719B2 (en) | 2016-03-17 | 2016-05-10 | User configurable passive background operation |
US15/151,470 | 2016-05-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20170108788A true KR20170108788A (ko) | 2017-09-27 |
Family
ID=59855673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160160770A KR20170108788A (ko) | 2016-03-17 | 2016-11-29 | 사용자 구성가능한 수동 배경 동작 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10409719B2 (ko) |
JP (1) | JP6847694B2 (ko) |
KR (1) | KR20170108788A (ko) |
CN (1) | CN107203337B (ko) |
TW (1) | TWI682277B (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200015274A (ko) * | 2018-08-03 | 2020-02-12 | 삼성전자주식회사 | 호스트의 지시 없이 능동적으로 유지보수 동작을 개시하는 스토리지 장치 및 그것을 포함하는 전자 시스템 |
US11733883B2 (en) | 2018-08-03 | 2023-08-22 | Samsung Electronics Co., Ltd. | Storage device initiating maintenance operation actively without instruction of host and electronic system including the same |
US12066934B2 (en) | 2017-12-11 | 2024-08-20 | SK Hynix Inc. | Apparatus and method for operating garbage collection using host idle |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018181281A (ja) * | 2017-04-21 | 2018-11-15 | 富士通株式会社 | ストレージシステム、制御装置及びストレージ装置 |
JP6785204B2 (ja) | 2017-09-21 | 2020-11-18 | キオクシア株式会社 | メモリシステムおよび制御方法 |
KR20190102390A (ko) * | 2018-02-26 | 2019-09-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
KR20190108788A (ko) * | 2018-03-15 | 2019-09-25 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
JP6901427B2 (ja) | 2018-03-27 | 2021-07-14 | キオクシア株式会社 | ストレージ装置、コンピュータシステムおよびストレージ装置の動作方法 |
US11288185B2 (en) | 2019-01-03 | 2022-03-29 | Silicon Motion, Inc. | Method and computer program product for performing data writes into a flash memory |
CN111399750B (zh) * | 2019-01-03 | 2023-05-26 | 慧荣科技股份有限公司 | 闪存数据写入方法及计算机可读取存储介质 |
KR102689985B1 (ko) * | 2019-06-13 | 2024-08-01 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 그 저장 방법 |
KR20210074876A (ko) | 2019-12-12 | 2021-06-22 | 삼성전자주식회사 | 호스트 장치와 인터페이스를 수행하는 스토리지 장치 및 이의 동작 방법 |
CN114168082B (zh) * | 2021-12-10 | 2023-07-04 | 深圳忆联信息系统有限公司 | 避免ssd空闲块耗尽的方法、装置、计算机设备及存储介质 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03141442A (ja) * | 1989-10-27 | 1991-06-17 | Hitachi Ltd | タスク制御方式 |
JP2002297443A (ja) * | 2001-04-02 | 2002-10-11 | Sharp Corp | 動的メモリ管理装置と動的メモリ管理方法とコンピュータプログラムとこれを記録した記録媒体およびこれらを備えた携帯端末 |
US7743276B2 (en) | 2006-09-27 | 2010-06-22 | Hewlett-Packard Development Company, L.P. | Sufficient free space for redundancy recovery within a distributed data-storage system |
CN101689131B (zh) | 2006-12-06 | 2013-03-20 | 弗森-艾奥公司 | 用于共享的、前端、分布式raid的装置、系统和方法 |
US8032724B1 (en) * | 2007-04-04 | 2011-10-04 | Marvell International Ltd. | Demand-driven opportunistic garbage collection in memory components |
US8874831B2 (en) | 2007-06-01 | 2014-10-28 | Netlist, Inc. | Flash-DRAM hybrid memory module |
US8166233B2 (en) * | 2009-07-24 | 2012-04-24 | Lsi Corporation | Garbage collection for solid state disks |
US8370720B2 (en) | 2009-08-19 | 2013-02-05 | Ocz Technology Group, Inc. | Mass storage device and method for offline background scrubbing of solid-state memory devices |
US8521972B1 (en) | 2010-06-30 | 2013-08-27 | Western Digital Technologies, Inc. | System and method for optimizing garbage collection in data storage |
US8713268B2 (en) | 2010-08-05 | 2014-04-29 | Ut-Battelle, Llc | Coordinated garbage collection for raid array of solid state disks |
CN102147767B (zh) * | 2011-04-26 | 2014-04-02 | 记忆科技(深圳)有限公司 | 固态硬盘垃圾收集参数动态调整方法及其系统 |
US8527544B1 (en) | 2011-08-11 | 2013-09-03 | Pure Storage Inc. | Garbage collection in a storage system |
KR20130048594A (ko) | 2011-11-02 | 2013-05-10 | 삼성전자주식회사 | 지연 요소를 고려한 분산 스토리지 시스템, 분산 스토리지 관리 장치 및 방법 |
KR20130075018A (ko) * | 2011-12-27 | 2013-07-05 | 한국전자통신연구원 | 플래시 메모리 파일 시스템에 적용 가능한 데이터 업데이트 장치 및 방법 |
US20130290601A1 (en) | 2012-04-26 | 2013-10-31 | Lsi Corporation | Linux i/o scheduler for solid-state drives |
US8898376B2 (en) | 2012-06-04 | 2014-11-25 | Fusion-Io, Inc. | Apparatus, system, and method for grouping data stored on an array of solid-state storage elements |
US8799561B2 (en) | 2012-07-27 | 2014-08-05 | International Business Machines Corporation | Valid page threshold based garbage collection for solid state drive |
US9223693B2 (en) | 2012-12-31 | 2015-12-29 | Sandisk Technologies Inc. | Memory system having an unequal number of memory die on different control channels |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US9372642B2 (en) * | 2013-07-22 | 2016-06-21 | International Business Machines Corporation | RAID 10 reads optimized for solid state drives |
CN103914392B (zh) * | 2014-04-03 | 2017-05-03 | 深圳市硅格半导体有限公司 | 闪存的空块回收方法及装置 |
US9383926B2 (en) | 2014-05-27 | 2016-07-05 | Kabushiki Kaisha Toshiba | Host-controlled garbage collection |
KR20150139112A (ko) * | 2014-06-02 | 2015-12-11 | 삼성전자주식회사 | 가비지 컬렉션 유닛을 포함하는 메모리 시스템 및 동작 방법 |
US9525737B2 (en) * | 2015-04-14 | 2016-12-20 | E8 Storage Systems Ltd. | Lockless distributed redundant storage and NVRAM cache in a highly-distributed shared topology with direct memory access capable interconnect |
CN105373487B (zh) * | 2015-12-16 | 2018-06-08 | 浪潮(北京)电子信息产业有限公司 | 一种存储操作系统的碎片整理方法及系统 |
-
2016
- 2016-05-10 US US15/151,470 patent/US10409719B2/en active Active
- 2016-11-29 KR KR1020160160770A patent/KR20170108788A/ko not_active Application Discontinuation
- 2016-12-12 TW TW105140964A patent/TWI682277B/zh active
-
2017
- 2017-02-10 JP JP2017023269A patent/JP6847694B2/ja active Active
- 2017-03-13 CN CN201710149320.7A patent/CN107203337B/zh active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12066934B2 (en) | 2017-12-11 | 2024-08-20 | SK Hynix Inc. | Apparatus and method for operating garbage collection using host idle |
KR20200015274A (ko) * | 2018-08-03 | 2020-02-12 | 삼성전자주식회사 | 호스트의 지시 없이 능동적으로 유지보수 동작을 개시하는 스토리지 장치 및 그것을 포함하는 전자 시스템 |
US11733883B2 (en) | 2018-08-03 | 2023-08-22 | Samsung Electronics Co., Ltd. | Storage device initiating maintenance operation actively without instruction of host and electronic system including the same |
Also Published As
Publication number | Publication date |
---|---|
CN107203337A (zh) | 2017-09-26 |
TWI682277B (zh) | 2020-01-11 |
TW201734804A (zh) | 2017-10-01 |
US20170270042A1 (en) | 2017-09-21 |
JP6847694B2 (ja) | 2021-03-24 |
US10409719B2 (en) | 2019-09-10 |
JP2017168088A (ja) | 2017-09-21 |
CN107203337B (zh) | 2021-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20170108788A (ko) | 사용자 구성가능한 수동 배경 동작 | |
KR102403489B1 (ko) | 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법 | |
EP3436922B1 (en) | Methods and apparatus to perform erase-suspend operations in memory devices | |
KR101629879B1 (ko) | 캐시 사용 기반 어댑티브 스케줄링을 가지는 멀티코어 컴퓨터 시스템 | |
US9569352B2 (en) | Storage module and method for regulating garbage collection operations based on write activity of a host | |
US10268420B2 (en) | System and method for consistent performance in a storage device | |
CN106293623B (zh) | 微指令序列执行方法及其装置 | |
JP2012524952A (ja) | 不揮発性メモリに対するキャッシングポリシーを実施する方法および装置 | |
WO2014150607A1 (en) | Dynamic congestion control | |
JP2017168088A5 (ko) | ||
KR20180115614A (ko) | Ssd의 백그라운드 동작들을 위한 기회 윈도우 힌트들 | |
WO2015039352A1 (zh) | 缓存数据的方法和存储系统 | |
CN110226158A (zh) | 一种数据预取方法、装置和存储设备 | |
JP2005115600A (ja) | 情報処理装置及び方法 | |
CN110601872A (zh) | 一种传输方法及装置、存储介质 | |
CN110709810B (zh) | 一种垃圾数据清理方法及设备 | |
US20070156930A1 (en) | Method for controlling data transmission and related device | |
JP2016045563A (ja) | Nandバックグラウンド処理制御装置 | |
KR102264544B1 (ko) | 데이터 생성 또는 소비에 기반하여 캐시된 입출력 데이터를 필터링하는 방법 | |
CN105518617B (zh) | 缓存数据的处理方法及装置 | |
CN107239376B (zh) | 一种服务器互联芯片的自动化调试方法及装置 | |
US9965183B2 (en) | Method for processing data in storage device and storage device | |
CN108345428B (zh) | 控制密集型控制系统及其方法 | |
TW202009698A (zh) | 操作頻率調整方法及電腦程式產品及裝置 | |
CN117492662B (zh) | 预读取的确定方法和装置、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal |