KR20000062879A - 메모리 소자 역분할 방법 및 장치 - Google Patents
메모리 소자 역분할 방법 및 장치 Download PDFInfo
- Publication number
- KR20000062879A KR20000062879A KR1020000012971A KR20000012971A KR20000062879A KR 20000062879 A KR20000062879 A KR 20000062879A KR 1020000012971 A KR1020000012971 A KR 1020000012971A KR 20000012971 A KR20000012971 A KR 20000012971A KR 20000062879 A KR20000062879 A KR 20000062879A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- copy
- descriptor
- descriptors
- chunk
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Luminescent Compositions (AREA)
- Purification Treatments By Anaerobic Or Anaerobic And Aerobic Bacteria Or Animals (AREA)
- Memory System (AREA)
- Curing Cements, Concrete, And Artificial Stone (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Semiconductor Memories (AREA)
- Light Receiving Elements (AREA)
Abstract
본 발명은 각각이 적어도 3 개의 기술자(descriptors)를 갖는 2 개의 기술자 세트를 제공하는 방법에 관한 것으로서, 각 세트는 역분할(defragmentation) 과정 동안 수행될 복사 동작(copy operations)의 소스(source) 및 타겟(target)의 위치를 정의하기 위해 교대로 사용된다. 역분할 과정은 복사 청크(copy chunks) 상에서의 복사 동작의 시퀀스(sequence), 즉, 복사될 유효 데이터 블럭의 일부로서 복사될 순차적으로 정렬된 소정 바이트 수로서 수행된다. 상기 시퀀스 내의 상기 복사 동작 각각에서는 상기 기술자에게 할당된 값이 변경된다. 본 발명의 특징에 의하면, 역분할 과정으로 이루어진 복사 동작의 전체 시퀀스 중에, 2 개의 기술자 세트 중 하나는 상기 복사 청크 상에서의 복사 동작 중의 전원 차단(a power break)에 대비하여 복사 청크의 내용을 복원(restore)하는 데 사용가능한 정보를 유지한다. 따라서, 역분할 과정은 안전하며, 데이터 순도(data integrity)도 보장된다.
Description
본 발명은 전반적으로 컴퓨터 시스템의 시스템 소프트웨어에 관한 것으로서, 보다 구체적으로는 메모리 역분할(memory defragmentation)을 개선하는, 특별하게는 역분할될 칩카드(chipcards)를 인에이블(enable)시키는 방법 및 시스템을 다룬다.
여러 상이한 목적으로, 때때로 스마트카드(SmartCards)라 불리는 칩카드와 이들의 응용을 수용하고 응용하는 것이 증가하고 있음을 통해 점점 더 중요해지는 새로운 기술 분야가 무엇인지 알 수 있다.
메모리는 칩카드 상의 제한된 자원이다. 따라서, 메모리를 최대한 효율적으로 이용하는 방법이 전반적으로 구현되어야 한다.
칩카드를 사용하는 동안, 새로운 데이터(fresh data)를 저장하기 위해 반복적인 메모리 할당 동작이 필요하고, 칩카드의 메모리 내의 데이터를 삭제한 후에는 반복적인 메모리 할당해제(deallocation) 동작이 필요하다. 대부분의 칩카드에서는 소정 양의 사용 이후에는 메모리가 "분할(fragmented)"되기 때문에, 즉, 다수의 "유효(valid)"데이터 블럭이, 이후의 데이터 저장을 어렵게 만들 뿐인 "홀(holes)"을 이들 사이에 갖고 있는 전체 메모리에 분포하기 때문에, 메모리가 효율적으로 사용되지 못한다. 본 상세한 설명에서 제공된 단어를 올바르게 이해하기 위해서는, 유효한 데이터 블럭이란 일반적으로 의미론적인 맥락에서(in a semantic context) 통상적인 상비(standing) 데이터 세트를 의미한다는 점에 유의하여야 한다. "유효"는 상기 블럭의 내용이 메모리를 액세스하는 프로그램에 의해 사용될 필요가 있다는 것을 나타내기 위해 사용된다. "유효"는 홀 위치에는 유효한 데이터가 없음을 나타내는, 유효 데이터 블럭 사이의 사용되지 않은 간극(gap)인 홀과는 반대이고, 이들의 전체 크기를 이용하는 것이 역분할 과정의 목표이다. 유효 데이터 블럭에 의해 표현되는 데이터 세트의 크기 및 복사 청크(copy chunks)의 크기에 따라, 예를 들어, 청크가 데이터 블럭에 비해 상대적으로 작을 때, 전체 데이터 블럭은 다수의 복사 청크를 포함할 수 있다. 반대로, 전체 데이터 블럭이 하나의 복사 청크에 포함될 수도 있다. 스마트카드로의 응용에 있어서, 메모리는 종종 EEPROM이고, 예컨대, 64 바이트 크기를 갖는 부-유닛(sub-unit)으로서 EEPROM으로 분할된다.
오늘날의 칩카드는 상이한 성향의 메모리 구조를 갖는다. EEPROM 메모리는 칩카드 홀더(chipcard holder)의 개별화된(personalized) 데이터를 유지하는 비휘발성 메모리(a non-volatile memory)이다. 오늘날의 전형적인 응용은 카드 내에 파일 시스템을 저장하는데, 이는 ISO 7816/4 표준에서 다소 묘사되어 있다.
다른 구현은 EEPROM 내에 저장될 임의의 데이터 블럭을 포함할 수 있다. 전술한 바와 같이, 이러한 블럭이 삭제될 때마다 일반적인 문제점이 존재한다. 이러한 문제점은 메모리의 분할(fragmentation)이라 지칭한다. 이는 블럭의 삭제 시에 나타난다. 메모리 블럭이나 파일이 삭제되면, 사용되지 않은 메모리의 "홀"이 생성된다. 생성 중인 새로운 블럭은 이 홀보다 클 수 있는데, 그러면, 이들은 나머지 빈(free) 메모리에 할당되어야 한다.
새롭게 생성된 블럭이 기존의 홀보다 작으면 이 홀 또는 다른 홀 내에 맞추어지겠지만, 대부분의 경우 새로운 블럭과 삭제된 블럭 사이의 블럭 크기의 차에 의해 보다 작은 다른 홀이 생성될 것이다.
카드 메모리 전체에 걸쳐 블럭이 삭제되고, 다른 블럭이 빈번하게 생성되면, 칩카드는 각각이 요청된 블럭 크기보다 작기 때문에 할당될 수 없는 필수적인 양의 사용되지 않은 메모리 홀을 포함할 수 있다. 이 경우, 칩카드는 그 후에 추가 메모리 공간을 할당하기 위해 분할되어야 할 것이다.
분할의 영향을 줄이기 위한 서로 다른 접근 방법들이 있다. 메모리는 세그먼트로 구성되고, 요청된 각 블럭은 하나의 세그먼트 크기인 부-블럭(sub-blocks)으로 분할된다. 그러나, 이는 할당된 각각의 블럭마다 최대 하나의 세그먼트 크기일 수 있는 하나의 홀을 남긴다. 따라서, 이 방법은 메모리를 남김없이 사용하는 데 있어서는 덜 효과적이다. 독일에서, 칩카드 제조자 ODS는 이 시스템을 사용한다.
분할의 영향을 줄이기 위한 다른 접근 방법은, 블럭 크기가 선택된 홀보다 작으면, 칩카드 내에서 존재하는 홀 중 요청된 블럭 크기와 가장 적은 차이를 갖는 크기의 홀을 찾는다. 이 방법은 "최선-맞춤-알고리즘(Best-Fit-Algorithm)"이라 지칭하며, 분할의 영향을 적게 유지하는 가장 잘 알려진 방법이다.
분할 문제를 해결하는 한 가지 명백한 방법은 메모리의 역분할이다. 역분할 자체는 하드 디스크 드라이브에 있어 주지되어 있지만, 칩카드에 대해서는 주지되어 있지 않다. 하드 디스크 역분할을 위해 이용가능한 프로그램은 서로 다른 제조자들에 의해 판매되고 있다. 일반적으로, 역분할 과정은 사용된 메모리 블럭을 복사하여, 인접한 2 개의 블럭 사이의 홀이 채워지도록 한다. 역분할 후 모든 블럭은 서로 연속하게 되어, 블럭 사이에는 더 이상 홀이 존재하지 않게 된다.
그러나, 칩카드에 있어서 역분할은 운영 체제 기법의 현재 기술 수준에 의해서는 실행 불가능하다. 실행 불가능하다하다는 것은 적절한 노력과 성능으로 구현될 수 있고, 따라서, 칩카드 상에서 이용가능한 ROM의 제한 내에서 응용될 수 있는 접근 방법이 현재까지는 제시되지 않았다는 것을 의미한다.
이러한 상황은 현재 논의 중인 범세계적 프로젝트, 예컨대, JAVA 카드와도 관련있는데, 여기서는 역분할 문제가 존재하기 때문에 "쓰레기 수집(garbage collection)"과제가 해결될 수 없었다.
칩카드에서 역분할 문제는 두 가지 경향으로 나타난다. 첫 번째 문제는 메모리의 구조에 기인한다. 전형적으로 메모리는 메모리 위치의 물리적인 주소가 메모리 자체 내에 저장되도록 구성된다. 소위 "기술자(descriptor)"는 메모리 내의 특정 위치를 기술하는 임의의 수단을 의미하기 위한 일반적인 표현으로 사용되며, 구체적으로는, 포인터(pointers)를 기술자로 이해하고 있다. 상세한 설명과 청구범위에서 언급하는 기술자는 그러한 의미로 이해되어야 한다. 따라서, 포인터는 다른 메모리 위치의 어드레스를 저장하는 그러한 위치이다. 대부분의 메모리 구조가 가장 효과적인 메모리 구조의 하나인 "연결 리스트(linked lists)"로 설계됨에 따라, 이들 어드레스는 메모리 전역에 분포한다.
또한, 파일 액세스 메커니즘은 메모리 내에 할당된 파일이나 블럭을 사용하기 위해 고정된 물리적 어드레스를 이용한다. 메모리의 역분할은 전체 EEPROM 범위 내에서 메모리 블럭을 이동시킬 것이다. 결과적으로, 물리적 주소에 대한 모든 참조(references)가 칩카드 내에서 갱신되어야 할 것이다. 이는 상당한 프로그래밍 수고를 필요로 하며, 대부분의 경우에서 하나의 EEPROM 페이지 내에 기록될 2 개의 어드레스에 도달하는 것이 불가능할 것이므로 상당히 성능을 떨어뜨릴 것이다.
역분할 문제의 다른 결정적인 경향은 칩카드의 역분할 중에 해결하기가 훨씬 더 어려운 문제를 나타낸다. 메모리 구조와는 무관하게, 역분할은 항상 많은 메모리 청크를 복사해야 할 것이다. 그러나, 칩카드는 예를 들어, 카드로의 착수(attack) 중에 사고로 발생하거나 의도적으로 발생하는 전원 장애(power failure), 즉, 임의 종류의 전원 차단에 대해 100 % 견딜 수 있어야 한다.
결과적으로, 전원 차단 시, 역분할의 개시 또는 종료에 관해 칩카드의 메모리 레이아웃(layout)을 재구성할 수 있어야 한다.
복원을 행하는 주지된 방법은 EEPROM의 임의의 변경 이전에 데이터 레이아웃을 유지하도록 하는 EEPROM 내의 예비 메모리 위치(a reserved memory location)인 이른바 역추적(Backtrace) 또는 기록 전향 버퍼(Write Forward Buffers)에 의해 구현된다. 그러나, 이들 버퍼는 이들의 크기가 임의의 복사된 EEPROM 범위의 크기보다 커야하기 때문에, 칩카드 내에서는 동작할 수 없다.
완전한 역분할 과정 중에 전체 EEPROM 범위까지 복사되어야 하므로, 이를테면, 홀이 EEPROM의 바로 시작 부분에 있고 메모리 공간이 칩카드 상의 매우 제한된 자원이면, 가능한 전원 차단 후에 EEPROM 정보를 복원하기 위한 적절한 역추적 또는 기록 전향 버퍼를 제공하는 것이 불가능하게 된다.
따라서, 현재 기술 수준에서는 100 % 전력 장애를 견디는 역할을 유지함으로써 칩카드 내의 EEPROM의 역분할을 수행할 수 없다.
따라서, 본 발명의 목적은 100 % 전원 장애를 견디는 역할을 유지하면서 최소의 프로그래밍 수고와 역분할 과정에 대한 객체인 메모리 공간을 초과하는 최소의 추가 메모리 공간만을 필요로 하는 역분할 방법을 제공하는 것이다.
본 발명의 또 다른 목적은 100 % 전원 장애를 견디는 역할을 유지하면서, 이용가능한 하드웨어 및 소프트웨어 자원이 감소된 계산 장치(computing devices) 내의 메모리 소자를 역분할하는 방법 및 시스템을 제공하는 것이다.
본 발명의 상기 목적은 첨부하는 독립 청구항에서 진술한 특징에 의해 달성된다. 또한, 본 발명의 유리한 구성 및 실시예는 각 종속항에서 진술될 것이다.
본 발명의 기본 사상은 각각이 적어도 3 개의 기술자(descriptors)를 갖는 2 개의 기술자 세트를 제공하는 것으로서, 각 세트는 역분할(defragmentation) 과정 동안 수행될 복사 동작(copy operations)의 소스(source) 및 타겟(target)의 위치를 정의하기 위해 교대로 사용된다. 역분할 과정은 복사 청크(copy chunks) 상에서의 복사 동작의 시퀀스(sequence), 즉, 복사될 유효 데이터 블럭의 일부로서 복사될 순차적으로 정렬된 소정 바이트 수로서 수행된다. 상기 시퀀스 내의 상기 복사 동작 각각에서는 상기 기술자에게 할당된 값이 변경된다. 본 발명의 특징에 의하면, 역분할 과정으로 이루어진 복사 동작의 전체 시퀀스 중에, 2 개의 기술자 세트 중 하나는 상기 복사 청크 상에서의 복사 동작 중의 전원 차단(a power break)에 대비하여 복사 청크의 내용을 복원(restore)하는 데 사용가능한 정보를 유지한다. 따라서, 역분할 과정은 안전하며, 데이터 순도(data integrity)도 보장된다. 기본적으로, 제공된 해법은 통상적인 컴퓨터 시스템에서도 응용될 수 있으므로, 칩카드에서의 사용에 한정되지는 않는다. 그러나, 유리한 응용 분야는, 예를 들어, 1999 년 현재 기술 수준의 개인용 컴퓨터, 즉, 펜티엄 III에 비해 하드웨어와 소프트웨어 자원이 감소할 가능성을 갖는 모든 장치이다. 따라서, 본 발명은 장래에 개발될 많은 "미니"컴퓨터 장치에 적용될 수 있다.
그러나, 이러한 비교는 항상 상대적으로 고려해야 한다는 것, 즉, "감소할 가능성"은 장래에 증가할 수 있으며, 장래의 각 기술 수준에서의 계산 장치에 대해서도 여전히 비교되어야 한다는 것에 유의해야 한다.
본 발명에 따르면, 고성능으로 동작하며, 역분할 문제를 해결하는 역분할에 대한 새로운 해법이 제공되며, 이 모든 것은 완전하게 그리고 전체로서 더 관련된다.
제안된 해법을 달성하기 위해, 칩카드의 메모리 레이아웃은 다음 방안에 따라 설계될 필요가 있다.
EEPROM 메모리에 대한 임의의 기준은 상대적인 것이다. 유일하게 고정된 물리적 주소는 이들이 아닌, 즉, 역분할 과정을 겪은 EEPROM의 그 부분 전이나 후일 것이다. 역분할될 범위 내에서, 모든 어드레스는 상대적이어야 하고, 즉 블럭 길이는 존재하나 물리적인 어드레스는 존재하지 않는다.
나아가, 임의의 메모리 블럭은 하나 이상의 유형에 의해 표시되는 식별 코드(an identification code)를 필요로 한다. 이 식별 코드는 물리적 주소의 이용을 대신한다. 예를 들어, 파일이나 메모리 블럭의 선택으로 인해 메모리 어드레싱이 필요하면, 적절한 식별 코드가 발견될 때까지 전체 EEPROM이 처음부터 검색될 필요가 있다.
본 발명의 또 다른 측면을 참조하면, 상기 검색 과정의 성능을 상당히 증가시키는 방법도 제공된다.
ROM 코드의 다른 어떠한 부분도 EEPROM의 역분할 부분에서의 어떠한 물리적 어드레스를 지칭하지 않는다.
EEPROM의 하나의 부 유닛(sub-unit), 예컨대 페이지의 크기, 즉 332 또는 64 바이트 길이인 것이 유리한 전원 장애 버퍼는, 전원 차단 시, 이 역추적 버퍼의 내용이 저장된 데이터에 대해 할당된 물리적 어드레스로 다시 기록되도록 구현되어야 한다. 기본적으로, 상기 버퍼는 역추적, 또는 기록 전향 버퍼로서 사용될 수 있다.
본 발명의 개념과 관련된 장점으로서, 칩카드가 역분할되어 이들의 이용 가치를 증가시킨다.
특히, 칩카드에서의 역분할 방법은 역분할 과정 중 임의의 시점에서 어떠한 전원 방해도 칩카드의 데이터 순도에 영향을 미치지 않도록 구현될 수 있다.
또한, 성공하지 못한 메모리 할당의 제 1 시도와 이후의 메모리 할당의 제 2 시도 사이에 역분할 과정을 유리하게 갖는 2단 메모리(a two-stage memory) 할당이 제공된다. 따라서, 역분할-온-디맨드(a defragmentation-on-demand)가 실현된다.
그리고, 이러한 역분할 방법은 즉, 메모리를 할당하려는 시도가 성공하지 못할 때 요청에 따라 자동으로 개시되는 것이 바람직한데, 즉, 호스트 프로그램의 제어 커맨드, 사용자 커맨드, 또는 메모리 이용가능성에 대한 잠재적인 영향을 갖는 임의의 다른 사건에 의해 유도될 수 있다.
도 1은 본 발명에 따라 사용되는 메모리 블럭의 필수적인 구조의 개략도,
도 2는 본 발명에 따라 역분할(defragmentation) 과정에 참여하는 필수적인 물리적 및 논리적 구성요소의 개략도,
도 3은 대응하는 제어 흐름의 필수적인 특징을 포함하는 역분할 중의 필수적인 단계의 개략도.
도면의 주요 부분에 대한 부호의 설명
8 : 할당된 메모리 블럭 10 : 헤더 필드
12 : 객체 식별 코드(ID) 13 : 부모 객체 ID
14 : 객체 유형 16 : 파일 ID
18 : 파일 제어 정보 20 : 사용 데이터
32 : 기술자 제어 유닛 34 : 역분할될 메모리 부분
36 : 매개 버퍼
본 발명은 실시예에 의해 설명되며, 첨부하는 도면의 형상에 의해 제한되지 않는다.
도면을 전반적으로 참조하고, 이제 특히 도 1을 참조하면, 기본 메모리 구조의 예로서 할당된 메모리 블럭(8)이 다음에 주어진다. 상기 메모리 블럭은 일반적인 메모리 관리에서의 통상적인 작업을 수행하기 위해 통상적인 헤더 필드(10)를 포함하고 있다. 상기 헤더는 2 바이트 길이일 수 있고, 그 중 한 비트는 블럭이 할당되었는지 여부를 나타낼 수 있다.
본 예에서 1 바이트를 포함하는 객체 ID를 위한 필드(12)는 본 발명에 따라 현재 메모리 블럭을 식별하기 위해 제공된다. 이러한 식별은 그 기능이 원칙적으로 메모리를 순차적으로 검색함으로써 임의의 특정 메모리 블럭을 위치시키는 것으로 이루어져 있으므로 필수적인 것이다. 달리 말해서, 상기객체 ID는 메모리 내의 물리적 어드레스의 기능을 대신한다. 유리하게도, 상기 ID는 메모리 블럭이 할당될 때 발생된다.
또한, 1 바이트의 필드(13)는 계층 구조의 이름 공간(hierarchically structured name space) 내의 객체의 부모 식별(parent identification)을 유지하기 위해 제공된다.
필드(14)는 객체 유형에 관한 정보를 유지하기 위해 제공된다. 이 필드는 통상적인 필드이고, 메모리 블럭이 파일, 디렉토리, 또는 계산 유닛 내의 임의의 다른 유형의 논리적 또는 물리적 장치를 묘사하는지 여부를 나타낸다.
다음에는, 파일 식별을 위한 필드(16)가 제공된다. 파일 식별은 파일, 디렉토리 등의 이름을 이루는 2 바이트를 포함한다.
또한, 파일 제어 정보를 유지하는 통상적인 필드(18)가 제공되고, 마지막으로, 필드(20)에는 블럭의 데이터가 발견된다.
도 2를 참조하고, 하드웨어로의 실제 구현이 아닌 전술한 본 발명의 개념의 논리적 측면을 참조하면, 본 발명에 따라 역분할 과정에 참여하는 필수적인 물리적 및 논리적 구성 요소의 개략적인 표현이 주어져 있다.
본 발명의 방법에 따라 역분할될 메모리의 일부(34)는 페이지(35)로 구성된다. 역분할 과정은 기술자 제어 유닛(32)에 의해 제어된다. 상기 유닛은 통상적인 기록 전향 버퍼(a conventional write forward buffer) 또는 역추적 버퍼(a backtrace buffer)의 기증을 갖는 매개 버퍼(36)에 접속된다. 원칙적으로, 양 방법을 모두 취할 수 있다. 도 3을 참조하여 이후에 설명할 동작은 메모리와 제어 유닛, 제어 유닛과 역추적 버퍼 사이의 접속을 각각 이용하여 구현된다.
도 3을 참조하면 대응하는 제어 흐름의 필수적인 특징을 포함하여, 본 발명의 역분할 과정 중의 필수적인 단계에 대한 개략적인 표현이 주어진다. 이 실시예는 칩카드 EEPROM 메모리(34)의 역분할 가능한 부분의 역분할을 가리킨다.
메모리(34)의 역분할이 항상 시간의 대부분을 차지하므로, 어떠한 불필요한 역분할도 방지하는 것이 중요하다. 불필요한 역분할은 블럭을 할당할 충분한 공간이 여전히 있으므로 불필요한 역분할을 말한다. 결과적으로, 본 발명의 바람직한 측면에 따른 역분할은 EEPROM 내에서 더 이상 이용가능한 메모리가 없음으로 인해 메모리 할당이 실패한 경우에만 추천된다.
메모리 블럭이 요청되고 요청된 길이의 연속적인 메모리가 칩카드 내에서 더 이상 이용가능하지 않으면, 역분할이 개시된다. 이 상세한 설명에 의하면, 이는 아래 설명하는 단계에 의해 수행되어야 한다.
2 세트의 3 개의 기술자가 제공되는데, 각 기술자 세트는 다음 구조를 포함한다.
제 1 기술자는 나머지 EEPROM을 복사할 필요가 있는(to which the rest of the EEPROM needs to be copied) 메모리 위치의 물리적 어드레스, 즉, 제 1 이용가능 홀의 어드레스를 포함한다. 따라서, 본 상세한 설명에 있어서는 이를 목적지 포인터(DestinationPointer) 또는 타겟 포인터(TargetPointer)로 지칭한다.
제 2 기술자는 EEPROM의 나머지가 복사되어야 할(from which the rest of the EEPROM should be copied) 메모리 위치의 물리적 주소, 즉, 제 1 이용가능 홀 다음의 메모리 할당 블럭의 어드레스를 포함한다. 따라서, 이를 소스 포인터(SourcePointer)라 지칭한다.
제 3 기술자는 제 2, 즉 다음 이용가능 홀의 어드레스를 포함한다. 따라서, 본 상세한 설명에 있어서는 이를 다음 포인터(NextPointer)라 지칭한다. 복사될 바이트 길이는 제 3 기술자와 제 2 기술자 사이의 차이에 의해 계산될 수 있다.
전술한 3 개의 기술자가 2 세트 존재한다.
그러나, 한 번에 1 개의 기술자 세트만이 활성화(active)된다. 어느 기술자 세트가 활성화될 지는 "활성화 블럭 플래그(active block flag)"에 의해 결정되는데, 이는 블럭 세트 1과 블럭 세트 2의 유효성(validity)을 자동으로 판단하는 EEPROM 내의 다른 바이트 중 한 비트이다. 이 비트는 이 시스템의 정의에 의해 "1"이나 "0"중 하나로만 인식될 수 있을 뿐이므로, 활성화 블럭은 언제나 하나가 된다. 따라서, 플래그는 "유효 블럭 플래그(Valid Block Flag)"로 지칭한다.
EEPROM 내의 다른 바이트를 통해 표시될 수 있는 다른 플래그는 역분할이 활성화되었는지를 나타낸다. 따라서, 이를 "역분할 활성화 플래그(DefragActive Flag)"라 지칭한다. 역분할은 아래 열거한 단계와 함께 설명한 대로 수행된다.
단계(110) : 적절한 어드레스(소스 포인터 = 제 1 홀의 시작 어드레스, 타겟 포인터 = 홀 다음의 유효 블럭의 어드레스, 다음 포인터 = 다음 홀의 어드레스)와 함께 기술자 세트 1을 로딩(load)한다.
단계(120) : 활성화 블럭이 될 기술자 세트 1을 나타내는 유효 블럭 플래그를 세팅한다.
단계(130) : 할당해제 활성화 플래그를 "역분할 활성화"상태로 세팅한다.
단계(140) : EEPROM 페이지 크기까지의 바이트 수를 역추적 버퍼로 복사한다. 역추적 버퍼로 복사될 바이트의 시작 어드레스는 활성화 소스 포인터 내에 포함된 어드레스이다.
이제, 도면에는 명시적으로 도시하지 않은 특별한 경우인 복사 소스가 타겟의 끝과 중복(overlap)되는 경우를 고려해보면, 즉, 복사-기록(copy-write) 동작은 자신의 소스의 데이터를 겹쳐 쓰게(overwrite) 된다. 데이터 손실을 피하기 위해, 역추적 버퍼 내의 엔트리의 목적지 어드레스는 목적지 기술자의 내용에 따라 세팅되어야 한다. 따라서, 역추적 버퍼는 이 경우 기록-전향 버퍼(write-forward buffer)의 기능으로 사용된다.
복사될 바이트 길이는 페이지 크기의 청크 내의 다음 블럭을 복사하기 위해 다음 EEPROM 페이지 경계의 어드레스까지 목적지 기술자의 어드레스에 의해 결정되는데, 이는 역분할 속도를 증가시킬 것이다.
다음 포인터가 다음 EEPROM 페이지 경계의 어드레스보다 낮은 값을 지시하면, 바이트 길이는 다음 포인터의 내용에서 소스 포인터의 내용을 뺀 차분에 의해 결정된다.
단계(150) : 가능한 전원 차단 후 데이터를 목적지 어드레스로 저장하도록 하기 위해 역추적 버퍼를 활성화한다.
어떠한 전원 장애라도 역추적 버퍼의 자동 복원 기능을 호출하여, 새로 전원이 들어온 후 역추적 버퍼 내의 데이터가 역추적 기록의 목적지 어드레스로 자동으로 복사될 것이다. 이러한 기능을 역추적 복원 기능(backtrace restore function)이라 한다.
단계(160) : 비활성화 기술자 세트의 목적지 포인터 값을 목적지 포인터의 값과 역추적 버퍼 내의 바이트 수의 합으로 세팅한다. 이제, 목적지 포인터는 다음 데이터를 저장할 다음 위치를 지시한다.
단계(170) : 비활성화 기술자 세트의 소스 포인터 값을 활성화 기술자의 소스 포인터와 EEPROM 페이지의 크기의 합으로 세팅한다.
판단 단계(170), 단계(180) : 비활성화 기술자 세트의 소스 포인터가 활성화 기술자 세트의 다음 포인터보다 크면, 단계(110)에 따라 모든 비활성화 기술자를 다시 계산한다.
단계(190 ) : 비활성화 기술자 세트가 활성화 기술자 세트가 되고, 결과적으로 활성화 기술자 세트가 비활성화 기술자 세트가 되도록 활성화 기술자 세트를 토글(toggle)한다.
단계(200) : 전원이 들어온 후 역추적 복원 기능을 호출하여 수행한다. 이 기능은 활성화 목적지 포인터의 내용과 동일한 목적지 어드레스로 역추적 기록의 바이트를 복사한다.
역추적 복원 기능이 성공적으로, 즉 어떠한 전원 차단도 없이 수행되면(판단 단계(202)), 역추적 기록은 무효로 되고(단계(205)), 역추적 버퍼는 자동으로 삭제된다.
단계(210) : 역분할이 완료될 때까지(판단 단계(207)), 단계(140)에서 과정을 계속한다.
전원 차단이 발생한 후, 전체 과정은 적어도 역분할 활성화 플래그, 유효 블럭 플래그, 적절한 활성화 블럭 단계와 같이, 역추적 버퍼에 저장되고 역추적 버퍼로부터 판독된(단계(220)) 정보에 따라 계속된다.
칩카드가 리세트에 대한 응답(Answer To Reset) 이후의 최초 커맨드를 수신하면, 다음 단계에 따라 처리한다.
단계(225) 내지 단계(230) : 역분할 활성화 플래그가 세팅되었는지를 확인하고(판단 단계(225)), 그렇지 않으면, 역추적 복원 기능을 호출하여(단계(227)), 정규 동작을 계속한다(단계(230)).
단계(240) : 그렇지 않으면 유효 블럭 플래그에 따라 활성화 기술자 세트를 결정한다.
판단 단계(245), 단계(250) : 역분할 활성화 플래그가 활성화된 것으로 발견되고, 역추적 버퍼가 복사될 유효 데이터를 포함하면(판단 단계(245)), 활성화 목적지 포인터의 어드레스와 역추적 기록의 목적지 어드레스를 비교한다(단계(250)). 어드레스가 일치하면, 역추적 버퍼를 삭제하고, 전술한 시나리오의 단계(140)로 간다.
어드레스가 일치하지 않으면, 전술한 시나리오의 단계(200)로 간다.
단계(110) 내지 단계(240)의 시나리오는 고성능으로 동작하는 역분할 문제에 대한 완전한 기능의 해법을 설명한다. 시나리오에 대한 사소한 변경이 가능한데, 예를 들어, 역추적 버퍼로 복사될 바이트 수는 언제나 소스가 유효 블럭으로부터 항상 인출되는 EEPROM 페이지의 길이일 수 있다.
기술자가 반드시 순수한 어드레스의 형태로 어드레스 정보를 포함할 필요는 없다. 대신, 기술자는 제 1 물리적 어드레스와 상기 거리 비트 길이의 도움을 받아 제 2 물리적 어드레스를 계산할 수 있도록 2 개의 물리적 어드레스 사이의 상대적인 거리를 포함할 수도 있다. 이러한 맥락에서, 당업자는 특별한 기술자 레이아웃에 대한 다양한 변형이 가능하다는 것을 이해할 것이다. 이들 모두는 아래 첨부하는 청구 범위의 범주 내에 포함되는 것으로 판단된다.
본 발명의 개념에 있어서 후속적인 변경과 추가적인 응용도 유용한 것으로 간주할 수 있다.
최선-맞춤-할당(Best-Fit-Allocation) 메커니즘의 결합은 "자동"역분할 방법, 즉, 본 발명의 온-디맨드 특성과 유리하게 결합될 수 있다.
역분할 방법은 전원 차단 후 역분할을 자동으로 재개하도록 제공될 수 있다.
역분할 방법은 전원 차단 후 역분할을 재개하기 위해 다수의 기술자 세트가 사용되도록 제공될 수도 있다.
역분할 방법은 하드웨어나 소프트웨어 자원이 감소될 가능성이 있는 칩카드 또는 기타 컴퓨터 장치에서 유리하게 사용될 수 있고, 제공된 임의의 전원 역추적/기록 전향 버퍼는 역분할의 재개와 관련된 정보를 저장하는 데 사용될 수 있다.
나아가, 본 발명의 메모리 역분할 방법은 하드웨어에서도 완전히 구현될 수 있다. 따라서, 안전한 기록 동작이 보장된다.
전술한 본 발명의 상세한 설명은 특정할 실시예를 참조하여 설명되었다. 그러나, 첨부하는 청구 범위에서 진술할 본 발명의 보다 넓은 사상 및 범주를 벗어나지 않는 범위 내에서 이에 대한 다양한 수정과 변형이 가능하다는 것은 명백할 것이다. 따라서, 상세한 설명과 도면은 제한적인 것이 아니라 예시적인 것으로 간주되어야 한다.
본 발명에 의하면, 100 % 전원 장애를 견디는 역할을 유지하면서 최소의 프로그래밍 수고와 역분할 과정에 대한 객체인 메모리 공간을 초과하는 최소의 추가 메모리 공간만을 필요로 하는 역분할 방법을 제공된다.
Claims (9)
- 메모리 장치(34)를 역분할(defragmentating)하는 방법에 있어서, 다수의 유효 데이터 블럭(valid data blocks)(8)이 제 1 위치로부터 상기 메모리 장치(34)의 최적의 제 2 위치로 복사 청크(copy chunks)의 시퀀스로서 순차적, 단계적으로 복사되고, 상기 방법은,적어도 2 개의 기술자 세트(descriptors set)를 교대로 이용하되, 각 기술자 세트는 복사될 유효 데이터 블럭(80)의 일부인 복사 청크 상에서의 제 1 복사 동작의 소스 위치(source location), 타겟 위치(target location), 상기 제 1 복사 동작에 후속하는 제 2 복사 동작의 목적지의 위치를 정의하기 위해 사용되고,상기 방법에서 기술자 세트 중 적어도 하나는 상기 복사 청크 상에서의 복사 동작 중의 전원 차단(a power break)의 경우 복사 청크의 내용을 복원하는 데 사용할 수 있는 정보를 유지하는 것을 특징으로 하는메모리 장치 역분할 방법.
- 제 1 항에 있어서,감소된 하드웨어와 소프트웨어 자원을 갖는 계산 장치(computing devices)의 메모리에 적용할 수 있는 메모리 장치 역분할 방법.
- 제 1 항에 있어서,기술자 세트는 적어도 3 개이 기술자를 포함하고, 상기 기술자는 유효 블럭 위치와 유효 블럭 사이에 삽입된 홀(holes)의 위치를 정의하는 데 사용할 수 있는 정보를 유지하기 위해 제공되는 메모리 장치 역분할 방법.
- 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,기술자 세트는 3 개의 기술자를 포함하되, 상기 복사 청크를 복사하는 데 사용되고, 상기 세트는 제 1 기술자가 역분할 과정의 객체인 메모리의 섹션 내의 다음 홀 위치에 대한 정보를 포함하고 다음 복사 동작 중의 복사 목적지로서의 역할하며, 제 2 기술자는 다음 복사 동작 중 소스로서 복사될 복사 청크의 시작 위치에 관한 정보를 포함하고, 제 3 기술자는 상기 복사 청크 다음 홀의 위치에 관한 정보를 포함하도록 구성되는 메모리 장치 역분할 방법.
- 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,상기 청크 크기는 EEPROM 페이지와 같은 메모리 부-유닛(sub-unit)에 대응하는 메모리 장치 역분할 방법.
- 만족되지 못한 메모리 할당 시도 후에 제 1 항 내지 제 5 항 중 어느 한 항에 따른 방법이 자동으로 개시되는 역분할될 메모리(34)를 포함하는 칩카드를 동작시키는 방법.
- 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,그 개시는 역분할될 상기 메모리를 포함하는 상기 컴퓨터 장치를 위한 호스트로서 동작하는 애플리케이션에 의해 발행된 프로그램 커맨드, 역분할될 상기 메모리를 포함하는 상기 컴퓨터 장치와 연관된 사용자의 사전정의된 행동, 또는 기타 임의의 사전정의된 사건에 따라 트리거(trigger)되는 방법.
- 제 2 항 내지 제 5 항 중 어느 한 항에 따른 역분할 방법을 수행하도록 프로그램된 칩카드.
- 제 2 항 내지 제 5 항 중 어느 한 항에 따른 역분할 방법을 수행하도록 프로그램된, 하드웨어나 소프트웨어 자원이 감소될 가능성이 있는 칩카드가 아닌 계산 장치(computing device).
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP99105816 | 1999-03-23 | ||
EP991058165 | 1999-03-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20000062879A true KR20000062879A (ko) | 2000-10-25 |
Family
ID=8237833
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020000012971A KR20000062879A (ko) | 1999-03-23 | 2000-03-15 | 메모리 소자 역분할 방법 및 장치 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7167964B1 (ko) |
JP (1) | JP2000305818A (ko) |
KR (1) | KR20000062879A (ko) |
AT (1) | ATE293264T1 (ko) |
DE (1) | DE60019364T2 (ko) |
SG (1) | SG97145A1 (ko) |
TW (1) | TW477932B (ko) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7401174B2 (en) | 2003-12-16 | 2008-07-15 | Matsushita Electric Industrial Co., Ltd. | File system defragmentation and data processing method and apparatus for an information recording medium |
US7721059B2 (en) * | 2006-07-06 | 2010-05-18 | Nokia Corporation | Performance optimization in solid-state media |
US9454536B1 (en) * | 2006-09-28 | 2016-09-27 | Emc Corporation | Space compaction and defragmentation mechanisms in data space |
US7971007B2 (en) * | 2008-07-08 | 2011-06-28 | Silicon Motion, Inc. | Downgrade memory apparatus, and method for accessing a downgrade memory |
TWI499906B (zh) | 2008-12-08 | 2015-09-11 | Apacer Technology Inc | Memory reorganization method of storage device, computer storage medium, computer program product, reorganization method |
CN101751336B (zh) * | 2008-12-09 | 2013-04-10 | 宇瞻科技股份有限公司 | 储存装置的存储器重组方法 |
JP5334048B2 (ja) * | 2009-01-22 | 2013-11-06 | 株式会社日立製作所 | メモリ装置および計算機 |
CN103389930B (zh) * | 2012-05-10 | 2018-11-16 | 索尼公司 | 数据存储装置和数据存储方法 |
DE102014112496A1 (de) | 2014-08-29 | 2016-03-03 | Bundesdruckerei Gmbh | Speicherverwaltung für eine Chipkarte |
DE102014224186B4 (de) * | 2014-11-26 | 2022-12-29 | Bundesdruckerei Gmbh | Verfahren zum Nachladen einer Anwendung auf ein Dokument |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5740395A (en) * | 1992-10-30 | 1998-04-14 | Intel Corporation | Method and apparatus for cleaning up a solid state memory disk storing floating sector data |
JPH09152983A (ja) * | 1995-05-31 | 1997-06-10 | Lucent Technol Inc | フラッシュメモリに内在するファイルシステムにおけるリエントラントガーベジコレクション処理 |
GB9606928D0 (en) * | 1996-04-02 | 1996-06-05 | Memory Corp Plc | Memory devices |
US6038636A (en) * | 1998-04-27 | 2000-03-14 | Lexmark International, Inc. | Method and apparatus for reclaiming and defragmenting a flash memory device |
-
1999
- 1999-10-13 TW TW088117726A patent/TW477932B/zh not_active IP Right Cessation
-
2000
- 2000-02-29 AT AT00104109T patent/ATE293264T1/de not_active IP Right Cessation
- 2000-02-29 DE DE60019364T patent/DE60019364T2/de not_active Expired - Lifetime
- 2000-03-09 SG SG200001281A patent/SG97145A1/en unknown
- 2000-03-15 KR KR1020000012971A patent/KR20000062879A/ko active IP Right Grant
- 2000-03-15 JP JP2000071935A patent/JP2000305818A/ja active Pending
- 2000-03-23 US US09/533,731 patent/US7167964B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
ATE293264T1 (de) | 2005-04-15 |
DE60019364T2 (de) | 2006-03-09 |
TW477932B (en) | 2002-03-01 |
US7167964B1 (en) | 2007-01-23 |
DE60019364D1 (de) | 2005-05-19 |
SG97145A1 (en) | 2003-07-18 |
JP2000305818A (ja) | 2000-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100484485B1 (ko) | 비휘발성 메모리에의 데이터 저장 방법 및 장치 | |
EP1686482B1 (en) | File recording device | |
US6470436B1 (en) | Eliminating memory fragmentation and garbage collection from the process of managing dynamically allocated memory | |
US6092150A (en) | Method for memory allocation in a disk drive employing a chunk array and identifying a first available element for write caching | |
US6571326B2 (en) | Space allocation for data in a nonvolatile memory | |
US8266365B2 (en) | Ruggedized memory device | |
FI121559B (fi) | Vain Sekventiaalista kirjoitusta käyttävä flash-hallintajärjestelmä ja -menetelmä | |
EP1782176B1 (en) | Systems, methods, computer readable medium and apparatus for memory management using nvram | |
EP2006774A1 (en) | Smart card storage system and file management method therein | |
US7849253B2 (en) | Method for fast access to flash-memory media | |
US6785808B2 (en) | System and method for altering an operating system start-up sequence prior to operating system loading | |
US6636941B1 (en) | Enhanced stable disk storage | |
WO2005124530A2 (en) | Method for controlling memory card and method for controlling nonvolatile semiconductor memory | |
KR100703680B1 (ko) | 플래시 파일 시스템 | |
KR20000062879A (ko) | 메모리 소자 역분할 방법 및 장치 | |
KR100907477B1 (ko) | 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법 | |
US20060277221A1 (en) | Transactional file system with client partitioning | |
US20060004969A1 (en) | High-speed accessible memory featuring reduced data movement | |
EP1046996B1 (en) | Memory defragmentation in chipcards | |
CN110795386B (zh) | 一种数据写入方法和服务端 | |
CN110471626B (zh) | 应用于Java Card的Nor Flash管理层及方法 | |
JP3784844B2 (ja) | 半導体記憶装置 | |
EP3407633B1 (en) | A method of managing integrated circuit cards, corresponding card and apparatus | |
JP2001005928A (ja) | Icカード | |
JPH11272537A (ja) | フラッシュ型メモリ及びその管理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
NORF | Unpaid initial registration fee |