KR20150082010A - 불휘발성 메모리 파일 시스템에서의 마이크로 저널링 방법 - Google Patents

불휘발성 메모리 파일 시스템에서의 마이크로 저널링 방법 Download PDF

Info

Publication number
KR20150082010A
KR20150082010A KR1020140002082A KR20140002082A KR20150082010A KR 20150082010 A KR20150082010 A KR 20150082010A KR 1020140002082 A KR1020140002082 A KR 1020140002082A KR 20140002082 A KR20140002082 A KR 20140002082A KR 20150082010 A KR20150082010 A KR 20150082010A
Authority
KR
South Korea
Prior art keywords
data
memory
file
page
journaling
Prior art date
Application number
KR1020140002082A
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 삼성전자주식회사
Priority to KR1020140002082A priority Critical patent/KR20150082010A/ko
Priority to US14/466,928 priority patent/US20150193464A1/en
Publication of KR20150082010A publication Critical patent/KR20150082010A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 불휘발성 메모리 파일 시스템에서의 마이크로 저널링 방법에 대하여 기술된다. 시스템은 CPU, 불휘발성 메모리로 구현되는 메인 메모리 그리고 저장 장치를 포함한다. 불휘발성 메인 메모리에는 파일 시스템이 상주하고, 마이크로 저널링 작업이 수행된다. 마이크로 저널링은 CPU 캐시의 데이터를 사용자 영역으로 플러싱하는 커밋 작업과 시스템 호출을 통해 파일 쓰기 작업을 수행하는 동안 페이지 단위로 진행되는 체크포인트 작업을 포함한다. 불휘발성 메인 메모리는 데이터의 영구적인 보존이 가능하기 때문에, 파일 시스템의 신뢰성을 위한 데이터 이중 복제 과정을 제거하고, 파일 쓰기가 진행되는 동안 로깅 정보를 기록하고 체크포인트하는 마이크로 저널링을 이용하여 시스템의 갑작스런 파워 오프 시 파일 시스템을 복구한다.

Description

불휘발성 메모리 파일 시스템에서의 마이크로 저널링 방법 {Micro-journaling for non-volatile memory file system}
본 발명은 메모리 시스템에 관한 것으로, 특히 불휘발성 메모리를 이용한 파일 시스템에서의 마이크로 저널링 방법에 관한 것이다.
메인스트림 컴퓨터 시스템에서, 메인 메모리를 대체할 수 있는 불휘발성 메모리들이 주목받고 있다. 프로세서 내 레지스터 파일로부터 캐시, 메인 메모리 그리고 저장 장치로 구성되는 메모리 시스템은 고속 및 대용량을 제공하기 위하여 계층적인 구조로 개발되어 왔다. 메인 메모리는 독출/기입 억세스 시간들의 성능이 우수한 DRAM (Dynamic Random Access Memory)이 주로 이용되고 있다. DRAM에 견주어 억세스 시간들 및 내구성 (endurance) 성능이 비숫한 불휘발성 메모리가 개발되고 있다. 불휘발성 메모리는 파워-오프 (power-off) 후에도 데이터를 영구적으로 저장할 수 있다. 메모리 계층 설계에서 불휘발성 메모리를 메인 메모리로 채용하게 되면, 파일 시스템은 불휘발성 메모리를 받아들이기 위하여 변화되어야 한다. 특히, 불휘발성 메모리 파일 시스템의 신뢰성을 보장할 수 있는 방안이 요구된다.
본 발명이 이루고자 하는 기술적 과제는, 불휘발성 메모리 파일 시스템에서 마이크로 저널링을 이용하는 시스템 및 시스템 복구 방법을 제공하는 데 있다.
상기 기술적 과제를 달성하기 위하여, 본 발명의 일면에 따른 시스템은, 시스템의 동작을 제어하고, CPU 캐시를 포함하는 중앙 처리 장치(CPU), 파일 시스템이 상주하는 불휘발성 메모리로 구현되고 CPU 캐시의 데이터를 사용자 영역으로 플러싱하는 커밋 작업을 포함하는 마이크로 저널링이 수행되는 메인 메모리, 그리고 시스템에서 처리되는 데이터를 저장하는 저장 장치를 포함한다.
본 발명의 실시예들에 따라, 마이크로 저널링은 시스템 호출을 통해 파일 쓰기 작업을 수행하는 동안 페이지 단위로 진행되는 체크포인트 작업을 포함할 수 있다.
본 발명의 실시예들에 따라, 마이크로 저널링은 메인 메모리의 사용자 영역을 데이터 로그 영역으로 이용할 수 있다.
본 발명의 실시예들에 따라, 저장 장치는 메인 메모리 내 가상 메모리에서 축출되는 파일 데이터에 대한 스왑용으로 사용될 수 있다.
본 발명의 실시예들에 따라, 마이크로 저널링은, 시스템의 갑작스런 파워 오프 후 파일 시스템을 복구하기 위하여, 소스 데이터의 기본 주소와 시스템 호출의 데이터 길이에 대한 포인터를 갖는 I/O 벡터와 페이지 디렉토리를 포함할 수 있다.
본 발명의 실시예들에 따라, 마이크로 저널링은 기본 주소를 이용하여 시스템의 갑작스런 파워 오프 시점에서 파일 시스템에 남아있는 업데이트를 다시 시작하여 커밋된 파일 쓰기에 대한 복구를 수행할 수 있다.
본 발명의 실시예들에 따라, CPU 내 제어 레지스터는 페이지 디렉토리의 최상위 레벨을 가리키고, 마이크로 저널링에서 복구 재작성 동안 페이지 디렉토리는 페이지 테이블을 억세스할 수 있다.
본 발명의 실시예들에 따라, 마이크로 저널링은 커밋 작업을 통해 파일 시스템에 원자적이고 순서대로 파일 쓰기를 수행할 수 있다.
본 발명의 실시예들에 따라, 마이크로 저널링은, 시스템 호출에 따른 데이터 소스를 전체로서 파일 시스템에 트랜잭셔널하게 업데이트할 수 있다.
본 발명의 실시예들에 따라, 마이크로 저널링을 이용한 부트 메커니즘은 시스템의 갑작스런 파워 오프 후 재부팅에서 사용되며 파일 시스템 복구를 위한 파일 쓰기 재실행이 수행되는 복구 부트를 포함할 수 있다.
본 발명의 실시예들에 따라, 메인 메모리는 STT-MRAM(Spin Transfer Torque Magnetoresistive Random Access Memory), ReRAM(Resistance Random Access Memory), MRAM(Magnetic Random Access Memory) 및 FeRAM(Ferroelectric Random Access Memory) 중 어느 하나로 구현될 수 있다.
상기 기술적 과제를 달성하기 위하여, 본 발명의 다른 면에 따른 시스템 복구 방법은, 시스템의 갑작스런 파워 오프 후 재부팅하는 단계, 재부팅시 복구 부트로 부팅하는 단계, 불휘발성 메모리로 구현되는 메인 메모리의 사용자 영역으로 커밋된 데이터를 이용하여 페이지 테이블을 복구하는 단계, 그리고 메인 메모리 내 마이크로 저널링 내용을 이용하여 시스템의 갑작스런 파워 오프 시 중지되었던 파일 쓰기를 재실행하는 단계를 포함한다.
본 발명의 실시예들에 따라, 마이크로 저널링 내용은 사용자 영역으로 CPU 캐시의 데이터를 플러싱하는 커밋 작업, 시스템 호출을 통해 파일 쓰기 작업을 수행하는 동안 페이지 단위로 진행되는 체크포인트 작업, 그리고 사용자 영역의 데이터 로그를 포함할 수 있다.
본 발명의 실시예들에 따라, 마이크로 저널링 내용은 시스템의 갑작스런 파워 오프로 인해 미종료된 파일 쓰기에 대하여 소스 데이터의 기본 주소와 시스템 호출의 데이터 길이에 대한 포인터를 갖는 I/O 벡터와 상위 레벨 페이지 테이블을 억세스하는 페이지 디렉토리를 포함할 수 있다.
상술한 본 발명은 불휘발성 메모리를 시스템의 메인 메모리로 이용함에 따라, 파일 시스템의 신뢰성을 위한 데이터의 추가적인 이중 복제 과정을 제거할 수 있다. 또한, 파일 쓰기가 진행되는 동안 로깅 정보를 기록하고 체크포인트하는 마이크로 저널링을 이용하기 때문에, 시스템의 갑작스런 파워 오프 시 파일 쓰기를 재실행하는 과정을 통해 파일 시스템의 복구가 가능하다.
도 1은 본 발명의 다양한 실시예들에 따른 시스템을 설명하는 도면이다.
도 2 및 도 3은 전형적인 저널링과 쉐도우 페이징을 설명하는 도면들이다.
도 4는 본 발명의 실시예에 따른 불휘발성 메모리 기반의 파일 시스템을 설명하는 도면이다.
도 5는 본 발명의 실시예에 따른 마이크로 저널링에서의 커밋 및 체크포인트 타이밍을 기존의 저널링과 비교하는 도면이다.
도 6는 본 발명의 실시예에 따른 불휘발성 메모리 파일 시스템의 마이크로 저널링을 설명하는 도면이다.
도 7은 본 발명의 실시예에 따른 마이크로 저널링에서의 체크포인트 작업을 설명하는 도면이다.
도 8은 본 발명의 실시예에 따른 마이크로 저널링을 이용한 파일 시스템에서의 부트 메커니즘과 복구 메커니즘을 설명하는 도면이다.
도 9는 본 발명의 실시예에 따른 마이크로 저널링을 이용한 파일 시스템에서의 복구 과정을 설명하는 도면이다.
도 10은 본 발명의 다양한 실시예들에 따른 MRAM을 설명하는 제1 예의 도면이다.
도 11은 도 10의 메모리 뱅크 내 메모리 셀 어레이를 설명하는 도면이다.
도 12는 도 11의 STT-MRAM 셀의 구현 예를 나타내는 입체도이다.
도 13a 및 도 13b는 도 12의 MTJ 소자의 기입된 데이터에 따른 자화 방향을 나타내는 블록도들이다.
도 14는 도 12의 STT-MRAM 셀의 라이트 동작을 나타내는 블록도이다.
도 15a 및 도 15b는 도 12의 STT-MRAM셀에서 MTJ 소자의 다른 실시 예들을 설명하는 도면들이다.
도 16은 도 12의 STT-MRAM 셀에서 MTJ 소자의 다른 실시 예를 설명하는 도면이다.
도 17a 및 도 17b는 도 12의 STT-MRAM 셀에서 MTJ 소자의 다른 실시 예를 나타내는 도면들이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다. 본 발명의 실시예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 다양한 실시예들에 따른 시스템을 설명하는 도면이다.
도 1을 참조하면, 시스템(100)은 CPU (Central Processing Uint: 110), 메인 메모리(120), 그리고 저장 장치(130)를 포함한다. 시스템(100)은 컴퓨터와 같은 단말에 포함될 수 있다. 또한, 시스템(100)은 휴대폰 (Mobile Phone), 스마트 폰 (Smart Phone), 개인 정보 단말기 (Personal Digital Assistant; PDA), 휴대형 멀티미디어 플레이어 (Portable Multimedia Player; PMP), 디지털 카메라 (Digital Camera), 음악재생기 (Music Player), 휴대용 게임 콘솔 (Portable Game Console), 네비게이션 (Navigation) 시스템 등과 같은 임의의 모바일 시스템일 수 있다.
CPU(110)는 시스템(100)의 전반적인 동작을 제어한다. CPU(110)는 메인 메모리(120)에 복사되어 있는 코드(code)를 실행(execute)하여, 코드에 대응하는 명령을 수행할 수 있다. CPU(110)는 특정 계산들 또는 태스크들과 같은 다양한 컴퓨팅 기능들을 실행할 수 있다. 실시예들에 따라, CPU(110)는 하나의 프로세서 코어 (Single Core)를 포함하거나, 복수의 프로세서 코어들 (Multi-Core)을 포함할 수 있다. 예를 들어, CPU(110)는 듀얼 코어 (Dual-Core), 쿼드 코어 (Quad-Core), 헥사 코드 (Hexa-Core) 등을 포함할 수 있다. 또한 실시예에 따라, CPU(110)는 내부 또는 외부에 위치한 캐시 메모리 (Cache Memory)를 더 포함할 수 있다.
메인 메모리(120)는 CPU(110)에 의해 실행되는 코드가 복사될 뿐만 아니라, 명령 수행에 의해 처리되는 데이터도 저장될 수 있다. 메인 메모리(120)는 복수의 소프트웨어 또는 펌웨어를 구동할 수 있다. 예를 들어, 메인 메모리(120)는 운영 체제 (Operating System: OS), 어플리케이션 (Application), 파일 시스템 (File System), 메모리 관리자 (Memory Manager), 그리고 입출력 드라이버 (I/O drivers) 등을 구동할 수 있다.
운영 체제 (OS)는 시스템(100)의 소프트웨어 또는 하드웨어 자원 (resource)을 제어할 수 있고, CPU(110)에 의한 프로그램 실행을 제어할 수 있다. 어플리케이션은 시스템(100)에서 실행되는 다양한 응용 프로그램들을 의미한다. 파일 시스템은 파일 또는 데이터를 메인 메모리(120) 또는 저장 장치(130)와 같은 저장 영역에 저장하는 경우에 이를 조직화할 수 있다. 파일 시스템은 쓰기 또는 읽기 명령에 따른 어드레스 정보를 저장 장치(130)로 제공할 수 있다. 파일 시스템은 시스템(100)에서 실행되는 특정한 운영 체제에 따라 사용될 수 있다. 메모리 관리자는 메인 메모리(120)에서 수행되는 메모리 억세스 동작 또는 저장 장치(130)에서 수행되는 메모리 억세스 동작을 제어할 수 있다. 입출력 드라이버는 시스템(100)과 다양한 주변 장치들, 또는 네트워크 (예를 들면, 인터넷) 사이의 정보 전달을 수행할 수 있다.
저장 장치(130)는 플래쉬 메모리를 기반으로 하는 데이터 저장 장치일 수 있다. 저장 장치(130)는 플래쉬 메모리, 콘트롤러, 그리고 버퍼 메모리를 포함할 수 있다. 저장 장치(130)는 메모리 카드 장치, SSD (Solid State Device) 장치, ATA (Advanced Technology Attachment) 버스 장치, SATA (Serial Advanced Technology Attachment) 버스 장치, 멀티미디어 카드 장치, SD (Secure Digital) 장치, 메모리 스틱 장치, 하이브리드 드라이브 장치, 또는 범용 직렬 버스 플래쉬 장치일 수 있다.
플래쉬 메모리는 어드레스 또는 데이터 버스를 통해 콘트롤러와 연결될 수 있다. 플래쉬 메모리는 데이터 영역과 메타 영역으로 구분될 수 있다. 데이터 영역에는 일반적인 사용자 데이터 또는 메인 데이터가 저장되고, 메타 영역에는 사용자 데이터 외에 플래쉬 메모리 또는 저장 장치(130)의 구동에 필요한 메타 데이터 (예를 들면, 플래쉬 변환 계층 (Flash Transition Layer: FTL)에 의한 맵핑 정보)가 저장될 수 있다.
콘트롤러는 어드레스 또는 데이터 버스를 통해 플래쉬 메모리 또는 버퍼 메모리와 데이터를 주고 받을 수 있다. 콘트롤러는 플래쉬 변환 계층 및 페이지 맵 테이블을 포함하는 맵핑 관리자와 맵핑 관리자를 구동하는 데 사용되는 로컬 메모리를 포함할 수 있다. 플래쉬 변환 계층은 플래쉬 메모리를 효율적으로 사용하도록 한다. 플래쉬 변환 계층은 CPU(110)에서 제공한 논리적 어드레스(logical address)를 플래쉬 메모리에서 사용 가능한 물리적 어드레스(physical address)로 변환하는 역할을 한다.
플래쉬 변환 계층은 이러한 어드레스 변환을 맵 테이블 (map table)을 통해 관리한다. 맵 테이블은 논리적 어드레스 및 이에 대응하는 물리적 어드레스가 표시되어 있다. 맵 테이블은 맵핑 단위에 따라 그 크기가 달라질 수 있으며, 다양한 맵핑 방법을 가질 수 있다. 페이지 맵 테이블은 페이지 단위로 맵 테이블을 만들고, 논리적 어드레스 번호 (Logical Address Number: LAN)를 물리적 페이지 번호(Physical Page Number: PPN)로 변환한다.
메인 메모리(120)는 불휘발성 메모리를 이용하여 구현될 수 있다. 불휘발성 메모리들 중 MRAM (Magenetic Random Access Memory)은 자기저항(magnetoresistance) 기반의 불휘발성 메모리이다. MRAM은 여러가지 면에서 휘발성 RAM과 다르다. MRAM은 비휘발성이기 때문에, 메모리 장치 전원이 오프되어도 MRAM은 메모리 내용을 유지할 수 있다.
일반적으로 불휘발성 RAM이 휘발성 RAM 보다 느리다고 하지만, MRAM은 휘발성 RAM의 독출 및 기입 응답 시간들에 견줄만한 독출 및 기입 응답 시간을 갖는다. 전하로서 데이터를 저장하는 전형적인 RAM 기술과는 달리, MRAM 데이터는 자기저항 요소들에 의해 데이터를 저장한다. 일반적으로, 자기저항 요소들은 2개 자성층들로 이루어지고, 각 자성층은 자화(magnetization)를 가진다.
MRAM은 두 개의 자성층과 그 사이에 개재된 절연막을 포함하는 자기 터널 접합 패턴(magnetic tunnel junction pattern)을 사용하여 데이터를 읽고 쓰는 불휘발성 메모리다. 자성층의 자화 방향에 따라 자기 터널 접합 패턴의 저항값이 달라질 수 있는데, 이러한 저항값의 차이를 이용하여 데이터를 프로그래밍 또는 제거할 수 있다.
스핀 트랜스퍼 토크(spin transfer torque: STT) 현상을 이용한 MRAM은 한쪽 방향으로 스핀(spin)이 분극화(polarized)된 전류를 흘려줄 때, 전자의 스핀 전달에 의해 자성층의 자화 방향이 달라지는 방식을 이용한다. 하나의 자성층(고정 층, pinned layer)의 자화 방향이 고정되고, 다른 하나의 자성층(자유 층, free layer)은 프로그램 전류에 의해 발생되는 자기장에 의해 자화 방향이 변할 수 있다.
프로그램 전류의 자기장은 두 자성층의 자화 방향을 평행(parallel) 하거나 반-평행(anti-parallel) 하게 배열할 수 있다. 자화 방향이 평행하면, 두 자성층들 사이의 저항이 낮은 로우("0")상태를 나타낸다. 자화 방향이 반-평행하면, 두 자성층들 사이의 저항이 높은 하이("1")상태를 나타낸다. 자유 층의 자화 방향 스위칭과 그 결과 자성층들 사이의 하이 또는 로우 저항 상태는 MRAM의 기입 및 독출 동작을 제공한다.
MRAM 기술이 불휘발성과 빠른 응답 시간을 제공하지만, MRAM 셀은 스케일링 한계에 부딪히고 기입 디스털번스에 민감하다. MRAM 자성층들 사이의 하이와 로우 저항 상태를 스위칭하기 위하여 인가되는 프로그램 전류는 전형적으로 높다(high). 이에 따라, MRAM 어레이 내 다수개의 셀들이 배열될 때, 하나의 메모리 셀로 인가되는 프로그램 전류는 인접한 셀의 자유 층의 필드 변화를 유발한다. 이러한 기입 디스털번스 문제는 STT 현상을 이용하여 해결할 수 있다.
전형적인 STT-MRAM (Spin Transfer Torque Magnetoresistive Random Access Memory)은 자기 터널 접합 소자(magnetic tunnel junction, MTJ)를 포함할 수 있다. MTJ는 2개의 자성층들(고정 층, 자유 층)과 자성층들 사이의 절연층을 포함하는 자기 저항 데이터 저장 소자이다.
프로그램 전류는 전형적으로 MTJ를 통해 흐른다. 고정 층은 프로그램 전류의 전자 스핀을 분극화하고, 스핀-분극된 전자 전류가 MTJ를 통과함에 따라 토크가 생성된다. 스핀-분극된 전자 전류는 자유 층에 토크를 가하면서 자유 층과 상호 작용한다.
MTJ를 통과하는 스핀-분극화된 전자 전류의 토크가 임계 스위칭 전류 밀도보다 크면, 스핀-분극된 전자 전류에 의해 가해지는 토크는 자유 층의 자화 방향을 스위치하기에 충분하다. 이에 따라, 자유 층의 자화 방향은 고정 층에 대하여 평행 또는 반-평행으로 배열할 수 있고, MTJ 사이의 저항 상태가 변화된다.
STT-MRAM은, 스핀-분극된 전자 전류가 자기 저항 소자 내 자유 층을 스위치하기 위한 외부 자기장의 필요를 없애주는 특징을 갖는다. 게다가, 셀 사이즈 감소와 함께 프로그램 전류 감소에 따라 스케일링이 향상되고, 기입 디스털번스 문제를 해결한다. 추가적으로, STT-MRAM은 높은 터널 자기 저항 비가 가능하고, 하이와 로우 저항 상태들 사이의 높은 비를 허용하여, 자기 도메인(magnetic domain) 내 독출 동작을 향상시킨다.
MRAM은 DRAM (Dynamic Random Access Memory)의 저비용, 고용량 특성과 SRAM (Static Random Access Memory)의 고속 동작 특성, 그리고 플래쉬 메모리(Fresh Memory)의 불휘발성 특성을 모두 갖는 만능 메모리 장치이다.
메인 메모리(120)는 STT-MRAM을 이용하여 구현될 수 있다. 실시예들에 따라, 메인 메모리(120)는 ReRAM (Resistance Random Access Memory), MRAM (Magnetic Random Access Memory), FeRAM (Ferroelectric Random Access Memory) 또는 이와 유사한 메모리로 구현될 수 있다.
메인 메모리(120)가 불휘발성 메모리로 구현되기 때문에, 불휘발성 메모리 파일 시스템의 신뢰성을 보장하기 위해, 불휘발성 메모리 파일 시스템에 트랜잭션 라이트 시스템 호출(transactional write system calls)을 지원하는 마이크로 저널링 (micro-jouring)이 제안된다. 마이크로 저널링은, write 시스템 호출이 호출될 때, 사용자 공간의 버퍼 내용이 모든 프로세서 캐시의 불휘발성 메모리에 기록되도록 보장한다. 마이크로 저널링은, write 시스템 호출 동안, 최소 로깅 공간 내 수정된 페이지에 마이크로 저널들을 만든다. 마이크로 저널링을 향상시키기 위하여, 지정된 주소 범위 내에서 데이터를 플러시 (flush) 할 수 있다. 마이크로 저널링은, write 시스템 호출들 중간에 시스템의 갑작스런 파워 오프 후에도 다시 시작할 수 있다.
마이크로 저널링을 설명하기에 앞서, 파일 시스템의 신뢰성을 보장하는 전형적인 저널링과 쉐도우 페이징을 설명한다. 저널링과 쉐도우 페이징은 종래에 메인 메모리가 DRAM으로 구현되었을 때 파일 시스템의 신뢰성을 보장한다.
도 2 및 도 3은 전형적인 저널링과 쉐도우 페이징을 설명하는 도면이다.
도 2를 참조하면, 응용 프로그램이 실행되면 write 시스템 호출을 업데이트 할 데이터가 호출된다. 예컨대, 두 개의 시스템 호출인 write1 및 write2 가 호출될 수 있다. write 시스템 호출을 하는 동안, 메인 메모리의 해당 페이지 캐시 가 업데이트된다. write1 에서 세 개의 페이지 (PA, PB, PC)가 기록되고, write2 에서 두 개의 페이지 (PA, PB)가 기록된다. 페이지 표시 다음의 숫자는 여러번 업데이트 한 후 페이지의 버전을 나타낸다. 예를 들어, 페이지 PA 는 원래 PA-0, write1 에서 PA-1이 되고, 마지막 write2 에서 PA-2 가 된다. 저장 장치에 업데이트 페이지 캐시의 수가 충분히 크면, 페이지 캐시의 그룹은 첫번째 저장소 내 저널 영역에 기록된다. 이를 커밋 작업 (Commit Operation)이라 칭한다.
시스템은 저장 장치에 쓰기 작업을 수행하는 동안 실패하거나 중단될 수 있기 때문에, 개별적인 저널링은 저널 영역에서 업데이트 기록을 유지한다. 예컨대, 두 페이지를 작성할 준비가 되면, 커밋 작업이 발생한다. 첫번째 커밋 작업에서 페이지 PA-1과 PB-1이 저장 장치에 커밋된다. 이 후, 페이지 PC-1과 PA-2가 두 번째 커밋 작업에서 커밋된다. 페이지 PB-2는 아직 커밋되지 않은 상태이다.
파일 시스템은 저널 영역으로부터 기록 페이지를 하나씩 반영하도록 독립적으로 업데이트된다. 파일 시스템을 업데이트하는 동안, 저널 영역의 페이지가 파일 시스템에 성공적으로 업데이트되었는지를 나타내기 위해 체크 포인트 (Checkpoint)를 표시한다(mark).
시스템이 페이지를 완전히 업데이트하기 전에 실패하더라도, 시스템은 저널 영역으로부터 파일 시스템에 이 페이지를 다시 작성할 수 있다. 파일 시스템의 입장에서, 이것은 저널 영역에 중복 페이지들(duplicate pages)을 갖는 것을 의미한다. 따라서, 저널 영역에 커밋된 모든 업데이트가 안정적으로 파일 시스템에 반영된다. 페이지 캐시에서 성공적으로 저널 영역에 기록된 페이지만이 파일 시스템에 기록된 페이지로 간주된다. 이에 따라, 저널링은 저장 장치에 기록 수행을 두번, 즉 한번은 저널 영역에 그리고 다른 한번은 파일 시스템에 수행하는 고유한 오버 헤드를 갖는다.
도 3을 참조하면, 데이터베이스 시스템에서 개발되고 있는 전형적인 쉐도우 페이징을 보여준다. 쉐도우 페이징에서 원자 및 내구성 트랜잭션(atomic and durable transactions)은 데이터베이스 시스템의 무결성을 위한 중요한 작업이다. 쉐도우 페이징은 파일 시스템에서 사용할 수 있다. 쉐도우 페이징의 구현은 카피-온-라이트 메커니즘(copy-on-write mechanism)을 채택한다. 파일 라이트 트랜잭션(file write transaction)이 시작할 때, 쉐도우 페이지라고 불리는 원본 데이터의 중복이 이루어진다. 메모리 내 파일 시스템(In-memory file system)은 파일의 데이터 저장 단위로 페이지를 사용한다. 신뢰성을 위하여, 페이지는 파일 라이트의 원자성(atomicity)과 일관성(consistency)을 보장하기 위한 기본 단위로 사용된다. 파일 데이터를 메모리 내 파일 시스템에 기록할 때, 원본 페이지의 중복화(duplication)가 요구된다.
파일 작업 write 1은 세 페이지 PA, PB, 그리고 PC를 업데이트한다. 페이지가 원래 페이지 PA-0에 기록되기 전에, 원래 페이지 PA-0의 중복이 쉐도우 페이지 P`A-0에 만들어진다. 이 후, 쉐도우 페이지의 내용이 페이지 PA-1로 업데이트된다. 커널(Kernel)의 아이노드(inode) 구조는 파일의 메타 데이터를 포함한다. 아이노드는 인덱스 노드(index node)라고도 칭한다. 메타 데이터의 하나인 매핑 정보는 파일의 주소 공간 구조와 함께 표현된다. 쉐도우 페이지에 성공적으로 기록되면, 메타 데이터의 매핑 정보(주소 공간)는 업데이트된 쉐도우 페이지를 가리키도록 원자적으로 변경된다. 페이지 PA-0의 포인터는 페이지 PA-1로 변경된다. 원래 페이지 PA-0는 해제된다(released). 또한, 파일 크기와 할당된 페이지 번호에 대한 메타 데이터도 업데이트된다. 나머지 페이지들에 대해서도, 동일한 쉐도우 페이징 메커니즘이 메모리 내 파일 시스템을 업데이트 하기 위해 동작된다.
쉐도우 페이지들과 메타 데이터로의 업데이트가 CPU 캐시에 여전히 남아있을 수 있기 때문에, 이러한 데이터를 포함하는 캐시 라인(cache lines)은 시스템 무결성을 위하여 메인 메모리에 적절히 플러쉬(flush) 되어야 한다. 데이터와 메타 데이터 사이의 플러시들의 순서는 그대로 유지되어야 한다. 데이터 페이지에 대한 캐시 라인들이 모두 메인 메모리에 플러시된 후, 메타 데이터에 대한 캐시 라인들이 플러시되어야 한다. 쉐도우 페이징은 쉐도우 페이지에 대한 페이지 중복의 고유한 오버 헤드를 갖고, 원칙적으로 저널링과 같은 오버 헤드를 갖는다.
노멀 운영 체제에서 파일 시스템들은 휘발성 메인 메모리와 저장 장치 사이의 지연 시간을 고려하여 구현되기 때문에, 불휘발성 메인 메모리를 갖는 시스템은 새로운 파일 시스템 설계를 필요로 한다.
도 4는 본 발명의 실시예에 따른 불휘발성 메모리 기반의 파일 시스템을 설명하는 도면이다.
도 4를 참조하면, 파일 시스템은 불휘발성 메모리로 구현된 메인 메모리에 영구적으로 데이터를 저장한다. 즉, 파일 시스템은 저장 장치(130)에 대한 캐시로서가 아니라 메인 메모리(120)에 상주하게 된다. 저장 장치(130)는 단순히 가상 메모리 스왑 파일 페이지의 스토리지 백업으로 작동한다(work).
불휘발성 메모리 파일 시스템은, 파일 액세스의 대기 시간을 최소화할 수 있다. 파일이 첫번째 장소에서 불휘발성 메인 메모리(120)에 유지되기 때문에, 파일 데이터는 처음 액세스에서 좀 더 빠르게 전송될 수 있다. 기존의 휘발성 메모리 기반 파일 시스템은 저장 장치와 상호 작용하는 블락 레벨 장치 계층(block-level device layers)을 갖는다. 이에 대해, 불휘발성 메모리 기반의 파일 시스템은 블록 레벨 장치 계층이 존재하지 않고, 단지 페이지 캐시가 존재한다. 저장 장치는 자주 사용되지 않는 파일 데이터가 가상 메모리 시스템에서 축출 페이지(eviction pages)로 선택되었을 때 스왑 (swap) 용으로 사용될 수 있다.
불휘발성 메모리 파일 시스템의 신뢰성 모듈은 기존의 파일 시스템에 있는 것보다 훨씬 가볍다(much lighter). 기존의 파일 시스템은 저장 장치에 저널 로그 (journal log)를 기록하는 저널링과 함께 무거운 신뢰성 기술(heavy reliability technique)을 사용한다. 반면에, 불휘발성 메모리 파일 시스템은 메인 메모리와 저장 장치 사이의 일관성을 유지하기 위한 신뢰성 메커니즘을 필요로 하지 않는다. 메인 메모리의 불휘발성에도 불구하고, CPU(110)와 메인 메모리(120) 사이의 신뢰성 메커니즘은 여전히 ??필요하다.
CPU(110)와 메인 메모리(120) 사이의 신뢰성을 보장하기 위하여, 각 파일 작업은 원자적이고 순서대로(atomic and ordered) 되어야 한다. 파일 작업을 트랜잭션널하게 만드는 것은 캐시 라인(cache lines)을 특정 순서로 플러시하도록 하는 것과 저널링과 유사한 방법으로 기록 로그들을 레코딩하는 것을 포함하는 메커니즘을 필요로 한다.
불휘발성 메모리 파일 시스템의 영구성(persistency)은 운영 체제의 부팅 단계를 변경(modifying)함으로써 지원된다. 불휘발성 메모리 파일 시스템은 페이지 캐시에 내장됨에 따라, 모든 파일 데이터 및 메타 데이터는 가상 메모리 시스템의 상단(top)에 배치된다. 페이지 테이블과 아이노드(inode)와 같은 커널 구조는 파워 오프 및 재부팅 보다 오래 지속되어야 한다. 이것을 달성하기 위해, 페이지 테이블과 아이 노드는 물리적 메모리의 특정 위치에 저장되도록 할 필요가 있다. 시스템이 재시작할 때, 이러한 특별히 저장된 정보 조각들을 쉽게 복구할 수 있다. 재부팅비 불휘발성 메인 메모리에 있는 파일을 유지함으로써, 재부팅 후 보다 나은 성능을 기대할 수 있다.
시스템의 갑작스런 파워 오프 시, 재부팅 시퀀스는 페이지 테이블을 복구하고(restore), 가상 주소 공간의 아이노드 및 저널 로그에 액세스하는 것을 필요로 한다. 따라서, 페이지 테이블의 모든 내용은 최신이어야 하고, 더티 캐시 라인(dirty cache lines)으로 캐치되어 남아있으면 안된다. 이를 보장하기 위하여, 페이지 테이블은 캐시 불가능 영역(uncacheable area)에 배치된다.
쓰기 시스템 호출에서, 버퍼 내 데이터는 기록 작업을 위한 소스로서 파일에 전달된다. 이 데이터는 사용자 주소 공간에 상주하고(resides), 불휘발성 메모리 시스템에 대한 마이크로 저널링에서 중요한 역할을 한다. 이러한 데이터는 파워 오프 및 재부팅 후에도 불휘발성 메모리에 남아있기 때문에, write 시스템 호출에 대한 데이터 소스는 해당 데이터에 대한 더티 캐시 라인이 제대로 불휘발성 메인 메모리로 플러시되었다면 영구적일 수 있다. 따라서, 사용자 공간에 있는 데이터를 저널링 로그(journaling log)로 사용할 수 있다.
도 5a 및 도 5b는 본 발명의 실시예에 따른 커밋 및 체크포인트를 포함하는 마이크로 저널링과 기존의 저널링을 설명하는 도면이다. 가상 파일 시스템의 쓰기 명령(vfs_write)에 따른 기존의 저널링과 마이크로 저널링에서의 커밋 및 체크포인트 작업에 대해 CPU 캐시, 사용자 공간, 커널 공간 및 저장 공간을 어떻게 이용하는 지를 보여준다.
도 5a를 참조하면, 기존의 저널링은 CPU 캐시에서 사용자 공간으로의 데이터 전달의 일관성이 요구되지 않는 반면에, 마이크로 저널링은 캐시 데이터의 사용자 공간으로의 플러싱을 요구한다. 커밋 작업은 데이터가 휘발성 장치에서 불휘발성 장치로 이동함에 따라 저널링 메커니즘 둘 다에서 중요하다. 일단 커밋된 데이터가 파일 시스템에 기록된 데이터로 간주되면, 모든 커밋된 데이터가 파일 시스템에 제대로 기록되었다는 체크포인트 작업이 수행된다. 기존의 저널링에서, 파일 시스템은 저장 공간에 배치된다.
도 5b를 참조하면, 마이크로 저널링에서 파일 시스템은 불휘발성 메모리에 상주한다. 따라서, 체크포인트 작업은 두 저널링 메커니즘에서 서로 다른 시간에서 수행된다. 커밋된 데이터가 시스템의 갑작스런 파워 오프로 인해 체크포인트를 통과하지 못한 경우, 해당 데이터는 다음 재부팅 시에 재기록된다. 이것이 불휘발성 영역에 저널링 로그를 유지하고 파일 시스템에 재기록되는 데이터에 대한 필요한 기록을 유지하는 이유이다. 따라서, write 시스템 호출의 시작 시점에서, 마이크로 저널링은 소스 데이터와 관련되는 CPU 캐시 라인을 플러쉬하고 가능한 재작성에 대한 커밋 로그를 작성한다.
시스템의 갑작스런 파워 오프 후 파일 시스템을 복구하기 위하여, 마이크로 저널링은 마이크로 저널을 파일의 아이노드 안에 저장한다. 마이크로 저널은 복구 작업을 위하여 I/O 벡터와 페이지 디렉토리를 포함한다. I/O 벡터는 소스 데이터의 기본 주소(base address)와 write 시스템 호출의 데이터 길이에 대한 포인터를 갖는다. 기본 주소는 데이터 페이지가 가상 어드레스 공간 내 어디에 위치하는지를 나타낸다. 기본 주소를 이용하여, 충돌 시점에서 파일 시스템에 남아있는 업데이트를 다시 시작하여 커밋된 파일 쓰기에 대한 복구를 수행할 수 있다. 페이지 디렉토리는 페이지 테이블을 나타낸다. 재부팅시 복구가 수행되면, I/O 벡터의 가상 주소로부터 소스 데이터의 물리적 주소의 억세스를 필요로 한다.
도 6는 본 발명의 실시예에 따른 불휘발성 메모리 파일 시스템의 마이크로 저널링을 설명하는 도면이다.
도 6을 참조하면, CPU(110) 내 레지스터(Register)는 최상위 레벨 페이지 디렉토리를 가리키도록 설계된다. 페이지 테이블의 포인터들은 물리 주소들이기 때문에, 최상위 레벨 페이지 디렉토리에 대한 포인터는 페이지 테이블의 나머지 부분을 억세스하기에 충분하다. 최상위 레벨 페이지 테이블 포인터는 제어 레지스터(cr3)를 이용하여 노멀 어드레싱 모드(normal address mode)와 물리 어드레스 확장 모드(physical address extension mode)를 지원한다. 마이크로 저널에서 하나의 필드 페이지 디렉토리는 복구 재작성 동안 페이지 테이블 억세스 에 필요하다. 마이크로 저널은 체크 포인트 정보에 대한 소정의 필드를 포함할 수 있다. 체크 포인트 정보는 write 시스템 호출을 위한 일반 파일 쓰기의 페이지 레벨 프로세스를 추적(track)하는 데 사용된다.
사용자 주소 공간에 있는 데이터는 파일 쓰기를 위한 시스템 호출을 작성하기 위해 전달된다. 불휘발성 메인 메모리는 영구적인 물리 메모리(persistent physical memory)에 기록된 데이터를 갖고 있다. CPU 캐시에는 시스템의 갑작스런 파워 오프 시 손실될 수 있는, 더티 캐쉬 라인(dirty cache lines)의 데이터에 대한 최신 내용의 일부가 있을 수 있다.
마이크로 저널링은 더티 캐시 라인의 데이터를 불휘발성 메인 메모리로 이동시키는 커밋 작업을 수행한다. 캐시 라인 플러시 명령을 사용하여, 더티 캐시 라인의 데이터를 불휘발성 메인 메모리로 선택적으로 이동할 수 있다. 필요한 모든 캐시 라인 플러시를 완료한 후에, 파일 쓰기를 커밋 할 수 있다. 아직 파일 시스템을 업데이트 하진 못하지만, 이미 기록할 영구 데이터를 가지고 있다. 이것으로, 파일 쓰기가 완료되기 전에 시스템이 갑작스런 파워 오프되더라도 파일 쓰기를 재실행(redo)할 수 있다.
파일 쓰기를 재실행하는 동안, 마이크로 저널에 데이터 소스의 주소를 기록한다. CPU 캐시에서 데이터를 커밋하기 위하여, 마이크로 저널링은 메모리 장벽(memory barriers)과 캐시 라인 플러시 명령을 사용한다. 커밋 작업을 통해 마이크로 저널링은 파일 시스템에 원자적이고 순서적(atomic and ordered)인 파일 쓰기를 수행한다.
마이크로 저널링의 성능을 향상시키기 위해, 커밋 작업 상 캐시 플러쉬로 인한 오버헤드를 줄일 수 있다. 캐시 플러쉬 명령이 플러쉬되면, 캐시 계층 구조의 모든 레벨에서 가상 주소 내 피연산자로 지정된 캐시 라인을 무효화할 수 있다. 마이크로 저널링은 페이지 레벨의 쓰기 끝에 페이지와 메타 데이터에 대한 캐시 라인을 플러쉬할 수 있다.
마이크로 저널링에서, 체크 포인트는 파일 쓰기에 대한 페이지 단위로 작업된다. 기존의 저널링에서, 체크 포인트는 여러 개의 파일들 또는 트랜잭션로 부터 집계된(aggregated) 데이터 페이지 그룹 단위로 작업된다. 저장 공간에 대한 저널 영역의 페이지 수가 한계에 도달하거나 특정된 시간을 경과하게 되면, 기존의 저널링은 체크포인트 작업을 초기화한다(도 2). 불휘발성 메모리에 대한 쉐도우 페이징에서는 체크포인트 작업이 없고, 새로운 페이지로의 페이지 전환(switching)은 파일 시스템에 대한 파일 데이터의 맨 아래에서 메타 데이터의 루트까지 페이지 단위로 작업한다(도 3).
도 7은 본 발명의 실시예에 따른 마이크로 저널링에서의 체크포인트 작업을 설명하는 도면이다.
도 7을 참조하면, 마이크로 저널링에서의 체크포인트 작업은 페이지 캐시 쓰기의 각 끝 부분에서 수행된다. 체크포인트의 경우, 페이지 캐시에 쓰여진 데이터, 관련 메타 데이터 및 마이크로 저널은 불휘발성 메인 메모리에 영구적으로 쓰여질 필요가 있다. 이들 내용 중 일부가 여전히 CPU 캐시에 남아 있을 수 있기 때문에, 캐시 라인 플러시는 체크포인트를 완료하기 위하여 수행된다. 이 체크포인트는 write 시스템 호출에 대해 페이지 기록마다의 진행을 나타낸다. 이러한 체크포인트로, 파일 시스템은 미완성 데이터를 파일 시스템에 기록 작성하여 시스템의 갑작스런 파워 오프에서 복구될 수 있다.
한편, 기존의 저널링은 저장 장치의 저널 영역에 체크포인트가 있다(도 2). 각 저널은 여러 프로세스에서 여러 파일 억세스에 의해 공유된다. 따라서, 하나의 저널은 커밋 시 다양한 파일들의 최신 데이터로 혼합된다.
파일 시스템의 일관성은 세가지 레벨로, 즉 메타데이터 일관성, 데이터 일관성 그리고 버전 일관성으로 분류된다. 메타데이터 일관성은 메타데이터 레벨에서 파일 시스템의 구조적 무결성을 보장한다. 데이터 일관성은 메타 데이터와 결합하여 파일 데이터의 무결성을 보장한다. 버전 일관성은 파일 시스템의 버저닝(versioning)을 통해 파일 시스템에 여러 버전의 무결성을 보장한다. 마이크로 저널링은 데이터 일관성을 보장한다.
메타데이터 레벨에서 아이노드(inode)에서의 파일 크기는 write 시스템 호출 관점에서의 데이터 크기와 실제로 일치한다. 또한, 데이터 레벨에서 데이터의 내용은 write 시스템 호출의 데이터와 일치한다. 메타데이터 일관성이 있는 파일 시스템은 재부팅 시 파일 시스템 검사 과정을 단축할 수 있다. 파일 데이터의 내용은 write 시스템 호출과 불일치할 수 있지만, 파일 시스템의 구조적 무결성은 유지된다.
마이크로 저널링에서 write 시스템 호출에 대한 데이터 소스를 페이지 단위가 아니라 전체로서 커밋한다. 이에 따라, write 시스템 호출의 모든 데이터가 파일 시스템에 기록되거나 어떤 데이터도 파일 시스템에 전혀 기록되지 않는다. 이것은 파일 시스템에 트랜잭셔널 기록(transactional write)이다. 파일 시스템의 메타 데이터 는 트랜잭셔널하게 업데이트된다.
메인 메모리가 불휘발성이기 때문에, 페이지 테이블 및 사용자 주소 공간에 있는 데이터는 시스템의 갑작스런 파워 오프 및 재부팅 후에도 재사용 가능하게 영구적이다. 마이크로 저널링의 복구 프로세스에서, 부팅 메커니즘을 수정할 필요가 있다. 노멀 재부팅에서 조차도 불휘발성 파일 시스템에 대한 페이지 캐시 및 이와 관련된 가상 파일 시스템 구조는 초기화되지 않는다.
도 8은 본 발명의 실시예에 따른 마이크로 저널링을 이용한 파일 시스템에서의 부트 메커니즘과 복구 메커니즘을 설명하는 도면이다.
도 8을 참조하면, 부팅 스킴은 고급 구성 및 전원 인터페이스(Advanced Configuration and Power Interface: ACPI)를 기초로 한다. ACPI는 스냅샷(snapshot)을 갖는 서스펜드-투-램(suspend?o-RAM) 또는 서스팬드-투-디스크(suspend?o-DISK)와 같은 몇가지 유용한 기능을 제공한다. 이러한 대기 모드 기능은 일반 운영 체제에 사용된다. 부트 메커니즘에서, 정상적인 시스템 종료(shutdown)는 서스펜드-투-램을 수행하고, 정상적인 시스템 부팅(boot-up)은 ACPI 프로토콜 내에서 웨이크-업-프롬-램(wake-up-from-RAM)을 수행한다. 정상적인 부팅은 프레쉬 부트(fresh boot)되도록 설계되고, 프레쉬 부트는 모든 커널 구조와 페이지 캐시가 모두 초기화 되기 때문에, 시스템을 공장 출하 상태로 초기화한다.
부트 메커니즘은 복구 부트를 위한 부트 단계를 추가한다. 복구 부트는 시스템의 갑작스런 파워 오프 후 재부팅에서 사용되고, 이 단계에서 파일 시스템 복구를 위한 파일 쓰기 재실행이 수행된다. 시스템의 갑작스런 파워 오프로 인한 미종료된 쓰기를 수행하기 위하여, 마이크로 저널 내 I/O 벡터들(vectors)이 스캔되고, 관련된 아이노드들이 파일 시스템으로 미종료된 페이지-레벨 쓰기를 알아내기 위해 조회된다. 쓰기 재작업을 위해, 사용자 공간에서 복사할 데이터는 가상 메모리 시스템을 통해 액세스되어야 한다. 마이크로 저널이 제어 레지스터(cr3)의 상위 레벨 페이지 테이블 포인터의 사본를 포함하고 페이지 테이블은 주소 공간의 캐시 불가능 영역에 배치되어 있기 때문에, 복구 작업은 파일 쓰기의 소스 데이터를 억세스할 수 있다. 불휘발성 메모리 파일 시스템은 시스템 셧다운 및 재부팅시 복구될 수 있다. 아이노드와 페이지 캐시를 포함하는 관련 커널 구조는, 재부팅 초기화하는 커널 구조와 혼합되지 않도록, 특정 메모리 영역에 배치될 수 있다. 복구 파일 쓰기는 불휘발성 메모리 파일 시스템이 사용되기 위해 복구된 후 진행될 수 있다.
도 9는 본 발명의 실시예에 따른 마이크로 저널링을 이용한 파일 시스템에서의 복구 과정을 설명하는 도면이다.
도 9를 참조하면, 파일 쓰기 도중 시스템의 갑작스런 파워 오프와 같은 문제가 발생하여 전원이 차단되어 파일 쓰기 작업이 중지될 수 있다. 이 후, 재부팅을 하면 복구 부트(Recovery Boot)로 부팅되어, 시스템 복구 과정에 진입한다. 불휘발성 메모리로 구현되는 메인 메모리(120)의 사용자 영역으로 커밋된 데이터를 이용하여 페이지 테이블을 복구할 수 있다(S1). 이 후, 메인 메모리(120) 내 마이크로 저널링 내용을 참조하여, 시스템의 갑작스런 파워 오프 시 중지되었던 파일 쓰기를 재실행할 수 있다(S3).
마이크로 저널링 내용은 사용자 영역으로 CPU 캐시의 데이터를 플러싱하는 커밋 작업, 시스템 호출을 통해 파일 쓰기 작업을 수행하는 동안 페이지 단위로 진행되는 체크포인트 작업, 그리고사용자 영역의 데이터 로그를 포함할 수 있다. 또한, 마이크로 저널링 내용은 시스템의 갑작스런 파워 오프로 인한 미종료된 파일 쓰기에 대한 소스 데이터의 기본 주소와 시스템 호출의 데이터 길이에 대한 포인터를 갖는 I/O 벡터와 상위 레벨 페이지 테이블을 억세스하는 페이지 디렉토리를 포함할 수 있다. 이러한 마이크로 저널링을 이용한 복구 과정을 통해 파일 시스템의 일관성과 신뢰성이 유지될 수 있다.
도 10은 본 발명의 다양한 실시예들에 따른 MRAM을 설명하는 제1 예의 도면이다.
도 10을 참조하면, MRAM(12)은 클럭 신호(CK)의 상승 에지/하강 에지에 동기되어 동작하는 더블 데이터 레이트 장치이다. MRAM(12)은 클럭 신호(CK)의 동작 주파수에 따라 다양한 데이터 레이트를 지원한다. 예컨대, 클럭 신호(CK)의 동작 주파수가 800 MHz 인 경우, 1600 MT/s 데이터 레이트를 지원한다. MRAM(12)은 1600, 1867, 2133, 2400 MT/s 데이터 레이트들을 지원할 수 있다.
MRAM(12)은 메모리 콘트롤러와 같은 외부 장치로부터 다수개의 커맨드와 클럭킹 신호들을 제어 버스 상으로 수신하는 제어 로직 및 커맨드 디코더(14)를 포함한다. 커맨드 신호들은 칩 선택 신호(CS_n), 기입 인에이블 신호(WE_n), 컬럼 어드레스 스트로브 신호(CAS_n) 그리고 로우 어드레스 스트로브 신호(RAS_n)를 포함한다. 클럭킹 신호들은 클럭 인에이블 신호(CKE), 그리고 상보적인 클럭 신호들(CK_t, CK_c)을 포함한다. 여기에서, _n 은 액티브 로우 신호임을 나타낸다. _t와 _c는 신호 쌍(pair)임을 나타낸다. 커맨드 신호들(CS_n, WE_n, RAS_n, CAS_n)은 독출 커맨드, 기입 커맨드 등과 같은 특정 커맨드에 해당하는 로직 값으로 구동될 수 있다.
제어 로직(14)은 MRAM(12)의 복수개 동작 옵션들을 제공하는 모드 레지스터(15)를 포함한다. 모드 레지스터(15)는 MRAM(12)의 다양한 기능들, 특성들 그리고 모드들을 프로그램할 수 있다. 모드 레지스터(15)는 버스트 길이, 독출 버스트 타입, 카스 레이턴시, 테스트 모드, DLL 리셋, 라이트 리커버리 및 독출 커맨드-투-프리차아지 커맨드 특성, 프리차아지 파워 다운 동안 DLL 사용을 제어할 수 있다. 모드 레지스터(15)는 DLL 인에이블/디세이블, 출력 드라이브 세기, 어디티브 레이턴시, 라이트 레벨링 인에이블/디세이블, TDQS 인에이블/디세이블 그리고 출력 버퍼 인에이블/디세이블을 제어하기 위한 데이터를 저장할 수 있다. 모드 레지스터(15)는 카스 라이트 레이턴시, 다이나믹 터미네이션, 라이트 CRC를 제어하기 위한 데이터를 저장할 수 있다.
모드 레지스터(15)는 MPR 로케이션 기능, MPR 동작 기능, 기어 다운 모드, 퍼 MRAM 어드레싱 모드 그리고 MPR 독출 포맷을 제어하기 위한 데이터를 저장할 수 있다. 모드 레지스터(15)는 파워-다운 모드, Vref 모니터링, CS-투-커맨드/어드레스 레이턴시 모드, 독출 프리앰블 트레이닝 모드, 독출 프리앰블 기능, 기입 프리앰블 기능을 제어하기 위한 데이터를 저장할 수 있다. 모드 레지스터(15)는 C/A 패리티 기능, CRC 에러 상태, C/A 패리티 에러 상태, ODT 입력 버퍼 파워 다운 기능, 데이터 마스크 기능, 기입 DBI 기능, 독출 DBI 기능을 제어하기 위한 데이터를 저장할 수 있다. 모드 레지스터(15)는 VrefDQ 트레이닝 값, VrefDQ 트레이닝 레인지, VrefDQ 트레이닝 인에이블, tCCD 타이밍을 제어하기 위한 데이터를 저장한다.
커맨드 디코더(14)는 클럭 신호(CK_t, CK_c)에 응답하여 인가되는 커맨드를 래치하고 디코딩한다. 커맨드 디코더(14)는 인가된 커맨드의 기능을 수행하기 위한 내부 블락들로 클럭킹과 제어 신호들의 시퀀스를 발생한다.
MRAM(12)은 어드레스 버스를 통하여 메모리 콘트롤러로부터 로우, 칼럼, 뱅크 어드레스들(A0-A17, BA0, BA1)과 뱅크 그룹 어드레스(BG0, BG1)를 수신하는 어드레스 버퍼(16)를 더 포함한다. 어드레스 버퍼(16)는 로우 어드레스 멀티플렉서(17)와 뱅크 제어 로직부(18)로 인가되는 로우 어드레스와 뱅크 어드레스, 뱅크 그룹 어드레스를 수신한다.
로우 어드레스 멀티플렉서(17)는 어드레스 버퍼(16)로부터 수신된 로우 어드레스를 다수개의 어드레스 래치 및 디코더들(20)로 인가한다. 뱅크 제어 로직부(18)은 어드레스 버퍼(16)로부터 수신된 뱅크 어드레스(BA1:BA0)와 뱅크 그룹 신호(BG1:BG0)에 해당하는 어드레스 래치 및 디코더(20)를 활성화시킨다.
활성화된 어드레스 래치 및 디코더(20)는, 디코딩된 로우 어드레스에 해당하는 메모리 셀의 로우를 활성화시키기 위하여, 해당하는 메모리 뱅크(21)로 다양한 신호들을 인가한다. 각 메모리 뱅크(21)는 복수개의 메모리 셀들을 포함하는 메모리 셀 어레이를 포함한다. 활성화된 로우의 메모리 셀들에 저장된 데이터는 센스 앰프들(22)에 의해 감지 증폭된다.
로우 및 뱅크 어드레스들 후에 어드레스 버스로 칼럼 어드레스가 인가된다. 어드레스 버퍼(16)는 칼럼 어드레스를 칼럼 어드레스 카운터 및 래치(19)로 인가한다. 칼럼 어드레스 카운터 및 래치(19)는 칼럼 어드레스를 래치하고, 래치된 칼럼 어드레스를 다수개의 칼럼 디코더들(23)로 인가한다. 뱅크 제어 로직부(18)는 수신된 뱅크 어드레스와 뱅크 그룹 어드레스에 해당하는 칼럼 디코더(23)를 활성화시키고, 활성화된 칼럼 디코더(23)는 칼럼 어드레스를 디코딩한다.
MARM(12)의 동작 모드에 따라, 칼럼 어드레스 카운터 및 래치(19)는 래치된 칼럼 어드레스를 칼럼 디코더(23)로 바로 인가하거나, 어드레스 버퍼(16)에서 제공된 칼럼 어드레스를 시작으로 하는 칼럼 어드레스 시퀀스를 칼럼 디코더(23)로 인가할 수 있다. 칼럼 어드레스 카운터 및 래치(19)로부터 칼럼 어드레스에 응답하여 활성화된 칼럼 디코더(23)는 I/O 게이팅 및 DM 마스크 로직부(24)로 디코드 및 제어 신호들을 인가한다. I/O 게이팅 및 DM 마스크 로직부(24)는 억세스된 메모리 뱅크(21) 내 활성화된 로우의 메모리 셀들에서 디코딩된 칼럼 어드레스에 해당하는 메모리 셀들을 억세스한다.
MRAM(12)의 독출 커맨드에 따라, 어드레싱된 메모리 셀들로부터 데이터를 독출하고, I/O 게이팅 및 DM 마스크 로직부(24)를 통하여 독출 래치(25)와 연결시킨다. I/O 게이팅 및 DM 마스크 로직부(24)는 N 비트의 데이터를 독출 래치(25)로 제공하고, 독출 래치(25)는 예컨대, 4개의 N/4 비트를 멀티플렉서(26)로 인가한다.
MRAM(12)은 각 메모리 억세스에서 버스트 길이 N에 해당하는 N 프리패치 아키텍쳐를 가질 수 있다. 예컨대, n 비트 데이터 4개를 검색하는(retrive) 4n 프리패치 아키텍쳐를 가질 수 있다. MRAM(12)은 클럭 신호(CK_t, CK_c)의 에지마다 4 비트 데이터를 제공하고 수신하는 x4 메모리 장치일 수 있다. 또한, MRAM(12)은 8n 프리패치를 가질 수도 있다. MRAM(12)이 4n 프리패치를 갖고 x4 데이터 위스이면, I/O 게이팅 및 DM 마스크 로직부(24)는 16 비트를 독출 래치(25)로 제공하고, 4개의 4 비트 데이터를 멀티플렉서(26)로 제공한다.
데이터 드라이버(27)는 멀티플렉서(26)로부터N/4 비트 데이터를 순차적으로 수신한다. 또한, 데이터 드라이버(27)는 스트로브 신호 발생부(28)로부터 데이터 스트로브 신호(DQS_t, DQS_c)를 수신하고, DLL(29)로부터 지연된 클럭 신호(CKDEL)를 수신한다. DQS 신호는 독출 동작 중 독출 데이터의 동기화된 수신을 위하여 메모리 콘트롤러와 같은 외부 장치에 의해 사용된다.
지연된 클럭 신호(CKDEL)에 응답하여 데이터 드라이버(27)는 수신된 데이터를 해당하는 데이터 워드에 따라 데이터 터미널(DQ)로 순차적으로 출력한다. 각 데이터 워드는 MRAM(12)에 인가된 클럭 신호(CK_t, CK_c)의 상승 및 하강 에지들에 동기되어 하나의 데이터 버스 상으로 출력된다. 제1 데이터 워드는 독출 커맨드 후 프로그램된 카스 레이턴시에 따른 시간에 맞추어 출력된다. 또한, 데이터 드라이버(27)는 클럭 신호(CK_t, CK_c)의 상승 및 하강 에지들에 동기된 상승 및 하강 에지들을 갖는 데이터 스트로브 신호(DQS_t, DQS_c)를 출력한다.
MRAM(12)의 기입 동작에서, 메모리 콘트롤러와 같은 외부 장치는 데이터 터미널(DQ)로 예컨대, N/4 비트 데이터 워드들을 인가하고, DQS 신호와 해당되는 데이터 마스크(DM) 신호를 데이터 버스 상으로 인가한다. 데이터 리시버(35)는 각 데이터 워드와 이와 관련된 DM 신호를 수신하고, 이들 신호들을 DQS 신호에 클럭킹되는 입력 레지스터들(36)로 인가한다.
DQS 신호의 상승 에지에 응답하여, 입력 레지스터들(36)은 제1 N/4 비트 데이터 워드와 관련 DM 신호를 래치하고, DQS 신호의 하강 에지에 응답하여 제2 N/4 비트 데이터 워드와 관련 DM 신호를 래치한다. 입력 레지스터들(36)은 DQS 신호에 응답하여 4개의 래치된 N/4 비트 데이터 워드들과 DM 신호를 기입 FIFO 및 드라이버(37)로 제공한다. 기입 FIFO 및 드라이버(37)는 N 비트 데이터 워드를 수신한다.
데이터 워드는 기입 FIFO 및 드라이버(37)에서 클럭드 출력(clocked out)되어 I/O 게이팅 및 DM 마스크 로직부(24)로 인가된다. I/O 게이팅 및 DM 마스크 로직부(24)는 데이터 워드를 DM 신호의 적용을 받아 억세스된 메모리 뱅크(21) 내 어드레싱된 메모리 셀들로 전달한다. DM 신호는 어드레싱된 메모리 셀들에 기입될 데이터 워드들 중 소정의 비트들 또는 비트 그룹을 선택적으로 마스킹한다.
도 11은 도 10의 메모리 뱅크(21) 내 메모리 셀 어레이를 설명하는 도면이다.
도 11을 참조하면, 메모리 셀 어레이(21)는 복수개의 워드라인들(WL0~WLN, N은 1 이상의 자연수), 복수개의 비트라인들(BL0~BLM, M은 1 이상의 자연수) 복수개의 소스라인들(SL0~SLN, N은 1 이상의 자연수) 그리고 워드라인들(WL0~WLN)과 비트라인들(BL0~BLM)이 교차하는 영역에 배치되는 복수개의 메모리 셀들(30)을 포함한다. 메모리 셀(30)은 STT-MRAM셀로 구현될 수 있다. 메모리 셀(30)은 자성 물질을 가지는 자기 터널 접합 소자(magnetic tunnel junction, MTJ 소자, 40)를 포함할 수 있다.
복수개의 메모리 셀들(30)은 셀 트랜지스터(CT) 및 MTJ소자(40)를 포함할 수 있다. 복수개의 메모리 셀들 중 하나의 메모리 셀(30)을 살펴보면, 셀 트랜지스터(CT)의 드레인은 MTJ 소자(40)의 고정 층(41)과 연결된다. MTJ 소자(40)의 자유 층(43)은 비트라인(BL0)과 연결되고, 셀 트랜지스터(CT)의 소스는 소스 라인(SL0)과 연결된다. 셀 트랜지스터(CT)의 게이트는 워드라인(WL0)과 연결된다.
MTJ 소자들(40)은 상 변화 물질을 이용하는 PRAM(Phase Change Random Access Memory), 전이 금속 산화물(Complex Metal Oxide) 등의 가변 저항 물질을 이용한 RRAM(Resistive Random Access Memory) 또는 강자성체 물질을 이용한 MRAM(Magnetic Random Access Memory) 등의 저항성 소자로 대체될 수도 있다. 저항성 소자들을 구성하는 물질들은 전류 또는 전압의 크기 및/ 또는 방향에 따라서 그 저항 값이 가변 되며, 전류 또는 전압이 차단되어도 그 저항 값을 그대로 유지하는 불휘발성 특성을 갖는다.
워드라인(WL0)은 로우 디코더(20)에 의해 인에이블되고, 워드라인 선택 전압을 구동하는 워드라인 구동부(32)와 연결된다. 워드라인 선택 전압은 MTJ 소자(40)의 로직 상태를 독출 또는 기입하기 위하여 워드라인(WL0)을 활성화시킨다.
소스 라인(SL0)은 소스 라인 회로(34)에 연결된다. 소스 라인 회로(34)는 어드레스 신호와 독출/기입 신호를 수신하고, 이를 디코딩하여 선택된 소스 라인(SL0)으로 소스 라인 선택 신호를 발생한다. 비선택된 소스 라인들(SL1~SLN)로는 접지 기준 전압을 제공한다.
비트라인(BL0)은 칼럼 선택 신호(CSL0-CSLM)에 의해 구동되는 칼럼 선택 회로(24)와 연결된다. 칼럼 선택 신호(CSL0-CSLM)는 칼럼 디코더(23)에 의해 선택된다. 예컨대, 선택된 칼럼 선택 신호(CSL0)는 칼럼 선택 회로(24) 내 칼럼 선택 트랜지스터를 온시키고 비트라인(BL0)을 선택한다. 선택된 비트라인(BL0)으로 MTJ 소자(40)의 로직 상태가 센스 앰프(22)를 통해 독출된다. 또는 선택된 비트라인(BL0)으로 기입 드라이버(27)를 통해 인가되는 기입 전류가 전달되어 MTJ 소자에 기입된다.
도 12는 도 11의 STT-MRAM 셀의 구현 예를 나타내는 입체도이다.
도 12를 참조하면, STT-MRAM 셀(30)은 MTJ 소자(40)와 셀 트랜지스터(CT)를 포함할 수 있다. 셀 트랜지스터(CT)의 게이트는 워드라인(예컨대, 제 1 워드라인 WL0)에 연결되고, 셀 트랜지스터(CT)의 일 전극은 MTJ 소자(40)를 통해 비트라인(예컨대, 제 1 비트라인 BL0)에 연결된다. 또한 셀 트랜지스터(CT)의 다른 전극은 소스라인(예컨대, 제 1 소스라인 SL0)에 연결된다.
MTJ 소자(40)는 자유 층(41)과 고정 층(43) 및 이들 사이에 터널 층(42)을 포함할 수 있다. 고정 층(43)의 자화 방향은 고정되어 있으며, 자유 층(41)의 자화 방향은 기입된 데이터에 따라 고정 층(43)의 자화 방향과 평행이거나 반-평행 방향이 될 수 있다. 고정 층(43)의 자화 방향을 고정시켜 주기 위하여, 예컨대, 반강자성층(anti-ferromagnetic layer, 미도시)이 더 구비될 수 있다.
STT-MRAM 셀의 기입 동작을 하기 위해서, 워드라인(WL0)에 로직 하이의 전압을 인가하여 셀 트랜지스터(CT)를 턴 온시킨다. 비트라인(BL0)과 소스 라인(SL0)에는 기입/독출 바이어스 발생부(45)에서 제공되는 프로그램 전류, 즉 기입 전류를 인가된다. 기입 전류의 방향은 MTJ 소자(40)에 기입될 로직 상태에 의해 결정된다.
STT-MRAM 셀의 독출 동작을 하기 위해서, 워드라인(WL0)에 로직 하이의 전압을 주어 셀 트랜지스터(CT)를 턴 온시키고, 비트라인(BL0)과 소스라인(SL0)으로 독출 전류를 인가한다. 이에 따라, MTJ 소자(40) 양단으로 전압이 디벨롭되고, 센스 앰프(22)에 의해 센싱되고, MTJ 소자(40)에 기입된 로직 상태를 결정하기 위한 기준 전압 발생부(44)와 비교된다. 이에 따라, MTJ 소자(40)에 저장된 데이터를 판별할 수 있다.
도 13a 및 도 13b는 도 12의 MTJ 소자(40)의 기입된 데이터에 따른 자화 방향을 나타내는 블록도이다. MTJ 소자(40)의 저항 값은 자유 층(41)의 자화 방향에 따라 달라진다. MTJ 소자(40)에 리드 전류(IR)를 흘리면 MTJ 소자(40)의 저항 값에 따른 데이터 전압이 출력된다. 리드 전류(IR)의 세기는 쓰기 전류의 세기보다 매우 작기 때문에, 리드 전류(IR)에 의해 자유 층(41)의 자화 방향이 변화되지 않는다.
도 13a를 참조하면, MTJ 소자(40)에서 자유 층(41)의 자화 방향과 고정층(43)의 자화 방향이 평행(parallel)하게 배치된다. 따라서, MTJ 소자(40)는 낮은 저항 값을 가진다. 이 경우, 데이터 "0"을 독출할 수 있다.
도 13b를 참조하면, MTJ 소자(40)는 자유 층(41)의 자화 방향이 고정 층(43)의 자화 방향과 반-평행(anti-parallel)으로 배치된다. 이 때, MTJ 소자(40)는 높은 저항 값을 가진다. 이 경우, 데이터 "1"을 독출할 수 있다.
본 실시예에서 MTJ 소자(40)는 자유 층(41)과 고정 층(43)을 수평 자기 소자로 도시하였으나, 다른 실시예로서 자유 층(41)과 고정 층(43)은 수직 자기 소자를 이용할 수도 있다.
도 14는 도 12의 STT-MRAM 셀의 라이트 동작을 나타내는 블록도이다.
도 14를 참조하면, MTJ 소자(40)를 흐르는 라이트 전류(IW)의 방향에 따라 자유 층(43)의 자화 방향이 결정될 수 있다. 예컨대, 자유 층(41)에서 고정 층(43)으로 제1 라이트 전류(IWC1)을 인가하면, 고정층(43)과 동일한 스핀 방향을 갖는 자유 전자들이 자유 층(41)에 토크(torque)를 인가한다. 이로 인해, 자유 층(41)은 고정층(43)과 평행(Parallel)하게 자화된다.
고정 층(43)에서 자유층(41)으로 제2 라이트 전류(IWC2)를 인가하면, 고정층(41)과 반대의 스핀을 갖는 전자들이 자유 층(43)으로 되돌아와 토크를 인가한다. 이로 인해, 자유 층(41)은 고정층(43)과 반-평행(Anti-Parallel)하게 자화된다. 즉, MTJ 소자(40)에서 자유 층(41)의 자화 방향은 스핀 전달 토크(STT, Spin transfer torque)에 의해 변할 수 있다.
도 15a 및 도 15b는 도 12의 STT-MRAM셀에서 MTJ 소자의 다른 실시 예들을 설명하는 도면이다.
도 15a를 참조하면, MTJ 소자(50)는 자유 층(51), 터널 층(52), 고정 층(53) 및 반강자성층(54)을 포함할 수 있다. 자유 층(51)은 변화 가능한 자화 방향을 갖는 물질을 포함할 수 있다. 자유 층(51)의 자화 방향은 메모리 셀의 외부 및/또는 내부에서 제공되는 전기적/자기적 요인에 의해 변경될 수 있다. 자유 층(51)은 코발트(Co), 철(Fe) 및 니켈(Ni) 중 적어도 하나를 포함하는 강자성 물질을 포함할 수 있다. 예를 들어, 자유 층(51)은 FeB, Fe, Co, Ni, Gd, Dy, CoFe, NiFe, MnAs, MnBi, MnSb, CrO2, MnOFe2O3, FeOFe2O3, NiOFe2O3, CuOFe2O3, MgOFe2O3, EuO 및 Y3Fe5O12중 선택된 적어도 하나를 포함할 수 있다.
터널 층(52)은 스핀 확산 길이(Spin Diffusion Distance) 보다 얇은 두께를 가질 수 있다. 터널 층(52)은 비자성 물질을 포함할 수 있다. 일 예로, 터널 층(52)은 마그네슘(Mg), 티타늄(Ti), 알루미늄(Al), 마그네슘-아연(MgZn) 및 마그네슘-붕소(MgB)의 산화물, 그리고 티타늄(Ti) 및 바나듐(V)의 질화물 중 선택된 적어도 하나를 포함할 수 있다.
고정 층(53)은 반강자성층(54)에 의해 고정된 자화 방향을 가질 수 있다. 또한, 고정층(53)은 강자성 물질(ferromagnetic material)을 포함할 수 있다. 예를 들어, 고정층(53)은 CoFeB, Fe, Co, Ni, Gd, Dy, CoFe, NiFe, MnAs, MnBi, MnSb, CrO2, MnOFe2O3, FeOFe2O3, NiOFe2O3, CuOFe2O3, MgOFe2O3, EuO 및 Y3Fe5O12중 선택된 적어도 하나를 포함할 수 있다.
반강자성층(54)은 반-강자성 물질(anti-Ferromagnetic material)을 포함할 수 있다. 예를 들어, 반강자성층(54)은 PtMn, IrMn, MnO, MnS, MnTe, MnF2, FeCl2, FeO, CoCl2, CoO, NiCl2, NiO 및 Cr에서 선택된 적어도 하나를 포함할 수 있다.
MTJ 소자(50)의 자유 층(51)과 고정 층(53)은 각각 강자성체로 형성되므로 강자성체의 에지(edge)에는 표류 자기장(stray field)이 발생할 수 있다. 표류 자기장은 자기 저항을 낮아지게 하거나 자유 층(51)의 저항 자력을 증가시킬 수 있다. 게다가, 스위칭 특성에 영향을 미쳐 비대칭적인 스위칭을 형성할 수 있다. 따라서, MTJ 소자(50) 내의 강자성체에서 발생되는 표류 자기장을 감소시키거나 제어시키는 구조가 필요하다.
도 15b를 참조하면, MTJ 소자(60)의 고정층(63)은 합성 반 강자성체(Synthetic Anti Ferromagnetic, SAF)로 제공될 수 있다. 고정층(63)은 제 1 강자성층(63_1), 결합 층(63_2), 제 2 강자성층(63_3)을 포함할 수 있다. 제 1 및 제 2 강자성층(63_1, 63_3)은 각각 CoFeB, Fe, Co, Ni, Gd, Dy, CoFe, NiFe, MnAs, MnBi, MnSb, CrO2, MnOFe2O3, FeOFe2O3, NiOFe2O3, CuOFe2O3, MgOFe2O3, EuO 및 Y3Fe5O12중 선택된 적어도 하나를 포함할 수 있다. 이 때, 제 1 강자성층(63_1)의 자화 방향과 제 2 강자성층(63_3)의 자화 방향은 서로 다른 방향을 가지며, 각각의 자화 방향은 고정된다. 결합 층(33_2)은 루테늄(Ru)을 포함할 수 있다.
도 16은 도 12의 STT-MRAM 셀에서 MTJ 소자의 다른 실시 예를 설명하는 도면이다.
도 16을 참조하면, MTJ 소자(70)는 자화 방향이 수직이고, 전류의 이동 방과 자화 용이축(easy axis)이 실질적으로 평행하다. MTJ 소자(70)는 자유 층(71), 터널 층(72) 그리고 고정 층(73)을 포함한다. 자유 층(71)의 자화 방향과 고정 층(73)의 자화 방향이 평행(Parallel) 하면 저항 값이 작아지고, 자유 층(71)의 자화 방향과 고정 층(73)의 자화 방향이 반-평행(Anti-Parallel) 하면 저항 값이 커진다. 이러한 저항 값에 따라 MTJ 소자(70)에 데이터가 저장될 수 있다.
자화 방향이 수직인 MTJ 소자(70)를 구현하기 위해서, 자유 층(71)과 고정 층(73)은 자기 이방성 에너지가 큰 물질로 구성되는 것이 바람직하다. 자기 이방성 에너지가 큰 물질로는, 비정질계 희토류 원소 합금, (Co/Pt)n 이나 (Fe/Pt)n과 같은 다층박막, 그리고 L10 결정 구조의 규칙격자 물질이 있다. 예를 들어, 자유 층(71)은 규칙 합금(ordered alloy)일 수 있으며, 철(Fe), 코발트(Co), 니켈(Ni), 팔라듐(Pa), 및 백금(Pt) 중 적어도 어느 하나를 포함할 수 있다. 또한, 자유 층(71)은 Fe-Pt 합금, Fe-Pd 합금, Co-Pd 합금, Co-Pt 합금, Fe-Ni-Pt 합금, Co-Fe-Pt 합금, 및 Co-Ni-Pt 합금 중 적어도 어느 하나를 포함할 수 있다. 이러한 합금들은, 예를 들어 화학 정량적인 표현으로, Fe50Pt50, Fe50Pd50, Co50Pd50, Co50Pt50, Fe30Ni20Pt50, Co30Fe20Pt50, 또는 Co30Ni20Pt50 일 수 있다.
고정 층(73)은 규칙 합금일 수 있으며, 철(Fe), 코발트(Co), 니켈(Ni), 팔라듐(Pa), 및 백금(Pt) 중 적어도 어느 하나를 포함할 수 있다. 예를 들어, 고정층(73)은 Fe-Pt 합금, Fe-Pd 합금, Co-Pd 합금, Co-Pt 합금, Fe-Ni-Pt 합금, Co-Fe-Pt 합금, 및 Co-Ni-Pt 합금 중 적어도 어느 하나를 포함할 수 있다. 이러한 합금들은, 예를 들어 화학 정량적인 표현으로, Fe50Pt50, Fe50Pd50, Co50Pd50, Co50Pt50, Fe30Ni20Pt50, Co30Fe20Pt50, 또는 Co30Ni20Pt50 일 수 있다.
도 17a 및 도 17b는 도 12의 STT-MRAM 셀에서 MTJ 소자의 다른 실시 예를 나타내는 도면이다. 듀얼 MTJ 소자는 자유 층을 기준으로 양 끝 단에 터널 층과 고정 층이 각각 배치되는 구조를 가진다.
도 17a를 참조하면, 수평 자기를 형성하는 듀얼 MTJ 소자(80)는 제 1 고정층(81), 제 1 터널 층(82), 자유 층(83), 제 2 터널 층(84) 및 제 2 고정층(85)을 포함할 수 있다. 제1 및 제2 고정 층들(81, 85)을 구성하는 물질은 도 15a의 고정 층(53)과 유사하고, 제1 및 제2 터널 층들(82, 84)은 도 15a의 터널 층(52)와 유사하고, 자유 층(83)은 도 15a의 자유 층(51)과 유사하다.
제 1 고정층(81)의 자화 방향과 제 2 고정층(85)의 자화 방향이 반대 방향으로 고정되면, 실질적으로 제 1 및 제 2 고정 층들(81, 85)에 의한 자기력이 상쇄되는 효과를 가진다. 따라서, 듀얼 MTJ 소자(80)는 전형적인 MTJ 소자보다 더 적은 전류를 이용하여 라이트 동작을 할 수 있다.
듀얼 MTJ 소자(80)는 제 2 터널 층(84)으로 인하여 리드 동작 시에 더 높은 저항을 제공하므로, 명확한 데이터 값을 얻을 수 있도록 하는 장점이 있다.
도 17b를 참조하면, 수직 자기를 형성하는 듀얼 MTJ 소자(90)는 제 1 고정 층(91), 제 1 터널 층(92), 자유 층(93), 제 2 터널 층(94) 및 제 2 고정층(95)을 포함한다. 제1 및 제2 고정 층들(91, 95)을 구성하는 물질은 도 16의 고정 층(73)과 유사하고, 제1 및 제2 터널 층들(92, 94)은 도 16의 터널 층(72)와 유사하고, 자유 층(93)은 도 16의 자유 층(71)과 유사하다.
이 때, 제 1 고정층(91)의 자화 방향과 제 2 고정층(95)의 자화 방향은 반대 방향으로 고정되면, 실질적으로 제 1 및 제 2 고정 층들(91, 95)에 의한 자기력이 상쇄되는 효과를 가진다. 따라서, 듀얼 MTJ 소자(90)는 전형적인 MTJ 소자보다 더 적은 전류를 이용하여 라이트 동작을 할 수 있다.
상술한 STT-MRAM은 시스템의 메인 메모리로 이용될 수 있다. STT-MRAM은 바이트-어드레싱 가능한(byte-addressability) 특성을 갖고 데이터의 영구적인 보존이 가능하기 때문에, 파일 시스템의 신뢰성을 위한 데이터 이중 복제 과정을 제거할 수 있다. 또한, STT-MRAM은 파일 쓰기가 진행되는 동안 로깅 정보를 기록하고 체크포인트하는 마이크로 저널링에 이용되기 때문에, 시스템의 갑작스런 파워 오프 시 파일 시스템의 복구가 가능하다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.

Claims (10)

  1. 시스템의 동작을 제어하고, CPU 캐시를 포함하는 중앙 처리 장치(CPU);
    파일 시스템이 상주하는 불휘발성 메모리로 구현되고, 상기 CPU 캐시의 데이터를 사용자 영역으로 플러싱하는 커밋 작업을 포함하는 마이크로 저널링이 수행되는 메인 메모리; 및
    상기 시스템에서 처리되는 데이터를 저장하는 저장 장치를 구비하는 것을 특징으로 하는 시스템.
  2. 제1항에 있어서,
    상기 마이크로 저널링은 시스템 호출을 통해 파일 쓰기 작업을 수행하는 동안 페이지 단위로 진행되는 체크포인트 작업을 포함하는 것을 특징으로 하는 시스템.
  3. 제1항에 있어서,
    상기 마이크로 저널링은 상기 메인 메모리의 상기 사용자 영역을 데이터 로그 영역으로 이용하는 것을 특징으로 하는 시스템.
  4. 제1항에 있어서,
    상기 저장 장치는 상기 메인 메모리 내 가상 메모리에서 축출되는 파일 데이터에 대한 스왑용으로 사용되는 것을 특징으로 하는 시스템.
  5. 제1항에 있어서,
    상기 마이크로 저널링은, 상기 시스템의 갑작스런 파워 오프 후 상기 파일 시스템을 복구하기 위하여, 소스 데이터의 기본 주소와 시스템 호출의 데이터 길이에 대한 포인터를 갖는 I/O 벡터와 페이지 디렉토리를 포함하는 것을 특징으로 하는 시스템.
  6. 제1항에 있어서,
    상기 마이크로 저널링은 상기 커밋 작업을 통해 상기 파일 시스템에 원자적이고 순서대로 파일 쓰기를 수행하는 것을 특징으로 하는 시스템.
  7. 제1항에 있어서,
    상기 메인 메모리는 STT-MRAM(Spin Transfer Torque Magnetoresistive Random Access Memory), ReRAM(Resistance Random Access Memory), MRAM(Magnetic Random Access Memory) 및 FeRAM(Ferroelectric Random Access Memory) 중 어느 하나로 구현되는 것을 특징으로 하는 시스템
  8. 시스템의 갑작스런 파워 오프 후 재부팅하는 단계;
    상기 재부팅시, 복구 부트로 부팅하는 단계;
    불휘발성 메모리로 구현되는 메인 메모리의 사용자 영역으로 커밋된 데이터를 이용하여 페이지 테이블을 복구하는 단계; 및
    상기 메인 메모리 내 마이크로 저널링 내용을 이용하여, 상기 시스템의 갑작스런 파워 오프 시 중지되었던 파일 쓰기를 재실행하는 단계를 구비하는 것을 특징으로 하는 시스템 복구 방법.
  9. 제8항에 있어서, 상기 마이크로 저널링 내용은
    상기 사용자 영역으로 CPU 캐시의 데이터를 플러싱하는 커밋 작업, 시스템 호출을 통해 파일 쓰기 작업을 수행하는 동안 페이지 단위로 진행되는 체크포인트 작업, 그리고 상기 사용자 영역의 데이터 로그를 포함하는 것을 특징으로 하는 시스템 복구 방법.
  10. 제8항에 있어서, 상기 마이크로 저널링 내용은
    상기 시스템의 갑작스런 파워 오프로 인한 미종료된 파일 쓰기에 대한 소스 데이터의 기본 주소와 시스템 호출의 데이터 길이에 대한 포인터를 갖는 I/O 벡터와 상위 레벨 페이지 테이블을 억세스하는 페이지 디렉토리를 포함하는 것을 특징으로 하는 시스템 복구 방법.
KR1020140002082A 2014-01-07 2014-01-07 불휘발성 메모리 파일 시스템에서의 마이크로 저널링 방법 KR20150082010A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140002082A KR20150082010A (ko) 2014-01-07 2014-01-07 불휘발성 메모리 파일 시스템에서의 마이크로 저널링 방법
US14/466,928 US20150193464A1 (en) 2014-01-07 2014-08-22 Micro-journaling for file system based on non-volatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140002082A KR20150082010A (ko) 2014-01-07 2014-01-07 불휘발성 메모리 파일 시스템에서의 마이크로 저널링 방법

Publications (1)

Publication Number Publication Date
KR20150082010A true KR20150082010A (ko) 2015-07-15

Family

ID=53495354

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140002082A KR20150082010A (ko) 2014-01-07 2014-01-07 불휘발성 메모리 파일 시스템에서의 마이크로 저널링 방법

Country Status (2)

Country Link
US (1) US20150193464A1 (ko)
KR (1) KR20150082010A (ko)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180060552A (ko) 2016-11-29 2018-06-07 성균관대학교산학협력단 비휘발성 메모리에 저장된 메모리 매핑 파일의 원자적 업데이트 방법 및 제어 장치
KR101881039B1 (ko) 2017-01-17 2018-07-23 성균관대학교 산학협력단 비휘발성 메모리에 저장된 메모리 매핑 파일의 비동기식 원자적 업데이트 방법 및 제어 장치
KR20190093475A (ko) * 2018-02-01 2019-08-09 삼성전자주식회사 호스트의 동작 방법, 메모리 모듈의 동작 방법, 및 메모리 시스템의 동작 방법
US10649840B2 (en) 2017-05-19 2020-05-12 SK Hynix Inc. Data storage device performing recovery operation after sudden power-off and operating method thereof
CN111309518A (zh) * 2018-12-12 2020-06-19 爱思开海力士有限公司 存储器系统和存储器系统的操作方法
US10770120B2 (en) 2018-02-09 2020-09-08 SK Hynix Inc. Memory system and operating method of the same
WO2021085717A1 (ko) * 2019-11-01 2021-05-06 연세대학교 산학협력단 비휘발성 메모리를 이용한 로그 구조 병합 트리 기반의 데이터 베이스의 데이터 처리 방법
US20230021492A1 (en) * 2021-07-26 2023-01-26 Advanced Micro Devices, Inc. Approach for supporting memory-centric operations on cached data
US11620084B2 (en) 2020-12-30 2023-04-04 Samsung Electronics Co., Ltd. Storage device including memory controller and operating method of memory controller

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017028309A1 (zh) * 2015-08-20 2017-02-23 华为技术有限公司 文件数据访问方法和计算机系统
US10339101B1 (en) * 2015-09-11 2019-07-02 Cohesity, Inc. Distributed write journals that support fast snapshotting for a distributed file system
US10019193B2 (en) * 2015-11-04 2018-07-10 Hewlett Packard Enterprise Development Lp Checkpointing a journal by virtualization of non-volatile random access memory
KR102547642B1 (ko) 2016-05-18 2023-06-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US10528436B2 (en) * 2016-05-31 2020-01-07 Vmware, Inc. Micro-journal based transaction logging
US10445308B2 (en) 2016-05-31 2019-10-15 Vmware, Inc. Commit coalescing for micro-journal based transaction logging
KR20180044095A (ko) 2016-10-21 2018-05-02 삼성전자주식회사 전자 시스템 및 그것의 동작 방법
CN109803072B (zh) * 2017-11-17 2021-01-22 群光电子股份有限公司 具有电源重置功能的影像撷取装置
US11010259B1 (en) * 2018-02-28 2021-05-18 Veritas Technologies Llc Container-based upgrades for appliances
US10742489B2 (en) * 2018-11-01 2020-08-11 Hewlett Packard Enterprise Development Lp Validating network configuration using shadow databases
US11503027B2 (en) * 2018-11-21 2022-11-15 Hewlett Packard Enterprise Development Lp Validating configuration changes on a network device
US11249979B2 (en) 2018-11-30 2022-02-15 Hewlett Packard Enterprise Development Lp Systems and methods for live, on-device configuration validation
US10872041B2 (en) * 2018-12-05 2020-12-22 Intel Corporation Method and apparatus for journal aware cache management
JP7292872B2 (ja) * 2018-12-25 2023-06-19 キヤノン株式会社 情報処理装置および情報処理装置の制御方法
JP7102455B2 (ja) * 2020-03-26 2022-07-19 株式会社日立製作所 ファイルストレージシステム及びファイルストレージシステムの管理方法
KR20220025401A (ko) * 2020-08-24 2022-03-03 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
CN113050886B (zh) * 2021-02-23 2022-09-20 山东师范大学 面向嵌入式内存数据库的非易失性内存存储方法及系统
CN114124680B (zh) * 2021-09-24 2023-11-17 绿盟科技集团股份有限公司 一种文件访问控制告警日志管理方法及装置
US12019513B2 (en) 2022-04-27 2024-06-25 Micron Technology, Inc. Apparatuses, systems, and methods for per row error scrub information
US12014797B2 (en) 2022-04-27 2024-06-18 Micron Technology, Inc. Apparatuses, systems, and methods for managing metadata storage at a memory
US20230350581A1 (en) * 2022-04-27 2023-11-02 Micron Technology, Inc. Apparatuses, systems, and methods for managing metadata security and access

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6886085B1 (en) * 2000-04-19 2005-04-26 International Business Machines Corporation Method and apparatus for efficient virtual memory management
US9047178B2 (en) * 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
KR101567134B1 (ko) * 2013-03-29 2015-11-09 이화여자대학교 산학협력단 비휘발성 메모리에 기반하여 저널링 기능을 통합한 버퍼 캐시 장치, 저널링 파일 시스템 및 저널링 방법

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180060552A (ko) 2016-11-29 2018-06-07 성균관대학교산학협력단 비휘발성 메모리에 저장된 메모리 매핑 파일의 원자적 업데이트 방법 및 제어 장치
KR101881039B1 (ko) 2017-01-17 2018-07-23 성균관대학교 산학협력단 비휘발성 메모리에 저장된 메모리 매핑 파일의 비동기식 원자적 업데이트 방법 및 제어 장치
US10649840B2 (en) 2017-05-19 2020-05-12 SK Hynix Inc. Data storage device performing recovery operation after sudden power-off and operating method thereof
KR20190093475A (ko) * 2018-02-01 2019-08-09 삼성전자주식회사 호스트의 동작 방법, 메모리 모듈의 동작 방법, 및 메모리 시스템의 동작 방법
US10770120B2 (en) 2018-02-09 2020-09-08 SK Hynix Inc. Memory system and operating method of the same
US11144406B2 (en) 2018-12-12 2021-10-12 SK Hynix Inc. Memory system performing check pointing operation and operating method thereof
CN111309518A (zh) * 2018-12-12 2020-06-19 爱思开海力士有限公司 存储器系统和存储器系统的操作方法
CN111309518B (zh) * 2018-12-12 2023-12-26 爱思开海力士有限公司 存储器系统和存储器系统的操作方法
WO2021085717A1 (ko) * 2019-11-01 2021-05-06 연세대학교 산학협력단 비휘발성 메모리를 이용한 로그 구조 병합 트리 기반의 데이터 베이스의 데이터 처리 방법
KR20210052981A (ko) * 2019-11-01 2021-05-11 연세대학교 산학협력단 비휘발성 메모리를 이용한 로그 구조 병합 트리 기반의 데이터 베이스의 데이터 처리 방법
US11620084B2 (en) 2020-12-30 2023-04-04 Samsung Electronics Co., Ltd. Storage device including memory controller and operating method of memory controller
US20230021492A1 (en) * 2021-07-26 2023-01-26 Advanced Micro Devices, Inc. Approach for supporting memory-centric operations on cached data
US11847061B2 (en) * 2021-07-26 2023-12-19 Advanced Micro Devices, Inc. Approach for supporting memory-centric operations on cached data

Also Published As

Publication number Publication date
US20150193464A1 (en) 2015-07-09

Similar Documents

Publication Publication Date Title
KR20150082010A (ko) 불휘발성 메모리 파일 시스템에서의 마이크로 저널링 방법
KR102168169B1 (ko) 비휘발성 메모리 시스템의 메모리 맵핑 방법 및 이를 제공하는 시스템
US8879301B2 (en) Method and apparatus for controlling state information retention in an apparatus
CN107193756B (zh) 用于标记需要写回持久存储的非事务代码区的开头和结束的指令
TWI375151B (en) A controller for one type of nand flash memory for emulating another type of nand flash memory and methods for the same
US20190087250A1 (en) Methods and devices for healing reset errors in a magnetic memory
KR101953088B1 (ko) 스핀 토크 자기 랜덤 액세스 메모리에 대한 기록 방법
JP6154060B2 (ja) 混載メモリタイプハイブリッドキャッシュ
Chen et al. Fine-grained metadata journaling on NVM
KR20170121798A (ko) 반도체 메모리 장치 및 이의 동작 방법
US20140112082A1 (en) Data storage device, controller, and operating method of data storage device
US9082495B2 (en) Nonvolatile memory module, memory system including nonvolatile memory module, and controlling method of nonvolatile memory module
EP3394724A1 (en) Transaction end plus commit to persistence instructions, processors, methods, and systems
CN110618788A (zh) 响应于意外断电而管理原子写入组到持久存储器的刷新
CN103578533A (zh) 包括可变电阻存储器的存储装置及其操作方法
KR20170134989A (ko) 반도체 메모리 장치 및 이의 동작 방법
Chi et al. Using multi-level cell STT-RAM for fast and energy-efficient local checkpointing
US20140013034A1 (en) Nonvolatile random access memory and data management method
Wang et al. Enabling high-performance LPDDRx-compatible MRAM
Asifuzzaman et al. Enabling a reliable STT-MRAM main memory simulation
WO2020097925A1 (en) Dynamic memory deduplication to increase effective memory capacity
KR20170133072A (ko) 저항성 메모리 장치 및 이를 포함하는 집적 회로
JP7332241B2 (ja) ゼロ電力状態からの低レイテンシブート
US20140122821A1 (en) Computer system having main memory and control method thereof
US20200192675A1 (en) Memristor based multithreading

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination