KR20120058506A - 데이터 전송 관리 - Google Patents
데이터 전송 관리 Download PDFInfo
- Publication number
- KR20120058506A KR20120058506A KR1020127002058A KR20127002058A KR20120058506A KR 20120058506 A KR20120058506 A KR 20120058506A KR 1020127002058 A KR1020127002058 A KR 1020127002058A KR 20127002058 A KR20127002058 A KR 20127002058A KR 20120058506 A KR20120058506 A KR 20120058506A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- data transmission
- characteristic
- value
- data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
- Hardware Redundancy (AREA)
- Facsimiles In General (AREA)
Abstract
솔리드 스테이트 드라이브들(SSDs; solid state drives)에서와 같이 데이터 전송을 관리하는 방법들, 컨트롤러들, 및 시스템들이 개시된다. 일 실시예들에서, 호스트와 메모리 사이의 데이터 전송이 모니터링된 후 평가되어 평가 결과를 제공한다. 다른 데이터 전송을 서비스하기 위해 할당된 메모리 저장 유닛들의 개수가 평가 결과를 근거로 조정된다. 또한 추가적인 방법들과 시스템들이 설명된다.
Description
관련출원
본 특허출원은 2009년 7월 6일자로 출원된 미국특허 출원 제12/498,151호로부터 우선권 혜택을 주장하며, 그 내용은 본 명세서에 참조로서 포함되어 있다.
보통 전자 장치는 대용량 기억장치와 같이 그들에 이용 가능한 어떤 메모리 시스템 타입을 갖는다. 공통적인 예는 하드 디스크 드라이브(HDD)이다. 현재 1 테라바이트 용량 이상으로 현재 소비자가 사용하고 있는 HDD들로서, HDD 들은 상대적으로 낮은 비용으로 많은 양을 기억할 수 있다. HDD들은 일반적으로 회전하는 자기 매체 혹은 플래터(platter)들 상에 데이터를 저장한다. 실제로, 최종 데이터 신호는 아날로그 신호인데, 이 아날로그 신호의 최고점과 최저점은 데이터 패턴의 자속 반전의 결과이다.
HDD들은 그들의 기계적 속성에 기인하여 특정 결함들을 갖는다. HDD들은 충격, 진동 혹은 강한 자기장에 기인한 손상 혹은 과도한 판독/기입 에러들이 발생하기 쉽다. 또한, 그것들은 휴대 전자 장치에서 상대적으로 큰 전력 유저들이다. 대용량 기억장치의 다른 예는 솔리드 스테이트 드라이브(SSD)이다. 회전 매체 상에 데이터를 저장하는 대신에, SSD들은 반도체 메모리 장치를 이용하여 그들의 데이터를 저장하지만, 흔히 인터페이스 및 폼 팩터(form factor)를 포함하므로, 그들의 호스트 시스템에 자신이 마치 전형적인 HDD 인 것처럼 보이도록 한다. SSD들의 메모리 장치들은 전형적으로 비휘발성 플래시 메모리 장치들을 포함할 수 있다.
개시된 기술의 일부 실시예들이 일 예로서 서술되었고 아래의 첨부 도면들에 제한되지는 않는다:
도 1은 본 발명의 다양한 실시예들에 따른, 솔리드 스테이트 드라이브(SSD)에 데이터 기입을 관리하는 시스템을 도시한 도면;
도 2는 본 발명의 다양한 실시예들에 따른, 데이터 기입들을 관리하도록 구성된 SSD를 도시한 도면;
도 3은 본 발명의 다양한 실시예들에 따른, 데이터 기입들을 관리하기 위해 SSD 컨트롤러의 모듈을 도시한 도면;
도 4는 본 발명의 다양한 실시예들에 따른, SSD에 데이터 기입을 관리하는 것과 관련된 일부 변수의 리스트를 나타낸 표;
도 5는 본 발명의 다양한 실시예들에 따른, 도 4에 도시된 표의 변수들의 변화를 도시하고 있는 그래프;
도 6은 본 발명의 다양한 실시예들에 따른, SSD 데이터 기입 관리를 위한 알고리즘의 구현을 도시한 상태도;
도 7은 본 발명의 다양한 실시예들에 따른, SSD 데이터 기입 관리의 방법을 도시한 흐름도; 및
도 8은 본 발명의 다양한 실시예들에 따른, SSD 데이터 기입을 관리하는 예시적인 시스템을 도시한 도면이다.
도 1은 본 발명의 다양한 실시예들에 따른, 솔리드 스테이트 드라이브(SSD)에 데이터 기입을 관리하는 시스템을 도시한 도면;
도 2는 본 발명의 다양한 실시예들에 따른, 데이터 기입들을 관리하도록 구성된 SSD를 도시한 도면;
도 3은 본 발명의 다양한 실시예들에 따른, 데이터 기입들을 관리하기 위해 SSD 컨트롤러의 모듈을 도시한 도면;
도 4는 본 발명의 다양한 실시예들에 따른, SSD에 데이터 기입을 관리하는 것과 관련된 일부 변수의 리스트를 나타낸 표;
도 5는 본 발명의 다양한 실시예들에 따른, 도 4에 도시된 표의 변수들의 변화를 도시하고 있는 그래프;
도 6은 본 발명의 다양한 실시예들에 따른, SSD 데이터 기입 관리를 위한 알고리즘의 구현을 도시한 상태도;
도 7은 본 발명의 다양한 실시예들에 따른, SSD 데이터 기입 관리의 방법을 도시한 흐름도; 및
도 8은 본 발명의 다양한 실시예들에 따른, SSD 데이터 기입을 관리하는 예시적인 시스템을 도시한 도면이다.
데이터 전송을 관리하는 예시적인 방법들과 시스템들이 설명될 것이다. 설명을 목적으로 하는 다음의 설명에서, 예시적인 특정한 상세한 설명을 갖는 수 많은 예들이 예시적인 실시예들을 이해하도록 제공된다. 그러나, 본 예들이 예시적인 특정 설명 없이 및/또는 여기에 설명된 상세한 설명과 다른 조합에 의해 실시될 수 있음은 당업자에게 명백할 것이다.
여기에 설명된 일부 실시예들은 호스트와 메모리와의 사이에서의 데이터 전송(예를 들어, 데이터 기입)을 모니터링하는 것을 포함한다. 데이터 전송 프로파일이 평가될 수 있고 평가 결과가 제공될 수 있다. 장래 데이터 전송은 평가 결과를 근거로 조정될 수 있다. 이 문서의 목적을 위해서, 데이터 전송 프로파일은, 예를 들어, 아래에 더욱 상세히 설명될, 데이터 전송 크기 (예를 들어, 전송된 바이트 수), 기입 증폭값, 및 기입 대역폭과 관련된 하나 이상의 값을 포함한다.
도 1은 본 발명의 다양한 실시예들에 따른, 솔리드 스테이트 드라이브(SSD, 110)에 데이터 기입을 관리하는 시스템(100)을 도시한 도면이다. 상기 시스템(100)은 프로세서(120)와 같은 메모리 액세스 장치와 통신하는 SSD(110)를 포함할 수 있다. 시스템(100)은 예를 들어 프로세서(120)를 통해 SSD(110)의 동작을 제어한다는 점에서 SSD(110)의 호스트 시스템으로 간주될 수 있다. 시스템(100)은 SSD(110)를 액세스하기 위해 하나 이상의 애플리케이션들(호스트 애플리케이션들)을 채용할 수 있다. 시스템(100)의 일부 예들은 개인용 컴퓨터들, 랩탑 컴퓨터들, 개인용 휴대정보 단말기(PDA)들, 디지털 카메라들, 전자 게임기들, 디지털 매체 재생기들/녹음기들 등을 포함할 수 있다.
프로세서(120)는 디스크 드라이브 제어기 또는 기타 외부 프로세서를 포함할 수 있다. 프로세서(120)는 통신 버스(130)를 매개로 하여 SSD(110)와 통신할 수 있다. 통신 버스(130)는 공지된 프로토콜을 채용하여 프로세서(120)를 SSD(110)에 접속시킨다. 통신 버스(130)의 유형은 시스템(100)에서 이용되는 드라이브 인터페이스의 유형에 좌우할 것이다. 일부 종래의 디스크 드라이브 인터페이스 버스 프로토콜들의 예들로서, IDE(Integrated Drive Electronics), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), 파이버 채널(Fiber Channel) 및 SCSI(Small Computer System Interface) 등이 있다. 기타 드라이브 인터페이스들이 존재하며 당업계에 공지되어 있다. SSD(110)의 메모리 장치들은 비휘발성 플래시 메모리 장치들을 포함할 수 있다. 이하 데이터 기입 관리와 관련한 SSD(110)의 특징이 보다 상세히 설명될 것이다.
도 2는 본 발명의 다양한 실시예들에 따른, 데이터 기입을 관리하도록 구성된 SSD(110)를 도시한 도면이다. SSD(110)는 통신 버스(130)(도 1)를 매개로 호스트(예를 들어, 도 1의 프로세서(120) 혹은 호스트 애플리케이션)와 통신할 수 있도록 하는 인터페이스(230)와 결합된 컨트롤러(210)를 포함할 수 있다. 인터페이스(230)는 당업자들에게 통상적으로 공지되어 있는 많은 커넥터들 중의 하나일 수 있다. 이러한 인터페이스(230) 커넥터들의 일부 예들은 IDE, 강화된 IDE, ATA, SATA, 및 PCMCIA(Personal Computer Memory Card International Association) 커넥터들을 포함할 수 있다.
SSD(110)에서 메모리는 플래시 메모리 장치와 같은 하나 이상의 메모리 장치를 각각 포함하는 복수의 저장 유닛들(220)로 구성될 수 있다. 메모리 장치에서 메모리 위치는 블록으로 그룹화될 수 있다. 플래시 메모리 장치들에서, 128 킬로바이트(KB), 256KB, 및 512KB의 저장 용량을 갖는 블록들이 일반적이다. 플래시 메모리 장치들이 현재 데이터 판독/기입 동작을 위해 어드레싱되었다는 것을 호스트는 알지 못할 수 있다. 다시말해, 호스트는 실제 데이터 전송(예를 들어, 판독 혹은 기입)에서 액세스되는 임의의 PBA(physical block address)를 알지 못한다. 호스트는 단지 PBA로 변환된 LBA(logical block address)를 처리한다. LBA에서 PBA로의 이러한 변환은, SSD(110)가 논리적 어드레스를 명시하는 데이터 전송 요청을 수신한 후에, SSD(110) 내에서 일어날 수 있다.
플래시 메모리 장치에서, 새로운 데이터를 기입하기 전에, 메모리 블록은 새로운 데이터 방을 만들기 위해 소거된다. 예를 들어, 호스트가 단지 4KB의 데이터 기입을 요청하는 경우에, 메모리 블록(예를 들어, 128KB)은 4KB 데이터를 수용하기 위해 소거될 것이다. 만일 128KB의 저장 용량을 각각 갖는 블록들을 각각 포함하는 2개 저장 유닛들이 요청을 서비스하기 위해 할당된다면, 두 개 블록들(2개 할당된 저장 유닛들 중 각각의 하나)은 4KB 데이터를 수용하기 위해 소거될 것이다.
소거 시간은 플래시 메모리 장치들의 액세스 시간을 느리게 함에 있어 주요 팩터일 수 있다. 종래 메모리 장치에 있어서, 데이터는 유한 횟수로 플래시 메모리 내 메모리 위치에 기입될 수 있다. 비록 허용 기입 횟수가 크다(일반적으로 10,100 내지 100,000)하더라도, 동일 장소에 반복해서 기입하는 것은 그 장소를 마모시킬 수 있다. 그러므로, 마모 정도를 비슷하게 하기 위해 허용 가능한 메모리 장소에 데이터 기입을 골고루 나누는 것이 바람직하다. 웨어 레벨링(wear leveling)은 컨트롤러(210)(또한 SSD 컨트롤러라 불림)가 관리 책임 있는 임무 중 하나로 여겨진다.
SSD(110)내 다수의 위치에 저장되고 호스트(120)로부터 숨겨진 데이터로서, 기입 및 SSD(110)로부터 데이터를 검색하기 위해 상당히 많은 동작이 수행될 수 있다. 데이터가 점점 단편화됨에 따라, 데이터를 적절히 기입하기에 충분한 크기의 메모리 블록들은 부족하게 될 수 있다. 이때, 데이터 재생(data reclamation) (당업자들은 "garbage collection(가비지 컬렉션)"이라 칭하기도 함)절차들이 메모리의 블록들을 재활용하도록 사용되어 SSD(110)에 추가적으로 기입할 수 있게 한다. 데이터가 SSD(110)내에서 물리적으로 이동되면 될수록, 드라이브는 프로그램 소거 사이클에 기인하여 더 빠르게 마모될 수 있다.
예시적 실시예에 있어서, 호스트 전송 요청을 서비스하는 동안, 호스트가 컨트롤러(210)에 의해 고려되는 데이터 전송 대역폭(예를 들어, 최소 허용 가능한 기입 대역폭과 같은 기입 대역폭 혹은 판독 대역폭)을 지정할 수 있다. 용어 "데이터 전송 대역폭"은 일반적으로 초당 킬로비트(Kb/s) 혹은 초당 메가비트(Mb/s)로 표현되는 단위 시간당 전송된 데이터 양을 포함하도록 간주되어야 한다. 보다 큰 데이터 전송 대역폭은 데이터 전송 요청을 서비스하기 위해 많은 저장 유닛들(220)을 할당하여, 예를 들어 데이터 전송 요청을 서비스하기 위해 사용된 블록을 가질 수 있는 저장 유닛의 개수를 설정함으로써, 달성될 수 있다.
컨트롤러(210)에 대한 다른 관심 변수는 기입 증폭(WA)이다. 용어 "기입 증폭(write amplification)"은 예를 들어 데이터 기입 요청을 서비스하도록 할당된 메모리에 기입된 실제 데이터의 크기에 대한 데이터 기입을 서비스하도록 사용하기 위해 할당된 메모리의 크기 비율을 말한다. 예를 들어, SSD(110)에 4KB 데이터를 기입하여, 컨트롤러(210)가 저장 유닛 중 최소 이용 가능한 개수, 예를 들어 128KB를 저장할 수 있는 블록을 포함하는 메모리의 한 개 저장 유닛으로써 기입 동작을 서비스할 수 있다. 이 경우에, 심지어 기입 요청을 구성하는 4KB 실제 데이터만이 그 블록에 기입된다 하더라도, 하나 할당된 저장 유닛(220)의 128KB 데이터 블록에서의 메모리 위치들이 소거된다. 이에 의해, 기입 증폭(WA)은 128/4, 즉 32가 되는데, 이는 바람직하지 않을 수 있다.
낮은 WA 값으로 SSD(110)에 의해 동작하는 것은 SSD(110)에서 메모리 소자의 보다 효율적인 사용을 초래할 수 있다. 낮은 WA 값에서, 동시에 낮은 기입 대역폭에서 동작하는 것은 보다 골고루 분포된 웨어 레벨링을 또한 초래한다. 그러므로, SSD(110)는 호스트에 의해 지정된 기입 대역폭과 데이터 기입으로부터 기인한 WA와의 사이에서 트레이드 오프(tradeoff)에 직면할 수 있다.
SSD(110)는 이 트레이드 오프를 어드레싱하기 위해 구성될 수 있다. 예를 들어, SSD(110)는 컨트롤러(210)를 채용하여 이하에 설명된 실시예들을 근거로 저장 유닛들(220)의 할당을 조정하여 트레이드 오프를 어드레싱할 수 있다.
도 3은 본 발명의 다양한 실시예들에 따른, 데이터 기입들을 관리하기 위해 SSD 컨트롤러(210)의 모듈을 도시한 도면이다. 도 3에 도시된 SSD 컨트롤러(210)는, 예를 들면, 하나 이상의 마이크로프로세서들을 포함할 수 있다. SSD 컨트롤러(210)는 메모리(310), 모니터링 모듈(320), 평가 모듈(330) 및 조정 모듈(340)을 포함할 수 있다. 모니터링 모듈(320), 평가 모듈(330) 및 조정 모듈(340)은 도 2에 도시된 저장 유닛들(220) 혹은 메모리(310)에 저장된 소프트 모듈들을 포함할 수 있다. 예시적 실시예에서, 이러한 모듈들은 SSD 컨트롤러(210)에서 임베디드 하드웨어로서 구현될 수 있다.
모니터링 모듈(320)은 호스트(예를 들어, 도 1의 프로세서(120) 혹은 호스트 애플리케이션)와 도 2의 저장 유닛들(220)로 체계화된 메모리와 같은 메모리 사이의 데이터 전송을 모니터링하도록 동작할 수 있다. 예를 들면, 모니터링 모듈(320)은 데이터 전송 크기(예를 들어, 전송된 바이트 수), 기입 증폭(데이터 전송과 관련된 WA), 및 데이터 전송과 관련된 기입 대역폭(BW)과 같은 하나 이상의 데이터 전송 특성들을 모니터링하는 능력을 가질 수 있다. 예시적 실시예에 있어서, 재생 대역폭(예를 들면, 가비지 컬렉션 전용 프로세서 대역폭)과 판독 대역폭과 같은 기타 특성들이 또한 모니터링될 수 있다.
모니터링 모듈(320)은 메모리(310)에서 모니터링된 특성(들)과 관련된 하나 이상의 값을 저장할 수 있다. 메모리(310)는 하나 이상의 설정 레지스터(configuration resister)들의 형태로 사용되는 SRAM(static random access memory)을 포함할 수 있다. 예시적 실시예에 있어서, 모니터링 모듈(320)은 도 2의 저장 유닛들(220)로 체계화된 플래시 메모리 장치에 특성 값들을 저장할 수 있다. 저장된 특성 값들은 호스트와 관련될 수 있다.
예시적 실시예에 있어서, 평가 모듈(330)은 프로세서(예를 들면, 마이크로프로세서)를 포함할 수 있다. 일부 실시예에서, 모니터링 모듈(320) 및/또는 조정 모듈(340)은 동일한 프로세서를 또한 포함하는 것 같다. 메모리(310)로부터 일정기간 동안 저장된 특성 값들을 검색하기 위해 평가 모듈(330)이 동작할 수 있다. 평가 모듈(330)은 적어도 일부 특성 값들을 근거로 통계 값들을 결정할 수 있다. 예를 들면, 평가 모듈(330)은 일정기간 동안 저장된 기입 대역폭 혹은 WA의 평균 값을 결정할 수 있다. 평가 모듈(330)은 일정기간 동안 메모리 요청 크기의 평균 값을 결정할 수 있다.
평가 모듈(330)은 하나 이상의 특성 값들 및/또는 통계 값들(총괄하여 및/또는 개별적으로 "데이터 전송 프로파일"로 간주)과 하나 이상의 대상 값들을 비교할 수 있다. 평가 모듈(330)은 예를 들면 평균 WA와 대상 WA를 비교할 수 있고 결과를 조정 모듈(340)에 보고할 수 있다. 예시적 실시예에 있어서, 평가 모듈(330)은 특성 값(예를 들면, WA)이 이전 값에 대한 향상을 나타내는 것을 표시할 수 있다.
도 5에 관해서 아래에 더욱 상세히 설명되는 바와 같이, 장래 데이터 전송을 서비스하기 위해 할당된 저장 유닛들의 개수를 조정하기 위해 조정 모듈(340)은 두 개 이상의 특성 값들 및/또는 통계 값들 사이의 관계를 평가하는 알고리즘을 구현할 수 있다.
명세서의 범위를 벗어나지 않고 당업계에 공지된 SSD(210)내에서 추가 혹은 다른 모듈들이 구현될 수 있다. 그러나, 본 명세서는 그러한 추가 모듈 없이 이해될 수 있다.
도 4는 본 발명의 다양한 실시예들에 따른, 도 1의 SSD(110)에 데이터 기입을 관리하는 것과 관련된 일부 변수를 나타낸 표(400)이다. 표 400에서 변수들은 데이터 전송 요청을 서비스하기 위해 할당된 저장 유닛들(즉, LUs)의 개수, KB들 및 WA에서의 메모리 요청 크기이다. 칼럼 420은 호스트(예를 들면, 도 1에서 프로세서(120) 또는 호스트 애플리케이션)에 의해 행해진 다수의 기입 요청들의 크기를 열거한다. 도 2의 컨트롤러(210)는 데이터 기입을 위한 저장 유닛들의 개수를 할당하여 각각의 요청에 응답할 수 있다. 칼럼 430, 440, 450 및 460은 각각 데이터 기입 요청들에 있어서 2, 4, 6, 및 10개의 저장 유닛들의 할당으로부터 기인하는 대응 WA 값들(즉, 각 2, 4, 6, 및 10개의 LU들로부터의 한 개 블록)을 나타낸다. 표 400에서, 저장 유닛들의 각 블록은 128KB의 저장 용량을 갖는 것으로 가정될 수 있다. 다른 용량들이 사용될 수 있다. 표 400에서 데이터는 도 5에 도시된 그래프에서 또한 나타나게 된다.
도 5는 본 발명의 다양한 실시예들에 따른, 도 4에 도시된 표 400의 변수들의 변화를 도시하고 있는 그래프(500)이다. 그래프(500)는 데이터 기입 요청을 서비스하기 위해 할당된 저장 유닛들의 상이한 개수들에 대한 데이터 기입 요청 크기의 함수로서 WA의 변동을 도시한 것이다. 각각의 곡선 510, 520, 530 및 540에 대해 할당된 대응 개수가 그래프의 범례에 LU = 2, 4, 6 및 10으로서 도시되었다. 그래프(500)로부터 알 수 있는 바와 같이 일반적인 경향은 요청된 데이터 기입의 크기가 증가함에 따라 WA가 감소한다는 것이다. 작은 데이터 기입 요청 크기(예를 들면, 128 KB 미만)를 위해, 컨트롤러(210)는 단일 저장 유닛(단일 저장 유닛으로부터의 단일 블록이 요청을 서비스하기 위해 사용되는 경우)을 할당하는 것 이외의 어떤 옵션도 가질 수 없다. 그러나, 요청된 데이터 기입의 크기가 증가함에 따라, 컨트롤러(210)는 많은 옵션을 가질 수 있다.
예를 들면, 만일 요청된 데이터 기입의 크기가 512KB와 동일하다면, 도 2의 컨트롤러(210)는 4개 저장 유닛들을 할당할 수 있는데, 이 경우 기입 증폭은 1의 값에 이를 것이다. 만일 컨트롤러가 데이터 기입 요청에 대해 8개 저장 유닛을 할당하도록 선택한다면, 2의 기입 증폭을 달성할 수 있다. 각 저장 유닛에 대해 128KB의 추정 저장 용량으로써, 1-2의 희망하는 WA값들이 128KB 이상의 데이터 기입 요청 크기에서 발생하는 것으로 도시되었다.
도 6은 본 발명의 다양한 실시예들에 따른, SSD 데이터 기입 관리를 위한 알고리즘의 구현을 도시한 상태도(600)이다. 도 3의 조정 모듈(340)은 상태도(600)에 도시된 알고리즘을 구현할 수 있다. 상태도(600)는 상태들 간 다수의 상태 및 변환을 도시하고 있다. 상태들은 도 2의 컨트롤러(210)에 의해 데이터 기입과 관련된 BW 및 WA를 도 1의 SSD(110)에 기입하는 변수들에 의해 정의될 수 있다. 희망하는 상태(610)에서, 기입 대역폭은 BW0보다 큰 것으로 간주되고, 또한 희망하는 기입 증폭은 WA1보다 작은 것으로 간주된다. 기입 대역폭(BW0)에 대한 하한 혹은 WA에 대한 허용 범위(예를 들어, WA1과 WA2 사이)는 호스트에 의해 또한 규정될 수 있다. 예를 들어, 호스트의 유저는 70% 판독, 30% 기입 및 500 Mb/s의 최소 기입 BW와 같은 희망하는 기입 처리 대상을 지정할 수 있다. 유저는 SSD 컨트롤러(210)(예를 들어, 도 3의 메모리(310)로)에 대상 값들을 저장할 수 있다.
허용 가능한 상태(620)에서, 기입 대역폭은 BW0보다 크고 WA는 허용 범위 내(예를 들어, WA2 미만 및 WA1보다 큼)이다. 알고리즘의 목적은 모든 다른 상태들로부터 상기 희망하는 상태(610) 혹은 상기 허용 가능한 상태(620)로의 변환을 행하는 것이다. 예를 들어, 도 3의 조정 모듈(340)에 의해 고려된 초기 상태는 상태(630)로 간주될 수 있다. 이 상태에 진입하기 전에, 도 2의 컨트롤러(210)는 도 1의 SSD(110) 상에 N0 저장 유닛들을 데이터 기입 요청때까지 할당하여 데이터 기입 요청을 서비스하고 있다. 그러한 할당 결과는, 도 3의 모니터링 모듈(320)에 의해 모니터링되는 바와 같이, BW0보다 작은 기입 대역폭과 WA1보다 작은 WA이다. 이러한 시나리오를 근거로, 조정 모듈(340)은 상황을 조정할 수 있다.
조정 모듈(340)은 데이터 기입 요청때까지 많은 저장 유닛들을 할당하여 상황을 조정하고자 시도할 수 있다. 이에 의해 희망하는 상태(610), 허용 가능한 상태(620), 혹은 상태(640)와 같은 또 다른 상태로 변환이 일어난다. 상태(640)에서, WA는 허용 범위 이내이지만, 기입 대역폭은 BW0 미만이다. 기입 대역폭을 증가시키기 위해, 조정 모듈(340)은 더욱 많은 저장 유닛들을 할당하여 상황을 해결하고자 시도할 수 있다. 많은 저장 유닛들의 할당에 의해 희망하는 상태(610), 허용 가능한 상태(620), 혹은 상태(650)로 진입할 수 있다.
대역폭이 허용 값까지 증가하고 있지만, WA가 허용 범위 밖이기 때문에, 상태(650)는 충분한 개수보다 많은 저장 유닛들을 할당한 결과로 보인다. 상태에 의해 도 3의 조정 모듈(340)은, 상기 희망하는 상태(610) 혹은 상기 허용 가능한 상태(620) 중 어느 하나로 진입을 야기시킬 수 있는, 할당된 저장 유닛들의 개수를 줄일 수 있다. 기입 대역폭 혹은 기입 증폭 중 어느 하나도 상태(620)에 의해 규정된 허용 범위 이내에 있지 않기 때문에, 허용 불가능할 수 있는 상태(660)로 진입을 또한 야기할 수 있다. 따라서, 상태(660)로부터 다음 변환은 상태(650)로 되돌아가고 할당되는 저장 유닛들의 개수에 대한 다른 값(예를 들어, 이전 시험 값보다 큰 값)을 시도할 것이다.
예시적 실시예들에 있어서, 조정 모듈(340)은 도 3의 메모리(310)에서 각 변환후 저장 유닛 개수 및 모니터링 결과(예를 들면, 기입 BW 및 WA)에 행해진 조정과 같은 변환 정보를 저장할 수 있다. 조정 모듈(340)은 변환 정보를 이용하여 중간 상태를 피하고자 시도하고 그리고 도 6의 희망하는 혹은 허용 가능한 상태들(610 및 620) 각각으로 직접 변환하여 그 효율성을 개선할 수 있다. 희망하는 혹은 허용 가능한 상태들(510 및 520) 각각으로 변환하는 것이 불가능한 경우에, 조정 모듈(340)은 매우 큰 정도로 WA 값을 낮추고자 시도할 것이다.
도 7은 본 발명의 다양한 실시예들에 따른, SSD 데이터 기입 관리의 방법(700)을 도시한 흐름도이다. 동작(710)에서, 도 3의 모니터링 모듈(320)은 호스트와 도 1의 SSD(110)의 저장 유닛들(220)로 체계화된 메모리 사이 데이터 전송을 모니터링할 수 있다. 모니터링 모듈(320)은 일정 기간동안 데이터 전송을 모니터링할 수 있다. 시간 주기는 데이터 전송과 관련된 트래픽 양에 의존할 수 있다. 동작(720)에서 도 3의 평가 모듈(330)은 데이터 전송을 평가하여 평가 결과를 제공할 수 있다.
평가 결과는 WA, 데이터 전송 BW 및/또는 다수의 저장 유닛들을 포함하는 특성 값으로 이루어질 수 있다. 일부 예시적 실시예에 있어서, 특성 값은 재생 대역폭 및 판독 대역폭을 또한 혹은 대체하여 포함할 수 있다. 평가 모듈(330)은 특성 값의 평균값과 같은 모니터링된 특성 값, 예를 들어 일정 기간 동안의 평균 기입 증폭을 적어도 일부를 근거로 통계 값들을 결정할 수 있다.
특성 값들 및/또는 통계 값들의 적어도 하나가 호스트에 의해 규정된 하나 이상의 대상 값들을 만족하는지 여부를 나타내는 평가 결과를 평가 모듈(330)이 제공할 수 있다. 결정 블록(decision block, 730)에서, 만일 평가 결과가 만족스럽다면, 제어가 동작(710)으로 넘어간다. 이와는 달리, 동작(740)에서, 도 3의 조정 모듈(340)은, 예를 들어, 평가 결과를 근거로 데이터 전송의 특성을 조정하도록 사용될 수 있다. 알고리즘은, 상술한 바와 같이, 도 3의 조정 모듈(340)에 의해 구현될 수 있다. 예를 들어, 조정 모듈(340)은 기입 대역폭, 기입 증폭, 및 저장 유닛들의 개수와 같은 특성을 조정하도록 동작할 수 있다.
도 3의 조정 모듈(340)은 이 동작을 수행할 수 있다. 상술한 바와 같이, 조정 모듈(340)은 하나 이상의 데이터 전송 특성을 변경하거나 평가 결과를 근거로 특성을 변경하지 않고 유지하도록 동작할 수 있다. 예를 들어, 데이터 기입 요청을 서비스하도록 할당된 저장 유닛들의 개수가 적당한 경우(진입 상태가 각각 희망하는 혹은 허용 가능한 상태(610 또는 620) 중 하나일 때 결정된), 조정 모듈(340)은 할당된 저장 유닛들의 개수를 변경하지 않고 유지할 수 있다. 데이터 기입 요청에 할당된 저장 유닛들의 개수가, 예를 들어, BW0보다 작은 기입 BW에 의해 표시된 바와 같이, 부적절한 경우, 조정 모듈(340)은 기입 BW를 개선하기 위해 더 많은 저장 유닛들의 개수를 할당하여 상황에 대처할 수 있다.
도 8은 본 발명의 다양한 실시예들에 따른, SSD 데이터 기입을 관리하는 예시적인 시스템(800)을 도시한 도면이다. 시스템(800)은 프로세서(810), 메모리(820), 메모리 컨트롤러(830), 그래픽 컨트롤러(840), 입출력(I/O) 컨트롤러(850), 디스플레이(852), 키보드(854), 포인팅 디바이스(856) 및 주변 장치(858)를 포함할 수 있다. 버스(860)는 이러한 모든 장치들을 함께 연결한다. 클록 발생기(870)는 클록 신호를 버스(860)를 경유하여 시스템(800)의 적어도 하나의 장치에 제공한다. 일례로, 클록 발생기(870)는 마더보드와 같은 회로 기판에서 오실레이터를 포함할 수 있다. 시스템(800)에 도시된 2개 이상의 장치들은 단일 칩으로 형성될 수 있다.
메모리(820)는 SRAM(static random access memory), DRAM(dynamic RAM), 또는 플래시 메모리를 포함하는 비휘발성 메모리를 포함할 수 있다. 버스(860)는 회로 기판 상의 상호 연결 트레이스일 수 있거나 혹은 하나 이상의 케이블일 수 있다. 버스(860)는 전자기파, 예를 들어, 전파와 같은 무선 수단에 의해 시스템(800)의 장치들을 또한 결합할 수 있다. 주변 장치(858)는 프린터, 디스크 드라이브 유닛(예를 들어, CD-ROM과 DVD 리더기 및 라이터기와 같은 광학 장치, 플로피 디스크 드라이버와 같은 자기 장치 리더기 및 라이터기), 혹은 마이크로폰과 같은 오디오 장치를 포함할 수 있다.
도 8에 도시된 시스템(800)은 컴퓨터들(예를 들면, 데스크탑들, 랩탑들, 휴대용 컴퓨터들(hand-helds), 서버들, 웹 어플라이언스들, 라우터들, 등), 무선 통신 장치들(예를 들면, 이동 전화들, 무선 전화들, 페이저들, 개인 휴대 정보 단말기들, 등), 컴퓨터 관련 주변 장치들(예를 들면, 프린터들, 스캐너들, 모니터들, 등), 엔터테인먼트 장치들(예를 들면, 텔레비전들, 라디오들, 스테레오들, 테이프 및 콤팩트 디스크 플레이어들, 비디오 카세트 리코더/플레이어들, 캠코더들, 디지털 카메라들, MP3(Motion Picture Experts Group, Audio Layer 3)플레이어들/리코더들, 비디오 게임들, 시계들 등) 등을 포함할 수 있다.
예시적 실시예에 있어서, 주변 장치(858)는 여기에 설명된 하나 이상 임의의 방법 혹은 기능을 구현하는 한 세트 이상의 명령(예를 들어, 소프트웨어)이 저장된 기계 가독 매체(machine-readable medium)를 포함할 수 있다. 명령들은 컴퓨터 시스템(800)에 의해 실행 시 완전히 또는 최소한 부분적으로, 메모리(820) 및/또는 프로세서(810) 내에 또한 존재할 수 있으며, 또한 기계 가독 매체를 구성하는 메모리(820) 및 프로세서(810)를 구비한다.
기계 가독 매체가 예시적인 실시예에서 단일 매체인 것으로 도시되었지만, 용어 "기계 가독 매체"는 한 세트 이상의 명령을 저장하는 단일 매체 혹은 다중 매체(예를 들어, 집중화되거나 분산된 데이터베이스 및/또는 관련 캐쉬들 및 서버들)를 포함하도록 취급되어야 한다. 용어 "기계 가독 매체"는 기계에 의해 실행하기 위한 한 세트 명령을 저장, 인코딩 혹은 실행할 수 있고 본 발명의 하나 이상 임의의 방법을 기계가 실행하도록 하는 임의의 매체를 포함하는 것으로 또한 취급되어야 한다. 따라서, 용어 "기계 가독 매체"는 제한 없이 솔리드-스테이트 메모리와 광학 및 자기 매체를 포함하는 것으로 취급되어야 한다.
비록 SSD 데이터 기입 동작들을 관리하는 특정 방법 및 시스템이 설명되었지만, 이러한 실시예들을 통해 다양한 변형 및 변경이 이루어질 수 있다는 것은 명백할 것이다. 따라서, 본 명세서 및 도면은 제한적인 의미보다는 예시적인 의미로 간주해야 한다.
독자가 기술적 개시 내용의 특징을 신속하게 확인할 수 있도록 하는 요약서를 규정하는 37 C.F.R §1.72(b)에 부합하도록 요약서가 제공된다. 요약서는 특허청구범위의 범주 또는 의미를 해석하거나 제한하는데 사용되지 않는다는 이해와 함께 제출된다. 또한, 상술한 상세한 설명에서, 다양한 특징들이 명세서를 간소화할 목적으로 단일 실시예에 함께 그룹핑되었음을 알 수 있을 것이다. 명세서의 이러한 방법은 청구항을 제한하는 것으로 해석되어서는 아니된다. 그러므로, 다음의 청구항들은 상세한 설명에 통합되어, 각 청구항이 별개의 실시예로서 독립적이다.
Claims (30)
- 호스트와 메모리 사이에서 데이터 전송을 모니터링하는 단계;
평가 결과를 제공하기 위해 상기 데이터 전송을 평가하는 단계; 및
상기 평가 결과의 적어도 일부를 근거로 다른 데이터 전송을 조정하는 단계를 포함하는, 방법. - 청구항 1에 있어서, 상기 데이터 전송은,
상기 메모리에 기입하는 단계 혹은 상기 메모리로부터 판독하는 단계 중 적어도 하나를 포함하는, 방법. - 청구항 1에 있어서, 상기 호스트는 메모리 액세스 장치를 포함하고, 상기 메모리는 플래시 메모리를 포함하는 비휘발성 메모리를 포함하는, 방법.
- 청구항 1에 있어서, 상기 호스트는 데이터 전송 대역폭 및/또는 허용 가능한 기입 증폭 범위를 특정하는, 방법.
- 청구항 1에 있어서, 상기 데이터 전송을 평가하는 단계는,
상기 데이터 전송의 특성을 평가하는 단계로서, 상기 특성은 데이터 전송 크기, 기입 증폭, 기입 대역폭, 재생 대역폭(reclamation bandwidth), 또는 판독 대역폭 중 적어도 하나를 포함하는, 상기 평가하는 단계를 포함하는, 방법. - 청구항 1에 있어서,
일정 기간 동안 상기 평가 특성과 관련된 값을 저장하는 단계를 더 포함하고, 상기 일정 기간은 상기 데이터 전송과 관련된 트래픽 양에 의존하는, 방법. - 청구항 6에 있어서,
상기 특성과 관련된 상기 값의 적어도 일부를 근거로 통계 값을 결정하는 단계를 더 포함하는, 방법. - 청구항 7에 있어서, 상기 통계 값은 평균값을 포함하는, 방법.
- 청구항 8에 있어서, 상기 평가하는 단계는,
상기 특성 값 및/또는 상기 통계 값 중 적어도 하나를 대상 값과 비교하는 단계를 포함하는, 방법. - 청구항 9에 있어서, 상기 제공된 평가 결과는 상기 특성 값 및/또는 상기 통계 값 중 적어도 하나가 상기 대상 값을 만족하는지 여부를 나타내는, 방법.
- 청구항 5에 있어서, 상기 제공된 평가 결과는 상기 특성이 개선을 보여주는지 여부를 나타내는, 방법.
- 청구항 1에 있어서, 상기 조정 단계는,
상기 다른 데이터 전송의 특성을 조정하는 단계를 포함하는, 방법. - 청구항 12에 있어서, 다른 데이터 전송의 특성을 조정하는 단계는,
상기 다른 데이터 전송을 서비스하기 위해 할당된 저장 유닛들의 개수를 조정하는 단계를 포함하는, 방법. - 청구항 13에 있어서, 상기 다른 데이터 전송을 서비스하기 위해 할당된 상기 저장 유닛들의 개수를 조정하는 단계는,
상기 평가 결과들을 근거로 개수를 변경하는 단계 혹은 개수를 변경하지 않고 유지하는 단계 중 적어도 하나를 포함하는, 방법. - 호스트와 메모리 사이의 데이터 전송을 모니터링하는 모니터링 모듈;
평가 결과를 제공하기 위해 상기 데이터 전송을 평가하는 평가 모듈; 및
상기 평가 결과의 적어도 일부를 근거로 다른 데이터 전송을 조정하는 조정 모듈을 포함하는, 저장 장치 컨트롤러. - 청구항 15에 있어서, 상기 모니터링 모듈은 상기 데이터 전송의 특성을 모니터링하는 것으로, 상기 특성은 상기 데이터 전송의 크기, 기입 증폭, 기입 대역폭, 재생 대역폭(reclamation bandwidth), 및/또는 판독 대역폭 중 적어도 하나를 포함하는, 컨트롤러.
- 청구항 16에 있어서,
일정 기간 동안 상기 특성 값을 저장하는 메모리를 더 포함하고, 상기 일정 기간은 상기 데이터 전송과 관련된 트래픽 양에 의존하는, 컨트롤러. - 청구항 17에 있어서, 상기 평가 모듈은 상기 일정 기간 동안 저장된 상기 특성 값들을 검색하는, 컨트롤러.
- 청구항 15에 있어서, 상기 평가 모듈은,
하나 이상의 프로세서를 포함하는, 컨트롤러. - 청구항 17에 있어서, 상기 평가 모듈은 상기 특성 값들과 관련된 통계 값을 결정하는 것이고, 또한 상기 통계 값은 평균값을 포함하는, 컨트롤러.
- 청구항 20에 있어서, 상기 평가 모듈은 상기 특성 값 및/또는 상기 통계 값 중 적어도 하나를 대상 값과 비교하는, 컨트롤러.
- 청구항 21에 있어서, 상기 평가 모듈은 상기 특성 값 및/또는 상기 통계 값 중 적어도 하나가 상기 대상 값을 만족하는지 여부를 결정하는, 컨트롤러.
- 청구항 17에 있어서, 상기 평가 모듈은 상기 특성 값들 중 적어도 하나가 개선을 보여주는지 여부를 나타내는, 컨트롤러.
- 청구항 17에 있어서, 상기 조정 모듈은 상기 다른 데이터 전송을 서비스하기 위해 할당된 저장 유닛들의 개수를 조정하는, 컨트롤러.
- 청구항 24에 있어서, 상기 조정 모듈은 다수의 변환에서 저장 유닛들의 개수를 조정하여 상기 특성 값 및/또는 상기 통계 값에 대한 대상 값을 달성하고, 또한 변환 정보가 조정 효율을 개선하기 위해 메모리에 저장되어 사용되는, 컨트롤러.
- 청구항 24항에 있어서, 상기 저장 유닛은 메모리 블록을 포함하는, 컨트롤러.
- 메모리 액세스 장치; 및
상기 메모리 액세스 장치에 결합된 저장 장치를 포함하며,
상기 저장 장치는:
메모리;
상기 메모리 액세스 장치와 상기 메모리 사이의 데이터 전송을 모니터링하는 모니터링 모듈;
평가 결과를 제공하기 위해 상기 데이터 전송을 평가하는 평가 모듈; 및
상기 평가 결과의 적어도 일부를 근거로 다른 데이터 전송을 조정하는 조정 모듈을 포함하는, 시스템. - 청구항 27에 있어서, 상기 메모리는,
플래시 메모리를 포함하는 비휘발성 메모리를 포함하는, 시스템. - 하나 이상의 프로세서에 의해 실행될 때,
호스트와 메모리 사이의 데이터 전송을 모니터링하는 동작;
평가 결과를 제공하기 위해 상기 데이터 전송을 평가하는 동작; 및
상기 평가 결과의 적어도 일부를 근거로 다른 데이터 전송을 조정하는 동작을 수행하는, 기계 가독 매체 저장 명령들. - 호스트와 메모리 사이의 데이터 전송의 특성을 모니터링하는 단계로서, 상기 특성은 데이터 전송 크기, 기입 증폭, 기입 대역폭, 재생 대역폭(reclamation bandwidth), 및/또는 판독 대역폭 중 적어도 하나를 포함하는, 상기 모니터링하는 단계;
상기 모니터링된 특성 값 및/또는 상기 통계 값 중 적어도 하나를 대상 값과 상기 모니터링된 특성의 적어도 일부를 근거로 비교하는 단계; 및
상기 비교의 적어도 일부를 근거로 다른 데이터 전송에 할당된 상기 메모리의 저장 유닛들의 개수를 조정하는 단계를 포함하는, 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/498,151 | 2009-07-06 | ||
US12/498,151 US8291131B2 (en) | 2009-07-06 | 2009-07-06 | Data transfer management |
PCT/US2010/041070 WO2011005763A2 (en) | 2009-07-06 | 2010-07-06 | Data transfer management |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120058506A true KR20120058506A (ko) | 2012-06-07 |
KR101600467B1 KR101600467B1 (ko) | 2016-03-14 |
Family
ID=43413233
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020127002058A KR101600467B1 (ko) | 2009-07-06 | 2010-07-06 | 데이터 전송 관리 |
Country Status (7)
Country | Link |
---|---|
US (3) | US8291131B2 (ko) |
EP (1) | EP2452267B1 (ko) |
JP (1) | JP5758386B2 (ko) |
KR (1) | KR101600467B1 (ko) |
CN (1) | CN102473147B (ko) |
TW (1) | TWI485562B (ko) |
WO (1) | WO2011005763A2 (ko) |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7809900B2 (en) * | 2006-11-24 | 2010-10-05 | Sandforce, Inc. | System, method, and computer program product for delaying an operation that reduces a lifetime of memory |
US7747813B2 (en) * | 2006-11-24 | 2010-06-29 | Sandforce, Inc. | Multi-memory device system and method for managing a lifetime thereof |
US7904619B2 (en) | 2006-11-24 | 2011-03-08 | Sandforce, Inc. | System, method, and computer program product for reducing memory write operations using difference information |
KR20090087498A (ko) | 2006-12-06 | 2009-08-17 | 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) | 고-용량, 비-휘발성 스토리지를 위한 캐시로서의 솔리드-스테이트 스토리지 장치, 시스템 및 방법 |
US7903486B2 (en) | 2007-11-19 | 2011-03-08 | Sandforce, Inc. | System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory |
US8671258B2 (en) | 2009-03-27 | 2014-03-11 | Lsi Corporation | Storage system logical block address de-allocation management |
US20100250830A1 (en) * | 2009-03-27 | 2010-09-30 | Ross John Stenfort | System, method, and computer program product for hardening data stored on a solid state disk |
US20110004718A1 (en) | 2009-07-02 | 2011-01-06 | Ross John Stenfort | System, method, and computer program product for ordering a plurality of write commands associated with a storage device |
US9792074B2 (en) * | 2009-07-06 | 2017-10-17 | Seagate Technology Llc | System, method, and computer program product for interfacing one or more storage devices with a plurality of bridge chips |
US8291131B2 (en) | 2009-07-06 | 2012-10-16 | Micron Technology, Inc. | Data transfer management |
US8140712B2 (en) * | 2009-07-17 | 2012-03-20 | Sandforce, Inc. | System, method, and computer program product for inserting a gap in information sent from a drive to a host device |
US8516166B2 (en) * | 2009-07-20 | 2013-08-20 | Lsi Corporation | System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory |
US9223514B2 (en) | 2009-09-09 | 2015-12-29 | SanDisk Technologies, Inc. | Erase suspend/resume for memory |
WO2011031900A2 (en) | 2009-09-09 | 2011-03-17 | Fusion-Io, Inc. | Apparatus, system, and method for power reduction management in a storage device |
US8984216B2 (en) * | 2010-09-09 | 2015-03-17 | Fusion-Io, Llc | Apparatus, system, and method for managing lifetime of a storage device |
US9218278B2 (en) | 2010-12-13 | 2015-12-22 | SanDisk Technologies, Inc. | Auto-commit memory |
US9208071B2 (en) | 2010-12-13 | 2015-12-08 | SanDisk Technologies, Inc. | Apparatus, system, and method for accessing memory |
US10817421B2 (en) | 2010-12-13 | 2020-10-27 | Sandisk Technologies Llc | Persistent data structures |
US10817502B2 (en) | 2010-12-13 | 2020-10-27 | Sandisk Technologies Llc | Persistent memory management |
JP5917163B2 (ja) * | 2011-01-27 | 2016-05-11 | キヤノン株式会社 | 情報処理装置、その制御方法及びプログラム並びに記憶媒体 |
US8671249B2 (en) * | 2011-07-22 | 2014-03-11 | Fusion-Io, Inc. | Apparatus, system, and method for managing storage capacity recovery |
US8850153B2 (en) | 2011-09-30 | 2014-09-30 | International Business Machines Corporation | Enabling throttling on average write throughput for solid state storage devices |
US9329948B2 (en) | 2012-09-15 | 2016-05-03 | Seagate Technology Llc | Measuring cell damage for wear leveling in a non-volatile memory |
MX364783B (es) * | 2012-11-20 | 2019-05-07 | Thstyme Bermuda Ltd | Estructuras de unidades de estado sólido. |
US11037625B2 (en) * | 2012-11-20 | 2021-06-15 | Thstyme Bermuda Limited | Solid state drive architectures |
US9092146B2 (en) | 2013-06-28 | 2015-07-28 | International Business Machines Corporation | Dynamically varying transfer size in a storage device for improved performance |
US9348520B2 (en) | 2014-03-24 | 2016-05-24 | Western Digital Technologies, Inc. | Lifetime extension of non-volatile semiconductor memory for data storage device |
US9342255B2 (en) * | 2014-06-10 | 2016-05-17 | International Business Machines Corporation | Transfer size monitor, determination, and optimization engine for storage devices |
JP6691284B2 (ja) | 2014-08-11 | 2020-04-28 | 富士通株式会社 | 情報処理装置、ストレージシステムおよび通信制御プログラム |
US9678677B2 (en) * | 2014-12-09 | 2017-06-13 | Intel Corporation | Determining adjustments to the spare space in a storage device unavailable to a user based on a current consumption profile of a storage device |
US9569136B2 (en) | 2015-04-29 | 2017-02-14 | International Business Machines Corporation | Smart load balancing replication when adding or removing storage disks in a distributed storage system |
CN105487823B (zh) * | 2015-12-04 | 2018-06-05 | 华为技术有限公司 | 一种数据迁移的方法及装置 |
US10156999B2 (en) * | 2016-03-28 | 2018-12-18 | Seagate Technology Llc | Dynamic bandwidth reporting for solid-state drives |
CN107422995B (zh) * | 2017-08-08 | 2020-06-19 | 苏州浪潮智能科技有限公司 | 一种固态硬盘写带宽调整方法及装置 |
US10733114B2 (en) * | 2018-08-28 | 2020-08-04 | International Business Machines Corporation | Data cache performance |
US11573962B2 (en) * | 2018-10-19 | 2023-02-07 | Oracle International Corporation | Dynamic performance tuning based on implied data characteristics |
US11568179B2 (en) | 2018-10-19 | 2023-01-31 | Oracle International Corporation | Selecting an algorithm for analyzing a data set based on the distribution of the data set |
US11163485B2 (en) * | 2019-08-15 | 2021-11-02 | International Business Machines Corporation | Intelligently choosing transport channels across protocols by drive type |
KR20210074876A (ko) | 2019-12-12 | 2021-06-22 | 삼성전자주식회사 | 호스트 장치와 인터페이스를 수행하는 스토리지 장치 및 이의 동작 방법 |
CN114398303B (zh) * | 2022-01-19 | 2022-10-28 | 扬州万方科技股份有限公司 | 一种实现低延时的数据传输方法及系统 |
CN114691698B (zh) * | 2022-04-24 | 2022-11-08 | 山西中汇数智科技有限公司 | 一种计算机系统的数据处理系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008070173A1 (en) * | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for solid-state storage as cache for high-capacity, non-volatile storage |
US20080263259A1 (en) * | 2007-04-23 | 2008-10-23 | Microsoft Corporation | Hints model for optimization of storage devices connected to host and write optimization schema for storage devices |
US20090089492A1 (en) * | 2007-10-01 | 2009-04-02 | Tony Yoon | Flash memory controller |
KR20090046567A (ko) * | 2007-11-06 | 2009-05-11 | 삼성전자주식회사 | 반도체 디스크 및 그것의 동작 방법 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4841070B2 (ja) * | 2001-07-24 | 2011-12-21 | パナソニック株式会社 | 記憶装置 |
JP2005539303A (ja) * | 2002-09-12 | 2005-12-22 | コパン システムズ, インコーポレイテッド | 電力効率高容量なスケーラブルな記憶システムのための方法および装置 |
US7181578B1 (en) * | 2002-09-12 | 2007-02-20 | Copan Systems, Inc. | Method and apparatus for efficient scalable storage management |
JP2006195569A (ja) * | 2005-01-11 | 2006-07-27 | Sony Corp | 記憶装置 |
JP2006228138A (ja) * | 2005-02-21 | 2006-08-31 | Canon Inc | 半導体記憶装置、記憶制御方法および情報機器 |
JP4473175B2 (ja) * | 2005-05-13 | 2010-06-02 | 富士通株式会社 | 記憶制御方法、プログラム及び装置 |
TW200746161A (en) * | 2005-12-21 | 2007-12-16 | Nxp Bv | Power partitioning memory banks |
JP4932427B2 (ja) * | 2006-10-20 | 2012-05-16 | 株式会社日立製作所 | 記憶装置及び記憶方法 |
CN101174994A (zh) * | 2006-11-01 | 2008-05-07 | 英业达股份有限公司 | 网络卡测试系统及其方法 |
TW200823667A (en) * | 2006-11-24 | 2008-06-01 | Phison Electronics Corp | Single-serial-port-to-multiple-parallel-port high-speed data transmission device with SATA interface |
US8244995B2 (en) * | 2008-10-30 | 2012-08-14 | Dell Products L.P. | System and method for hierarchical wear leveling in storage devices |
EP2441004B8 (en) * | 2009-06-12 | 2020-02-19 | Violin Systems LLC | Memory system having persistent garbage collection |
US8291131B2 (en) | 2009-07-06 | 2012-10-16 | Micron Technology, Inc. | Data transfer management |
-
2009
- 2009-07-06 US US12/498,151 patent/US8291131B2/en active Active
-
2010
- 2010-07-06 CN CN201080030739.7A patent/CN102473147B/zh active Active
- 2010-07-06 WO PCT/US2010/041070 patent/WO2011005763A2/en active Application Filing
- 2010-07-06 TW TW099122194A patent/TWI485562B/zh active
- 2010-07-06 EP EP10797721.7A patent/EP2452267B1/en active Active
- 2010-07-06 KR KR1020127002058A patent/KR101600467B1/ko active IP Right Grant
- 2010-07-06 JP JP2012519670A patent/JP5758386B2/ja active Active
-
2012
- 2012-10-15 US US13/651,834 patent/US8706929B2/en active Active
-
2014
- 2014-04-04 US US14/245,083 patent/US9047273B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008070173A1 (en) * | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for solid-state storage as cache for high-capacity, non-volatile storage |
US20080263259A1 (en) * | 2007-04-23 | 2008-10-23 | Microsoft Corporation | Hints model for optimization of storage devices connected to host and write optimization schema for storage devices |
US20090089492A1 (en) * | 2007-10-01 | 2009-04-02 | Tony Yoon | Flash memory controller |
KR20090046567A (ko) * | 2007-11-06 | 2009-05-11 | 삼성전자주식회사 | 반도체 디스크 및 그것의 동작 방법 |
Also Published As
Publication number | Publication date |
---|---|
US8706929B2 (en) | 2014-04-22 |
TW201107979A (en) | 2011-03-01 |
CN102473147A (zh) | 2012-05-23 |
US20130042030A1 (en) | 2013-02-14 |
CN102473147B (zh) | 2015-07-22 |
KR101600467B1 (ko) | 2016-03-14 |
US20110004722A1 (en) | 2011-01-06 |
WO2011005763A3 (en) | 2011-04-14 |
US8291131B2 (en) | 2012-10-16 |
EP2452267B1 (en) | 2016-03-23 |
JP5758386B2 (ja) | 2015-08-05 |
US20140223069A1 (en) | 2014-08-07 |
EP2452267A2 (en) | 2012-05-16 |
JP2012532398A (ja) | 2012-12-13 |
EP2452267A4 (en) | 2013-07-17 |
WO2011005763A2 (en) | 2011-01-13 |
TWI485562B (zh) | 2015-05-21 |
US9047273B2 (en) | 2015-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101600467B1 (ko) | 데이터 전송 관리 | |
KR100923990B1 (ko) | 플래시 저장 장치의 특성을 기반으로 한 컴퓨팅 시스템 | |
US8949568B2 (en) | Memory storage device, and a related zone-based block management and mapping method | |
US8429352B2 (en) | Method and system for memory block flushing | |
US9460006B2 (en) | Nonvolatile memory system, system including the same, and method of adaptively adjusting user storage region in the same | |
US11513948B2 (en) | Controller and memory system | |
TWI432965B (zh) | 具有複數個結構之記憶體系統及其操作方法 | |
CN111506516A (zh) | 数据存储装置及数据存储装置的操作方法 | |
US20100217920A1 (en) | Memory system and address allocating method of flash translation layer thereof | |
US20220179785A1 (en) | Cache space management method and apparatus | |
KR102681181B1 (ko) | 메모리 시스템 및 그것의 동작방법 | |
KR20200121645A (ko) | 컨트롤러 및 그것의 동작 방법과 메모리 시스템 | |
US20150106573A1 (en) | Data processing system | |
US11537293B2 (en) | Wear leveling methods for zoned namespace solid state drive | |
KR20200115831A (ko) | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 | |
JP2012038212A (ja) | ストレージ装置及びその制御方法 | |
CN118901052A (zh) | 基于存储设备热负载的受控系统管理 | |
KR20230081505A (ko) | 메모리 컨트롤러 및 그의 동작 방법 | |
KR20190102998A (ko) | 컨트롤러, 데이터 저장 장치 및 그것의 동작 방법 | |
CN107807786B (zh) | 存储装置及其资料映射方法 | |
WO2024205973A2 (en) | Compression of logical-to-physical address indirection table on solid-state drives | |
TW202324112A (zh) | 用以動態管理儲存裝置中的主機讀取運作及讀取刷新運作的方法、儲存裝置及其記錄媒體 | |
KR20200114354A (ko) | 메모리 시스템 및 그것의 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
FPAY | Annual fee payment |
Payment date: 20190218 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20200218 Year of fee payment: 5 |