KR20090028518A - 고속 비휘발성 메모리 장치 및 방법, 컴퓨터 판독가능 매체 - Google Patents

고속 비휘발성 메모리 장치 및 방법, 컴퓨터 판독가능 매체 Download PDF

Info

Publication number
KR20090028518A
KR20090028518A KR1020087029833A KR20087029833A KR20090028518A KR 20090028518 A KR20090028518 A KR 20090028518A KR 1020087029833 A KR1020087029833 A KR 1020087029833A KR 20087029833 A KR20087029833 A KR 20087029833A KR 20090028518 A KR20090028518 A KR 20090028518A
Authority
KR
South Korea
Prior art keywords
data
request
memory
interface
controller
Prior art date
Application number
KR1020087029833A
Other languages
English (en)
Inventor
루스턴 파나베이커
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20090028518A publication Critical patent/KR20090028518A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1615Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using a concurrent pipeline structrure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

별개의 플래시 메모리 칩 또는 단일 칩의 별개의 영역과 같은 비휘발성 저장장치 세트들에 대한 인터페이스들을 통해 결합된 제어기를 포함하는 고속 비휘발성 메모리 장치 및 기술이 설명된다. 이 제어기는, 상기 인터페이스들 중에서 병렬 기록에 의하는 것을 포함하여, 상기 인터페이스들 중에서 기록을 인터리빙함으로써 임의 크기의 기록 요청을 처리하는 논리를 포함한다. 예를 들면, 데이터는 DMA (direct memory access) 전송을 통해 수신될 수 있다. 제어기는, 예컨대 DMA에 의해, 다시 판독될 때 인터리빙된 데이터가 자신의 올바른 상대적 위치로 재조립될 수 있도록 정보를 유지한다. 고속 비휘발성 메모리 장치는 개인용 컴퓨터가 최대절전모드와 같은 감소된 전력 상태로부터 빨리 부팅되거나 재개할 수 있게 하는 하드웨어 장치 및 소프트웨어 솔루션을 제공한다. 고속 비휘발성 메모리 장치는 또한 캐싱 및 파일 저장과 같은 다른 데이터 저장 목적을 위해 사용될 수 있다.
고속 비휘발성 메모리 장치, 데이터 포맷, 인터리빙, 인터페이스

Description

고속 비휘발성 메모리 장치 및 방법, 컴퓨터 판독가능 매체{HIGH SPEED NONVOLATILE MEMORY DEVICE}
부팅될 때, 현재의 개인용 컴퓨터는 사용자가 태스크에서 작업을 시작할 수 있을 때까지 운영 체제를 로딩하는 데 대략 20초가 걸린다. 이렇게 긴 지연시간은 사용자를 짜증나게 하고, 종종 이 태스크를 완수하는 다른 수단이 사용될 수 있을 때 사용자가 컴퓨터를 일부러 시작하지 않게 하여, 이에 의해 개인용 컴퓨터의 유용성이 제한된다.
컴퓨터의 기능을 사용하기 위해 컴퓨터를 부팅해야 하는 것을 피하기 위해, 컴퓨터가 이전의 사용후에 대기 상태 (예컨대, ACPI S3 슬립 상태)로 들어가게 하는 것과 같은 다양한 솔루션이 도입되었다. 대기 상태에서는, 메모리 컨텐츠를 유지하기 위해 시스템 메모리에 소정의 전력이 제공된다. 대기상태는 개인용 컴퓨터가 비교적 빨리 자신의 유용한 상태로 재개할 수 있게 하지만, 대기상태는 슬립 모드 (sleep mode)에 있을 때 배터리를 소모시키는 단점이 있어서 항상 바람직한 것은 아니다. 대기 모드는 또한 전력이 끊기면 데이터를 상실하는데, 이것은 데스크탑이나 플러그에 접속된 랩탑도 전력이 끊긴 동안에 데이터를 상실할 수 있음을 의미한다.
신속한 시동을 제공하는 다른 솔루션은 최대절전모드(hibernate) (예컨대, ACPI S4 상태)라고 하는데, 여기서 메모리의 컨텐츠는 최대절전모드시 하드 디스크 최대절전모드 파일로 전송되고 정상 동작 상태로 재개되면 이 최대절전모드 파일로부터 다시 판독된다. 이 솔루션도, 재시작하는 데 비교적 오랜 시간이 걸린다는 점을 포함하여, 최대절전모드 파일이 비교적 느린 하드 디스크 드라이브로부터 시스템 메모리로 다시 전송되어 언팩(unpack)되어야 할 필요가 있기 때문에 단점이 있다.
본 요약은 대표적인 개념들을 간단한 형태로 소개하기 위해 제공된 것이며 이에 대해서는 아래에 상세한 설명에서 더 구체적으로 설명된다. 본 요약은 본 발명의 핵심 특징이나 본질적인 특징을 확인하고자 하는 것이 아니며 본 발명의 범위를 제한하는 방식으로 사용되는 것도 아니다.
간단히 말해서, 여기 설명된 본 발명의 다양한 양태들은 별개의 플래시 메모리 칩들이나 플래시 메모리 칩의 별개의 영역들과 같은 비휘발성 저장장치 세트에 인터페이스를 통해 결합된 제어기를 포함하는 고속 비휘발성 메모리 장치에 대한 것이다. 이 제어기는, 적절한 때 인터페이스들 사이에서 병렬 기록에 의하는 것을 포함하여 인터페이스들 사이에서 기록을 인터리빙함으로써 본질적으로 임의 크기의 기록 요청을 처리하는 논리를 포함한다. 예를 들면, 데이터는 직접 메모리 액세스 (DMA: direct memory access) 전송을 통해 수신될 수 있고, 플래시로의 블록 기록으로서 기록될 수 있다. 제어기는, 인터리빙된 데이터가 나중에 다시 판독될 때 올바른 상대 위치로 재조립될 수 있도록 기록 요청과 연관하여 정보를 유지한다.
제어기가 판독 요청을 수신할 때, 제어기는 요청에 대응하는 데이터가 어떻게 인터리빙되고 저장되는지 결정하기 위해 유지된 정보를 사용함으로써 판독 요청을 처리한다. 이 데이터는 그후 그것이 기록된 적절한 인터페이스로부터 각 블록 (또는 다른 부집합)을 다시 판독함으로써 반환된다. 예를 들면, 데이터는 DMA 전송을 통해 반환될 수 있다.
다른 이익들 중에서, 고속 비휘발성 메모리 장치는 개인용 컴퓨터가 최대절전모드 또는 다른 저전력 상태에서 신속히 부팅하거나 재개할 수 있게 하는 하드웨어 장치 및 소프트웨어 솔루션을 제공하고, 이에 의해 개인용 컴퓨터를 예컨대 시동 시간에 대해 더욱 소비자 전자 장치와 유사하게 만든다. 고속 비휘발성 메모리 장치는, 예컨대 하드 디스크 스와핑(swapping)보다 더 빠른 별도의 메모리를 제공하기 위하여, 예컨대 정상 동작 동안에 캐싱(caching) 및 파일 저장과 같은 다른 데이터 저장 목적을 위해 사용될 수도 있다. 제어기는 비휘발성 메모리와 컴퓨터 시스템의 나머지 사이의 번역을 처리하므로, 임의 양의 데이터가 데이터 소스에 의한 특별한 포맷없이 단일 요청을 통해 저장될 수 있고, 이에 의해 신속한 동작이 용이하게 된다.
다른 장점들은 도면과 관련하여 다음 상세한 설명으로부터 명백해질 수 있다.
본 발명은 예를 통해 설명되고 첨부 도면에 한정되지 않는다. 도면에서 동일한 부재 번호는 유사한 요소를 나타낸다.
도 1은 본 발명의 다양한 양태들이 포함될 수 있는 범용 컴퓨팅 환경의 일예를 도시한다.
도 2는 고속 비휘발성 메모리 장치가 존재하는 개인용 컴퓨터 시스템 아키텍처의 일예를 도시한다.
도 3은 고속 비휘발성 메모리 장치의 일예를 도시한다.
도 4는 데이터를 비휘발성 저장장치에 기록하기 위해 내부의 제어기 논리에 의해 수행되는 단계들을 포함한 고속 비휘발성 메모리 장치의 일예를 도시한다.
도 5는 데이터를 비휘발성 저장장치로부터 판독하기 위하여 내부의 제어기 논리에 의해 수행되는 단계들을 포함한 고속 비휘발성 메모리 장치의 일예를 도시한다.
도 1은 본 발명이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(100)의 일예이다. 컴퓨팅 시스템 환경(100)은 적절한 컴퓨팅 환경의 일예일 뿐이며 본 발명의 사용이나 기능의 범위에 대한 어떤 제한을 의미하고자 함이 아니다. 컴퓨팅 환경(100)은 바람직한 동작 환경(100)에서 설명된 구성요소들 중 어느 하나 또는 조합에 관한 어떤 종속성이나 요건을 갖는 것으로 해석되지 않아야 한다.
본 발명은 많은 다른 범용 또는 특정 컴퓨팅 시스템 환경이나 구성과 함께 동작가능하다. 본 발명과 함께 사용하기 위해 적절할 수 있는 공지의 컴퓨팅 시스템, 환경 및/또는 구성은 개인용 컴퓨터, 서버 컴퓨터, 휴대용 또는 랩탑 장치, 태블릿 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱박스, 프로 그래머블 컨수머 전자장치, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템이나 장치들 중 임의의 것을 포함하는 분산형 컴퓨팅 환경 등을 포함하지만 이에 한정되는 것은 아니다.
본 발명은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어의 일반적인 컨텍스트로 설명될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 앱스트랙트 데이터형을 구현하는 루틴, 프로그램, 오브젝트, 구성요소, 데이터 구조 등을 포함한다. 본 발명은 또한 태스크가 통신 네트워크를 통해 링크되는 원격 처리 장치에 의해 수행되는 분산형 컴퓨팅 환경에서 실시될 수 있다. 분산형 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 로컬 및/또는 원격 컴퓨터 저장 매체에 위치할 수 있다.
도 1을 참조하면, 본 발명을 구현하는 바람직한 시스템은 컴퓨터(110)의 형태로 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 구성요소는 처리유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 구성요소를 처리유닛(120)에 결합시키는 시스템 버스(121)를 포함하지만, 이에 한정되는 것은 아니다. 시스템 버스(121)는 메모리 버스나 메모리 제어기, 주변 버스, 및 다양한 버스 아키텍처 중 임의의 것을 사용하는 로컬 버스를 포함하는 몇 종류의 버스 구조 중 임의의 것일 수 있다. 일예로, 이에 한정되는 것은 아니지만, 이러한 아키텍처는 ISA (Industry Standard Architecture) 버스, MCA (Micro Channel Architecture) 버스, EISA (Enhanced ISA) 버스, 및 메자닌 (Mezzanine) 버스라고도 알려진 PCI (Peripheral Component Interconnect) 버스를 포함한다.
컴퓨터(110)는 일반적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있고 휘발성 및 비휘발성 매체, 및 이동식 및 비이동식 매체를 포함한다. 일예로, 이에 한정되는 것은 아니지만, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD (digital versatile disks) 또는 다른 광학 디스크 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 다른 자기 저장 장치, 또는 원하는 정보를 저장하기 위해 사용될 수 있고 컴퓨터(110)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만 이에 한정되는 것은 아니다. 통신 매체는 일반적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터를 캐리어 웨이브나 다른 전송 메커니즘과 같은 변조된 데이터 신호로 구현하고 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호에서 정보를 인코딩하는 방식으로 설정 또는 변경된 하나 이상의 특징을 갖는 신호를 의미한다. 일예로, 이에 한정되는 것은 아니지만, 통신 매체는 유선 네트워크나 직접 유선 접속과 같은 유선 매체, 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 상기 중 임의의 것의 조합은 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132)과 같은 휘발성 및/또는 비휘발성 메모리의 형태로 컴퓨터 저장 매체를 포함한다. 예컨대 시동중에 컴퓨터(110) 내의 요소들 사이의 정보 전달에 도움이 되는 기본 루틴을 포함하는 BIOS (basic input/output system)(133)는 일반적으로 ROM(131)에 저장된다. RAM(132)은 일반적으로 처리 유닛(120)에 의해 바로 액세스가능한 및/또는 바로 동작되는 데이터 및/또는 프로그램 모듈을 포함한다. 일예로, 이에 한정되는 것은 아니지만, 도 1은 운영체제(134), 애플리케이션 프로그램(135), 다른 프로그램 모듈(136) 및 프로그램 데이터(137)를 도시한다.
컴퓨터(110)는 다른 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수도 있다. 일예로, 도 1은 비이동식 비휘발성 자기 매체로부터 판독하거나 이에 기록하는 하드 디스크 드라이브(141), 이동식, 비휘발성 자기 디스크(152)로부터 판독하거나 이에 기록하는 자기 디스크 드라이브(152), 및 CD ROM 또는 다른 광학 매체와 같은 이동식, 비휘발성 광학 디스크(156)로부터 판독하거나 이에 기록하는 광학 디스크 드라이브(155)를 도시한다. 바람직한 동작 환경에서 사용될 수 있는 다른 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고체상태 RAM, 고체상태 ROM 등을 포함하지만 이에 한정되는 것은 아니다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140)와 같은 비이동식 메모리 인터페이스를 통해 시스템 버스(121)에 연결되고, 자기 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 일반적으로 인터페이스(150)과 같은 이동식 메모리 인터페이스에 의해 시스템 버 스(121)에 연결된다.
상기에서 설명되고 도 1에서 도시된 드라이브 및 관련된 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 컴퓨터(110) 용 기타 데이터의 저장을 제공한다. 도 1에서, 예컨대, 하드 디스크 드라이브(141)는 운영체제(144), 애플리케이션 프로그램(145), 다른 프로그램 모듈(146) 및 프로그램 데이터(147)를 저장하는 것으로서 도시된다. 이들 구성요소는 운영체제(134), 애플리케이션 프로그램(135), 다른 프로그램 모듈(136) 및 프로그램 데이터(137)와 동일하거나 다를 수 있다. 운영체제(144), 애플리케이션 프로그램(145), 다른 프로그램 모듈(146) 및 프로그램 데이터(147)는 최소한 이들이 서로 다른 사본임을 나타내기 위해 서로 다른 번호가 주어진다. 사용자는 테블릿 또는 전자 디지털 장치(164), 마이크(163), 키보드(162) 및 흔히 마우스, 트랙볼 또는 터치패드라고 하는 포인팅 장치(161)와 같은 입력 장치를 통해 컴퓨터(110)에 명령어 및 정보를 입력할 수 있다. 도 1에 도시되지 않은 다른 입력 장치는 조이스틱, 게임패드, 위성접시, 스캐너 등을 포함할 수 있다. 이들 및 다른 입력 장치는 종종 시스템 버스에 결합된 사용자 입력 인터페이스(160)를 통해 처리 유닛(120)에 연결되지만, 병렬 포트, 게임 포트 또는 USB (universal serial bus)와 같은 다른 인터페이스 및 버스 구조에 의해 연결될 수 있다. 모니터(191) 또는 다른 종류의 디스플레이 장치는 비디오 인터페이스(190)와 같은 인터페이스를 통해 시스템 버스(121)에 연결된다. 모니터(191)는 터치스크린 패널 등과 통합될 수 있다. 모니터 및/또는 터치스크린 패널은 예컨대 테블릿형 개인용 컴퓨터에서처럼 컴퓨팅 장치(110)이 포함 되는 하우징(housing)에 물리적으로 결합될 수 있다. 또한, 컴퓨팅 장치(110)와 같은 컴퓨터는 출력 주변 인터페이스(194) 등을 통해 연결될 수 있는 스피커(195) 및 프린터(196)와 같은 다른 주변 출력 장치를 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 연결을 이용하여 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치 또는 다른 공통 네트워크 노드일 수 있고, 도 1에 메모리 저장 장치(181)만 도시되었지만, 일반적으로 컴퓨터(110)와 관하여 위에서 설명된 많은 또는 모든 요소들을 포함한다. 도 1에 도시된 논리적 연결부는 LAN (local area network)(171) 및 WAN (wide area network)(173)을 포함하지만 다른 네트워크를 포함할 수도 있다. 이런 네트워킹 환경은 사무실, 기업 컴퓨터 네트워크, 인트라넷 및 인터넷에서 흔하다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 연결된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 일반적으로 모뎀(172) 또는 인터넷과 같은 WAN(173)을 통한 통신을 확립하는 다른 수단을 포함한다. 내장형 또는 외장형 모뎀(172)은 사용자 입력 인터페이스(160) 또는 다른 적절한 메커니즘을 통해 시스템 버스(121)에 연결될 수 있다. 네트워크 환경에서, 컴퓨터(110)에 관하여 도시된 프로그램 모듈, 또는 그 부분들은 원격 메모리 저장 장치에 저장될 수 있다. 일예로, 이에 한정되는 것은 아니지만, 도 1은 메모리 장치(181)에 상존하는 것으로서 원격 애플리케이션 프로그램(185)을 도시한다. 도시된 네트워크 연결부는 예시적인 것이며 컴퓨터들 사이에 서 통신 링크를 확립하는 다른 수단들이 사용될 수 있음은 이해될 수 있을 것이다.
보조 디스플레이 부시스템(199)은, 컴퓨터 시스템의 주요부가 저전력 상태에 있더라도, 프로그램 컨텐츠, 시스템 상태 및 이벤트 통지와 같은 데이터가 사용자에게 제공될 수 있도록 사용자 인터페이스(160)를 통해 연결될 수 있다. 보조 디스플레이 부시스템(199)은 메인 처리 유닛(120)이 저전력 상태에 있는 동안에 이 시스템들 사이에서 통신을 허용하기 위해 모뎀(172) 및/또는 네트워크 인터페이스(170)에 연결될 수 있다.
고속 비휘발성 메모리 장치
여기 설명된 기술의 다양한 양태들은 다른 용도들 중에서 최대절전모드로부터의 신속한 부팅업 또는 재개를 제공하는 비휘발성 메모리 장치에 대한 것이다. 그러나, 이해되는 바와 같이, 여기 설명된 기술은 임의의 특정 용도나 종류의 슬립(sleep) 상태에 한정되는 것이 아니고, 예컨대 완전한 파워 온과 완전한 파워 오프 사이의 다른 상태가 이러한 장치로부터 이익을 받을 수 있고, 성능에서 도움이 되도록 일 동작상태에 있는 동안에 일반적인 용도가 가능하다. 이로써, 본 발명은 여기 설명된 예들, 사용 모델, 구조 또는 기능에 한정되지 않는다. 그보다는, 여기 설명된 임의의 사용 모델, 예들, 구조 또는 기능은 비제한적이고, 본 발명은 일반적으로 컴퓨팅 및 데이터 구조에서 이익 및 장점을 제공하는 다양한 방식으로 사용될 수 있다.
도 2에 일반적으로 표현된 일 구현예에서, 여기 설명된 기술의 일부는 전형적인 노스브리지/사우스브리지 (Northbridge/Southbridge) 칩셋의 사우스브리지 구 성요소(202)에 결합되는 고속 비휘발성 메모리 장치(200)에 포함된다. 이러한 아키텍처에서 알려진 바와 같이, (도 1의 컴퓨터 시스템(110)에 대응할 수 있음) CPU(204)는 버스 및 노스브리지 구성요소(206)를 통해 동적 RAM(208)에 결합한다. 다음에, 노스브리지 구성요소(206)는 I/O 장치에 결합하는 다른 버스를 통해 사우스브리지 구성요소(202)에 결합한다. 많은 다른 종류의 장치가 연결될 수 있지만, 하드 디스크(210)는 고속 비휘발성 메모리 장치(200)와 함께 I/O 장치에 연결되는 것으로서 예시된다. 예를 들면, 확장성 목적상, 일부 예시적 아키텍처에서, 사우스게이트(202)는 PCI Express® (PCIe) 구성요소를 컴퓨터 시스템에 결합하기 위한 인터페이스를 갖고, 이것은 장치(200)와 같은 고속 비휘발성 메모리 장치가 결합될 수 있는 한가지 방식이다. 고속 비휘발성 메모리 장치를 결합하기 위한 데스크탑형 (예컨대, PCIe 카드)에 대한 대안은 미니-pci, PCMCIA, 및 익스프레스 카드와 같은 구성요소, 전용 커넥터로 플러그하도록 만들어진 구성요소 패키지, 또는 장치를 마더보드에 직접 결합(예컨대, 납땜)하는 것을 포함한다. 본질적으로 비휘발성 메모리 장치를 원하는 빠른 속도에 대해 충분한 컴퓨터 시스템에 결합하는 임의의 방식들 및/또는 수단들은 동등하다.
도 3은 플래시 메모리 장치(320-325)를 포함하는 고속 비휘발성 메모리 장치(200)의 일예를 도시한다. 이해될 수 있는 바와 같이, 이 장치는 본질적으로 병렬 판독 및 기록 동작을 가능하게 하는 인터리빙 기술을 통해 종래의 플래시 장치보다 더 빠르다. 플래시 메모리 (예컨대, NAND 기반 또는 NOR 기반)가 도시되었지 만, 배터리 백업 RAM을 포함하여, 임의의 비휘발성 저장 수단이 플래시 메모리 대신 또는 이에 추가하여 사용될 수 있음은 물론이다. 도 3에서 6개의 이러한 플래시 장치(320-325)가 예시되어 있지만, 메모리 장치(200)는 임의의 실제적인 갯수의 플래시 칩 등을 포함할 수 있음은 물론이다.
또한, 장치 제조자는 단일 집적회로 패키지에서 이 장치를 구현할 수 있고 및/또는 병렬 인터페이스를 더 많이 조합된 플래시 메모리 세트에 제공할 수 있음은 물론이고, 예컨대 영역을 분리하기 위한 6개의 병렬 인터페이스를 갖는 한 세트의 플래시 메모리는 본질적으로 각각이 자신의 인터페이스를 갖는 6개의 개별 플래시 칩과 동등하다. 즉, 복수의 별개의 플래시 메모리 장치(320-325) 등을 갖는 대신, 각각이 별개의 인터페이스 등을 통해, 동시에 액세스될 수 있는 내부적으로 병렬 영역을 갖는 단일의 메모리 장치를 갖는 것과 본질적으로 동등하다. 예를 들면, 비교적 훨씬 빠른 인터페이스를 갖는 NOR 타입 장치는 동시에 판독 및 기록될 수 있는 칩의 다중 영역을 제공할 수 있다. 여기 사용된 바와 같이, 플래시 메모리에 대한 "인터페이스"라는 용어는, 독립 플래시 장치를 포함하는 한 세트의 플래시 메모리 또는 별개의 액세스가능한 영역의 플래시 장치를 포함하는 한 세트의 플래시 메모리를 포함하여, 한 세트의 플래시 메모리와 통신하는 임의의 메커니즘을 포함한다.
바람직한 고속 동작을 달성하기 위해, 메모리 장치(200)는 제어기(330)를 포함한다. 제어기(330)는, 다른 것들 중에서 플래시에 대해 정해진 데이터가 수신되고 플래시로부터 판독된 데이터가 전송되는 플래시 인터페이스/프로토콜 및 외부 인터페이스/프로토콜에 대응하는 방식으로 플래시에 기록하고 플래시로부터 판독하는 법을 이해하는 논리(332)를 포함한다. 즉, 제어기 논리는 부분적으로 전송 메커니즘과 비휘발성 메모리 사이의 번역기로서 작용한다. 도 3의 예에서, 외부 인터페이스/프로토콜은 PCIe 표준에 기초하지만, 예컨대 SATA (Serial Advanced Technology Attachment) 기반 버스 인터페이스 및 프로토콜과 같은 실질적으로 임의의 적절한 데이터 통신 메커니즘 및 대응하는 프로토콜이 사용될 수 있음은 쉽게 이해할 수 있을 것이다. 또한, 적어도 하나의 데이터 라인이 필요하지만, 제어기(330)로 및 제어기(330)로부터의 대시 선(dashed line)으로 표시된 바와 같이 주어진 구성에서 더 많을 수 있고, 예컨대 다수의 PCIe 라인이 데이터를 전송할 수 있다.
제어기(330)와 같은 제어기는 다양한 방식으로 구현될 수 있다. 예를 들면, 제어기는 큰 블록 전송에 효과적인 간단한 인터리빙 방법을 갖는 비교적 직접적인 고속 비휘발성 메모리 장치에서 하드웨어에 내장된 자신의 논리를 가질 수 있다. 이러한 제어기는 최대절전모드 파일 저장 및 복구와 같은 태스크에 대한 성능을 얻기 위해 최적화될 수 있다. 부팅 데이터, 최대절전모드 파일, 정규 파일을 저장하기 위해 유연하고 및/또는 캐시로서 동작할 수 있는 (그리고 가능하다면 소거 횟수 평준화 기법 (wear leveling)과 같은 메모리 관리 기술을 수행할 수 있는) 좀 더 복잡한 제어기는, 필요하거나 원하는대로 제어기 논리에 업데이트가 이루어질 수 있도록 즉시 코딩될 수 있다. 제어기는 많은 판독 또는 기록 동작을 동시에 충족시킬 수 있다. 또한, 제어기는 얼마나 많은 I/O 데이터 라인 (예컨대, PCIe 라인) 이 사용중인지를 탐지하거나 알 수 있고 이에 따라 그 동작을 적용할 수 있다는 점에서 동적일 수 있다. 마찬가지로, 제어기는 얼마나 많은 플래시 인터페이스 및/또는 얼마나 많은 플래시 크기가 이용가능한지에 대해 적용되도록 코딩될 수 있어서, 제조자는 사용자가 플래시 장치를 추가하여 확장 (또는 제거하여 수정)할 수 있는 구성을 포함하여, 다른 플래시 구성을 갖는 동일한 제어기를 사용할 수 있다. 제어기는 적어도 하나의 다른 고속 비휘발성 메모리 장치를 탐지하거나 알 수 있고, 다른 장치의 제어기와 데이터 판독 및 기록을 통신하고 조정하여 예컨대 제2 카드 등을 단순히 추가함으로써 고속 비휘발성 메모리의 양을 확장하는 것을 허용할 수 있다. 예를 들면, 두개의 장치 시스템에서, 한 제어기는 다른 제어기가 자신의 플래시 저장소로 및 저장소로부터의 DMA 전송의 소정의 (예컨대 협의된) 절반을 처리하게 할 수 있고, 이에 의해 전체 속도가 두배로 된다 (DMA 채널이 충분하지 않다고 가정).
본질적으로 제어기(330)는 어느 데이터가 어느 플래시 위치로 기록되는지 추적하도록 인덱스(334)를 유지하면서 병렬로 플래시 장치(320-325)로 기록하고 플래시 장치(320-325)로부터 판독한다. 인덱스(334) (가능하다면 논리(330)는 물론)는 플래시 메모리 내에, 예컨대 플래시 장치(320-325) 중 하나에서 임의의 위치 내에 유지될 수 있다. 제어기(330)는 통상의 동작에서 임시 인덱스로서의 사용을 위해 고속 버퍼 작업 메모리(336)를 가질 수 있고, 이때 컨텐츠는 데이터 손실을 방지하기 위해 필요한 플래시 인덱스(334)에 대해 지속된다. 예를 들면, 고속 판독은, 각 데이터 전송에 대해 더 느린 플래시로부터 판독하는 대신에, 먼저 인덱싱 정보 를 플래시로부터 고속 버퍼/작업 메모리(336)로 복사하고, 다음에 데이터 전송을 설정하는 고속 버퍼/작업 메모리(336)를 액세스함으로써 성취될 수 있다. 또한, 아래 설명되는 바와 같이, 인덱스 데이터는, 각 부분 기록 또는 일부 더 작은 그룹의 부분 기록시 보다는, 기록될 전체 세트의 데이터의 성공적인 기록시 플래시에 대해 지속될 때까지 작업 메모리(336)에 유지될 수 있다.
도 3에 도시된 바와 같이, 각 메모리 장치(320-325)는 장치의 제어기(330)에 의해 본질적으로 동시에 액세스될 수 있고, 이것은 장치(200)가 DMA 기술을 사용하여 큰 블록의 데이터를 메인 시스템 메모리(208) (도 2)로 전송할 때를 포함하여 누적 데이터 율이 매우 높게 할 수 있다. 장치(200)에 기록하는 것은 비휘발성 메모리 기술이 기록시에 더 느리기 때문에 판독보다 상당히 더 느릴 수 있다. 예를 들면, 이것은 NAND 플래시 뿐만 아니라 표준 NAND 보다 훨씬 더 빨리 판독하는 OneNAND 형 하이브리드 메모리에도 적용된다.
일 구현예에서, 메모리 장치(200)는 블록 액세스 장치로서 구성되고, 이때 제어기 논리(332)는 예컨대 DMA에 의해 가능한 한 빨리 많은 데이터를 전송하도록 구성된다. 이 목적을 위해, 제어기는 어느 블록이 인덱스(334)에서 각 메모리 장치에 있는지 계속 추적한다. 또한, 제어기(330)는 어느 장치가 데이터의 어느 부분을 얻는지 관리할 수 있고, 이에 의해 데이터 제공자는 블록 크기를 포맷하고, 데이터를 할당 유닛 경계에 매칭하는 일에 관여할 필요가 없다. 대신에, 제어기 논리(332)는 예컨대 병렬 기록 및 판독을 다시 최대화하기 위해 원하는대로 큰 기록 요청을 세분하는 것은 물론, 소거 횟수 평준화 기법과 같은 다른 메모리 관리 기술을 수행한다.
논리의 일예로, 각각이 한번에 2킬로바이트 블록을 기록하도록 구성된 이용가능한 몇개의 플래시 인터페이스 (예컨대, 각 장치(320-325)에 대해 하나)와 함께 일부 데이터 소스(402) (도 4)로부터 제어기(330)에 의해 수신되는 비교적 큰 (예컨대, 2메가바이트) 데이터 기록 요청을 고려해 보자. 도 4에 명시적으로 도시되지는 않았지만, 제어기 논리(332)는 예컨대 이용가능한 메모리의 양이 주어지면 기록 요청이 너무 크지 않음을 보장하기 위해 체크 등을 수행할 수 있고, 및/또는 임의의 캐시된 데이터를 하드 디스크로 이동시켜 공간을 만들 수 있는데, 예컨대 프로그램의 임시 캐시된 데이터가 최대절전모드 파일을 위한 공간을 만들기 위해 하드 디스크로 이동될 수 있다.
도 4에 예시된 바와 같이, 제어기 논리(332)는 블록이 이용가능한 별개의 플래시 인터페이스에 병렬로 기록되도록 데이터를 인터리빙하는데, 예컨대, 제1 플래시 인터페이스가 이에 대한 처음 2킬로바이트의 기록하기 위해 선택되고, 다음 2 킬로바이트를 플래시 칩(321)에 기록한다. 이 목적을 위해, 제어기는 데이터가 수신되는대로 데이터를 버퍼링할 수 있고 (단계 442 및 444), 이것은 버퍼가 다 채워질 때까지 나머지 단계와 무관하게 (그리고 병렬로) 발생할 수 있다. 쉽게 알 수 있는 바와 같이, 각 블록에 대해 데이터를 취급하기에 충분히 큰 버퍼를 가짐으로써, 예컨대, 한 번에 두 블록씩 기록되는 6개의 플래시 칩에 대해 적어도 12 킬로바이트 이외에 전체 세트의 기록이 발생하는 동안 다음 블록을 모으기 시작하기 위해 추가적인 양을 가짐으로써, 병렬 기록의 양은 본질적으로 최대화된다. 제어기 는 그 버퍼가 다 채워질 때 비지(busy) 등을 출력한다.
단계 448에서, 적어도 블록크기 양의 데이터가 버퍼링될 때, 논리는 버퍼로부터 현재 선택된 플래시 인터페이스에서 한 위치로 적절한 크기의 블록을 기록하고, 현재 선택될 때 다음 블록을 다음 플래시 인터페이스에서 한 위치로 기록한다. 블록이 성공적으로 기록될 때마다, 단계 450에서, 인덱스(334)는 데이터가 판독 요청시 나중에 재조립될 수 있도록 업데이트된다. 예를 들면, 수신된 데이터 오프셋 또는 대응하는 주문 정보, 인터페이스 식별자 (예컨대, 어느 플래시 칩인지), 및 플래시로의 오프셋 위치는 기록되는 각 블록에 대해 기본 인덱스 레코드로서 충분할 것이고, 이 인덱스와 관련하여 데이터를 자신의 적절한 위치로 반환하는 데 필요한 정보, 예컨대 파일을 저장하면 파일 속성들일 것이다. 데이터로의 임의 액세스가 필요하지 않으면, 예컨대 데이터가 단지 연속적으로 다시 판독되도록 허용된다면, 데이터 오프셋/주문 정보는 내재적일 수 있고, 예컨대, 인덱스(334)가 데이터 블록이 순서대로 기록되도록 주문되면, 수신된 데이터 오프셋 또는 주문 정보는 유지될 필요가 없다. 그러나, 이것은 타이밍이 예컨대 잘못된 기록 때문에 변하는 경우에 제어기가 주문을 조정해야 한다는 것을 의미할 것이다.
또한, 인덱싱 방식 대신에 또는 이와 관련하여 소정의 규정이 사용될 수 있다. 예를 들면, 처음 2킬로바이트 블록은 한 시작 오프셋에서 하나의 플래시 장치에 기록될 수 있고, 다음 2킬로바이트 블록은 자신의 시작 오프셋에서 다음 플래시 장치에 기록될 수 있다. 이러한 규정을 이용하여, 시작 플래시 장치 및 각 플래시 장치에 대한 시작 오프셋만이 기록될 필요가 있고, 이것은 예컨대 데이터의 시작에 서 헤더 등에 있을 수 있다 (예컨대, 6개의 포인터, 각 장치에 대해 하나씩). 이것은 인덱싱 방식에 비해 공간을 절약할 것이다. 예컨대, 소거 횟수 평준화 기법, 오류 정정 등을 위해 소정의 규정이 수정될 필요가 있는 경우에 예외가 기록될 수 있다. 예를 들면, 각 오프셋을 인덱싱하는 대신에, 오프셋이 규정을 만족할 때마다, 즉 이전의 오프셋으로부터 2 킬로바이트인 것이면, 이 오프셋이 공백으로 남겨질 수 있는 압축형(compressed-type) 인덱싱 방식이 사용될 수 있다.
도 4의 논리 예는 현재 선택된 플래시 인터페이스로의 오프셋 위치 (그리고 필요하다면 플래시 인터페이스 자체)가 변경될 수 있는 단계 446을 포함한다. 위치를 선형적으로 진행하게 하지 않는 이유는 소거 횟수 평준화 기법을 수행하는 것, 임의의 오류 정정을 수행하는 것 (예컨대, 공지의 잘못된 블록을 바이패스하기 위해)을 포함할 수 있고, 예컨대 인덱스를 지속하기 위해 예비된 것과 같은 임의의 예비된 플래시 영역 및 가능하다면 논리 (또는 지속되는 논리에 대한 업데이트/연장) 를 저장하기 위한 임의의 예비된 플래시 영역이 덧씌어지지 않음을 보장하기 위해서이다.
상기한 바와 같이, 단계 448은 기록을 나타내고, 단계 450은 인덱싱을 나타낸다. 이들 두 단계는 본질적으로 사실상 거래적이어서, 예컨대 기록에 대응하는 데이터는 기록이 성공적일 때까지, 예컨대 잘못된 블록이 검출되는 것 때문에 기록이 다른 블록으로 재시도될 필요가 있는 경우에, 인덱스에 관련되지 않는다. 이 기록이 일어나는 동안, 제어기는 더 많은 데이터가 이용가능한 때 (단계 452)를 기다리지 않고, 대신에 데이터의 다음 블록을 기록하기 위한 다음 플래시 인터페이스 를 선택한다 (단계 454). 본질적으로, 제어기는 그 수신 버퍼가 다 채워질 때까지 데이터를 모으고, 모든 (또는 일부 원하는 갯수의) 플래시 인터페이스가 점유될 때까지 플래시로의 기록을 수행하고, 단지 원하는 갯수의 플래시 인터페이스가 사용 중인 때 기록을 지연시킨다.
기록될 데이터가 남아 있지 않으면, 단계 452는 단계 456으로 분기하여 인덱스(334)가 현재 기록된 데이터와 연관하여 지속된다. 따라서 지속 전에 인덱스를 버림으로써 불완전한 기록이 방지될 수 있다. 이것은 또한 전체 기록이 완료될 때 지속될 때까지 인덱스(334)가 초고속 SRAM 또는 DRAM 메모리에 일시적으로 유지될 수 있기 때문에 더 빠른 속도를 제공한다. 성공적으로 지속되면, 성공 등이 리턴되고, 그렇지 않으면 오류코드가 리턴된다. 전체 데이터 기록당 한번 (예컨대 블록 기록당 한번) 보다 더 빈번하게 플래시하기 위해 인덱스를 지속하는 것이 장치를 느리게 할지라도, 불완전한 기록은 모든 데이터가 기록되기 전에 임의의 성공적인 기록에 대한 인덱싱 정보를 지속함으로써 허용될 수 있다.
도 5는 일부 데이터 요청자로부터의 판독 요청을 처리하는 논리 예를 나타낸다. 이 요청은 본질적으로 임의 종류, 예컨대 파일을 판독하고, 캐시로부터 판독하고, "오픈" 파일의 일부를 판독하는 것 등일 수 있지만, 이 예의 목적상, 예컨대 시작부터 끝까지 최대절전모드 파일을 판독하기 위하여 일반적으로 연속적인 블록 데이터 전송으로서 설명될 것이다.
단계 550은 이 요청에 대한 대응하는 (예컨대, 지속되는) 인덱스를 찾는 것을 나타내고, 만일 작업 메모리에서 이미 하지 않았으면, 인덱스(334)를 판독하여 작업 메모리(336)로 입력할 수 있다. 예컨대 파일당 하나씩 어떤 데이터가 저장되는지에 따라 다른 인덱스가 있을 수 있다.
단계 552는 이 요청에 대한 제1 인덱스 입력을 선택하는 것을 나타낸다. 이 인덱스는 데이터가 수신된 순서를 반영하는 방식으로 저장되었을 수 있고, 그 경우에 어느 인덱스 입력이 처음인지 정렬하거나 그렇지 않으면 결정할 이유가 없다. 일부 오프셋으로부터 판독된 임의 액세스의 경우에, 판독할 제1 세트의 데이터는 시작 오프셋 값에 의해 결정될 수 있고, 이에 의해 제어기 논리(332)는 어느 2 킬로바이트 블록이 요청된 제1 세트의 데이터를 포함하는지 정확히 찾기 위하여 인덱스의 데이터를 스캔할 수 있고, 리터닝을 시작하기 위해 그 블록 내의 정확한 바이트를 결정하는 수학을 수행할 수 있다.
단계 554 및 556은 인덱스 데이터를 통해 결정된 올바른 위치에서 올바른 플래시 인터페이스 (또는 장치)로부터의 판독에 대한 것이다. 이 데이터는 플래시로부터 판독되어 출력 버퍼에 저장되고 (예컨대, 작업 메모리(336)에서), 이때 버퍼의 컨텐츠는 데이터가 플래시 판독을 통해 이용가능해짐에 따라 단계 558에서 출력된다 (예컨대, 장치(200) 또는 각 인터페이스에 대한 DMA 엔진을 통해). 플래시 판독은 DMA/PCIe를 통해 데이터를 출력하는 것에 비해 오랜 시간이 걸릴 수 있으므로, 제어기는 데이터가 이용가능하지 않을 때 데이터를 출력하지 않는다 (그리고 필요하다면 비동기 동작을 용이하게 하기 위해 비지(busy) 신호를 보낼 수 있다). 다른 플래시 인터페이스로부터의 판독은, 단계로 다시 반복실행하거나 또는 인덱스를 통해 이동하여 (단계 552 및 554) 올바를 데이터를 다시 판독하여 올바른 위치 로 다시 전송하기 위해 출력 버퍼로 저장함으로써, 단계 560 및 562를 통해 병렬로 수행된다. 다중의 DMA 엔진(570) (예컨대, 플래시 장치당 하나)은 버스를 제어하여 전송을 달성하기 위해 설정될 수 있고, 장치(200) 내에, 사우스브리지(202) 내에, 및/또는 독립 구성요소로서 상존할 수 있고, 이러한 엔진은 장치 제어기(330), BIOS 및/또는 CPU(204)에 의해 제어될 수 있다. 예를 들면, 도 3의 고속 메모리 장치(200)를 이용하여, 요청된 데이터가 메인 메모리 (예컨대, 도 2의 RAM(208))로 완전히 다시 전송될 때까지 6개의 별개의 병렬 DMA 전송이 설정되어 임의의 주어진 시간에 발생할 수 있다.
모든 데이터가 예컨대 DMA를 통해 다시 전송된 때, 제어기는 예컨대 "성공" 오류코드 등을 통해 단계 564에서 "완료" 상태를 신호보낼 수 있다. 다수의 요청에 대해, 각 요청에 대한 식별자 (가상 블록)는 리턴될 수 있고, 예컨대 판독 요청 X (기록 시간에 식별되는 기록 요청 X에 대응)는 성공적으로 메모리로 다시 전송되었다. 이런 식으로, 요청자는, 예컨대 플래시로부터 다시 판독된 순서, 장치들 사이의 상이한 판독 속도 등의 면에서, 플래시가 어떻게 액세스되었는지에 상관없이, 현재 RAM 내에 있음을 안다. 이 때, 데이터 요청자(502)는 모든 요청된 데이터가 올바른 RAM 메모리 위치에 있음을 안다. 타임아웃 또는 비성공 오류코드는 실패시에 요청자에 의해 검출될 수 있다.
완전히 전력이 단절된 상태 (예컨대, ACPI S5 상태)에서 콜드 부팅시, 컴퓨터 시스템을 더 빨리 부팅하는 소프트웨어 솔루션과 함께 고속 메모리 장치(200)의 전형적인 하드웨어 구현예를 사용하는 예의 경우, 장치(200)는 부팅에 필요한 모든 (또는 대부분의) 파일 및 다른 정보를 보유할 수 있다. 이 파일들은 DMA (direct memory access)에 의해 시스템 메모리에 구성된 RAM 디스크로 전송될 수 있고, 컴퓨터 시스템은 RAM 디스크로부터 부팅된다. 쉽게 알 수 있는 바와 같이, 이것은 필요한 파일이 종래의 하드 디스크 드라이브로부터 수행될 수 것보다 훨씬 더 빠르게 액세스될 수 있게 한다.
다른 즉각적인 부팅 솔루션은 기가비트 이더넷 등과 같은 비교적 고속인 네트워크로 작업할 수 있다. 이 다른 예에서, 네트워크 장치는 특정 네트워크 자원에 액세스하도록 요청받고 상기 솔루션에서 전체적으로 설명한 바와 같이 이를 DMA를 통해 메모리로 전송한다.
최대절전모드 상태로 들어가는 것에 대해, 최대절전모드시에 RAM 컨텐츠를 포함하는 최대절전모드 파일은 플래시로 기록된다. 예를 들면, BIOS는 RAM의 컨텐츠를 예컨대 RAM내에서 압축된 최대절전모드 파일로 구성할 수 있고, 제어기(330)로의 단일 요청을 통해 고속 비휘발성 저장 장치(200)에서 지속을 위해 DMA를 통해 최대절전모드 파일을 전송할 수 있다. 큰 사이즈의 전송은 오버헤드의 면에서 상당한 시간을 절약하고, 예컨대, 하나의 2.6 기가비트 PCIe 라인을 이용하여, 200 메가바이트는 기록자의 관점으로부터의 단일 요청으로 2킬로바이트의 6개의 인터페이스 플래시 장치로 전송될 수 있다. 상술된 바와 같이, 제어기는 6개의 플래시 인터페이스를 병렬로 기록하고, 본질적으로 하나의 장치가 기록될 수 있는 것보다 6배나 더 빨리 기록한다.
최대절전모드 상태로부터 재개하는 것에 대해, 예컨대, 컴퓨터 시스템이 ACPI S4 슬립 상태로부터 재개할 때, 최대절전모드시에 RAM 컨텐츠를 포함하는 최대절전모드 파일은 메인 메모리로 다시 전송된다. 이것은 예컨대 장치 제어기가 각 메모리 장치(320-325)에 대해 DMA 엔진을 시작하게 함으로써 매우 빨리 (하드 디스크 판독에 비해) 달성된다.
최대절전모드에 대해 블록 모드 장치로서 구성되는 대신에, 다른 비휘발성 장치가 일반적으로 메인 시스템 메모리를 저장하고 이를 복원하는 인터페이스를 가질 수 있다. 예를 들면, 프로토콜은 시스템 BIOS가 인터페이스를 호출하도록 구현될 수 있고, 이에 의해 메인 메모리의 스냅샷이 비휘발성 장치로 및 비휘발성 장치로부터 전송되어, 본질적으로 BIOS가 "quasi-S3" 재개를 수행하게 한다. quasi-S3 시나리오의 일예에서, 사용자 또는 시스템은 대기상태로 들어갈 수 있고, 메모리 컨텐츠의 스냅샷 (최대절전모드 파일의 형태일 수 있음)이 고속 비휘발성 메모리 장치로 BIOS에 의해 자동 저장되게 할 수 있다. BIOS는 소정 시간이 만료한 후에 시스템 전원을 오프하는 것과 같은 동작을 수행할 수 있고, 전원이 오프되거나 손실되면 고속 비휘발성 메모리 장치로부터 복원될 수 있고, 또는 전원이 오프되지 않으면 고속 비휘발성 메모리로부터 다시 판독함 없이 대기상태로 복원될 수 있다. BIOS를 통해, 사용자 또는 시스템은 예컨대 바로 최대절전모드로 들어가고 최대절전모드로부터 복원함으로써 표준 S4 최대절전모드를 수행할 수 있다.
임의의 실제적인 양의 비휘발성 메모리가 장치에 존재할 수 있다 하더라도, 부팅 및 최대절전모드를 최적화하기 위해, 전체 최대절전모드 파일 및/또는 모든 또는 대부분의 부팅 파일을 유지하기에 충분한 메모리 용량을 가지는 것이 바람직 하다. 예를 들면, 최대절전모드를 위해 비휘발성 양이 압축될 때 휘발성 메모리 컨텐츠의 크기에 대응할지라도, 장치에서 이용가능한 대략 128 또는 256 메가바이트일 수 있다. 더 큰 용량 비휘발성 장치는 부팅을 지속하고 파일을 재개할 수 있다.
인터페이스를 병렬로 관리하기 위해 제어기를 제공함으로써, 동시에 제어기가 요청을 분할하게 하여 오직 하나의 요청만이 임의의 크기의 기록 또는 판독을 취급할 수 있게 하고 이에 의해 메인 프로세서의 일부에서 오버헤드를 제거하는 동안에, 상당한 속도 이득이 달성된다. 그럼에도 불구하고, 메인 프로세서는, 예컨대 최대절전모드에서 복원시, 다른 가상 블록이 여전히 전송되고 있는 동안에 처음 복원되는 일부 코드를 실행하는 것을 시작하기 위하여, 원하는 요청을 기록 및 추후 판독을 위해 가상 블록으로 분리할 수 있다. 임의의 실제적인 수의 가상 블록이 유지될 수 있고, 그러나 파일 시스템과 달리, 요청에 대응하여 가상 블록 크기는 가변적이다. 이로써, 기록 및 판독 요청자는 플래시 기록 및 판독을 위한 데이터를 포맷하는 것에 관여할 필요가 없다.
고속 비휘발성 메모리 장치에 대한 다른 사용 모델은 메인 시스템 휘발성 (예컨대, DRAM) 메모리를 보충하는 것을 포함한다. 예를 들면, 비교적 큰 캐시는 데이터를 메인 메모리 내 및 외부로 스와핑하는 장치에 의해 제공될 수 있다. 이 예에서, 고속 비휘발성 메모리 장치는 가상 메모리 스와핑을 위해 하드 디스크에 액세스할 필요성을 감소시키는 (그리고 때로 제거할 수 있는) 중간 캐시로서 역할할 수 있다. 파일 시스템은 고속 비휘발성 메모리 장치에 파일을 기록할 수 있다. 쉽게 알 수 있는 바와 같이, 이러한 사용 예는 애플리케이션 및 다른 프로그램의 성능을 향상시킨다.
고속 비휘발성 메모리 장치에 대한 다른 사용 모델은 메인 시스템 CPU가 동작하지 않을 때 또는 달리 점유될 때 시스템 구성요소를 위한 저장소를 제공하는 것이다. 예를 들면, 네트워크 카드, 팩시밀리 카드, 보조 장치 등은 각각 CPU 보조없이 데이터를 고속 비휘발성 메모리 장치로 판독 및 기록하도록 구성될 수 있다.
본 발명은 다양한 수정 및 다른 구성이 가능하지만, 임의의 예시된 본 발명의 실시예가 도면에 도시되고 상기에서 구체적으로 설명되었다. 그러나, 본 발명을 상기 특정 형태에 한정하려는 것이 아니며 이와 반대로 모든 수정, 다른 구성, 및 본 발명의 사상과 범위에 해당하는 균등물을 포함하는 것이다.

Claims (19)

  1. 컴퓨팅 환경에서,
    데이터를 비휘발성 저장 장치에 기록할 것을 지시하는 데이터 전송 요청을 수신하는 단계 - 전송될 상기 데이터는 상기 비휘발성 저장 장치의 데이터 포맷 요건과 일치할 필요는 없음 - ;
    데이터 전송 메커니즘을 통해 상기 요청에 대응하는 데이터를 수신하는 단계;
    복수의 비휘발성 저장 장치 인터페이스로의 기록을 위해 상기 데이터를 번역(translating)하는 단계 - 상기 번역하는 단계는 상기 데이터의 일부를 하나의 인터페이스를 통해 기록하는 단계를 포함하고, 상기 데이터의 상기 일부를 상기 하나의 인터페이스를 통해 기록하는 동안에 상기 데이터의 다른 일부를 적어도 하나의 다른 인터페이스를 통해 기록하는 단계를 포함함 - ; 및
    상기 데이터의 각 부분이 어느 비휘발성 저장 장치 인터페이스에 기록되었는지 추적하는 상기 데이터와 연관된 정보를 유지하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 데이터를 수신하는 단계는 DMA (direct memory access) 전송 메커니즘을 통해 상기 데이터를 수신하는 단계를 포함하는 방법.
  3. 제1항에 있어서,
    상기 데이터를 번역하는 단계는 상기 데이터를 버퍼링하는 단계 및 비휘발성 저장 블록 크기에 기초하여 상기 데이터의 양을 기록하는 단계를 포함하는 방법.
  4. 제1항에 있어서,
    상기 데이터의 적어도 일부를 상기 데이터의 그 부분이 기록되었던 인터페이스를 통해 판독하는 단계를 포함하여, 상기 유지된 정보를 이용하여 상기 데이터를 판독하는 단계를 더 포함하는 방법.
  5. 제4항에 있어서,
    상기 데이터를 수신하는 단계는 컴퓨터 시스템의 감소된 전력 상태에 들어가는 것과 관련하여 메모리 컨텐츠에 대응하는 데이터를 수신하는 단계를 포함하고, 상기 유지된 정보를 이용하여 상기 데이터를 판독하는 단계는 나중에 상기 메모리 컨텐츠를 복원하는 단계를 포함하는 방법.
  6. 제4항에 있어서,
    상기 데이터를 수신하는 단계는 컴퓨터 시스템에 대한 부팅 관련 정보를 수신하는 단계를 포함하고, 컴퓨터 시스템을 부팅하기 위해 판독되는 상기 데이터의 적어도 일부를 사용하는 단계를 더 포함하는 방법.
  7. 제1항에 있어서,
    상기 정보를 유지하는 단계는 기록되는 상기 데이터의 대응하는 적어도 일부와 연관하여 적어도 하나의 오프셋 값을 유지하는 단계를 포함하는 방법.
  8. 제5항에 있어서,
    상기 데이터의 상기 일부에 대응하는 블록에 대해 오프셋 값을 결정하는 단계 및 상기 오프셋 값에 대응하는 위치에서 상기 블록을 기록하는 단계를 더 포함하는 방법.
  9. 컴퓨팅 환경에서,
    각각이 대응하는 인터페이스를 통해 액세스가능한 한 세트의 비휘발성 저장 장치에 대응하는 복수의 비휘발성 저장 장치 인터페이스; 및
    상기 인터페이스를 통해 상기 비휘발성 저장 장치에 결합된 제어기를 포함하는 시스템으로서,
    상기 제어기는,
    a) 한 세트의 데이터에 대응하는 기록 요청을 처리하는 논리(logic)로서, 상기 인터페이스 중 적어도 두개 사이에서의 기록을 인터리빙하고, 하나의 인터페이스를 통해 상기 데이터의 일부를 기록하는 한편 적어도 다른 하나의 인터페이스를 통해 상기 데이터의 다른 일부를 기록하는 단계를 포함하고, 데이터의 각 부분이 어느 인터페이스에 의해 기록되었는지 나중에 결정하기 위해 사용가능한 데이터와 관련한 정보를 유지함으로써, 상기 한 세트의 데이터가 비휘발성 저장 블록 기록 크기보다 더 크도록 허용되고; 및
    b) 데이터의 각 부분이 어느 인터페이스에 의해 기록되었는지 결정하기 위해 상기 유지된 정보를 이용하고, 각 부분에 대해, 상기 인터페이스를 통해 상기 데이터의 그 일부를 판독함으로써, 상기 한 세트의 데이터에 대응하는 판독 요청을 처리하는 논리를 포함하는 시스템.
  10. 제9항에 있어서,
    상기 제어기는 메인 메모리에 결합되고, 상기 메인 메모리로부터 DMA (direct memory access) 전송에 의한 기록을 위한 상기 데이터를 수신하고, DMA 전송에 의해 판독되는 데이터를 상기 메인 메모리로 전송하는 시스템.
  11. 제9항에 있어서,
    상기 비휘발성 저장 장치는 플래시 메모리를 포함하는 시스템.
  12. 제9항에 있어서,
    상기 제어기는 PCI Express® 메커니즘에 의해 컴퓨터 시스템에 결합되는 시스템.
  13. 제9항에 있어서,
    상기 제어기는 컴퓨터 시스템의 메인 메모리에 결합되고, 상기 제어기는 컴퓨터 시스템의 감소된 전력 상태로 들어가는 것과 관련하여 메인 메모리 컨텐츠에 대응하는 데이터를 지속하도록 상기 기록 요청을 처리하고, 상기 제어기는 나중에 상기 메인 메모리 컨텐츠를 복원하도록 상기 판독 요청을 처리하는 시스템.
  14. 제9항에 있어서,
    상기 제어기는 컴퓨터 시스템을 부팅하기 위해 사용되는 정보를 출력하도록 상기 판독 요청을 처리하는 시스템.
  15. 컴퓨터 실행가능 명령어를 갖는 컴퓨터 판독가능 매체에 있어서, 상기 컴퓨터 실행가능 명령어는, 실행 시에,
    비휘발성 메모리에 한 세트의 데이터를 저장하도록 기록 요청을 수신하는 단계 - 데이터의 양은 상기 비휘발성 메모리에 기록하기 위한 블록 크기에 대해 임의적(arbitrary)임 - ;
    동시에 적어도 2개의 인터페이스를 통해 기록함으로써, 비휘발성 메모리 세트들에 대한 복수의 인터페이스에 대해 상기 한 세트의 데이터의 블록 크기의 서브세트를 인터리빙하는 단계를 포함하여 상기 기록 요청을 처리하는 단계;
    상기 블록 크기의 서브세트가 상기 비휘발성 메모리 세트들 중에서 어떻게 위치하는지에 대한 정보를 유지하는 단계;
    상기 기록 요청이 완료됨을 신호보냄(signaling)으로써 상기 기록 요청을 완료하는 단계;
    상기 기록 요청이 완료된 후에 상기 한 세트의 데이터의 적어도 일부를 출력하도록 판독 요청을 수신하는 단계;
    출력되는 요청 데이터가 상기 기록 요청을 처리하면서 발생한 상기 인터리빙에 의해 변경되지 않도록 상기 판독 요청에 응답하여 상기 요청 데이터를 출력하기 위해 상기 유지된 정보를 이용하는 단계; 및
    상기 판독 요청이 완료됨을 신호보냄으로써 상기 판독 요청을 완료하는 단계
    를 포함하는 컴퓨터 판독가능 매체.
  16. 제15항에 있어서,
    상기 기록 요청을 처리하는 단계는 DMA 전송 메커니즘을 통해 데이터를 수신하는 단계를 포함하고, 상기 유지된 정보를 이용하여 요청 데이터를 출력하는 단계는 DMA 전송 메커니즘을 통해 데이터를 출력하는 단계를 포함하는 컴퓨터 판독가능 매체.
  17. 제15항에 있어서,
    상기 기록 요청을 처리하는 단계는 컴퓨터 시스템의 감소된 전력 상태에 들어가는 것과 관련하여 메모리 컨텐츠에 대응하는 데이터를 저장하는 단계에 대응하고, 상기 유지된 정보를 이용하여 요청 데이터를 출력하는 단계는 재개시에 상기 메모리 컨텐츠를 복원하는 단계에 대응하는 컴퓨터 판독가능 매체.
  18. 제15항에 있어서,
    상기 유지된 정보를 이용하여 요청 데이터를 출력하는 단계는 컴퓨터 시스템 부팅시 사용되는 데이터를 제공하는 단계에 대응하는 컴퓨터 판독가능 매체.
  19. 제15항에 있어서,
    상기 기록 요청을 처리하는 단계는 캐시된 데이터를 저장하고 및/또는 파일을 저장하는 단계에 대응하는 컴퓨터 판독가능 매체.
KR1020087029833A 2006-06-09 2007-06-01 고속 비휘발성 메모리 장치 및 방법, 컴퓨터 판독가능 매체 KR20090028518A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/450,015 2006-06-09
US11/450,015 US7620784B2 (en) 2006-06-09 2006-06-09 High speed nonvolatile memory device using parallel writing among a plurality of interfaces

Publications (1)

Publication Number Publication Date
KR20090028518A true KR20090028518A (ko) 2009-03-18

Family

ID=38823271

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087029833A KR20090028518A (ko) 2006-06-09 2007-06-01 고속 비휘발성 메모리 장치 및 방법, 컴퓨터 판독가능 매체

Country Status (4)

Country Link
US (1) US7620784B2 (ko)
KR (1) KR20090028518A (ko)
CN (1) CN101467136A (ko)
WO (1) WO2007145869A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101235854B1 (ko) * 2010-08-27 2013-02-20 삼성전자주식회사 화상형성장치, SoC 유닛 및 그 구동 방법

Families Citing this family (125)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9171585B2 (en) 2005-06-24 2015-10-27 Google Inc. Configurable memory circuit system and method
US10013371B2 (en) 2005-06-24 2018-07-03 Google Llc Configurable memory circuit system and method
US20080028136A1 (en) 2006-07-31 2008-01-31 Schakel Keith R Method and apparatus for refresh management of memory modules
US8386722B1 (en) 2008-06-23 2013-02-26 Google Inc. Stacked DIMM memory interface
US8130560B1 (en) 2006-11-13 2012-03-06 Google Inc. Multi-rank partial width memory modules
US8090897B2 (en) 2006-07-31 2012-01-03 Google Inc. System and method for simulating an aspect of a memory circuit
US9542352B2 (en) 2006-02-09 2017-01-10 Google Inc. System and method for reducing command scheduling constraints of memory circuits
US8335894B1 (en) 2008-07-25 2012-12-18 Google Inc. Configurable memory system with interface circuit
US8055833B2 (en) 2006-10-05 2011-11-08 Google Inc. System and method for increasing capacity, performance, and flexibility of flash storage
US8077535B2 (en) 2006-07-31 2011-12-13 Google Inc. Memory refresh apparatus and method
US8397013B1 (en) 2006-10-05 2013-03-12 Google Inc. Hybrid memory module
US7386656B2 (en) 2006-07-31 2008-06-10 Metaram, Inc. Interface circuit system and method for performing power management operations in conjunction with only a portion of a memory circuit
US8327104B2 (en) 2006-07-31 2012-12-04 Google Inc. Adjusting the timing of signals associated with a memory system
US8438328B2 (en) 2008-02-21 2013-05-07 Google Inc. Emulation of abstracted DIMMs using abstracted DRAMs
US20080082763A1 (en) 2006-10-02 2008-04-03 Metaram, Inc. Apparatus and method for power management of memory circuits by a system or component thereof
US8081474B1 (en) 2007-12-18 2011-12-20 Google Inc. Embossed heat spreader
US8089795B2 (en) 2006-02-09 2012-01-03 Google Inc. Memory module with memory stack and interface with enhanced capabilities
US8041881B2 (en) 2006-07-31 2011-10-18 Google Inc. Memory device with emulated characteristics
US8244971B2 (en) 2006-07-31 2012-08-14 Google Inc. Memory circuit system and method
US8060774B2 (en) 2005-06-24 2011-11-15 Google Inc. Memory systems and memory modules
US7392338B2 (en) 2006-07-31 2008-06-24 Metaram, Inc. Interface circuit system and method for autonomously performing power management operations in conjunction with a plurality of memory circuits
US8111566B1 (en) 2007-11-16 2012-02-07 Google, Inc. Optimal channel design for memory devices for providing a high-speed memory interface
US9507739B2 (en) 2005-06-24 2016-11-29 Google Inc. Configurable memory circuit system and method
US8359187B2 (en) 2005-06-24 2013-01-22 Google Inc. Simulating a different number of memory circuit devices
US8796830B1 (en) 2006-09-01 2014-08-05 Google Inc. Stackable low-profile lead frame package
KR101303518B1 (ko) 2005-09-02 2013-09-03 구글 인코포레이티드 Dram 적층 방법 및 장치
US9632929B2 (en) 2006-02-09 2017-04-25 Google Inc. Translating an address associated with a command communicated between a system and memory circuits
US7724589B2 (en) 2006-07-31 2010-05-25 Google Inc. System and method for delaying a signal communicated from a system to at least one of a plurality of memory circuits
US8117414B2 (en) * 2006-09-04 2012-02-14 Sandisk Il Ltd. Method for prioritized erasure of flash memory
US7975119B2 (en) * 2006-09-04 2011-07-05 Sandisk Il Ltd Device for prioritized erasure of flash memory
JP4247262B2 (ja) * 2006-09-29 2009-04-02 株式会社東芝 集積回路装置
US20080247543A1 (en) * 2007-02-22 2008-10-09 Colin Kennedy Mick Method and apparatus for protecting digital rights of copyright holders of publicly distributed multimedia files
US8443187B1 (en) 2007-04-12 2013-05-14 Marvell International Ltd. Authentication of computing devices in server based on mapping between port identifier and MAC address that allows actions-per-group instead of just actions-per-single device
US8209479B2 (en) 2007-07-18 2012-06-26 Google Inc. Memory circuit system and method
US8080874B1 (en) 2007-09-14 2011-12-20 Google Inc. Providing additional space between an integrated circuit and a circuit board for positioning a component therebetween
CN101187830B (zh) * 2007-12-27 2012-05-23 成都市华为赛门铁克科技有限公司 掉电保护方法、装置、逻辑器件及存储系统
US7971081B2 (en) * 2007-12-28 2011-06-28 Intel Corporation System and method for fast platform hibernate and resume
JP5253901B2 (ja) 2008-06-20 2013-07-31 株式会社東芝 メモリシステム
US8510560B1 (en) 2008-08-20 2013-08-13 Marvell International Ltd. Efficient key establishment for wireless networks
US8914653B2 (en) * 2008-09-05 2014-12-16 Hewlett-Packard Development Company, L.P. Method and system for providing hybrid-shutdown and fast startup processes
KR101595043B1 (ko) 2008-09-18 2016-02-17 마벨 월드 트레이드 리미티드 적어도 부분적으로 부팅 동안에 어플리케이션들을 메모리에 프리로딩하는 방법
US8321878B2 (en) * 2008-10-09 2012-11-27 Microsoft Corporation Virtualized storage assignment method
US8219741B2 (en) 2008-10-24 2012-07-10 Microsoft Corporation Hardware and operating system support for persistent memory on a memory bus
US20100153635A1 (en) * 2008-12-17 2010-06-17 Seagate Technology Llc Storage device with expandable solid-state memory capacity
ITMI20082331A1 (it) * 2008-12-29 2010-06-30 Giovanni Lucchetta Disco a stato solido, particolarmente per la memorizzazione di dati digitali.
JP5218147B2 (ja) * 2009-02-26 2013-06-26 富士通株式会社 ストレージ制御装置,ストレージ制御方法およびストレージ制御プログラム
US8285917B2 (en) * 2009-03-26 2012-10-09 Scaleo Chip Apparatus for enhancing flash memory access
JP2010271980A (ja) * 2009-05-22 2010-12-02 Access Co Ltd 端末装置、端末装置の起動方法およびプログラム
JP4986247B2 (ja) * 2009-06-02 2012-07-25 株式会社ユビキタス プログラム、制御方法、並びに制御装置
WO2010144624A1 (en) 2009-06-09 2010-12-16 Google Inc. Programming of dimm termination resistance values
US8275981B2 (en) * 2009-07-23 2012-09-25 Stec, Inc. Flash storage system and method for accessing a boot program
US8144515B2 (en) * 2009-07-23 2012-03-27 Stec, Inc. Interleaved flash storage system and method
US8930732B2 (en) * 2009-10-14 2015-01-06 National Chung Cheng University Fast speed computer system power-on and power-off method
JP2011107925A (ja) * 2009-11-17 2011-06-02 Ubiquitous Corp プログラム、制御方法、並びに制御装置
US8266369B2 (en) * 2009-12-18 2012-09-11 Nxp B.V. Flash memory interface
EP2418584A1 (en) 2010-08-13 2012-02-15 Thomson Licensing Method and apparatus for storing at least two data streams into an array of memories, or for reading at least two data streams from an array of memories
US8588228B1 (en) * 2010-08-16 2013-11-19 Pmc-Sierra Us, Inc. Nonvolatile memory controller with host controller interface for retrieving and dispatching nonvolatile memory commands in a distributed manner
US9069475B1 (en) 2010-10-26 2015-06-30 Western Digital Technologies, Inc. Hybrid drive selectively spinning up disk when powered on
WO2012082792A2 (en) * 2010-12-13 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for auto-commit memory
US8370667B2 (en) 2010-12-22 2013-02-05 Intel Corporation System context saving based on compression/decompression time
US8839275B1 (en) 2011-06-06 2014-09-16 Proximal Data, Inc. Method for intercepting input/output requests and responses
US9141394B2 (en) 2011-07-29 2015-09-22 Marvell World Trade Ltd. Switching between processor cache and random-access memory
WO2013034994A1 (en) * 2011-09-05 2013-03-14 Mohammad Ahsan Chishti A method to hibernate computer into external storage and making its operating system (os) portable
US8630056B1 (en) 2011-09-12 2014-01-14 Western Digital Technologies, Inc. Hybrid drive adjusting spin-up profile based on cache status of non-volatile semiconductor memory
WO2013048523A1 (en) 2011-10-01 2013-04-04 Intel Corporation Fast platform hibernation and resumption for computing systems
US8909889B1 (en) 2011-10-10 2014-12-09 Western Digital Technologies, Inc. Method and apparatus for servicing host commands by a disk drive
US10296480B2 (en) * 2011-10-20 2019-05-21 SK Hynix Inc. Data processing system having combined memory block and stack package
US9436629B2 (en) 2011-11-15 2016-09-06 Marvell World Trade Ltd. Dynamic boot image streaming
US9092150B2 (en) * 2011-12-22 2015-07-28 Sandisk Technologies Inc. Systems and methods of performing a data save operation
US9069551B2 (en) 2011-12-22 2015-06-30 Sandisk Technologies Inc. Systems and methods of exiting hibernation in response to a triggering event
US9389673B2 (en) 2011-12-22 2016-07-12 Sandisk Technologies Inc. Systems and methods of performing a data save operation
US8914594B2 (en) 2011-12-22 2014-12-16 Sandisk Technologies Inc. Systems and methods of loading data from a non-volatile memory to a volatile memory
US8984316B2 (en) 2011-12-29 2015-03-17 Intel Corporation Fast platform hibernation and resumption of computing systems providing secure storage of context data
US9442859B1 (en) 2012-06-17 2016-09-13 Samsung Electronics Co., Ltd. Method for asynchronous population of data caches used with mass storage devices
US9104552B1 (en) 2012-06-23 2015-08-11 Samsung Electronics Co., Ltd. Method for the use of shadow ghost lists to prevent excessive wear on FLASH based cache devices
US9417820B2 (en) 2012-12-06 2016-08-16 Kabushiki Kaisha Toshiba Low-overhead storage of a hibernation file in a hybrid disk drive
US9104591B2 (en) * 2012-12-11 2015-08-11 Sandisk Technologies Inc. Data recovery on cluster failures and ECC enhancements with code word interleaving
US9032139B2 (en) 2012-12-28 2015-05-12 Intel Corporation Memory allocation for fast platform hibernation and resumption of computing systems
US9575768B1 (en) 2013-01-08 2017-02-21 Marvell International Ltd. Loading boot code from multiple memories
US9092353B1 (en) 2013-01-29 2015-07-28 Pmc-Sierra Us, Inc. Apparatus and method based on LDPC codes for adjusting a correctable raw bit error rate limit in a memory system
US9628108B2 (en) 2013-02-01 2017-04-18 Symbolic Io Corporation Method and apparatus for dense hyper IO digital retention
US9817728B2 (en) 2013-02-01 2017-11-14 Symbolic Io Corporation Fast system state cloning
US9304703B1 (en) * 2015-04-15 2016-04-05 Symbolic Io Corporation Method and apparatus for dense hyper IO digital retention
US10133636B2 (en) 2013-03-12 2018-11-20 Formulus Black Corporation Data storage and retrieval mediation system and methods for using same
US10230396B1 (en) 2013-03-05 2019-03-12 Microsemi Solutions (Us), Inc. Method and apparatus for layer-specific LDPC decoding
US9813080B1 (en) 2013-03-05 2017-11-07 Microsemi Solutions (U.S.), Inc. Layer specific LDPC decoder
US9450610B1 (en) 2013-03-15 2016-09-20 Microsemi Storage Solutions (Us), Inc. High quality log likelihood ratios determined using two-index look-up table
US9736801B1 (en) 2013-05-20 2017-08-15 Marvell International Ltd. Methods and apparatus for synchronizing devices in a wireless data communication system
US9521635B1 (en) 2013-05-21 2016-12-13 Marvell International Ltd. Methods and apparatus for selecting a device to perform shared functionality in a deterministic and fair manner in a wireless data communication system
WO2015015305A1 (en) 2013-07-31 2015-02-05 Marvell Word Trade Ltd. Parallelizing boot operations
GB2517159A (en) 2013-08-13 2015-02-18 Sony Comp Entertainment Europe Data processing
CN103678040A (zh) * 2013-12-06 2014-03-26 北京明朝万达科技有限公司 一种基于计算机系统的快照和回退方法及系统
CN106133707B (zh) * 2014-04-28 2020-03-20 慧与发展有限责任合伙企业 高速缓存管理
US9417804B2 (en) 2014-07-07 2016-08-16 Microsemi Storage Solutions (Us), Inc. System and method for memory block pool wear leveling
CN104216836B (zh) * 2014-08-28 2018-01-23 华为技术有限公司 一种存储系统的并行读写方法和装置
US9558848B2 (en) * 2014-11-04 2017-01-31 Microsoft Technology Licensing, Llc Testing storage device power circuitry
US10126950B2 (en) * 2014-12-22 2018-11-13 Intel Corporation Allocating and configuring persistent memory
US10055267B2 (en) 2015-03-04 2018-08-21 Sandisk Technologies Llc Block management scheme to handle cluster failures in non-volatile memory
US10061514B2 (en) 2015-04-15 2018-08-28 Formulus Black Corporation Method and apparatus for dense hyper IO digital retention
US10332613B1 (en) 2015-05-18 2019-06-25 Microsemi Solutions (Us), Inc. Nonvolatile memory system with retention monitor
US9799405B1 (en) 2015-07-29 2017-10-24 Ip Gem Group, Llc Nonvolatile memory system with read circuit for performing reads using threshold voltage shift read instruction
US9886214B2 (en) 2015-12-11 2018-02-06 Ip Gem Group, Llc Nonvolatile memory system with erase suspend circuit and method for erase suspend management
US9892794B2 (en) 2016-01-04 2018-02-13 Ip Gem Group, Llc Method and apparatus with program suspend using test mode
US9899092B2 (en) 2016-01-27 2018-02-20 Ip Gem Group, Llc Nonvolatile memory system with program step manager and method for program step management
CN109075968A (zh) 2016-03-08 2018-12-21 马维尔国际贸易有限公司 用于安全设备认证的方法和装置
US10283215B2 (en) 2016-07-28 2019-05-07 Ip Gem Group, Llc Nonvolatile memory system with background reference positioning and local reference positioning
US10291263B2 (en) 2016-07-28 2019-05-14 Ip Gem Group, Llc Auto-learning log likelihood ratio
US10236915B2 (en) 2016-07-29 2019-03-19 Microsemi Solutions (U.S.), Inc. Variable T BCH encoding
WO2018038703A1 (en) * 2016-08-22 2018-03-01 Hewlett-Packard Development Company, L.P. Connected devices information
US10509757B2 (en) * 2016-09-22 2019-12-17 Altera Corporation Integrated circuits having expandable processor memory
US10394304B2 (en) * 2016-12-07 2019-08-27 Microsoft Technology Licensing, Llc Optimized power transitions based on user or platform conditions
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
US10824376B2 (en) 2017-12-08 2020-11-03 Sandisk Technologies Llc Microcontroller architecture for non-volatile memory
US10622075B2 (en) 2017-12-12 2020-04-14 Sandisk Technologies Llc Hybrid microcontroller architecture for non-volatile memory
WO2019126072A1 (en) 2017-12-18 2019-06-27 Formulus Black Corporation Random access memory (ram)-based computer systems, devices, and methods
CN108287670B (zh) * 2018-01-30 2021-07-02 郑州云海信息技术有限公司 一种系统关机时保护数据的方法及bmc
US10831393B2 (en) 2018-02-08 2020-11-10 Micron Technology, Inc. Partial save of memory
US10579517B2 (en) * 2018-03-19 2020-03-03 Dell Products, Lp System and method for providing per channel frequency optimization in a double data rate memory system
WO2020142431A1 (en) 2019-01-02 2020-07-09 Formulus Black Corporation Systems and methods for memory failure prevention, management, and mitigation
US10777240B1 (en) 2019-03-07 2020-09-15 Sandisk Technologies Llc Efficient control of memory core circuits
US10971199B2 (en) 2019-06-20 2021-04-06 Sandisk Technologies Llc Microcontroller for non-volatile memory with combinational logic
US11112983B2 (en) * 2019-08-28 2021-09-07 Micron Technology, Inc. Recovery of memory device from a reduced power state
US11507498B2 (en) 2020-03-05 2022-11-22 Sandisk Technologies Llc Pre-computation of memory core control signals
US11625276B2 (en) * 2021-01-08 2023-04-11 Dell Products L.P. System and method to utilize high bandwidth memory (HBM)
US11573854B2 (en) * 2021-02-02 2023-02-07 Nvidia Corporation Techniques for data scrambling on a memory interface

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5663901A (en) * 1991-04-11 1997-09-02 Sandisk Corporation Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems
JPH07504527A (ja) * 1992-03-09 1995-05-18 オースペックス システムズ インコーポレイテッド 高性能の不揮発性ram保護式の書き込みキャッシュアクセラレータシステム
US5758174A (en) * 1995-06-07 1998-05-26 International Business Machines Corporation Computer system having a plurality of stored system capability states from which to resume
US6694451B2 (en) * 2000-12-07 2004-02-17 Hewlett-Packard Development Company, L.P. Method for redundant suspend to RAM
US6957293B2 (en) * 2002-04-15 2005-10-18 International Business Machines Corporation Split completion performance of PCI-X bridges based on data transfer amount
US7017037B2 (en) * 2002-06-27 2006-03-21 Microsoft Corporation Apparatus and method to decrease boot time and hibernate awaken time of a computer system utilizing disk spin-up-time
US6910106B2 (en) * 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
US6965527B2 (en) * 2002-11-27 2005-11-15 Matrix Semiconductor, Inc Multibank memory on a die
US7181609B2 (en) * 2003-08-15 2007-02-20 Intel Corporation System and method for accelerated device initialization

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101235854B1 (ko) * 2010-08-27 2013-02-20 삼성전자주식회사 화상형성장치, SoC 유닛 및 그 구동 방법

Also Published As

Publication number Publication date
US7620784B2 (en) 2009-11-17
WO2007145869A2 (en) 2007-12-21
US20070288687A1 (en) 2007-12-13
WO2007145869A3 (en) 2008-03-20
CN101467136A (zh) 2009-06-24

Similar Documents

Publication Publication Date Title
US7620784B2 (en) High speed nonvolatile memory device using parallel writing among a plurality of interfaces
US11775455B2 (en) Storage device for interfacing with host and method of operating the host and the storage device
US20220188276A1 (en) Metadata journal in a distributed storage system
US9213609B2 (en) Persistent memory device for backup process checkpoint states
US9513810B2 (en) Fast accessible compressed thin provisioning volume
CN100405304C (zh) 基于存储区域网络的高速固态存储设备的实现方法
US9092426B1 (en) Zero-copy direct memory access (DMA) network-attached storage (NAS) file system block writing
US20100058007A1 (en) Information processing apparatus and memory management method
US11269846B2 (en) Efficient database journaling using non-volatile system memory
US8370587B2 (en) Memory system storing updated status information and updated address translation information and managing method therefor
US20140059284A1 (en) Systems, methods and computer program products memory space management for storage class memory
EP3446221B1 (en) Adapted block translation table (btt)
CN111316251B (zh) 可扩展存储系统
US10459641B2 (en) Efficient serialization of journal data
US11055220B2 (en) Hybrid memory systems with cache management
US20220253252A1 (en) Data processing method and apparatus
US20190324868A1 (en) Backup portion of persistent memory
US11526441B2 (en) Hybrid memory systems with cache management
JP2006099802A (ja) 記憶制御装置およびキャッシュメモリの制御方法
KR20230078577A (ko) 동기식 쓰기 방법 및 장치, 스토리지 시스템 및 전자 장치
CN113722131A (zh) 用于促进存储设备中的快速崩溃恢复的方法和系统
US20230045119A1 (en) Data access method and apparatus
CN117667761A (zh) 数据访问设备、方法、系统、数据处理单元及网卡
EP4273702A1 (en) Operating method of memory device for managing map data of each of plurality of storage devices, computing system including memory device, and operating method of computing system
US20230125833A1 (en) Reducing redundancy in synchronous replication of metadata with a journal log

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid