KR20150133084A - 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템 - Google Patents

메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템 Download PDF

Info

Publication number
KR20150133084A
KR20150133084A KR1020140059962A KR20140059962A KR20150133084A KR 20150133084 A KR20150133084 A KR 20150133084A KR 1020140059962 A KR1020140059962 A KR 1020140059962A KR 20140059962 A KR20140059962 A KR 20140059962A KR 20150133084 A KR20150133084 A KR 20150133084A
Authority
KR
South Korea
Prior art keywords
memory
storage device
task
page
data
Prior art date
Application number
KR1020140059962A
Other languages
English (en)
Other versions
KR102254099B1 (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 KR1020140059962A priority Critical patent/KR102254099B1/ko
Priority to US14/685,619 priority patent/US9898423B2/en
Priority to CN201510257186.3A priority patent/CN105095096B/zh
Publication of KR20150133084A publication Critical patent/KR20150133084A/ko
Application granted granted Critical
Publication of KR102254099B1 publication Critical patent/KR102254099B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Read Only Memory (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

메모리 스와핑 처리 방법 및 이를 적용하는 데이터 처리 시스템에 관하여 개시한다. 메모리 스와핑 처리 방법은 호스트 장치로부터 메모리 스와핑 태스크에 대한 큐 정보를 수신하는 단계, 상기 큐 정보에 기초하여 스토리지 장치에서 상기 메모리 스와핑 태스크의 일부 동작을 미리 수행하는 단계, 상기 메모리 스와핑 태스크의 일부 동작을 미리 수행하고 나서 상기 호스트 장치로부터 상기 큐 정보에 대응되는 커맨드를 수신하는 단계 및, 상기 미리 수행된 메모리 스와핑 태스크의 일부 동작의 결과를 이용하여 상기 커맨드에 따른 상기 메모리 스와핑 태스크의 나머지 동작을 수행하는 단계를 포함한다.

Description

메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템{Method for processing memory swapping operation, and host device, storage device and data processing system adopting the same}
본 발명은 메모리 제어 방법 및 장치에 관한 것으로서, 자세하게는 메모리 스와핑 처리 방법 및 이를 적용하는 데이터 처리 시스템에 관한 것이다.
가상 메모리 시스템에서는 프로세스들의 필요 여부에 따라 메모리의 저장 영역 배분이 변경되는 경우가 발생된다. 이에 따라 프로세스의 전체 페이지들 또는 일부 페이지가 메인 메모리에서 제거되기도 하고, 다시 로딩되기도 하는 메모리 스와핑 동작이 반복된다. 이와 같은 메모리 스와핑 동작을 수행하는 속도는 가상 메모리 시스템을 채용하는 데이터 처리 시스템의 성능에 영향을 끼친다.
본 발명의 목적은 메모리 스와핑 처리 속도를 향상시키기 위한 메모리 스와핑 처리 방법을 제공하는데 있다.
본 발명의 다른 목적은 스와핑 처리 속도를 향상시키기 위한 호스트 장치를 제공하는데 있다.
본 발명의 또 다른 목적은 스와핑 처리 속도를 향상시키기 위한 스토리지 장치를 제공하는데 있다.
본 발명의 또 다른 목적은 스와핑 처리 속도를 향상시키기 위한 데이터 처리 시스템을 제공하는데 있다.
본 발명의 기술적 사상의 일면에 따른 메모리 스와핑 처리 방법은 호스트 장치로부터 메모리 스와핑 태스크에 대한 큐 정보를 수신하는 단계, 상기 큐 정보에 기초하여 스토리지 장치에서 상기 메모리 스와핑 태스크의 일부 동작을 미리 수행하는 단계, 상기 메모리 스와핑 태스크의 일부 동작을 미리 수행하고 나서 상기 호스트 장치로부터 상기 큐 정보에 대응되는 커맨드를 수신하는 단계 및, 상기 미리 수행된 메모리 스와핑 태스크의 일부 동작의 결과를 이용하여 상기 커맨드에 따른 상기 메모리 스와핑 태스크의 나머지 동작을 수행하는 단계를 포함한다.
본 발명의 실시 예에 따르면, 상기 큐 정보는 상기 메모리 스와핑 태스크에 대한 정보 및 상기 메모리 스와핑 태스크에 따라 요청되는 데이터의 속성에 대한 정보를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 큐 정보는 태스크의 우선순위 정보를 더 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 큐 정보는 초기 설정된 커맨드를 이용하여 상기 호스트 장치로부터 상기 스토리지 장치로 전송될 수 있다.
본 발명의 실시 예에 따르면, 상기 메모리 스와핑 태스크의 일부 동작은 상기 큐 정보에서 리드 커맨드에 대한 태스크를 지시하는 경우에 상기 스토리지 장치의 비휘발성 메모리 장치로부터 데이터를 독출하여 상기 스토리지 장치의 랜덤 액세스 메모리에 저장하는 동작을 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 메모리 스와핑 태스크의 일부 동작은 상기 큐 정보에서 라이트 커맨드에 대한 태스크를 지시하는 경우에 상기 스토리지 장치에서의 어드레스 변환 처리 또는 메모리 인터리빙 스케쥴링 처리 중의 적어도 하나를 수행하는 동작을 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 메모리 스와핑 태스크의 일부 동작을 미리 수행하는 단계는 상기 큐 정보에 기초하여 상기 메모리 스와핑 태스크에 대한 페이지 아웃 동작과 페이지 인 동작을 상기 스토리지 장치의 각기 다른 메모리 칩에서 수행하도록 어드레스 변환 처리를 실행하는 단계 및, 상기 어드레스 변환 처리 결과에 기초하여 페이지 아웃 동작에 따른 라이트 동작 또는 페이지 인 동작에 따른 리드 동작 중의 적어도 하나의 일부 동작을 미리 수행하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 페이지 아웃 동작의 프로그램 타임과 상기 페이지 인 동작의 리드 수행 타임의 일부를 중첩시켜서 상기 페이지 인 동작을 미리 수행할 수 있다.
본 발명의 실시 예에 따르면, 상기 메모리 스와핑 태스크의 일부 동작을 미리 수행하는 단계는 상기 호스트 장치로부터 수신되는 복수의 큐 정보들에 기초하여 태스크 처리 순서를 재배열하는 단계 및, 상기 재배열된 태스크 처리 순서에 기초하여 상기 스토리지 장치에서 상기 메모리 스와핑 태스크의 일부 동작을 미리 수행하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 복수의 큐 정보들에 포함된 우선순위 정보에 기초하여 태스크 처리 순서를 재배열할 수 있다.
본 발명의 실시 예에 따르면, 상기 커맨드는 수신하는 단계는 상기 스토리지 장치의 큐 상태를 알리는 신호를 상기 호스트 장치로 전송하는 단계 및, 상기 큐 상태를 알리는 신호에 기초하여 상기 호스트 장치로부터 상기 큐 정보에 대응되는 커맨드를 수신하는 단계를 포함하고, 상기 큐 상태를 알리는 신호는 상기 큐 정보에 따른 상기 메모리 스와핑 태스크의 일부 동작의 완료 상태를 나타내는 정보를 포함할 수 있다.
발명의 기술적 사상의 다른 면에 따른 호스트 장치는 메인 메모리 및, 상기 메인 메모리에 로딩된 데이터를 이용하여 어플리케이션 프로세스를 수행하는 프로세서를 포함하고, 상기 프로세서는 페이지 폴트가 발생되는 경우에 메모리 스와핑 태스크에 대한 큐 정보 및 상기 큐 정보에 대응되는 커맨드를 순차적으로 스토리지 장치로 전송하는 것을 특징으로 한다.
본 발명의 실시 예에 따르면, 상기 프로세서는 상기 메모리 스와핑 태스크에 따른 페이지 인 동작 또는 페이지 아웃 동작 중 적어도 하나의 동작에 대한 큐 정보를 상기 스토리지 장치로 전송하도록 동작할 수 있다.
본 발명의 실시 예에 따르면, 상기 프로세서는 초기 설정된 커맨드를 이용하여 상기 큐 정보를 상기 스토리지 장치로 전송할 수 있다.
본 발명의 실시 예에 따르면, 상기 프로세서는 상기 메모리 스와핑 태스크에 대한 큐 정보를 상기 스토리지 장치로 전송한 후에, 상기 스토리지 장치의 큐 상태에 기초하여 상기 메모리 스와핑 태스크를 수행하기 위한 커맨드를 상기 스토리지 장치로 전송할 수 있다.
발명의 기술적 사상의 또 다른 면에 따른 스토리지 장치는 메모리 스왑 공간이 할당된 메모리 장치 및, 상기 메모리 장치에 대한 리드 동작 및 라이트 동작을 제어하는 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는 메모리 스와핑 태스크에 대한 큐 정보 및 상기 큐 정보에 대응되는 커맨드를 수신하고, 상기 수신된 큐 정보에 기초하여 상기 메모리 장치에서 상기 스와핑 태스크에 대한 일부 동작을 미리 수행한 후에 상기 커맨드에 기초하여 상기 스와핑 태스크의 나머지 동작을 수행하도록 상기 메모리 장치를 제어하는 것을 특징으로 한다.
본 발명의 실시 예에 따르면, 상기 메모리 장치는 복수의 플래시 메모리 칩들로 구성되고, 상기 메모리 컨트롤러는 상기 메모리 스와핑 태스크에 대한 페이지 아웃 동작과 페이지 인 동작을 상기 메모리 장치를 구성하는 각기 다른 플래시 메모리 칩에서 수행하도록 어드레스 변환 처리를 실행할 수 있다.
본 발명의 실시 예에 따르면, 상기 메모리 컨트롤러는 상기 페이지 아웃 동작의 프로그램 타임과 상기 페이지 인 동작의 리드 타임의 일부가 중첩되도록 오퍼레이션 타이밍을 결정할 수 있다.
본 발명의 실시 예에 따르면, 상기 메모리 컨트롤러는 상기 큐 정보에 포함된 우선순위 정보에 기초하여 상기 메모리 스와핑 태스크에 대한 실행 순서를 재배열할 수 있다.
본 발명의 실시 예에 따르면, 상기 메모리 컨트롤러는 상기 큐 정보에 상기 메모리 스와핑 태스크에 대한 페이지 아웃 동작 및 페이지 인 동작에 대한 태스크가 포함되어 있는 경우에 상기 페이지 인 동작 처리를 우선적으로 수행하도록 상기 메모리 장치의 읽기 동작 또는 쓰기 동작의 순서를 제어할 수 있다.
본 발명의 실시 예에 따르면, 상기 메모리 컨트롤러는 상기 스토리지 장치의 큐 상태를 알려주는 신호를 생성하여 호스트 장치로 전송할 수 있다.
발명의 기술적 사상의 또 다른 면에 따른 데이터 처리 시스템은 페이지 폴트가 발생되는 경우에 메모리 스와핑 태스크에 대한 큐 정보 및 상기 큐 정보에 대응되는 커맨드를 순차적으로 스토리지 장치로 전송하는 호스트 장치 및, 상기 호스트 장치로부터 수신된 큐 정보에 기초하여 상기 메모리 스와핑 태스크의 일부 동작을 미리 수행하고, 상기 미리 수행된 메모리 스와핑 태스크의 일부동작의 결과를 이용하여 상기 커맨드에 따른 상기 메모리 스와핑 태스크의 나머지 동작을 실행하는 스토리지 장치를 포함한다.
본 발명의 실시 예에 따르면, 상기 호스트 장치는 페이지 폴트가 발생되는 경우에 메모리 스와핑 태스크에 대한 큐 정보를 상기 스토리지 장치로 전송한 후에, 상기 스토리지 장치의 큐 상태에 기초하여 상기 메모리 스와핑 태스크를 수행하기 위한 커맨드를 상기 스토리지 장치로 전송할 수 있다.
본 발명의 실시 예에 따르면, 상기 스토리지 장치는 상기 메모리 스와핑 태스크에 대한 페이지 아웃 동작의 프로그램 타임과 페이지 인 동작의 리드 타임의 일부가 중첩되도록 오퍼레이션 타이밍을 결정할 수 있다.
본 발명의 실시 예에 따르면, 상기 스토리지 장치는 임베디드 멀티미디어 카드로 구현될 수 있다.
본 발명에 따르면 데이터 처리 시스템에서의 큐 정보를 이용하여 메모리 스와핑 리퀘스트(request)에 따른 페이지 인 동작 또는 페이지 아웃 동작을 스토리지 장치에서 미리 수행함으로써, 메모리 스와핑 처리 속도를 높일 수 있는 효과가 발생된다.
그리고, 큐 정보를 이용하여 스토리지 장치에서 페이지 인 동작 수행 타임과 페이지 아웃 동작 수행 타임의 일부를 중첩시킴으로써, 데이터 전송 속도를 높일 수 있는 효과가 발생된다.
그리고, 큐 정보를 이용하여 스토리지 장치에서 태스크 수행 순서를 재배열하여 메모리 스와핑 처리를 실행함으로써, 호스트 장치에서의 새로 요청된 프로세스에 대한 수행 속도를 높일 수 있는 효과가 발생된다.
또한, 호스트 장치에서 스토리지 장치의 큐 준비 상태를 체크한 후에 큐 정보에 대응되는 커맨드를 스토리지 장치로 전송함으로써, 레이턴시(latency) 없이 데이터를 빠르게 전송할 수 있는 효과가 발생된다.
도 1은 발명의 실시 예에 따른 데이터 처리 시스템의 블록 구성도이다.
도 2는 도 1에 도시된 데이터 처리 시스템의 구성을 개략적으로 나타내는 블록도이다.
도 3은 도 2에 도시된 메인 메모리에 저장되는 프로그램들 및 데이터들을 예시적으로 보여주는 도면이다.
도 4는 도 2에 도시된 메모리 컨트롤러를 상세하게 나타내는 블록도이다.
도 5는 도 2에 도시된 메모리 장치를 상세하게 나타내는 블록도이다.
도 6은 도 5에 도시된 메모리 셀 어레이의 일 예를 나타낸다.
도 7은 도 5에 도시된 메모리 셀 어레이에 포함된 제1메모리 블록의 일 예를 나타내는 회로도이다.
도 8은 도 7에 도시된 제1메모리 블록의 일 예의 비트 라인 방향에 따른 단면도이다.
도 9는 도 7에 도시된 제1메모리 블록의 일 예의 워드 라인 방향에 따른 단면도이다.
도 10은 도 7에 도시된 제1메모리 블록의 다른 예의 비트 라인 방향에 따른 단면도이다.
도 11은 도 7에 도시된 제1메모리 블록에 포함된 셀 스트링의 다른 예를 나타내는 회로도이다.
도 12는 도 7에 도시된 제1메모리 블록에 포함된 셀 스트링의 또 다른 예를 나타내는 회로도이다.
도 13은 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 블록 구성도이다.
도 14는 본 발명의 실시 예에 따른 데이터 처리 시스템에서의 프로세스 호출에 따라서 메인 메모리 영역의 배분이 변화되는 과정을 보여주는 도면이다.
도 15는 본 발명의 실시 예에 따른 데이터 처리 시스템에서의 RAM(메인 메모리)과 스토리지 장치 사이의 메모리 스와핑 동작에 따른 데이터 이동 과정의 예를 보여주는 도면이다.
도 16은 본 발명의 데이터 처리 시스템에서의 일 실시 예에 따른 메모리 스와핑 동작 과정을 보여주는 도면이다.
도 17은 본 발명의 데이터 처리 시스템에서의 다른 실시 예에 따른 메모리 스와핑 동작 과정을 보여주는 도면이다.
도 18은 본 발명의 데이터 처리 시스템에서의 또 다른 실시 예에 따른 메모리 스와핑 동작 과정을 보여주는 도면이다.
도 19는 본 발명의 데이터 처리 시스템에서의 또 다른 실시 예에 따른 메모리 스와핑 동작 과정을 보여주는 도면이다.
도 20의 (a) 및 (b)는 본 발명의 데이터 처리 시스템에서의 또 다른 실시 예에 따른 메모리 스와핑 동작 과정을 보여주는 도면이다.
도 21은 본 발명과 관련된 멀티미디어 카드 시스템에서의 HPI동작에 따른 태스크 처리 상태를 보여주는 도면이다.
도 22는 본 발명의 데이터 처리 시스템에서의 스토리지 장치의 큐 상태에 기초한 메모리 스와핑 처리 동작을 설명하기 위한 도면이다.
도 23은 본 발명의 실시 예에 따른 메모리 스와핑 처리 방법의 흐름도이다.
도 24는 도 23에 도시된 메모리 스와핑 태스크의 일부 동작을 미리 수행하는 단계에 대한 일 실시 예에 따른 세부 흐름도이다.
도 25는 도 23에 도시된 메모리 스와핑 태스크의 일부 동작을 미리 수행하는 단계에 대한 다른 실시 예에 따른 세부 흐름도이다.
도 26은 도 23에 도시된 커맨드를 수신하는 단계에 대한 일 실시 예에 따른 세부 흐름도이다.
도 27은 본 발명의 실시 예에 따른 데이터 처리 시스템의 호스트 장치에서 수행되는 메모리 스와핑 처리 동작의 예를 보여주는 흐름도이다.
도 28은 본 발명의 실시 예에 따른 데이터 처리 시스템의 호스트 장치에서 수행되는 메모리 스와핑 처리 동작의 다른 예를 보여주는 흐름도이다.
도 29는 본 발명의 실시 예에 따른 데이터 처리 시스템의 스토리지 장치에서수행되는 메모리 스와핑 처리 동작의 일 예를 보여주는 흐름도이다.
도 30은 본 발명의 실시 예에 따른 데이터 처리 시스템의 스토리지 장치에서 수행되는 메모리 스와핑 처리 동작의 다른 예를 보여주는 흐름도이다.
도 31은 본 발명에 따른 데이터 처리 시스템의 스토리지 장치에 적용되는 메모리 장치의 예를 나타내는 도면이다.
도 32는 본 발명에 따른 데이터 처리 시스템의 스토리지 장치에 적용되는 메모리 모듈의 예를 나타내는 도면이다.
도 33은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 나타내는 도면이다.
도 34는 본 발명에 따른 데이터 처리 시스템의 스토리지 장치에 적용되는 메모리 카드의 예를 나타내는 도면이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다. 본 발명의 실시 예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 발명의 실시 예에 따른 데이터 처리 시스템의 블록 구성도이다.
도 1에 도시된 바와 같이, 데이터 처리 시스템(1000)은 호스트 장치(100)와 스토리지 장치(200)를 포함한다.
호스트 장치(100)와 스토리지 장치(200)는 전기적으로 연결되어 있다. 호스트 장치(100)에서 스토리지 장치(200)로 큐(Queue) 정보(Q-CMD) 및 커맨드(CMD)를 전송할 수 있다. 그리고, 호스트 장치(100)와 스토리지 장치(200)간에 데이터를 주고받을 수 있다. 예로서, 스토리지 장치(200)는 임베디드 멀티미디어 카드(embedded Multi-Media Card; eMMC) 형태로 구현될 수 있다.
호스트 장치(100)는 페이지 폴트가 발생되는 경우에 메모리 스와핑 태스크에 대한 큐(Queue) 정보(Q-CMD) 및 큐 정보(Q-CMD)에 대응되는 커맨드(CMD)를 순차적으로 스토리지 장치(200)로 전송한다. 페이지 폴트는 호스트 장치(100)에서 애플리케이션 프로세스를 수행하기 위하여 읽고자 하는 페이지가 호스트 장치(100)에 저장되어 있지 않는 경우에 발생된다. 예로서, 큐 정보(Q-CMD)는 메모리 스와핑 동작에 대한 페이지 인 동작 또는 페이지 아웃 동작 중 적어도 하나에 대한 큐 정보를 포함할 수 있다. 큐 정보(Q-CMD)는 메모리 스와핑 동작에 대한 페이지 인 동작 또는 페이지 아웃 동작 중 적어도 하나를 수행하는 리드 커맨드 또는 라이트 커맨드에 대한 태스크를 나타내는 정보이다. 큐 정보(Q-CMD)는 메모리 스와핑 태스크에 대한 정보 및 호스트 장치(100)에서 요청하는 데이터의 속성에 대한 정보를 포함할 수 있다. 큐 정보(Q-CMD)는 태스크 우선순위 정보를 포함할 수도 있다. 그리고, 큐 정보(Q-CMD)는 초기 설정된 커맨드를 이용하여 스토리지 장치(200)로 전송할 수 있다.
스토리지 장치(200)는 호스트 장치(200)로부터 전송된 큐 정보(Q-CMD)에 기초하여 메모리 스와핑 태스크의 일부를 미리 수행한다. 그리고 나서, 큐 정보(Q-CMD)에 대응되는 커맨드(CMD)가 수신되면 미리 수행된 메모리 스와핑 태스크의 일부를 이용하여 메모리 스와핑 태스크의 나머지 동작을 실행한다.
메모리 스와핑 태스크에 대한 페이지 아웃 동작 또는 페이지 인 동작 수행에 따른 데이터(DATA)의 전송 및 수신은 호스트 장치(100)와 스토리지 장치(200) 사이의 데이터 버스를 통하여 이루어질 수 있다.
도 2는 도 1에 도시된 데이터 처리 시스템의 구성을 개략적으로 나타내는 블록도이다.
도 2에 도시된 바와 같이, 데이터 처리 시스템(1000)의 호스트 장치(100)는 프로세서(110) 및 메인 메모리(120)를 포함한다.
프로세서(110)는 특정 계산들 또는 태스크들을 처리하는 애플리케이션들을 수행한다. 예로서, 프로세서(110)는 마이크로프로세서 또는 중앙 처리 장치(Central Processing Unit; CPU)가 될 수 있다.
프로세서(110)는 메인 메모리(120)와 전기적으로 연결되어 있다. 프로세서(120)는 어드레스 버스, 제어 버스 및/또는 데이터 버스를 포함하는 버스(130)를 통하여 메인 메모리(120)에 연결될 수 있다. 프로세서(110)는 메인 메모리(120)에 로딩된 데이터를 읽어내어 다양한 프로세스를 수행할 수 있다.
메인 메모리(120)에는 호스트 장치(100)에서의 프로세스 수행에 필요한 데이터가 저장된다. 여기에서, 데이터는 프로그램 및 스택 정보도 포함하는 것을 의미한다.
메인 메모리(120)는 예로서, DRAM(Dynamic Random Access Memory) 또는 SRAM(Static Random Access Memory)로 구현할 수 있다.
프로세서(110)는 가상 메모리 시스템을 이용하여 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 할당할 수 있다. 이러한 방식은 멀티태스킹 운영 체제에서 사용될 수 있으며, 메인 메모리(120)보다 큰 메모리 영역을 제공하는 방법으로도 사용된다. 가상 메모리 시스템에서 프로그램은 메인 메모리(120) 용량보다 큰 주소 공간을 사용하게 되므로 프로그램 데이터에서 사용되는 모든 주소 공간의 정보를 메인 메모리(120)에 로드할 수 없게 된다. 따라서, 프로그램의 실행에 필요한 부분만을 메인 메모리(120)에 로드시키고, 나머지 부분은 스왑 공간(swap space)으로 사용되는 스토리지 장치(200)의 메모리 장치(220)에 저장한다.
메모리 스와핑(memory swapping) 동작은 가상 메모리 시스템에서 메인 메모리(120)보다 큰 프로그램을 실행시키거나 메인 메모리(120)보다 큰 데이터 파일을 다룰 수 있게 하는 유용한 기술이다. 예로서, 메모리 스와핑은 페이지 혹은 세그먼트 단위의 데이터를 교환할 수 있다.
프로세서(110)는 프로세스의 전체 페이지 혹은 각 페이지가 메인 메모리(120)에서 제거될 필요가 있을 경우에 제거될 데이터를 메모리 스와핑 동작을 이용하여 스토리지 장치(200)의 메모리 장치(220)에 저장한다.
프로세서(110)는 페이지 폴트가 발생되는 경우에 메모리 스와핑 태스크에 대한 큐(Queue) 정보(Q-CMD) 및 커맨드(CMD)를 순차적으로 유선 또는 무선 인터페이스(300)를 통하여 스토리지 장치(200)로 전송한다.
프로세서(110)는 새로운 프로세스를 수행하는 요청이 발생될 때 요청된 프로세스에 대한 데이터가 메인 메모리(120)에 로딩되어 있는지를 확인한다. 만일 요청된 프로세스에 대한 데이터가 메인 메모리(120)에 로딩되어 있지 않는 경우에 페이지 폴트(page fault)가 발생된다. 페이지 폴트가 발생되면, 프로세서(110)는 스와핑 태스크에 대한 큐(Queue) 정보(Q-CMD)를 우선적으로 스토리지 장치(200)로 전송한다. 그리고 나서, 프로세서(110)는 스와핑 태스크에 대한 커맨드를 스토리지 장치(200)로 전송한다.
예로서, 프로세서(110)는 큐 정보(Q-CMD)를 초기 설정된 커맨드를 사용하여 스토리지 장치(200)로 전송할 수 있다. 예로서, eMMC 프로토콜(protocol)에서 큐잉(queuing)된 태스크의 파라미터를 알려주는 특수한 커맨드를 사용하여 큐 정보(Q-CMD)를 스토리지 장치(200)로 전송할 수 있다.
데이터 처리 시스템(1000)의 스토리지 장치(200)는 메모리 컨트롤러(210) 및 메모리 장치(220)를 포함한다.
스토리지 장치(200)의 메모리 컨트롤러(210)는 유선 또는 무선 인터페이스(300)를 통하여 호스트 장치(100)의 프로세서(110)로부터 정보를 수신하거나 프로세서(110)로 정보를 전송할 수 있다.
메모리 컨트롤러(210)는 메모리 장치(220)와 전기적으로 연결되어 있다. 메모리 컨트롤러(210)는 어드레스 버스, 제어 버스 및/또는 데이터 버스를 포함하는 버스(230)를 통하여 메모리 장치(220)에 연결될 수 있다.
메모리 장치(220)는 비휘발성 메모리 장치로서 메모리 스왑 공간이 할당되어 있다. 이에 따라서, 메모리 장치(220)의 메모리 스왑 공간에는 메모리 스와핑 데이터가 저장될 수 있다. 예로서, 메모리 장치(220)는 플래시 메모리, PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 등으로 구성될 수 있다. 예로서, 메모리 장치(220)는 복수 개의 플래시 메모리 칩으로 구성될 수 있다.
메모리 컨트롤러(210)는 호스트 장치(100)로부터 수신되는 큐 정보(Q-CMD) 및 커맨드(CMD)에 응답하여 메모리 장치(220)에서의 소거, 쓰기 또는 읽기 동작을 제어한다.
메모리 컨트롤러(210)는 호스트 장치(200)로부터 전송된 큐 정보(Q-CMD)에 기초하여 메모리 스와핑 태스크의 일부를 미리 수행하고, 미리 수행된 메모리 스와핑 태스크의 일부를 이용하여 커맨드(CMD)에 따른 메모리 스와핑 태스크의 나머지 동작을 실행하도록 메모리 장치(220)의 읽기 동작 또는 쓰기 동작을 제어한다.
예로서, 메모리 컨트롤러(210)는 메모리 스와핑 태스크에 대한 페이지 아웃 동작과 페이지 인 동작을 메모리 장치(220)를 구성하는 각기 다른 플래시 메모리 칩에서 수행하도록 어드레스 변환 처리를 실행할 수 있다.
예로서, 메모리 컨트롤러(210)는 페이지 아웃 동작의 프로그램 타임과 페이지 인 동작의 리드 타임의 일부가 중첩되도록 오퍼레이션 타이밍을 결정할 수 있다.
예로서, 메모리 컨트롤러(210)는 큐 정보에 메모리 스와핑 태스크에 대한 페이지 아웃 동작 및 페이지 인 동작에 대한 태스크가 포함되어 있을 때 페이지 인 동작 처리를 우선적으로 수행하도록 메모리 장치의 읽기 동작 또는 쓰기 동작의 실행 순서를 제어할 수 있다.
예로서, 메모리 컨트롤러(210)는 큐 정보에 포함된 우선순위 정보에 기초하여 태스크 처리 순서를 재배열할 수 있다. 즉, 큐 정보에 포함된 우선순위에 따라서 큐 정보의 순서를 재배열하고, 재배열된 큐 정보의 순서에 따라서 메모리 스와핑 태스크의 일부 동작을 미리 수행하도록 메모리 장치(220)를 제어할 수 있다. 메모리 컨트롤러(210)는 재배열된 큐 정보의 순서를 호스트 장치(100)로 전송할 수 있다.
예로서, 메모리 컨트롤러(210)는 스토리지 장치(200)의 큐 상태를 알리는 신호를 호스트 장치(100)로 전송할 수 있다. 즉, 스토리지 장치(200)에서의 큐에 대한 준비가 되었음을 알리는 신호를 호스트 장치(100)로 전송할 수 있다.
도 3은 도 2에 도시된 메인 메모리(120)에 저장되는 프로그램들 또는 데이터들을 예시적으로 보여주는 도면이다.
도 3을 참조하면, 메인 메모리(120)에는 오퍼레이팅 시스템(operating system; 120-1), 애플리케이션(application; 120-2), 파일 시스템(file system; 120-3), 메모리 매니저(memory manager; 120-4), 디바이스 드라이버(device driver; 120-5) 및 페이지 테이블(page table; 120-6) 등이 저장될 수 있다.
오퍼레이팅 시스템(120-1)은 호스트 장치(100)의 하드웨어 및 소프트웨어 자원(resource)을 제어하는 프로그램이다. 오퍼레이팅 시스템(120-1)은 하드웨어와 애플리케이션 프로그램간의 인터페이스 역할을 하며 호스트 장치(100)의 자원을 관리한다.
애플리케이션(120-2)은 호스트 장치(100)에서 실행되는 다양한 응용 프로그램들을 나타낸다. 예로서, 파일 또는 데이터를 가공하는 동작 등을 지원하는 프로그램들이 포함될 수 있다.
파일 시스템(120-3)은 파일 또는 데이터를 호스트 장치(100)의 메인 메모리(120) 또는 호스트 장치(100)에 접속된 스토리지 장치(200)에 저장하거나 검색하기 위하여 논리적인 주소 및 저장 위치를 관리하는 프로그램이다.
메모리 매니저(120-4)는 메인 메모리(120)에 대한 메모리 액세스 동작 또는 호스트(100)에 접속된 스토리지 장치(200)에 대한 메모리 액세스 동작을 제어하는 프로그램이다.
디바이스 드라이버(120-5)는 호스트 장치(100)에 접속된 스토리지 장치(200)와의 통신을 지원하는 프로그램이다.
페이지 테이블(120-6)에는 메인 메모리(120) 및 호스트 장치(100)에 접속된 스토리지 장치(200)에 저장되어 있는 정보에 대한 페이지 목록들이 저장되어 있다. 예로서, 페이지 목록들은 논리적 페이지 주소에 대응되는 물리적 페이지 주소에 대한 정보로 구성될 수 있다. 예로서, 페이지 테이블(120-6)에 저장된 물리적 페이지 주소에 기초하여 액세스하고자 하는 정보가 메인 메모리(120)에 저장되어 있는지 또는 호스트 장치(100)에 접속된 스토리지 장치(200)에 저장되어 있는지를 판단할 수 있다. 예로서, 페이지 테이블(120-6)에 메모리 맵(memory map) 정보가 포함될 수 있다. 다른 예로서, 메모리 맵(memory map) 정보를 페이지 테이블(120-6)과 분리하여 별도로 저장할 수도 있다.
도 2 및 도 3을 참조하면, 프로세서(110)는 메인 메모리(120)에 로딩된 오퍼레이팅 시스템(120-1), 파일 시스템(120-3) 또는 메모리 매니저(120-4) 중의 적어도 하나의 프로그램을 이용하여 페이지 테이블(120-6)을 검색하여 새로 생성된 프로세스에 대하여 페이지 폴트가 발생되는지를 판단할 수 있다. 또한, 프로세서(110)는 오퍼레이팅 시스템(120-1), 파일 시스템(120-3), 메모리 매니저(120-4) 또는 디바이스 드라이버(120-5) 중의 적어도 하나의 프로그램을 이용하여 페이지 폴트가 발생되는 경우에 메모리 스와핑 태스크에 대한 큐(Queue) 정보(Q-CMD) 및 커맨드(CMD)를 순차적으로 스토리지 장치(200)로 전송할 수 있다.
도 4는 도 2에 도시된 메모리 컨트롤러(210)를 상세하게 나타내는 블록도이다.
도 4에 도시된 바와 같이, 메모리 컨트롤러(210)는 컨트롤 유닛(211), RAM(212), 커맨드 큐(213), 메모리 인터페이스(214), 호스트 인터페이스(215) 및 버스(216)를 포함한다.
버스(216)는 메모리 컨트롤러(210)의 구성 수단들 간의 데이터, 어드레스 및 제어 신호들을 전송하는 전송로를 의미한다.
RAM(212)에는 호스트 장치(100)로부터 전송된 데이터 및 컨트롤 유닛(211)에서 생성된 데이터가 임시로 저장되거나 호스트 장치(100)로 전송될 데이터가 임시로 저장된다. 또한, RAM(212)에는 메타 데이터 및 주소 변환에 이용되는 파라미터 값들이 저장되는 영역이 할당되어 있다. 그리고, RAM(212)에는 호스트 장치(100)로부터 전송되는 큐 정보(Q-CMD)들이 저장되는 영역도 할당될 수도 있다. RAM(212)은 DRAM, SRAM 등으로 구현될 수 있다.
커맨드 큐(Command Queue; 213)에는 호스트 장치(100)로부터 수신된 커맨드를 순차적으로 저장한다.
컨트롤 유닛(211)은 스토리지 장치(200)의 전반적인 동작을 제어한다. 세부적으로, 호스트 장치(100)로부터 수신되는 큐 정보(Q-CMD) 및 커맨드(CMD)를 해독하고, 해독된 결과에 따른 동작을 수행하도록 스토리지 장치(200)를 제어한다.
컨트롤 유닛(211)은 호스트 장치(200)로부터 전송된 큐 정보(Q-CMD)에 기초하여 메모리 스와핑 태스크의 일부를 미리 수행한다. 그리고, 호스트 장치(200)로부터 큐 정보(Q-CMD)에 대응되는 커맨드(CMD)가 수신될 때 미리 수행된 메모리 스와핑 태스크의 일부를 이용하여 메모리 스와핑 태스크의 나머지 동작을 실행하도록 메모리 장치(220)의 읽기 동작 또는 쓰기 동작을 제어한다.
예로서, 컨트롤 유닛(211)은 큐 정보에 기초한 메모리 스와핑 태스크에 대한 페이지 아웃 동작과 페이지 인 동작을 메모리 장치(220)를 구성하는 각기 다른 플래시 메모리 칩에서 수행하도록 어드레스 변환 처리를 실행할 수 있다. 예로서, 도 17에 도시된 바와 같이 컨트롤 유닛(211)은 페이지 아웃 동작의 프로그램 타임과 페이지 인 동작의 리드 타임의 일부가 중첩되도록 오퍼레이션 타이밍을 결정할 수 있다.
예로서, 컨트롤 유닛(211)은 큐 정보에 포함된 우선순위 정보에 기초하여 태스크 처리 순서를 재배열할 수 있다. 즉, 큐 정보에 포함된 우선순위에 따라서 큐 정보들의 순서를 재배열하고, 재배열된 큐 정보들의 순서에 따라서 메모리 스와핑 태스크의 일부 동작을 미리 수행하도록 메모리 장치(220)를 제어할 수 있다.
예로서, 컨트롤 유닛(211)은 커맨드 큐(213)의 상태를 알리는 신호를 호스트 장치(100)로 전송할 수 있다. 즉, 커맨드 큐(213)의 수행 준비가 되었음을 알리는 신호를 호스트 장치(100)로 전송할 수 있다. 예로서, 컨트롤 유닛(211)은 큐 정보에 따른 준비 동작을 완료 상태를 알리는 신호를 호스트 장치(100)로 전송할 수 있다.
메모리 인터페이스(214)는 메모리 장치(220)와 전기적으로 연결되어 있다. 메모리 인터페이스(214)는 컨트롤 유닛(211)의 제어에 따라서 메모리 장치(220)와 커맨드, 어드레스 및 데이터를 교환한다. 메모리 인터페이스(214)는 NAND 플래시 메모리 또는 NOR 플래시 메모리를 지원하도록 구성될 수 있다. 메모리 인터페이스(214)는 복수 개의 채널들을 통하여 소프트웨어 및 하드웨어 인터리브 동작들이 선택적으로 수행되도록 구성될 수도 있다.
호스트 인터페이스(215)는 호스트 장치(100)와의 데이터 교환 프로토콜을 구비하고 스토리지 장치(200)와 호스트 장치(100)를 상호 연결한다. 호스트 인터페이스(215)는 ATA(Advanced Technology Attachment) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, USB(Universal Serial Bus) 또는 SAS(Serial Attached Small Computer System) 인터페이스, SCSI(Small Computer System Interface), eMMC(embedded Multi Media Card) 인터페이스, UFS(Unix File System) 인터페이스로 구현할 수 있다. 그러나 이는 예시일 뿐 이에 제한되는 것은 아니다. 세부적으로, 호스트 인터페이스(215)는 컨트롤 유닛(211)의 제어에 따라서 호스트 장치(100)와 커맨드, 어드레스 및 데이터를 교환한다.
도 5는 도 2에 도시된 메모리 장치(220)를 상세하게 나타내는 블록도이다.
도 5를 참조하면, 메모리 장치(220)는 메모리 셀 어레이(11), 제어 로직(control logic; 12), 전압 생성부(13), 로우 디코더(14) 및 페이지 버퍼(15)를 포함할 수 있다. 이하에서는, 메모리 장치(220)에 포함된 구성 요소들에 대하여 상술하기로 한다.
메모리 셀 어레이(11)는 하나 이상의 스트링 선택 라인(SSL), 복수의 워드 라인들(WL) 및 하나 이상의 접지 선택 라인(GSL)에 연결될 수 있으며, 또한 복수의 비트 라인들(BL)에 연결될 수 있다. 메모리 셀 어레이(11)는 복수의 워드 라인들(WL) 및 복수의 비트 라인들(BL)이 교차하는 영역들에 배치되는 복수의 메모리 셀들(도 7, 8, 10의 MC)을 포함할 수 있다.
메모리 셀 어레이(11)에 소거 전압이 인가되면 복수의 메모리 셀들(MC)은 소거 상태가 되며, 메모리 셀 어레이(11)에 프로그램 전압이 인가되면 복수의 메모리 셀들(MC)은 프로그램 상태가 된다. 이때, 각 메모리 셀(MC)은 문턱 전압에 따라 구분되는 소거 상태 및 제1 내지 제n 프로그램 상태들(P1 내지 Pn) 중 하나를 가질 수 있다.
여기서, n은 2 이상의 자연수일 수 있다. 예를 들어, 메모리 셀(MC)이 2 비트 레벨 셀인 경우 n은 3일 수 있다. 다른 예에서, 메모리 셀(MC)이 3 비트 레벨 셀인 경우 n은 7일 수 있다. 또 다른 예에서, 메모리 셀(MC)이 4 비트 레벨 셀인 경우 n은 15일 수 있다. 이와 같이, 복수의 메모리 셀들(MC)은 멀티 레벨 셀들을 포함할 수 있다. 그러나, 본 발명의 기술적 사상은 이에 한정되지 않고, 복수의 메모리 셀들(MC)은 싱글 레벨 셀들을 포함할 수도 있다.
제어 로직(12)은 메모리 컨트롤러(210)로부터 수신한 커맨드(CMD), 어드레스(ADDR) 및 제어 신호(CTRL)를 기초로 하여, 메모리 셀 어레이(11)에 데이터를 기입하거나 메모리 셀 어레이(11)로부터 데이터를 독출하기 위한 각종 제어 신호를 출력할 수 있다. 이로써, 제어 로직(12)은 메모리 장치(220) 내의 각종 동작을 전반적으로 제어할 수 있다.
제어 로직(12)에서 출력된 각종 제어 신호는 전압 생성부(13), 로우 디코더(14) 및 페이지 버퍼(15)에 제공될 수 있다. 구체적으로, 제어 로직(12)은 전압 생성부(13)에 전압 제어 신호(CTRL_vol)를 제공할 수 있고, 로우 디코더(14)에 로우 어드레스(X_ADDR)를 제공할 수 있으며, 페이지 버퍼(15)에 칼럼 어드레스(Y_ADDR)를 제공할 수 있다.
전압 생성부(13)는 전압 제어 신호(CTRL_vol)를 기초로 하여 메모리 셀 어레이(11)에 대한 프로그램, 독출 및 소거 동작을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 구체적으로, 전압 생성부(13)는 복수의 워드 라인들(WL)을 구동하기 위한 제1 구동 전압(VWL), 복수의 스트링 선택 라인들(SSL)을 구동하기 위한 제2 구동 전압(VSSL) 및 복수의 라운드 선택 라인들(GSL)을 구동하기 위한 제3 구동 전압(VGSL)을 생성할 수 있다.
이때, 제1 구동 전압(VWL)은 프로그램 전압(또는 기입 전압), 독출 전압, 소거 전압, 패스 전압 또는 프로그램 검증 전압일 수 있다. 또한, 제2 구동 전압(VSSL)은 스트링 선택 전압, 즉, 온(on) 전압 또는 오프(off) 전압일 수 있다. 나아가, 제3 구동 전압(VGSL)은 그라운드 선택 전압, 즉, 온 전압 또는 오프 전압일 수 있다.
본 실시예에서, 전압 생성부(13)는 전압 제어 신호(CTRL_vol)를 기초로 하여, 프로그램 루프가 시작될 때, 즉, 프로그램 루프의 횟수가 1인 경우, 프로그램 시작 전압을 프로그램 전압으로 생성할 수 있다. 또한, 전압 생성부(13)는 프로그램 루프의 횟수가 증가할수록 프로그램 시작 전압에서 스텝 전압만큼 단계적으로 증가하는 전압을 프로그램 전압으로 생성할 수 있다.
로우 디코더(14)는 복수의 워드 라인들(WL)을 통해 메모리 셀 어레이(11)에 연결되고, 제어 로직(12)으로부터 수신한 로우 어드레스(X_ADDR)에 응답하여 복수의 워드 라인들(WL) 중 일부 워드 라인을 활성화할 수 있다. 구체적으로, 독출 동작 시에 로우 디코더(14)는 선택된 워드 라인에 독출 전압을 인가하고, 비 선택된 워드 라인에 패스 전압을 인가할 수 있다.
한편, 프로그램 동작 시에 로우 디코더(14)는 선택된 워드 라인에 프로그램 전압을 인가하고, 비 선택된 워드 라인에 패스 전압을 인가할 수 있다. 본 실시예에서, 프로그램 루프들 중 적어도 하나에서 로우 디코더(14)는 선택된 워드 라인 및 추가 선택된 워드 라인에 프로그램 전압을 인가할 수 있다.
페이지 버퍼(15)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(11)에 연결될 수 있다. 구체적으로, 독출 동작 시에 페이지 버퍼(15)는 감지 증폭기(sense amplifier)로 동작하여 메모리 셀 어레이(11)에 저장된 데이터(DATA)를 출력할 수 있다. 한편, 프로그램 동작 시에 페이지 버퍼(15)는 기입 드라이버(write driver)로 동작하여 메모리 셀 어레이(11)에 저장하고자 하는 데이터(DATA)를 입력시킬 수 있다.
도 6은 도 5에 도시된 메모리 셀 어레이(11)의 일 예를 나타낸다.
도 6을 참조하면, 메모리 셀 어레이(11)는 플래시 메모리 셀 어레이일 수 있다. 이때, 메모리 셀 어레이(11)는 a(a는 2 이상의 정수)개의 메모리 블록들(BLK1 내지 BLKa)을 포함하고, 각 메모리 블록(BLK1 내지 BLKa)은 b(b는 2이상의 정수)개의 페이지들(PAGE1 내지 PAGEb)을 포함하며, 각 페이지들(PAGE1 내지 PAGEb)은 c(c는 2 이상의 정수)개의 섹터들(SEC1 내지 SECc)을 포함할 수 있다. 도 6에서는 도시의 편의를 위해, 메모리 블록 BLK1에 대하여만 페이지들(PAGE0 내지 PAGEb) 및 섹터들(SEC1 내지 SECc)을 도시하였으나, 다른 메모리 블록들(BLK2 내지 BLKa)도 블록 BLK1과 동일한 구조를 가질 수 있다.
도 7은 도 5에 도시된 메모리 셀 어레이(11)에 포함된 제1메모리 블록의 일 예(BLK1a)를 나타내는 회로도이다.
도 7을 참조하면, 제1 메모리 블록(BLK1a)은 수직 구조의 낸드 플래시 메모리일 수 있다. 이때, 도 6에 도시된 각 블록들(BLK1 내지 BLKa)은 도 7과 같이 구현될 수 있다. 도 7에서, 제1 방향은 x 방향으로, 제2 방향은 y 방향으로, 제3 방향은 z 방향으로 지칭하기로 한다. 그러나, 본 발명은 이에 한정되지 않고, 제1 내지 제3 방향은 변경될 수도 있다.
제1 메모리 블록(BLK1a)은 복수의 셀 스트링들(CST), 복수의 워드 라인들(WL), 복수의 비트 라인들(BL), 복수의 그라운드 선택 라인들(GSL1, GSL2), 복수의 스트링 선택 라인들(SSL1, SSL2) 및 공통 소스 라인(CSL)을 포함할 수 있다. 여기서, 셀 스트링들(CST)의 개수, 워드 라인들(WL)의 개수, 비트 라인들(BL)의 개수, 그라운드 선택 라인들(GSL1, GSL2)의 개수 및 스트링 선택 라인들(SSL1, SSL2)의 개수는 실시 예에 따라 다양하게 변경될 수 있다.
셀 스트링(CST)은 대응되는 비트 라인(BL)과 공통 소스 라인(CSL) 사이에 직렬로 연결된 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC) 및 그라운드 선택 트랜지스터(GST)를 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 다른 실시 예에서, 셀 스트링(CST)은 적어도 하나의 더미 셀을 더 포함할 수 있다. 또 다른 실시 예에서, 셀 스트링(CST)은 적어도 두 개의 스트링 선택 트랜지스터들 또는 적어도 두 개의 그라운드 선택 트랜지스터들을 포함할 수도 있다.
또한, 셀 스트링(CST)은 제3 방향(z 방향)으로 신장될 수 있는데, 구체적으로, 기판(도 8의 310) 상에 수직 방향(z 방향)으로 신장될 수 있다. 따라서, 셀 스트링(CST)을 포함하는 메모리 블록(BLK1a)을 수직 방향의 낸드 플래시 메모리라고 지칭할 수 있다. 이와 같이, 셀 스트링(CST)을 기판 상에 수직 방향(z)으로 신장시킴으로써, 메모리 셀 어레이(11)의 집적도를 향상시킬 수 있다.
복수의 워드 라인들(WL)은 제1 방향(x) 및 제2 방향(y)으로 연장되고, 각 워드 라인(WL)은 대응되는 메모리 셀들(MC)과 연결될 수 있다. 이에 따라, 동일 층에서 제1 방향(x) 및 제2 방향(y)을 따라 이웃하게 배열된 복수의 메모리 셀들(MC)은 동일한 워드 라인(WL)에 연결될 수 있다. 구체적으로, 각 워드 라인(WL)은 메모리 셀(MC)의 게이트에 연결되어 메모리 셀(MC)을 제어할 수 있다. 이때, 복수의 메모리 셀들(MC)은 데이터를 저장할 수 있으며, 연결된 워드 라인(WL)의 제어에 따라 프로그램, 독출 또는 소거될 수 있다.
복수의 비트 라인들(BL)은 제1 방향(x)으로 연장되고, 스트링 선택 트랜지스터(SST)와 연결될 수 있다. 이에 따라, 제1 방향(x)을 따라 이웃하게 배열된 복수의 스트링 선택 트랜지스터들(SST)은 동일한 비트 라인(BL)에 연결될 수 있다. 구체적으로, 각 비트 라인(BL)은 스트링 선택 트랜지스터(SST)의 드레인에 연결될 수 있다.
복수의 스트링 선택 라인들(SSL1, SSL2)은 제2 방향(y)으로 연장되고, 스트링 선택 트랜지스터(SST)와 연결될 수 있다. 이에 따라, 제2 방향(y)을 따라 이웃하게 배열된 복수의 스트링 선택 트랜지스터들(SST)은 동일한 스트링 선택 라인(SSL1 또는 SSL2)에 연결될 수 있다. 구체적으로, 각 스트링 선택 라인(SSL1 또는 SSL2)은 스트링 선택 트랜지스터(SST)의 게이트에 연결되어 스트링 선택 트랜지스터(SST)를 제어할 수 있다.
복수의 그라운드 선택 라인들(GSL1, GSL2)은 제2 방향(y)으로 연장되고, 그라운드 선택 트랜지스터(GST)와 연결될 수 있다. 이에 따라, 제2 방향(y)을 따라 이웃하게 배열된 복수의 그라운드 선택 트랜지스터들(GST)은 동일한 그라운드 선택 라인(GSL1 또는 GSL2)에 연결될 수 있다. 구체적으로, 각 그라운드 선택 라인(GSL1 또는 GSL2)은 그라운드 선택 트랜지스터(GST)의 게이트에 연결되어 그라운드 선택 트랜지스터(GST)를 제어할 수 있다.
또한, 각 셀 스트링(CST)에 포함된 그라운드 선택 트랜지스터들(GST)은 공통 소스 라인(CSL)에 공통으로 연결될 수 있다. 구체적으로, 공통 소스 라인(CSL)은 그라운드 선택 트랜지스터(GST)의 소스에 연결될 수 있다.
여기서, 동일한 워드 라인(WL) 및 동일한 스트링 선택 라인(SSL1 또는 SSL2)에 공통으로 연결되고, 제2 방향(y)을 따라 이웃하게 배치되는 복수의 메모리 셀들(MC)은 페이지(PAGE)라고 지칭할 수 있다. 예를 들어, 제1 워드 라인(WL1)에 공통으로 연결되고, 제1 스트링 선택 라인(SSL1)에 공통으로 연결되며, 제2 방향(y)을 따라 이웃하게 배치되는 복수의 메모리 셀들(MC)은 제1 페이지(PAGE1)라고 지칭할 수 있다. 또한, 제1 워드 라인(WL1)에 공통으로 연결되고, 제2 스트링 선택 라인(SSL2)에 공통으로 연결되며, 제2 방향(y)을 따라 이웃하게 배치되는 복수의 메모리 셀들(MC)은 제2 페이지(PAGE2)라고 지칭할 수 있다.
메모리 셀(MC)에 대한 프로그램 동작을 수행하기 위해서는, 비트 라인(BL)에 0V를 인가하고, 스트링 선택 라인(SSL)에 온(on) 전압을 인가하고, 그라운드 선택 라인(GSL)에 오프(off) 전압을 인가할 수 있다. 온 전압은 스트링 선택 트랜지스터(SST)를 턴-온(turn-on) 시키도록 그 문턱 전압보다 크거나 같을 수 있고, 오프 전압은 그라운드 선택 트랜지스터들(GST)을 턴-오프(turn-off) 시키도록 그 문턱 전압보다 작을 수 있다. 또한, 메모리 셀들(MC) 중 선택 메모리 셀에는 프로그램 전압을 인가하고, 나머지 메모리 셀들에는 패스 전압을 인가할 수 있다. 프로그램 전압이 인가되면, F-N 터널링에 의해 메모리 셀들(MC) 내로 전하가 주입될 수 있다. 패스 전압은 메모리 셀들(MC)의 문턱 전압보다 클 수 있다.
메모리 셀(MC)에 대한 소거 동작을 수행하기 위해서는, 메모리 셀들(MC)의 바디(body)에 소거 전압을 인가하고, 워드 라인들(WL)에 0V를 인가할 수 있다. 이에 따라, 메모리 셀들(MC)의 데이터가 일시에 소거될 수 있다.
도 8은 도 7의 제1 메모리 블록의 일 예(BLK1a')의 비트 라인 방향에 따른 단면도이다. 도 9는 도 7의 제1 메모리 블록의 일 예(BLK1a')의 워드 라인 방향에 따른 단면도이다.
도 8 및 도 9를 참조하면, 제1 메모리 블록(BLK1a')은 제1 방향(x)으로 연장되는 주면(main surface)을 가지는 기판(310)을 가질 수 있다. 기판(310)은 반도체 물질, 예를 들어, IV족 반도체, III-V족 화합물 반도체, 또는 II-VI족 산화물 반도체를 포함할 수 있다. 예를 들어, IV족 반도체는 실리콘, 게르마늄 또는 실리콘-게르마늄을 포함할 수 있다. 이때, 기판(310)은 벌크 웨이퍼 또는 에피택셜 층으로 제공될 수도 있다.
반도체 기둥들(320a, 320b)은 기판(310) 상으로 수직 신장하도록 기판(310) 상에 배열될 수 있다. 반도체 기둥들(320a, 320b)은 폴리 실리콘 또는 단결정 실리콘과 같은 반도체 물질을 포함할 수 있으며, 상기 반도체 물질은 도핑되지 않거나, p-형 또는 n-형 불순물을 포함할 수 있다.
기판(310)은 반도체 기둥들(320a, 320b) 아래에 불순물 영역(315)을 포함할 수 있다. 불순물 영역(315)은 소스 영역이 될 수 있고, 기판(310)의 다른 영역과 PN 접합을 형성할 수 있다. 도 7의 공통 소스 라인(CSL)은 불순물 영역(315)과 연결될 수 있다. 다른 실시 예에서, 불순물 영역(315)은 반도체 기둥들(320a, 320b)의 하단에 한정될 수 있다.
메모리 셀들(MC)의 각각은 반도체 기둥(320a, 320b)의 측벽 상의 스토리지 매체(330) 및 스토리지 매체(330) 상의 제어 게이트 전극(360)을 포함할 수 있다. 각 스토리지 매체(330)는 반도체 기둥(320a, 320b)의 측벽 상의 터널링 절연층(332), 터널링 절연층(332) 상의 전하 저장층(334) 및 전하 저장층(334) 상의 블로킹 절연층(336)을 포함할 수 있다.
전하 저장층(332)은 전하 저장 능력을 가질 수 있다. 예를 들어, 전하 저장층(332)은 트랩 타입일 수 있고, 예컨대 실리콘 질화층, 양자 도트(quantum dots) 또는 나노 크리스탈(nanocrystals)을 포함할 수 있다. 양자 도트 또는 나노 크리스탈은 도전체, 예컨대 금속 또는 반도체의 미세 입자들로 구성될 수 있다. 터널링 절연층(335) 및 블로킹 절연층(336)은 산화막, 질화막 또는 고유전율막을 포함할 수 있다. 고유전율막은 산화막 및 질화막보다 높은 유전 상수를 갖는 유전막을 지칭할 수 있다.
스트링 선택 트랜지스터(SST)는 반도체 기둥(320a, 320b)의 측벽 상의 스트링 선택 게이트 전극(355)을 포함할 수 있다. 스트링 선택 트랜지스터(SST)는 비트 라인(380)에 연결될 수 있다. 비트 라인(380)은 제1 방향(x)을 따라 연장되는 라인 형상의 패턴으로 이루어질 수 있다. 그라운드 선택 트랜지스터(GST)는 반도체 기둥(320a, 320b)의 측벽 상의 그라운드 선택 게이트 전극(350)을 포함할 수 있다.
스트링 선택 트랜지스터(SST)와 반도체 기둥(320a, 320b) 사이, 그리고, 그라운드 선택 트랜지스터(GST)와 반도체기둥(320a, 320b) 사이의 스토리지 매체들(330)은 게이트 절연층의 기능을 할 수 있고, 따라서 하나의 절연층으로 대체될 수도 있다. 그라운드 선택 게이트 전극(350), 제어 게이트 전극들(360) 및 스트링 선택 게이트 전극들(355) 사이에는 층간 절연층들(340)이 개재될 수 있다. 스토리지 매체들(330)은 층간 절연층들(340)의 표면을 따라서 신장될 수 있다.
제1 및 제2 셀 스트링들(CST1, CST2)은 반도체 기둥(320a)을 사이에 두고 인접하게 배치되고, 제3 및 제4 셀 스트링들(CST3, CST4)은 반도체 기둥(320b)을 사이에 두고 인접하게 배치될 수 있다. 한편, 제2 셀 스트링(CST2) 및 제3 셀 스트링(CST3) 사이에는 절연층(370)이 배치될 수 있다.
스트링 선택 게이트 전극(355)은 콘택 플러그(385)를 통해서 스트링 선택 라인(SSL)에 연결될 수 있다. 제어 게이트 전극들(360)은 콘택 플러그들(390)을 통해서 대응되는 워드 라인들(WL1 내지 WLn)에 연결될 수 있다. 그라운드 선택 게이트 전극(350)은 콘택 플러그들(395)을 통해서 그라운드 선택 라인(GSL)에 연결될 수 있다.
도 10은 도 7에 도시된 제1메모리 블록의 다른 예(BLK1a")의 비트 라인 방향에 따른 단면도이다.
도 10을 참조하면, 제1 메모리 블록(BLK1a")은 제1 방향(x)으로 연장되는 주면을 가지는 기판(410)을 가질 수 있다. 기판(410)은 반도체 물질, 예를 들어, IV족 반도체, III-V족 화합물 반도체, 또는 II-VI족 산화물 반도체를 포함할 수 있다. 예를 들어, IV족 반도체는 실리콘, 게르마늄 또는 실리콘-게르마늄을 포함할 수 있다. 이때, 기판(410)은 벌크 웨이퍼 또는 에피택셜 층으로 제공될 수도 있다.
반도체 기둥(420)은 기판(410) 상으로 수직 신장하도록 기판(410) 상에 배열될 수 있다. 반도체 기둥(420)은 폴리실리콘 또는 단결정 실리콘과 같은 반도체 물질을 포함할 수 있으며, 상기 반도체 물질은 도핑되지 않거나, p-형 또는 n-형 불순물을 포함할 수 있다.
스토리지 매체(430)는 반도체 기둥(420)의 길이 방향을 따라 연장되도록 형성될 수 있다. 각 스토리지 매체(430)는 반도체 기둥(420)의 측벽 상의 터널링 절연층(432), 터널링 절연층(432) 상의 전하 저장층(434) 및 전하 저장층(434) 상의 블로킹 절연층(436)을 포함할 수 있다.
스트링 선택 트랜지스터(SST)는 반도체 기둥(420)의 측벽 상의 스트링 선택 게이트 전극(455)을 포함할 수 있다. 스트링 선택 트랜지스터(SST)는 비트 라인(480)에 연결될 수 있다. 비트 라인(480)은 제1 방향(x)을 따라 연장되는 라인 형상의 패턴으로 이루어질 수 있다. 그라운드 선택 트랜지스터(GST)는 반도체 기둥(420)의 측벽 상의 그라운드 선택 게이트 전극(450)을 포함할 수 있다.
스트링 선택 트랜지스터(SST)와 반도체 기둥(420) 사이, 그리고, 그라운드 선택 트랜지스터(GST)와 반도체 기둥(420) 사이의 스토리지 매체들(430)은 게이트 절연층의 기능을 할 수 있고, 따라서 하나의 절연층으로 대체될 수도 있다. 그라운드 선택 게이트 전극(450), 제어 게이트 전극들(460) 및 스트링 선택 게이트 전극들(455) 사이에는 층간 절연층들(440)이 개재될 수 있다.
도 11은 도 7에 도시된 제1메모리 블록에 포함된 셀 스트링의 다른 예(CST')를 나타내는 회로도이다.
도 11을 참조하면, 셀 스트링(CST')은 적어도 한 쌍의 스트링 선택 트랜지스터들(SST1, SST2), 복수의 메모리 셀들(MC) 및 적어도 한 쌍의 그라운드 선택 트랜지스터들(GST1, GST2)을 포함할 수 있다. 비트 라인(BL)은 셀 스트링(CST')의 일단에 연결되고, 공통 소스 라인(CSL)은 셀 스트링(CST')의 타단에 연결될 수 있다.
본 실시 예에 따른 셀 스트링(CST')에 포함된 구성 요소들 중 일부는 도 7의 셀 스트링(CST)에 포함된 구성 요소들과 실질적으로 동일하다. 동일한 구성 요소는 동일한 참조 부호로 표시되며, 도 7의 셀 스트링(CST)과 동일한 구성 요소들에 대해서는 반복하여 설명하지 않는다. 이하에서는, 도 7의 셀 스트링(CST)과 본 실시 예에 따른 셀 스트링(CST')의 차이점을 중심으로 상술하기로 한다.
복수의 메모리 셀들(MC)은 수직으로 직렬 배치될 수 있다. 메모리 셀들(MC)은 데이터를 저장할 수 있다. 복수의 워드 라인들(WL)은 메모리 셀들(MC)과 연결되어 메모리 셀들(MC)을 제어할 수 있다. 메모리 셀들(MC)의 수는 비휘발성 메모리 소자의 용량에 따라서 적절하게 선택될 수 있다.
적어도 한 쌍의 스트링 선택 트랜지스터들(SS1, SST2)은 메모리 셀들(MC)의 일측에 서로 인접하게 배열될 수 있다. 예를 들어, 스트링 선택 트랜지스터들(SST1, SST2)은 비트 라인(BL) 및 제n 메모리 셀(MCn) 사이에 배치되고 제n 메모리 셀(MCn)과 직렬 연결될 수 있다. 스트링 선택 트랜지스터들(SST1, SST2)은 비트 라인(BL)과 메모리 셀들(MC) 사이의 신호 전달을 제어할 수 있다. 스트링 선택 라인(SSL)은 스트링 선택 트랜지스터들(SST1, SST2)에 공통으로 결합될 수 있다. 따라서 스트링 선택 트랜지스터들(SST1, SST2)은 하나의 트랜지스터처럼 서로 연동되어 동작할 수 있다.
적어도 한 쌍의 그라운드 선택 트랜지스터들(GST1, GST2)은 스트링 선택 트랜지스터들(SST1, SSS2)의 반대편, 메모리 셀들(MC)의 타측에 서로 인접하게 배열될 수 있다. 예를 들어, 그라운드 선택트랜지스터들(GST1, GST2)은 공통 소스 라인(CSL) 및 제1 메모리 셀(MC1) 사이에 배치되고 제1 메모리 셀(MC1)과 직렬 연결될 수 있다. 접지 선택 트랜지스터들(GST1, GST2)은 공통 소스 라인(CSL)과 메모리 셀들(MC) 사이의 신호 전달을 제어할 수 있다. 그라운드 선택 라인(GSL)은 접지 선택 트랜지스터들(GST1, GST2)에 공통으로 결합될 수 있다. 따라서 그라운드 선택 트랜지스터들(GST1, GST2)은 하나의 트랜지스터처럼 서로 연동되어 동작할 수 있다.
본 실시 예에 따르면, 스트링 선택 트랜지스터들(SST1, SST2)의 개수를 적어도 두 개 이상으로 함으로써, 스트링 선택 게이트 전극들(도 8의 355) 각각의 길이를 한 개인 경우보다 크게 줄일 수 있어서 보이드(void) 없이 층간 절연층들(도 8의 340) 사이를 채울 수 있다. 나아가, 그라운드 선택 트랜지스터들(GST1, GST2)의 개수를 적어도 두 개 이상으로 함으로써, 그라운드 선택 게이트 전극들(도 8의 350) 각각의 길이를 한 개인 경우보다 크게 줄일 수 있어서 보이드 없이 층간 절연층들(도 8의 340) 사이를 채울 수 있다.
도 12는 도 7에 도시된 제1메모리 블록에 포함된 셀 스트링의 또 다른 예(CST")를 나타내는 회로도이다.
도 12를 참조하면, 셀 스트링(CST")은 적어도 한 쌍의 스트링 선택 트랜지스터들(SST1, SST2), 복수의 메모리 셀들(MC) 및 적어도 한 쌍의 그라운드 선택 트랜지스터들(GST1, GST2)을 포함할 수 있다. 비트 라인(BL)은 셀 스트링(CST")의 일단에 연결되고, 공통 소스 라인(CSL)은 셀 스트링(CST")의 타단에 연결될 수 있다.
본 실시 예에 따른 셀 스트링(CST")에 포함된 구성 요소들 중 일부는, 도 11의 셀 스트링(CST')에 포함된 구성 요소들과 실질적으로 동일하다. 동일한 구성 요소는 동일한 참조 부호로 표시되며, 도 11의 셀 스트링(CST')과 동일한 구성 요소들에 대해서는 반복하여 설명하지 않는다. 이하에서는, 도 11의 셀 스트링(CST')와 본 실시 예에 따른 셀 스트링(CST")의 차이점을 중심으로 상술하기로 한다.
적어도 한 쌍의 스트링 선택 트랜지스터들(SS1, SST2)은 메모리 셀들(MC)의 일측에 서로 인접하게 배열될 수 있다. 예를 들어, 스트링 선택 트랜지스터들(SST1, SST2)은 비트 라인(BL) 및 제n 메모리 셀(MCn) 사이에 배치되고 제n 메모리 셀(MCn)과 직렬 연결될 수 있다. 스트링 선택 트랜지스터들(SST1, SST2)은 비트 라인(BL)과 메모리 셀들(MC) 사이의 신호 전달을 제어할 수 있다. 이때, 제1 스트링 선택 라인(SSLa)은 제1 스트링 선택 트랜지스터(SST1)에 연결되고, 제2 스트링 선택 라인(SSLb)은 제2 스트링 선택 트랜지스터(SST2)에 연결될 수 있다.
적어도 한 쌍의 그라운드 선택 트랜지스터들(GST1, GST2)은 스트링 선택 트랜지스터들(SST1, SSS2)의 반대편, 메모리 셀들(MC)의 타측에 서로 인접하게 배열될 수 있다. 예를 들어, 그라운드 선택 트랜지스터들(GST1, GST2)은 공통 소스 라인(CSL) 및 제1 메모리 셀(MC1) 사이에 배치되고 제1 메모리 셀(MC1)과 직렬 연결될 수 있다. 접지 선택 트랜지스터들(GST1, GST2)은 공통 소스 라인(CSL)과 메모리 셀들(MC) 사이의 신호 전달을 제어할 수 있다. 이때, 제1 그라운드 선택 라인(GSLa)은 제1 그라운드 선택 트랜지스터(GST1)에 연결되고, 제2 그라운드 선택 라인(GSLb)은 제2 그라운드 선택 트랜지스터(GST2)에 연결될 수 있다.
도 13은 본 발명의 다른 실시 예에 따른 데이터 처리 시스템(2000)의 블록 구성도이다.
도 13에 도시된 바와 같이, 데이터 처리 시스템(2000)은 프로세서(2010), RAM(2020), 리퀘스트 큐(2030), 스토리지 장치(2040), 입출력 장치(2050) 및 버스(2060)를 포함한다.
도 13에는 도시되지 않았지만, 데이터 처리 시스템(2000)은 비디오 카드, 사운드 카드, 메모리 카드, USB 장치 등과 통신하거나, 또는 다른 전자 기기들과 통신할 수 있는 포트(port)들을 더 포함할 수 있다. 데이터 처리 시스템(2000)은 퍼스널 컴퓨터로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA(personal digital assistant) 및 카메라 등과 같은 전자 장치로 구현될 수 있다.
버스(2060)는 데이터 처리 시스템(2000)의 구성 수단들 간의 데이터, 어드레스 및 제어 신호들을 전송하는 전송로를 의미한다.
프로세서(2010)는 특정 계산들 또는 태스크(task)들을 수행할 수 있다. 예로서, 프로세서(2010)는 마이크로프로세서(micro-processor), 중앙 처리 장치(Central Processing Unit; CPU)일수 있다. 프로세서(2010)는 어드레스 버스(address bus), 제어 버스(control bus) 및 데이터 버스(data bus) 등과 같은 버스(2060)를 통하여 RAM(2020), 리퀘스트 큐(2030), 스토리지 장치(2040) 및 입출력 장치(2050)와 통신을 수행할 수 있다. 실시 예에 따라, 프로세서(2010)는 주변 구성요소 상호연결(Peripheral Component Interconnect; PCI) 버스와 같은 확장 버스에도 연결될 수 있다.
RAM(2020)에는 프로세서(2010)에서 생성된 프로세스 수행에 필요한 데이터들이 로딩된다. RAM(2020)은 메인 메모리로서 동작하고, DRAM(Dynamic Random Access Memory) 또는 SRAM(Static Random Access Memory)로 구현할 수 있다.
리퀘스트 큐(Request Queue; 2030)에는 프로세서(2010)에서 발행된 리퀘스트들이 순차적으로 저장된다. 리퀘스트에는 라이트 리퀘스트(write request), 소거 리퀘스트(erase request), 또는 리드 리퀘스트(read request) 등이 포함될 수 있다. 예로서, 리퀘스트는 커맨드 코드로 정의될 수 있다. 이에 따라서, 리퀘스트 큐(2030)에는 라이트 커맨드 코드, 소거 커맨드 코드, 또는 리드 커맨드 코드 등이 저장될 수 있다.
스토리지 장치(2040)는 메모리 컨트롤러(2041) 및 메모리 장치(2042)를 포함한다. 예로서, 스토리지 장치(2040)는 임베디드 멀티미디어 카드(eMMC)로 구현할 수 있다.
메모리 컨트롤러(2041) 및 메모리 장치(2042)는 도 2의 메모리 컨트롤러(210) 및 메모리 장치(220)와 동일한 회로 구성 및 동작을 수행할 수 있다. 이에 따라서, 메모리 컨트롤러(2041)는 프로세서(2010)로부터 전송된 큐 정보(Q-CMD)에 기초하여 메모리 스와핑 태스크의 일부를 미리 수행하고, 미리 수행된 메모리 스와핑 태스크의 일부를 이용하여 커맨드(CMD)에 따른 메모리 스와핑 태스크의 나머지 동작을 실행하도록 메모리 장치(2042)의 읽기 동작 또는 쓰기 동작을 제어할 수 있다. 예로서, 메모리 컨트롤러(2041)는 큐 정보(Q-CMD)에 기초하여 메모리 스와핑 태스크의 일부를 미리 수행하고 나서, 큐 정보(Q-CMD)에 대응되는 커맨드(CMD)를 실행하기 위한 커맨드 큐에 대한 준비가 되었음을 알려주는 신호를 프로세서(2010)로 전송할 수 있다.
입출력 장치(2050)는 키보드, 키패드, 마우스 등과 같은 입력 수단 및 프린터, 디스플레이 등과 같은 출력 수단을 포함할 수 있다.
프로세서(2010)는 입출력 장치(2050)를 통하여 새로운 프로세스에 대한 요청이 발생될 때 요청된 새로운 프로세스 수행에 필요한 데이터가 RAM(2020)에 로딩되어 있는지 판단한다. 요청된 새로운 프로세스 수행에 필요한 데이터가 RAM(2020)에 로딩되어 있는 경우에 프로세서(2010)는 RAM(2020)에 로딩된 데이터를 이용하여 새로운 프로세스에 대한 동작을 수행한다.
만일 요청된 새로운 프로세스 수행에 필요한 데이터가 RAM(2020)에 로딩되어 있지 않는 경우에 프로세서(2010)는 메모리 스와핑 동작을 수행하기 위한 리퀘스트를 발행하여 리퀘스트 큐(2030)에 저장한다.
그리고 나서, 프로세서(2010)는 리퀘스트 큐(2030)에 저장된 메모리 스와핑 태스크에 대한 큐(Queue) 정보(Q-CMD) 및 큐 정보(Q-CMD)에 대응되는 커맨드(CMD)를 순차적으로 스토리지 장치(2040)로 전송한다. 예로서, 프로세서(2010)는 리퀘스트 큐(2030)에 저장된 메모리 스와핑 태스크에 대한 큐 정보(Q-CMD)를 초기 설정된 커맨드를 사용하여 스토리지 장치(2040)로 전송할 수 있다. 예로서, eMMC 프로토콜(protocol)에서 큐잉(queuing)된 태스크의 파라미터를 알려주는 특수한 커맨드를 사용하여 큐 정보(Q-CMD)를 스토리지 장치(2040)로 전송할 수 있다.
예로서, 큐 정보(Q-CMD)에는 블록 카운트(Block Count, DD(Data Direction), 큐 우선순위(Queue Priority), context-ID, 태스크(Task) ID, 태그 리퀘스트(Tag Request) 등에 대한 정보들이 포함될 수 있다. 여기에서, DD(Data Direction)는 큐에 대한 내용이 리드(read)인지 라이트(write)인지를 알려준다. 그리고, 태그 리퀘스트는 요청하는 것이 태깅(tagging)된 데이터라는 것을 나타낸다. 예로서, context-ID, 태스크 ID 및 태그 리퀘스트 등을 통하여 데이터의 속성을 나타낼 수 있다.
프로세서(2010)는 큐 정보(Q-CMD)를 메모리 컨트롤러(2041)로 전송한다. 그리고 나서, 메모리 컨트롤러(2041)로부터 커맨드 큐에 대한 준비가 되었음을 알려주는 신호를 수신하면, 프로세서(2010)는 큐 정보(Q-CMD)에 대응되는 커맨드(CMD)를 메모리 컨트롤러(2041)로 전송한다.
도 14는 본 발명의 실시 예에 따른 데이터 처리 시스템에서의 새로운 프로세스 호출에 따른 메인 메모리 영역의 배분이 변화되는 과정을 보여주는 도면이다.
도 2의 데이터 처리 시스템(1000)을 참조하여 도 14에 도시된 새로운 프로세스 호출에 따른 메인 메모리 저장 영역의 배분이 변화되는 과정을 설명하기로 한다.
도 14를 참조하면, 호스트 장치(100)에서 프로세스를 A -> B -> C -> D -> A 순서대로 호출하여 수행하는 경우에, 메인 메모리(120)의 저장 영역 배분이 변화되는 과정을 보여준다.
우선, 도 14의 (a)는 A 프로세스에 대한 호출에 따라서 A 프로세스를 수행하는데 필요한 데이터가 메인 메모리(120)에 저장되는 상태를 보여준다. 도 14의 (b)는 A 프로세스를 수행한 후에 B 프로세스에 대한 호출에 따라서 B 프로세스를 수행하는데 필요한 데이터가 메인 메모리(120)에 저장되는 저장 상태를 보여준다. 도 14의 (c)는 B 프로세스를 수행한 후에 C 프로세스에 대한 호출에 따라서 C 프로세스를 수행하는데 필요한 데이터가 메인 메모리(120)에 저장되는 저장 상태를 보여준다.
도 14의 (a) ~ (c)를 참조하면, A -> B -> C 프로세스에 대한 데이터를 메인 메모리(120)에 로딩할 때는 메인 메모리(120)에 여유 저장 공간이 있었다는 사실을 알 수 있다.
도 14의 (d)는 C 프로세스를 수행한 후에 D 프로세스에 대한 호출이 발생될 때 메인 메모리(120)에 D 프로세스를 수행하는데 필요한 데이터를 저장할 저장 여유 공간이 부족하다. 이에 따라서, A 프로세스에 대한 데이터를 스토리지 장치(200)에 옮겨 저장함으로써 메인 메모리(120)에서 A 프로세스에 대한 데이터가 제거된 상태를 보여준다. 예로서, 메인 메모리(120)에서 삭제할 데이터를 가장 오래된 데이터 순서에 기초하여 결정할 수 있다.
도 14의 (e)는 메인 메모리(120)에서 A 프로세스에 대한 데이터를 삭제하고 나서, 이미 호출된 D 프로세스를 수행하는데 필요한 데이터가 메인 메모리(120)에 저장되는 저장 상태를 보여준다.
도 14의 (f)는 D 프로세스를 수행한 후에 다시 A 프로세스에 대한 호출이 발생될 때 메인 메모리(120)에 A 프로세스를 수행하는데 필요한 데이터를 저장할 저장 여유 공간이 부족하게 된다. 이에 따라서, B 프로세스에 대한 데이터를 스토리지 장치(200)에 저장한 후에 메인 메모리(120)에서 B 프로세스에 대한 데이터를 삭제한 상태를 보여준다.
도 14의 (g)는 메인 메모리(120)에서 B 프로세스에 대한 데이터를 삭제하고 나서, 이미 호출된 A 프로세스를 수행하는데 필요한 데이터가 메인 메모리(120)에 저장되는 저장 상태를 보여준다.
도 14의 (a)~(g)를 참조하면, 프로세스의 전체 페이지 혹은 각 페이지가 메인 메모리(120)에서 삭제되기도 하고 다시 불러오기도 하는 과정들이 반복되며, 이에 따른 메모리 스와핑 동작들이 수반된다.
이와 같이, 가상 메모리 시스템을 지원하는 오퍼레이팅 시스템에서는 실제 메모리의 확장 공간으로 사용되는 스토리지 장치(200)의 저장 영역을 스왑 공간(swap space)이라 불린다. 예로서, 새로운 프로그램이 메인 메모리(120)에 로드 될 수 있는 공간을 마련해 주기 위하여 메인 메모리(120)에 로드되어 있는 프로그램들 중에서 적어도 하나가 선택되어 스토리지 장치(200)의 스왑 공간으로 교체하는 스와핑 태스크를 수행하게 된다.
다음으로, 도 1, 2의 데이터 처리 시스템(1000) 또는 도 13의 데이터 시스템(2000)에서 수행되는 메모리 스와핑 처리 방법의 다양한 실시 예들에 대하여 설명하기로 한다.
설명의 편의를 위하여, 도 13의 데이터 처리 시스템(2000)에서 수행되는 메모리 스와핑 처리 방법의 다양한 실시 예들에 대하여 도 15 ~ 도 22를 참조하여 설명하기로 한다.
예로서, 도 15 ~ 도 22는 스토리지 장치(2040)의 메모리 장치(2042)를 복수의 플래시 메모리 칩들로 구현한 사례에 대한 메모리 스와핑 동작 과정을 보여준다.
도 15는 본 발명의 실시 예에 따른 데이터 처리 시스템(2000)에서의 RAM(2020)과 스토리지 장치(2040) 사이의 메모리 스와핑 동작에 따른 데이터 이동 과정의 예를 보여주는 도면이다.
도 15의 (a)는 프로세서(2010)가 A 프로세스 및 C 프로세스를 실행하여 RAM(2020)에 A 프로세스 및 C 프로세스에 대한 데이터가 로딩되어 있는 상태를 보여준다. 예로서, A 프로세스에 대한 데이터는 A 프로세스를 수행하는데 필요한 프로그램(A-Program), 데이터(A-Data) 및 스택 정보(A-Stack)를 포함하는 의미로 사용된다. B, C, D 프로세스에 대한 데이터도 같은 의미로 사용된다.
도 15의 (a)와 같이 RAM(2020)에 데이터가 로딩되어 있는 상태에서 B 프로세스 및 D 프로세스에 대한 요청이 발생될 때 B 프로세스 및 D 프로세스 각각에 대한 데이터가 RAM(2020)에 로딩되어 있지 않다. 이에 따라서, 프로세서(2010)는 페이지 폴트로 판정한다. 그리고 나서, B 프로세스 또는 D 프로세스에 대한 데이터를 로딩할 여유 저장 공간이 RAM(2020)에 없는 경우에, 프로세서(2010)는 도 15의 (a)와 같이 RAM(2020)에 로딩되어 있는 A 프로세스에 대한 데이터를 메모리 장치(2042)의 스왑 공간(swap space; CH1)으로 옮겨 저장하는 페이지 아웃 동작 및 메모리 장치(2042)의 스왑 공간(CH2)에 저장되어 있는 B 프로세스에 대한 데이터를 읽어내어 RAM(2020)에 로딩하는 페이지 인 동작을 수행한다.
같은 방식으로, 프로세서(2010)는 도 15의 (a)와 같이 RAM(2020)에 로딩되어 있는 C 프로세스에 대한 데이터를 메모리 장치(2042)의 스왑 공간(CH3)으로 옮겨 저장하는 페이지 아웃 동작 및 메모리 장치(2042)의 스왑 공간(CH4)에 저장되어 있는 D 프로세스에 대한 데이터를 읽어내어 RAM(2020)에 로딩하는 페이지 인 동작을 수행한다.
도 15를 참조하여, 메모리 스와핑 동작을 순서대로 살펴보면 A 프로세스에 대한 데이터를 메모리 장치(2042)로 페이지 아웃시킨 후에, B 프로세스에 대한 데이터를 메모리 장치(2042)로부터 RAM(2020)으로 페이지 인 처리한다. 이후 C 프로세스에 대한 데이터를 메모리 장치(2042)로 페이지 아웃시킨 후에, D 프로세스에 대한 데이터를 메모리 장치(2042)로부터 RAM(2020)으로 페이지 인 처리한다.
이와 같은 페이지 아웃 동작 및 페이지 인 동작을 마치면 도 15의 (c)와 같이 A 프로세스에 대한 데이터가 메모리 장치(2042)의 스왑 공간(CH1)에 저장되고, C 프로세스에 대한 데이터가 메모리 장치(2042)의 스왑 공간(CH3)에 저장된다. 그리고, 도 15의 (b)와 같이 B 프로세스에 대한 데이터와 D 프로세스에 대한 데이터가 RAM(2020)에 로딩된다. 즉, A 프로세스에 대한 데이터와 C 프로세스에 대한 데이터가 로딩되어 있었던 저장 공간을 이용하여 B 프로세스에 대한 데이터와 D 프로세스에 대한 데이터가 RAM(2020)에 로딩된다.
도 16은 본 발명의 데이터 처리 시스템에서의 일 실시 예에 따른 메모리 스와핑 동작 과정을 보여주는 도면이다. 도 16은 eMMC 프로토콜에 따른 커맨드(CMD)를 이용하여 메모리 스와핑 처리 동작을 수행하는 예를 보여준다.
참고적으로, 도 16 ~ 도 20에 도시된 "CMD"는 프로세서(2010)와 메모리 컨트롤러(2041) 사이를 연결하는 커맨드 버스를 나타내고, "DATA"는 프로세서(2010)와 메모리 컨트롤러(2041) 사이를 연결하는 데이터 버스를 나타낸다. 그리고, "Flash Operation"은 스토리지 장치(2040)에서 수행되는 동작 과정을 나타낸다. 즉, 메모리 장치(2042)를 플래시 메모리 칩으로 구현한 예에서의 스토리지 장치(2040)에서 수행되는 동작 과정을 나타낸다.
도 16을 참조하면, A 프로세스에 대한 데이터를 스토리지 장치(2040)로 페이지 아웃 처리하기 위하여 프로세서(2010)는 라이트 커맨드(CMD Write A)와 A 프로세스에 대한 데이터를 스토리지 장치(2040)로 전송한다. 이에 따라서, 스토리지 장치(2040)의 메모리 컨트롤러(2041)는 라이트 커맨드(CMD Write A)를 인식하고, A 프로세스에 대한 데이터를 메모리 장치(2042)에 저장하는 프로그램 동작을 수행한다.
그리고 나서, B 프로세스에 대한 데이터를 스토리지 장치(2040)로부터 RAM(2020)로 페이지 인 처리하기 위하여 프로세서(2010)는 리드 커맨드(CMD Read B)를 스토리지 장치(2040)로 전송한다. 이에 따라서, 스토리지 장치(2040)의 메모리 컨트롤러(2041)는 리드 커맨드(CMD Read B)를 인식하고, B 프로세스에 대한 데이터를 메모리 장치(2042)로부터 읽어낸다. 메모리 컨트롤러(3041)는 읽어낸 B 프로세스에 대한 데이터를 프로세서(2010)로 전송한다. 그러면, 프로세서(2010)는 B 프로세스에 대한 데이터를 RAM(2020)에 로딩시킨다.
위와 같은 방식으로, C 프로세스에 대한 페이지 아웃 동작 및 D 프로세스에 대한 페이지 인 동작도 수행할 수 있다.
예로서, 스토리지 장치(2040)를 임베디드 멀티미디어 카드(eMMC)로 구현하는 데이터 처리 시스템(2000)에서는 eMMC 프로토콜(Protocol)의 제약으로 인하여 하나의 다중(multiple) 라이트 혹은 리드 오퍼레이션이 끝나기 전까지는 새로운 커맨드를 스토리지 장치(2040)로 전송할 수 없다. 이에 따라서, 도 16에 도시된 바와 같이, 메모리 스와핑 처리 동작을 위한 페이지 인/페이지 아웃 오퍼레이션이 모두 시퀀셜(sequential)하게 진행된다. 이로 인하여, 메모리 장치(2041)에서의 프로그램 오퍼레이션 시간과 리드 오퍼레이션 시간이 그대로 노출된다.
도 17은 본 발명의 데이터 처리 시스템에서의 다른 실시 예에 따른 메모리 스와핑 동작 과정을 보여주는 도면이다. 참고적으로, 도 17 ~ 도 22는 큐 정보(Q-CMD) 및 커맨드(CMD)를 이용하여 메모리 스와핑 처리 동작을 수행하는 새로운 예들을 보여준다.
우선, A 프로세스에 대한 데이터를 스토리지 장치(2040)로 페이지 아웃(page out) 처리하기 위하여 프로세서(2010)는 A 프로세스에 대한 데이터를 라이트하는 오퍼레이션을 수행할 것이라는 다음 태스크(next task)를 알려주는 큐 정보(Q-CMD Write A)를 초기 설정된 커맨드를 이용하여 스토리지 장치(2040)로 전송한다. 그리고 나서, 프로세서(2010)는 A 프로세스에 대한 데이터의 라이트를 실행하라는 커맨드(CMD Write A)와 A 프로세스에 대한 데이터를 각각 커맨드 버스(CMD) 및 데이터 버스(DATA)를 통하여 스토리지 장치(2040)로 전송한다.
이에 따라서, 스토리지 장치(2040)의 메모리 컨트롤러(2041)는 큐 정보(Q-CMD Write A)를 인식한 후에, 멀티 채널(Multi Channel), 인터리빙(Interleaving) 등과 같은 기법을 이용하여 라이트 성능을 향상시키도록 어드레스 변환 처리 또는 메모리 인터리빙 스케쥴링 처리를 수행함으로써 메모리 장치(2042)의 오퍼레이션을 최적화시킨다. 즉, 메모리 컨트롤러(2041)는 큐 정보(Q-CMD Write A)를 이용하여 어드레스 변환 처리 또는 메모리 인터리빙 스케쥴링 처리 중의 적어도 하나를 라이트 커맨드를 실행하기 전에 미리 수행한다.
메모리 컨트롤러(2041)는 초기 설정된 사이즈 이상의 A 프로세스에 대한 데이터를 수신한 후에, 메모리 장치(2042)에서 프로그램하는 동작을 수행한다. 예로서, 메모리 장치(2042)를 플래시 메모리 칩들로 구현하는 경우에, 도 17의 플래시 오퍼레이션의 CH1(플래시 메모리 칩1)에 대한"A...A" 구간은 프로세서(2010)로부터 수신되는 A 프로세스에 대한 데이터를 도 5에 도시된 메모리 장치의 페이지 버퍼(15)에 저장하는 동작 구간을 나타내고, "Program" 구간은 페이지 버퍼(15)에 저장된 데이터에 기초하여 메모리 셀 어레이(11)의 셀들을 프로그램하는 동작 구간을 의미한다.
다음으로, 페이지 아웃 동작(page out A)에 따른 A 프로세스에 대한 데이터를 라이트하는 오퍼페이션 완료 여부에 관계없이 프로세서(2010)는 B 프로세스에 대한 데이터의 페이지 인(page in) 처리를 위하여 B 프로세스에 대한 데이터를 독출하는 오퍼레이션을 수행할 것이라는 다음 태스크(next task)를 알려주는 큐 정보(Q-CMD Read B)를 초기 설정된 커맨드를 이용하여 스토리지 장치(2040)로 전송한다. 그러면, 스토리지 장치(2040)의 메모리 컨트롤러(2041)는 큐 정보(Q-CMD Read B)를 인식한 후에, 페이지 아웃 동작(page out A)이 수행되는 도중이라도 메모리 장치(2042)로부터 B 프로세스에 대한 데이터를 읽기 위한 동작을 수행한다. 즉, 스토리지 장치(2040)는 큐 정보(Q-CMD Read B)를 통하여 B 프로세스에 대한 데이터의 페이지 인 동작을 미리 준비할 수 있다. 이로 인하여, B 프로세스에 대한 데이터를 읽어내기 위한 리드 오퍼레이션 구간을 이전의 A 프로세스에 대한 데이터를 쓰기 위한 프로그램 구간과 중첩시킬 수 있다.
예로서, 메모리 장치(2042)를 플래시 메모리 장치로 구현하는 경우에 도 17의 플래시 오퍼레이션의 CH2(플래시 메모리 칩2)에 "Read" 구간은 메모리 셀 어레이(11)의 셀들로부터 데이터를 읽어내어 도 5에 도시된 메모리 장치의 페이지 버퍼(15)에 저장하는 동작 구간을 나타내고, "B...B" 구간은 메모리 장치의 페이지 버퍼(15)로부터 데이터(B)를 출력하여 메모리 컨트롤러(2041)의 버퍼 메모리에 저장하는 전달하는 동작 구간을 의미한다. 예로서, 메모리 컨트롤러(2041)의 버퍼 메모리는 도 4에 도시된 메모리 컨트롤러(210)의 RAM(212)에 해당된다.
다음으로, 프로세서(2010)는 B 프로세스에 대한 데이터의 리드(read)를 실행하라는 커맨드(CMD Read B)를 스토리지 장치(2040)로 전송한다. 예로서, 프로세서(2010)는 스토리지 장치(2040)의 큐 상태 체크(Queue Status Check)를 통하여 레이턴시(latency) 없이 B 프로세스에 대한 데이터를 스토리지 장치(2040)로부터 전송받을 수 있다. 세부적으로, 프로세서(2010)는 스토리지 장치(2040)의 큐 상태 체크를 통하여 B 프로세스에 대한 데이터를 메모리 장치(2041)에서 미리 읽어내는 동작을 마친 준비 상태에 있는 것을 확인한 후에 B 프로세스에 대한 데이터의 리드를 실행하라는 커맨드(CMD Read B)를 스토리지 장치(2040)로 전송할 수 있다. 예로서, 프로세서(2010)는 스토리지 장치(2040)로부터 큐 상태를 알리는 신호를 수신함으로써, 스토리지 장치(2040)의 큐 상태를 체크할 수 있다.
이와 같이, 스토리지 장치(2040)의 메모리 컨트롤러(2041)는 A 프로세스에 대한 데이터 라이트 동작 및 B 프로세스에 대한 데이터 리드 동작을 각기 다른 플래시 메모리 칩에 동작하도록 어드레스 변환 처리를 수행함으로써, 프로그램 오퍼레이션과 리드 오퍼레이션을 독립적으로 수행할 수 있다. 이러한 과정을 통하여 페이지 아웃 동작(page out A)의 프로그램 타임과 페이지 인 동작(page in B)의 리드 타임의 일부를 중첩시켜서 메모리 스와핑 동작 시간을 단축시킬 수 있게 된다. 즉, A 프로세스에 대한 데이터의 라이트 동작 완료 여부와 관계없이 B 프로세스에 대한 큐 정보(Q-CMD Read B)에 따른 동작을 수행함으로써, A 프로세스에 대한 데이터의 페이지 아웃 동작(page out A)과 B 프로세스에 대한 데이터의 페이지 인 동작(page in B)을 중첩해서 동작시킬 수 있게 된다. 이로 인하여 페이지 인 성능을 향상시킬 수 있다.
C 프로세스에 대한 데이터의 페이지 아웃 동작 및 D 프로세스에 대한 데이터의 페이지 인 동작도 위에서 설명한 A 프로세스에 대한 데이터의 페이지 아웃 동작 및 B 프로세스에 대한 데이터의 페이지 인 동작과 같은 방식으로 수행할 수 있다.
도 18은 본 발명의 데이터 처리 시스템에서의 또 다른 실시 예에 따른 메모리 스와핑 동작 과정을 보여주는 도면이다.
도 18을 참조하면, 프로세서(2010)는 메모리 스와핑 리퀘스트가 발생될 때 페이지 인 동작 요구에 대한 큐 정보(Q-CMD Read)를 페이지 아웃 동작 요구에 대한 큐 정보(Q-CMD Write)보다 우선적으로 스토리지 장치(2040)로 전송한다.
메모리 스와핑 리퀘스트가 발생될 때 프로세서(2010)는 B 프로세스에 대한 데이터의 페이지 인(page in) 처리를 위하여 B 프로세스에 대한 데이터를 독출하는 오퍼레이션을 수행할 것이라는 다음 태스크(next task)를 알려주는 큐 정보(Q-CMD Read B)를 초기 설정된 커맨드를 이용하여 스토리지 장치(2040)로 전송한다. 그러면, 스토리지 장치(2040)의 메모리 컨트롤러(2041)는 큐 정보(Q-CMD Read B)를 인식한 후에, 메모리 장치(2042)로부터 B 프로세스에 대한 데이터를 읽기 위한 동작을 수행한다. 즉, 스토리지 장치(2040)는 큐 정보(Q-CMD Read B)를 통하여 B 프로세스에 대한 데이터의 페이지 인 동작을 미리 준비할 수 있다.
다음으로, A 프로세스에 대한 데이터를 스토리지 장치(2040)로 페이지 아웃(page out) 처리하기 위하여, 프로세서(2010)는 A 프로세스에 대한 데이터를 라이트하는 오퍼레이션을 수행할 것이라는 다음 태스크(next task)를 알려주는 큐 정보(Q-CMD Write A)를 초기 설정된 커맨드를 이용하여 스토리지 장치(2040)로 전송한다. 그리고 나서, 프로세서(2010)는 A 프로세스에 대한 데이터의 라이트를 실행하라는 커맨드(CMD Write A)와 A 프로세스에 대한 데이터를 각각 커맨드 버스(CMD) 및 데이터 버스(DATA)를 통하여 스토리지 장치(2040)로 전송한다.
이에 따라서, 스토리지 장치(2040)의 메모리 컨트롤러(2041)는 큐 정보(Q-CMD Write A)를 인식한 후에, 멀티 채널(Multi Channel), 인터리빙(Interleaving) 등과 같은 기법을 이용하여 라이트 성능을 향상시키도록 어드레스 변환 처리 또는 메모리 인터리빙 스케쥴링 처리를 수행함으로써 메모리 장치(2042)의 오퍼레이션을 최적화시킨다. 즉, 메모리 컨트롤러(2041)는 큐 정보(Q-CMD Write A)를 이용하여 어드레스 변환 처리 또는 메모리 인터리빙 스케쥴링 처리 중의 적어도 하나를 라이트 커맨드를 실행하기 전에 미리 수행한다. 그리고 나서, 메모리 컨트롤러(2041)는 커맨드(CMD Write A)를 실행한다. 즉, 초기 설정된 사이즈 이상의 A 프로세스에 대한 데이터를 수신한 후에, 메모리 장치(2042)에서 프로그램하는 동작을 수행한다.
다음으로, 프로세서(2010)는 B 프로세스에 대한 데이터의 리드(read)를 실행하라는 커맨드(CMD Read B)를 스토리지 장치(2040)로 전송한다. 예로서, 프로세서(2010)는 스토리지 장치(2040)의 큐 상태 체크(Queue Status Check)를 통하여 레이턴시(latency) 없이 B 프로세스에 대한 데이터를 스토리지 장치(2040)로부터 전송받을 수 있다. 세부적으로, 프로세서(2010)는 스토리지 장치(2040)의 큐 상태 체크를 통하여 B 프로세스에 대한 데이터를 메모리 장치(2041)에서 미리 읽어내는 동작을 마치고 준비 상태에 있는 것을 확인한 후에 B 프로세스에 대한 데이터의 리드를 실행하라는 커맨드(CMD Read B)를 스토리지 장치(2040)로 전송할 수 있다.
이로 인하여, A 프로세스에 대한 데이터를 쓰기 위한 프로그램 구간을 이전의 B 프로세스에 대한 데이터를 읽어내기 위한 리드 오퍼레이션 구간과 중첩시킬 수 있다.
D 프로세스에 대한 데이터의 페이지 인 동작 및 C 프로세스에 대한 데이터의 페이지 아웃 동작도 위에서 설명한 B 프로세스에 대한 데이터의 페이지 인 동작 및 A 프로세스에 대한 데이터의 페이지 아웃 동작과 같은 방식으로 수행할 수 있다.
도 19는 본 발명의 데이터 처리 시스템에서의 또 다른 실시 예에 따른 메모리 스와핑 동작 과정을 보여주는 도면이다.
프로세서(2010)는 B 프로세스에 따른 요청에 의하여 메모리 스와핑 리퀘스트가 발생될 때 메인 메모리인 RAM(2020)에 B 프로세스에 대한 데이터를 로딩할 수 있는 저장 공간이 남아 있다고 가정하자. 그러면, RAM(2020)에 저장되어 있는 A 프로세스에 대한 데이터의 페이지 아웃 동작을 필요로 하지 않는다.
이에 따라서, 도 19에 도시된 바와 같이 데이터 처리 시스템에서는 B 프로세스에 대한 데이터의 페이지 인 동작을 바로 수행하게 된다.
이와 같은 조건에서 메모리 스와핑 리퀘스트가 발생될 때 프로세서(2010)는 B 프로세스에 대한 데이터의 페이지 인(page in) 처리를 위하여 B 프로세스에 대한 데이터를 독출하는 오퍼레이션을 수행할 것이라는 다음 태스크(next task)를 알려주는 큐 정보(Q-CMD Read B)를 초기 설정된 커맨드를 이용하여 스토리지 장치(2040)로 전송한다. 그러면, 스토리지 장치(2040)의 메모리 컨트롤러(2041)는 큐 정보(Q-CMD Read B)를 인식한 후에, 메모리 장치(2042)로부터 B 프로세스에 대한 데이터를 읽기 위한 동작을 수행한다. 즉, 스토리지 장치(2040)는 큐 정보(Q-CMD Read B)를 통하여 B 프로세스에 대한 데이터의 페이지 인 동작을 미리 준비할 수 있다.
다음으로, 프로세서(2010)는 B 프로세스에 대한 데이터의 리드(read)를 실행하라는 커맨드(CMD Read B)를 스토리지 장치(2040)로 전송한다. 예로서, 프로세서(2010)는 스토리지 장치(2040)의 큐 상태 체크(Queue Status Check)를 통하여 레이턴시(latency) 없이 B 프로세스에 대한 데이터를 스토리지 장치(2040)로부터 전송받을 수 있다. 세부적으로, 프로세서(2010)는 스토리지 장치(2040)의 큐 상태 체크를 통하여 B 프로세스에 대한 데이터를 메모리 장치(2041)에서 미리 읽어내는 동작을 마치고 준비 상태에 있는 것을 확인한 후에 B 프로세스에 대한 데이터의 리드를 실행하라는 커맨드(CMD Read B)를 스토리지 장치(2040)로 전송할 수 있다. 예로서, 프로세서(2010)는 스토리지 장치(2040)로부터 큐 상태를 알리는 신호를 전송받음으로써, 스토리지 장치(2040)의 큐 상태를 체크할 수 있다.
이후에 진행되는 C 프로세스에 대한 데이터의 페이지 아웃 동작 및 D 프로세스에 대한 데이터의 페이지 인 동작은 도 17에서 이미 설명한 A 프로세스에 대한 데이터의 페이지 아웃 동작 및 B 프로세스에 대한 데이터의 페이지 인 동작과 같은 방식으로 수행할 수 있다.
도 20의 (a) 및 (b)는 본 발명의 데이터 처리 시스템에서의 또 다른 실시 예에 따른 메모리 스와핑 동작 과정을 보여주는 도면이다. 도 20은 복수의 큐 정보(Q-CMD)들을 수신될 때 메모리 스와핑 동작에 대한 태스크 순서를 재배열한 후에 메모리 스와핑 동작을 수행하는 예를 보여준다.
도 20의 (a)에 도시된 바와 같이, 프로세서(2010)로부터 커맨드 큐 정보가 Q-CMD Write A, Q-CMD Read B, Q-CMD Write C, Q-CMD Read D 순으로 스토리지 장치(2040)로 전송된 경우에, 스토리지 장치(2040)의 메모리 컨트롤러(2041)는 수신된 커맨드 큐 정보(Q-CMD)들을 이용하여 메모리 스와핑 동작에 대한 태스크 순서를 재배열할 수 있다. 예로서, 커맨드 큐 정보에 포함된 우선순위 정보에 기초하여 메모리 스와핑 동작에 대한 태스크 순서를 재배열할 수 있다. 다른 예로서, 페이지 아웃 동작보다 페이지 인 동작에 우선순위를 부여하여 태스크 순서를 재배열할 수 있다. 또 다른 예로서, 복수개의 리드 동작들을 연속적으로 수행하고, 복수개의 라이트 동작들을 연속적으로 수행하도록 태스크 순서를 재배열할 수도 있다.
도 20의 (a) 및 (b)에 도시된 바와 같이, 스토리지 장치(2040)의 메모리 컨트롤러(2041)는 리드 동작에 우선순위를 부여하여 태스크 순서를 재배열한 경우에, 커맨드 정보 Q-CMD Read B 및 Q-CMD Read D에 기초하여 메모리 장치(2042)로부터 B 프로세스에 대한 데이터를 읽기 위한 동작과 D 프로세스에 대한 데이터를 읽기 위한 동작을 각각 미리 수행한다.
프로세서(2010)는 스토리지 장치(2040)의 큐 상태 체크(Queue Status Check)를 통하여 큐 오퍼레이션이 준비된 것을 확인한 후에, 준비된 큐 정보 Q-CMD Read B 및 Q-CMD Read D 각각에 대응되는 리드 커맨드인 CMD Read B와 CMD Read C를 메모리 컨트롤러(2041)로 순차적으로 전송한다. 메모리 컨트롤러(2041)는 CMD Read B와 CMD Read C를 인식하여, 메모리 장치(2042)로부터 미리 읽어낸 B 프로세스에 대한 데이터 및 D 프로세스에 대한 데이터를 순차적으로 프로세서(2010)로 전송한다. 그러면, 프로세서(2010)는 B 프로세스에 대한 데이터 및 D 프로세스에 대한 데이터를 RAM(2020)에 로딩한다.
그리고 나서, 프로세서(2010)는 라이트 커맨드인 CMD Write A와 A 프로세스에 대한 데이터, 라이트 커맨드인 CMD Write C와 C 프로세스에 대한 데이터를 순차적으로 스토리지 장치(2040)의 메모리 컨트롤러(2041)로 전송한다. 그러면, 메모리 컨트롤러(2041)는 A 프로세스에 대한 데이터 및 C 프로세스에 대한 데이터를 각각 메모리 장치(2042)에 라이트하기 위한 프로그램 동작을 수행한다.
도 21은 본 발명과 관련된 멀티미디어 카드 시스템에서의 HPI(High Priority Interrupt) 동작에 따른 태스크 처리 상태를 보여주는 도면이다.
프로세서(2010)는 빠른 페이지 인 처리를 요청하기 위하여 스토리지 장치(2040)의 메모리 컨트롤러(2041)로 HPI(High Priority Interrupt)를 요청할 수 있다. eMMC를 채용하는 데이터 처리 시스템(2000)에서 프로세서(2010)는 스토리지 장치(2040)의 상태를 알 수 없는 상태에서 HPI를 요청하게 된다. 이러한 경우에 스토리지 장치(2040)는 가비지 컬렉션(garbage collection) 등의 메모리 장치(2042)에 대한 동작인 진행 중인 상태에서 HPI를 전달받는 경우도 발생될 수 있다. 이로 인하여 스토리지 장치(2040)에서의 HPI에 대한 처리가 늦어지는 경우가 발생될 수 있다.
또한, 도 21에 도시된 바와 같이 HPI 동작이 끝난 이후에는 이전의 라이트 동작에 의하여 데이터가 얼마나 프로그램 되었는지 확인하고, 프로그램이 진행되지 못한 데이터를 다시 라이트하는 복구(restore) 과정이 필요하다. 프로세서(2010)는 HPI 동작에 대한 응답(response) 시점을 정확하게 예측하기 어렵기 때문에 페이지 인 처리 동작을 원하는 시점에 수행하지 못할 수도 있다.
본 발명에서는 페이지 인 처리 동작을 빠르고 정확하게 수행하기 위하여 스토리지 장치(2040)의 큐 상태를 알려주는 신호를 생성하여 프로세서(2010)로 전송하는 방식을 제안한다.
도 22는 본 발명의 데이터 처리 시스템에서의 스토리지 장치(2040)의 큐(Queue) 상태에 기초한 메모리 스와핑 처리 동작을 설명하기 위한 도면이다.
도 22를 참조하면, 프로세서(2010)로부터 커맨드 큐 정보가 Q-CMD Write A, Q-CMD Write B, Q-CMD Read C, Q-CMD Read D 순으로 스토리지 장치(2040)로 전송된다. 예로서, 스토리지 장치(2040)가 Q-CMD Write A에 기초하여 A 프로세스에 대한 데이터를 라이트하는 태스크를 진행 중인 상태에서 프로세서(2010)는 C 프로세스에 대한 데이터 및 D 프로세스에 대한 데이터를 읽을 것이라는 큐 정보 Q-CMD Read C 및 Q-CMD Read D를 순차적으로 스토리지 장치(2040)로 전송할 수 있다. 이 때 프로세서(2010)는 큐 정보에 포함되는 우선순위 정보를 통하여 리드 동작에 대한 태스크에 우선순위가 있음을 스토리지 장치(2040)에 알려줄 수 있다.
그러면, 스토리지 장치(2040)는 큐 정보에 기초하여 태스크들에 대한 스케쥴링(scheduling) 및 재배열(re-ordering) 처리를 실행한다. 이에 따라서, 스토리지 장치(2040)는 내부 동작을 정리한 상태에서 우선순위를 가진 태스크 동작을 먼저 수행한다. 도 22를 참조하면, 스토리지 장치(2040)는 A 프로세스에 대한 데이터에 대한 라이트 동작을 마친 후에, B 프로세스에 대한 데이터를 라이트하는 동작을 수행하기에 앞서 우선순위가 높은 C 프로세스에 대한 데이터 및 D 프로세스에 대한 데이터를 읽어내는 동작을 수행하는 것을 보여준다.
그리고, 스토리지 장치(2040)는 큐 상태를 알려주는 신호를 프로세서(2010)를 전송한다. 이에 따라서, 프로세서(2010)는 스토리지 장치(2040)로부터 전달받은 큐 상태를 알려주는 신호를 통하여 스토리지 장치(2040)에서의 큐 오퍼레이션에 준비가 되어 있는 시점을 알 수 있다. 즉, 스토리지 장치(2040)에서의 큐 정보(Q-CMD)에 대한 페이지 인 처리 준비 동작 또는 페이지 아웃 처리 준비 동작을 완료한 시점을 큐 상태를 알려주는 신호를 통하여 프로세서(2010)는 알 수 있게 된다.
예로서, 프로세서(2010)는 스토리지 장치(2040)에서의 페이지 인 처리에 대한 큐 정보(Q-CMD)에 대한 준비 동작을 마친 시점을 큐 상태를 알려주는 신호를 통하여 인식한 후에 스토리지 장치(2040)로 리드 커맨드를 전송함으로써, 레이턴시(latency) 없이 C 프로세스에 대한 데이터 및 D 프로세스에 대한 데이터를 스토리지 장치(2040)로부터 전송받을 수 있다.
도 23은 본 발명의 실시 예에 따른 메모리 스와핑 처리 방법의 흐름도이다.
예로서, 본 발명의 실시 예에 따른 메모리 스와핑 처리 방법은 도 1, 2 또는 도 13에 도시된 데이터 처리 시스템에서 수행될 수 있다. 설명의 편의를 위하여, 도 1, 2의 데이터 처리 시스템(1000)에서 수행되는 메모리 스와핑 처리 방법을 도 23을 참조하여 설명하기로 한다.
스토리지 장치(200)는 메모리 스와핑 태스크에 대한 큐 정보(Q-CMD)를 호스트 장치(100)로부터 수신한다(S110). 예로서, 호스트 장치(100)에서 페이지 폴트가 발생되는 경우에 프로세서(110)는 메모리 스와핑 태스크에 대한 큐 정보(Q-CMD)를 스토리지 장치(200)로 전송할 수 있다. 페이지 폴트는 호스트 장치(100)에서 애플리케이션 프로세스를 수행하기 위하여 읽고자 하는 페이지가 호스트 장치(100)에 저장되어 있지 않는 경우에 발생된다. 예로서, 큐 정보(Q-CMD)는 메모리 스와핑 동작에 대한 페이지 인 동작 또는 페이지 아웃 동작 중 적어도 하나에 대한 큐 정보를 포함할 수 있다. 예로서, 큐 정보(Q-CMD)는 메모리 스와핑 동작에 대한 페이지 인 동작 또는 페이지 아웃 동작 중 적어도 하나를 수행하는 리드 커맨드 또는 라이트 커맨드에 대한 태스크를 나타내는 정보이다.
세부적으로, 큐 정보(Q-CMD)는 메인 메모리(120)에 로딩되어 있는 A 프로세서에 대한 데이터를 스토리지 장치(200)에 옮겨 저장하기 위한 페이지 아웃 동작에 대한 태스크를 나타내는 큐 정보인 Q-CMD Write A를 스토리지 장치(200)로 전송할 수 있다. 다른 예로서, 큐 정보(Q-CMD)는 스토리지 장치(200)에 저장되어 있는 B 프로세서에 대한 데이터를 호스트 장치(100)의 메인 메모리(120)에 로딩시키기 위한 페이지 인 동작에 대한 태스크를 나타내는 큐 정보(Q-CMD)인 Q-CMD Read B를 스토리지 장치(200)로 전송할 수 있다.
다음으로, 스토리지 장치(200)는 호스트 장치로부터 수신된 큐 정보(Q-CMD)에 기초하여 메모리 스와핑 태스크의 일부 동작을 미리 수행한다(S120). 예로서, 스토리지 장치(200)는 큐 정보(Q-CMD)에 기초하여 메모리 스와핑 태스크의 페이지 아웃 동작 또는 페이지 인 동작 중의 적어도 하나에 대한 일부 동작을 미리 수행할 수 있다. 예로서, 페이지 아웃 동작의 프로그램 타임과 페이지 인 동작의 리드 타임의 일부를 중첩시켜서 페이지 인 동작을 스토리지 장치(200)에서 미리 수행할 수 있다.
스토리지 장치(200)는 메모리 스와핑 태스크의 일부 동작을 미리 수행하고 나서 호스트 장치(100)로부터 큐 정보(Q-CMD)에 대응되는 커맨드(CMD)를 수신한다(S130). 호스트 장치(100)는 스토리지 장치(200)의 큐 상태가 준비 상태에 있는 경우에 커맨드(CMD)를 전송할 수 있다. 예로서, 큐 정보(Q-CMD)에 기초한 메모리 스와핑 태스크의 일부 동작 수행을 완료한 것으로 나타내는 큐 상태에서 커맨드(CMD)를 전송할 수 있다.
다음으로, 스토리지 장치(200)는 미리 수행된 메모리 스와핑 태스크의 일부 동작의 결과를 이용하여 수신된 커맨드에 따른 메모리 스와핑 태스크의 나머지 동작을 수행한다(S140). 예로서, 스토리지 장치(200)에서 페이지 인 동작에 따른 데이터 읽기 동작을 미리 수행한 경우에, 페이지 인 동작을 수행하기 위한 리드 커맨드가 스토리지 장치(200)에 수신되면 스토리지 장치(200)는 미리 읽어낸 데이터를 호스트 장치(100)로 바로 전송할 수 있다. 예로서, 스토리지 장치(200)는 큐 정보(Q-CMD)를 이용하여 미리 읽어낸 데이터를 메모리 컨트롤러(210)의 RAM(212) 또는 메모리 장치(220)의 페이지 버퍼(15)에 저장할 수 있다. 그리고, 큐 정보(Q-CMD)에 대응되는 리드 커맨드가 수신되면, 스토리지 장치(200)는 컨트롤러(210)의 RAM(212) 또는 메모리 장치(220)의 페이지 버퍼(15)로부터 데이터를 읽어내어 호스트 장치(100)로 전송할 수 있다.
도 24는 도 23에 도시된 메모리 스와핑 태스크의 일부 동작을 미리 수행하는 단계에 대한 일 실시 예(S120A)에 따른 세부 흐름도이다.
스토리지 장치(200)의 메모리 컨트롤러(210)는 수신된 큐 정보에 기초하여 메모리 스와핑 태스크에 대한 페이지 아웃 동작과 페이지 인 동작을 스토리지 장치(200)의 각기 다른 메모리 칩에서 수행하도록 어드레스 변환 처리를 실행한다(S120-1A). 예로서, 메모리 컨트롤러(210)는 메모리 인터리빙 스케쥴링 처리 기법을 이용하여 서로 다른 메모리 칩에서 페이지 아웃 동작과 페이지 인 동작을 수행하도록 어드레스 변환 처리를 실행할 수 있다.
메모리 컨트롤러(210)는 어드레스 변환 처리 결과에 기초하여 페이지 아웃 동작에 따른 라이트 동작 또는 페이지 인 동작에 따른 리드 동작 중의 적어도 하나의 일부 동작을 미리 수행한다(S120-2A). 예로서, 메모리 컨트롤러(210)는 페이지 아웃 동작의 프로그램 타임과 페이지 인 동작의 리드 수행 타임의 일부를 중첩시켜서 상기 페이지 인 동작을 미리 수행할 수 있다.
도 25는 도 23에 도시된 메모리 스와핑 태스크의 일부 동작을 미리 수행하는 단계에 대한 다른 실시 예(S120B)에 따른 세부 흐름도이다.
스토리지 장치(200)의 메모리 컨트롤러(210)는 호스트 장치(100)로부터 수신되는 복수의 큐 정보(Q-CMD)들에 기초하여 태스크 처리 순서를 재배열하는 동작을 수행한다(S120-1B). 예로서, 메모리 컨트롤러(210)는 수신된 복수의 큐 정보(Q-CMD)들에 포함된 우선순위 정보에 기초하여 태스크 처리 순서를 재배열할 수 있다.
메모리 컨트롤러(210)는 재배열된 태스크 처리 순서에 기초하여 스토리지 장치(200)에서의 메모리 스와핑 태스크의 일부 동작을 미리 수행하도록 메모리 장치(220)를 제어한다(S120-2B).
도 26은 도 23에 도시된 커맨드를 수신하는 단계에 대한 일 실시 예(S130A)에 따른 세부 흐름도이다.
메모리 컨트롤러(210)는 스토리지 장치(200)의 큐 상태를 알리는 신호를 호스트 장치(100)로 전송한다(S130-1A). 예로서, 메모리 컨트롤러(210)는 스토리지 장치(200)에서의 큐 정보(Q-CMD)에 따른 메모리 스와핑 태스크의 일부 동작을 완료한 후에 스토리지 장치(200)의 큐가 준비 상태에 있다는 것을 알리는 신호를 호스트 장치(100)로 전송할 수 있다.
스토리지 장치(200)는 큐 상태를 알리는 신호에 기초하여 호스트 장치(100)로부터 큐 정보(Q-CMD)에 대응되는 커맨드(CMD)를 수신한다(S130-2A). 예로서, 호스트 장치(100)는 스토리지 장치(200)의 큐가 준비 상태에 있다는 것을 확인한 후에 큐 정보(Q-CMD)에 대응되는 커맨드(CMD)를 스토리지 장치(200)로 전송할 수 있다. 세부적으로, 스토리지 장치(200)의 큐 상태 체크를 통하여 B 프로세스에 대한 데이터를 메모리 장치(2041)에서 미리 읽어내는 동작을 마치고 준비 상태에 있는 것을 확인한 후에, B 프로세스에 대한 데이터의 리드를 실행하라는 커맨드(CMD Read B)를 스토리지 장치(200)로 전송할 수 있다.
도 27은 본 발명의 실시 예에 따른 데이터 처리 시스템의 호스트 장치에서 수행되는 메모리 스와핑 처리 동작의 예를 보여주는 흐름도이다.
호스트 장치(100)의 프로세서(110)는 새로운 프로세스 요청 발생에 따라서 메인 메모리(120)에 대한 액세스를 수행한다(S210).
프로세서(110)는 메인 메모리(120)에 대한 액세스 수행 과정에서 페이지 폴트가 발생되는지를 판단한다(S211).
페이지 폴트가 발생되는 경우에 프로세서(110)는 페이지 인 동작을 수행하기 위한 리드(READ) 리퀘스트에 대한 큐 정보를 스토리지 장치(200)로 전송한다(S212). 여기에서, 페이지 인 동작은 페이지 폴트가 발생된 페이지를 스토리지 장치(200)로부터 독출하여 메인 메모리(120)에 로딩시키는 태스크를 의미한다. 따라서, 페이지 인 동작을 위한 큐 정보(Q-CMD)는 페이지 폴트가 발생된 페이지를 스토리지 장치(200)로부터 독출하는 태스크에 대한 큐 정보(Q-CMD READ)를 나타낸다. 예로서, 큐 정보는 초기 설정된 커맨드(Q-CMD)를 이용하여 스토리지 장치(200)로 전송할 수 있다.
프로세서(110)는 메인 메모리(120)를 체크한다(S213). 예로서, 프로세서(110)는 메인 메모리(120)의 비어있는 저장 공간을 체크한다.
프로세서(110)는 메인 메모리(120)의 비어있는 저장 공간에 페이지 폴트가 발생된 페이지를 저장할 수 있는지를 판단한다(S214). 즉, 페이지 폴트가 발생된 페이지를 저장할 수 있는 여유 저장 공간이 메인 메모리(120)에 존재하는지를 판단한다.
만일 페이지 폴트가 발생된 페이지를 저장할 수 있는 여유 저장 공간이 메인 메모리(120)에 존재하지 않는 경우에, 프로세서(110)는 페이지 아웃 동작을 수행하기 위한 라이트(WRITE) 리퀘스트에 대한 큐 정보(Q-CMD WRITE)를 스토리지 장치(200)로 전송한다(S215).
그리고 나서, 프로세서(110)는 페이지 아웃 동작을 수행하기 위한 라이트(WRITE) 리퀘스트에 대한 라이트 커맨드 및 데이터를 스토리지 장치(200)로 전송한다(S216). 이 때 전송되는 데이터는 메인 메모리(120)로부터 읽어낸 데이터이다. 예로서, 전송되는 데이터는 메인 메모리(120)에서의 저장 공간 확보를 위하여 삭제할 데이터에 해당된다. 예로서, 프로세서(110)는 스토리지 장치(200)의 큐가 준비 상태에 있다는 것을 확인한 후에 큐 정보(Q-CMD WRITE)에 대응되는 커맨드(CMD WRITE)를 스토리지 장치(200)로 전송할 수 있다.
만일 페이지 폴트가 발생된 페이지를 저장할 수 있는 여유 저장 공간이 메인 메모리(120)에 존재하는 경우에, 프로세서(110)는 페이지 인 동작을 수행하기 위한 리드(READ) 리퀘스트에 대한 리드 커맨드를 스토리지 장치(200)로 전송한다(S217). 예로서, 프로세서(110)는 스토리지 장치(200)에서 큐 정보(Q-CMD READ)에 대한 선행 동작을 완료함으로써 스토리지 장치(200)의 큐가 준비 상태에 있다는 것을 확인한 후에, 큐 정보(Q-CMD READ)에 대응되는 커맨드(CMD READ)를 스토리지 장치(200)로 전송할 수 있다.
프로세서(110)는 리드 커맨드에 따라서 스토리지 장치(200)로부터 데이터를 수신한다(S218). 스토리지 장치(200)로부터 수신된 데이터는 메인 메모리(120)에 로딩된다.
다음으로, 프로세서(110)는 메인 메모리(120)에 로딩된 데이터를 이용하여 요청된 새로운 프로세스를 수행한다(S219). 만일 단계211(S211)에서 페이지 폴트가 발생되지 않는 경우에, 프로세서(110)는 바로 단계219(S219)를 수행한다.
도 28은 본 발명의 실시 예에 따른 데이터 처리 시스템의 호스트 장치에서 수행되는 메모리 스와핑 처리 동작의 다른 예를 보여주는 흐름도이다.
호스트 장치(100)의 프로세서(110)는 새로운 프로세스 요청 발생에 따라서 메인 메모리(120)에 대한 액세스를 수행한다(S310).
프로세서(110)는 메인 메모리(120)에 대한 액세스 수행 과정에서 페이지 폴트가 발생되는지를 판단한다(S311).
페이지 폴트가 발생되는 경우에 프로세서(110)는 메인 메모리(120)를 체크한다(S312). 예로서, 프로세서(110)는 메인 메모리(120)의 비어있는 저장 공간을 체크한다.
프로세서(110)는 메인 메모리(120)의 비어있는 저장 공간에 페이지 폴트가 발생된 페이지를 저장할 수 있는지를 판단한다(S313). 즉, 페이지 폴트가 발생된 페이지를 저장할 수 있는 여유 저장 공간이 메인 메모리(120)에 존재하는지를 판단한다.
만일 페이지 폴트가 발생된 페이지를 저장할 수 있는 여유 저장 공간이 메인 메모리(120)에 존재하지 않는 경우에, 프로세서(110)는 페이지 아웃 동작 및 페이지 인 동작을 수행하기 위한 라이트(WRITE) 리퀘스트 및 리드(READ) 리퀘스트 각각에 대한 큐 정보(Q-CMD WRITE, Q-CMD READ)를 순차적으로 스토리지 장치(200)로 전송한다(S314).
그리고 나서, 프로세서(110)는 페이지 아웃 동작을 수행하기 위한 라이트(WRITE) 리퀘스트 및 리드(READ) 리퀘스트 각각에 대한 라이트 커맨드 및 리드 커맨드를 순차적으로 스토리지 장치(200)로 전송한다(S315). 예로서, 프로세서(110)는 스토리지 장치(200)의 큐가 준비 상태에 있다는 것을 확인한 후에 큐 정보(Q-CMD)에 대응되는 커맨드(CMD)를 스토리지 장치(200)로 전송할 수 있다.
다음으로, 프로세서(110)는 라이트 커맨드에 따라서 라이트할 데이터를 스토리지 장치(200)로 전송하거나 리드 커맨드에 따라서 스토리지 장치(200)로부터 읽어낸 데이터를 수신한다(S316). 스토리지 장치(200)로 전송되는 데이터는 메인 메모리(120)로부터 읽어낸 데이터로서, 메인 메모리(120)에서의 저장 공간 확보를 위하여 삭제할 데이터에 해당된다. 그리고, 스토리지 장치(200)로부터 수신되는 데이터는 페이지 폴트가 발생된 데이터로서 메인 메모리(120)에 로딩된다.
만일 페이지 폴트가 발생된 페이지를 저장할 수 있는 여유 저장 공간이 메인 메모리(120)에 존재하는 경우에, 프로세서(110)는 페이지 인 동작을 수행하기 위한 리드(READ) 리퀘스트에 대한 큐 정보(Q-CMD READ)를 스토리지 장치(200)로 전송한다(S317). 여기에서, 페이지 인 동작은 페이지 폴트가 발생된 페이지를 스토리지 장치(200)로부터 독출하여 메인 메모리(120)에 로딩시키는 태스크를 의미한다.
다음으로, 프로세서(110)는 페이지 인 동작을 수행하기 위한 리드(READ) 리퀘스트에 대한 리드 커맨드를 스토리지 장치(200)로 전송한다(S318).
프로세서(110)는 리드 커맨드에 따라서 스토리지 장치(200)로부터 데이터를 수신한다(S319). 수신된 데이터를 메인 메모리(120)에 로딩된다.
다음으로, 프로세서(110)는 메인 메모리(120)에 로딩된 데이터를 이용하여 요청된 새로운 프로세스를 수행한다(S320). 만일 단계311(S311)에서 페이지 폴트가 발생되지 않는 경우에, 프로세서(110)는 바로 단계320(S320)을 수행한다.
다른 예로서, 위의 단계317(S317)에 대한 수행을 생략할 수도 있다. 이 경우에는 페이지 인 동작만을 필요로 하는 메모리 스와핑 처리에서 큐 정보를 스토리지 장치로(200)로 전송하는 동작을 생략할 수도 있다.
또 다른 예로서, 프로세서(110)는 위의 단계314(S314) ~ 단계316(S316)을 통합하여 도 17 ~ 도 20에 도시된 순서에 기초하여 큐 정보 및 커맨드를 전송할 수 있다.
도 29는 본 발명의 실시 예에 따른 데이터 처리 시스템의 스토리지 장치에서수행되는 메모리 스와핑 처리 동작의 일 예를 보여주는 흐름도이다.
스토리지 장치(200)의 메모리 컨트롤러(210)는 호스트 장치(100)로부터 큐 정보(Q-CMD)를 수신한다(S410). 예로서, 큐 정보(Q-CMD)는 초기 설정된 커맨드를 이용하여 호스트 장치(100)로부터 전송될 수 있다. 그리고, 큐 정보(Q-CMD)는 메모리 스와핑 동작에 대한 페이지 인 동작 또는 페이지 아웃 동작 중 적어도 하나를 수행하는 리드 커맨드 또는 라이트 커맨드에 대한 태스크를 나타내는 정보일 수 있다. 또한, 큐 정보는 데이터의 속성에 대한 정보를 포함할 수 있다.
메모리 컨트롤러(210)는 호스트 장치(100)로부터 수신된 큐 정보에서 나타내는 태스크의 일부 동작을 미리 수행하도록 스토리지 장치(200)를 제어한다(S411). 예로서, 메모리 컨트롤러(210)는 큐 정보에 기초하여 메모리 스와핑 태스크의 일부 동작을 미리 수행하도록 스토리지 장치(200)를 제어할 수 있다. 세부적으로, 메모리 컨트롤러(210)는 큐 정보에 기초하여 페이지 아웃 동작에 따른 라이트 동작 또는 페이지 인 동작에 따른 리드 동작 중의 적어도 하나의 동작을 미리 수행할 수 있다. 그리고, 메모리 컨트롤러(210)는 페이지 아웃 동작의 프로그램 타임과 상기 페이지 인 동작의 리드 타임의 일부를 중첩시켜서 페이지 인 동작을 미리 수행하도록 스토리지 장치(200)를 제어할 수 있다.
다음으로, 메모리 컨트롤러(210)는 스토리지 장치(200)의 큐 상태를 알리는 신호를 호스트 장치(100)로 전송한다(S412). 예로서, 메모리 컨트롤러(210)는 큐 정보(Q-CMD)에 따른 메모리 스와핑 태스크의 일부 동작이 완료된 후에 스토리지 장치(200)의 큐가 준비 상태에 있다는 것을 알리는 신호를 호스트 장치(100)로 전송할 수 있다.
다음으로, 메모리 컨트롤러(210)는 호스트 장치(100)로부터 큐 정보(Q-CMD)에 대응되는 커맨드(CMD)를 수신한다(S413). 예로서, 메모리 컨트롤러(210)는 페이지 아웃 동작에 대한 태스크에 대응되는 라이트 커맨드 또는 페이지 인 동작에 대한 태스크에 대응되는 리드 커맨드 중의 적어도 하나의 커맨드를 호스트 장치(100)로부터 수신한다.
다음으로, 메모리 컨트롤러(210)는 큐 정보(Q-CMD)에 기초하여 미리 수행된 태스크의 일부 동작 결과를 이용하여 수신된 커맨드(CMD)를 실행한다(S414).
도 30은 본 발명의 실시 예에 따른 데이터 처리 시스템의 스토리지 장치에서 수행되는 메모리 스와핑 처리 동작의 다른 예를 보여주는 흐름도이다.
스토리지 장치(200)의 메모리 컨트롤러(210)는 호스트 장치(100)로부터 복수의 큐 정보(Q-CMD)들을 순차적으로 수신한다(S510).
메모리 컨트롤러(210)는 호스트 장치(100)로부터 수신되는 복수의 큐 정보(Q-CMD)들에 기초하여 태스크 처리 순서를 재배열하는 동작을 수행한다(S511). 예로서, 메모리 컨트롤러(210)는 수신된 복수의 큐 정보(Q-CMD)들에 포함된 우선순위 정보에 기초하여 태스크 처리 순서를 재배열할 수 있다.
메모리 컨트롤러(210)는 재배열된 태스크 처리 순서에 기초하여 스토리지 장치(200)에서의 메모리 스와핑 태스크의 일부 동작을 미리 수행하도록 메모리 장치(220)를 제어한다(S512).
다음으로, 메모리 컨트롤러(210)는 스토리지 장치(200)의 큐 상태를 알리는 신호를 호스트 장치(100)로 전송한다(S513). 예로서, 메모리 컨트롤러(210)는 큐 정보(Q-CMD)에 따른 메모리 스와핑 태스크의 일부 동작이 완료된 후에 스토리지 장치(200)의 큐가 준비 상태에 있다는 것을 알리는 신호를 호스트 장치(100)로 전송할 수 있다.
다음으로, 메모리 컨트롤러(210)는 호스트 장치(100)로부터 큐 정보(Q-CMD)에 대응되는 커맨드(CMD)를 수신한다(S514). 예로서, 메모리 컨트롤러(210)는 페이지 아웃 동작에 대한 태스크에 대응되는 라이트 커맨드 또는 페이지 인 동작에 대한 태스크에 대응되는 리드 커맨드 중의 적어도 하나의 커맨드를 호스트 장치(100)로부터 수신한다.
다음으로, 메모리 컨트롤러(210)는 큐 정보(Q-CMD)에 기초하여 미리 수행된 태스크의 일부 동작 결과를 이용하여 수신된 커맨드(CMD)를 실행한다(S515).
도 31은 본 발명에 따른 데이터 처리 시스템의 스토리지 장치에 적용되는 메모리 장치의 예(3000)를 나타내는 도면이다.
도 31에 도시된 바와 같이, 메모리 장치(3000)는 다수의 반도체 레이어들(LA1~LAn)이 적층되어 구현될 수 있다. 반도체 레이어들(LA1 ~ LAn)각각은 전술된 도 2의 메모리 장치(220)를 포함하는 칩일 수 있고, 또는 반도체 레이어들(LA1 ~ LAn) 중 일부는 외부의 메모리 컨트롤러와 인터페이싱을 수행하는 마스터 칩이고 나머지는 도 5의 메모리 셀 어레이(11)를 포함하는 슬레이브 칩일 수 있다. 도 31의 예에서, 가장 아래에 위치하는 반도체 레이어(LA1)는 마스터 칩일 수 있고, 나머지 반도체 레이어들(LA2 ~ LAn)은 슬레이브 칩일 수 있다.
다수의 반도체 레이어들(LA1 ~ LAn)은 관통 실리콘 비아(TSV)를 통해 신호를 서로 송수신하며, 제1 반도체 레이어(LA1)는 외면에 형성된 도전 수단(미도시)을 통해 메모리 컨트롤러와 통신한다. 마스터 칩으로서 제1 반도체 레이어(LA1)와 슬레이브 칩으로서 제n 반도체 레이어(LAn)를 중심으로 하여 메모리 장치(3000)의 구성 및 동작을 설명하면 다음과 같다. 제1 반도체 레이어(LA1)는 슬레이브 칩들에 구비되는 메모리 셀 어레이(110)를 구동한다. 제1 반도체 레이어(LA1)는 외부의 메모리 컨트롤러로부터 데이터, 어드레스 및 명령 등을 수신하여 슬레이브 칩으로 전송하기 위한 로직을 포함할 수 있고, 각 슬레이브 칩으로부터 수신된 데이터를 외부의 메모리 컨트롤러로 전송하기 위한 로직을 포함할 수 있다. 각 반도체 레이어, 예를 들어, 제n 반도체 레이어(LAn)는 메모리 셀 어레이(11)와 셀 어레이를 구동하기 위한 주변 회로(PU)를 포함할 수 있다. 예를 들어, 각 슬레이브 칩들의 메모리 셀 어레이(11)는 도 5의 메모리 셀 어레이(11)이고, 각 슬레이브 칩들의 주변 회로(PU)에는 도 5의 제어 로직(12), 전압 생성부(13), 로우 디코더(14) 및 페이지 버퍼 회로(15)가 포함될 수 있다.
도 32는 본 발명에 따른 데이터 처리 시스템의 스토리지 장치에 적용되는 메모리 모듈의 예(4000)를 나타내는 도면이다.
도 32를 참조하면, 메모리 모듈(4000)은 메모리 칩(4100)들 및 제어 칩(4200)을 포함할 수 있다. 메모리 칩(4100)들은 데이터를 저장할 수 있다. 예를 들어, 메모리 칩(4100)들은 각각, 도 2의 메모리 장치(220)일 수 있다. 제어 칩(4200)은 외부의 메모리 컨트롤러로부터 전송되는 각종 신호에 응답하여, 메모리 칩(4100)들을 제어할 수 있다. 예를 들어, 제어 칩(4200)은 외부로부터 전송되는 칩 선택 신호에 대응되는 메모리 칩(4100)을 활성화할 수 있고, 각 메모리 칩(4100)들에서 독출되는 데이터에 대한 에러 체크 및 정정 동작을 수행할 수 있다.
도 33은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 나타내는 도면이다.
본 발명의 일 실시예에 따른 컴퓨팅 시스템(5000)은 모바일 기기나 데스크 탑 컴퓨터 등일 수 있고, CPU 등을 포함하는 호스트(5100), 램(5200), 유저 인터페이스(5300) 및 장치 드라이버(5400)를 포함할 수 있으며, 이들 구성요소는 각각 버스(5600)에 전기적으로 연결되어 있다. 스토리지 장치(5500)는 장치 드라이버(5500)와 연결될 수 있다.
호스트(5100) 및 램(5200)은 각각 도 2에 도시된 프로세서(110) 및 메인 메모리(120)가 될 수 있다. 또한, 스토리지 장치(5500)는 도 2에 도시된 스토리지 장치(200)가 될 수 있다.
호스트(5100)는 컴퓨팅 시스템(5000) 전체를 제어하고, 유저 인터페이스(5300)를 통해서 입력된 유저의 명령에 대응하는 연산 또는 데이터 처리를 수행할 수 있다. 램(5200)은 호스트(5100)의 데이터 메모리 역할을 할 수 있고, 호스트(5100)는 장치 드라이버(5400)를 통해서 스토리지 장치(5500)에 유저 데이터를 쓰거나 독출할 수 있다. 또한 도 33에서는 스토리지 장치(5500)의 동작 및 관리를 제어하기 위한 장치 드라이버(5400)가 호스트(5100)의 외부에 구비되는 것으로 도시되었으나, 장치 드라이버(5400)는 호스트(5400)의 내부에 구비되어도 무방하다.
도 34는 본 발명에 따른 데이터 처리 시스템의 스토리지 장치에 적용되는 메모리 카드의 예(6000)를 나타내는 도면이다.
메모리 카드(6000)는 모바일 기기나 데스크 탑 컴퓨터와 같은 전자기기에 연결하여 사용할 수 있는 휴대용 저장장치가 될 수 있다. 도 34에 도시된 바와 같이, 메모리 카드(6000)는 메모리 장치(6200), 메모리 컨트롤러(6100) 및 포트 영역(6300)을 구비할 수 있다. 메모리 카드(6000)는 포트 영역(6300)을 통해서 외부의 호스트와 통신할 수 있고, 메모리 컨트롤러(6100)는 메모리 장치(6200)를 제어할 수 있다. 메모리 컨트롤러(6100) 및 메모리 장치(6200)는 도 2에 도시된 메모리 컨트롤러(210) 및 메모리 장치(220)일 수 있다.
한편, 상기에서 설명된 본 발명에 적용되는 스토리지 장치는 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 예를 들면, 본 발명에 따른 스토리지 장치는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic MetricQuad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
1000 : 데이터 처리 시스템 100 : 호스트 장치
200, 2040 : 스토리지 장치 110, 2010 : 프로세서
120 : 메인 메모리 210 : 메모리 컨트롤러
220 : 메모리 장치 211 : 컨트롤 유닛
212 : RAM 213 : 커맨드 큐
214 : 메모리 인터페이스 215 : 호스트 인터페이스
130, 230, 216 : 버스 300 : 유선 또는 무선 인터페이스
11 : 메모리 셀 어레이 12 : 제어 로직
13 : 전압 생성부 14 : 로우 디코더
15 : 페이지 버퍼

Claims (20)

  1. 호스트 장치로부터 메모리 스와핑 태스크에 대한 큐 정보를 수신하는 단계;
    상기 큐 정보에 기초하여 스토리지 장치에서 상기 메모리 스와핑 태스크의 일부 동작을 미리 수행하는 단계;
    상기 메모리 스와핑 태스크의 일부 동작을 미리 수행하고 나서 상기 호스트 장치로부터 상기 큐 정보에 대응되는 커맨드를 수신하는 단계; 및
    상기 미리 수행된 메모리 스와핑 태스크의 일부 동작의 결과를 이용하여 상기 커맨드에 따른 상기 메모리 스와핑 태스크의 나머지 동작을 수행하는 단계를 포함함을 특징으로 하는 메모리 스와핑 처리 방법.
  2. 제1항에 있어서, 상기 큐 정보는 상기 메모리 스와핑 태스크에 대한 정보 및 상기 메모리 스와핑 태스크에 따라 요청되는 데이터의 속성에 대한 정보를 포함함을 특징으로 하는 메모리 스와핑 처리 방법.
  3. 제1항에 있어서, 상기 큐 정보는 초기 설정된 커맨드를 이용하여 상기 호스트 장치로부터 상기 스토리지 장치로 전송되는 것을 특징으로 하는 메모리 스와핑 처리 방법.
  4. 제1항에 있어서, 상기 메모리 스와핑 태스크의 일부 동작은 상기 큐 정보에서 리드 커맨드에 대한 태스크를 지시하는 경우에 상기 스토리지 장치의 비휘발성 메모리 장치로부터 데이터를 독출하여 상기 스토리지 장치의 랜덤 액세스 메모리에 저장하는 동작을 포함함을 특징으로 하는 메모리 스와핑 처리 방법.
  5. 제1항에 있어서, 상기 메모리 스와핑 태스크의 일부 동작은 상기 큐 정보에서 라이트 커맨드에 대한 태스크를 지시하는 경우에 상기 스토리지 장치에서의 어드레스 변환 처리 또는 메모리 인터리빙 스케쥴링 처리 중의 적어도 하나를 수행하는 동작을 포함함을 특징으로 하는 메모리 스와핑 처리 방법.
  6. 제1항에 있어서, 상기 메모리 스와핑 태스크의 일부 동작을 미리 수행하는 단계는
    상기 큐 정보에 기초하여 상기 메모리 스와핑 태스크에 대한 페이지 아웃 동작과 페이지 인 동작을 상기 스토리지 장치의 각기 다른 메모리 칩에서 수행하도록 어드레스 변환 처리를 실행하는 단계; 및
    상기 어드레스 변환 처리 결과에 기초하여 페이지 아웃 동작에 따른 라이트 동작 또는 페이지 인 동작에 따른 리드 동작 중의 적어도 하나의 일부 동작을 미리 수행하는 단계를 포함함을 특징으로 하는 메모리 스와핑 처리 방법.
  7. 제6항에 있어서, 상기 페이지 아웃 동작의 프로그램 타임과 상기 페이지 인 동작의 리드 수행 타임의 일부를 중첩시켜서 상기 페이지 인 동작을 미리 수행하는 것을 특징으로 하는 메모리 스와핑 처리 방법.
  8. 제1항에 있어서, 상기 메모리 스와핑 태스크의 일부 동작을 미리 수행하는 단계는
    상기 호스트 장치로부터 수신되는 복수의 큐 정보들에 기초하여 태스크 처리 순서를 재배열하는 단계; 및
    상기 재배열된 태스크 처리 순서에 기초하여 상기 스토리지 장치에서 상기 메모리 스와핑 태스크의 일부 동작을 미리 수행하는 단계를 포함함을 특징으로 하는 메모리 스와핑 처리 방법.
  9. 제8항에 있어서, 상기 복수의 큐 정보들에 포함된 우선순위 정보에 기초하여 태스크 처리 순서를 재배열하는 것을 특징으로 하는 메모리 스와핑 처리 방법.
  10. 제1항에 있어서, 상기 커맨드는 수신하는 단계는
    상기 스토리지 장치의 큐 상태를 알리는 신호를 상기 호스트 장치로 전송하는 단계; 및
    상기 큐 상태를 알리는 신호에 기초하여 상기 호스트 장치로부터 상기 큐 정보에 대응되는 커맨드를 수신하는 단계를 포함하고,
    상기 큐 상태를 알리는 신호는 상기 큐 정보에 따른 상기 메모리 스와핑 태스크의 일부 동작의 완료 상태를 나타내는 정보를 포함함을 특징으로 하는 메모리 스와핑 처리 방법.
  11. 메인 메모리; 및
    상기 메인 메모리에 로딩된 데이터를 이용하여 어플리케이션 프로세스를 수행하는 프로세서를 포함하고,
    상기 프로세서는 페이지 폴트가 발생되는 경우에 메모리 스와핑 태스크에 대한 큐 정보 및 상기 큐 정보에 대응되는 커맨드를 순차적으로 스토리지 장치로 전송하는 것을 특징으로 하는 호스트 장치.
  12. 제11항에 있어서, 상기 프로세서는 초기 설정된 커맨드를 이용하여 상기 큐 정보를 상기 스토리지 장치로 전송하는 것을 특징으로 하는 호스트 장치.
  13. 제11항에 있어서, 상기 프로세서는 상기 메모리 스와핑 태스크에 대한 큐 정보를 상기 스토리지 장치로 전송한 후에, 상기 스토리지 장치의 큐 상태에 기초하여 상기 메모리 스와핑 태스크를 수행하기 위한 커맨드를 상기 스토리지 장치로 전송하는 것을 특징으로 하는 호스트 장치.
  14. 메모리 스왑 공간이 할당된 메모리 장치; 및
    상기 메모리 장치에 대한 리드 동작 및 라이트 동작을 제어하는 메모리 컨트롤러를 포함하고,
    상기 메모리 컨트롤러는 메모리 스와핑 태스크에 대한 큐 정보 및 상기 큐 정보에 대응되는 커맨드를 수신하고, 상기 수신된 큐 정보에 기초하여 상기 메모리 장치에서 상기 스와핑 태스크에 대한 일부 동작을 미리 수행한 후에 상기 커맨드에 기초하여 상기 스와핑 태스크의 나머지 동작을 수행하도록 상기 메모리 장치를 제어하는 것을 특징으로 하는 스토리지 장치.
  15. 제14항에 있어서, 상기 메모리 장치는 복수의 플래시 메모리 칩들로 구성되고, 상기 메모리 컨트롤러는 상기 메모리 스와핑 태스크에 대한 페이지 아웃 동작과 페이지 인 동작을 상기 메모리 장치를 구성하는 각기 다른 플래시 메모리 칩에서 수행하도록 어드레스 변환 처리를 실행하는 것을 특징으로 하는 스토리지 장치.
  16. 제14항에 있어서, 상기 메모리 컨트롤러는 상기 큐 정보에 포함된 우선순위 정보에 기초하여 상기 메모리 스와핑 태스크에 대한 실행 순서를 재배열하는 것을 특징으로 하는 스토리지 장치.
  17. 제14항에 있어서, 상기 메모리 컨트롤러는 상기 스토리지 장치의 큐 상태를 알려주는 신호를 생성하여 호스트 장치로 전송하는 것을 특징으로 하는 스토리지 장치.
  18. 페이지 폴트가 발생되는 경우에 메모리 스와핑 태스크에 대한 큐 정보 및 상기 큐 정보에 대응되는 커맨드를 순차적으로 스토리지 장치로 전송하는 호스트 장치; 및
    상기 호스트 장치로부터 수신된 큐 정보에 기초하여 상기 메모리 스와핑 태스크의 일부 동작을 미리 수행하고, 상기 미리 수행된 메모리 스와핑 태스크의 일부동작의 결과를 이용하여 상기 커맨드에 따른 상기 메모리 스와핑 태스크의 나머지 동작을 실행하는 스토리지 장치를 포함함을 특징으로 하는 데이터 처리 시스템.
  19. 제18항에 있어서, 상기 호스트 장치는 페이지 폴트가 발생되는 경우에 메모리 스와핑 태스크에 대한 큐 정보를 상기 스토리지 장치로 전송한 후에, 상기 스토리지 장치의 큐 상태에 기초하여 상기 메모리 스와핑 태스크를 수행하기 위한 커맨드를 상기 스토리지 장치로 전송하는 것을 특징으로 하는 데이터 처리 시스템.
  20. 제18항에 있어서, 상기 스토리지 장치는 임베디드 멀티미디어 카드로 구현되는 것을 특징으로 하는 데이터 처리 시스템.
KR1020140059962A 2014-05-19 2014-05-19 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템 KR102254099B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020140059962A KR102254099B1 (ko) 2014-05-19 2014-05-19 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템
US14/685,619 US9898423B2 (en) 2014-05-19 2015-04-14 Memory swapping method, and host device, storage device, and data processing system using the same
CN201510257186.3A CN105095096B (zh) 2014-05-19 2015-05-19 存储交换方法、主机装置、存储装置和数据处理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140059962A KR102254099B1 (ko) 2014-05-19 2014-05-19 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템

Publications (2)

Publication Number Publication Date
KR20150133084A true KR20150133084A (ko) 2015-11-27
KR102254099B1 KR102254099B1 (ko) 2021-05-20

Family

ID=54538535

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140059962A KR102254099B1 (ko) 2014-05-19 2014-05-19 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템

Country Status (3)

Country Link
US (1) US9898423B2 (ko)
KR (1) KR102254099B1 (ko)
CN (1) CN105095096B (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017135586A1 (ko) * 2016-02-04 2017-08-10 삼성전자주식회사 메모리 관리 방법 및 그 전자 장치
WO2020175720A1 (ko) * 2019-02-28 2020-09-03 엘지전자 주식회사 디지털 디바이스 및 그 제어 방법
KR20210013870A (ko) * 2019-07-29 2021-02-08 에스케이하이닉스 주식회사 데이터 스왑을 위한 메모리 시스템 및 그 동작방법

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9880772B2 (en) 2015-09-21 2018-01-30 Micron Technology, Inc. Systems and methods for providing file information in a memory system protocol
CN107885666B (zh) 2016-09-28 2021-07-20 华为技术有限公司 一种内存管理方法和装置
CN107885594B (zh) * 2016-09-30 2020-06-12 腾讯科技(深圳)有限公司 分布式资源调度方法、调度节点及接入节点
US10552045B2 (en) * 2016-11-16 2020-02-04 Sandisk Technologies Llc Storage operation queue
KR102549540B1 (ko) * 2017-09-22 2023-06-29 삼성전자주식회사 스토리지 장치 및 그 동작 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150134857A1 (en) * 2013-11-14 2015-05-14 Sandisk Technologies Inc. System and Method for I/O Optimization in a Multi-Queued Environment

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63180828A (ja) 1987-01-22 1988-07-25 Agency Of Ind Science & Technol 高速処理化カラ−センサ
US4843541A (en) 1987-07-29 1989-06-27 International Business Machines Corporation Logical resource partitioning of a data processing system
CA2383526A1 (en) 1999-09-01 2001-03-15 Intel Corporation Branch instruction for multithreaded processor
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US7159216B2 (en) * 2001-11-07 2007-01-02 International Business Machines Corporation Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system
US6910106B2 (en) 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
US7949806B2 (en) 2004-11-18 2011-05-24 International Business Machines Corporation Apparatus and method to provide an operation to an information storage device including protocol conversion and assigning priority levels to the operation
US8719819B2 (en) * 2005-06-30 2014-05-06 Intel Corporation Mechanism for instruction set based thread execution on a plurality of instruction sequencers
US7716388B2 (en) 2005-05-13 2010-05-11 Texas Instruments Incorporated Command re-ordering in hub interface unit based on priority
US7793059B2 (en) 2006-01-18 2010-09-07 Apple Inc. Interleaving policies for flash memory
US7562180B2 (en) 2006-03-28 2009-07-14 Nokia Corporation Method and device for reduced read latency of non-volatile memory
EP2242058B1 (en) 2006-03-31 2014-07-16 Mosaid Technologies Incorporated Flash memory system control scheme
US7356671B1 (en) 2006-07-27 2008-04-08 Vbridge Microsystem, Inc. SoC architecture for voice and video over data network applications
US20090094678A1 (en) * 2007-10-05 2009-04-09 Nokia Corporation Mulimode device
US8156299B2 (en) 2007-10-19 2012-04-10 Virident Systems Inc. Managing memory systems containing components with asymmetric characteristics
US8458393B2 (en) * 2008-03-31 2013-06-04 Spansion Llc Flash memory and operating system kernel
US8214845B2 (en) * 2008-05-09 2012-07-03 International Business Machines Corporation Context switching in a network on chip by thread saving and restoring pointers to memory arrays containing valid message data
EP2192493A1 (en) 2008-11-28 2010-06-02 ST Wireless SA Method of paging on demand for virtual memory management in a processing system, and corresponding processing system
WO2010138628A1 (en) 2009-05-28 2010-12-02 Marvell World Trade Ltd. Metadata management for virtual volumes
CN102460400B (zh) * 2009-06-29 2014-09-24 惠普开发有限公司 基于管理程序的本地和远程虚拟内存页面管理
US8131889B2 (en) 2009-11-10 2012-03-06 Apple Inc. Command queue for peripheral component
JP5707911B2 (ja) 2010-01-27 2015-04-30 富士通セミコンダクター株式会社 データ転送制御装置
WO2012048444A1 (en) 2010-10-14 2012-04-19 Freescale Semiconductor, Inc. Are Memory controller and method for accessing a plurality of non-volatile memory arrays
US9009391B2 (en) 2010-10-25 2015-04-14 Fastor Systems, Inc. Solid state drive architecture
US9304774B2 (en) * 2011-02-04 2016-04-05 Qualcomm Incorporated Processor with a coprocessor having early access to not-yet issued instructions
US9021146B2 (en) 2011-08-30 2015-04-28 Apple Inc. High priority command queue for peripheral component
US8775722B2 (en) * 2011-12-30 2014-07-08 Sandisk Technologies Inc. Storing data in parallel in a flash storage device using on chip page shifting between planes
US8914458B2 (en) * 2012-09-27 2014-12-16 Mellanox Technologies Ltd. Look-ahead handling of page faults in I/O operations
US9519440B2 (en) * 2013-09-10 2016-12-13 Qualcomm Incorporated Providing command queuing in embedded memories
US10108372B2 (en) * 2014-01-27 2018-10-23 Micron Technology, Inc. Methods and apparatuses for executing a plurality of queued tasks in a memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150134857A1 (en) * 2013-11-14 2015-05-14 Sandisk Technologies Inc. System and Method for I/O Optimization in a Multi-Queued Environment

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017135586A1 (ko) * 2016-02-04 2017-08-10 삼성전자주식회사 메모리 관리 방법 및 그 전자 장치
KR20170092912A (ko) * 2016-02-04 2017-08-14 삼성전자주식회사 메모리 관리 방법 및 그 전자 장치
US10831392B2 (en) 2016-02-04 2020-11-10 Samsung Electronics Co., Ltd. Volatile and nonvolatile memory management method and electronic device
WO2020175720A1 (ko) * 2019-02-28 2020-09-03 엘지전자 주식회사 디지털 디바이스 및 그 제어 방법
US11210026B2 (en) 2019-02-28 2021-12-28 Lg Electronics Inc. Digital device and method for controlling the same
KR20210013870A (ko) * 2019-07-29 2021-02-08 에스케이하이닉스 주식회사 데이터 스왑을 위한 메모리 시스템 및 그 동작방법

Also Published As

Publication number Publication date
US9898423B2 (en) 2018-02-20
KR102254099B1 (ko) 2021-05-20
CN105095096A (zh) 2015-11-25
US20150331628A1 (en) 2015-11-19
CN105095096B (zh) 2020-03-27

Similar Documents

Publication Publication Date Title
KR101997572B1 (ko) 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 쓰기 방법
KR102254099B1 (ko) 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템
US10467133B2 (en) Storage device including nonvolatile memory device and garbage collection method thereof
KR102225989B1 (ko) 불휘발성 메모리 시스템 및 그것의 동작 방법
KR102226367B1 (ko) 불휘발성 메모리 장치 및 그것을 포함하는 불휘발성 메모리 시스템
US20160011971A1 (en) Storage medium, memory system, and method of managing storage area in memory system
US11226895B2 (en) Controller and operation method thereof
KR102308782B1 (ko) 메모리 컨트롤러, 스토리지 디바이스, 서버 가상화 시스템 및 서버 가상화 시스템에서의 스토리지 디바이스 인식 방법
US20140029344A1 (en) Nonvolatile memory device, programming method thereof and memory system including the same
US20150205539A1 (en) Memory system including nonvolatile memory device and erase method thereof
KR20170118288A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US9257192B2 (en) Memory system performing multi-step erase operation based on stored metadata
KR20130107733A (ko) 불휘발성 메모리 장치, 메모리 시스템 및 그것의 프로그램 방법
KR20170015708A (ko) 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 프로그램 방법
KR20170085286A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20150106778A (ko) 메모리 시스템 및 메모리 시스템의 제어 방법
CN111554339A (zh) 控制暂停模式的存储器控制器和方法
KR20130117422A (ko) 프로그램 스케줄러를 포함하는 플래시 메모리 장치
KR20130084846A (ko) 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법
US9147475B2 (en) Data storage device comprising nonvolatile memory chips and control method thereof
US20210382637A1 (en) Storage device and method of operating the storage device
US20210151112A1 (en) Memory system and operating method thereof
US20230147882A1 (en) Memory controller for controlling allocation ratio of buffer memory, memory system including the same, and method of operating memory controller
KR102580946B1 (ko) 버퍼 메모리의 할당 비율을 제어하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작 방법
US11348647B2 (en) Memory device and method of operating the same

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant