KR102168169B1 - 비휘발성 메모리 시스템의 메모리 맵핑 방법 및 이를 제공하는 시스템 - Google Patents

비휘발성 메모리 시스템의 메모리 맵핑 방법 및 이를 제공하는 시스템 Download PDF

Info

Publication number
KR102168169B1
KR102168169B1 KR1020140002083A KR20140002083A KR102168169B1 KR 102168169 B1 KR102168169 B1 KR 102168169B1 KR 1020140002083 A KR1020140002083 A KR 1020140002083A KR 20140002083 A KR20140002083 A KR 20140002083A KR 102168169 B1 KR102168169 B1 KR 102168169B1
Authority
KR
South Korea
Prior art keywords
file
memory
mapping
file page
main memory
Prior art date
Application number
KR1020140002083A
Other languages
English (en)
Other versions
KR20150082011A (ko
Inventor
권오성
한환수
임선영
최정식
Original Assignee
삼성전자주식회사
성균관대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사, 성균관대학교 산학협력단 filed Critical 삼성전자주식회사
Priority to KR1020140002083A priority Critical patent/KR102168169B1/ko
Priority to US14/507,833 priority patent/US9501424B2/en
Publication of KR20150082011A publication Critical patent/KR20150082011A/ko
Application granted granted Critical
Publication of KR102168169B1 publication Critical patent/KR102168169B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/305Providing cache or TLB in specific location of a processing system being part of a memory device, e.g. cache DRAM

Abstract

본 발명은 메모리 맵핑 방법에 관한 것으로서, 상세하게는 비휘발성 메인 메모리를 관리하는 비휘발성 메인 메모리의 맵핑 방법이 개시된다. 본 발명의 일실시예에 따른 맵핑 방법은 비휘발성 메인 메모리의 커널영역(Kernel Area)에 저장된 프로세스 동작에 필요한 파일 페이지에 접근하기 위해 시스템콜(System Call)을 수행하는 단계; 및
상기 비휘발성 메인 메모리의 커널영역에 저장되어 있는 파일 페이지의 물리주소(Physical Address)와 비휘발성 메인 메모리의 유저영역(User Area)의 가상주소(Virtual Address)를 맵핑(mapping)하는 단계를 포함하는 것을 특징으로 한다.

Description

비휘발성 메모리 시스템의 메모리 맵핑 방법 및 이를 제공하는 시스템{MAPPING METHODS OF NON-VOLATILE MEMORY SYSTEM AND SYSTEM FOR PROVIDING THE SAME}
본 발명은 메모리 맵핑 방법에 관한 것으로서, 상세하게는 비휘발성 메모리 시스템의 메모리 맵핑 방법 및 이를 제공하는 시스템에 관한 것이다.
비휘발성 메인 메모리는 전원이 차단되어도 저장하고 있는 데이터를 유지하는 메인 메모리의 종류를 말한다. 비휘발성 메인 메모리로서 플래시(flash) 메모리는 전기적으로 데이터를 기록하거나 삭제가 가능한 메모리이고, NAND 플래시 메모리는 플래시 메모리의 일예이다. 이와 같은 비휘발성 메모리 소자의 연구개발이 진행되고 있으며 STTM-RAM등 DRAM과 비슷한 성능의 소자들이 연구됨에 따라 메인메모리도 비휘발성 특성을 가질 수 있는 가능성이 점점 커지고 있다.
그 동안의 파일시스템의 성능을 위한 최적화는 파일시스템이 2차 저장장치에 유지 된다는 가정 하에 진행되어 왔다. 따라서 기존과 다른 형태인 비휘발성 메인 메모리 기반의 파일시스템에서는 새로운 최적화 연구가 필요하다.
본 발명은 비휘발성 메인 메모리 시스템을 위한 운영체제의 메모리 관리 방법에 관한 것으로서, 응용 프로그램이 메모리 맵핑을 통해 보다 빠르게 파일에 접근할 수 있는 메모리 맵핑 방법을 제공하는 것을 목적으로 한다.
본 발명의 일 실시예에 따른 비휘발성 메모리 맵핑 방법은, 비휘발성 메인 메모리의 커널 영역(Kernel Area)에 저장된 프로세스 동작에 필요한 파일 페이지에 접근하기 위해 시스템콜(System Call)을 수행하는 단계 및 상기 비휘발성 메인 메모리의 커널영역에 저장되어 있는 파일 페이지의 물리주소(Physical Address)와 비휘발성 메인 메모리의 유저영역(User Area)의 가상주소(Virtual Address)를 맵핑(mapping)하는 단계를 포함하는 것을 특징으로 한다.
바람직하게는, 상기 시스템콜(System Call)은 리드/라이트(Read/Write) 시스템 콜에 해당하고, 상기 맵핑하는 단계는, 상기 유저영역의 한 공간인 라이브러리 버퍼의 가상주소와 상기 파일 페이지의 물리주소를 맵핑시키는 단계를 포함하고, 상기 맵핑을 통하여 접근한 파일 페이지를 상기 유저영역의 한 공간인 유저버퍼에 복사하는 단계를 더 구비하는 것을 특징으로 한다.
바람직하게는, 상기 맵핑(mapping)하는 단계는, 상기 비휘발성 메인 메모리에 저장된 파일 페이지에 순차 접근(Sequential access)명령이 발생하면, 맵핑될 파일 페이지의 사이즈를 증가시키는 것을 특징으로 한다.
바람직하게는, 상기 맵핑(mapping)하는 단계는 비휘발성 메인 메모리에 저장된 파일 페이지에 임의 접근(Random access) 명령이 발생하면, 맵핑될 파일 페이지의 사이즈를 초기화시키는 것을 특징으로 한다.
바람직하게는, 2차 저장장치에 구비되는 스왑 장치(Swap Device)에서, 맵핑에 필요한 파일 페이지를 비휘발성 메인 메모리의 커널영역(Kernel)의 한 공간으로 파퓰레이트(Populate) 시키는 단계를 더 구비하는 것을 특징으로 한다.
바람직하게는, 상기 파퓰레이트 시키는 단계는 프로세스 동작에 있어서 필요한 파일 페이지 오프셋(offset)을 검출하는 단계, 검출한 파일의 오프셋을 기반으로 비휘발성 메인 메모리의 커널영역의 한 공간에 우선적으로 파퓰레이트가 필요한 파일 페이지를 선별하는 단계 및 우선적으로 필요한 파일 페이지를 선택적 파퓰레이트를 시키는 단계를 구비하는 것을 특징으로 한다.
바람직하게는, 상기 필요한 파일 페이지를 선별하는 단계는 검출한 파일의 오프셋을 기반으로 비휘발성 메인 메모리의 커널영역의 한 공간에 차순위로 파퓰레이트가 필요한 파일 페이지를 선별하는 단계를 더 구비하고,
차순위로 필요한 파일 페이지를 상기 선택적 파퓰레이트와 시키는 것과는 비동기적으로 파퓰레이트를 시키는 단계를 구비하는 것을 특징으로 한다.
또한 바람직하게는, 프로세서가 갱신된 맵핑 테이블 정보를 비휘발성 메모리 시스템으로부터 수신하는 단계 및 프로세서가 TLB(Translation Lookaside Buffer)내의 맵핑 테이블을 상기 갱신된 맵핑 테이블 정보를 기반으로 갱신하는 단계를 더 구비하는 것을 특징으로 한다.
또한 바람직하게는, 상기 맵핑(mapping)하는 단계는, 상기 비휘발성 메인 메모리 상의 가상영역을 할당하기 전, 가상영역의 특성을 검출하는 단계, 검출된 특성을 기반으로 이미 할당된 가상영역의 재활용 여부를 판단하는 단계 및 가상영역의 재활용이 가능한 경우, 가상영역에 프로세스 또는 파일 시스템의 메모리 가상주소(Virtual Address)를 저장하는 단계를 구비하는 것을 특징으로 한다.
또한 바람직하게는, 상기 맵핑(mapping)하는 단계는 파일 쓰기(Write)단계에서 파일의 오프셋(offset)을 검출하는 단계, 파일 오프셋(offset)의 검출결과를 기반으로 새로운 메모리 가상영역을 할당여부를 판단하는 단계 및 새로운 메모리 가상영역을 할당하여 새로 쓰여진 파일부분과 맵핑시켜주는 단계를 구비하는 것을 특징으로 한다.
또한 바람직하게는, 시스템은 비휘발성 메모리의 커널 영역(Kernel Area)에 파일 시스템을 포함하는 비휘발성 메인 메모리, 메모리가 페이지 단위로 저장되어 있는 스왑 장치(Swap Device)를 포함하는 2차 저장 장치(Secondary Memory Device) 및 프로세스 동작에 필요한 파일 페이지의 파퓰레이트(Populate)를 제어하는 파퓰레이트 컨트롤러(Populate Controller)를 포함하는 프로세서;를 포함하는 것을 특징으로 한다.
또한 바람직하게는, 상기 비휘발성 메인 메모리는 STT-MRAM(Spin Transfer Torque Magnetoresistive Random Access Memory), ReRAM(Resistance Random Access Memory), MRAM(Magnetic Random Access Memory) 및 FeRAM(Ferroelectric Random Access Memory) 중 어느 하나로 구현되는 것을 특징으로 한다.
또한 바람직하게는, 상기 2차 저장 장치는 STT-MRAM(Spin Transfer Torque Magnetoresistive Random Access Memory), ReRAM(Resistance Random Access Memory), MRAM(Magnetic Random Access Memory) 및 FeRAM(Ferroelectric Random Access Memory) 중 어느 하나로 구현되는 것을 특징으로 한다.
또한 바람직하게는, 상기 파퓰레이트 제어부는 프로그램의 동작에 필요한 파일의 오프셋을 검출하여 오프셋이 선순위인 파일 페이지를 선택적 파퓰레이트 시키는 것을 특징으로 한다.
또한 바람직하게는, 상기 파퓰레이트 제어부는 프로그램의 동작에 필요한 파일의 오프셋을 검출하여 오프셋이 차순위인 파일 페이지를 상기 선택적 파퓰레이트와 비동기적 파퓰레이트 되도록 제어하는 것을 특징으로 한다.
상술한 바와 같은 본 발명에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 방법 및 이를 제공하는 시스템에 따르면,
비휘발성 메인 메모리를 구비하는 메모리 시스템에 최적화된 맵핑 방법을 이용하여 더 나은 시스템 속도를 얻을 수 있고, 필요한 파일 페이지를 파퓰레이트 시키므로써 결과적으로 프로그램 실행을 위해 필요한 파일 페이지 접근 속도가 더 빨라질 수 있다.
또한, 파일 페이지를 유저 버퍼로 복사해야하는 중복적인 복사를 줄일 수 있어 메모리 관리의 효율성을 증대시키는 효과가 있다.
본 발명의 일실시예를 통하여, 가상영역의 삭제와 할당, 재배치의 오버헤드를 줄임으로서, 메모리 시스템의 반응속도가 빨라지는 효과가 있다.
다른 실시예를 통하여, 맵핑 단계에서 파일 Append가 가능해지므로서, 파일을 추가하고 다시 맵핑하는 시간을 축소함에 따라 메모리 시스템의 반응속도가 빨라지는 효과가 있다. 또한 다른 실시예를 통하여, 시스템 콜의 횟수를 줄이면서 라이브러리에 가해지는 오버로드를 줄여, 메모리 시스템의 성능을 향상 시킬 수 있을 것이다.
도 1은, 본 발명의 일실시예에 따른 시스템을 나타내는 블록도이다.
도 2는 도 1의 메모리 시스템이 포함하는 비휘발성 메모리 컨트롤러를 구체적으로 나타낸 블록도이다.
도 3은 도 1의 프로세서의 구현예를 구체적으로 나타낸 블록도이다
도 4는 도 2의 파퓰레이트 제어부의 구현예를 나타낸 블록도이다.
도 5는 도 1의 비휘발성 메인 메모리와 2차 저장 장치를 구체적으로 나타낸 블록도이다.
도 6에 도시된 바와 같이 파퓰레이트 과정과 맵핑과정을 구체적으로 나타낸 것이다.
도 7은 본 발명의 일 실시예에 따른 비동기적 파퓰레이트를 나타낸 블록도이다.
도 8은 메인 메모리내의 맵핑 방법을 구체적으로 나타낸 일실시예이다.
도 9은 도5에 도시된 스왑 장치를 다른 실시예에 따라 비휘발성 메인 메모리로 구성한 일 구현예를 나타낸 블록도이다.
도 10은 본 발명의 일실시예에 따른 TLB 관리부를 구체적으로 도시한 블록도이다.
도 11은 본 발명의 일실시예에 따른 맵핑 및 파퓰레이트 방법을 나타내는 플로우차트이다.
도 12 는 본 발명의 일실시예에 따른 TLB의 업데이트 방법을 나타내는 플로우 차트이다.
도 13은 본 발명의 일실시예에 따른 가상영역을 재활용하는 방법을 나타내는 플로우차트이다.
도14는 본 발명의 일실시예에 따른 파일 Append를 하는 방법을 나타내는 플로우차트이다.
도 15은 본 발명의 일실시예로서 파일 페이지의 맵핑크기를 증대시키는 맵핑방법을 나타내는 도면이다.
도 16는 본 발명의 일실시예에 따른 비휘발성 메모리 시스템을 장착하는 컴퓨팅 시스템을 나타내는 블록도이다.
도 17은 본 발명의 다양한 실시예들에 따른 MRAM을 설명하는 제1 예의 도면이다.
도 18은 도 17의 메모리 뱅크내 메모리 셀 어레이를 설명하는 도면이다.
도 19는 도 18의 STT-MRAM 셀의 구현 예를 나타내는 입체도이다.
도 20a 및 도 20b는 도 19의 MTJ 소자의 기입된 데이터에 따른 자화 방향을 나타내는 블록도이다.
도 21는 도 19의 STT-MRAM 셀의 라이트 동작을 나타내는 블록도이다.
도 22a 및 도 22b는 도 19의 STT-MRAM셀에서 MTJ 소자의 다른 실시 예들을 설명하는 도면이다.
도 23은 도 19의 STT-MRAM 셀에서 MTJ 소자의 다른 실시 예를 설명하는 도면이다.
도 24a 및 도 24b는 도 19의 STT-MRAM 셀에서 MTJ 소자의 다른 실시 예를 나타내는 도면이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다. 본 발명의 실시예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
또한, 제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 벗어나지 않으면서, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도1은, 본 발명의 일실시예에 따른 시스템(10)을 나타내는 블록도이다.
도 1을 참조하면, 시스템(10)은 프로세서(Processor, 200), 메모리 시스템(11), 그리고 2차 저장 장치(400)를 포함한다. 시스템(10)은 컴퓨터와 같은 단말에 포함될 수 있다. 또한, 시스템(10)은 휴대폰 (Mobile Phone), 스마트 폰 (Smart Phone), 개인 정보 단말기 (Personal Digital Assistant; PDA), 휴대형 멀티미디어 플레이어 (Portable Multimedia Player; PMP), 디지털 카메라 (Digital Camera), 음악재생기 (Music Player), 휴대용 게임 콘솔 (Portable Game Console), 네비게이션 (Navigation) 시스템 등과 같은 임의의 모바일 시스템일 수 있다.
메모리 시스템(11)은 비휘발성 메모리 컨트롤러(100)와 하나 이상의 비휘발성 메인 메모리(300)를 포함한다. 비휘발성 메인 메모리(300)는 NAND 메모리 칩 또는 NOR 메모리 칩과 같이 반도체 플래시 메인 메모리가 될 수 있다. 또한, 비휘발성 메인 메모리(300)는 MRAM(Magnetic Random Access Memory), RRAM(Resistance RAM), FRAM(Ferroelectric RAM), PCM(Phase Change Memory) 또는 STT-MRAM(Spin-Transper Torque MRAM) 등이 될 수 있다. 비휘발성 메인 메모리는 메인 메모리로서 동작할 수 있다.
비휘발성 메모리 컨트롤러(100)는 프로세서 채널을 통해서 프로세서(200)와 통신하여, 커맨드 및 어드레스를 수신하고 데이터를 송수신할 수 있다. 메모리 시스템(11)은 프로세서(200)로부터 프로세서 칩 인에이블 신호를 수신할 수 있고, 프로세서 칩 인에이블 신호가 활성 상태에 유지될 때, 프로세서 채널에 응답할 수 있다.
비휘발성 메인 메모리(300)는 하나 이상의 비휘발성 메모리를 포함할 수 있으며, 메모리 활용 효율성을 높이기 위한 비휘발성 메모리의 가상공간은 유저 영역(User Area)과 커널 영역(Kernel Area)으로 나뉘어져 있다. 또한 비휘발성 메모리의 특성상 전원이 꺼져도 메모리의 데이터가 지워지지 않는 특징을 가질 수 있다. 따라서 비휘발성 메모리의 커널 영역에는 여러 개의 메모리 공간이 존재하며, 일예로서 페이지 캐쉬(Page cache)가 존재할 수 있다. 상기 커널 영역의 메모리 공간에는 메모리 기반 파일 시스템이 상주할 수 있다.
상기 커널영역에는 프로세서(200)가 프로그램 등을 실행하기 위하여 요구하는 파일 페이지, 파일 시스템 등을 적재할 수 있으며, 비휘발성 메모리의 특성상 전원이 꺼져도 메모리가 지워지지 않는 특징을 가질 수 있다.
비휘발성 메인 메모리에 저장된 데이터는 물리주소를 가지게 되고 프로세스 등이 가지는 가상영역의 가상주소와 맵핑될 수 있다.
이로서 컴퓨팅 시스템를 오프(Off)한 후 다시 켠(ON) 경우에도 비휘발성 메인 메모리에 저장된 데이터는 지워지지 않아 2차 저장 장치(400)에서 데이터를 메모리에 적재하지 않아도 되어 프로세서(200)가 데이터에 접근할 수 있는 속도가 빨라질 수 있다.
비휘발성 메인 메모리(300)는 프로세서(200)에 의해 실행되는 코드가 복사될 뿐만 아니라, 명령 수행에 의해 처리되는 데이터도 저장될 수 있다. 비휘발성 메인 메모리(300)는 복수의 소프트웨어 또는 펌웨어를 구동할 수 있다. 예를 들어, 비휘발성 메인 메모리(300)는 운영 체제 (Operating System: OS), 어플리케이션 (Application), 파일 시스템 (File System), 메모리 관리자 (Memory Manager), 그리고 입출력 드라이버 (I/O drivers) 등을 구동할 수 있다.
메모리 내 파일 시스템(In-memory file system)은 파일의 데이터 저장 단위로 페이지를 사용한다. 신뢰성을 위하여, 페이지는 파일 라이트의 원자성(atomicity)과 일관성(consistency)을 보장하기 위한 기본 단위로 사용된다.
2차 저장 장치(400)는 하드디스크(Hard Disk Drive: HDD)일 수 있으며, 플래쉬 메모리를 기반으로 하는 데이터 저장 장치일 수 있다. 2차 저장 장치(400)는 플레쉬 메모리 기반으로 하는 데이터 저장 장치인 경우, 플래쉬 메모리, 컨트롤러, 그리고 버퍼 메모리를 포함할 수 있다. 2차 저장 장치(400)는 메모리 카드 장치, SSD (Solid State Device) 장치, ATA (Advanced Technology Attachment) 버스 장치, SATA (Serial Advanced Technology Attachment) 버스 장치, 멀티미디어 카드 장치, SD (Secure Digital) 장치, 메모리 스틱 장치, 하이브리드 드라이브 장치, 또는 범용 직렬 버스 플래쉬 장치일 수 있다.
플래쉬 메모리는 어드레스 또는 데이터 버스를 통해 컨트롤러와 연결될 수 있다. 플래쉬 메모리는 데이터 영역과 메타 영역으로 구분될 수 있다. 데이터 영역에는 일반적인 사용자 데이터 또는 메인 데이터가 저장되고, 메타 영역에는 사용자 데이터 외에 플래쉬 메모리 또는 2차 저장 장치(400)의 구동에 필요한 메타 데이터 (예를 들면, 플래쉬 변환 계층 (Flash Transition Layer: FTL)에 의한 맵핑 정보)가 저장될 수 있다.
컨트롤러는 어드레스 또는 데이터 버스를 통해 플래쉬 메모리 또는 버퍼 메모리와 데이터를 주고 받을 수 있다. 컨트롤러는 플래쉬 변환 계층 및 페이지 맵 테이블을 포함하는 맵핑 관리자와 맵핑 관리자를 구동하는 데 사용되는 로컬 메모리를 포함할 수 있다. 플래쉬 변환 계층은 플래쉬 메모리를 효율적으로 사용하도록 한다. 플래쉬 변환 계층은 프로세서(200)에서 제공한 논리적 어드레스(logical address)를 플래쉬 메모리에서 사용 가능한 물리적 어드레스(physical address)로 변환하는 역할을 한다.
플래쉬 변환 계층은 이러한 어드레스 변환을 맵 테이블 (map table)을 통해 관리한다. 맵 테이블은 논리적 어드레스 및 이에 대응하는 물리적 어드레스가 표시되어 있다. 맵 테이블은 맵핑 단위에 따라 그 크기가 달라질 수 있으며, 다양한 맵핑 방법을 가질 수 있다. 페이지 맵 테이블은 페이지 단위로 맵 테이블을 만들고, 논리적 어드레스 번호 (Logical Address Number: LAN)를 물리적 페이지 번호(Physical Page Number: PPN)로 변환한다.
2차 저장 장치(400) 중 적어도 하나는 스왑 장치(Swap Device)를 포함할 수 있다. 스왑 장치(Swap Device)는 메인 메모리의 공간 확보를 위해 현재 사용되지 않는 페이지를 스왑하기 위한 장치일 수 있으며, 데이터가 페이지 단위로 저장되어 있을 수 있다. 이 때, 데이터가 페이지 단위로 저장되어 있는 것을 파일 페이지라고 명명할 수 있다.
이와 함께, 본 발명의 실시예에 따라 프로세서(200)는 시스템(10)의 전반적인 동작을 제어한다. 프로세서(200)는 비휘발성 메인 메모리(300)에 복사되어 있는 코드(code)를 실행(execute)하여, 코드에 대응하는 명령을 수행할 수 있다. 프로세서(200)는 특정 계산들 또는 태스크들과 같은 다양한 컴퓨팅 기능들을 실행할 수 있다. 실시예들에 따라, 프로세서(200)는 하나의 프로세서 코어 (Single Core)를 포함하거나, 복수의 프로세서 코어들 (Multi-Core)을 포함할 수 있다. 예를 들어, 프로세서(200)는 듀얼 코어 (Dual-Core), 쿼드 코어 (Quad-Core), 헥사 코드 (Hexa-Core) 등을 포함할 수 있다. 또한 실시예에 따라, 프로세서(200)는 내부 또는 외부에 위치한 캐시 메모리 (Cache Memory)를 더 포함할 수 있다.
또한, 프로세서(200)는 파퓰레이트(Populate)를 관장하기 위한 파퓰레이트 제어부(Populate Control Unit), 프로세서가 파일 페이지로의 빠른 접근을 할 수 있도록 하는 역할을 하는 TLB(Translation Lookaside Buffer)를 관리하는 TLB 관리부(TLB Management Unit), 파일의 오프셋을 검출하는 파일 오프셋 검출부(File offset Detecting Unit) 및 메모리상의 데이터의 맵핑을 관장하는 맵핑 제어부(Mapping Control Unit)를 더 포함할 수 있다. 파퓰레이트 제어부는 2차 저장 장치(400)에 파퓰레이트 신호를 송신하여 2차 저장 장치에 저장된 우선적 파퓰레이트가 필요한 파일 페이지를 페이지 캐쉬로 파퓰레이트 시키는 것을 제어할 수 있다. 또한 TLB관리부는 비휘발성 메인 메모리(300)에 저장된 맵핑 테이블(Mapping table)을 기반으로 TLB의 맵핑 테이블을 업데이트 시켜 TLB의 맵핑 테이블에 원하는 주소값이 없을 때 발생하는 TLB miss를 줄일 수 있어, 컴퓨팅 시스템의 반응속도를 높이도록 할 수 있다.
운영 체제 (OS)는 시스템(10)의 소프트웨어 또는 하드웨어 자원 (resource)을 제어할 수 있고, 프로세서(200)에 의한 프로그램 실행을 제어할 수 있다. 어플리케이션은 시스템(10)에서 실행되는 다양한 응용 프로그램들을 의미한다. 파일 시스템은 파일 또는 데이터를 비휘발성 메인 메모리(300) 또는 2차 저장 장치(400)와 같은 저장 영역에 저장하는 경우에 이를 조직화할 수 있다. 파일 시스템은 쓰기 또는 읽기 명령에 따른 어드레스 정보를 2차 저장 장치(400)로 제공할 수 있다. 파일 시스템은 시스템(10)에서 실행되는 특정한 운영 체제에 따라 사용될 수 있다. 메모리 관리자는 비휘발성 메인 메모리(300)에서 수행되는 메모리 억세스 동작 또는 2차 저장 장치(400)에서 수행되는 메모리 억세스 동작을 제어할 수 있다. 입출력 드라이버는 시스템(10)과 다양한 주변 장치들, 또는 네트워크 (예를 들면, 인터넷) 사이의 정보 전달을 수행할 수 있다.
비휘발성 메인 메모리(300)는 비휘발성 메모리를 이용하여 구현될 수 있다. 비휘발성 메모리들 중 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)의 비휘발성 특성을 모두 갖는 메모리다.
비휘발성 메인 메모리(300)는 STT-MRAM을 이용하여 구현될 수 있다. 실시예들에 따라, 비휘발성 메인 메모리(300)는 ReRAM (Resistance Random Access Memory), MRAM (Magnetic Random Access Memory), FeRAM (Ferroelectric Random Access Memory) 또는 이와 유사한 메모리로 구현될 수 있다.
도 2는 도 1의 메모리 시스템이 포함하는 비휘발성 메모리 컨트롤러(100)를 구체적으로 나타낸 블록도이다. 도2에 도시된 바와 같이, 본 발명의 일실시예에 따른 메모리 컨트롤러(100)는 버퍼 메모리(Buffer memory,110), 읽기/쓰기 제어부(Read/Write Controller,120), 메모리 제어부(Memory Control Unit,130) 프로세서 인터페이스(Processor I/F,140), 비휘발성 메인 메모리 인터페이스(NVM I/F,150)를 포함할 수 있다.
버퍼 메모리(110)는 메모리 제어부(130)의 동작 메모리로서 사용될 수 있다. 또한 버퍼 메모리(110)는 프로세서(200)로부터 요청되어 비휘발성 메인 메모리(300)에 프로그램이 요청하는 데이터들을 저장할 수 있다. 버퍼 메모리(110)는 DRAM 또는 SRAM으로 구현될 수 있다.
읽기/쓰기 제어부(120)은 프로세서(200)에 의해 제어되는 맵핑 테이블에 따라, 논리적 어드레스에 대응하는 물리적 어드레스에 해당하는 메모리에 데이터를 기록 및 독출하는 역할을 할 수 있다.
메모리 제어부(130)는 버스(180)를 통해서 버퍼 메모리(110), 읽기/쓰기 제어부 (120), 프로세서 인터페이스(140), 비휘발성 메인 메모리 인터페이스(150) 사이에서 데이터의 교환을 제어할 수 있다.
또한, 본 발명의 일실시예로서 프로세서(200)에서의 파퓰레이트 관련 신호, 맵핑 명령 관련 신호 및 TLB 업데이트 관련 신호를 메모리 제어부(130)에서 제어하여 비휘발성 메모리의 원활한 데이터 교환을 할 수 있다.
프로세서 인터페이스(140)는 메모리 시스템(11)에 접속된 프로세서(200)의 프로토콜에 따라 상기 프로세서(200)와 비휘발성 메모리 컨트롤러(100) 사이에서 데이터의 교환을 인터페이스 할 수 있다.
비휘발성 메모리 인터페이스(150)는 비휘발성 메인 메모리(300)와 비휘발성 메모리 컨트롤러(100) 사이에서 데이터의 교환을 인터페이스 할 수 있다.
도 3은 도1의 프로세서(200) 의 구현예를 나타낸 블록도이다.
이를 참조하면, 프로세서(200)는 파일 오프셋 검출부(File Offset Detecting Unit, 210)와 파퓰레이트 제어부(Populate Control Unit, 220), TLB 관리부(Translation Lookaside Buffer Management Unit, 230), 맵핑 제어부(Mapping Control Unit, 240)을 포함할 수 있다.
파일 오프셋 검출부(210)는 프로세서(200)가 접근을 원하는 파일 시스템, 또는 파일 페이지등의 오프셋을 검출하는 것으로, 파일 오프셋은 파일의 결과주소가 다른 지점의 상대적인 위치가 되는 것으로 두번째 주소를 만들기 위해 기준이 되는 주소에 더해진 값을 의미하는 것으로 파일간의 순서를 판단할 수 있는 잣대가 될 수 있다.
파일 오프셋을 검출한 데이터는 프로세서 내의 버스(250)을 통하여 파퓰레이트 제어부(220), 맵핑 제어부(240)로 전송될 수 있다.
파퓰레이트 제어부(220)는 파일 오프셋 검출부(210)에서의 파일 오프셋 데이터 수신하여 이를 기반으로 파일 시스템 등과 같은 프로그램이 동작하기 위하여 필요한 파일 페이지를 판단할 수있다. 파일 오프셋 검출 정보를 기반으로 프로세스 동작에 우선적으로 필요한 파일 페이지, 차순위로 필요한 파일 페이지를 선택할 수 있으며, 이 선택된 파일 페이지들을 2차 저장 장치(400)로부터 비휘발성 메인 메모리의 커널 영역(Kernel area)의 한 공간으로 파퓰레이트 하기 위하여, 2차 저장 장치(400)에 선택적 파퓰레이트 신호를 송신하여 2차 저장 장치에 저장된 우선적으로 파퓰레이트가 필요한 파일 페이지를 비휘발성 메인 메모리의 커널 영역(Kernel area)의 한 공간으로 파퓰레이트 시키는 것을 제어할 수 있다. 또한, 비동기적 파퓰레이트 신호를 송신하여 선택적 파퓰레이트 신호와는 별도로 2차 저장 장치에 차순위로 파퓰레이트가 필요한 파일 페이지를 비휘발성 메인 메모리의 커널 영역(Kernel area)의 한 공간으로 파퓰레이트 시키는 것을 제어할 수 있다.
도3의 TLB 관리부(230)와 관련하여, TLB(Translation Lookaside Buffer)는 메모리 시스템상에서 프로세서가 원하는 실제 메모리에 빠르게 접근하기 위하여 자주 사용되는 파일 페이지(데이터)의 가상주소, 여기에 맵핑된 물리주소의 엔트리를 저장해놓는 버퍼에 해당될 수 있다.
프로세서가 mmap과 같은 시스템 콜에 의하여 특정 프로세스 공간에 반복적인 맵핑을 실행하면 해당 가상 주소에 대한 물리주소가 계속 바뀌기 때문에 TLB 상의 가상주소와 맵핑된 물리주소에는 원하는 파일 페이지가 존재하지 않아 새로 맵핑한 페이지에 접근할 때마다 TLB miss가 발생할 수 있다.
이에, 발명의 일실시예에 따라 TLB 관리부(230)는 프로세서가 맵핑을 명령하여, 파일 페이지의 가상 주소에 대한 물리주소가 바뀐 경우에 이에 대한 정보를 메인 메모리내의 맵핑 테이블로부터 갱신된 맵핑 정보를 수신하여, 이를 기반으로 자주 사용되는 파일 페이지의 가상주소, 여기에 맵핑된 물리주소의 엔트리를 업데이트하여 TLB에 저장해놓을 수 있다.
이를 통하여 발생하는 TLB miss를 줄여, 프로세서의 파일 페이지(데이터)의 접근 속도를 빠르게 할 수 있다.
맵핑 제어부(240)과 관련하여, 향후 자세하게 후술하겠지만 기존 메모리 맵핑 기법은 제한적인 메모리 공간의 효율성을 위해 demand paging 기법을 사용하여 구현되었다. 따라서 실제로 페이지에 접근이 발생해야지만 페이지 폴트 핸들러에 의해서 필요한 페이지를 비휘발성 메인 메모리에 적재하고 접근을 요청한 프로세스의 페이지 테이블을 업데이트할 수 있었다. 하지만 파일 시스템 또는 파일 페이지 등이 비휘발성 메인 메모리에 상주하게 된다면 항상 demand paging 기법을 사용할 필요가 없게 된다. 따라서 맵핑 제어부(240)는 비휘발성 메인 메모리를 구비하면서 효율적인 맵핑 방법을 제어하는 역할을 하게 된다.
발명의 일예로서, 도 7의 비휘발성 메인 메모리의 커널 영역(Kernel area)에 적재된 파일 페이지를 메인 메모리의 유저 영역(User area)과 맵핑 방법, 도 13의 맵핑을 위한 가상영역을 재활용하여 맵핑 방법, 도 14의 파일 페이지를 추가(Append)하여 맵핑 방법, 도 15의 맵핑 대상의 되는 파일 페이지의 크기를 순차 접근 신호에 따라 배로 늘리고, 임의 접근 신호에 따라 크기를 초기화 하는 맵핑 방법을 상기 맵핑 제어부(240)에서 비휘발성 메모리 컨트롤러(100)에 맵핑 명령 신호를 송신하여 제어할 수 있다.
따라서, 비휘발성 메인 메모리를 구비하는 메모리 시스템에 최적화된 맵핑 방법을 이용하여 더 나은 시스템 속도를 얻을 수 있을 것이다.
도4는 도2의 파퓰레이트 제어부(220)의 구현예를 나타낸 블록도이다.
이를 참조하면, 파퓰레이트 제어부(220)는 파퓰레이트 대상 선택부(Populate File page Selecting Unit, 221)와 선택적 파퓰레이트 제어부(222), 비동기적 파퓰레이트 제어부(Asynchronous Popultae Control Unit, 223)을 더 포함할 수 있다. 이에, 프로세서 내의 파일 오프셋 검출부(210)는 프로세서가 접근을 원하는 파일의 오프셋을 검출하고, 파일 오프셋 정보를 파퓰레이트 대상 선택부(221)에 송신할 수 있다.
다만, 파일 오프셋 검출부(210)는 파퓰레이트 제어부(220) 밖에 존재하는 것으로 한정하는 것이 아니고, 파퓰레이트 제어부(220)에 포함될 수 있을 것이다.
파퓰레이트 대상 선택부(221)는 파일의 오프셋 검출 정보를 수신할 수 있다. 수신한 오프셋 검출 정보를 기반으로 파퓰레이트 대상 선택부(221)는 파일 오프셋 검출 정보을 기준으로 프로그램에서 먼저 실행되어야 할 파일 페이지를 판단할 수 있다. 프로그램에서 먼저 실행되어야할 파일 페이지의 기준은 파일 오프셋이 내림차순 또는 올림차순이 될 수 있다.
더 나아가, 상기한 방법과 유사하게 파일 오프셋을 기준으로 차순위로 파퓰레이트가 필요한 파일 페이지를 판단할 수 있으며, 결과적으로 우선적 또는 차순위로 비휘발성 메인 메모리의 커널 영역(Kernel area)의 한 공간으로 파퓰레이트(populate)시킬 파일 페이지를 선택할 수 있게 된다.
이에 우선적으로 파퓰레이트 대상이 되는 파일 페이지의 정보 신호를 선택적 파퓰레이트 제어부(222)가 수신할 수 있으며, 이를 바탕으로 2차 저장 장치로 선택된 파일 페이지를 파퓰레이트 하라는 선택적 파퓰레이트 신호를 선택적 파퓰레이트 제어부(222)가 송신할 수 있다.
또한, 차순위 파퓰레이트 대상이 되는 파일 페이지 정보 신호를 비동기적 파퓰레이트 제어부(223)가 수신할 수 있으며, 이를 바탕으로 2차 저장 장치로 차순위 파퓰레이트 대상 파일 페이지를 파퓰레이트 하라는 비동기적 파퓰레이트 신호를 비동기적 파퓰레이트 제어부(223)가 송신할 수 있다. 이 때 비동기적 파퓰레이트 신호는 상기 선택적 파퓰레이트 신호와는 비동기적으로 보내지는 것으로, 즉, 선택적 파퓰레이트와는 별개로 이루어질 수 있으며, 미리 다음에 필요한 파일 페이지를 파퓰레이트 시키므로써 더 빠른 컴퓨팅 시스템 속도를 얻을 수 있을 것이다.
다만, 이는 발명의 일실시예로서 비동기적 파퓰레이트 신호도 선택적 파퓰레이트 신호와 동기적으로 보내질 수 있음은 물론이다.
또한, 도시된 바와 같이 선택적 파퓰레이트 제어부(222)와 비동기적 파퓰레이트 제어부(223)로 두 가지로 나눠져있으나, 선택적 파퓰레이트 제어부(222)와 비동기적 파퓰레이트 제어부(223)는 운영체제에 의하여 관장되는 소프트웨어적 특징을 가진바, 하나의 블록으로서 나타낼 수 있다.
도5는 도1의 비휘발성 메인 메모리(300)와 2차 저장 장치(400)를 구체적으로 나타낸 블록도이다.
도5에 도시된 바와 같이, 본 발명의 일실시예에 따른 비휘발성 메인 메모리(300)은 하나 이상의 비휘발성 메모리로 구성되어 있을 수 있다. 각 비휘발성 메모리는 유저 영역(User area)(310)과 커널 영역(Kernel area)(320)으로 구분될 수 있다.
유저 영역(User area)(310)과 커널 영역(320) 은 접근시에 허용도가 다른 것이로, 유저 영역(User area)(310)은 사용자가 제한없이 접근할 수 있으며, 커널 영역(320)은 접근을 위하여 프로세서 내의 운영체제에서 시스템 콜을 해야하는 등의 제한이 있을 수 있다.
유저 영역(User area, 310)은 사용자가 애플리케이션을 통하여 제한없이 접근할 수 있는 메모리의 한 공간으로서 유저 버퍼(User Buffer,315) 및 라이브러리 버퍼(Library Buffer,314)를 더 포함할 수 있다.
커널 영역(Kernel area,320)은 메모리의 한 공간으로서 페이지 캐쉬(Page cache,325)를 더 포함할 수 있다.
또한, 일실시예로 2차 저장 장치(400)는 메인 메모리의 공간 확보를 위해 현재 사용되지 않는 파일 페이지를 스왑하기 위한 장치로서 하나 이상의 스왑 장치(Swap Device,410)를 더 포함할 수 있다.
2차 저장 장치(400) 내의 스왑 장치(410)에서 메인 메모리의 커널 영역(Kernel area), 즉 일실시예로서 커널 영역(Kernel area)의 다수의 공간 중 하나에 해당하는 페이지 캐쉬(325)를 기준으로 설시하되, 다만 이는 일실시예로 페이지 캐쉬(325)라는 공간에 제한 해석되지 않는다.
파퓰레이트 제어부는 페이지 캐쉬(325)에 적재되어있지 않은 파일 페이지 중에서 우선적으로 적재되어야 할 것을 선택한 후, 스왑 장치(410)에 선택적 파퓰레이트 신호를 송신할 수 있다. 선택적 파퓰레이트 신호를 수신한 스왑 장치(410)는 페이지 캐쉬(325)로 선택된 파일 페이지들을 선택적 파퓰레이트를 시키게 할 수 있다.
더 나아가, 차순위로 적재되어야 할 파일 페이지를 파퓰레이트 제어부에서 판단하여, 스왑 장치(410)에 비동기적 파퓰레이트 신호를 송신할 수 있으며, 이에 스왑 장치(410)는 상기 비동기적 파퓰레이트 신호를 수신하여 페이지 캐쉬(325)로 상기 차순위로 적재되어야 할 파일 페이지를 선택적 파퓰레이트와 비동기적으로 파퓰레이트 시킬 수 있다. 다만 이는 일실시예로서 동기적으로 파퓰레이트 시킬 수도 있을 것이다.
도 6에 도시된 바와 같이 파퓰레이트 과정과 맵핑과정을 구체적으로 나타낸 것이다.
파퓰레이트(Populate)는 맵핑에 필요한 파일 페이지를 비휘발성 메인 메모리에 적재시키는 단계 및 상기 파일 페이지의 물리주소와 새롭게 맵핑된 가상주소 엔트리 정보로 맵핑 테이블을 업데이트 하는 단계, 또는 이미 비휘발성 메인 메모리에 적재되있는 파일페이지의 물리주소와 새롭게 맵핑된 가상주소 엔트리 정보로 맵핑 테이블을 업데이트 하는 단계를 지칭할 수 있다.
스왑 장치(410)는 파퓰레이트 제어부에서 선택한 파일 페이지를 비휘발성 메인 메모리 커널 영역의 여러가지 영역 중 하나에 해당하는 페이지 캐쉬(325)로 파퓰레이트 시키라는 신호를 수신할 수 있고, 이에 스왑 장치(410)에 적재된 선택된 파일 페이지(A,도면 표시)가 페이지 캐쉬(325)로 파퓰레이트 될 수 있다. 또한 도시된 바와 같이 페이지 캐쉬(325) 에 이미 적재되어 있는 파일 페이지(B,도면 표시)는 스왑 장치(410)에서 페이지 캐쉬로 적재시키는 단계를 거치지 않으나 프로세서의 맵핑 명령에 의하여 파일 페이지의 물리 주소와 맵핑된 가상주소가 바뀌므로 맵핑 테이블을 업데이트 하는 단계를 거치게 되는 파퓰레이트를 하게 된다.
이는 발명의 일실시예로서, 페이지 캐쉬(325)에만 국한되지 않으며, 커널 영역(Kernel area)의 다른 공간에도 적용될 수 있을 것이다.
이에 프로세서가 더 신속하게 파일페이지로의 접근을 도모할 수 있을 것이다.
도7 은 본 발명의 일 실시예에 따른 비동기적 파퓰레이트를 나타낸 블록도이다.
도 7을 참조하면, 스왑 장치(410)에서 파일 페이지가 비휘발성 메인 메모리의 커널(Kernel) 중의 하나인 페이지 캐쉬(325)로 비동기적 파퓰레이트를 하는 일 구현예를 나타낸 블록도이다.
전술한 바와 같이, 파퓰레이트 제어부의 파퓰레이트 대상 선택부는 파일 오프셋을 기반으로 차순위로 비휘발성 메인 메모리로 파퓰레이트 되어야 할 파일 페이지를 선택할 수 있다. 차순위로 필요한 파일 페이지는 도5에서 언급했던 우선적으로 파퓰레이트 해야할 파일 페이지(A) 다음으로 프로그램이 실행되기 위하여 접근이 필요한 파일 페이지에 해당할 수 있다. 이에 파퓰레이트 제어부는 차순위 파일 페이지(C)를 선택하여 파퓰레이트 시키는 신호를 스왑 장치(410)에 송신할 수 있다. 상기 파퓰레이트 신호를 수신한 스왑 장치(410)는 메인 메모리의 커널 영역(Kernel area)의 여러 가지 공간 중 하나인 페이지 캐쉬(325)로 차순위 파일 페이지를 파퓰레이트 시킬 수 있다.
선택적 파퓰레이트와는 비동기적으로 파퓰레이트 시킬 수 있다. 이에 따라 우선적으로 필요한 선택적 파퓰레이트를 먼저 진행할 수 있고, 나중에 비동기적 파퓰레이트를 진행시키면서 필요한 파일 페이지를 미리 페이지 캐쉬(325)에 파퓰레이트 시킬 수 있다. 또한 다른 실시예로서 비동기적 파퓰레이트는 선택적 파퓰레이트와 동기적으로 진행할 수도 있다.
결과적으로 프로그램 실행을 위해 필요한 파일 페이지 접근 속도가 더 빨라질 수 있다.
다만, 메인 메모리의 커널 영역(Kernel area)의 공간은 페이지 캐쉬(325)에 국한되지 않으며 커널 영역(Kernel area)의 다른 공간에도 파퓰레이트 시킬 수 있을 것이다.
도8은 비휘발성 메인 메모리내의 맵핑 방법을 구체적으로 나타낸 일실시예이다.
도 8 에 표현된 것은 본 발명의 일실시예로서 비휘발성 메인 메모리를 구비함에 있어서, read/write 시스템 콜을 직접 사용하지 않고 표준 입출력 라이브러리를 사용하는 경우의 맵핑 방법을 나타낸 것이다. 왼쪽 그림은 비휘발성 메인 메모리의 유저 영역(User area)(310)에 해당하는 것이고, 오른쪽 그림은 비휘발성 메인 메모리의 커널 영역(Kernel area)(320)에 해당하는 것이다.
유저 영역(User area)(310)에는 여러가지 공간이 존재하고 그 중 공간으로 라이브러리 버퍼(Library Buffer,314), 유저 버퍼(User Buffer,315)일 수 있다.
커널 영역(Kernel area)(320)에는 여러가지 공간이 존재하고 그 중 공간으로 페이지 캐쉬(Page Cache, 325)일 수 있다.
표준 입출력 라이브러리를 사용하는 경우에는 라이브러리 버퍼(Library Buffer, 314)를 사용할 수 있는데 기존의 휘발성 메인 메모리에서의 라이브러리 버퍼는 프로세서가 프로그램을 동작하기 위하여 2차 저장 장치에 저장된 파일 페이지에 접근하기 위하여 상기 파일 페이지를 라이브러리 버퍼에 복사를 하였고, 복사를 한 파일 페이지를 사용자가 어플리케이션을 통하여 접근에 제한이 없는 유저 버퍼로 다시 복사하는 방법을 취하였다.
이에 본 발명의 일실시예는, 휘발성 메모리와는 달리 비휘발성 메모리의 커널 영역(Kernel area)에 파일 페이지가 저장되어 있을 수 있어, 비휘발성 메모리의 커널 영역(Kernel area)에 존재하는 페이지 캐쉬(325)에서 프로세스가 접근하기 원하는 파일 페이지(A, 도면표시)를 가상 유저 영역(User area)의 라이브러리 버퍼(314)와 맵핑시켜줄 수 있다.
이런 맵핑을 통하여 페이지 캐쉬(325)에 저장된 파일 페이지에 접근할 수 있고, 이렇게 접근한 파일 페이지를 사용자가 자유롭게 쓰고, 읽을 수 있는 영역인 유저 버퍼(315)로 복사를 할 수 있다.
이 과정을 통하여 기존에 2차 저장장치에 저장된 파일 페이지를 메인 메모리의 커널 영역 중 일실시예인 페이지 캐쉬로 복사하고, 이 파일 페이지를 유저 버퍼로 복사해야하는 중복적인 복사를 줄일 수 있어 메모리 관리의 효율성을 증대시키는 효과가 있다.
여기서 비휘발성 메인 메모리의 유저 영역(User area)의 공간으로 표현된 라이브러리 버퍼(314), 유저 버퍼(315)와 커널 영역(Kernel Area)의 한 공간으로 표현된 페이지 캐쉬(325)는 발명의 일실시예에 해당하는 바, 이에 국한되어 해석될 수 없다.
도 9은 도5에 도시된 스왑 장치를 다른 실시예에 따라 비휘발성 메인 메모리로 구성한 일 구현예를 나타낸 블록도이다.
도9에 도시한 바와 같이, 본 발명의 또 다른 실시예로서 스왑 장치(500)이 2차 저장 장치가 아닌 비휘발성 메인 메모리로 구성되므로서 메모리 시스템(11)에 포함될 수 있다. 따라서 스왑 장치(500)는 비휘발성 메모리 종류로서 MRAM(Magnetic Random Access Memory), RRAM(Resistance RAM), FRAM(Ferroelectric RAM) 또는 PCM(Phase Change Memory), STT-MRAM 로 구성될 수 있다.
2차 저장 장치보다 비휘발성 메모리로의 접근속도가 월등하므로 파일 페이지를 파퓰레이트 시키는 과정 및 메인 메모리 반응 시간 등을 줄일 수 있는 효과가 있을 수 있다.
또한 더 나아가 메모리 용량이 더 큰 메인 메모리를 사용하므로서, 직접 적재시켜, 파퓰레이트 단계를 생략하여 더 빠른 메인 메모리 반응 속도를 얻을 수 도 있을 것이다.
도 10은 본 발명의 일실시예에 따른 TLB 관리부(230)를 구체적으로 도시한 블록도이다.
도 10을 참조하면, TLB 관리부(230)는 TLB 업데이트 장치(TLB Update Device, 231) 및 TLB(Translation Lookaside Buffer, 232)를 더 포함할 수 있다.
발명의 일실시예에 따라 TLB 관리부(230)는 프로세서가 맵핑을 명령하여, 파일 페이지의 가상 주소에 대한 물리주소가 바뀐 경우에 이에 대한 정보를 비휘발성 메인 메모리내의 맵핑 테이블로부터 갱신된 맵핑 정보를 수신하여, 이를 기반으로 자주 사용되는 파일 페이지의 가상주소, 여기에 맵핑된 물리주소의 엔트리를 업데이트하여 TLB에 저장해놓을 수 있다.
이 때, TLB 업데이트 장치(231)는 프로세서가 맵핑 관련 명령을 한 경우에 명령을 내렸다는 것을 알리는 Signal 신호를 수신하게 된다. 그 후에 새롭게 맵핑되어 갱신된 페이지 테이블의 정보를 비휘발성 메인 메모리로부터 수신받게 된다. 맵핑 테이블은 비휘발성 메인 메모리에 저장되어 있으며, 프로세서의 TLB 관리부에서 비휘발성 메모리 컨트롤러에 맵핑 테이블 정보 요청 명령을 송신하면 비휘발성 메모리 컨트롤러는 비휘발성 메인 메모리에 저장된 맵핑 테이블을 독출하여 TLB 업데이트 장치(231)로 송신한다.
갱신된 맵핑 테이블 정보를 기반으로 TLB(232)는 저장되어 있는 가상주소와 물리주소 엔트리를 업데이트하여 TLB(232)에 다시 저장해놓는다.
도11은 본 발명의 일실시예에 따른 맵핑 및 파퓰레이트 방법을 나타내는 플로우차트이다.
도11을 참조하면, 먼저 기존에 프로세서의 시스템 콜 또는 커맨드에 의하여 프로세스의 가상영역을 할당받아, 가상영역의 가상주소와 파일 페이지 물리주소를 맵핑시키는 맵핑 명령을 프로세서가 내리는 과정(S100)을 거치게 될 수 있다. 다음에 프로그램 실행에 필요한 파일의 오프셋을 검사하는 과정(S110)을 거치게 되는데, 이것을 검사하는 파일 오프셋 검출부는 프로세서에 포함될 수 있고, 더 나아가 파퓰레이트 제어부에 포함될 수 있다. 파일 오프셋을 검출한 것을 바탕으로 프로세스를 동작하는 데 접근이 필요한 파일의 순서를 파악하고 필요한 선순위 또는 차순위 파일 페이지를 선택하는 과정(S120)을 거칠 수 있게 된다. 이는 파일 오프셋을 기준으로 내림차순 또는 오름차순으로 파일의 순서가 정해지게 된다.
이는 파퓰레이트 대상 선택부에서 판단할 수 있으며, 이는 프로세서에 포함될 수 있고, 더 나아가 파퓰레이트 제어부에 포함될 수 있다.
다음 단계로, 우선적으로 파퓰레이트가 필요한 파일 페이지를 파퓰레이트 시키는 과정(S130)을 거칠 수 있다. 이 때, 우선순위의 파일 페이지가 비휘발성 메인 메모리의 커널 영역 중 일예로서, 페이지 캐쉬에 이미 존재하는 경우에는 파일 페이지의 물리 주소와 프로세스의 가상주소의 맵핑 테이블만을 갱신시켜주는 단계를 거칠 수 있다.
이와 달리 우선순위의 파일 페이지가 페이지 캐쉬에 존재하지 않는 경우에는 2차 저장 장치에 있는 스왑 장치에서 우선순위 파일 페이지를 페이지 캐쉬로 적재한 후에, 적재시킨 파일 페이지의 물리 주소와 프로세스의 가상주소의 맵핑 테이블을 갱신시켜주는 단계를 거칠 수 있다.
다음으로, 차순위 페이지에 접근하기 위한 비동기적 파퓰레이트 단계(S140)를 거치게 되는데, 페이지 캐쉬에 차순위 파일 페이지가 적재되어 있는 경우에는 차순위 파일 페이지를 스왑 장치에서 가져올 필요가 없으므로, 따라서 바로 차순위 파일 페이지의 물리주소와 프로세스의 가상주소의 맵핑 테이블을 갱신시켜주는 단계의 파퓰레이트를 거칠 수 있다.
다만, 페이지 캐쉬에 차순위 파일 페이지가 적재되지 않은 경우에 있어서는 선택적 파퓰레이트와 비동기적으로 스왑 장치에서 페이지 캐쉬로 차순위 파일 페이지를 적재시키는 단계, 적재된 페이지 캐쉬의 물리주소와 프로세스의 가상주소의 맵핑 테이블을 갱신시켜주는 단계의 파퓰레이트가 될 수 있을 것이다.
도 12 는 본 발명의 일실시예에 따른 TLB의 업데이트 방법을 나타내는 플로우 차트이다.
도 12를 참조하면, 먼저 기존에 프로세서의 시스템 콜 또는 커맨드에 의하여 비휘발성 메인 메모리의 가상영역을 할당받아, 가상영역의 가상주소와 파일 페이지의 물리주소를 맵핑시키는 맵핑 명령을 프로세서가 내리는 과정(S200)을 거치게 될 수 있다.
다음으로 이 프로세서의 맵핑 명령에 의하여 파일 페이지는 비휘발성 메인 메모리 커널 영역(Kernel area), 즉 일예로서 페이지 캐쉬에 적재되고, 페이지 캐쉬와 프로세스 간의 맵핑 테이블이 갱신되는 단계(S210)를 거칠 수 있다.
이 때 TLB 업데이트 장치는 비휘발성 메인 메모리 내에 존재하는 맵핑 테이블의 정보를 비휘발성 메모리 컨트롤러를 통하여 수신받을 수 있는 단계(S220)를 거칠 수 있다.
이 과정을 통하여 수신된 맵핑 테이블 정보를 기반으로 TLB에 저장된 맵핑 정보, 즉 물리주소와 가상주소의 맵핑된 엔트리를 갱신하는 단계(S230)를 거칠 수 있다.
이를 통하여 TLB miss를 기존보다 줄일 수 있어, 보다 더 빠른 시스템 동작을 얻을 수 있을 것이다.
도 13은 본 발명의 일실시예에 따른 가상영역을 재활용하는 방법을 나타내는 플로우차트이다.
도 13을 참조하면, 맵핑 단계에 있어서 가상영역을 할당할 때에 본 발명의 일 실시예에 따른 가상영역을 재활용하는 방법을 나타낸 플로우 차트에 해당한다.
먼저 맵핑이 시작되게 되면 가상영역을 할당하게 되는데 이것은 vm_area_struct등의 구조체로서, 가상영역의 가상주소, 가상영역의 접근성, 크기 등을 정의할 수 있다.
구체적인 동작과정을 서술하면, 파일의 flag를 검사하는 단계(S300)를 거쳐 일반 flag가 검출된 경우, 프로세스의 할당된 가상주소를 레드-블랙 트리(Red-Black Tree)라는 이진 방식으로 가상주소에 해당되는 가상영역을 탐색할 수 있다(S310). 가상영역을 탐색한 후, 이미 상기 가상영역의 가상주소가 실제 메모리의 물리주소와 맵핑되어 사용 중인 영역인 경우인지를 판단할 수 있다(S320). 이미 사용 중인 영역인 경우 레드-블랙 트리에서 사용 중인 가상영역을 삭제할 수 있다(S230). 이 후, 다시 가상영역을 할당하는 단계를 거칠 수 있고(S340), 이를 다시 레드-블랙 트리에 집어넣어 관리할 수 있다(S350). 그리고 이 가상영역의 가상주소를 프로세스가 접근을 원하는 파일 페이지의 물리주소와 맵핑을 시켜줄 수 있다(S360).
flag 검사시에 사용자가 설정할 수 있는 MAP_REPLACE와 같은 특별한 flag가 검출된 경우에 프로세스의 할당된 가상주소를 레드-블랙 트리로 가상주소에 해당되는 가상영역을 탐색할 수 있다(S370). 이 때 탐색한 가상영역의 특성, 발명의 일실시예로 1)가상주소가 어딘지, 2)그 영역의 접근성,3)크기 를 검출할 수 있다(S380). 다음 단계로 가상영역 재활용 가능한지 여부를 판단하는 과정(S390)에서는 가상영역의 상기 특성이 일치하는 경우에는 가상영역을 재활용할 수 있다고 판단하여 바로 가상영역을 맵핑(S360) 할 수 있다. 다만, 일치하지 않는 경우는 가상영역을 삭제하는 단계(S330)을 거칠 수 있게 될 것이다.
이렇게 본 발명의 실시예를 통하여, 가상영역의 삭제와 할당, 재배치의 오버헤드를 줄임으로서, 메모리 시스템의 반응속도가 빨라지는 효과가 있다.
여기서 언급한 것은 일실시예에 불과한바, 가상영역의 특성, 파일의 flag, 가상주소를 관리하는 방식 등은 여러가지 형태로 나타낼 수 있을 것이다.
도14는 본 발명의 일실시예에 따른 파일 Append를 하는 방법을 나타내는 플로우차트이다.
맵핑을 이용한 파일 Append에 대하여 자세하게 서술하면, 먼저 파일의 flag를 프로세서에서 검사(S400)하여, 기존의 맵핑과정 또는 본 발명의 일실시예의 파일 Append 과정을 선택할 수 있다. 일반 flag가 검출되는 경우에는 기존의 맵핑과정을 바로 시작할 수 있다(S440).
예를들면, 사용자가 설정할 수 있는 MAP_APPEND와 같은 특별한 flag가 검출되는 경우에는 프로세스 동작을 위하여 맵핑을 할 영역이 파일의 전체 offset을 초과하는 경우에는 먼저 할당 받아야되는 파일 페이지의 수를 계산하는 과정(S410)을 거칠 수 있다. 이렇게 계산된 파일 페이지들은 할당받게 되는 단계를 거칠 수 있다(S420). 이 후, 새롭게 할당된 파일 페이지들은 파일 시스템상의 자료구조를 통하여 연결시켜주는 과정을 통하여 기존 파일에 새롭게 추가되는 단계를 거칠 수 있다(S430). 그 후 새롭게 할당된 파일 페이지들은 해당 파일로 인식되어 할당된 파일 페이지의 가상주소와 물리주소를 맵핑하는 기존의 맵핑 과정을 거치게 될 수 있다(S440).
이렇게 본 발명의 실시예를 통하여, 맵핑 단계에서 파일 Append가 가능해지므로서, 파일을 추가하고 다시 맵핑하는 시간을 축소함에 따라 메모리 시스템의 반응속도가 빨라지는 효과가 있다.
도 15은 본 발명의 일실시예로서 파일 페이지의 맵핑크기를 증대시키는 맵핑방법을 나타내는 도면이다.
비휘발성 메인 메모리의 유저 영역(User area)에 있는 공간 중 일실시예로서 유저버퍼 (User Buffer, 500)에서는 프로세스를 동작시키기 위해 파일 페이지 요청 커맨드를 라이브러리 버퍼(Library Buffer, 510)에 송신할 수 있다. 이 때, 발명의 일실시예로서, 1번 그림을 참조하면, 필요한 파일 페이지의 크기가 1KB를 기준으로 총 네번의 파일 페이지 요청 커맨드를 라이브러리 버퍼(510)에 송신할 수 있다. 이 때, 라이브러리 버퍼(510)는 파일 페이지 요청 커맨드가 수신될 때마다, 시스템 콜하여 비휘발성 메인 메모리의 커널 영역(Kernel area)에 접근하는 것이 아니라, 4번의 파일 페이지 요청 커맨드, 즉 4KB 파일 페이지에 대한 시스템 콜을 한번만 할 수 있다. 따라서, 시스템 콜을 하여 커널 영역의 공간 중 일실시예에 해당되는 페이지 캐쉬(Page cache, 520) 내에 있는 4KB 파일 페이지와 라이브러리 버퍼(510)의 가상 영역을 서로 맵핑시켜줄 수 있다..
이 후, 계속하여 유저버퍼(500)는 라이브러리 버퍼(510)에 송신하는 커맨드가 순차접근(Sequential access), 즉 일실시예를 들면, read의 파일 페이지 요청 커맨드가 지속되는 경우 2번 그림을 참조하면, 유저버퍼 (500)은 총 8번의 1KB 파일 페이지 요청 커맨드를 라이브러리 버퍼(510)에 송신할 수 있다. 이 때, 라이브러리 버퍼(510)의 맵핑되는 파일 페이지의 크기를 2배로 늘려, 한번의 시스템 콜을 통하여 메인 메모리 커널 영역의 일실시예인 페이지 캐쉬의 8KB크기의 파일 페이지와 맵핑을 시킬 수 있게된다.
이 후, 같은 방식으로 순차접근이 계속되면 3번 그림을 참조하면, 2번 그림의 맵핑되는 파일 페이지보다 2배가 늘어난 16KB의 파일 페이지를 맵핑할 수 있게된다.
다만, Random Access(임의 접근)이 발생하여 3번에서 4번 그림으로 넘어가는 경우, 즉, 일실시예를 들면, 유저버퍼(500)의 커맨드에 lseek 커맨드가 발생한 경우 임의 접근을 하는 것으로 판단할 수 있다. 이 때에는 4번 그림을 참조하면, 1번 그림과 같이 유저버퍼(500)의 파일 페이지 요청 커맨드는 총 4번으로서, 라이브러리 버퍼(510)가 한번의 시스템 콜로 4KB의 파일 페이지를 맵핑할 수 있다. 결국, 임의 접근이 발생하면 맵핑되는 파일 페이지는 기본값으로 초기화 될 수 있는 것이다.
본 발명은 일실시예로서, 파일 페이지의 맵핑 크기 기본값은 4KB가 될 수 있으나 이에 한정되지 않으며, 또한 맵핑 크기의 최대값은 각 메모리 시스템에 따라 다를 수 있으나, 32~64KB로 하는 것이 바람직하다.. 다만, 이에 국한되지 않으며, 더 작거나 큰 경우로 맵핑 크기의 최대값을 설정할 수 있을 것이다. 또한, 파일 페이지의 늘어나는 맵핑 크기는 2배 또는 3배 등의 여러가지 배수로 크게 할 수 있을 것이다
본 발명의 실시예를 통하여, 시스템 콜의 횟수를 줄이면서 라이브러리에 가해지는 오버로드를 줄여, 메모리 시스템의 성능을 향상 시킬 수 있을 것이다.
도 16는 본 발명의 일실시예에 따른 비휘발성 메모리 시스템을 장착하는 컴퓨팅 시스템을 나타내는 블록도이다.
모바일 기기나 데스크 탑 컴퓨터와 같은 컴퓨팅 시스템(1000)에 본 발명의 비휘발성 메모리 시스템이 램(RAM, 1200)으로 장착될 수 있다. 램(1200)으로 장착되는 비휘발성 메모리 시스템은 앞서 설명되었던 다수의 실시예들 중 어느 하나가 적용될 수 있다.
본 발명의 일실시예에 따른 컴퓨팅 시스템(1000)은 중앙처리 장치(1100), 램(1200), 유저 인터페이스(1300)와 저장장치(1400)를 포함하며, 이들 구성요소는 각각 버스(1500)에 전기적으로 연결되어 있다. 상기 컴퓨팅 시스템(1000)에서, 앞선 실시예들에서와 같이 RAM(1200)은, 데이터를 저장하기 위한 비휘발성 메모리일 수 있으며, 비휘발성 메모리들 중 MRAM (Magenetic Random Access Memory)일 수 있으며, 자기저항(magnetoresistance) 기반의 비휘발성 메모리이다. MRAM은 여러가지 면에서 휘발성 RAM과 다르다. MRAM은 비휘발성이기 때문에, 메모리 장치 전원이 오프되어도 MRAM은 메모리 내용을 유지할 수 있다.
또한 RAM(1200)은STT-MRAM을 이용하여 구현될 수 있다. 실시예들에 따라, RAM(1200)은 ReRAM (Resistance Random Access Memory), MRAM (Magnetic Random Access Memory), FeRAM (Ferroelectric Random Access Memory) 또는 이와 유사한 메모리로 구현될 수 있다.
저장장치(Storage Device,1400)는 HDD 또는SDD일 수 있으며, 더 나아가 RAM(1200)과 같이 비휘발성 메모리들로서 MRAM, STT-MRAM, ReRAM, FeRAM 등으로 구현될 수 있다.
도 17은 본 발명의 다양한 실시예들에 따른 MRAM을 설명하는 제1 예의 도면이다.
도 17을 참조하면, 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 신호는 어드레싱된 메모리 셀들에 기입될 데이터 워드들 중 소정의 비트들 또는 비트 그룹을 선택적으로 마스킹한다.
도 18은 도 17의 메모리 뱅크(21) 내 메모리 셀 어레이를 설명하는 도면이다.
도 18을 참조하면, 메모리 셀 어레이(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 소자에 기입된다.
도 19는 도 18의 STT-MRAM 셀의 구현 예를 나타내는 입체도이다.
도 19를 참조하면, 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)에 저장된 데이터를 판별할 수 있다.
도 20a 및 도 20b는 도 19의 MTJ 소자(40)의 기입된 데이터에 따른 자화 방향을 나타내는 블록도이다. MTJ 소자(40)의 저항 값은 자유 층(41)의 자화 방향에 따라 달라진다. MTJ 소자(40)에 리드 전류(IR)를 흘리면 MTJ 소자(40)의 저항 값에 따른 데이터 전압이 출력된다. 리드 전류(IR)의 세기는 쓰기 전류의 세기보다 매우 작기 때문에, 리드 전류(IR)에 의해 자유 층(41)의 자화 방향이 변화되지 않는다.
도 20a를 참조하면, MTJ 소자(40)에서 자유 층(41)의 자화 방향과 고정층(43)의 자화 방향이 평행(parallel)하게 배치된다. 따라서, MTJ 소자(40)는 낮은 저항 값을 가진다. 이 경우, 데이터 0을 독출할 수 있다.
도 20b를 참조하면, MTJ 소자(40)는 자유 층(41)의 자화 방향이 고정 층(43)의 자화 방향과 반-평행(anti-parallel)으로 배치된다. 이 때, MTJ 소자(40)는 높은 저항 값을 가진다. 이 경우, 데이터 0 을 독출할 수 있다.
본 실시예에서 MTJ 소자(40)는 자유 층(41)과 고정 층(43)을 수평 자기 소자로 도시하였으나, 다른 실시예로서 자유 층(41)과 고정 층(43)은 수직 자기 소자를 이용할 수도 있다.
도 21는 도 19의 STT-MRAM 셀의 라이트 동작을 나타내는 블록도이다.
도 21를 참조하면, 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)에 의해 변할 수 있다.
도 22a 및 도 22b는 도 19의 STT-MRAM셀에서 MTJ 소자의 다른 실시 예들을 설명하는 도면이다.
도 22a를 참조하면, 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) 내의 강자성체에서 발생되는 표류 자기장을 감소시키거나 제어시키는 구조가 필요하다.
도 22b를 참조하면, 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)을 포함할 수 있다.
도 23은 도 19의 STT-MRAM 셀에서 MTJ 소자의 다른 실시 예를 설명하는 도면이다.
도 23을 참조하면, 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 일 수 있다.
도 24a 및 도 24b는 도 19의 STT-MRAM 셀에서 MTJ 소자의 다른 실시 예를 나타내는 도면이다. 듀얼 MTJ 소자는 자유 층을 기준으로 양 끝 단에 터널 층과 고정 층이 각각 배치되는 구조를 가진다.
도 24a를 참조하면, 수평 자기를 형성하는 듀얼 MTJ 소자(80)는 제 1 고정층(81), 제 1 터널 층(82), 자유 층(83), 제 2 터널 층(84) 및 제 2 고정층(85)을 포함할 수 있다. 제1 및 제2 고정 층들(81, 85)을 구성하는 물질은 도 22a의 고정 층(53)과 유사하고, 제1 및 제2 터널 층들(82, 84)은 도 22a의 터널 층(52)와 유사하고, 자유 층(83)은 도 22a의 자유 층(51)과 유사하다.
제 1 고정층(81)의 자화 방향과 제 2 고정층(85)의 자화 방향이 반대 방향으로 고정되면, 실질적으로 제 1 및 제 2 고정 층들(81, 85)에 의한 자기력이 상쇄되는 효과를 가진다. 따라서, 듀얼 MTJ 소자(80)는 전형적인 MTJ 소자보다 더 적은 전류를 이용하여 라이트 동작을 할 수 있다.
듀얼 MTJ 소자(80)는 제 2 터널 층(84)으로 인하여 리드 동작 시에 더 높은 저항을 제공하므로, 명확한 데이터 값을 얻을 수 있도록 하는 장점이 있다.
도 24b를 참조하면, 수직 자기를 형성하는 듀얼 MTJ 소자(90)는 제 1 고정 층(91), 제 1 터널 층(92), 자유 층(93), 제 2 터널 층(94) 및 제 2 고정층(95)을 포함한다. 제1 및 제2 고정 층들(91, 95)을 구성하는 물질은 도 23의 고정 층(73)과 유사하고, 제1 및 제2 터널 층들(92, 94)은 도 23의 터널 층(72)와 유사하고, 자유 층(93)은 도 23의 자유 층(71)과 유사하다.
이 때, 제 1 고정층(91)의 자화 방향과 제 2 고정층(95)의 자화 방향은 반대 방향으로 고정되면, 실질적으로 제 1 및 제 2 고정 층들(91, 95)에 의한 자기력이 상쇄되는 효과를 가진다. 따라서, 듀얼 MTJ 소자(90)는 전형적인 MTJ 소자보다 더 적은 전류를 이용하여 라이트 동작을 할 수 있다.
상술한 STT-MRAM은 시스템의 메인 메모리로 이용될 수 있다. STT-MRAM은 바이트-어드레싱 가능한(byte-addressability) 특성을 갖고 데이터의 영구적인 보존이 가능하기 때문에, 파일 시스템의 신뢰성을 위한 데이터 이중 복제 과정을 제거할 수 있다. 또한, STT-MRAM은 파일 쓰기가 진행되는 동안 로깅 정보를 기록하고 체크포인트하는 마이크로 저널링에 이용되기 때문에, 시스템 충돌시 파일 시스템의 복구가 가능하다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.

Claims (10)

  1. 비휘발성 메인 메모리의 커널영역(Kernel Area)에 저장된 프로세스 동작에 필요한 파일 페이지에 접근하기 위해 시스템콜(System Call)을 수행하는 단계; 및
    상기 비휘발성 메인 메모리의 커널영역에 저장되어 있는 파일 페이지의 물리주소(Physical Address)와 비휘발성 메인 메모리의 유저영역(User Area)의 가상주소(Virtual Address)를 맵핑(mapping)하는 단계를 포함하고,
    상기 시스템콜은, 리드/라이트 시스템 콜에 해당하고,
    상기 맵핑하는 단계는,
    상기 유저 영역의 한 공간인 라이브러리 버퍼의 가상주소와 상기 파일 페이지의 물리주소를 맵핑시키는 단계를 더 포함하고,
    상기 맵핑을 통하여 접근한 상기 파일 페이지를 상기 유저 영역의 한 공간인 유저 버퍼에 복사하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 메모리 맵핑 방법
  2. 제1항에 있어서,
    상기 맵핑(mapping)하는 단계는,
    상기 비휘발성 메인 메모리에 저장된 파일 페이지에 순차 접근(Sequential access)명령이 발생하면, 맵핑될 파일 페이지의 사이즈를 증가시키는 것을 특징으로 하는 비휘발성 메모리 맵핑 방법.
  3. 제2항에 있어서,
    상기 맵핑(mapping)하는 단계는,
    비휘발성 메인 메모리에 저장된 파일 페이지에 임의 접근(Random access) 명령이 발생하면, 맵핑될 파일 페이지의 사이즈를 초기화시키는 것을 특징으로 하는 비휘발성 메모리 맵핑 방법.
  4. 제1항에 있어서,
    2차 저장장치에 구비되는 스왑 장치(Swap Device)에서, 맵핑에 필요한 파일 페이지를 비휘발성 메인 메모리의 커널영역(Kernel)의 한 공간으로 파퓰레이트(Populate) 시키는 단계를 더 구비하는 것을 특징으로 하는 비휘발성 메모리 맵핑 방법.
  5. 제4항에 있어서,
    상기 파퓰레이트 시키는 단계는,
    프로세스 동작에 있어서 필요한 파일의 오프셋(offset)을 검출하는 단계;
    검출한 파일의 오프셋을 기반으로 비휘발성 메인 메모리의 커널영역의 한 공간에 우선적으로 파퓰레이트가 필요한 파일 페이지를 선별하는 단계; 및
    우선적으로 파퓰레이트가 필요한 파일 페이지를 선택적 파퓰레이트를 시키는 단계를 구비하는 것을 특징으로 하는 비휘발성 메모리 맵핑 방법.
  6. 제5항에 있어서,
    상기 필요한 파일 페이지를 선별하는 단계는,
    검출한 파일의 오프셋을 기반으로 비휘발성 메인 메모리의 커널영역의 한 공간에 차순위로 파퓰레이트가 필요한 파일 페이지를 선별하는 단계를 더 구비하고,
    차순위로 파퓰레이트가 필요한 파일 페이지를 상기 선택적 파퓰레이트와 시키는 것과는 비동기적으로 파퓰레이트를 시키는 단계를 구비하는 것을 특징으로 하는 비휘발성 메모리 맵핑 방법.
  7. 제1항에 있어서,
    상기 맵핑(mapping)하는 단계는,
    상기 비휘발성 메인 메모리 상의 가상영역을 할당하기 전, 가상영역의 특성을 검출하는 단계;
    검출된 특성을 기반으로 이미 할당된 가상영역의 재활용 여부를 판단하는 단계; 및
    가상영역의 재활용이 가능한 경우, 가상영역에 프로세스 또는 파일 시스템의 메모리 가상주소(Virtual Address)를 저장하는 단계를 구비하는 것을 특징으로 하는 비휘발성 메모리 맵핑 방법.
  8. 비휘발성 메모리의 커널 영역(Kernel)에 파일 시스템을 포함하는 비휘발성 메인 메모리;
    파일 페이지가 저장되어 있는 스왑 장치(Swap Device)를 포함하는 2차 저장 장치(Secondary Memory Device); 및
    프로세스 동작에 필요한 파일 페이지의 파퓰레이트(Populate)를 제어하는 파퓰레이트 제어부(Populate Control Unit)를 구비하는 프로세서;를 포함하며,
    상기 파퓰레이트 제어부는, 상기 파일 시스템을 기반으로 프로그램 동작에 필요한 파일의 오프셋을 검출하고, 검출된 상기 오프셋을 참조하여 우선적으로 필요한 제1 파일 페이지를 선택적으로 파퓰레이트 시키는 것을 특징으로 하는 시스템.
  9. 삭제
  10. 제 8 항에 있어서,
    상기 파퓰레이트 제어부는, 검출된 상기 오프셋을 참조하여 차순위로 필요한 제2 파일 페이지가 상기 선택적 파퓰레이트 시키는 것과는 비동기적으로 파퓰레이트되도록 제어하는 것을 특징으로 하는 시스템.
KR1020140002083A 2014-01-07 2014-01-07 비휘발성 메모리 시스템의 메모리 맵핑 방법 및 이를 제공하는 시스템 KR102168169B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140002083A KR102168169B1 (ko) 2014-01-07 2014-01-07 비휘발성 메모리 시스템의 메모리 맵핑 방법 및 이를 제공하는 시스템
US14/507,833 US9501424B2 (en) 2014-01-07 2014-10-07 Memory mapping method of nonvolatile memory system and system for providing the memory mapping method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140002083A KR102168169B1 (ko) 2014-01-07 2014-01-07 비휘발성 메모리 시스템의 메모리 맵핑 방법 및 이를 제공하는 시스템

Publications (2)

Publication Number Publication Date
KR20150082011A KR20150082011A (ko) 2015-07-15
KR102168169B1 true KR102168169B1 (ko) 2020-10-20

Family

ID=53495287

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140002083A KR102168169B1 (ko) 2014-01-07 2014-01-07 비휘발성 메모리 시스템의 메모리 맵핑 방법 및 이를 제공하는 시스템

Country Status (2)

Country Link
US (1) US9501424B2 (ko)
KR (1) KR102168169B1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014157712A1 (ja) * 2013-03-25 2014-10-02 日本電気株式会社 演算処理装置およびその制御方法
JP2014206884A (ja) * 2013-04-15 2014-10-30 株式会社フィックスターズ 情報処理装置、情報処理方法、およびプログラム
KR102429903B1 (ko) * 2015-12-03 2022-08-05 삼성전자주식회사 비휘발성 메인 메모리 시스템의 페이지 폴트 처리 방법
KR102456109B1 (ko) * 2015-12-03 2022-10-18 삼성전자주식회사 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법
KR20180031412A (ko) * 2016-09-20 2018-03-28 삼성전자주식회사 메모리 컨트롤러의 동작 방법과, 이를 포함하는 장치들의 동작 방법들
KR20180044095A (ko) 2016-10-21 2018-05-02 삼성전자주식회사 전자 시스템 및 그것의 동작 방법
KR101927187B1 (ko) * 2017-02-27 2018-12-10 현대자동차 주식회사 차량용 트렁크 스위치 모듈
KR101995433B1 (ko) * 2017-09-13 2019-09-24 엘지전자 주식회사 디지털 디바이스 및 그 제어 방법
KR20200126491A (ko) * 2019-04-30 2020-11-09 에스케이하이닉스 주식회사 컨트롤러 및 그 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090193185A1 (en) * 2008-01-24 2009-07-30 Inventec Corporation Method for accessing the physical memory of an operating system
US20100058046A1 (en) * 2008-08-26 2010-03-04 Texas Digital And Multimedia Systems Method and Apparatus for Secure Instantly-Available Applications in a Computer System

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5787445A (en) * 1996-03-07 1998-07-28 Norris Communications Corporation Operating system including improved file management for use in devices utilizing flash memory as main memory
US6910106B2 (en) 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
US7069389B2 (en) 2003-11-26 2006-06-27 Microsoft Corporation Lazy flushing of translation lookaside buffers
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US8515336B2 (en) 2006-01-06 2013-08-20 Qualcomm Incorporated Apparatus and methods of selective collection and selective presentation of content
US7647471B2 (en) 2006-11-17 2010-01-12 Sun Microsystems, Inc. Method and system for collective file access using an mmap (memory-mapped file)
JP2009158813A (ja) 2007-12-27 2009-07-16 Elpida Memory Inc 半導体装置の製造方法、及び半導体装置
US8370603B2 (en) 2008-12-23 2013-02-05 Apple Inc. Architecture for address mapping of managed non-volatile memory
US8321460B2 (en) 2009-06-11 2012-11-27 Oracle International Corporation Populating a cache system based on privileges
US8392661B1 (en) 2009-09-21 2013-03-05 Tilera Corporation Managing cache coherence
US8386749B2 (en) 2010-03-16 2013-02-26 Advanced Micro Devices, Inc. Address mapping in virtualized processing system
US9477590B2 (en) 2011-09-16 2016-10-25 Apple Inc. Weave sequence counter for non-volatile memory systems
US9256552B2 (en) 2011-11-21 2016-02-09 Cisco Technology, Inc. Selective access to executable memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090193185A1 (en) * 2008-01-24 2009-07-30 Inventec Corporation Method for accessing the physical memory of an operating system
US20100058046A1 (en) * 2008-08-26 2010-03-04 Texas Digital And Multimedia Systems Method and Apparatus for Secure Instantly-Available Applications in a Computer System

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Hemant Agrawal et al., "Device drivers in user space", embedded.com, Technical Article, November 19, 2012. (https://www.embedded.com/device-drivers-in-user-space/)

Also Published As

Publication number Publication date
KR20150082011A (ko) 2015-07-15
US20150193354A1 (en) 2015-07-09
US9501424B2 (en) 2016-11-22

Similar Documents

Publication Publication Date Title
KR102168169B1 (ko) 비휘발성 메모리 시스템의 메모리 맵핑 방법 및 이를 제공하는 시스템
US20150193464A1 (en) Micro-journaling for file system based on non-volatile memory
US10198221B2 (en) Methods of operating semiconductor memory devices with selective write-back of data for error scrubbing and related devices
US10156995B2 (en) Semiconductor memory devices and methods of operating the same
KR102491651B1 (ko) 비휘발성 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 동작 방법
US11438016B2 (en) Error detection code generation circuits of semiconductor devices, memory controllers including the same and semiconductor memory devices including the same
KR102178137B1 (ko) 반도체 메모리 장치, 이의 에러 정정 방법 및 이를 포함하는 메모리 시스템
KR102025340B1 (ko) 불휘발성 메모리를 포함하는 반도체 메모리 장치, 이를 포함하는 캐쉬 메모리 및 컴퓨터 시스템
KR102354350B1 (ko) 메모리 장치 및 이를 포함하는 메모리 시스템
US20130329491A1 (en) Hybrid Memory Module
JP6154060B2 (ja) 混載メモリタイプハイブリッドキャッシュ
JP2018513517A (ja) サブアレイを有するマルチビットスピントルクトランスファ磁気抵抗ランダムアクセスメモリ
US9330791B2 (en) Memory systems and methods of managing failed memory cells of semiconductor memories
KR20170134989A (ko) 반도체 메모리 장치 및 이의 동작 방법
JP6330970B2 (ja) 磁界支援式メモリを含む装置及びシステム、並びに磁界支援式メモリの操作方法
US20140140124A1 (en) Resistive memory device having selective sensing operation and access control method thereof
KR20160062809A (ko) 재쓰기를 이용하여 로우 비트 에러 레이트를 개선하는 메모리 시스템 및 그에 따른 재쓰기 방법
US9110784B2 (en) Nonvolatile random access memory and data management method
US20150074489A1 (en) Semiconductor storage device and memory system
US9431083B2 (en) Nonvolatile memory device and storage device having the same
US11294819B2 (en) Command optimization through intelligent threshold detection
US9342257B2 (en) Computer system having main memory and control method thereof
US10606488B2 (en) Selective data flush in a storage device
JP6557488B2 (ja) 不揮発性メモリ装置及びそれを含む格納装置、それの書込み方法及び読出し方法
KR20140065319A (ko) 선택 센싱 동작을 갖는 저항성 메모리 장치 및 그에 따른 억세스 동작 제어방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant