KR100273030B1 - 이동 클라이언트 컴퓨터 및 플래쉬 메모리 관리 - Google Patents
이동 클라이언트 컴퓨터 및 플래쉬 메모리 관리 Download PDFInfo
- Publication number
- KR100273030B1 KR100273030B1 KR1019980000626A KR19980000626A KR100273030B1 KR 100273030 B1 KR100273030 B1 KR 100273030B1 KR 1019980000626 A KR1019980000626 A KR 1019980000626A KR 19980000626 A KR19980000626 A KR 19980000626A KR 100273030 B1 KR100273030 B1 KR 100273030B1
- Authority
- KR
- South Korea
- Prior art keywords
- flash memory
- data
- processor
- block
- blocks
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
본 발명은 플래쉬 메모리 관리(flash memory manegement)에 대한 설비를 갖춘 이동 클라이언트 시스템과 같은 컴퓨터 시스템에 관한 것이다. 플래쉬 메모리 관리는 가변(variable) 블록 길이를 사용하여 이루어지며, 데이터 압축을 지원한다. 블록들은 각각의 소거 유닛(erase unit)에 연속적으로 할당되며, 각 블록은 맨 앞에 블록의 길이를 가지고 있는 헤더(header)를 가진다. 블록은 RAM에 상주하는 단일-레벨 가상 어드레스 맵(virtual address map)을 사용하여 추적(track)된다.
Description
특히 IBM PC를 비롯한 퍼스널 컴퓨터 시스템은 오늘날 현대 사회의 여러 분야에 컴퓨팅 능력을 제공하는데 널리 사용되고 있다. 퍼스널 컴퓨터 시스템은 데스크 톱(desk top), 플로어 스탠딩(floor standing), 또는 휴대용 마이크로 컴퓨터로 정의될 수 있는데, 이들은 단일 시스템 프로세서와 이에 연관된 (휘발성 및 비휘발성) 메모리, 디스플레이 모니터, 키보드, 하나 이상의 디스켓 드라이브, 고정 디스크 저장 장치 및 프린터(선택 사양)를 가진 시스템 유닛으로 이루어진다. 이들 퍼스널 컴퓨터 시스템들의 하나의 두드러진 특징은 상기 구성 요소들을 모두 전기적으로 연결시키기 위하여 마더보드(motherboard) 또는 시스템 플래너(system planar)를 사용한다는 것이다. 상기 시스템들은 단일 사용자(single user)에게 독립적인 컴퓨팅 능력(computing power)을 제공하고, 주로 개인 또는 소규모의 기업이 값싸게 구입할 수 있도록 설계된다. 그러한 퍼스널 컴퓨터 시스템들의 예로는 IBM社에 의해 제공되는 퍼스널 컴퓨터 시스템들이 있는데, 이들은 PERSONAL COMPUTER AT, PERSONAL SYSTEM/2, PS/1 Aptiva 등과 같은 이름이 붙여져있다. 컴퓨터 분야의 당업자는 이러한 시스템들에 친숙할 것이다.
이러한 시스템들은 두 개의 일반적인 계열(family)로 분류할 수 있다. 대개 Family Ⅰ 모델로 언급되는 첫 번째 계열은 IBM PERSONAL COMPUTER AT 및 다른 "IBM 호환(IBM compatible)" 머신과 같은 버스 구조(bus architecture)를 사용한다. Family Ⅱ 모델로 언급되는 두 번째 계열은 IBM의 PERSONAL SYSTEM/2 Model 50 내지 95와 같은 IBM의 MICRO CHANNEL 버스 구조를 사용한다. Family Ⅰ 모델은 원래 시스템 프로세서로 보편적인 INTEL 8088 또는 8086 마이크로프로세서를 사용하였다. 이러한 프로세서들은 1 메가 바이트 메모리를 어드레스할 수 있는 능력을 가진다. Family Ⅱ 모델은 저속인 INTEL 8086 마이크로프로세서를 에뮬레이트(emulate)하기 위해 리얼 모드(real mode)로 동작할 수 있거나 또는 몇 몇 모델에 대해서 어드레스할 수 있는 범위를 1 메가바이트에서 4 기가바이트까지 확장하는 보호 모드(protected mode)로 동작할 수 있는 고속의 INTEL 80286, 80386 및 80486 마이크로프로세서를 사용하는 것이 일반적이다. 본질적으로, 80286, 80386 및 80486 프로세서의 리얼 모드 기능은 8086 및 8088 마이크로프로세서를 위해 작성된 소프트웨어와의 하드웨어 호환성을 제공한다. 기술이 발전함에 따라, FamilyⅠ 시스템은 Intel PENTIUMTM마이크로프로세서, 그리고 Intel PENTIUMTM의 경쟁 제품들, 예를 들면 IBM과 Motorola의 Power PC 프로세서와 같은 RISC(Reduced Instruction Set Computing) 마이크로프로세서를 포함하는 고성능 중앙 처리 장치와, VESA 및 PCI 버스 구조와 같은 고성능 버스 구조 개발 방향으로 발전되어 왔다. 또한, 컴퓨터 분야의 당업자는 이러한 시스템들에 친숙할 것이다.
이러한 발전이, 비지니스 및 소비자 환경(business and consumer environments)에서 컴퓨팅이 수행되는 방식에 심대한 영향을 미치게 되었다. PC 시스템이 개발되기 전에는, 컴퓨터는 주로 비지니스 목적으로 사용되었으며, 데이터 처리는 컴퓨터 시스템을 수용하고 있는 "유리집(glass house)"에서 수행되었다. 경영자들에게 필요한 조회 사항은 정보 관리자를 통하여 컴퓨터 전문가에게 전달되었다. PC 시스템이 광범위하게 보급됨에 따라 회사 내에 퍼져있는 컴퓨터 시스템에 저장된 데이터에 액세스하는 것은 경영자 뿐만 아니라 궁극적으로는 현장 작업자에게도 중요한 일이 되었다. 네트워크 서버를 통해 회사 데이터가 저장되어 있는 회사 시스템 또는 메인프레임으로 계층화된 액세스(layered access)가 가능해지면서, PC 시스템의 네트워크도 발전하였다.
정보를 취급하는 사람들의 수가 증가되고, 정보를 취급하는 작업이 기업 내의 더 많은 종업원들의 업무에 영향을 미치게됨에 따라, 종업원들의 이동성(mobility)에 대한 필요성이 증가하였다. 방문 판매원, 화물차 운전자, 또는 비지니스 컨설턴트와 같은 "외부(outside)" 업무를 많이 하는 사람에게는, 회사로부터 떨어져(remote) 있는 동안, 대개 회사 시스템에 저장되어 있으며 컴퓨터 시스템 네트워크를 통하여 액세스되게 마련인, 회사 데이터에 액세스하는 것이 중요하게 되었다. 이러한 액세스는 노트북 또는 랩톱(laptop) 컴퓨터 시스템과 같은 개인용 컴퓨터 시스템에 연결된 통신선(wireline)을 사용하여 부분적으로 달성되어 왔다. 통상적으로, 이러한 시스템에는 모뎀 및 통신 소프트웨어가 장착되어 있어서, 공중전화교환망(public switched telephone network : PSTN)에 접속할 때 상기 시스템이 지원 서버 또는 메인프레임에 접속되어 사용자가 데이터에 액세스할 수 있다.
예를 들어, 셀룰러 전화망(cellular telephone networks)과 같은 무선 통신의 개발로 PC와 지원 서버 간에 통신선을 사용하지 않고도 접속이 가능하게 되었다. 이러한 시스템들은 특히 소매점 및 창고형 매장(warehousing) 비지니스에서 사용되는 시스템용으로 개발되어 왔는데, 이러한 시스템들은 사용자로 하여금 회사의 활동을 지원하는 서버 또는 메인프레임과 데이터가 교환되는 데이터 채널과 간헐적으로 또는 계속적으로 접속 상태를 유지하는 무선 송수신 서비스가 영역 내에서 자유롭게 이동하는 것을 허용한다. 설명의 편의를 위하여, 사용자가 휴대하는 그러한 시스템들을 "이동 클라이언트 시스템(mobile client systems)"으로 부르기로 한다. 이동 클라이언트 시스템에서의 사용자는 유선(有線) 연결로 인한 이동의 제한을 받게 되거나, 이동 클라이언트 시스템에 의해 액세스되는 회사 데이터가 (이동 클라이언트와 통신하는) 서버 또는 메인프레임 컴퓨터 시스템 상에 저장되어 있다는 점에서 비롯되는 시스템의 클라이언트 속성으로 인한 이동의 제한을 받지 않게 된다는 점에서 특징을 갖는다. 이러한 이동 클라이언트 시스템은 종종 개인용 통신 보조기기 또는 개인용 정보 단말기라고 불린다. 이동 클라이언트 시스템에 관한 추가적인 배경 기술 및 정보에 관한 흥미있는 문헌으로는 Ira Brodsky의 "Wireless : The Revolution in Personal Telecommunications"(Artech House, Boston, 1995)가 있다.
이해할 수 있는 바와 같이, 이동 클라이언트 시스템의 사용 환경에서는 시스템의 전원으로 대개 배터리(battery)의 사용이 요구된다. 한 번 배터리를 충전하여 장시간 동안 사용할 수 있는지의 여부는 배터리에 대한 전력 수요량에 좌우된다. 따라서, 그러한 시스템들을 개발하는데 있어서 전력량을 줄이는 설계가 중요한 문제이다.
본 발명자들은, 상기의 기술 내용을 배경으로 하여 플래쉬 메모리의 관리에 대한 설비를 갖춘 이동 클라이언트 시스템을 발명하였다.
본 발명의 이러한 목적을 실행하기 위하여, 본 발명의 몇가지 목적들을 상기에서 기술하였으며, 다른 목적들은 이하의 설명에서 첨부 도면을 참조하여 기술할 것이다.
도 1은 본 발명에 따른 이동 클라이어언트 컴퓨터 시스템의 소정 소자의 분해 사시도.
도 2는 실제 사용하기 위하여 조립된 도 1의 이동 클라이언트 시스템의 사시도.
도 3은 도 1 및 도 2에 도시된 이동 클라이언트 시스템의 다른 형식의 구조를 도시한 도 2에 유사한 도면.
도 4는 도 1 내지 도 3에 도시된 이동 클라이언트 시스템과 지원 주변 요소 및 시스템 간의 상호 관계를 도시한 다이어그램.
도 5는 도 2 및 도 3의 이동 클라이언트 시스템에 구현되는 특정 회로 소자들을 보여주는 개략도.
도 6은 다른 회로 소자들을 도시하고 있는 도 5에 유사한 도면.
도 7은 도 2 및 도 3에 도시된 이동 클라이언트 시스템 내의 소정 회로 소자들과 그 회로 소자들 간의 상호 관계를 보여주는 개략도.
도 8은 도 2 및 도 3의 이동 클라이언트에 대한 전력 모드(power modes) 및 전력 모드 간의 전이(transitions)를 나타낸 상태 다이어그램.
도 9는 도 2 및 도 3의 이동 클라이언트의 소정 소자의 상태를 보여주며, 이동 클라이언트 상에서 실행되는 소프트웨어의 상태를 포함하는 도 8의 다이어그램과 유사한 다이어그램.
도 10은 소정 데이터를 디스플레이하기 위하여 이동 클라이언트 상의 애플리케이션 프로그램의 실행에 의해 구동되는 도 2의 이동 클라이언트의 디스플레이 스크린을 예시한 도면.
도 11은 본 발명에 따른 플래쉬 메모리 관리(flash memory management)의 개략도.
* 도면의 주요부분에 대한 부호의 설명
11 : 시스템 태블릿
12 : 홀스터
13 : 무선 송수신기(radio transceiver)
15 : 액정 디스플레이(LCD)
18 : 컨덕터
19 : 프린터
20 : 서버
21 : 메인 프레임 데이터 저장 장치
이하에서는 본 발명의 바람직한 실시예가 도시되어 있는 첨부 도면을 참조하여 본 발명이 더 구체적으로 기술될 것이지만, 본 명세서에서 기술된 것으로부터 당업자는 본 발명의 양호한 결과를 달성하면서도 본 발명에 변경을 가할 수 있다는 것을 이해할 수 있을 것이다. 따라서, 본 명세서에서 기술한 것은 당업자에게 다양한 개시를 교시하는 것으로 이해되어야 하며 본 발명을 제한하는 것으로 이해되어서는 안된다.
첨부 도면을 구체적으로 참조하면, 도 1 내지 도 3은 본 발명에 따른 이동 클라이언트 개인용 컴퓨터 시스템("이동 클라이언트(mobile client)"라고도 함)(10)의 예시적인 실시예를 도시하고 있다. 이하의 설명으로부터 더 명백히 이해되는 바와 같이, 이동 클라이언트는 본 발명의 범위 내에 속하는 다양한 특징들을 가질 수 있다. 이러한 특징들 중 가장 중요한 것은 상기 시스템이 이동 클라이언트 시스템과 지원 서버 및 메인프레임 간에 적어도 데이터 통신이 가능하며 경우에 따라서는 데이터와 오디오(예를 들면 음성) 두 가지가 모두 통신 가능한 설비를 가진다는 점이다. 예시된 실시예에서, 그러한 능력은 시스템 태블릿(11), 홀스터(12) 및 무선 송수신기(13)과 같은 3 개의 개별 콤포넌트들로 분리될 수 있는 시스템에 의하여 제공된다. 예시된 시스템에서, 송수신기(13)은 홀스터(12)내에 장착될 수 있는 셀룰러 전화기(cellular telephone)이고, 태블릿을 홀스터(12) 내에 구비된 리셉터클(receptacle) 내로 끼워넣어(slip) 홀스터(12)를 시스템 태블릿(11)과 결합시킬 수 있다. 시스템 태블릿은 선택 사양으로 통합 키패드(integrated keypad)를 가질 수 있다. 3 개의 콤포넌트로 구성된 시스템으로 예시되고 기술되어 있지만, 이하에서 기술되는 본 발명의 많은 장점들은 이동 클라이언트 시스템(10)이 일체로 된 시스템에서도 구현될 수 있음을 이해할 수 있을 것이다. 즉, 무선 송수신기(13)이 시스템 태블릿(11)과 통합되고, 이들 간의 접속은 홀스터(12)를 사용함이 없이 시스템에 대한 단일 커버 내에서 이루어질 수 있다. 송수신기/홀스터/태블릿 구조는 많은 경우에 여러가지 장점들을 제공한다. 그러나, 본 발명은 상기 특정 구조와는 무관하게 구현될 수 있음을 이해하여야 한다.
도 2에 도시된 시스템과 도 3에 도시된 시스템 간의 차이는, 도 3에 도시된 시스템이 엔트리 필드의 터치스크린으로부터 분리된 키패드를 직접 포함하고 있다는 것이다.
3 개의 구성부로 된 구조에서 실현될 수 있는 장점은 여러 가지의 원거리 통신망(wide area networks : WANs) 또는 근거리 통신망(local area networks : LANs)에 적합하게하기 위하여 무선 송수신기를 다른 것으로 용이하게 교체할 수 있다는 것이다. 더 구체적으로, WAN 기술의 예에서, 디지털 데이터 및 아날로그 오디오는 셀룰러 전화기 무선 인터페이스(cellular telephone radio interface)를 통하여 셀룰러 디지털 패킷 데이터(cellular digital packet data : CDPD) 프로토콜을 사용하는 데이터와 교환될 수 있지만, 다른 가능성들도 존재한다. 이러한 가능성으로는 주파수 분할 다중 액세스(frequency division multiple access : FDMA) 및 시분할 다중 액세스(time division multiple access : TDMA)와 같은 디지털 무선 기법(digital radio techniques), 직접 시퀀스 확산 대역(direct sequence spread spectrum : DS-SS) 및 합성(resulant) 코드 분할 다중 액세스(code division multiple access : CDMA)와 같은 확산 대역 기법, 주파수 도약 확산 대역(frequency hopping spread spectrum : FH-SS) 및 이들 기법들중 하나 이상의 기법과 진보된 이동 전화 시스템(advanced mobile phone systems : AMPS) 또는 진보된 무선 데이터 정보 서비스(advanced radio data information service : ARDIS) 또는 RAM Mobile Data라고 하는 기법들과의 결합 형태의 디지털 무선 기법들이 포함될 수 있다. 이러한 기법들이 개발되어 폭넓게 적용되고 있으므로, 3 개의 부분으로 구성된 구조는 기존의 태블릿(11)을 새로 개발되는 무선 송수신기(13)에 용이하게 적용할 수 있도록 함으로써, 사용자가 시스템에 비용을 투자하는 것을 피할 수 있게 해준다. 그러나, 온도, 습도와 같은 악영향을 미치는 환경 조건, 낙하 충격과 같은 소정의 환경에서는 송수신기, 태블릿 및 지원 회로가 단일 커버(single cover) 내에 통합된 시스템이 바람직한 선택이 될 수 있다.
도 4에는, 지원 서버 및 주변 요소들과 본 발명에 따른 시스템(10) 간의 상호관계가 개략적으로 도시되어 있다. 좀 더 구체적으로, 태블릿(11)(이하에서 더 자세히 설명할 것임)이 일반적으로는 백라이트형 액정 디스플레이(backlit liquid crystal display)에 구현된 터치스크린(15)를 통한 사용자 입력에 적합하도록 되어 있지만, 시스템(10)은 통상적인 키보드(16) 및 바 코드 스캐너(bar code scanner)(17)을 포함하는 다른 종류의 사용자 입력 장치들을 채용할 수도 있다. 도시된 바와 같이, 사용자 입력 장치는 시스템(10)에 선으로 연결되어, 사용할 때에는 통신선(18)을 통하여 입력된 데이터가 시스템(10)에 도달하도록 신호 통로(signal pathway)를 제공한다. 이하에서 설명되는 본 발명은 특히 그러한 사용자 입력 장치에 대한 인터페이스와 관련되어 있다. 그와는 달리, 키보드 또는 스캐너와 같은 다른 장치는 상기한 직접 통합(direct integration) 또는 공지의 프로토콜을 사용하는 적외선 링크와 같은 당업자에게 공지된 다른 수단에 의해 데이터를 전송하기 위하여 링크(link)될 수 있다. 예시된 도면에서는, 시스템이 적외선 방사(infrared radiation)에 의해 데이터 전송을 하기 위하여 IrDA 링크에 의해 프린터(19)에 링크되어 있는 것으로 도시되어 있다. 이는 출력 장치의 예이지만, 입력 장치를 링크시키는데에도 유사한 방법이 사용될 수 있다.
상기에서 기술된 바와 같이, 무선 송수신기는 서버(20)으로의 무선 주파수 링크를 제공하는데, 상기 서버는 통신선을 통하여 지원 메인프레임 데이터 저장 장치(21)과 통신할 수 있다. 기업 전체의 활동에 관련된 데이터는 지원 메인프레임에 저장되어, 본 발명에 따른 이동 클라이언트(10)에서 이용할 수 있도록 되어있다.
본 발명에 따른 데이터 처리를 수행하는 회로 소자들로 이루어진 구성 양식이 도 5 및 도 6에 도시되어 있다.
예시를 위하여 다소 간략화된 도 5에 도시된 바와 같이, 회로 소자들은 CPU 및 연관된 입/출력 제어기(input/output controller)를 포함한다. 입/출력 제어기는 마이크로프로세서의 설계 및 제조 분야의 당업자에게 공지된 바와 같이 중앙 처리 유닛(central processing unit)의 일부분을 차지할 수 있는 프로그램 가능한 마이크로프로세서이다. 첨부된 도면에서, IOC(input/output controller)는 종종 주변 마이크로프로세서 또는 CPM으로 나타난다. 메모리 제어기, 메모리, PCMCIA 제어기 및 관련 카드(카드가 있을 경우)를 구비한 소정 소자들은 CPU에 접속되어 동작되며 CPU 및 IOC 모두에 엑세스할 수 있다. 터치패널 제어(touchpanel control), 사용자 입력 장치, 직렬 및 오디오 포트 및 송수신기 인터페이스를 구비한 기타 다른 소자들은 IOC에 접속되어 동작되며, IOC를 통하여 CPU에 액세스할 수 있다.
도 6에 도시된 바와 같이, 예시된 이동 클라이언트 시스템(10)은 자신의 코어(core)로 RISC 특성을 사용하는 마이크로프로세서(30) 형식의 CPU를 가지고 있다. CPU 또는 프로세서는 액정 디스플레이 제어기(31), PC 카드 또는 PCMCIA 카드로 알려진 형태의 주변 기기 제어기(32), 인스트럭션/데이터 캐쉬(33), 메모리 및 외부 버스(34) 인터페이스 및 리얼 타임 클록(real time clock)(35)를 포함하는 소자들을 가진다. 또한, 마이크로프로세서는 인터럽트 제어기(36) 및 다양한 서비스 를 제공하기 위한 인터페이스를 정의하는 입/출력 제어기 코어(37)을 가진다. 본 명세서에서는, 이러한 특징들을 가진 단일 프로세서로 개시되어 있지만, 종래 기술 컴퓨터 시스템의 제조자 및 사용자들에게는 그러한 계산 능력 및 인터페이스 이용 가능성이 적당한 지원 로직 또는 칩들로 둘러싸인 Intel X86 계열 기반의 프로세스를 사용하는 것과 같은 다른 수단에 의해 달성될 수 있다는 것이 알려져 있다. 따라서, 도 6의 실시예가 본 발명에 따른 시스템의 예로서 제공되지만, 그러한 이동 클라이언트 시스템의 핵심 기능(core functionality)은 다른 방법으로 구성될 수도 있다는 것이 알려져 있다. 마찬가지로, 본 명세서에서는 핸드헬드(handheld) 이동 클라이언트 시스템을 참조하여 본 발명을 기술하고 있지만 상기 기술된 기능은 데스크톱 또는 노트북 시스템과 같은 통상적인 시스템들에서도 얻어질 수 있다.
도 6에 도시된 바와 같이, 코어 마이크로프로세서(30)은 주변 장치들에 의해 지원받는다. 시스템을 동작시키기 위한 전력은 배터리(40)으로부터 공급된다. 바람직하게는, 배터리(40)은 배터리의 충전 상태 및 재충전 진행 상황을 자체 감시하는 장비가 구비되어 있는 "스마트(smart)" 배터리형이다. 그러한 배터리들은 공지이며, 사용자에게 배터리 충전 상태, 충전 후 재 사용을 위한 준비 등과 같은 표시를 발생하는데 사용될 수 있는 신호들을 이동 클라이언트 프로세서(30)에 제공할 수 있다. 또한, 이동 클라이언트는 바람직하게는 통신선에 의해 연결될 때 사용하기 위한 통상의 모뎀(41) 및 전화 상호 접속 지점(42)(RJ-11 커넥터로 표시됨)를 가진다. 시스템 메모리는 플래쉬 메모리 액세스 카드(44), DRAM(45) 및 코어 플래쉬 메모리(46)에 의해 제공된다. 바람직하게는, 다른 기능들을 추가하기 위하여 타입 Ⅱ인 한 쌍의 PCMCIA 슬롯(48), (49)가 제공된다.
이동 클라이언트 시스템에 의해 수행되는 데이터 핸들링 동작들의 결과를 디스플레이하기 위하여, 시스템(10)은 상기에서 언급한 LCD(15)를 가지고 있다. 상기 LCD는 사용자에 의해 이루어지는 입력 시점을 인식하기 위하여 디지타이저(digitizer)의 역할을 하는 적당한 터치스크린(50)에 의해 오버레이(overlay)된다. 이러한 기능에 대해서는 이하에서 추가로 설명될 것이다. 배터리 및 온도 센서로부터 발생하는 입력과 마찬가지로 터치스크린으로부터 발생하는 입력은 아날로그/디지털 변환기(51)을 통하여 프로세서(30)의 입력/출력(I/O) 포트로 전달된다. 프로세서(30)의 다른 I/O 포트들은 상기에서 기술된 바와 같은 키보드, IrDA 포트(52), 오디오 CODEC(54), 그것에 연관된 스피커(55)와 마이크로폰(56) 및 무선 송수신기(13)용 인터페이스 커넥터(58)에 대한 연결을 제공한다.
상기에서 지적한 바와 같이, 도 5 및 도 6을 참조하여 본 명세서에서 기술된 기능들의 특정 구성은 지원되는 기능들에 대한 설계자의 선택, 프로세서 코어 및 지원 로직에 따라 변할 수 있음을 이해하여야 한다.
상기에서 언급되었듯이, 이동 클라이언트 시스템(10)은 배터리로부터 전력을 공급받는다. 그러한 동작이 이동성에 적합하지만, 교류 본선(alternating current electrical mains) 형태의 좀 더 통상적인 전원(power source)에 연결함으로써 시스템(10)에 대한 지원이 마련될 수 있다. 그러한 전원은 도 7에 도면 부호(60)으로 표시되어 있는데, 이하에서는 전력 관리 상호 관계에 대해서 설명한다. 이해할 수 있는 바와 같이, 이동 클라이언트 시스템에 의한 전력 사용의 관리는 시스템의 사용도(usability)와 관련하여 중요하다.
도 7은 전력 및 전력 소비의 관점에서 본 프로세서(30) 주변의 주변 장치의 구성을 도시하고 있다. 전력 관리 토폴로지는 전력이 메인 배터리(40)으로부터 태블릿(11) 내의 프로세서(30)으로 흐르고, 전력 흐름의 일부 및 홀스터(12)의 제어 임팩트는 홀스터 내에 장착된 무선 송수신기(13) 및 시스템에 의해 사용되는 PC 카드 액서세리로 흐른다. 전력 흐름의 상기 분기(division)는 본 명세서에서 기술되는 이동 클라이언트 시스템에 매우 중요하다. 구체적으로, 개별 배터리(61)은 홀스터(12) 내에 구비되어 있다. 홀스터 배터리(61)은 바람직하게는 "스마트(smart)" 배터리이며, 홀스터(12) 내의 배터리 제어기(62), 홀스터 주변 장치 제어기(63)과 관련되며, 프로세서(30)과 양방향으로 전달되는 데이터 스트림을 인터페이스하는 회로(64)를 무선 송수신기(13)과 관련시킨다. 따라서, 홀스터(12) 내의 회로 및 송수신기(13)이 프로세서(30)의 제어하에 있지만(이하에서 더 상세히 기술될 것임), 전원은 적어도 태블릿(11)과는 어느정도 독립적이다. 이는 중요한 요소이다. 태블릿이 홀스터에 결합되면, 두 개의 콤포넌트 내의 회로는 협력하여 전체를 관리한다. 송수신기(13)(통상적인 셀룰러 폰인 경우 자체 전원 및 전력 관리 기법을 가질 수 있다)이 홀스터(12) 내에 위치하는 경우, 송수신기(13)은 3 부분으로 이루어진 시스템에 대한 전력 관리에 참여하는 조정된 역할을 가질 수 있다.
태블릿(11)을 좀 더 구체적으로 살펴보면, 배터리(40)에 대한 제어기 회로, (66) 및 태블릿(11)의 동작용 배터리(40)이 전력을 공급하는 전력 공급기(68)을 포함한다. 본 발명의 시스템에서는, 코어 프로세서(30)으로부터의 소정의 요구 조건 부담을 덜기(off-load)위하여 전력 공급기에 대한 제어를 실행하는 개별 마이크로제어기(69)에 대한 설비가 마련된다. 마이크로제어기는 프로세서(30) 및 변환기(70)으로부터 입력을 수신한다. 리얼 타임 클록(35)용 배터리(71)에 의해 최소 기능을 수행하도록 프로세서(30) 및 변환기(70)이 지원된다. 이하에서 더 상세히 기술하는 바와 같이 RTC 배터리(71)은 태블릿 시스템이 호출될 때 웨이크-업(wake-up)되는 것을 보장한다.
이동 클라이언트 시스템(10)을 위한 하드웨어 토폴로지로부터 전력 모드 및 전이 이벤트(transition events)와 관련하여 그러한 방식의 하나의 예가 도 8에 예시되어 있다. 이하에서의 설명 목적을 위하여, 이동 클라이언트 시스템의 사용자는 시스템의 활동성 수준을 위한 표시기(indicators)가 구비되어 있다는 사실에 유의하여야 한다. 전형적으로, 그러한 표시기 또는 호출 표지기(annunciators)는 손쉽게 이용할 수 있고, 값이 싸며, 대부분의 테크니컬 디바이스의 사용자에게 공지되어 있는 LED 형태일 것이다. 3 부분으로 이루어진 시스템에는 태블릿(11)을 위한 표시기, 홀스터(12)를 위한 표시기 및 송수신기(13)을 위한 표시기가 구비될 수 있다. 도 8에는, 태블릿(11)과 홀스터(12) 간의 상이한 활동 레벨을 반영하는 활동 상태들 간의 차이점들이 도시되어 있으며, 예시된 시스템은 태블릿 및 홀스터가 결합된 3 부분으로 이루어진 시스템인 것으로 가정한다.
배경 기술을 유의하면, 시스템의 완전한 활성 상태는 해당 LEDs 및 백라이트형(backlit) LCD(15)의 발광에 의해 표시된 바와 같이 완전히 활성화된 태블릿(11) 및 홀스터(12) 양자를 가진다. 그러한 상태는 도면부호(75)로 나타나 있다. 모든 콤포넌트들에 전력이 공급되지 않은(모든 배터리들이 제거된 것과 같은 경우) 정반대의 상태가 도면 부호(76)으로 표시되어 있고, 그 결과 모든 LEDs 및 백라이트형 LCD가 소광(unilluminate)된다. 완전히 활성화된 상태로부터 사용자는 턴-오프 목적으로 제공된 스위치를 동작시킴으로써, 또는 홀스터를 태블릿으로부터 분리시키거나 홀스터로부터 무선 송수신기를 분리시켜 필요한 상호 연결을 인터럽팅(interrupting)함으로써 홀스터(12)를 턴-오프(turn off)하도록 선택할 수 있다. 그러한 이벤트가 발생하면, 태블릿 LED 및 LCD는 발광 상태를 유지하는 반면(태블릿이 활성화된 상태로 있는한), 홀스터 LED는 소광된다(78). 이동 클라이언트는 메모리에 저장된 데이터를 사용하여 데이터 처리를 할 수 있으나, 지원 서버(20) 및 데이터 저장 장치(21)로부터 여전히 (단속적으로 또는 임시로)연결되어 있지 않을 수 있다. 이동 클라이언트 시스템 상에서 실행되는 소프트웨어에 의해 결정된 이벤트가 발생하면, 시스템은 중지(suspend)라고 하는 상태로 진입한다. 중지 상태(79)에서는, 태블릿 LED 및 LCD 및 홀스터 LED가 어두워진다(dark). 무선 송수신기가 사용되고 있으며, 3 부분으로 이루어진 시스템의 나머지 부분은 중지 상태에 있다고 할 때, 홀스터 LED는 발광하고 송수신기는 동작하는 상태(80)으로 시스템이 진입할 수 있다. 마찬가지로, 이동 클라이언트 시스템 상에서 실행되는 소프트웨어에 의해 다시 한 번 결정되는 이벤트가 발생하면, 시스템은 스탠바이(standby) 상태(81)로 진입한다. 스탠바이 상태에서, 태블릿 LCD는 전력을 절약하기 위하여 어두워지지만, 태블릿 LED는 시스템이 즉시 "깨어날(awaken)" 수 있다는 것을 표시하기 위하여 발광된 상태로 남아있다. 홀스터는 전력이 공급되지 않은 상태(LED가 어두어짐, 상태(82))로 있거나 또는 활성화된 상태로 남아 있을 수 있다. 타이머 기능이 제공되어, 시스템(10)이 스탠바이 상태로 있으면서 미리 정해진 시간 간격이 경과한 후에 시스템은 중지 모드로 전이된다.
시스템은 온/오프 스위치를 사용하여 오프 상태(Off state)(76) 및 활성화 상태(Active state)(78) 또는 (75) 사이에서 전이할 수 있다. 시스템은 온/오프 스위치 또는 배터리를 제거함으로써 중지 또는 스탠바이 상태로부터 오프 상태(76)으로 전이 할 수 있다. 시스템은 사용자에 의한 중지/재개 입력, 홀스터에 연결된 무선 송수신기로부터의 착신호 표시, 시간 간격의 타임 아웃, 또는 스마트 배터리 제어기로부터의 배터리 저 충전 표시에 응답하여 중지 상태(79) 또는(80)으로부터 활성화 상태(78) 또는(75)로 전이할 수 있다. 시스템은 사용자 입력 장치 또는 터치스크린을 사용한 입력과 같은 사용자 이벤트에 응답하여 스탠바이 상태로부터 활성화 상태(78) 또는(75)로 전이할 수 있다.
전력 모드 및 전이 이벤트의 또 다른 방법이 도 9에 도시되어 있다. 도 9에서 시스템 상태는 온 상태(On state)(75), 아이들 상태(Idle state)(83), 스탠바이 상태(Standby state)(82), 중지 상태(Suspend state)(80) 및 오프 상태(Off state)(76)을 가지는 것으로 나타나 있다. 온 상태(75)에서는, 시스템 LEDs 및 LCD가 발광되고, 프로세서(30)은 정상적인 고기능 모드(normal high function mode)로 동작하며, 애플리케이션 프로그램들은 활성화 상태에 있고, 다른 주변 장치들은 필요에 의해 전력이 관리되고 있다. 비활성화 상태에서의 시간이 경과하면 시스템은 아이들 상태(83)으로 진입하게 되는데, 그 상태에서는 프로세서에 의한 애플리케이션 프로그램의 실행이 종료되고, 프로세서는 전력 관리의 "도즈 하이(doze high)" 모드로 진입하고, LCD는 발광하며, 다른 주변 장치들은 필요에 따라 전력이 관리된다. 사용자 이벤트는 모두 시스템을 온 상태로 복귀시킬 수 있다. 시스템을 스탠바이 상태(82)로 진입하게 하는 시간이 경과하면, 애플리케이션 프로그램은 정적(static) 상태가 되고, 프로세서는 "도즈 로(doze low)" 모드로 진입하며, LCD는 어두워지고, 다른 모든 주변 장치들은 필요에 따라 전력이 관리된다. 시스템을 중지 상태(80)으로 진입하게 하는 시간이 경과하면, 애플리케이션 프로그램은 정적 상태가 되고, 재개를 위해 검사되며, 프로세서는 전력 관리의 "슬립(slip)" 모드로 진입하고, LCD는 어두워지며, 다른 모든 주변 장치들은 꺼진다. 따라서, 완전한 활성화 상태(75)로 전환하기 위한 시간 간격의 견지에서 보면, 시스템은 아이들 상태(83)으로부터 가장 빨리 복귀하고, 스탠바이 상태(82) 및 중지 상태(80)으로부터는 다소 빠르게 복귀하며, 오프 상태(76)으로부터는 가장 늦게 복귀한다.
이하에서는, 본 발명의 이동 클라이언트 시스템을 위하여 고안된 데이터의 디스플레이 및 통신을 간단히 설명한다. 특히 도 10을 참조하면, 시스템(10) 상에서 실행되는 애플리케이션 프로그램을 위한 디스플레이 스크린의 예시적인 표시가 도시되어 있다. 바람직하게는, 시스템(10)은 HTTP(Hyper Text Transfer Protocol)에 의한 연결 및 HTML(Hyper Text Markup Language)로 작성된 파일을 위해 사용되는 브라우저 프로그램의 성질을 가진 애플리케이션 프로그램을 실행한다. HTTP 및 HTML은 인터넷 또는 월드 와이드 웹으로 알려진 환경에서 널리 사용되기 시작하고 있다. 이러한 기술들은 본 명세서에서 지원 서버 및 메인 프레임 데이터 저장 장치를 통해 이용 가능한 리소스의 최대 사용 및 클라이언트 내의 최소 리소스를 갖는 이동 클라이언트 시스템의 동작을 용이하게 하는데 사용된다.
특히, 클라이언트 시스템의 프로세서(30)은 시스템 플래쉬 메모리(46)에 저장되어 있는 운영 체제 프로그램 및 브라우저 프로그램을 실행한다. 이러한 프로그램들을 실행하면, 시스템은 송수신기(13) 및 인터페이스(58) 또는 모뎀(41)에 의해 제공되는 무선 링크를 통하여 데이터를 전달함으로써 지원 서버와 데이터를 교환한다. 그렇게 교환된 데이터는 시스템 DRAM 메모리(45) 내의 운영 체제 및 브라우저로 조작하기 위하여 저장된다. 브라우저는 예를 들어 도 10에 도시된 것과 같이 나타날 수 있는 LCD(15) 스크린 상에 지원 서버로부터 획득된 데이터를 디스플레이한다. 스크린은 디스플레이된 필드의 상위 경계선을 가로질러 타이틀 바(90)을 가지며, 디스플레이된 필드 내에서 번호 또는 이름을 식별하는 것과 같은 데이터를 위해 정의된 필드를 가진 양식으로 나타나 있다. 도시된 특정 양식에서는, 필드는 식별된 환자의 센터 번호를 위한 필드, 병원 번호, 생년 월일 및 허가일 등을 포함하고 있다. 타이틀 바(90) 옆에는 동물이 표시되어 있는데, 여기서는 캉가루(91)로 예시되어 있다. 이러한 표시는 본 발명의 특정 구현과 부합하여 시스템이 하나의 데이터 액세스로부터 다른 데이터 액세스로 "점프(jumping)"하는 것을 표시하며 사용자는 "점프"가 완료되기를 기다려야 한다는 것을 나타내는데 사용된다. 타이틀 바(90) 바로 아래에는 메인(또는 초기) 스크린으로의 복귀, 특정 스크린으로의 복귀, 무선 링크에 의한 데이터의 교환, 배터리 충전 상태, 제시된 스크린에 대한 내비게이션(navigation)과 같은 기능 "버튼"의 표시가 또한 제공된다. ICU에 대한 승인 날짜, 클래스 필드와 같은 특정 필드는 사용자가 주석(annotate)을 달 수 있으며, "노트북(notebook)" 아이콘을 이들 필드들의 인접 위치에 위치시킴으로써 도시된 바와 같이 표시된다. 노트북은 현재 임의의 주석이 없음을 나타내는 클로즈(close) 상태(승인 필드의 날짜 옆에 위치함), 또는 현재 주석을 포함하고 있음을 나타내는 오픈(open) 상태(클래스 필드 옆에 위치함)일 수 있다.
이동 클라이언트 시스템(10)이 LCD(15)에 놓여있는 터치스크린(50)을 가지고 있기 때문에, 시스템 내로의 데이터 입력은 터치스크린의 필드에 적용되는 스타일러스(stylus), 포인터(pointer) 또는 핑거(finger)에 의해 달성될 수 있다. 따라서, 도 10을 참조하여, 사용자가 특정 환자의 성별을 식별하는 정보를 입력하고자 하는 경우, 사용자는 해당 데이터를 입력하기 위하여 "남성(male)" 또는 "여성(female)" 버튼을 (스타일러스, 포인터 또는 핑거)로 터치하면 된다. 마찬가지로, 사용자가 주석을 입력하고자 하는 경우, 사용자는 클로즈 및 오픈 상태 사이의 아이콘을 변경시키기 위하여 노트북 아이콘에 의해 정의된 필드를 터치하여 적당한 숫자 또는 영문자 데이터의 엔트리를 위한 필드를 오픈한다.
애플리케이션 프로그램 및 스크린 디스플레이의 다른 기능들은 다음의 관련 출원에서 개시된 것으로부터 보다 더 명백해질 것이다 :
"Mobile Client Computer with Keyboard Interface"라는 명칭으로 T.Aebli, B.Miller 및 W.W.Vetter에 의해 출원된 미국 특허 출원,
"Mobile Client Computer Programmed to Predict Input"이라는 명칭으로 R.L.Bertram, D.F.Champion 및 P.Brittenham에 의해 1996년 8월 22일에 출원된 미국 특허 출원 제 08/703,171호,
"Mobile Client Computer Programmed to Exchange Lists of Predicted Input"이라는 명칭으로 R.L.Bertram 및 W.T.Oldfield에 의해 1996년 8월 22일에 출원된 미국 특허 출원 제 08/708,168호,
"Mobile Client Computer Interacting with Docking Device"라는 명칭으로 E.H.Booth, B.A. Carpenter, R.B.Ferrier, R.A.Resnick 및 W.W.Vetter에 의해 출원된 미국 특허 출원,
"Mobile Client Computer Programmed to Copy Lists of Predicted Input"이라는 명칭으로 R.L.Bertram, P.J.Brittenham 및 D.F.Champion에 의해 1996년 8월 22일에 출원된 미국 특허 출원 제 08/706,990호,
"Mobile Client Computer with Battery Charging Control"이라는 명칭으로 C.Burroughs, B.A.Carpenter, G.O'Neil 및 R.A.Resnick에 의해 출원된 미국 특허 출원,
"Mobile Client Computer Programmed for Systems Message Display"라는 명칭으로 R.L.Bertram 및 D.F.Champion에 의해 출원된 미국 특허 출원,
"Mobile Client Computer Programmed with Brower Function"이라는 명칭으로 R.L.Bertram 및 D.F.Champion에 의해 출원된 미국 특허 출원,
"Mobile Client Computer Programmed to Combine Cursor, Control and Input Functions"라는 명칭으로 P.J.Brittenham 및 L.D.Comerford에 의해 출원된 미국 특허 출원,
"Mobile Client Computer Programmed to Display Drop Down Scrolling Indicator"라는 명칭으로 R.L.Bertram 및 D.F.Champion에 의해 출원된 미국 특허 출원,
"Mobile Client Computer Programmed to Hide Empty Table Elements"라는 명칭으로 R.L.Bertram에 의해 출원된 미국 특허 출원,
"Mobile Client Computer with Integrated Cellular Telephone"이라는 명칭으로 B.A.Carpenter, P.Lee, M.Noll 및 R.Reiland에 의해 출원된 미국 특허 출원,
"Mobile Client Computer with Holster for Integrating a Radio Transceiver"라는 명칭으로 D.H.Boehm, B.A.Carpenter, D.J.Hunt 및 M.S.Miller에 의해 출원된 미국 특허 출원,
"Mobile Client Computer Programmed to Display Hexagonal Keyboard"라는 명칭으로 R.L.Bertram, D.F.Champion 및 L.S.Eichron에 의해 출원된 미국 특허 출원,
"Mobile Client Computer Programmed to Establish Soft Keyboard Targeting"이라는 명칭으로 R.L.Bertram에 의해 1996년 8월 12일에 출원된 미국 특허 출원 제 08/700,606호,
"Mobile Client Computer Programmed to Display Lists and Hexagonal Keyboard"라는 명칭으로 R.L.Bertram 및 D.F.Champion에 의해 1996년 8월 22일에 출원된 미국 특허 출원 제 08/706,991호.
본 발명에 따르면, 이동 클라이언트 시스템은 플래쉬 메모리를 관리하는 특정 설비를 가지고 있다. 플래쉬 메모리는 전력이 공급되지 않아도 데이터를 저장하는 비휘발성(nonvolatile) 반도체 메모리이다. 플래쉬 메모리는 주로 디스크 장치의 대용으로 사용되는 2차 저장 장치(secondary storage)로 사용된다. 플래쉬 메모리에 관한 개요는 Well 등에게 부여된 미국 특허 제 5,479,633호에 개시되어 있다. 플래쉬 메모리 기술은 저전력 소모(low power consumption), 고속, 기계 부품의 부존재 및 작은 패키징 크기(small packaging size)를 갖는다는 면에서 다른 2차 저장 장치보다 장점을 가진다. 이러한 장점들 때문에 휴대용 컴퓨터(portable computer) 및 내장형 시스템(embedded system)과 같은 이동 컴퓨팅 환경에서 플래쉬 메모리가 자주 사용된다.
플래쉬 메모리는 자신의 동작에 영향을 미치는 고유한 물리적인 특성을 가진다. 플래쉬 메모리에서는 내용을 오버라이트(overwrite)할 수 없다. 시간을 소모하는 소거(erase) 동작은 동일한 장소에 각각의 기록이 행해지기 전에 이루어져야 한다. 메모리 설계에 따르면 소거후의 비트들의 값은 모두 1이다. 따라서, 비트들은 1에서 0으로만 변경될 수 있을 뿐이다(어떤 모델에서는 1 및 0의 역할이 반대로 되어있다). 소거는 소거 유닛(통상적으로 64 내지 128 Kbytes)이라고 불리우는 대용량의 메모리 단위로만 가능하다. 한 소거 유닛이 신뢰성을 해치지 않고 소거될 수 있는 횟수는 제한되어 있다(평균 100,000번).
플래쉬 메모리 기법의 두 개의 주요한 형식은 NOR 및 NAND이다. 가장 중요한 차이점은 액세스 능력이다. NOR 기법은 랜덤 액세스(random access)를 제공한다. 임의의 장소에 있는 바이트는 개별적으로 판독 및 기록될 수 있다. 그와는 반대로, NAND 기법에서 데이터는 페이지(통상적으로 256 바이트)라고 불리우는 대용량의 단위로만 판독되고 기록될 수 있다. 또한, 각각의 소거 유닛 내의 페이지들은 순차적인 순서대로만 기록될 수 있다.
명백하게, NOR 및 NAND 기법들은 상이한 메모리 관리 방식을 필요로 한다. 본 발명은 NOR 기법만을 취급한다.
플래쉬 메모리를 관리하는 다양한 방법들에 대한 발명이 이루어져 왔는데, 예를 들어 미국 특허 제 5,404,485호, 제 5,337,275호, 제 5,473,765호 및 제 5,457,658호 등이 있다. 이들 방법들은 모두 소정의 공통 원리를 가진다. 이들은 데이터가 블록 단위로 기록되고 판독되는 것을 포함한다. 각각의 블록은 가상 어드레스(virtual address)라고 하는 고유한 식별자를 가진다. 플래쉬 메모리는 각각이 고유한 물리적인 어드레스를 가지는 물리적인 블록들로 구성된다. 기록 동작은 메모리 내의 다음번 프리(free) 상태의(소거된) 물리적인 블록을 사용한다. 소정의 가상 어드레스가 재기록(re-written)되면, 데이터의 선행 인스턴스(instance)를 포함하는 물리적인 블록은 비활성(inactive)으로 마크된다. 매핑 구조(mapping structure)는 각각의 가상 어드레스를 자신의 현재 물리적인 어드레스와 연관시키는데 사용된다. 가비지 수집(garbage collection)은 백그라운드(background)로 수행된다. 비활성 블록들은 한 유닛으로부터 모든 활성 블록들을 이동시킨 후, 그 유닛을 소거함으로써 교정된다.
여러 가지의 플래쉬 메모리 관리 방법들 간의 차이는 주로 타겟 시스템 또는 애플리케이션 환경에 의해 대개 영향을 받는 메모리 구성으로부터 기인한다. 물리적인 블록들은 고정 길이 또는 가변 길이를 가지는데, 고정 길이 블록들은 각각의 블록이 디스크 섹터 크기가 되는 디스크 드라이브의 에뮬레이션에 가장 적합하다. 가변 길이 블록들은 타겟 환경에 대해 더 많은 유연성을 제공한다. 더 중요한 것은, 소정의 블록이 재기록될 때마다 블록의 압축 크기가 변할 수 있기 때문에 가변 길이 블록들은 분리됨이 없이 데이터를 압축된 형태로 저장하는데 효과적이다. 다른 차이들은 가상 어드레스에서 물리적인 어드레스로의 매핑 및 데이터 완전성을 유지하는 메카니즘에서 찾을 수 있다.
본 발명은 가변 블록 길이를 사용하고, 데이터 압축을 지원하는 플래쉬 메모리 관리 방법을 제공한다. 본 발명에 따르면, 블록들은 각각의 소거 유닛에 연속적으로 할당되는데, 여기서 각각의 블록은 맨 앞에 블록의 길이를 가지고 있는 헤더를 가진다. 블록들은 RAM에 상주하는 단일 레벨 가상 어드레스 맵을 사용하여 추적되며, 시작시의 스크래치(scratch)를 통해 구성될 수 있다. 동작들은 데이터 블록들을 판독 및 기록하고, 소거 유닛을 클리어시키며 가상 어드레스 맵을 생성하기 위하여 제공된다. 동작들은 메모리 구조의 일관성을 항상 유지시켜, 충돌(crash)이 발생할 때 유효 데이터의 손실없이 복구되도록 한다.
데이터 압축을 지원하는 몇가지 상이한 플래쉬 메모리 관리 방법들이 존재한다. 미국 특허 제 5,337,275호 및 제 5,479,633호에는 두 개의 유사한 방법들이 개시되어 있다. 이들 특허들은 소거 유닛의 구성 및 2 레벨 어드레스 매핑을 사용한다는 점에서 본 발명과는 다르다. 각각의 소거 유닛은 실제 블록들을 가리키는 포인터들을 가진 블록 맵을 포함한다. 블록 맵은 소거 유닛의 최상단(top)에서부터 시작하는 반면 블록들은 소거 유닛의 최하단(bottom)에서부터 할당된다(힙(heap) 및 스택(stack) 구조와 유사하다). 매핑 과정은 RAM 내의 메인 맵(main map)에서 플래쉬 메모리 내의 블록 맵까지의 두 단계로 진행된다. 또한, 데이터 완전성은 블록 맵 내의 리비젼 수(revision number)에 의해 유지되는데, 이러한 리비젼 수로부터 동일한 가상 어드레스의 다수의 물리적인 블록들 간에 임시 순서가 유도된다. 그와는 달리, 본 발명에서는 완전성이 블록들의 상태가 불변인 조건(invariance condition)에 의해 달성된다.
다른 기술 문헌에서는, 완전히 다른 방법이 사용된다. 메모리는 셀(cell)이라고 불리우는 작은 고정 크기 블록들로 나누어진다. 임의 길이의 데이터는 필요한 수 만큼의 셀에 기록되지만, 이러한 기록이 항상 연속적일 필요는 없다. 그 후, 셀들은 링크된 리스트(linked list)에 함께 연결(chain)된다.
본 발명을 규정하는 메모리 구성 및 동작들을 상세히 설명하면, 플래쉬 메모리 내에 저장하기 위한 데이터는 블록 단위로 구성되는데, 이 블록들은 가변 길이를 가질 수 있다. 각각의 데이터 블록은 가상 어드레스에 의해 식별된다. 예를 들어, 플래쉬 메모리가 디스크 장치 에뮬레이터로 사용되면, 각각의 디스크 섹터가 데이터 블록이 되고 가상 어드레스는 섹터 수(sector number)가 된다.
플래쉬 메모리는 다수의 소거 유닛으로 이루어진다. 각각의 소거 유닛은 연속적인 어드레스 공간을 나타낸다. 소거 유닛들은 유닛 0에서 시작하여 순차적으로 숫자가 매겨진다.
소거 유닛은 도 11에 도시된 바와 같이 구성되는데, 유닛 헤더는 오프셋 0에 위치하며, 그 이후에는 물리적인 블록들로 불리우는 가변 길이의 메모리 블록들의 시퀀스가 연속적으로 이어진다. 유닛 헤더는 유닛 번호(unit number)를 포함할 뿐만아니라, 본 발명과는 무관한 유닛의 다른 동작 및 통계 속성(attributes)도 포함한다.
각각의 가상 데이터 블록은 소거 유닛들 중의 하나의 유닛 내의 단일의 물리적인 블록에 저장된다. 데이터가 압축된 형식으로 저장되는 것은 선택 사양(optional)이다. 소정의 데이터 블록이 압축되어야 하는지를 결정하는 것은 본 발명의 범위에 포함되지 않는다. 본 명세서에서는, 압축 여부가 데이터 전송 중에 명시적으로 특정되거나 또는 디폴트(default)로 처리되는 것으로 가정한다. 데이터는 기록될 때에 압축되고, 판독시에 신장(uncompressed)된다. 압축 방법은 본 발명의 범위에 포함되지 않는다.
그러므로, 본 명세서에서는 "블록(block)"이라는 용어가 메모리 내의 물리적인 블록에 대해서도 사용되고 가상 데이터 블록에 대해서도 사용된다. 어느 블록을 나타내는지는 내용(context)으로부터 명확히 구별된다.
블록들은 유닛 헤더 바로 뒤에서 시작하여 소거 유닛 내에 연속적으로 할당된다. 블록은 블록 헤더, 그 뒤의 가변 길이 데이터로 이루어진다. 다음 블록의 헤더는 그 앞 블록 데이터의 바로 뒤에 위치한다.
블록 헤더는 저장된 데이터의 길이, 가상 어드레스(백 포인터(back pointer)) 및 저장된 데이터가 압축되어 있는지의 여부에 대한 사양(specification)을 포함한다.
각각의 블록은 소거 유닛 번호와 그 뒤에 이어지는 유닛의 시작부분에서 블록 헤더까지의 오프셋으로 이루어진 고유한 물리적인 어드레스를 가진다.
헤더는 하드웨어 기록 메카니즘의 정렬 속성(alignment property)에 따라서, 미리 정의된 경계(예를 들어, 풀 워드(full word), 더블 워드(double word) 등)로 정렬될 수 있는데, 이는 선택 사양(optional)이다. 이 경우, 일부 최하위 비트(least-significant bit)들은 물리적인 어드레스로부터 제거될 수 있다.
가상 어드레스 맵(Virtual Address Map : VAM)(도 11 참조)은 각각의 가상 어드레스를 플래쉬 메모리 내에 있는 블록의 물리적인 어드레스로 매핑한다. VAM 엔트리들은 가상 어드레스에 의해 인덱스된다. 통상적으로, 물리적인 어드레스 내의 오프셋 필드가 0이면 소정의 가상 메모리와 연관된 메모리 블록이 존재하지 않는다(소거 유닛 내의 오프셋 0은 유닛 헤더를 포함한다).
실행(runtime) 중에, VAM은 RAM 메모리에 유지된다. 그것은 모든 블록 헤더들을 스캐닝(scanning)함으로써 플래쉬 메모리 시작(startup)시에 스크래치(scratch)를 통해 구성될 수 있다. VAM 내의 오프셋 필드를 0으로 명시적으로 초기화하는 것이 필요하다.
상기에서 언급한 일부 플래쉬 메모리 관리 방법들은 블록 할당 맵을 각각의 소거 유닛에 유지하여, 물리적인 블록들의 2-레벨 트래킹(tracking)을 발생시킨다. 본 발명에서는, 블록들이 VAM으로부터 직접 트래킹된다.
각각의 크기가 128 Kbytes인 128 개의 소거 유닛을 포함하는 16 Mbytes 크기의 통상적인 플래쉬 메모리 장치에 대해서 살펴보기로 한다. 플래쉬 메모리에 저장되는 통상적인 데이터 블록은 길이가 0.5 내지 4 Kbytes이며 압축되지 않은 것이다. 평균 압축률이 2 내지 4라고 가정하면, 압축된 데이터 길이는 0.125 내지 2 Kbytes이다. 따라서, 소거 유닛은 블록을 1K 개까지 포함할 수 있다. 이는 최대 128K 개의 가상 어드레스를 지원한다. 물리적인 어드레스는 소거 유닛 번호용 7 비트와 오프셋 용 17 비트로 이루어진다. 따라서, VAM은 384 Kbytes의 RAM 저장 장치를 필요로 한다.
플래쉬-소거없이 데이터 재기록용 공간을 충분히 남기고, 백그라운드(background)로 효율적인 가비지 수집을 가능하도록 하기 위하여, 제공된 가상 어드레스 공간은 최대치보다 훨씬 작아야 한다. 기술 문헌에서 보고된 성능 연구에 따르면 사용되지 않는 어드레스 공간을 30%까지 남겨두어야 한다고 권고하고 있다. 이는 VAM에 대한 공간 요구량을 상기와 비슷한 양만큼 감소시킨다.
RAM 공간의 수요가 크게 늘어나면, 액세스 시간을 늘려 매핑 방법이 갱신될 수 있다. VAM은 (훨씬 작은 공간을 필요로 하는) 유닛 번호만을 포함할 수 있다. (RAM 내의) 작은 연관 캐쉬가 가상 어드레스 및 가장 최근에 사용된 블록들의 전체 물리적인 어드레스를 포함할 수 있다. 캐쉬 내에 있지 않은 가상 어드레스에 액세스하기 위해서, 유닛 번호가 VAM으로부터 획득되고, 그 유닛은 스캐닝(scan) 되어 소정의 가상 어드레스를 가진 블록 헤더를 찾아낸다.
이하에서는 블록 헤더 내의 필드들(fields)에 대해서 기술한다. 실제 구현에서는 추가적인 필드들이 정의될 수도 있지만, 본 발명과는 무관하다.
상기 동작에서 통상적으로 사용된 바와 같이, 플래쉬-소거 후 소거된 유닛 내의 모든 비트들은 1로 세트된다. 비트들은 0으로만 기록될 수 있다.
상태(State) (4 비트)
블록은 4 개의 상태들 중에서 하나의 상태에 있을 수 있다.
프리(free) (1111) : 이 상태는 메모리가 헤더로부터 소거 유닛의 끝까지 소거 상태이고 새로운 블록들을 할당하는데 이용 가능하다는 것을 나타낸다.
할당(allocated) (1110) : 블록이 할당되고 기록 과정 중에 있다.
준비(ready) (1100) : 블록이 성공적으로 기록되었고, 소정의 가상 어드레스의 현재 활성 블록의 교체를 준비하고 있다.
활성(active) (1000) : 블록이 소정의 가상 어드레스의 현재 데이터를 포함한다.
제거(deleted) (0???) : 블록이 논리적으로 제거되었다("?"은 "아무거나 상관없음(don't care)"을 의미함).
길이(Length) (예를 들어, 12 비트) : 이는 저장된 데이터(헤더를 포함하지 않음)의 길이이다. 데이터 구성의 관점에서 보면 길이가 0인 것도 가능하다, 빈 블록(empty block)의 의미(semantics)는 본 발명과는 무관하다. 길이 X'FFF'는 길이 0과 동등하다. 이는 VAM이 충돌(crash)이 일어난 후 재구성되는 경우와 관련된다. 12 비트이면 4 Kbytes의 블록 길이를 가지도록 한다. 이 필드는 구현 환경의 요구 조건에 따라서 더 짧아지거나 더 길어질 수 있다.
가상 어드레스(Virtual address) (예를 들어, 16 비트) : 가상 어드레스는 시작(startup)하는 동안 VAM을 재구성하는데 사용된다. 16 비트이면 64K의 가상 어드레스를 가능하게 한다. 이 필드는 사용되는 플래쉬 메모리의 크기 및 구현 환경의 요구 조건에 따라서 더 짧아지거나 더 길어질 수 있다.
속성(Attributes) : 이 필드는 데이터 필드의 여러 가지 속성들을 포함한다. 그러한 속성 중 하나는 저장된 데이터가 압축되어 있는지 (1) 또는 압축되어 있지 않은지 (0)를 나타내는 압축 플래그(compression flag)이다. 다른 속성들은, 예를 들어 압축 방법을 기술할 수 있다.
에러 정정 코드(ECC) : 이 필드는 상태(상태는 ECC가 세트된 후에 변경될 수 있다)를 제외한 헤더의 모든 필드들에 대해서 계산되는 에러 정정 코드이다.
위에서 정의한 값 이외의 상태 값은 상태 필드가 파손되었다는 것을 나타낸다. 플래쉬 소거 후 "프리(free)"시키기 위하여 블록 헤더들의 상태를 명시적으로 초기화할 필요는 없다. "할당(allocated)" 상태는 "프리(free)" 상태 및 X'FFF'가 아닌 길이의 조합으로 대안적으로 구현될 수 있다. 이렇게 하면, 상태 필드 내의 비트 수는 3으로 줄어들 수 있다. 상태 값들은 본 발명에서 정의된 동작시의 모든 상태 천이가 단일 비트 변경에 의해 이루어질 수 있는 값들이다.
데이터의 완전성을 위하여, 각각의 블록 헤더는 플래쉬 메모리 내에 두 개의 카피(copy)를 가져야 한다. 두 개의 카피의 상대적인 장소는 고장이 일어나는 경우 하드웨어 메카니즘이 두 개의 카피를 동시에 파손시킬 수 없는 장소에 위치하여야 한다. 이는 (적어도) 각각이 고장나는 경우에 대한 보호를 제공한다. 고장 때문에, (상태가 아닌) 소정 필드의 두 개의 카피가 동일하지 않으면, ECC를 사용하여 정확한 값이 복구될 수 있다. 상태의 경우, 두 개의 카피가 동일하지 않으면 그 상태 필드는 파손된 것으로 간주되어 해당 블록은 삭제되어야 한다.
이하의 불변 조건들은 본 발명에 정의된 동작들에 의해 항상 유지된다.
1. 항상 각각의 가상 어드레스에 대해 "활성(active)" 상태에 있는 블록이 많아야 하나 존재한다.
2. 항상 각각의 가상 어드레스에 대해 "준비(ready)" 상태에 있는 블록이 많아야 하나 존재한다.
3. 항상 각각의 소거 유닛에 "할당(allocated)" 상태에 있는 블록이 많아야 하나 존재한다.
불변 조건들은 데이터의 완전성을 보장한다. 이는 충돌 후에 유효한 데이터를 손실함이 없이 VAM을 재구성할 수 있도록 한다. 이것은 다중 동작들이 병렬적으로 되며, 예를 들어 록(locks)을 통한 동기화를 수반 할 수 있는 환경에서 필요하다.
일부 플래쉬 메모리 관리 방법들(예를 들어, 미국 특허 제 5,457,658호 및 제 5,479,633호)은 소정의 가상 어드레스의 다수의 블록들 간에 임시 순서를 유도하기 위하여 블록 헤더들 또는 유닛 헤더들 내의 리비젼 번호(revision number)를 사용한다. 본 발명에서는, 불변 조건들을 유지함으로써 리비젼 번호의 필요성을 완화시킨다. 미국 특허 제 5,473,765호에 개시된 플래쉬 메모리 관리는 3-비트 상태 필드를 사용하는데, 이 3-비트 상태 필드가 "준비(ready)" 및 "활성(active)" 상태 모두를 함께 지원할 수는 없다. 결정 불능인 복구 및 유효한 데이터의 손실 가능성을 가져오는 상기 특허 발명에 유사한 불변 조건들은 부과될 수 없다.
본 발명에 따른 메모리 관리는 이하에서 정의된 동작들을 이용한다.
블록 판독(read block) -- 소정의 가상 어드레스에서 데이터 블록을 판독한다.
블록 기록(write block) -- 소정의 가상 어드레스에 데이터 블록을 기록한다.
클리어 유닛(clear unit) -- 소정의 소거 유닛의 "활성(active)" 데이터 블록을 다른 장소로 옮기고 플래쉬가 그 유닛을 소거한다. 이 동작은 일반적으로 대규모 가비지 수집 활동의 일부분이다. 가비지 수집, 특히 클리어링(clearing)을 위해 어느 유닛을 선택해야 하는가에 대한 것은 본 발명의 범위를 넘어선다.
VAM 구축(build VAM) -- 플래쉬 메모리가 시작할 때 VAM을 구축한다. 동작 중에 플래쉬 메모리가 충돌(crash)하게 되면, 일관된 상태(consistent state)로 복구된다.
모든 시간에 있어서 충분한 프리 공간(sufficient free space)의 사용 가능성을 보장하기 위하여 소거된 유닛의 풀(pool)이 유지된다. 가비지 수집은 모든 시간에 있어서 미리 정해진 임계치(예를 들어, 8)를 초과하는 소거된 유닛의 수를 유지하기 위하여 백그라운드(background)로 작동한다.
새로운 블록들을 할당하는데 사용되는 기록 가능한 유닛들(예를 들어, 4 내지 8)의 작업 집합(working set)이 또한 유지된다. 작업 집합은 소거된 유닛들의 풀(pool)과는 구별된다. 작업 집합 내의 각각의 유닛에 대하여, 그 유닛 내의 제 1 프리 장소를 가리키는 포인터(오프셋)가 (RAM에) 유지된다. 가비지 수집은 작업 집합에는 적용되어서는 아니된다.
기록하는데 추가적인 공간이 필요하게 되면, 유닛은 소거된 유닛들의 풀로부터 작업 집합으로 이동된다. 유닛이 부가될 때, 작업 집합이 커지는 것을 방지하기 위하여 일부 다른 유닛(바람직하게는, 완전한 하나의 유닛)이 제거되어야 한다.
가변 블록 크기 때문에, 다수개의 유닛들을 동시에 채우는 것이 유용하다. 기억 장치 할당이 효율적인 방법으로 구현되어야 한다. 예를 들어, 상이한 크기의 그룹들(예를 들어, 스몰(small), 미디엄(medium) 등)로 이루어진 블록들이 상이한 유닛들 내에 할당될 수 있으며, 유닛들은 남아있는 프리 공간(free space)에 의해 그루핑(group)될 수 있다. 따라서, 그러한 고려는 본 발명 범위 밖이다.
블록 판독(Read Block) 동작에서, 가상 어드레스는 파라메타(parameter)로 주어진다. 데이터 블록 및 길이가 복귀된다. 그 동작은 다음을 포함한다 :
1. VAM으로부터 소정의 가상 어드레스와 연관된 물리적인 어드레스(유닛 및 오프셋)를 판독한다.
2. 오프셋(offset)이 0이면, 그 가상 어드레스에 대한 데이터가 플래쉬 메모리 내에 존재하지 않는다. 에러(error)를 복귀시킨다.
3. 블록 헤더로부터 상태, 길이 및 압축 플래그를 판독한다.
4. 상태가 "활성(active)"이 아니면, 다음 동작이 행해진다(주 : 여기서 상태는 파손 상태이다).
4.1. 블록의 헤더에 있는 상태를 "삭제(deleted)"로 변경한다.
4.2. 소정의 가상 어드레스에 대한 VAM 엔트리 내의 오프셋을 0으로 변경한 다.
4.3. 에러 메시지(error message)를 복귀시킨다.
5. 길이가 0(블록이 비어있음)이면, 소정의 메시지를 복귀시킨다.
6. 블록으로부터 데이터를 판독한다.
7. 압축(compression) = 0이면, 데이터를 신장(uncompression)시켜 신장된 데이터의 길이를 취한다. 이 단계에서 사용된 압축(신장) 방법은 본 발명과는 무관하다.
블록 기록 동작에서는, 가상 어드레스, 길이 및 압축 플래그가 파라메타로 주어진다. 또한, 압축 플래그 및 길이는 디폴트 값을 가질 수 있다. 동작은 다음을 포함한다 :
1. 압축(compression) = 1이면, 데이터를 압축시켜 압축된 데이터의 길이를 취한다.
2. 작업 집합으로부터 (구현된 할당 방법을 사용하여) 충분한 프리 공간을 가진 유닛을 선택한다. 작업 집합 내의 공간이 충분하지 않으면, 소거된 유닛의 풀(pool)로부터 유닛을 선택하여 작업 집합에 추가시킨다(일부 다른 유닛의 제거가 일어날 수 있음), 풀이 비어 있으면(발생할 가능성이 거의 없음) 가비지 수집에 의해 풀이 다시 채워질 때까지 기다린다.
3. (선택된 유닛에 대한 프리 공간 포인터를 사용하여) 유닛 내의 "프리(free)" 상태에 있는 첫 번째 블록(이는 "새로운 블록(new block)"라고 불리운다) 헤더를 찾아낸다, 새로운 블록의 헤더 내의 상태를 "할당(allocated)"으로 변경시킨다.
4. 새로운 블록의 헤더 내에 길이, 가상 어드레스, 압축 플래그 및 ECC를 기록한다. (작업 집합 내의 이 유닛에 대한 프리 공간 포인터를 갱신한다.)
5. 데이터(압축이 가능함)를 새로운 블록에 기록한다.
6. 새로운 블록의 헤더 내의 상태를 "준비(ready)"로 변경시킨다.
7. VAM으로부터 소정의 가상 어드레스(이는 "올드 블록(old block)"이라고 불리운다)와 연관된 물리적인 어드레스(유닛 및 오프셋)를 판독한다.
8. 올드 블록(오프셋)이 존재하면, 올드 블록의 헤더 내의 상태를 "삭제(deleted)"로 변경시킨다.
9. 새로운 블록의 헤더 내의 상태를 "활성(active)"으로 변경시킨다.
10. 새로운 블록의 물리적인 어드레스(유닛 및 오프셋)를 가상 어드레스에 대한 VAM 엔트리 내에 기록한다.
단계 1에서 사용된 압축 방법은 본 발명과는 무관하다. 작업 집합으로부터 유닛을 선택하기 위하여 단계 2에서 사용된 할당 방법은 본 발명의 범위를 벗어난다. 선택된 유닛은 "할당(allocated)" 상태에 있는 어떠한 블록도 가져서는 아니된다. 단계 6 내지 단계 9에서의 상태 변경 시퀀스는 플래쉬 메모리로 하여금 기록 동작 중의 충돌(crash)을 유지(sustain)하도록 한다. VAM이 재구축되면, (고유) 블록은 항상 "활성(active)"으로 지정될 수 있다.
클리어 유닛(Clear Unit) 동작이 발생하면, 유닛 번호가 파라메타로 주어진다. 그 유닛은 기록 가능한 유닛들의 작업 집합 내에 있지 않다고 가정한다. 결과적으로, 이 유닛 내에는 "할당(allocated)" 또는 "준비(ready)" 상태에 있는 블록이 존재하지 않는다. 그 동작은 이하의 단계들을 포함한다 :
1. 유닛 내의 모든 블록들을 순차적으로 스캔한다, 하나의 블록으로부터 다음 블록으로 진행하기 위하여 블록 헤더 내의 길이 필드를 사용한다. 스캐닝된 각각의 블록("현재 블록(current block)"이라고 불리운다)에 대하여 이하의 동작을 실행한다.
1.1. 현재 블록의 헤더로부터 상태, 길이 및 가상 어드레스 필드들을 판독한다.
1.2. 현재 블록의 상태가 "활성(active)"이면 이하의 동작을 실행한다.
1.2.1. 작업 집합으로부터 (구현된 할당 방법을 사용하여) 충분한 프리 공간을 가진 유닛을 선택한다. 작업 집합 내의 공간이 충분하지 않으면, 소거된 유닛의 풀(pool)로부터 유닛을 선택하여 작업 집합에 추가시킨다(일부 다른 유닛의 제거가 일어날 수 있음).
1.2.2. (선택된 유닛에 대한 프리 공간 포인터를 사용하여) 유닛 내의 "프리(free)" 상태에 있는 첫 번째 블록(이는 "새로운 블록(new block)"라고 불리운다) 헤더를 찾아낸다, 새로운 블록의 헤더 내의 상태를 "할당(allocated)"으로 변경시킨다.
1.2.3. 현재 블록의 헤더로부터 상태를 제외한 모든 필드들을 새로운 블록의 헤더로 카피한다.
1.2.4. 현재 블록으로부터 새로운 블록으로 데이터를 카피한다.
1.2.5. 새로운 블록의 헤더 내의 상태를 "준비(ready)"로 변경시킨다.
1.2.6. 새로운 블록의 헤더 내의 상태를 "삭제(deleted)"로 변경시킨다.
1.2.7. 새로운 블록의 헤더 내의 상태를 "활성(active)"으로 변경시킨다.
1.2.8. 새로운 블록의 물리적인 어드레스(유닛 및 오프셋)를 가상 어드레스에 대한 VAM 엔트리 내에 기록한다.
1.3. 그렇지 않고, 현재 블록의 상태가 파손된 상태이면 이하의 동작을 실행한다.
1.3.1. VAM으로부터 현재 가상 어드레스와 연관된 물리적인 어드레스(유닛 및 오프셋)을 판독한다.
1.3.2. VAM 엔트리 내의 물리적인 어드레스가 현재 블록을 가리키고 있으면, VAM 엔트리 내의 오프셋을 0으로 세트한다.
2. (유닛 내의 모든 블록들이 스캐닝됐음). 플래쉬가 유닛을 소거하여, 그 소거된 유닛을 소거된 유닛의 풀에 집어넣는다.
단계 1.2.5 내지 단계 1.2.7의 상태 변화 시퀀스는 플래쉬 메모리로 하여금
클리어(clear) 동작 중의 충돌(crash)을 유지(sustain)하도록 한다. VAM이 재구축되면, 소정의 가상 어드레스에 대한 (고유) 블록은 항상 "활성(active)"으로 지정될 수 있다. 선택된 유닛은 "할당(allocated)" 상태에 있는 어떠한 블록도 가져서는 아니된다. 단계 1.2.1에서 유닛을 선택하기 위하여 사용되는 할당 방법은 본 발명의 범위를 벗어난다. 가비지 수집 성능의 고려(garbage collection performance considerations)에 따라서, 상기 동작은 블록-기록(write-block)이 사용하는 동작과는 구별되는 자신의 작업 집합을 요구할 수 있다.
구성(Build) VAM 동작 중에, "준비(ready)" 상태에 있는 블록들의 물리적인 어드레스를 포함하는 리스트가 RAM 내에 구축된다. 그 리스트는 동작이 완료되면 폐기된다. 이러한 동작은 다음의 단계들을 포함한다 :
1. VAM에 대한 공간을 할당하고 모든 오프셋을 0으로 초기화한다.
2. 전체 플래쉬 메모리 내의 모든 블록들을 스캔한다, 각 유닛 내에서 하나의 블록으로부터 다음 블록으로 진행하기 위하여 블록 헤더 내의 길이 필드를 사용한다. 스캐닝되고 있는 각각의 블록("현재 블록(current block)"이라고 불리운다)에 대하여 이하의 동작을 실행한다.
2.1. 현재 블록의 헤더로부터 상태, 길이 및 가상 어드레스를 판독한다.
2.2. 현재 블록의 상태가 "준비(ready)"이면 이하의 동작을 실행한다.
2.2.1. 가상 어드레스(이는 "이전 블록(previous block)"이라고 불리운다)에 대한 VAM 엔트리 내의 물리적인 어드레스(유닛 및 오프셋)를 취한다.
2.2.2. 이전 블록이 존재하면(오프셋이 0이 아님) 이하의 동작을 실행한다.(주 : 이전 블록의 상태는 "활성(active)"임.)
2.2.2.1. 이전 블록의 헤더 내의 상태를 "삭제(deleted)"로 변경시킨다.
2.2.2.2. 현재 블록의 헤더 내의 상태를 "활성(active)"로 변경시킨다.
2.2.3. 그렇지 않으면(이전 블록이 존재하지 않으면), 현재 블록의 물리적인 어드레스를 "준비(ready)" 블록들의 리스트에 추가시킨다.
2.2.4. 현재 블록의 물리적인 어드레스를 가상 어드레스에 대한 VAM 엔트리 내에 기록한다.
2.3. 그렇지 않고, 현재 블록의 상태가 "활성(active)"이면 이하의 동작을 실행한다.
2.3.1. 가상 어드레스(이는 "이전 블록(previous block)"이라고 불리운다)에 대한 VAM 엔트리 내의 물리적인 어드레스(유닛 및 오프셋)를 취한다.
2.3.2. 이전 블록이 존재하면(오프셋이 0이 아님) 이하의 동작을 실행한다.(주 : 이전 블록의 상태는 "준비(ready)"임.)
2.3.2.1. 현재 블록의 헤더 내의 상태를 "삭제(deleted)"로 변경시킨다.
2.3.2.2. 이전 블록의 헤더 내의 상태를 "비활성(inactive)"으로 변경시킨다.
2.3.3. 현재 블록의 물리적인 어드레스를 가상 어드레스에 대한 VAM 엔트리 내에 기록한다.
2.4. 그렇지 않고, 현재 블록의 상태가 "프리(free)"가 아니면, 이하의 동작을 실행한다.(주 : 상태는 "할당(allocated)"이거나, "삭제(deleted)"이거나 파손된 상태임).
2.4.1. 길이(length) = X'FFF'이면(길이 필드가 세트되어 있지 않음) 현재 블록의 헤더 내의 길이 필드를 0으로 세트한다.
2.4.2. 현재 블록의 헤더 내의 상태를 "삭제(deleted)"로 변경시킨다.
3. (플래쉬 메모리 내의 모든 블록들이 스캐닝되었음). "준비(ready)" 블록들의 리스트 상의 각각의 물리적인 어드레스에 대하여, 그 블록의 헤더 내의 상태를 "활성(active)"으로 변경시킨다.
단계 2.2.3에서, 그 블록이 "준비(ready)" 블록들의 리스트에 추가되는 이유는 그 시점에서 소정의 가상 어드레스에 대하여 "활성(active)" 상태에 있는 블록이 존재하는지의 여부를 알 수 없기 때문이다. "준비(ready)" 블록의 상태는 "활성(active)" 블록이 발견될 때(단계 2.3.2) 또는 전체 메모리가 스캐닝된 후에 "활성(active)"으로 변경된다. 단계 2.2.2 내지 단계 2.3.2의 상태 변화의 시퀀스는 심지어는 구축 동작(build operation) 중에도 플래쉬 메모리로 하여금 유효 데이터 손실없이 충돌(crash)을 유지(sustain)하도록 한다.
도면 및 상세한 설명에서는 본 발명의 바람직한 실시예가 도시되어 있고, 특정 용어가 사용되었지만, 상기 설명은 일반적이며 설명 목적으로만 용어를 사용한 것으로 본 발명을 한정하기 위한 것이 아니다.
본 발명을 사용하면, 이동 클라이언트 시스템과 같은 컴퓨터 시스템에서 플래쉬 메모리 관리(flash memory manegement) 방법이 효율적으로 수행된다.
Claims (15)
- 이동 클라이언트 컴퓨터 시스템(mobile client computer system)에 있어서,a) 사용자의 손에 보유될 수 있는 크기이며 사용자가 손으로 조작할 수 있는 하우징,b) 상기 하우징 내에 장착되며, 디지털 데이터를 처리하는 프로세서,c) 상기 프로세서에 연결되어 있으며, 디지털 데이터를 저장하기 위하여 상기 하우징 내에 장착되는 랜덤 액세스 메모리(RAM),d) 상기 프로세서에 연결되며, 복수개의 소거 유닛(erase unit)에 디지털 데이 터의 가변 길이 블록들을 저장하기 위한 플래쉬 메모리(flash memory),e) 상기 메모리 및 상기 프로세서에 연결되어 있고, 또한 상기 하우징 내에 장착되며, 상기 프로세서에 의해 처리되는 디지털 데이터로부터 추출되는 정보를 디스플레이하는 디스플레이,f) 상기 하우징 내에 장착되어 있으며, 상기 디스플레이를 오버레이(overlay) 하는 입력 디지타이저(input digitizer)―여기서 디지타이저는 사용자에 의 한 디지털 데이터의 입력을 가능하게 하기 위하여 상기 프로세서에 연결 되어 있음― 및g) 상기 메모리에 저장되어 있으며, 상기 플래쉬 메모리에 저장된 데이터를 관리하기 위하여 상기 프로세서에 의해 액세스 가능한 플래쉬 메모리 관 리 제어 프로그램을 포함하며, 상기 제어 프로그램이 실행될 때, 플래쉬 메모리 관리 제어 프로그램과 프로세서가 상호 협력하여 (ⅰ) 상기 플래쉬 메모리에 저장된 데이터의 블록들에 대한 가상 어드레스 맵(virtual address map)을 구축하고, (ⅱ) 각각의 블록이 헤더와 가변 길이 데이터 필드를 갖는 연속적인 블록들을 상기 플래쉬 메모리의 소거 유닛들 내에 할당하는 이동 클라이언트 컴퓨터 시스템.
- 제 1항에 있어서, 상기 가상 어드레스 맵이 상기 RAM에 저장되는 이동 클라이언트 컴퓨터 시스템.
- 제 1항에 있어서, 상기 플래쉬 메모리 내의 상기 데이터 필드에 저장되는 데이터가 압축되는 이동 클라이언트 컴퓨터 시스템.
- 제 1항에 있어서, 상기 플래쉬 메모리 관리 제어 프로그램이 가장 가까운 이전 블록(next previous block)의 데이터 바로 뒤에 위치하는 하나의 블록 헤더를 가진 상기 플래쉬 메모리 내에 블록들을 할당하는 이동 클라이언트 컴퓨터 시스템.
- 제 1항에 있어서, 할당된 블록 각각의 상기 헤더가 연관된 데이터 필드의 길이, 가상 어드레스 및 저장되는 데이터가 압축되는지의 여부에 대한 사양(specification)을 정의하는 정보를 포함하는 이동 클라이언트 컴퓨터 시스템.
- 컴퓨터에 있어서,a) 하우징,b) 상기 하우징 내에 장착되며 디지털 데이터를 처리하는 프로세서,c) 상기 프로세서에 연결되어 있으며, 디지털 데이터를 저장하기 위하여 상기 하우징 내에 장착되는 랜덤 액세스 메모리(RAM),d) 상기 프로세서에 연결되며, 복수개의 소거 유닛(erase unit)에 디지털 데이 터의 가변 길이 블록들을 저장하기 위한 플래쉬 메모리(flash memory),e) 상기 메모리 및 상기 프로세서에 연결되어 있으며, 상기 프로세서에 의해 처리되는 디지털 데이터로부터 추출되는 정보를 디스플레이하는 디스플레이,f) 상기 프로세서에 연결되어 있으며, 사용자가 디지털 데이터를 입력하기 위 한 입력 장치 및g) 상기 메모리에 저장되어 있으며, 상기 플래쉬 메모리에 저장된 데이터를 관리하기 위하여 상기 프로세서에 의해 액세스 가능한 플래쉬 메모리 관리 제어 프로그램을 포함하며, 상기 제어 프로그램이 실행될 때, 플래쉬 메모리 관리 제어 프로그램과 프로세서가 상호 협력하여 (ⅰ) 상기 플래쉬 메모리에 저장된 데이터의 블록들에 대한 가상 어드레스 맵(virtual address map)을 구축하고, (ⅱ) 각각의 블록이 헤더와 가변 길이 데이터 필드를 갖는 연속적인 블록들을 상기 플래쉬 메모리의 소거 유닛들 내에 할당하는 컴퓨터 시스템.
- 제 6항에 있어서, 상기 가상 어드레스 맵이 상기 RAM에 저장되는 컴퓨터 시스템.
- 제 6항에 있어서, 상기 플래쉬 메모리 내의 상기 데이터 필드에 저장되는 데이터가 압축되는 컴퓨터 시스템.
- 제 6항에 있어서, 상기 플래쉬 메모리 관리 제어 프로그램이 가장 가까운 이전 블록(next previous block)의 데이터 바로 뒤에 위치하는 하나의 블록 헤더를 가진 상기 플래쉬 메모리 내에 블록들을 할당하는 컴퓨터 시스템.
- 제 6항에 있어서, 할당된 블록 각각의 상기 헤더가 연관된 데이터 필드의 길이, 가상 어드레스 및 저장되는 데이터가 압축되는지의 여부에 대한 사양(specification)을 정의하는 정보를 포함하는 컴퓨터 시스템.
- 디스플레이 발생 시스템(display generating system)에 있어서,a) 하우징,b) 상기 하우징 내에 장착되며, 디지털 데이터를 처리하는 프로세서,c) 상기 프로세서에 연결되어 있으며, 디지털 데이터를 저장하기 위하여 상기 하우징 내에 장착되는 랜덤 액세스 메모리(RAM),d) 상기 프로세서에 연결되며, 복수개의 소거 유닛(erase unit)에 디지털 데이 터의 가변 길이 블록들을 저장하기 위한 플래쉬 메모리(flash memory) 및e) 상기 메모리에 저장되어 있으며, 상기 플래쉬 메모리에 저장된 데이터를 관리하기 위하여 상기 프로세서에 의해 액세스 가능한 플래쉬 메모리 관리 제어 프로그램을 포함하며, 상기 프로세서, RAM 및 플래쉬 메모리가 상호 협력하여 비쥬얼 이미지(visual images)의 디스플레이를 구동하는 디지털 데이터를 제공하며, 상기 제어 프로그램이 실행될 때, 플래쉬 메모리 관리 제어 프로그램과 프로세서가 상호 협력하여 (ⅰ) 상기 플래쉬 메모리에 저장된 데이터의 블록들에 대한 가상 어드레스 맵(virtual address map)을 구축하고, (ⅱ) 각각의 블록이 헤더와 가변 길이 데이터 필드를 갖는 연속적인 블록들을 상기 플래쉬 메모리의 소거 유닛들 내에 할당하는 디스플레이 발생 시스템.
- 제 11항에 있어서, 상기 가상 어드레스 맵이 상기 RAM에 저장되는 디스플레이 발생 시스템.
- 제 11항에 있어서, 상기 플래쉬 메모리 내의 상기 데이터 필드에 저장되는 데이터가 압축되는 디스플레이 발생 시스템.
- 제 11항에 있어서, 상기 플래쉬 메모리 관리 제어 프로그램이 가장 가까운 이전 블록(next previous block)의 데이터 바로 뒤에 위치하는 하나의 블록 헤더를 가진 상기 플래쉬 메모리 내에 블록들을 할당하는 디스플레이 발생 시스템.
- 제 11항에 있어서, 할당된 블록 각각의 상기 헤더가 연관된 데이터 필드의 길이, 가상 어드레스 및 저장되는 데이터가 압축되는지의 여부에 대한 사양(specification)을 정의하는 정보를 포함하는 디스플레이 발생 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/848,372 US5943692A (en) | 1997-04-30 | 1997-04-30 | Mobile client computer system with flash memory management utilizing a virtual address map and variable length data |
US8/848,372 | 1997-04-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19980079601A KR19980079601A (ko) | 1998-11-25 |
KR100273030B1 true KR100273030B1 (ko) | 2000-12-01 |
Family
ID=25303083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019980000626A KR100273030B1 (ko) | 1997-04-30 | 1998-01-12 | 이동 클라이언트 컴퓨터 및 플래쉬 메모리 관리 |
Country Status (3)
Country | Link |
---|---|
US (1) | US5943692A (ko) |
KR (1) | KR100273030B1 (ko) |
TW (1) | TW442732B (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100952135B1 (ko) * | 2001-09-28 | 2010-04-09 | 샌디스크 아이엘 엘티디 | 순차적 기록만을 사용하는 플래시 관리 시스템 |
Families Citing this family (155)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7190617B1 (en) * | 1989-04-13 | 2007-03-13 | Sandisk Corporation | Flash EEprom system |
US6347051B2 (en) * | 1991-11-26 | 2002-02-12 | Hitachi, Ltd. | Storage device employing a flash memory |
KR980013092A (ko) * | 1996-07-29 | 1998-04-30 | 김광호 | 교환시스템의 화일관리장치 및 방법 |
US6701361B1 (en) * | 1996-08-22 | 2004-03-02 | Intermec Ip Corp. | Enhanced mobility and address resolution in a wireless premises based network |
CN1249585C (zh) * | 1997-12-16 | 2006-04-05 | Tdk株式会社 | 闪速存储器系统 |
CN1249586C (zh) * | 1997-12-22 | 2006-04-05 | Tdk株式会社 | 闪速存储器系统 |
KR100319598B1 (ko) * | 1998-03-18 | 2002-04-06 | 김영환 | 플래시메모리어레이액세스방법및장치 |
US6279114B1 (en) * | 1998-11-04 | 2001-08-21 | Sandisk Corporation | Voltage negotiation in a single host multiple cards system |
US6624761B2 (en) | 1998-12-11 | 2003-09-23 | Realtime Data, Llc | Content independent data compression method and system |
US6601104B1 (en) | 1999-03-11 | 2003-07-29 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
US6604158B1 (en) | 1999-03-11 | 2003-08-05 | Realtime Data, Llc | System and methods for accelerated data storage and retrieval |
US6148354A (en) | 1999-04-05 | 2000-11-14 | M-Systems Flash Disk Pioneers Ltd. | Architecture for a universal serial bus-based PC flash disk |
US6970459B1 (en) | 1999-05-13 | 2005-11-29 | Intermec Ip Corp. | Mobile virtual network system and method |
JP2001025053A (ja) | 1999-07-09 | 2001-01-26 | Mitsubishi Electric Corp | 携帯電話のメモリシステム |
US6629317B1 (en) * | 1999-07-30 | 2003-09-30 | Pitney Bowes Inc. | Method for providing for programming flash memory of a mailing apparatus |
EP1243116A2 (en) * | 1999-12-31 | 2002-09-25 | Realscale Technologies Inc. | A server module and a distributed server-based internet access scheme and method of operating the same |
US7181608B2 (en) | 2000-02-03 | 2007-02-20 | Realtime Data Llc | Systems and methods for accelerated loading of operating systems and application programs |
KR100356897B1 (ko) * | 2000-03-30 | 2002-10-19 | 주식회사 텔레게이트 | 휴대용 데이터 저장 장치 |
US6680923B1 (en) * | 2000-05-23 | 2004-01-20 | Calypso Wireless, Inc. | Communication system and method |
US7546141B2 (en) * | 2000-05-23 | 2009-06-09 | Robert Leon | Hybrid communication system and method |
US8692695B2 (en) | 2000-10-03 | 2014-04-08 | Realtime Data, Llc | Methods for encoding and decoding data |
US7417568B2 (en) | 2000-10-03 | 2008-08-26 | Realtime Data Llc | System and method for data feed acceleration and encryption |
US9143546B2 (en) | 2000-10-03 | 2015-09-22 | Realtime Data Llc | System and method for data feed acceleration and encryption |
KR20020038195A (ko) * | 2000-11-16 | 2002-05-23 | 최건 | 휴대용 정보 기기에 다중 처리 운영 체제를 탑재한 경우의메모리 관리 기법 |
US7386046B2 (en) | 2001-02-13 | 2008-06-10 | Realtime Data Llc | Bandwidth sensitive data compression and decompression |
EP1233522A1 (en) * | 2001-02-14 | 2002-08-21 | Siemens Aktiengesellschaft | A data compression/decompression method and apparatus |
US6718451B2 (en) * | 2002-01-31 | 2004-04-06 | Intel Corporation | Utilizing overhead in fixed length memory block pools |
TW200407704A (en) * | 2002-11-13 | 2004-05-16 | Mediatek Inc | Memory data managing method and allocation thereof |
CA2426619A1 (en) * | 2003-04-25 | 2004-10-25 | Ibm Canada Limited - Ibm Canada Limitee | Defensive heap memory management |
US7827375B2 (en) * | 2003-04-30 | 2010-11-02 | International Business Machines Corporation | Defensive heap memory management |
TWI383700B (zh) * | 2003-11-24 | 2013-01-21 | Dj Wireless Llc | 用於無線資料通訊之混合式通訊系統及方法 |
TWI254947B (en) * | 2004-03-28 | 2006-05-11 | Mediatek Inc | Data managing method and data access system for storing all management data in a management bank of a non-volatile memory |
DE102005013896B4 (de) * | 2004-03-28 | 2014-07-03 | Mediatek Inc. | Verfahren zur Datenverwaltung und Datenzugriffssystem zum Speichern von allen Verwaltungsdaten in einer Verwaltungsbank eines nicht-flüchtigen Speichers |
US7644239B2 (en) * | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
US8019925B1 (en) * | 2004-05-06 | 2011-09-13 | Seagate Technology Llc | Methods and structure for dynamically mapped mass storage device |
US7386700B2 (en) | 2004-07-30 | 2008-06-10 | Sandisk Il Ltd | Virtual-to-physical address translation in a flash file system |
US7490197B2 (en) | 2004-10-21 | 2009-02-10 | Microsoft Corporation | Using external memory devices to improve system performance |
DE102004062245A1 (de) * | 2004-12-23 | 2006-07-13 | Giesecke & Devrient Gmbh | Verwaltung von Datenobjekten in einem nichtflüchtigen überschreibbaren Speicher |
US7916421B1 (en) | 2005-05-05 | 2011-03-29 | Seagate Technology Llc | Methods and structure for recovery of write fault errors in a dynamically mapped mass storage device |
US7653847B1 (en) | 2005-05-05 | 2010-01-26 | Seagate Technology Llc | Methods and structure for field flawscan in a dynamically mapped mass storage device |
US7620772B1 (en) | 2005-05-05 | 2009-11-17 | Seagate Technology, Llc | Methods and structure for dynamic data density in a dynamically mapped mass storage device |
US7617358B1 (en) | 2005-05-05 | 2009-11-10 | Seagate Technology, Llc | Methods and structure for writing lead-in sequences for head stability in a dynamically mapped mass storage device |
US7603530B1 (en) | 2005-05-05 | 2009-10-13 | Seagate Technology Llc | Methods and structure for dynamic multiple indirections in a dynamically mapped mass storage device |
US7685360B1 (en) | 2005-05-05 | 2010-03-23 | Seagate Technology Llc | Methods and structure for dynamic appended metadata in a dynamically mapped mass storage device |
US7752491B1 (en) | 2005-05-05 | 2010-07-06 | Seagate Technology Llc | Methods and structure for on-the-fly head depopulation in a dynamically mapped mass storage device |
US7630734B2 (en) | 2005-10-20 | 2009-12-08 | Harris Corporation | Mobile wireless communications device providing enhanced file management and related methods |
US8914557B2 (en) | 2005-12-16 | 2014-12-16 | Microsoft Corporation | Optimizing write and wear performance for a memory |
US20070201270A1 (en) * | 2005-12-30 | 2007-08-30 | Stmicroelectronics Pvt. Ltd. | Read only memory device with bitline leakage reduction |
FR2895828B1 (fr) * | 2006-01-03 | 2008-05-30 | Thales Sa | Procede de gestion de donnees destinees a etre ecrites et lues dans une memoire |
KR100673027B1 (ko) * | 2006-01-31 | 2007-01-24 | 삼성전자주식회사 | 고온 스트레스로 인해 감소된 읽기 마진을 보상할 수 있는불 휘발성 메모리 장치 |
US7913003B2 (en) * | 2006-02-24 | 2011-03-22 | Intel Corporation | Reclaim algorithm for fast edits in a nonvolatile file system |
FI20060427L (fi) * | 2006-05-03 | 2007-11-04 | Tellabs Oy | Menetelmä ja laitteisto peräkkäistiedoston käsittelemiseksi |
KR100852729B1 (ko) * | 2006-09-12 | 2008-08-19 | 이너비트 주식회사 | 데이타 압축 관리장치 |
EP1918822A1 (fr) * | 2006-10-31 | 2008-05-07 | Axalto SA | Système et procédé d'indexation de mémoire |
US8825718B2 (en) * | 2006-12-28 | 2014-09-02 | Oracle America, Inc. | Methods and apparatus for marking objects for garbage collection in an object-based memory system |
US7966039B2 (en) * | 2007-02-02 | 2011-06-21 | Microsoft Corporation | Bidirectional dynamic offloading of tasks between a host and a mobile device |
US7996599B2 (en) * | 2007-04-25 | 2011-08-09 | Apple Inc. | Command resequencing in memory operations |
US7856522B2 (en) * | 2007-05-16 | 2010-12-21 | Oracle International Corporation | Flash-aware storage optimized for mobile and embedded DBMS on NAND flash memory |
US8631203B2 (en) | 2007-12-10 | 2014-01-14 | Microsoft Corporation | Management of external memory functioning as virtual cache |
KR20100133359A (ko) * | 2007-12-24 | 2010-12-21 | 동우 화인켐 주식회사 | 이리듐 착물, 이를 포함하는 유기전기발광소자 |
US7934052B2 (en) | 2007-12-27 | 2011-04-26 | Pliant Technology, Inc. | System and method for performing host initiated mass storage commands using a hierarchy of data structures |
US9229887B2 (en) * | 2008-02-19 | 2016-01-05 | Micron Technology, Inc. | Memory device with network on chip methods, apparatus, and systems |
JP4653817B2 (ja) * | 2008-03-01 | 2011-03-16 | 株式会社東芝 | メモリシステム |
US7978721B2 (en) | 2008-07-02 | 2011-07-12 | Micron Technology Inc. | Multi-serial interface stacked-die memory architecture |
US9772936B2 (en) * | 2008-07-10 | 2017-09-26 | Micron Technology, Inc. | Data collection and compression in a solid state storage device |
JP2010020586A (ja) * | 2008-07-11 | 2010-01-28 | Nec Electronics Corp | データ処理装置 |
US8086913B2 (en) * | 2008-09-11 | 2011-12-27 | Micron Technology, Inc. | Methods, apparatus, and systems to repair memory |
US8032707B2 (en) | 2008-09-15 | 2011-10-04 | Microsoft Corporation | Managing cache data and metadata |
US9032151B2 (en) | 2008-09-15 | 2015-05-12 | Microsoft Technology Licensing, Llc | Method and system for ensuring reliability of cache data and metadata subsequent to a reboot |
US7953774B2 (en) | 2008-09-19 | 2011-05-31 | Microsoft Corporation | Aggregation of write traffic to a data store |
US8181046B2 (en) | 2008-10-29 | 2012-05-15 | Sandisk Il Ltd. | Transparent self-hibernation of non-volatile memory system |
US8327111B2 (en) * | 2009-03-30 | 2012-12-04 | International Business Machines Corporation | Method, system and computer program product for batched virtual memory remapping for efficient garbage collection of large object areas |
US8365041B2 (en) | 2010-03-17 | 2013-01-29 | Sandisk Enterprise Ip Llc | MLC self-raid flash data protection scheme |
US9123552B2 (en) | 2010-03-30 | 2015-09-01 | Micron Technology, Inc. | Apparatuses enabling concurrent communication between an interface die and a plurality of dice stacks, interleaved conductive paths in stacked devices, and methods for forming and operating the same |
US8909982B2 (en) | 2011-06-19 | 2014-12-09 | Sandisk Enterprise Ip Llc | System and method for detecting copyback programming problems |
US8910020B2 (en) | 2011-06-19 | 2014-12-09 | Sandisk Enterprise Ip Llc | Intelligent bit recovery for flash memory |
US9058289B2 (en) | 2011-11-07 | 2015-06-16 | Sandisk Enterprise Ip Llc | Soft information generation for memory systems |
US9048876B2 (en) | 2011-11-18 | 2015-06-02 | Sandisk Enterprise Ip Llc | Systems, methods and devices for multi-tiered error correction |
US8954822B2 (en) | 2011-11-18 | 2015-02-10 | Sandisk Enterprise Ip Llc | Data encoder and decoder using memory-specific parity-check matrix |
US8924815B2 (en) | 2011-11-18 | 2014-12-30 | Sandisk Enterprise Ip Llc | Systems, methods and devices for decoding codewords having multiple parity segments |
US9218294B1 (en) * | 2012-06-06 | 2015-12-22 | Sk Hynix Memory Solutions Inc. | Multi-level logical block address (LBA) mapping table for solid state |
US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
US20140052897A1 (en) * | 2012-08-17 | 2014-02-20 | Seagate Technology Llc | Dynamic formation of garbage collection units in a memory |
US9501398B2 (en) | 2012-12-26 | 2016-11-22 | Sandisk Technologies Llc | Persistent storage device with NVRAM for staging writes |
US9239751B1 (en) | 2012-12-27 | 2016-01-19 | Sandisk Enterprise Ip Llc | Compressing data from multiple reads for error control management in memory systems |
US9612948B2 (en) | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US9454420B1 (en) | 2012-12-31 | 2016-09-27 | Sandisk Technologies Llc | Method and system of reading threshold voltage equalization |
US9003264B1 (en) | 2012-12-31 | 2015-04-07 | Sandisk Enterprise Ip Llc | Systems, methods, and devices for multi-dimensional flash RAID data protection |
US9329991B2 (en) | 2013-01-22 | 2016-05-03 | Seagate Technology Llc | Translation layer partitioned between host and controller |
US9214965B2 (en) | 2013-02-20 | 2015-12-15 | Sandisk Enterprise Ip Llc | Method and system for improving data integrity in non-volatile storage |
US9329928B2 (en) | 2013-02-20 | 2016-05-03 | Sandisk Enterprise IP LLC. | Bandwidth optimization in a non-volatile memory system |
US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
US9236886B1 (en) | 2013-03-15 | 2016-01-12 | Sandisk Enterprise Ip Llc | Universal and reconfigurable QC-LDPC encoder |
US9092350B1 (en) | 2013-03-15 | 2015-07-28 | Sandisk Enterprise Ip Llc | Detection and handling of unbalanced errors in interleaved codewords |
US9009576B1 (en) | 2013-03-15 | 2015-04-14 | Sandisk Enterprise Ip Llc | Adaptive LLR based on syndrome weight |
US9136877B1 (en) | 2013-03-15 | 2015-09-15 | Sandisk Enterprise Ip Llc | Syndrome layered decoding for LDPC codes |
US9244763B1 (en) | 2013-03-15 | 2016-01-26 | Sandisk Enterprise Ip Llc | System and method for updating a reading threshold voltage based on symbol transition information |
US9367246B2 (en) | 2013-03-15 | 2016-06-14 | Sandisk Technologies Inc. | Performance optimization of data transfer for soft information generation |
US9170941B2 (en) | 2013-04-05 | 2015-10-27 | Sandisk Enterprises IP LLC | Data hardening in a storage system |
US10049037B2 (en) | 2013-04-05 | 2018-08-14 | Sandisk Enterprise Ip Llc | Data management in a storage system |
JP2014216041A (ja) * | 2013-04-30 | 2014-11-17 | ソニー株式会社 | メモリ装置およびメモリ管理方法 |
US9159437B2 (en) | 2013-06-11 | 2015-10-13 | Sandisk Enterprise IP LLC. | Device and method for resolving an LM flag issue |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
US9043517B1 (en) | 2013-07-25 | 2015-05-26 | Sandisk Enterprise Ip Llc | Multipass programming in buffers implemented in non-volatile data storage systems |
US9384126B1 (en) | 2013-07-25 | 2016-07-05 | Sandisk Technologies Inc. | Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems |
JP6443794B2 (ja) * | 2013-08-16 | 2018-12-26 | エルエスアイ コーポレーション | ホストとコントローラとの間でパーティション化された変換レイヤ |
US9639463B1 (en) | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
US9361221B1 (en) | 2013-08-26 | 2016-06-07 | Sandisk Technologies Inc. | Write amplification reduction through reliable writes during garbage collection |
US9519577B2 (en) | 2013-09-03 | 2016-12-13 | Sandisk Technologies Llc | Method and system for migrating data between flash memory devices |
US9442670B2 (en) | 2013-09-03 | 2016-09-13 | Sandisk Technologies Llc | Method and system for rebalancing data stored in flash memory devices |
US9158349B2 (en) | 2013-10-04 | 2015-10-13 | Sandisk Enterprise Ip Llc | System and method for heat dissipation |
US9323637B2 (en) | 2013-10-07 | 2016-04-26 | Sandisk Enterprise Ip Llc | Power sequencing and data hardening architecture |
US9298608B2 (en) | 2013-10-18 | 2016-03-29 | Sandisk Enterprise Ip Llc | Biasing for wear leveling in storage systems |
US9442662B2 (en) | 2013-10-18 | 2016-09-13 | Sandisk Technologies Llc | Device and method for managing die groups |
US9436831B2 (en) | 2013-10-30 | 2016-09-06 | Sandisk Technologies Llc | Secure erase in a memory device |
US9263156B2 (en) | 2013-11-07 | 2016-02-16 | Sandisk Enterprise Ip Llc | System and method for adjusting trip points within a storage device |
US9244785B2 (en) | 2013-11-13 | 2016-01-26 | Sandisk Enterprise Ip Llc | Simulated power failure and data hardening |
US9152555B2 (en) | 2013-11-15 | 2015-10-06 | Sandisk Enterprise IP LLC. | Data management with modular erase in a data storage system |
US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
US9280429B2 (en) | 2013-11-27 | 2016-03-08 | Sandisk Enterprise Ip Llc | Power fail latching based on monitoring multiple power supply voltages in a storage device |
US9520162B2 (en) | 2013-11-27 | 2016-12-13 | Sandisk Technologies Llc | DIMM device controller supervisor |
US9122636B2 (en) | 2013-11-27 | 2015-09-01 | Sandisk Enterprise Ip Llc | Hard power fail architecture |
US9582058B2 (en) | 2013-11-29 | 2017-02-28 | Sandisk Technologies Llc | Power inrush management of storage devices |
US9250676B2 (en) | 2013-11-29 | 2016-02-02 | Sandisk Enterprise Ip Llc | Power failure architecture and verification |
US9092370B2 (en) | 2013-12-03 | 2015-07-28 | Sandisk Enterprise Ip Llc | Power failure tolerant cryptographic erase |
US9235245B2 (en) | 2013-12-04 | 2016-01-12 | Sandisk Enterprise Ip Llc | Startup performance and power isolation |
US9129665B2 (en) | 2013-12-17 | 2015-09-08 | Sandisk Enterprise Ip Llc | Dynamic brownout adjustment in a storage device |
US9549457B2 (en) | 2014-02-12 | 2017-01-17 | Sandisk Technologies Llc | System and method for redirecting airflow across an electronic assembly |
US9497889B2 (en) | 2014-02-27 | 2016-11-15 | Sandisk Technologies Llc | Heat dissipation for substrate assemblies |
US9703636B2 (en) | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
US9348377B2 (en) | 2014-03-14 | 2016-05-24 | Sandisk Enterprise Ip Llc | Thermal isolation techniques |
US9519319B2 (en) | 2014-03-14 | 2016-12-13 | Sandisk Technologies Llc | Self-supporting thermal tube structure for electronic assemblies |
US9485851B2 (en) | 2014-03-14 | 2016-11-01 | Sandisk Technologies Llc | Thermal tube assembly structures |
US9448876B2 (en) | 2014-03-19 | 2016-09-20 | Sandisk Technologies Llc | Fault detection and prediction in storage devices |
US9454448B2 (en) | 2014-03-19 | 2016-09-27 | Sandisk Technologies Llc | Fault testing in storage devices |
US9390814B2 (en) | 2014-03-19 | 2016-07-12 | Sandisk Technologies Llc | Fault detection and prediction for data storage elements |
US9390021B2 (en) | 2014-03-31 | 2016-07-12 | Sandisk Technologies Llc | Efficient cache utilization in a tiered data structure |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
US9645749B2 (en) | 2014-05-30 | 2017-05-09 | Sandisk Technologies Llc | Method and system for recharacterizing the storage density of a memory device or a portion thereof |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US9703491B2 (en) | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
US9070481B1 (en) | 2014-05-30 | 2015-06-30 | Sandisk Technologies Inc. | Internal current measurement for age measurements |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
US9093160B1 (en) | 2014-05-30 | 2015-07-28 | Sandisk Technologies Inc. | Methods and systems for staggered memory operations |
US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US8891303B1 (en) | 2014-05-30 | 2014-11-18 | Sandisk Technologies Inc. | Method and system for dynamic word line based configuration of a three-dimensional memory device |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
US9443601B2 (en) | 2014-09-08 | 2016-09-13 | Sandisk Technologies Llc | Holdup capacitor energy harvesting |
CN111400201B (zh) * | 2020-03-19 | 2022-08-16 | 合肥兆芯电子有限公司 | 快闪存储器的数据整理方法、存储装置及控制电路单元 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5479633A (en) * | 1992-10-30 | 1995-12-26 | Intel Corporation | Method of controlling clean-up of a solid state memory disk storing floating sector data |
US5337275A (en) * | 1992-10-30 | 1994-08-09 | Intel Corporation | Method for releasing space in flash EEPROM memory array to allow the storage of compressed data |
US5459850A (en) * | 1993-02-19 | 1995-10-17 | Conner Peripherals, Inc. | Flash solid state drive that emulates a disk drive and stores variable length and fixed lenth data blocks |
JP2856621B2 (ja) * | 1993-02-24 | 1999-02-10 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置 |
US5404485A (en) * | 1993-03-08 | 1995-04-04 | M-Systems Flash Disk Pioneers Ltd. | Flash file system |
US5696926A (en) * | 1993-07-30 | 1997-12-09 | Apple Computer, Inc. | Method and apparatus for transparently compressing data in a primary storage device |
US5682497A (en) * | 1993-09-28 | 1997-10-28 | Intel Corporation | Managing file structures for a flash memory file system in a computer |
US5473765A (en) * | 1994-01-24 | 1995-12-05 | 3Com Corporation | Apparatus for using flash memory as a floppy disk emulator in a computer system |
JP3507132B2 (ja) * | 1994-06-29 | 2004-03-15 | 株式会社日立製作所 | フラッシュメモリを用いた記憶装置およびその記憶制御方法 |
US5812930A (en) * | 1996-07-10 | 1998-09-22 | International Business Machines Corp. | Information handling systems with broadband and narrowband communication channels between repository and display systems |
US5805157A (en) * | 1996-08-12 | 1998-09-08 | International Business Machines Corporation | Mobile client computer with hexagonal keyboard |
-
1997
- 1997-04-30 US US08/848,372 patent/US5943692A/en not_active Expired - Lifetime
-
1998
- 1998-01-12 KR KR1019980000626A patent/KR100273030B1/ko not_active IP Right Cessation
- 1998-04-29 TW TW087106637A patent/TW442732B/zh not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100952135B1 (ko) * | 2001-09-28 | 2010-04-09 | 샌디스크 아이엘 엘티디 | 순차적 기록만을 사용하는 플래시 관리 시스템 |
Also Published As
Publication number | Publication date |
---|---|
KR19980079601A (ko) | 1998-11-25 |
TW442732B (en) | 2001-06-23 |
US5943692A (en) | 1999-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100273030B1 (ko) | 이동 클라이언트 컴퓨터 및 플래쉬 메모리 관리 | |
US5974238A (en) | Automatic data synchronization between a handheld and a host computer using pseudo cache including tags and logical data elements | |
KR100288493B1 (ko) | 이동클라이언트컴퓨터컴퓨터및디스플레이발생시스템 | |
KR100288492B1 (ko) | 정보처리시스템 | |
JP3393795B2 (ja) | 入力を予測するようにプログラミングされた装置及び方法 | |
KR19980079584A (ko) | 테이블 디스플레이를 처리하도록 프로그램된 이동 클라이언트 컴퓨터 | |
KR950010826B1 (ko) | 계산기시스템으로 동작하는 소프트웨어를 중단, 재개하기 위한 장치 | |
JP3250198B2 (ja) | ホストコンピュータとの自動データ同期化機能を有するハンドヘルドコンピュータ | |
KR100276951B1 (ko) | 도킹 장치와 상호작용하는 이동 클라이언트 컴퓨터 | |
US6073136A (en) | Mobile computer with minimized function display and maximized content display | |
AU2004281029B2 (en) | Portable electronic device having high and low power processors operable in a low power mode | |
JPH1091347A (ja) | 六角キーボードを表示するようにプログラムされたモービル・クライアント・コンピュータ | |
US5878276A (en) | Handheld computer which establishes an input device as master over the CPU when it is coupled to the system | |
US6008810A (en) | Mobile client computer programmed for system message display | |
CN109902255B (zh) | 页面混合浏览记录生成方法、装置、设备和存储介质 | |
JP2006024188A (ja) | 補助的情報の表示および探索をオフラインで行うためのデータのキャッシュ動作 | |
KR100263010B1 (ko) | 비어있는 테이블 요소들을 감추도록 프로그램된 이동클라이언트 시스템 | |
WO2004097552A2 (en) | System and method for integrating persistent and non-persistent storage in an integrated storage area | |
JPH04362716A (ja) | システム再起動装置 | |
CN1902565A (zh) | 具有高、低功率处理器能够工作于低功率模式的便携式电子设备 | |
EP0449569B1 (en) | Information processing apparatus | |
CN114860380A (zh) | 数据同步的方法、装置、电子设备及计算机可读存储介质 | |
JPH06103237A (ja) | 携帯型コンピュータ | |
JPH02125367A (ja) | 携帯形情報検索装置 | |
JPH10207844A (ja) | 携帯用データ表示装置 |
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: 20120824 Year of fee payment: 13 |
|
FPAY | Annual fee payment |
Payment date: 20130827 Year of fee payment: 14 |
|
FPAY | Annual fee payment |
Payment date: 20150827 Year of fee payment: 16 |
|
FPAY | Annual fee payment |
Payment date: 20160829 Year of fee payment: 17 |
|
FPAY | Annual fee payment |
Payment date: 20170828 Year of fee payment: 18 |
|
EXPY | Expiration of term |