KR20100014884A - 복수의 이종의 솔리드 스테이트 저장 위치들의 선택적 이용 - Google Patents

복수의 이종의 솔리드 스테이트 저장 위치들의 선택적 이용 Download PDF

Info

Publication number
KR20100014884A
KR20100014884A KR1020097018161A KR20097018161A KR20100014884A KR 20100014884 A KR20100014884 A KR 20100014884A KR 1020097018161 A KR1020097018161 A KR 1020097018161A KR 20097018161 A KR20097018161 A KR 20097018161A KR 20100014884 A KR20100014884 A KR 20100014884A
Authority
KR
South Korea
Prior art keywords
solid state
state storage
storage locations
heterogeneous solid
heterogeneous
Prior art date
Application number
KR1020097018161A
Other languages
English (en)
Other versions
KR101482285B1 (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=39738794&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR20100014884(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20100014884A publication Critical patent/KR20100014884A/ko
Application granted granted Critical
Publication of KR101482285B1 publication Critical patent/KR101482285B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/0647Migration mechanisms
    • 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]

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 Hardware Design (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)

Abstract

복수의 이종의 솔리드 스테이트 저장 위치들(disparate solid state storage locations)을 선택적으로 이용하는 방법이 개시된다. 본 기술은 처음에 복수의 이종의 솔리드 스테이트 저장 위치들에 대한 클래스 유형들을 수신한다. 수신된 데이터의 특징들이 결정된다. 그 후 수신된 데이터는 그 수신된 데이터의 결정된 특징들에 기초하여 상기 복수의 이종의 솔리드 스테이트 위치들 중 하나에 할당된다.
솔리드 스테이트 드라이브(SSD), 저장 위치(storage location), 클래스 유형

Description

복수의 이종의 솔리드 스테이트 저장 위치들의 선택적 이용{SELECTIVELY UTILIZING A PLURALITY OF DISPARATE SOLID STATE STORAGE LOCATI0NS}
솔리드 스테이트 드라이브(SSD : solid state drive)는 데이터를 저장하기 위해 비휘발성 메모리를 이용하고, 종래의 하드 디스크 드라이브에서 발견되는 회전 원반(spinning platter)을 포함하지 않는 데이터 저장 장치이다. SSD는 움직이는 부분을 갖고 있지 않고 극도의 충격, 진동 및 온도 변화에 잘 견딜 수 있기 때문에, SSD는 종래의 하드 디스크 드라이브와 관련된 탐색 시간(seek time), 대기 시간(latency) 및 다른 전기-기계적 지연 및 실패를 제거한다. 이러한 속성들의 결과로, SSD는 노트북 PC 및 기업용 서브노트북(sub-notebook), 울트라-모바일(Ultra-Mobile) PC, 및 건강 관리 및 소비자 전자 부문의 태블릿(Tablet) PC와 같은 시장들에서 점점 더 인기를 얻고 있다.
그러나, SSD를 이용하는 것에 관한 현재의 기술 상태에는 많은 한계가 존재한다. 예를 들면, SSD의 저장 대비 비용의 비율(cost per storage ratio)은 여전히 원반 기반 하드 드라이브의 그것보다 상당히 높다.
또한, 종래의 하드 드라이브를 대체하기에 적절한 기입 속도를 갖는 64 기가바이트 이상의 큰 SSD를 제공하는 회사들은 소수만이 있다. 그러나, 이러한 드라이브들조차도 양(quantity)에서 제한되고, 매우 비싸고, 특별한 요청에 의해서만 입수가능하다. 따라서, SSD는 주류의 소비자 시장 밖에서 가격이 매겨지고 양에서 매우 제한된다.
<발명의 요약>
이 요약은 아래 상세한 설명에서 더 설명되는 개념들 중 선택된 것을 단순화된 형태로 소개하기 위해 제공된다. 이 요약은 청구된 주제의 중요한 특징들 또는 본질적인 특징들을 식별하기 위해 의도된 것도 아니고, 청구된 주제의 범위를 결정하는 데 도움되는 것으로서 이용되기 위해 의도된 것도 아니다.
복수의 이종의 솔리드 스테이트 저장 위치들(disparate solid state storage locations)을 선택적으로 이용하는 방법이 개시된다. 본 기술은 처음에 복수의 이종의 솔리드 스테이트 저장 위치들에 대한 클래스 유형을 수신한다. 수신 데이터의 특징들이 결정된다. 그 후 수신 데이터는 상기 결정된 특징들에 기초하여 상기 복수의 이종의 솔리드 스테이트 위치들 중 하나에 할당된다.
본 기술은 이종의 유형의 솔리드 스테이트 위치들의 집합체(aggregation)가 솔리드 스테이트 위치 메모리 유형에 대응하는 데이터를 수신하는 것을 가능케 하여, 결국 메모리의 저장 대비 비용의 비율을 낮춘다. 또한, 이종의 유형의 솔리드 스테이트 위치들을 통합하는 것은 SSD가 운영 체제를 지원하는 것을 가능케 한다. 또한, 본 기술은 사용되는 메모리 공간의 보다 낮은 저장 대비 비용 비율을 제공하도록 하는 방식으로 컴퓨터 상의 현존 파일들이 재배열되는 것을 가능케 한다. 따라서, 본 기술은 하드 디스크 드라이브를 SSD로 대체하는 것뿐만 아니라 메모리의 저장 대비 비용 비율의 감소를 가능케 한다.
이 명세서에 통합되어 이 명세서의 일부를 형성하는 첨부 도면들은 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 기술의 실시예들을 예시하고, 상세한 설명과 함께, 아래에서 논의되는 원리들을 설명하기 위해 이용된다.
도 1은 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 본 기술의 실시예에 따라 사용되는 예시적인 컴퓨터 시스템을 도시한 도면이다.
도 2A는 본 기술의 일 실시예에 따라 운영 체제와 관련된 메모리를 할당하는 예시적인 솔리드 스테이트 할당 모듈의 블록도이다.
도 2B는 본 기술의 일 실시예에 따라 운영 체제와 관련된 메모리를 할당하는 예시적인 솔리드 스테이트 할당 모듈의 블록도이다.
도 3은 본 기술의 일 실시예에 따라 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 예시적인 방법의 흐름도이다.
도 4는 본 기술의 일 실시예에 따라 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 예시적인 방법의 흐름도이다.
이 설명에서 참조되는 도면들은 구체적으로 지적된 경우를 제외하면 일정한 비례로 그려져 있는 않은 것으로 이해되어야 한다.
이제 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 본 기술의 실시예들에 대해 언급할 것이다. 그 예들은 첨부 도면들에 예시되어 있다. 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 기술은 다양한 실시예들에 관련하여 설명되겠지만, 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 본 기술을 이들 실시예로 제한하고자 하는 것이 아님을 이해할 것이다. 도리어, 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 본 기술은 첨부된 청구항들에 의해 정의되는 다양한 실시예들의 정신 및 범위 내에 포함될 수 있는 대안들, 수정들, 및 등가물들을 포함하도록 의도되어 있다.
또한, 다음의 상세한 설명에서는, 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 본 기술의 철저한 이해를 제공하기 위해 다수의 특정 상세들이 설명된다. 그러나, 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 본 기술은 이들 특정 상세들 없이도 실시될 수 있다. 그 밖의 경우에, 본 실시예들의 양태들을 불필요하게 모호하게 하지 않도록 잘 알려진 방법들, 절차들, 컴포넌트들, 및 회로들은 상세히 설명되지 않았다.
다음의 논의로부터 명백한 바와 같이 구체적으로 다르게 진술되지 않는 한, 본 상세한 설명의 전체에 걸쳐서, "수신(receiving)", "결정(determining)", "할당(allocating)", "에뮬레이트(emulating)" "지원(supporting)", "분류(categorizing)", "액세스(accessing)", "이동(moving)", "이용(utilizing)", "라우팅(routing)", "재배열(rearranging)" 등의 용어들을 이용한 논의들은 컴퓨터 시스템, 또는 유사한 전자 컴퓨팅 장치의 액션들 또는 프로세스들을 언급하는 것이 인정된다. 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 장치는 컴퓨터 시스템의 레지스터들 또는 메모리들 내의 물리적(전자적) 양으로서 표현되는 데이터를 조작하여 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 그러한 정보 저장, 전송, 또는 디스플레이 장치들 내의 물리적 양으로서 유사하게 표현되는 다른 데이터로 변환한다. 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 본 기술은 또한, 예를 들면, 광학 및 기계적 컴퓨터들과 같은 다른 컴퓨터 시스템들의 이용에도 잘 맞는다.
예시적인 컴퓨터 시스템 환경
이제 도 1을 참조하면, 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 기술의 부분들은, 예를 들면, 컴퓨터 시스템의 컴퓨터 사용가능한 매체 내에 존재하는 컴퓨터 판독가능하고 컴퓨터 실행가능한 명령들로 이루어진다. 즉, 도 1은 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 본 기술의, 아래에서 논의되는, 실시예들을 구현하기 위해 사용될 수 있는 컴퓨터의 유형의 일례를 예시한다.
도 1은 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 본 기술의 실시예들에 따라 사용되는 예시적인 컴퓨터 시스템(100)을 예시한다. 도 1의 시스템(100)은 예에 불과하고 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 본 기술은 범용 네트워크 컴퓨터 시스템, 임베드된(embedded) 컴퓨터 시스템, 라우터, 스위치, 서버 장치, 소비자 장치, 다양한 중간 장치/인공물, 독립 실행형 컴퓨터 시스템 등을 포함하는 다수의 상이한 컴퓨터 시스템들 상에서 또는 그 안에서 동작할 수 있다. 도 1에 도시된 바와 같이, 도 1의 컴퓨터 시스템(100)은, 예를 들면, 그것에 연결된 플로피 디스크, 콤팩트 디스크 등과 같은 주변 컴퓨터 판독가능한 매체(102)를 갖는 것에 잘 적응된다.
도 1의 시스템(100)은 정보를 통신하기 위한 주소/데이터 버스(104), 및 정보 및 명령들을 처리하기 위해 버스(104)에 연결된 프로세서(106A)를 포함한다. 도 1에 도시된 바와 같이, 시스템(100)은 복수의 프로세서들(106A, 106B, 및 106C)이 존재하는 멀티-프로세서 환경에도 잘 맞는다. 역으로, 시스템(100)은, 예를 들면, 프로세서(106A)와 같은 단일 프로세서를 갖는 것에도 잘 맞는다. 프로세서들(106A, 106B, 및 106C)은 임의의 다양한 유형의 마이크로프로세서들일 수 있다. 시스템(100)은 또한 프로세서들(106A, 106B, 및 106C)에 대한 정보 및 명령들을 저장하기 위해 버스(104)에 연결된 컴퓨터 사용가능한 휘발성 메모리(108), 예를 들면, RAM(random access memory)을 포함한다.
시스템(100)은 또한 프로세서들(106A, 106B, 및 106C)에 대한 정적인 정보 및 명령들을 저장하기 위해 버스(104)에 연결된 컴퓨터 사용가능한 비휘발성 메모리(110), 예를 들면, ROM(read only memory)을 포함한다. 또한 시스템(100)에는 정보 및 명령들을 저장하기 위해 버스(104)에 연결된 데이터 저장 유닛(112)(예를 들면, 자기 또는 광 디스크 및 디스크 드라이브)이 존재한다. 시스템(100)은 또한 정보 및 명령(command) 선택들을 프로세서(106A) 또는 프로세서들(106A, 106B, 및 106C)에 통신하기 위해 버스(104)에 연결된 영숫자 및 기능 키들을 포함하는 옵션의 영숫자 입력 장치(114)를 포함한다. 시스템(100)은 또한 사용자 입력 정보 및 명령 선택들을 프로세서(106A) 또는 프로세서들(106A, 106B, 및 106C)에 통신하기 위해 버스(104)에 연결된 옵션의 커서 제어 장치(116)를 포함한다. 본 실시예의 시스템(100)은 또한 정보를 디스플레이하기 위해 버스(104)에 연결된 옵션의 디스플레이 장치(118)를 포함한다.
여전히 도 1을 참조하여, 도 1의 옵션의 디스플레이 장치(118)는 사용자에게 인지가능한 그래픽 이미지들 및 영숫자 문자들을 생성하기에 적합한 액정 장치, CRT(cathode ray tube), 플라스마 디스플레이 장치 또는 다른 디스플레이 장치일 수 있다. 옵션의 커서 제어 장치(116)는 컴퓨터 사용자가 디스플레이 장치(118)의 디스플레이 화면 상의 가시적인 기호(커서)의 움직임을 동적으로 신호하도록 허용한다. 소정의 변위 방향 또는 방식의 움직임을 신호하는 것이 가능한 트랙볼, 마우스, 터치 패드, 조이스틱 또는 영숫자 입력 장치(114) 상의 특수 키들을 포함하는 많은 커서 제어 장치(116)의 구현들이 당업계에 알려져 있다. 대안적으로, 커서는 특수 키들 또는 키 시퀀스 명령들을 이용한 영숫자 입력 장치(114)로부터의 입력을 통하여 방향 지시(direct) 및/또는 활성화될 수 있다는 것이 인정될 것이다.
시스템(100)은, 예를 들면, 음성 명령과 같은 다른 수단에 의해 방향 지시되는 커서를 갖는 것에도 잘 맞는다. 시스템(100)은 또한 시스템(100)을 외부 엔티티들과 연결하기 위한 I/O 장치(120)를 포함한다. 예를 들면, 일 실시예에서, I/O 장치(120)는 시스템(100)과, 인터넷과 같은, 그러나 그것에 제한되지 않는, 외부 네트워크 사이의 유선 또는 무선 통신을 가능케 하기 위한 모뎀이다. 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 본 기술에 대한 보다 상세한 설명은 아래에서 발견된다.
여전히 도 1을 참조하면, 시스템(100)을 위한 다양한 다른 컴포넌트들이 도시되어 있다. 구체적으로, 운영 체제(122), 응용 프로그램들(124), 모듈들(126), 및 데이터(128)는, 존재하는 경우, 일반적으로 컴퓨터 사용가능한 휘발성 메모리(108), 예를 들면, RAM, 및 데이터 저장 유닛(112)의 하나의 또는 어떤 조합 내에 상주하는 것으로 도시되어 있다. 그러나, 일부 실시예들에서, 운영 체제(122)는 네트워크 상 또는 플래시 드라이브 상과 같은 다른 위치들에 저장될 수 있고, 또한, 운영 체제(122)는, 예를 들면, 인터넷에의 연결을 통하여 원격 위치로부터 액세스될 수 있다는 것이 인정된다. 일 실시예에서, 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 본 기술은, 예를 들면, RAM(108) 내의 메모리 위치들 및 데이터 저장 유닛(112) 내의 메모리 영역들에 응용 프로그램(124) 또는 모듈(126)로서 저장된다.
시스템(100)은 또한 운영 체제(122)에 연결된 솔리드 스테이트 할당 모듈(130)을 포함한다. 일 실시예에서, 솔리드 스테이트 할당 모듈(130)은 운영 체제(122) 내에 통합될 수 있지만, 다른 실시예에서는, 솔리드 스테이트 할당 모듈(130)은 운영 체제에 통신으로 연결되고 운영 체제의 외부에 있을 수 있다. 또 다른 실시예에서는, 솔리드 스테이트 할당 모듈(130)은 플래시 메모리 장치이다.
컴퓨팅 시스템(100)은 적합한 컴퓨팅 환경의 일례일 뿐이고 본 기술의 사용 또는 기능의 범위에 대해 어떤 제한도 암시하도록 의도되어 있지 않다. 컴퓨팅 환경(100)은 예시적인 운영 환경(100)에 예시된 컴포넌트들 중 임의의 하나 또는 그 컴포넌트들의 임의의 조합과 관련하여 어떤 의존성 또는 요구사항을 갖는 것으로 해석되어서도 안 된다.
본 기술은 일반적으로 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어와 관련하여 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 개체, 컴포넌트, 데이터 구조 등을 포함한다. 본 기술은 또한 통신 네트워크를 통해 연결되어 있는 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실시될 수도 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 로컬 및 원격 컴퓨터 저장 매체의 양쪽 모두에 위치할 수 있다.
개관
개관으로서, 일 실시예에서, 본 기술은 솔리드 스테이트 할당 모듈이 낮은 저장 대비 비용의 비율을 가능케 하도록, 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 방법을 제공한다. 예를 들면, 운영 체제는 각각의 이종의 솔리드 스테이트 저장 위치가 어떤 종류의 데이터를 유지하기를 선호하는지를 기술하는 클래스 유형을 솔리드 스테이트 할당 모듈의 클래스 유형 수신자(class type receiver)에 송신할 것이다. 운영 체제는 또한 입력/출력 동작들과 관련된 데이터를 솔리드 스테이트 할당 모듈의 수신 데이터 특징 결정자(received data characteristic determiner)에 송신할 것이다.
그 후 수신 데이터 특징 결정자는 수신 데이터가 어느 솔리드 스테이트 저장 위치에 속하는지를 결정할 것이다. 그 후 수신 데이터 특징 결정자는 이 결정을 솔리드 스테이트 할당 모듈의 이종의 솔리드 스테이트 저장 위치 할당자(disparate solid state location allocator)에 통신한다. 그 후 이종의 솔리드 스테이트 저장 위치 할당자는 수신 데이터 특징 결정자의 명령에 따라, 이종의 솔리드 스테이트 저장 위치들에 수신 데이터를 할당한다.
운영 체제는 일 실시예에서 솔리드 스테이트 할당 모듈에 통신으로 연결되지만, 다른 실시예는 솔리드 스테이트 할당 모듈이 운영 체제 내에 완전히 통합되도록 허용한다. 또한, 다른 실시예에서, 솔리드 스테이트 할당 모듈은 이종의 솔리드 스테이트 저장 위치들에 통신으로 연결되는 한편, 또한 이동식(removable) 스마트 카드와 같은 단일 유닛 내에 통합된다. 다른 실시예에서, 솔리드 스테이트 할당 모듈은 이종의 솔리드 스테이트 저장 위치들의 외부에 있고 통신으로 연결된다. 또한, 임베드된 이종의 솔리드 스테이트 저장 위치 할당자를 갖는 솔리드 스테이트 할당 모듈이 없는 경우에, 일 실시예에서 운영 체제가 유사한 기능들을 수행할 수 있다.
일 실시예에서, 솔리드 스테이트 저장 위치들은 하드 디스크 드라이브를 에뮬레이트(emulate)한다. 다른 실시예에서, 솔리드 스테이트 저장 위치들은 적어도 하나의 플래시 메모리 저장 위치를 포함한다.
요컨대, 본 기술의 실시예들은 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 컴퓨터 구현 방법을 제공하고, 이 방법은, 클래스 유형 수신자가 상기 복수의 이종의 솔리드 스테이트 저장 위치들 각각에 대한 클래스 유형들을 수신하는 단계, 수신 데이터 특징 결정자가 수신 데이터의 특징들을 결정하는 단계, 및 이종의 솔리드 스테이트 저장 위치 할당자가 상기 수신 데이터의 특징들에 기초하여 상기 복수의 이종의 솔리드 스테이트 저장 위치들 중 하나에 상기 수신 데이터를 할당하는 단계를 포함한다. 솔리드 스테이트 할당 모듈에 연결된 복수의 이종의 솔리드 스테이트 저장 위치들을 이용함으로써, 본 기술은 데이터의 낮은 저장 대비 비용의 비율을 가능케 한다.
아키텍처
이제 도 2A를 참조하면, 본 기술의 일 실시예에 따라 운영 체제와 관련된 메모리를 할당하는 예시적인 솔리드 스테이트 할당 모듈의 블록도가 도시되어 있다. 일반적으로, 운영 체제(200)와 관련된 메모리를 할당하는 솔리드 스테이트 할당 모듈은 클래스 유형 수신자(210), 수신 데이터 특징 결정자(220), 및 이종의 솔리드 스테이트 저장 위치 할당자(230)를 포함하고, 이들 모두는 솔리드 스테이트 저장 위치 A(240), 솔리드 스테이트 저장 위치 B(245), 솔리드 스테이트 저장 위치 C(250), 및 솔리드 스테이트 저장 위치 n...(255)에 통신으로 연결된다.
또한, 라인(205)은 운영 체제(200)로부터 클래스 유형 수신자(210)로 송신되는 데이터의 경로를 나타낸다. 라인(225)은 운영 체제(200)로부터 수신 데이터 특징 결정자(210)로 송신되는 데이터의 특징들을 기술하는 정보의 경로를 나타낸다. 라인(235)은 솔리드 스테이트 저장 위치 할당자(230)로부터 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...255)로 송신되는 데이터의 경로를 나타낸다. 또한, 경로들(205, 225, 및 235)은 다양한 컴포넌트들을 유선 또는 무선을 포함하는 다수의 방법으로 연결할 수 있다.
일 실시예에서, 클래스 유형 수신자(210)는 경로(205)를 따라서 복수의 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255)에 대한 클래스 유형들을 수신하도록 구성된다. 클래스 유형 수신자(210)는 각각의 솔리드 스테이트 저장 위치 A(240), B(245), C(250), 및 n...(255)가 어떤 종류의 데이터를 유지하는지를 기술하는 클래스 유형 데이터를 수신한다. 솔리드 스테이트 저장 위치 n...(255)는 솔리드 스테이트 저장 위치들 A(240), B(245), 및 C(250)의 것 외에도 소정의 수의 이종의 솔리드 스테이트 저장 위치들을 나타낸다.
예를 들면, 솔리드 스테이트 저장 위치 A(240)는 한 번 기입되고 드물게 판독되는 데이터를 유지하고, 솔리드 스테이트 저장 위치 B(245)는 드물게 기입되고 자주 판독되는 데이터를 유지하고, 솔리드 스테이트 저장 위치 C(250)는 자주 기입되고 자주 판독되는 데이터를 유지한다. 또한, 솔리드 스테이트 저장 위치 n...(255)는 2개의 여분의 솔리드 스테이트 저장 장치들, D 및 E의 것을 나타낸다. 솔리드 스테이트 저장 위치 D는 드물게 기입되고 드물게 판독되는 데이터를 유지하고, 솔리드 스테이트 저장 위치 E는 꽤 자주 기입되고 꽤 자주 판독되는 데이터를 유지한다. 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255)가 유지하는 데이터의 유형은 클래스 유형으로서 표현된다.
다른 예에서, 클래스 유형 수신자(210)는 단지 2개의 이종의 솔리드 스테이트 저장 위치들 A(240) 및 B(245)에 대한 클래스 유형을 수신하도록 구성된다. 솔리드 스테이트 저장 위치 A(240)는 한 번 기입되고 드물게 판독되는 데이터를 유지하고, 솔리드 스테이트 저장 위치 B(245)는 드물게 기입되고 드물게 판독되는 데이터를 유지한다. 솔리드 스테이트 저장 위치들 A(240) 및 B(245)가 유지하는 데이터의 유형은 클래스 유형으로서 표현된다.
또 다른 예에서, 클래스 유형 수신자(210)는 단지 3개의 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), 및 C(250)에 대한 클래스 유형을 수신하도록 구성된다. 솔리드 스테이트 저장 위치 A(240)는 한 번 기입되고 드물게 판독되는 데이터를 유지하고, 솔리드 스테이트 저장 위치 B(245)는 드물게 기입되고 자주 판독되는 데이터를 유지하고, 솔리드 스테이트 저장 위치 C(250)는 자주 기입되고 자주 판독되는 데이터를 유지한다. 솔리드 스테이트 저장 위치들 A(240), B(245), 및 C(250)가 유지하는 데이터의 유형은 클래스 유형으로서 표현된다.
일 실시예에서, 수신 데이터 특징 결정자(220)는 운영 체제(200)로부터 수신된 데이터의 특징들을 결정하도록 구성된다. 운영 체제(200)로부터 수신 데이터 특징 결정자(220)에 의해 수신된 데이터는 입력/출력 동작들의 유형과 관련된다. 예를 들면, 데이터는 입력/출력 동작들의 유형에 기초하여 다음의 클래스들로 분류될 수 있다: (1) 한 번 기입 및 기입 후 판독만; (2) 드물게 기입 및 자주 판독; (3) 자주 기입 및 자주 판독.
한 번 기입되고 기입 후 판독만 되는 데이터의 예들은 운영 체제 파일 및 응용 프로그램 이진 파일(application binary files)을 포함한다. 드물게 기입되고 자주 판독되는 데이터의 예들은 사용자 데이터, 설정(settings), 워드 파일, 데이터 스프레드시트, 및 주소록(address books)을 포함한다. 자주 기입되고 자주 판독되는 데이터의 예들은 운영 체제 페이지 파일, 운영 체제 파일, 레지스트리, 로그(logs), 및 캐시(caches)를 포함한다.
수신 데이터 특징 결정자(220)는 경로(225)를 따라서 입력/출력 동작들과 관련된 데이터의 가지각색의 유형의 조합들을 수신할 수 있다. 예를 들면, 일 실시예에서, 수신 데이터 특징 결정자(220)는 한 번 기입 및 기입 후 판독만, 및 자주 기입 및 자주 판독을 요구하는 입력/출력 동작들과 관련된 데이터를 수신한다. 다른 실시예에서, 수신 데이터 특징 결정자(220)는 드물게 기입 및 자주 판독, 및 자주 기입 및 자주 판독을 요구하는 입력/출력 동작들과 관련된 데이터를 수신한다.
예를 들면, 다음의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255) 중 적어도 2개에 대한 클래스 유형들 및 입력/출력 동작들과 관련된 데이터를 운영 체제(200)로부터 수신한 후에, 수신 데이터 특징 결정자(220)는 그 후 입력/출력 동작들과 관련된 수신 데이터를 어느 솔리드 스테이트 저장 위치 A(240), B(245), C(250), 및 n...(255)에 배치할지를 결정한다. 이러한 결정은 각 솔리드 스테이트 저장 위치의 클래스 유형에 상관하는 운영 체제(200)로부터의 수신 데이터에 기초한다. 그 후 수신 데이터 특징 결정자(220)는 이 결정을 이종의 솔리드 스테이트 저장 위치 할당자(230)에 통신한다.
일 실시예에서, 이종의 솔리드 스테이트 저장 위치 할당자(230)는 운영 체제(200)로부터 수신된 데이터를 그 수신 데이터의 특징들에 기초하여 복수의 이종의 솔리드 스테이트 저장 위치들 중 하나에 할당하도록 구성된다. 이종의 솔리드 스테이트 저장 위치 할당자(230)는 수신 데이터를 경로(225)를 따라 다음의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255) 중 적어도 2개에 송신한다.
본 기술에서는, 클래스 유형 수신자(210), 수신 데이터 특징 결정자(220) 및 이종의 솔리드 스테이트 저장 위치 할당자(230)가 하나의 모듈 내에 공동으로 나오게 하고, 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255)를 포함하는 개별 모듈에 통신으로 연결되게 하는 것이 가능하다. 또한, 본 기술의 다른 예는 클래스 유형 수신자(210), 수신 데이터 특징 결정자(220), 및 이종의 솔리드 스테이트 저장 위치 할당자(230)가 서로 통신으로 연결되지만 개별 모듈들에 존재하면서, 또한 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255)에 통신으로 연결되게 할 수 있다.
일 실시예에서, 이종의 솔리드 스테이트 저장 위치 할당자(230)는 수신 데이터를 다른 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255)에 더하여 플래시 메모리 저장 모듈에 할당한다. 또 다른 실시예에서, 이종의 솔리드 스테이트 저장 위치 할당자(230)는 수신 데이터를 하드 디스크 드라이버 에뮬레이터인 플래시 메모리 저장 모듈에 할당한다.
본 기술의 예에서, 솔리드 스테이트 할당 모듈(215)은 단일 저장 위치(260) 상에 조합되도록 하는 방식으로 솔리드 스테이트 저장 위치 A(240), B(245), C(250), 및 n...(255)에 통신으로 연결된다. 이 단일 저장 위치는 이동식 카드일 수 있다. 이 이동식 카드 내에 컴퓨터 칩이 통합된다. 이 컴퓨터 칩은 솔리드 스테이트 할당 모듈(215) 및 이종의 솔리드 스테이트 저장 위치 할당자(230)의 조합을 포함한다. 이 이동식 카드의 삽입은 사용자들이 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255)에 통신으로 연결된 솔리드 스테이트 할당 모듈(215)을 컴퓨터 장치에 삽입하는 것을 가능케 한다. 일단 이동식 카드가 삽입되면, 솔리드 스테이트 할당 모듈(215)은 컴퓨터 장치의 운영 체제(200)에 통신으로 연결되게 된다.
이제 도 2B를 참조하면, 본 기술의 일 실시예에 따라 운영 체제(200)와 관련된 메모리를 할당하는 예시적인 솔리드 스테이트 할당 모듈의 블록도가 도시되어 있다. 일반적으로, 운영 체제(200)와 관련된 메모리를 할당하는 솔리드 스테이트 할당 모듈은 클래스 유형 수신자(210), 수신 데이터 특징 결정자(220), 이종의 솔리드 스테이트 저장 위치 할당자(230), 솔리드 스테이트 저장 위치 A(240), 솔리드 스테이트 저장 위치 B(245), 솔리드 스테이트 저장 위치 C(250), 및 솔리드 스테이트 저장 위치 n...(255)를 포함한다.
또한, 라인(235)은 솔리드 스테이트 저장 위치 할당자(230)로부터 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255)로 송신되는 데이터의 경로를 나타낸다. 또한, 경로(235)는 이종의 솔리드 스테이트 저장 위치 할당자(230)를 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255)로 유선 또는 무선을 포함하는 다수의 방법으로 연결할 수 있다.
일 실시예에서, 솔리드 스테이트 할당 모듈(215)은 운영 체제(200) 내에 통합되지만, 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255)에 외부에서 통신으로 연결된다. 또한, 이종의 솔리드 스테이트 저장 위치 할당자(230)는 솔리드 스테이트 할당 모듈(220)에 구현되고 임베드되거나, 또는 운영 체제(200)의 일부로서 소프트웨어로 구현될 수 있다. 또한, 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255)은 운영 체제(200)에 외부에서 연결된다.
동작
이제 도 3을 참조하면, 본 기술의 일 실시예에 따라 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 예시적인 방법의 흐름도(300)가 도시되어 있다.
이제 도 3의 305 및 도 2A를 참조하면, 일 실시예는 복수의 이종의 솔리드 스테이트 저장 위치들 각각에 대한 클래스 유형을 수신한다. 본 명세서에서 설명한 바와 같이, 본 기술의 다른 실시예에서, 경로(205)를 따라 송신되는 클래스 유형은 클래스 유형 수신자(210)에 의해 수신된다. 일반적으로, 클래스 유형은 각 솔리드 스테이트 저장 위치 A(240), B(245), C(250), 및 n...(255)가 어떤 종류의 데이터를 유지하는지를 기술한다. 솔리드 스테이트 저장 위치 n...(255)는 솔리드 스테이트 저장 위치들 A(240), B(245), 및 C(250)의 것 외에도 소정의 수의 이종의 솔리드 스테이트 저장 위치들을 나타낸다.
본 기술의 일 실시예는 운영 체제(200)를 이용하여 클래스 유형들을 결정함으로써 복수의 이종의 솔리드 스테이트 저장 위치들에 대한 클래스 유형들을 수신한다(305). 운영 체제(200)는 솔리스 스테이트 할당 모듈(215)에 통신으로 연결되고 솔리드 스테이트 할당 모듈(215)의 외부에 있을 수 있고, 또는 솔리드 스테이트 할당 모듈(215)은 운영 체제(200) 내에 통합될 수 있다. 클래스 유형 수신자(210)는 그 후 복수의 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255) 각각에 대한 클래스 유형을 수신 데이터 특징 결정자(220)에 통신한다.
이제 도 3의 310 및 도 2A를 참조하면, 일 실시예는 수신 데이터의 특징들을 결정한다(310). 본 명세서에서 설명한 바와 같이, 본 기술의 다른 실시예에서, 수신 데이터의 특징들을 결정하는 것(310)은 입력/출력 동작들과 관련된 수신 데이터를 복수의 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255) 각각에 대한 클래스 유형에 대응하는 적어도 하나의 클래스로 분류하는 것을 포함한다. 입력/출력 동작들과 관련된 이 수신 데이터는 운영 체제(200)로부터, 경로(225)를 따라, 수신 데이터 특징 결정자(220)로 송신되었다. 또한, 수신 데이터 특징 결정자(220)가 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255)로의 수신 데이터의 할당을 결정한 후에, 수신 데이터 특징 결정자(220)는 이 결정을 이종의 솔리드 스테이트 저장 위치 할당자(230)에 통신한다.
본 기술의 다른 실시예에서, 수신 데이터의 특징들을 결정하는 것(310)은 데이터 중요성 특징(data importance characteristic)을 이용하는 것을 포함한다. 데이터 중요성 특징은 이 데이터를 유지하기 위해 어떤 유형의 메모리가 필요한지를 기술하는 데 도움되는 입력/출력 동작들과 관련된 데이터의 특징들(aspects)을 포함한다. 예를 들면, 운영 체제(200)는 입력/출력 동작들과 관련된 데이터를 경로(225)를 따라 수신 특징 결정자(220)에 송신할 것이다. 수신 데이터 결정자(220)는 그 후 그 데이터를 다음의 특징들에 따라 그룹들로 분류할 것이다: (1) 한 번 기입되고 기입 후에 판독만 되는 데이터; (2) 드물게 기입되고 자주 판독되는 데이터; 및 (3) 자주 기입되고 자주 판독되는 데이터. 수신 데이터 특징 결정자(220)는 그 후, 클래스 유형 수신자(210)로부터 수신된 솔리드 스테이트 저장 위치들의 클래스 유형들에 기초하여, 그룹으로 된 수신 데이터 각각이 어느 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255)에 송신될 것인지를 결정할 것이다.
예를 들면, 운영 체제(200)는 솔리드 스테이트 저장 위치 A(240)는 드물게 기입되고 자주 판독되는 데이터에 대한 저장 위치라는 정보를 클래스 유형 수신자(210)에 송신한다. 운영 체제(200)는 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255) 중 하나에 저장될 예정인, 입력/출력 동작들과 관련된 데이터를, 경로(225)를 통해 수신 데이터 특징 결정자(220)에 송신한다. 수신 데이터 특징 결정자(220)는 이들 입력/출력 동작들과 관련된 데이터의 유형을 결정한다. 수신 데이터 특징 결정자(220)는 다음으로 수신 데이터의 특정한 퍼센티지가 드물게 기입되고 자주 판독되는 데이터임을 결정한다. 데이터 특징 결정자(220)는 그 후 이 드물게 기입되고 자주 판독되는 수신 데이터는 솔리드 스테이트 저장 위치 A(240)에 할당되어야 한다고 결정한다. 그 이유는 이 저장 위치가 드물게 기입되고 자주 판독되는 데이터를 유지하도록 구성되어 있기 때문이다.
이제 도 3의 315 및 도 2A를 참조하면, 일 실시예는 수신 데이터 특징 결정자(220)에 의해 결정된 특징들에 기초하여 수신 데이터를 복수의 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255) 중 하나에 할당한다. 수신 데이터는 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255) 중 적어도 2개에 송신된다.
수신 데이터의 특징들에 기초하여 수신 데이터를 복수의 이종의 솔리드 스테이트 저장 위치들 중 하나에 할당하는 것(315)은, 수신 데이터 특징 결정자(220)가 복수의 이종의 솔리드 스테이트 저장 위치들 중 하나에 저장되어 있는 파일의 속성들에 액세스한 후에, 상기 파일의 속성들에 기초하여, 복수의 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255) 중 하나로부터 복수의 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255) 중 다른 하나로 파일을 이동시키는 것을 포함한다. 파일의 속성들은 파일이 컴퓨터의 사용 중에 얼마나 자주 액세스되었는지, 그 파일이 현대의 동작들(the present day operations)에 얼마나 중요한지, 그 파일의 사이즈뿐만 아니라, 입력/출력 동작들과 관련된 데이터와 같은 데이터를 포함한다.
일반적으로, 수신 데이터 특징 결정자(220)는 복수의 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255) 내에 저장된 데이터의 속성들을 모니터하는 능력을 갖는다. 만일 수신 데이터 특징 결정자(220)가 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255) 중 하나에 저장된 파일에 액세스하고, 그 파일의 속성들이 그 파일을 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255) 중 다른 하나에 이동되게 한다고 결정하면, 수신 데이터 특징 결정자(220)는 이 결정을 이종의 솔리드 스테이트 저장 위치 할당자(230)에 통신한다.
또한, 이종의 솔리드 스테이트 저장 위치 할당자(230)가 파일이 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255) 중 다른 하나에 이동될 필요가 있다는 통신을 수신 데이터 특징 결정자(220)로부터 수신한 후에, 이종의 솔리드 스테이트 저장 위치 할당자(230)는 그 후 이들 명령들을 따른다. 이종의 솔리드 스테이트 저장 위치 할당자(230)는 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255)에 도달하여 수신 데이터 특징 결정자(220)의 명령들에 따라 파일들을 재배열한다.
예를 들면, 어떤 데이터 파일이 6개월의 기간 동안 판독되지 않았다고 가정하자. 수신 데이터 특징 결정자(220)도 이 데이터 파일이 6개월의 기간 동안 판독되지 않았다는 것을 인지한다. 그 파일은 또한 마침 현재 드물게 기입되고 자주 판독되는 데이터를 수용하는 솔리드 스테이트 저장 위치에 존재하고 있다. 이 데이터 파일은 특정한 시간 기간 동안 더 이상 자주 판독되지 않으므로, 수신 데이터 특징 결정자(220)는 그 데이터 파일을 드물게 기입되고 드물게 판독되는 데이터를 수용하는 솔리드 스테이트 저장 위치 n...(255)에 배치함으로써 그 데이터 파일을 재배열하도록 이종의 솔리드 스테이트 저장 위치 할당자(230)에게 명령한다.
또한, 임베드된 결정자를 갖는 솔리드 스테이트 할당 모듈(215)이 없는 경우에, 일 실시예에서는 운영 체제(200)가 솔리드 스테이트 할당 모듈(215)과 유사한 기능들을 수행할 수 있다. 예를 들면, 운영 체제(200)에 2개보다 많은 수의 비휘발성 솔리드 스테이트 저장 위치 n...(255)가 부속되어 있다고 가정하자. 운영 체제(200)는 하드웨어 기반의 이종의 솔리드 스테이트 저장 위치 할당자(230)가 결정을 하는 것과 동일한 방식으로 데이터 블록들을 어느 솔리드 스테이트 저장 위치 n...(255)에 저장할지에 대한 결정을 할 수 있다.
다시 도 3 및 도 2A를 참조하면, 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 컴퓨터 구현 방법(300)의 다른 실시예에서, 복수의 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255)은 하드 디스크 드라이브를 에뮬레이트한다. 일 실시예에서는, 복수의 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255)은 하드 디스크 드라이브를 에뮬레이트하고 본질적으로 대체한다. 다른 실시예에서는, 복수의 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255)은 하드 디스크 드라이브의 일부를 에뮬레이트한다.
본 기술의 다른 예에서, 복수의 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255)은 운영 체제(200)를 지원한다. 솔리드 스테이트 할당 모듈(215)은 운영 체제(200)에 통신으로 연결된다. 다른 실시예에서, 솔리드 스테이트 할당 모듈(215)은 운영 체제(200) 내에 통합된다. 솔리드 스테이트 할당 모듈(215)은 또한 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255)에 통신으로 연결된다. 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255)은 운영 체제(200)를 위한 메모리 저장 공간으로서 역할을 한다.
다른 예에서, 운영 체제(200)를 지원하는 복수의 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255)은 적어도 하나의 플래시 메모리 저장 위치를 포함한다. 예를 들면, 복수의 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255) 중에서, 솔리드 스테이트 저장 위치 A(240)는 플래시 메모리 저장 위치인 반면, 솔리드 스테이트 저장 위치들 B(245), C(250), 및 n...(255)은 어떤 다른 유형의 솔리드 스테이트 저장 위치이다.
다른 예시적인 방법에서는, 복수의 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n .(255) 전부가 플래시 메모리 저장 위치들이다. 또한, 다른 예에서는, 복수의 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255) 중, 솔리드 스테이트 처장 위치들 A(240) 및 B(245)는 플래시 메모리 저장 위치들인 반면, 솔리드 스테이트 저장 위치들 C(250) 및 n...(255)은 어떤 다른 유형의 솔리드 스테이트 저장 위치이다.
이제 도 4를 참조하면, 본 기술의 일 실시예에 따라 컴퓨터 사용가능한 매체 상의 명령들 - 그 명령들은 실행될 때 컴퓨터 시스템으로 하여금 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 방법을 수행하게 하는 것임 - 의 흐름도(400)가 도시되어 있다.
이제 도 4의 405 및 도 2A를 참조하면, 일 실시예는 복수의 이종의 솔리드 스테이트 저장 위치들에 대한 클래스 유형들을 수신한다(405). 복수의 이종의 솔리드 스테이트 저장 위치들에 대한 클래스 유형들을 수신하는 것(405)은 복수의 이종의 솔리드 스테이트 저장 위치들에 대한 클래스 유형들을 수신하는 것(305)과 유사하다. 복수의 이종의 솔리드 스테이트 저장 위치들에 대한 클래스 유형들을 수신하는 것(305)에 대한 본 명세서의 설명들은 복수의 이종의 솔리드 스테이트 저장 위치들에 대한 클래스 유형들을 수신하는 것(405)에 적용될 수 있으므로, 명확성과 간결성을 위하여 이러한 설명들은 반복하지 않는다.
이제 도 4의 410 및 도 2A를 참조하면, 일 실시예는 복수의 이종의 솔리드 스테이트 저장 위치들의 클래스 유형들 및 입력/출력 동작의 수신된 특징들을 이용하여 저장 위치를 선택한다(410). 복수의 이종의 솔리드 스테이트 저장 위치들의 클래스 유형들 및 입력/출력 동작의 수신된 특징들을 이용하여 저장 위치를 선택하는 것(410)은 수신 데이터의 특징들을 결정하는 것(310)과 유사하다. 수신 데이터의 특징들을 결정하는 것(310)에 대한 본 명세서의 설명들은 복수의 이종의 솔리드 스테이트 저장 위치들의 클래스 유형들 및 입력/출력 동작의 수신된 특징들을 이용하여 저장 위치를 선택하는 것(410)에 적용될 수 있으므로, 명확성과 간결성을 위하여 이러한 설명들은 반복하지 않는다.
또한, 도 4의 410 및 도 2A를 참조하면, 일 실시예에서, 복수의 이종의 솔리드 스테이트 저장 위치들의 클래스 유형들 및 입력/출력 동작의 수신된 특징들을 이용하여 저장 위치를 선택하는 것(410)은 액세스의 빈도 특징(frequency of access characteristic)을 이용하는 것을 더 포함한다. 이 액세스의 빈도 특징은 복수의 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255) 중 하나가 얼마나 자주 기입 및/또는 판독되는지를 기술하는 데이터를 나타낸다.
예로서, 이종의 솔리드 스테이트 저장 위치 A(240)가 드물게 기입되고 자주 판독되는 파일들을 위하여 예정된 메모리 공간을 포함한다고 가정하자. 또한, 이종의 솔리드 스테이트 저장 위치 A(240)에 저장되어 있는 어떤 파일이 지난 해에 한 번만 판독되었다고 가정하자. 수신 데이터 특징 결정자(220)는, 소정의 명령들에 따라서, 이 파일을 이종의 솔리드 스테이트 저장 위치 B(245)에 이동시키기로 결정할 수 있다. 그 이유는 이종의 솔리드 스테이트 저장 위치 B(240)는 드물게 기입되고 드물게 판독되는 파일들을 위하여 예정된 메모리 공간을 포함하기 때문이다.
이제 도 4의 415 및 도 2A를 참조하면, 일 실시예는 입력/출력 동작과 관련된 데이터를 선택된 저장 위치에 라우팅한다(415). 다른 실시예에서 입력/출력 동작과 관련된 데이터를 선택된 저장 위치에 라우팅하는 것(415)은 복수의 이종의 솔리드 스테이트 저장 위치들 n...(255)의 집합체를 나타내는 단일의 어드레싱 가능한 저장 이름 공간(single addressable storage name space)을 이용하는 것을 더 포함한다. 예를 들면, 이종의 솔리드 스테이트 저장 위치 할당자(230)는 복수의 이종의 솔리드 스테이트 저장 위치들 n...(255)에 대한 단일의 저장 이름 공간만을 드러낸다(expose). 그 결과, 백업 또는 운영 체제(200)와 같은 응용 프로그램들은 각 개별의 솔리드 스테이트 저장 위치 A(240), B(245), C(250), 및/또는 n...(255) 대신에 모든 솔리드 스테이트 저장 위치 n...(255)를 나타내는 단일의 어드레싱 가능한 저장 이름 공간만을 본다.
입력/출력 동작과 관련된 데이터를 선택된 저장 위치에 라우팅하는 것(415)은 수신 데이터의 특징들에 기초하여 수신 데이터를 복수의 이종의 솔리드 스테이트 저장 위치들 중 하나에 할당하는 것(315)과 유사하다. 수신 데이터의 특징들에 기초하여 수신 데이터를 복수의 이종의 솔리드 스테이트 저장 위치들 중 하나에 할당하는 것(315)에 대한 본 명세서의 설명들은 입력/출력 동작과 관련된 데이터를 선택된 저장 위치에 라우팅하는 것(415)에 적용될 수 있으므로, 명확성과 간결성을 위하여 이러한 설명들은 반복하지 않는다.
이와 같이, 본 기술은 복수의 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255)을 선택적으로 이용하는 컴퓨터 구현 방법을 제공한다. 또한, 본 기술이 입력/출력 동작들과 관련된 다양한 데이터에 적합한 복수의 이종의 솔리드 스테이트 저장 위치들을 가능케 하는 것은 메모리 공간 내의 저장된 데이터의 저장 대비 비용의 비율의 감소를 가능케 한다. 또한, 본 기술은 복수의 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255) 또는 그의 어떤 조합이 하드 디스크 드라이브를 에뮬레이트하는 것을 가능케 한다. 또한, 본 기술은 임의의 수의 복수의 이종의 솔리드 스테이트 저장 위치들 A(240), B(245), C(250), 및 n...(255)로서 사용되는 플래시 메모리 저장 공간의 사용을 가능케 한다.
구조적 특징들 및/또는 방법적 단계들에 특정한 언어로 본 내용이 설명되었지만, 첨부된 청구항들에서 정의된 내용은 반드시 위에서 설명된 특정한 특징들 또는 단계들에 제한되는 것은 아니라는 것을 이해해야 한다. 오히려, 위에서 설명된 특정한 특징들 또는 단계들은 청구항들을 구현하는 예시적인 형태들로서 개시되어 있다.

Claims (20)

  1. 복수의 이종의 솔리드 스테이트 저장 위치들(disparate solid state storage locations)을 선택적으로 이용하는 컴퓨터 구현 방법[300]으로서,
    상기 복수의 이종의 솔리드 스테이트 저장 위치들에 대한 클래스 유형들을 수신하는 단계[305];
    수신된 데이터의 특징들을 결정하는 단계[310]; 및
    상기 특징들에 기초하여 상기 수신된 데이터를 상기 복수의 이종의 솔리드 스테이트 저장 위치들 중 하나에 할당하는 단계[315]
    를 포함하는 컴퓨터 구현 방법.
  2. 제1항에 있어서, 상기 복수의 이종의 솔리드 스테이트 저장 위치들을 이용하는 것을 통하여 하드 디스크 드라이브를 에뮬레이트(emulate)하는 단계를 더 포함하는 컴퓨터 구현 방법.
  3. 제1항에 있어서, 상기 복수의 이종의 솔리드 스테이트 저장 위치들을 통하여 운영 체제를 지원하는 단계를 더 포함하는 컴퓨터 구현 방법.
  4. 제1항에 있어서, 상기 복수의 이종의 솔리드 스테이트 저장 위치들을 통하여 운영 체제를 지원하는 단계를 더 포함하고, 상기 솔리드 스테이트 저장 위치들은 적어도 하나의 플래시 메모리 저장 위치를 포함하는 컴퓨터 구현 방법.
  5. 제1항에 있어서, 상기 수신된 데이터의 특징들을 결정하는 단계는,
    입력/출력 동작들과 관련된 상기 수신된 데이터를 상기 복수의 이종의 솔리드 스테이트 저장 위치들에 대한 상기 클래스 유형들에 대응하는 적어도 하나의 클래스로 분류하는 단계를 더 포함하는 컴퓨터 구현 방법.
  6. 제1항에 있어서, 상기 수신된 데이터의 특징들을 결정하는 단계[310]는,
    파일의 속성들에 액세스하는 단계를 더 포함하고, 상기 파일은 상기 파일의 상기 속성들에 기초하여 상기 복수의 이종의 솔리드 스테이트 저장 위치들 중 하나에 저장되는 컴퓨터 구현 방법.
  7. 제6항에 있어서, 상기 파일을 상기 복수의 이종의 솔리드 스테이트 저장 위치들 중 하나로부터 상기 복수의 이종의 솔리드 스테이트 저장 위치들 중 다른 하나로 이동시키는 단계를 더 포함하는 컴퓨터 구현 방법.
  8. 제1항에 있어서, 상기 복수의 이종의 플래시 메모리 저장 위치들에 대한 클래스 유형들을 수신하는 단계[305]는,
    운영 체제를 이용하여 상기 데이터 클래스 유형들을 결정하는 단계를 더 포함하는 컴퓨터 구현 방법.
  9. 제1항에 있어서, 상기 수신된 데이터의 특징들을 결정하는 단계[310]는,
    데이터 중요성 특징(data importance characteristic)을 이용하는 단계를 더 포함하는 컴퓨터 구현 방법.
  10. 운영 체제와 관련된 메모리를 할당하는 솔리드 스테이트 할당 모듈로서,
    복수의 이종의 솔리드 스테이트 저장 위치들(240)에 대한 클래스 유형 데이터를 수신하도록 구성된 클래스 유형 수신자(class type receiver)[210];
    수신된 데이터의 특징들을 결정하도록 구성된 수신 데이터 특징 결정자(received data characteristic determiner)[220]; 및
    상기 특징들에 기초하여 상기 수신된 데이터를 상기 복수의 이종의 솔리드 스테이트 저장 위치들 중 하나에 할당하도록 구성된 이종의 솔리드 스테이트 저장 위치 할당자(disparate solid state storage location allocator)[230]
    를 포함하는 솔리드 스테이트 할당 모듈.
  11. 제10항에 있어서, 상기 솔리드 스테이트 할당 모듈은 플래시 메모리 저장 모듈을 더 포함하는 솔리드 스테이트 할당 모듈.
  12. 제11항에 있어서, 상기 플래시 메모리 저장 모듈은 하드 디스크 드라이브 에뮬레이터인 솔리드 스테이트 할당 모듈.
  13. 제10항에 있어서, 상기 수신된 데이터의 상기 특징들은 입력/출력 동작들의 유형들인 솔리드 스테이트 할당 모듈.
  14. 컴퓨터 사용가능한 매체 상의 명령들로서, 상기 명령들은 실행될 때 컴퓨터 시스템으로 하여금 복수의 이종의 솔리드 스테이트 저장 위치들을 선택적으로 이용하는 방법을 수행하게 하고, 상기 방법은,
    상기 복수의 이종의 솔리드 스테이트 저장 위치들에 대한 클래스 유형들을 수신하는 단계[405];
    상기 복수의 이종의 솔리드 스테이트 저장 위치들의 상기 클래스 유형들 및 입력/출력 동작의 수신된 특징들을 이용하여 저장 위치를 선택하는 단계[410]; 및
    상기 입력/출력 동작과 관련된 데이터를 수신 데이터 특징 결정자에 의해 선택된 상기 저장 위치에 라우팅하는 단계[415]
    를 포함하는 컴퓨터 사용가능한 매체 상의 명령들.
  15. 제14항에 있어서, 상기 복수의 이종의 솔리드 스테이트 저장 위치들에 대한 클래스 유형들을 수신하는 단계는,
    운영 체제[122]를 이용하여 상기 클래스 유형들을 결정하는 단계를 더 포함하는 컴퓨터 사용가능한 매체 상의 명령들.
  16. 제14항에 있어서, 상기 복수의 이종의 솔리드 스테이트 저장 위치들의 상기 클래스 유형들 및 입력/출력 동작의 수신된 특징들을 이용하여 저장 위치를 선택하는 단계는,
    데이터 중요성 특징을 이용하는 단계를 더 포함하는 컴퓨터 사용가능한 매체 상의 명령들.
  17. 제14항에 있어서, 상기 입력/출력 동작과 관련된 데이터를 수신 데이터 특징 결정자[220]에 의해 선택된 상기 저장 위치에 라우팅하는 단계는,
    상기 복수의 이종의 솔리드 스테이트 저장 위치들의 집합체(aggregate)를 나타내는 단일의 어드레싱 가능한 저장 이름 공간(single addressable storage name space)을 이용하는 단계를 더 포함하는 컴퓨터 사용가능한 매체 상의 명령들.
  18. 제14항에 있어서, 파일의 속성들에 액세스하는 단계를 더 포함하고, 상기 파일은 상기 파일의 상기 속성들에 기초하여 상기 복수의 이종의 솔리드 스테이트 저장 위치들 중 하나에 저장되는 컴퓨터 사용가능한 매체 상의 명령들.
  19. 제14항에 있어서, 상기 파일의 속성들에 기초하여 상기 파일을 하나의 상기 복수의 이종의 솔리드 스테이트 저장 위치들로부터 다른 복수의 이종의 솔리드 스테이트 저장 위치들로 재배열하는 단계를 더 포함하는 컴퓨터 사용가능한 매체 상의 명령들.
  20. 제14항에 있어서, 상기 복수의 이종의 솔리드 스테이트 저장 위치들을 이용하는 것을 통하여 하드 디스크 드라이브를 에뮬레이트하는 단계를 더 포함하는 컴퓨터 사용가능한 매체 상의 명령들.
KR1020097018161A 2007-03-06 2008-03-06 복수의 이종의 솔리드 스테이트 저장 위치들의 선택적 이용 KR101482285B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/714,585 US7657572B2 (en) 2007-03-06 2007-03-06 Selectively utilizing a plurality of disparate solid state storage locations
US11/714,585 2007-03-06
PCT/US2008/056026 WO2008109736A1 (en) 2007-03-06 2008-03-06 Selectively utilizing a plurality of disparate solid state storage locations

Publications (2)

Publication Number Publication Date
KR20100014884A true KR20100014884A (ko) 2010-02-11
KR101482285B1 KR101482285B1 (ko) 2015-01-13

Family

ID=39738794

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097018161A KR101482285B1 (ko) 2007-03-06 2008-03-06 복수의 이종의 솔리드 스테이트 저장 위치들의 선택적 이용

Country Status (9)

Country Link
US (3) US7657572B2 (ko)
EP (1) EP2118751A4 (ko)
JP (2) JP5149912B2 (ko)
KR (1) KR101482285B1 (ko)
CN (1) CN101627372B (ko)
BR (1) BRPI0807899A8 (ko)
RU (1) RU2463648C2 (ko)
TW (1) TWI432958B (ko)
WO (1) WO2008109736A1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2003284329A1 (en) 2002-10-22 2004-05-13 Isys Technologies Robust customizable computer processing system
AU2003285949A1 (en) 2002-10-22 2004-05-13 Isys Technologies Non-peripherals processing control module having improved heat dissipating properties
US7075784B2 (en) * 2002-10-22 2006-07-11 Sullivan Jason A Systems and methods for providing a dynamically modular processing unit
US20100250826A1 (en) * 2009-03-24 2010-09-30 Micron Technology, Inc. Memory systems with a plurality of structures and methods for operating the same
US8560639B2 (en) 2009-04-24 2013-10-15 Microsoft Corporation Dynamic placement of replica data
US8935366B2 (en) * 2009-04-24 2015-01-13 Microsoft Corporation Hybrid distributed and cloud backup architecture
US8769055B2 (en) 2009-04-24 2014-07-01 Microsoft Corporation Distributed backup and versioning
US8769049B2 (en) 2009-04-24 2014-07-01 Microsoft Corporation Intelligent tiers of backup data
TWI494766B (zh) * 2009-07-07 2015-08-01 Apacer Technology Inc 可提升作業速度之儲存模組及其作業方法
US8700841B2 (en) 2010-04-19 2014-04-15 International Business Machines Corporation Sub-LUN input/output profiling for SSD devices
US9285991B2 (en) 2011-04-29 2016-03-15 International Business Machines Corporation System, method and program product to schedule transfer of data
US8341312B2 (en) 2011-04-29 2012-12-25 International Business Machines Corporation System, method and program product to manage transfer of data to resolve overload of a storage system
US8923045B2 (en) 2012-05-31 2014-12-30 Seagate Technology Llc Multi-level cell (MLC) update with protected mode capability
CN103902226B (zh) * 2012-12-27 2017-08-04 宏碁股份有限公司 数据写入方法与系统
WO2014138448A1 (en) * 2013-03-06 2014-09-12 Sullivan Jason A Systems and methods for providing dynamic hybrid storage
US8924824B1 (en) 2013-03-12 2014-12-30 Western Digital Technologies, Inc. Soft-decision input generation for data storage systems
US9576039B2 (en) 2014-02-19 2017-02-21 Snowflake Computing Inc. Resource provisioning systems and methods
JP6394698B2 (ja) * 2014-06-20 2018-09-26 株式会社ニコン 情報記憶装置、情報記憶システム、及び情報記憶制御プログラム
KR102397582B1 (ko) 2015-06-22 2022-05-13 삼성전자주식회사 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 이의 작동 방법
US10866912B2 (en) 2017-03-10 2020-12-15 Toshiba Memory Corporation Integrated heterogeneous solid state storage drive
US10521143B2 (en) 2017-03-23 2019-12-31 Netapp Inc. Composite aggregate architecture
US11205229B1 (en) * 2017-08-04 2021-12-21 EMC IP Holding Company LLC Content storage management based on multidimensional valuation models
KR102611566B1 (ko) 2018-07-06 2023-12-07 삼성전자주식회사 솔리드 스테이트 드라이브 및 그의 메모리 할당 방법

Family Cites Families (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5490260A (en) 1990-12-14 1996-02-06 Ceram, Inc. Solid-state RAM data storage for virtual memory computer using fixed-sized swap pages with selective compressed/uncompressed data store according to each data size
US5491810A (en) * 1994-03-01 1996-02-13 International Business Machines Corporation Method and system for automated data storage system space allocation utilizing prioritized data set parameters
DE19540915A1 (de) * 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
US5568423A (en) 1995-04-14 1996-10-22 Unisys Corporation Flash memory wear leveling system providing immediate direct access to microprocessor
JPH0944381A (ja) * 1995-07-31 1997-02-14 Toshiba Corp データ格納方法およびデータ格納装置
US5835935A (en) 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
US6711666B1 (en) * 1995-11-29 2004-03-23 Zf Micro Solutions, Inc. IBM PC compatible multi-chip module
JP2856152B2 (ja) * 1996-05-30 1999-02-10 日本電気株式会社 カーネルデバッガにおけるソフトウェアブレークポイント管理方式
US5787484A (en) 1996-08-08 1998-07-28 Micron Technology, Inc. System and method which compares data preread from memory cells to data to be written to the cells
US5905757A (en) 1996-10-04 1999-05-18 Motorola, Inc. Filter co-processor
US6418506B1 (en) 1996-12-31 2002-07-09 Intel Corporation Integrated circuit memory and method for transferring data using a volatile memory to buffer data for a nonvolatile memory array
EP0968468B1 (en) 1997-03-21 2003-02-26 Canal+ Technologies Computer memory organization and method therefor
US6154788A (en) * 1997-04-25 2000-11-28 Simple Technology, Inc. Multi-function module incorporating flash memory having additional controller adapted to configure the data from the memory that is to be provided to the external source
KR100564664B1 (ko) * 1997-10-08 2006-03-29 시게이트 테크놀로지 엘엘씨 데이터 저장 장치용 하이브리드 데이터 저장과 재구성시스템 및 방법
US6189069B1 (en) 1998-02-17 2001-02-13 Microsoft Corporation Optimized logging of data elements to a data storage device
JP2000036947A (ja) 1998-07-17 2000-02-02 Mitsubishi Electric Corp 映像蓄積配信表示装置
JP4085478B2 (ja) * 1998-07-28 2008-05-14 ソニー株式会社 記憶媒体及び電子機器システム
JP2000201333A (ja) 1999-01-05 2000-07-18 Matsushita Electric Ind Co Ltd 多重化通信装置
US6145069A (en) 1999-01-29 2000-11-07 Interactive Silicon, Inc. Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices
US8078794B2 (en) 2000-01-06 2011-12-13 Super Talent Electronics, Inc. Hybrid SSD using a combination of SLC and MLC flash memory arrays
US20050160218A1 (en) * 2004-01-20 2005-07-21 Sun-Teck See Highly integrated mass storage device with an intelligent flash controller
US7509420B2 (en) * 2000-02-18 2009-03-24 Emc Corporation System and method for intelligent, globally distributed network storage
US20030046396A1 (en) * 2000-03-03 2003-03-06 Richter Roger K. Systems and methods for managing resource utilization in information management environments
US20020174227A1 (en) * 2000-03-03 2002-11-21 Hartsell Neal D. Systems and methods for prioritization in information management environments
US6883044B1 (en) 2000-07-28 2005-04-19 Micron Technology, Inc. Synchronous flash memory with simultaneous access to one or more banks
US7689510B2 (en) * 2000-09-07 2010-03-30 Sonic Solutions Methods and system for use in network management of content
JP2002132454A (ja) 2000-10-19 2002-05-10 Xaxon R & D Corp 圧縮伸張装置を備えた半導体ディスク装置
US6681506B2 (en) 2000-10-27 2004-01-27 The Procter & Gamble Company Process for the ironing of fabrics, and refill cartridge for irons
JP2002149456A (ja) 2000-11-07 2002-05-24 Matsushita Electric Ind Co Ltd 可搬性記憶媒体、可搬性記憶媒体におけるファイル管理方法及び携帯端末
EP1205838A3 (en) * 2000-11-07 2007-10-10 Matsushita Electric Industrial Co., Ltd. Carryable memory media, portable information terminal using the same and method for managing files therein
KR100389867B1 (ko) 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
US7454446B2 (en) * 2001-08-31 2008-11-18 Rocket Software, Inc. Techniques for storing data based upon storage policies
KR100393619B1 (ko) * 2001-09-07 2003-08-02 삼성전자주식회사 휴대 단말기의 메모리 장치 및 그 제어방법
KR100454119B1 (ko) 2001-10-24 2004-10-26 삼성전자주식회사 캐쉬 기능을 갖는 불 휘발성 반도체 메모리 장치 및 그것의 프로그램, 읽기, 그리고 페이지 카피백 방법들
US7127550B1 (en) * 2001-10-31 2006-10-24 Sandisk Corporation Multi-module simultaneous program, erase test, and performance method for flash memory
JP4162184B2 (ja) * 2001-11-14 2008-10-08 株式会社日立製作所 データベース管理システムの実行情報を取得する手段を有する記憶装置
RU2189630C1 (ru) 2001-11-21 2002-09-20 Бабаян Борис Арташесович Способ фильтрации межпроцессорных запросов в многопроцессорных вычислительных системах и устройство для его осуществления
US6681309B2 (en) * 2002-01-25 2004-01-20 Hewlett-Packard Development Company, L.P. Method and apparatus for measuring and optimizing spatial segmentation of electronic storage workloads
US20050036387A1 (en) 2002-04-24 2005-02-17 Seal Brian K. Method of using flash memory for storing metering data
US20040025162A1 (en) * 2002-07-31 2004-02-05 Fisk David C. Data storage management system and method
JP4063615B2 (ja) 2002-08-30 2008-03-19 Necエレクトロニクス株式会社 不揮発性メモリおよびその書き込み処理方法
US7020758B2 (en) 2002-09-18 2006-03-28 Ortera Inc. Context sensitive storage management
JP4199519B2 (ja) * 2002-11-05 2008-12-17 パナソニック株式会社 メモリ管理装置及びメモリ管理方法
US6993603B2 (en) 2002-12-09 2006-01-31 Microsoft Corporation Managed file system filter model and architecture
US7814128B2 (en) 2003-05-30 2010-10-12 Symantec Operating Corporation Multi-volume file support
TWI220959B (en) 2003-06-05 2004-09-11 Carry Computer Eng Co Ltd Storage device with optimized compression management mechanism
ITVA20030025A1 (it) 2003-07-17 2005-01-18 Lamberti Spa Depolimerizzazione enzimatica di carbossimetilcellulosa e relativi prodotti.
KR100546348B1 (ko) 2003-07-23 2006-01-26 삼성전자주식회사 플래시 메모리 시스템 및 그 데이터 저장 방법
US6917542B2 (en) * 2003-07-29 2005-07-12 Sandisk Corporation Detecting over programmed memory
US6876579B2 (en) 2003-08-04 2005-04-05 Phison Electronics Corp. Method writing data to a large block of a flash memory cell
WO2005050453A1 (ja) 2003-11-18 2005-06-02 Matsushita Electric Industrial Co., Ltd. ファイル記録装置
US20090193184A1 (en) 2003-12-02 2009-07-30 Super Talent Electronics Inc. Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System
US7477812B2 (en) 2003-12-30 2009-01-13 Massachusetts Institute Of Technology System and method for providing fast, low voltage integrated optical elements
JP4568502B2 (ja) * 2004-01-09 2010-10-27 株式会社日立製作所 情報処理システムおよび管理装置
EP1720119A4 (en) 2004-03-31 2008-01-23 Matsushita Electric Ind Co Ltd MEMORY CARD AND MEMORY CARD SYSTEM
US8352697B2 (en) * 2004-05-17 2013-01-08 Sandisk Il Ltd. Method of managing files for optimal performance
US7702848B2 (en) * 2004-06-10 2010-04-20 Marvell World Trade Ltd. Adaptive storage system including hard disk drive with flash interface
US20060069896A1 (en) * 2004-09-27 2006-03-30 Sigmatel, Inc. System and method for storing data
JP4956922B2 (ja) * 2004-10-27 2012-06-20 ソニー株式会社 記憶装置
US7631023B1 (en) * 2004-11-24 2009-12-08 Symantec Operating Corporation Performance-adjusted data allocation in a multi-device file system
US20060117018A1 (en) 2004-11-30 2006-06-01 Microsoft Corporation Method and system for caching remote files locally
US7087953B2 (en) * 2004-12-03 2006-08-08 Aplus Flash Technology, Inc. Unified non-volatile memory device and method for integrating NOR and NAND-type flash memory and EEPROM device on a single substrate
KR100684942B1 (ko) * 2005-02-07 2007-02-20 삼성전자주식회사 복수의 사상 기법들을 채용한 적응형 플래시 메모리 제어장치 및 그것을 포함한 플래시 메모리 시스템
KR100590388B1 (ko) 2005-03-10 2006-06-19 주식회사 하이닉스반도체 멀티-플레인 타입 플래쉬 메모리 장치와, 그 프로그램 동작및 리드 동작 제어 방법
KR100626392B1 (ko) 2005-04-01 2006-09-20 삼성전자주식회사 읽기 속도를 향상시킬 수 있는 플래시 메모리 장치
KR100704037B1 (ko) 2005-04-15 2007-04-04 삼성전자주식회사 이종의 비휘발성 메모리를 가지는 데이터 저장장치와 그의구동 방법
JP2007004710A (ja) * 2005-06-27 2007-01-11 Nec Corp ストレージアクセス方式、データ転送装置、ストレージアクセス方法、及びプログラム
JP2006059374A (ja) * 2005-09-16 2006-03-02 Hitachi Ltd 記憶制御装置
JP4933861B2 (ja) * 2005-09-22 2012-05-16 株式会社日立製作所 ストレージ制御装置、データ管理システムおよびデータ管理方法
US20070078914A1 (en) * 2005-09-30 2007-04-05 International Business Machines Corporation Method, apparatus and program storage device for providing a centralized policy based preallocation in a distributed file system
US8286159B2 (en) * 2005-12-22 2012-10-09 Alan Joshua Shapiro Method and apparatus for gryphing a data storage medium
US7555575B2 (en) * 2006-07-27 2009-06-30 Hitachi, Ltd. Method and apparatus for migrating data between storage volumes of different data pattern
US20080228998A1 (en) 2007-03-16 2008-09-18 Spansion Llc Memory storage via an internal compression algorithm

Also Published As

Publication number Publication date
RU2463648C2 (ru) 2012-10-10
JP2012014706A (ja) 2012-01-19
US7657572B2 (en) 2010-02-02
JP2010520568A (ja) 2010-06-10
BRPI0807899A8 (pt) 2017-01-17
EP2118751A1 (en) 2009-11-18
JP5384576B2 (ja) 2014-01-08
US8126939B2 (en) 2012-02-28
EP2118751A4 (en) 2010-09-29
US9535625B2 (en) 2017-01-03
US20120110264A1 (en) 2012-05-03
CN101627372A (zh) 2010-01-13
RU2009133317A (ru) 2011-03-10
BRPI0807899A2 (pt) 2014-06-17
TWI432958B (zh) 2014-04-01
US20100095083A1 (en) 2010-04-15
JP5149912B2 (ja) 2013-02-20
CN101627372B (zh) 2012-08-29
US20080222346A1 (en) 2008-09-11
TW200844739A (en) 2008-11-16
KR101482285B1 (ko) 2015-01-13
WO2008109736A1 (en) 2008-09-12

Similar Documents

Publication Publication Date Title
KR101482285B1 (ko) 복수의 이종의 솔리드 스테이트 저장 위치들의 선택적 이용
US10324832B2 (en) Address based multi-stream storage device access
JP5347061B2 (ja) フラッシュメモリデータストレージデバイスにデータを格納するための方法及び装置
JP6496626B2 (ja) 異種統合メモリ部及びその拡張統合メモリスペース管理方法
US20180356992A1 (en) Multi-Device Platform
US20080229046A1 (en) Unified support for solid state storage
JP2009532761A (ja) フラッシュ・ストレージの離散領域を記述して問い合わせること
KR102567224B1 (ko) 데이터 저장 장치 및 이를 포함하는 컴퓨팅 시스템
US11314655B2 (en) Storage device configurable mapping granularity system where data is written without performing read-modify-write operations
KR20200056533A (ko) 맵 스케줄링을 수행하기 위한 스토리지 장치 및 그것을 포함하는 전자 장치
CN105408875A (zh) 在存储器接口上的分布式过程执行和文件系统
CN108959108A (zh) 固态硬盘访问方法以及使用该方法的装置
CN113282234B (zh) 存储装置、存储系统、及其操作方法
KR20210043001A (ko) 하이브리드 메모리 시스템 인터페이스
US11163475B2 (en) Block input/output (I/O) accesses in the presence of a storage class memory
CN117909251A (zh) 存储介质、调度和执行主机数据更新命令的方法及装置
CN117909252A (zh) 存储介质、调度和执行主机数据更新命令的方法及装置
CN116149540A (zh) 更新主机与闪存地址对照表的方法和计算机可读取存储介质和装置
US20150160860A1 (en) Memory management using enlarged address space

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20171219

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181226

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20191217

Year of fee payment: 6