KR101449524B1 - 스토리지 장치 및 컴퓨팅 시스템 - Google Patents

스토리지 장치 및 컴퓨팅 시스템 Download PDF

Info

Publication number
KR101449524B1
KR101449524B1 KR1020080022961A KR20080022961A KR101449524B1 KR 101449524 B1 KR101449524 B1 KR 101449524B1 KR 1020080022961 A KR1020080022961 A KR 1020080022961A KR 20080022961 A KR20080022961 A KR 20080022961A KR 101449524 B1 KR101449524 B1 KR 101449524B1
Authority
KR
South Korea
Prior art keywords
memory
address
data
host
controller
Prior art date
Application number
KR1020080022961A
Other languages
English (en)
Other versions
KR20090097671A (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 KR1020080022961A priority Critical patent/KR101449524B1/ko
Priority to US12/176,491 priority patent/US8443144B2/en
Publication of KR20090097671A publication Critical patent/KR20090097671A/ko
Application granted granted Critical
Publication of KR101449524B1 publication Critical patent/KR101449524B1/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/1009Address translation using page tables, e.g. page table structures
    • 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
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/217Hybrid disk, e.g. using both magnetic and solid state storage devices
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

메모리 장치 및 컴퓨팅 시스템이 제공된다. 본 발명의 메모리 장치는 제1 저장 용량을 가지는 제1 메모리, 상기 제1 저장 용량보다 큰 제2 저장 용량을 가지는 제2 메모리 및 상기 제1 저장 용량보다 크고 상기 제1 저장 용량 및 상기 제2 저장 용량의 합보다 작은 제3 저장 용량에 대응하는 주소 공간을 외부 호스트에 제공하는 컨트롤러를 포함할 수 있다. 이를 통해 호스트의 메모리 관리 부하를 줄일 수 있다.
메모리 장치, 비휘발성 메모리, 비휘발성 RAM

Description

스토리지 장치 및 컴퓨팅 시스템 {STORAGE DEVICE AND COMPUTING SYSTEM}
본 발명은 스토리지 장치 및 컴퓨팅 시스템에 관한 것으로서, 특히 비휘발성 메모리(non-volatile memory)에 기반한 스토리지 장치 및 스토리지 장치를 이용하는 컴퓨팅 시스템에 관한 것이다.
데이터를 저장하는 스토리지 장치로는 자기 디스크(magnetic disk), 반도체 메모리 등이 있을 수 있다. 스토리지 장치는 종류 별로 서로 다른 물리적 특성을 가지기 때문에 물리적 특성에 상응하는 관리 방법이 필요하다.
종래의 스토리지 장치로는 자기 디스크가 널리 사용되어 왔다. 자기 디스크는 평균적으로 킬로바이트(kilobyte) 당 수 밀리초(millisecond)의 읽기/쓰기 시간을 특성으로 가진다. 또한, 자기 디스크는 데이터가 저장된 물리적 위치에 따라 암(arm)이 도달하는 시간이 다르기 때문에 읽기/쓰기 시간이 달라지는 특성을 가진다.
호스트(host) 또는 프로세서(processor)는 스토리지 장치에 저장된 데이터를 읽거나 스토리지 장치에 데이터를 저장하기 위하여 스토리지 장치에 접근(access)한다. 호스트 또는 프로세서가 스토리지 장치로부터 데이터를 읽어 들이는 시간은 호스트 또는 프로세서의 입장에서는 상대적으로 긴 시간이므로 호스트 또는 프로세서는 스토리지 장치에 저장된 데이터의 일부를 저장하는 메모리 (자기 디스크보다 데이터 입출력 시간이 짧은)를 이용할 수 있다.
호스트 또는 프로세서는 한번 읽은 데이터를 가까운 시간 내에 다시 한번 읽어 들이는 경향이 있다. 이러한 경향을 시간적 지역성(temporal locality)라고 하며, 종래의 스토리지 장치 및 관리 시스템(management system)은 시간적 지역성을 이용하여 호스트 또는 프로세서가 스토리지 장치로부터 읽은 데이터를 저장하는 버퍼 메모리(buffer memory)를 이용한다.
호스트 또는 프로세서의 동작 속도가 빨라짐에 따라 빠른 버퍼 메모리가 필요하게 되었고, 현재는 호스트 또는 프로세서에 가장 가까우며 가장 빠르게 동작하는 캐시 메모리(cache memory), 캐시 메모리와 스토리지 장치 사이에 위치하며 캐시 메모리보다는 느리고 스토리지 장치보다는 빠르게 동작하는 메인 메모리(main memory)가 이용되고 있다.
이러한 프로세서 - 캐시 메모리 - 메인 메모리 - 스토리지 장치로 연결되는 구조를 메모리 계층(memory hierarchy)이라 하기도 하며, 어플리케이션에 따라서는 캐시 메모리가 L1(Level 1) 캐시 메모리 및 L2(Level 2) 캐시 메모리를 포함하는 복수의 레벨에 따른 계층을 가지는 경우도 있을 수 있다.
본 발명의 일 실시예에 따른 메모리 장치 또는 컴퓨팅 시스템은 호스트 (또는 프로세서)의 메모리 관리 부하(load)를 줄일 수 있다.
본 발명의 일 실시예에 따른 메모리 장치 또는 컴퓨팅 시스템은 호스트 (또는 프로세서) 및 메모리 간의 주소 변환 과정을 단순화하여 호스트 및 메모리 간의 데이터 대역폭을 늘릴 수 있다.
본 발명의 일 실시예에 따른 메모리 장치 또는 컴퓨팅 시스템은 부팅 과정을 단순화하여 부팅 시간을 줄일 수 있다.
본 발명의 일 실시예에 따른 메모리 장치 또는 컴퓨팅 시스템은 서로 다른 종류의 메모리의 사용을 최적화하여 소모 전력을 줄일 수 있다.
본 발명의 일 실시예에 따른 메모리 장치 또는 컴퓨팅 시스템은 표준화된 규격에 따른 메모리 장치의 사용에 적합한 인터페이스를 제공할 수 있다.
본 발명의 일 실시예에 따른 메모리 장치는 제1 저장 용량을 가지는 제1 메모리, 상기 제1 저장 용량보다 큰 제2 저장 용량을 가지는 제2 메모리 및 상기 제1 저장 용량보다 크고 상기 제1 저장 용량 및 상기 제2 저장 용량의 합보다 작은 제3 저장 용량에 대응하는 주소 공간을 외부 호스트에 제공하는 컨트롤러를 포함할 수 있다. 상기 컨트롤러는 상기 외부 호스트로부터 요청된 데이터가 상기 제1 메모리에 저장되어 있으면 상기 요청된 데이터를 상기 제1 메모리로부터 상기 외부 호스트로 전달하고, 상기 요청된 데이터가 상기 제1 메모리에 저장되어 있지 않으면 상기 요청된 데이터를 상기 제2 메모리로부터 상기 외부 호스트로 전달할 수 있다.
본 발명의 다른 실시예에 따른 컴퓨팅 시스템은 비휘발성 메모리, 호스트 및 인터페이스를 포함할 수 있다. 상기 호스트는 가상 주소를 상기 비휘발성 메모리의 블록들의 상태 정보 - 상기 상태 정보는 상기 블록들이 소거된 횟수를 포함 - 에 기초하여 상기 비휘발성 메모리의 물리 주소로 변환할 수 있다. 상기 인터페이스는 상기 비휘발성 메모리의 물리 주소를 상기 호스트로부터 상기 비휘발성 메모리로 전달하고, 상기 호스트 및 상기 비휘발성 메모리 간에 데이터를 전달하는 인터페이스를 포함할 수 있다.
본 발명의 또 다른 실시예에 따른 메모리 장치는 휘발성 메모리, 비휘발성 메모리 및 외부 호스트로부터 가상 주소를 입력 받고, 상기 가상 주소의 시간적 지역성에 기초하여 상기 가상 주소를 상기 휘발성 메모리의 물리 주소 또는 상기 비휘발성 메모리의 물리 주소 중 어느 하나로 변환하는 컨트롤러를 포함할 수 있다. 상기 컨트롤러는 상기 가상 주소 및 상기 휘발성 메모리 또는 상기 비휘발성 메모리의 상기 변환된 물리 주소의 대응 관계를 저장할 수 있다.
본 발명의 또 다른 실시예에 따른 메모리 장치는 휘발성 메모리, 비휘발성 메모리 및 외부의 호스트 또는 외부의 캐시 메모리로부터 가상 주소를 입력 받고, 상기 가상 주소가 제1 영역에 대응하는지 제2 영역에 대응하는지 여부를 판정하는 컨트롤러를 포함할 수 있다. 상기 컨트롤러는 상기 가상 주소가 상기 제1 영역에 대응하면 상기 가상 주소를 상기 휘발성 메모리의 물리 주소로 변환하고, 상기 가상 주소가 상기 제2 영역에 대응하면 상기 가상 주소를 상기 비휘발성 메모리의 물리 주소로 변환할 수 있다.
이하에서, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
스토리지 장치로 널리 이용되는 자기 디스크의 종류로는 플로피 디스크 드라이브(Floppy Disk Drive) 또는 하드 디스크 드라이브(Hard Disk Drive, HDD) 등이 있다. HDD를 이용하면 매우 큰 용량의 스토리지 장치를 구현할 수 있기 때문에 널리 이용되고 있다. HDD는 회전하는 자기 디스크에 암(arm)이 접근하여 자기 디스크의 트랙으로부터 데이터를 읽거나 트랙에 데이터를 저장한다.
스토리지 장치를 포함하는 컴퓨팅 시스템의 초기 부팅 과정에서 HDD의 자기 디스크가 회전하는 시간 및 반도체 메모리에 비해 상대적으로 긴 데이터 읽기 시간으로 인하여 HDD를 이용하는 컴퓨팅 시스템의 부팅 시간이 길 수 있다.
HDD는 자기 디스크의 회전 속도가 일정한 레벨(예를 들어 6000 rpm - rpm은 rotation per minute)에 도달해야 데이터의 안정적인 입출력이 가능하다. 따라서 부팅 시 자기 디스크의 회전 속도가 일정한 레벨에 도달하기까지 자기 디스크의 회전을 가속하는 시간이 필요하다.
또한, 부팅 시 HDD에 저장된 데이터를 메인 메모리로 로드(load)하는 시간이 소요된다. HDD는 반도체 메모리에 비해 상대적으로 긴 데이터 읽기 시간을 가지므로 부팅 시 HDD에 저장된 데이터를 로드하는 시간이 길 수 있다.
메인 메모리가 휘발성(volatile) 메모리인 경우 데이터의 일관성을 유지하기 위하여 빈번하게 데이터를 HDD에 저장할 필요가 있다. HDD는 자기 디스크의 회전을 이용하므로 데이터를 입력 및/또는 출력하는 데 상대적으로 긴 시간이 소요된다. HDD의 암 끝부분에 위치한 헤드(head)가 원하는 트랙 또는 섹터의 위치로 이동하는 과정을 통해서 HDD의 데이터에 대한 접근이 가능하므로, 랜덤한(random) 데이터의 입력 및/또는 출력 - random I/O 라 불린다 - 시에 성능이 크게 저하될 수 있다.
메인 메모리의 크기는 스토리지 장치의 크기보다 작으므로 어플리케이션이 요구하는 메모리 공간이 메인 메모리의 크기보다 큰 경우가 빈번하게 발생할 수 있다. 메인 메모리 및 스토리지 장치 간에 필요한 데이터를 가져오고(fetch), 가져오는 데이터와 위치를 스왑하는 데이터를 방출(evict)하는 과정을 페이지 스와핑이라 부르기도 한다. 페이지 스와핑 속도는 메인 메모리 및 스토리지 장치 중 더 느린 장치의 동작 속도에 의해 결정되므로 일반적으로 스토리지 장치의 느린 속도가 페이지 스와핑 속도를 결정할 수 있다.
휘발성 메모리인 메인 메모리에 저장된 데이터가 업데이트되면 스토리지 장치에 저장된 데이터 - 스토리지 장치에 저장된 데이터는 메인 메모리에 저장된 데이터에 대응한다 - 도 업데이트되어야 한다. 메인 메모리에 저장된 데이터가 업데이트될 때마다 스토리지 장치에 저장된 데이터도 업데이트되는 기법을 라이트-스루 기법(write-through scheme) 이라 한다. 한편, 메인 메모리에 저장된 데이터가 업데이트되면 업데이트되었음을 표시하고, 일정 시간 주기마다 또는 업데이트의 표시가 일정 수 이상이면 스토리지 장치에 저장된 데이터가 업데이트되는 기법을 라이 트-백 기법(write-back scheme)이라 한다. 라이트-백 기법은 라이트-비하인드 기법(write-behind scheme)이라 불리기도 한다. 메인 메모리에 저장된 데이터가 업데이트된 경우 메인 메모리에 저장된 데이터가 dirty하다고 표현하기도 한다.
메모리에 저장된 데이터 중 업데이트되는 데이터는 일반적으로 높은 시간적 지역성(temporal locality)을 가지므로 가까운 시간 내에 빈번하게 다시 업데이트될 가능성이 높다. 이 경우 동일한 위치에 저장된 데이터가 반복적으로 스토리지 장치에 다시 저장될 가능성이 높으므로 스토리지 장치인 HDD의 느린 동작 속도가 전체 컴퓨팅 시스템의 동작 속도를 저하시킬 수 있다.
HDD는 디스크의 회전 및 암의 이동 등 기계적으로 동작하는 과정에서 상대적으로 많은 양의 전력을 소모한다. HDD가 사용되는 빈도는 전체 어플리케이션의 일부이지만 상대적으로 많은 양의 전력을 소모하므로, HDD가 사용되지 않는 동안에 HDD의 전원을 차단하는 기법이 고려되기도 하였으나 HDD의 전원을 차단하였다가 다시 동작 가능한 상태로 전환하는 데 소모되는 전력 량이 크기 때문에 HDD의 디스크의 회전 속도를 조정하는 dynamic power management 기법이 사용되고 있다.
메인 메모리에 널리 이용되는 DRAM(Dynamic Random Access Memory)은 일정 시간 주기마다 메모리 셀에 저장된 데이터를 refresh하는 동작으로 인해 소모 전력이 상대적으로 높다. 본 발명의 일 실시예에 따르면 휘발성 메모리의 소모 전력보다 작은 전력을 소모하는 비휘발성 메모리를 이용함으로써 컴퓨팅 시스템의 소모 전력을 줄일 수 있다.
도 1은 본 발명의 일 실시예에 따른 컴퓨팅 시스템(100)을 도시하는 도면이 다.
도 1을 참조하면, 시스템(100)은 호스트(110), 인터페이스(120) 및 비휘발성 메모리(130)를 포함한다.
비휘발성 메모리(130)는 복수의 물리적 블록들을 포함한다. 물리적 블록들은 다수의 메모리 셀들을 포함하고, 메모리 셀들은 물리 주소(physical address)에 의하여 식별된다.
호스트(110)는 운영 체제(Operating System, OS)에서 이용되는 가상 주소(virtual address)를 이용하여 데이터를 저장하고, 데이터를 읽을 수 있다. 호스트(110)는 비휘발성 메모리(130)의 물리적 블록들의 구조 및 물리적 블록들의 상태 정보를 가진다. 호스트(110)는 비휘발성 메모리(130)의 물리적 블록들의 구조 및 물리적 블록들의 상태 정보에 기초하여 가상 주소를 물리 주소로 변환한다.
호스트(110)는 가상 주소를 가상 메모리(virtual memory)의 물리 주소 또는 비휘발성 메모리(130)의 물리 주소로 변환할 수 있다. 가상 메모리는 OS로 하여금 물리적으로 fragmented되어 있는 메모리를 contiguous한 주소 공간을 가지는 메모리로 인식하도록 하는 메모리 시스템이다.
호스트(110)는 가상 메모리의 물리 주소 또는 비휘발성 메모리(130)의 물리 주소를 순서대로 저장하는 페이지 테이블(page table) 또는 주소 변환 테이블(address translation table)을 포함할 수 있다. 페이지 테이블 또는 주소 변환 테이블에 저장된 엔트리는 가상 메모리의 물리 주소 또는 비휘발성 메모리(130)의 물리 주소이고, 엔트리의 페이지 테이블 또는 주소 변환 테이블에서의 주소는 가상 주소로서 기능할 수 있다.
시스템(100)이 비휘발성 메모리(130) 외에 DRAM(Dynamic Random Access Memory) 등의 휘발성 메모리(도시되지 않음)를 포함하는 경우, 호스트(110)는 가상 주소를 DRAM 또는 비휘발성 메모리(130) 중 어느 하나에 매핑할 수 있다. 가상 주소가 DRAM에 매핑된 경우, 호스트(110)는 가상 주소를 가상 메모리의 물리 주소로 변환할 수 있다. 가상 주소가 비휘발성 메모리(130)에 매핑된 경우, 호스트(110)는 비휘발성 메모리(130)의 상태 정보에 기초하여 가상 주소를 비휘발성 메모리(130)의 물리 주소로 변환할 수 있다. 이 때, 호스트(110)는 가상 메모리의 기능을 고려하여 가상 주소를 비휘발성 메모리(130)의 물리 주소로 변환할 수 있다.
호스트(110)는 페이지 테이블 또는 주소 변환 테이블의 엔트리 중 최근에 접근된 엔트리를 캐싱(caching)하는 변환 탐색 버퍼(Translation Lookaside Buffer, TLB)를 포함할 수 있다. TLB는 내용 주소 메모리(Content Addressable Memory, CAM)로 구현될 수 있다.
TLB는 가상 주소, 물리 주소 및 플래그(flag)를 저장할 수 있다. 플래그는 저장된 물리 주소가 DRAM에 대응하는 것인지(가상 메모리의 물리 주소인지) 또는 비휘발성 메모리(130)에 대응하는 것인지(비휘발성 메모리(130)의 물리 주소인지)를 나타낼 수 있다. 호스트(110)는 TLB에 저장된 엔트리를 읽고, 읽은 엔트리 중 플래그의 값에 따라 DRAM에 접근할 수도 있고, 비휘발성 메모리(130)에 접근할 수도 있다. 호스트(110)는 플래그에 따라 제어되는 멀티플렉서(multiplexer) 또는 디멀티플렉서(de-multiplexer)를 이용하여 DRAM 또는 비휘발성 메모리(130)로부터 데이터를 읽거나 DRAM 또는 비휘발성 메모리(130)에 데이터를 저장할 수 있다.
이 때, 호스트(110)는 OS의 간섭을 받지 않고 변환된 물리 주소를 이용하여 DRAM 또는 비휘발성 메모리(130)에 접근할 수 있다.
가상 메모리 시스템은 프로그램 또는 데이터를 페이지(page) 단위로 분할하고, 실행(execution)에 필요한 페이지들을 메인 메모리에 저장할 수 있다. 메인 메모리에 저장되지 않은 페이지들은 하드 디스크 드라이브(hard disk drive, HDD) 등 상대적으로 느린 스토리지 장치(storage device)에 저장된다.
메인 메모리에 저장된 페이지에 대한 물리 주소는 페이지 테이블에 저장되고, 호스트(110)는 호출된 주소와 페이지 테이블의 엔트리를 비교하여 페이지 폴트 여부를 판정한다. 페이지 폴트(page fault)는 실행에 필요한 페이지가 메인 메모리에 저장되지 않은 경우를 가리킨다. 페이지 폴트가 발생하면, 호스트(110)는 실행에 필요한 페이지를 메인 메모리로 저장하고 해당 페이지를 실행한다.
호스트(110)는 페이지 폴트 핸들러(page fault handler)를 포함하는 가상 메모리 기능을 수행할 수 있다.
물리적 블록들의 상태 정보는 물리적 블록들 각각이 소거된 횟수를 포함할 수 있다. 호스트(110)는 물리적 블록들 각각이 소거된 횟수에 기초하여 특정 물리적 블록에 대한 가비지 콜렉션 동작을 제어할 수 있다.
인터페이스(120)는 물리 주소를 호스트(110)로부터 비휘발성 메모리(130)로 전달하고, 호스트(110) 및 비휘발성 메모리(130) 간에 데이터를 전달한다.
비휘발성 메모리(130)는 페이지 단위로 데이터를 저장하고 물리적 블록 단위 로 데이터를 소거할 수 있다. 비휘발성 메모리(130)에 데이터를 저장하는 과정은 프로그래밍 과정이라고도 불리며, 비휘발성 메모리(130)에 데이터를 저장하는 데에는 비휘발성 메모리(130)로부터 데이터를 읽는 데 걸리는 시간보다 긴 시간이 소요된다.
비휘발성 메모리(130)의 물리적 블록에 저장된 데이터를 소거하는 데에는 비휘발성 메모리(130)의 페이지에 데이터를 프로그램하는 데 걸리는 시간보다 긴 시간이 소요된다. 비휘발성 메모리(130)에 저장된 데이터에 대한 업데이트가 요구되면 비휘발성 메모리(130)는 빈 물리적 블록의 페이지에 업데이트된 데이터를 저장하고, 이전 버전의 데이터가 저장된 물리적 블록에 관한 정보를 저장한다. 업데이트된 데이터가 저장된 페이지의 물리 주소는 이전 버전의 데이터가 저장된 페이지 또는 물리적 블록의 물리 주소와 다르지만, 업데이트된 데이터에 대하여 OS가 인식하는 가상 주소는 이전 버전의 데이터에 대하여 OS가 인식하는 가상 주소와 동일하다.
따라서 비휘발성 메모리(130)의 물리적 블록의 물리 주소와 OS가 인식하는 가상 주소 간의 변환(translation) 과정이 필요하며 이러한 주소 변환 과정을 포함하는 비휘발성 메모리(130)의 관리 scheme 중 플래시 메모리에 관한 것은 FTL(Flash Translation Layer)라고 불린다.
플래시 메모리의 경우 FTL은 주소 변환 과정 및 가비지 콜렉션 과정을 포함할 수 있다. 비휘발성 메모리(130)의 물리적 블록에 저장된 데이터가 소거되지 않은 채로 새로운 물리적 블록에 업데이트된 데이터가 저장되는 과정이 반복되면 비 휘발성 메모리(130)의 빈 물리적 블록이 부족하게 된다. OS는 가상 주소로 메모리 공간을 인식하므로 OS가 인식하는 빈 메모리 공간과 실제 비휘발성 메모리(130)의 빈 물리적 블록이 일치하지 않게 된다. 빈 물리적 블록의 비율이 임계 값보다 작아지면 이전 버전의 데이터가 저장된 물리적 블록 및 업데이트된 버전의 데이터가 저장된 물리적 블록을 병합(merge)하고 이전 버전의 데이터가 저장된 물리적 블록을 소거하여 빈 물리적 블록을 획득하는 과정이 가비지 콜렉션이라 불린다.
종래의 플래시 메모리의 FTL은 플래시 메모리 내의 컨트롤러에서 수행되는 경우가 많았다. 시스템(100)은 종래의 플래시 메모리 컨트롤러에서 수행되던 FTL 기능을 호스트(110)가 실행하는 구조를 이용함으로써 비휘발성 메모리(130)의 관리를 효율적으로 수행할 수 있다.
호스트(110)는 비휘발성 메모리(130)의 물리적 블록들 각각이 소거된 횟수를 서로 유사한 레벨로 조정하는 웨어 레벨링(wear-leveling) 기능을 수행할 수 있다.
호스트(110)는 가상 주소 및 물리 주소 간의 대응 관계를 저장하는 주소 변환 Table을 관리함으로써 비휘발성 메모리(130)를 최적화할 수 있다.
비휘발성 메모리(130)의 구성에 관한 정보 및 상태 정보는 OS에 의하여 인식 가능한 드라이버의 형태로 구현될 수 있다. 이 때, 호스트(110)는 비휘발성 메모리(130)에 대응하는 드라이버를 이용하여 비휘발성 메모리(130)의 상태 정보를 획득할 수 있다.
호스트(110)는 비휘발성 메모리(130)의 블록들 중 변환된 물리 주소에 대응하는 블록의 상태 정보에 기초하여 변환된 물리 주소에 대응하는 블록의 소거 동작 을 제어할 수 있다.
비휘발성 메모리(130)의 블록들 중 저장된 데이터의 오류가 허용 범위를 초과하는 블록을 배드 블록(bad block)이라 할 수 있다. 실시예에 따라서는, 호스트(110)는 비휘발성 메모리(130)의 블록들의 상태 정보에 기초하여 비휘발성 메모리(130)의 배드 블록을 식별하고 관리할 수 있다.
비휘발성 메모리(130)의 용량이 큰 경우 멀티 채널 또는 멀티 웨이 I/O 인터페이스가 제공될 수 있다. 실시예에 따라서는, 호스트(110)는 비휘발성 메모리(130)의 멀티 채널 I/O 동작을 제어할 수 있거나 또는 비휘발성 메모리(130)의 멀티 웨이 I/O 동작을 제어할 수 있다.
비휘발성 메모리(130)의 생산자들 간의 협의에 의하여 표준(standard)이 규정될 수 있다. 이 때, 비휘발성 메모리(130)에 관해 규정된 표준은 블록들의 크기 및 블록들의 배치에 관한 정보를 포함할 수 있다. 호스트(110)는 표준에 기초하여 비휘발성 메모리(130)의 상태 정보를 획득할 수 있다.
표준은 채널의 개수 또는 채널 각각의 뱅크의 개수를 포함할 수 있다. 채널은 병렬적으로 데이터를 입력 또는 출력할 수 있는 블록의 단위를 나타낸다. 뱅크는 인터리빙이 가능한 블록의 단위를 나타낸다.
표준은 비휘발성 메모리(130)의 사양(specification, spec.)을 포함할 수 있다. 비휘발성 메모리(130)의 사양의 예로는 데이터 입력/출력의 단위, 소거 연산이 있는지 여부, 소거 연산이 있으면 소거 연산의 단위 등을 들 수 있다.
실시예에 따라서는, 비휘발성 메모리(130)에 관해 규정된 표준은 NVMHCI(Non-volatile Memory Host Controller Interface)와 함께 이용되거나 별도로 이용될 수 있다. 또 다른 실시예에 따라서는, 비휘발성 메모리(130)에 관해 규정된 표준은 ONFI(Open NAND Flash Interface)와 함께 이용되거나 별도로 이용될 수 있다.
실시예에 따라서는, 인터페이스(120)는 비휘발성 메모리(130), 호스트(110) 및 상대적으로 고속으로 동작하는 메인 메모리(도시되지 않음)를 연결할 수 있다. 이 때, 인터페이스(120)는 고속으로 동작하는 노스 브릿지 칩셋(north bridge chipset)을 이용하여 구현될 수 있다. 실시예에 따라서는, 인터페이스(120)는 고속으로 동작하는 노스 브릿지 칩셋의 기능 외에도 HDD(도시되지 않음), 광학 디스크(optical disk)에 대한 접근을 제어하는 사우스 브릿지 칩셋(south bridge chipset)의 기능을 포함할 수도 있다.
도 2는 본 발명의 다른 실시예에 따른 메모리 장치(200)를 도시하는 도면이다.
도 2를 참조하면, 메모리 장치(200)는 제1 메모리(210), 제2 메모리(220) 및 컨트롤러(230)를 포함한다.
제1 메모리(210)는 제1 저장 용량을 가진다. 제2 메모리(220)는 제1 저장 용량보다 큰 제2 저장 용량을 가진다.
컨트롤러(230)는 제1 저장 용량보다 크고 제1 저장 용량 및 제2 저장 용량의 합보다 작은 제3 저장 용량에 대응하는 주소 공간을 외부 호스트에 제공한다.
컨트롤러(230)는 외부 호스트로부터 요청된 데이터가 제1 메모리(210)에 저 장되어 있으면 요청된 데이터를 제1 메모리(210)로부터 읽는다. 컨트롤러(230)는 제1 메모리(210)로부터 읽은 데이터를 외부 호스트로 전달한다.
외부 호스트로부터 요청된 데이터가 제1 메모리(210)에 저장되어 있지 않으면 컨트롤러(230)는 요청된 데이터를 제2 메모리(220)로부터 읽는다. 컨트롤러(230)는 제2 메모리(220)로부터 읽은 데이터를 외부 호스트로 전달한다.
실시예에 따라서는, 제1 메모리(210)는 휘발성 메모리이고 제2 메모리(220)는 비휘발성 메모리일 수 있다. 제2 메모리(220)는 대용량의 비휘발성 메모리이고, 제1 메모리(210)는 고속의 휘발성 메모리로 구성됨으로써 메모리 장치(200)는 대용량이면서도 외부 호스트에 대하여 상대적으로 고속으로 동작할 수 있다.
실시예에 따라서는, 제2 메모리(220)는 전원 공급이 차단되어도 일정 기간 동안 데이터를 유실하지 않는 비휘발성을 가진 메모리일 수 있다. 예를 들어 제2 메모리(220)가 전원 공급이 차단되어도 3일 동안 데이터를 유실하지 않으면, 메모리 장치(200)의 사용자는 일반적으로 3일 이내에 컴퓨팅 시스템을 수리하거나 데이터를 복원할 수 있으므로, 메모리 장치(200)는 예기치 않은 사고가 발생한 경우에도 사용자에게 백업된 데이터를 제공할 수 있다.
실시예에 따라서는, 제2 메모리(220)는 비휘발성이면서 바이트(byte) 및/또는 워드(word) 단위로 랜덤 접근(random access)이 가능한 메모리일 수 있다. 비휘발성 RAM(Random Access Memory)의 종류의 예로는 FRAM(Ferroelectric Random Access Memory), PRAM(Phase-change Random Access Memory), MRAM(Magnetic Random Access Memory), Battery-Backed RAM 등을 들 수 있다. 제2 메모리(220)가 취할 수 있는 비휘발성 메모리의 또 다른 종류의 예로는 NAND 플래시 메모리, NOR 플래시 메모리, AND 플래시 메모리 등을 들 수 있다. 제2 메모리(220)는 HDD(Hard Disk Drive)와 같은 Magnetic Disk일 수도 있다.
제2 메모리(220)가 비휘발성 메모리인 경우, 제1 메모리(210)에는 외부 호스트가 접근 가능한 데이터 외에도 제2 메모리(220)의 파일 시스템에 관련된 데이터가 저장될 수 있다. 컨트롤러(230)가 물리 주소 및 가상 주소 간의 변환을 수행함으로써, 외부 호스트가 OS가 인식하는 가상 주소를 이용하여 OS 상의 메모리를 관리할 수 있다. 따라서 메모리 장치(200)는 메모리 장치(200) 및 외부 호스트 간의 인터페이스의 복잡도를 줄일 수 있다.
외부 호스트에 제공되는 주소 공간을 나타내는 주소는 복수의 주소 필드(field)들로 분할될 수 있다. 예를 들어, 외부 호스트에 제공되는 주소 공간을 나타내는 주소가 20 bit로 표현되는 경우, 12 bit의 주소 필드 A 및 8 bit의 주소 필드 B로 분할될 수 있다.
컨트롤러(230)는 주소 필드 A 및 주소 필드 B를 이용하여 제1 메모리(210)에 접근할 수 있다.
실시예에 따라서는, 외부 호스트에 제공되는 주소 공간을 나타내는 주소는 주소 필드 A, B, C, D로 분할될 수 있다. 이 때, 컨트롤러(230)는 주소 필드 A 및 주소 필드 B가 결합되어 생성되는 제1 주소를 이용하여 제1 메모리(210)에 접근할 수 있고, 주소 필드 C 및 주소 필드 D가 결합되어 생성되는 제2 주소를 이용하여 제1 메모리(210)에 접근할 수 있다.
실시예에 따라서는, 컨트롤러(230)는 주소 필드 A를 제1 주소로 설정하고, 주소 필드 B를 제2 주소로 설정하고, 주소 필드 C 및 D를 결합하여 결합된 주소를 제3 주소로 설정할 수도 있다. 실시예에 따라서는, 주소 필드 A 및 주소 필드 C가 결합되어 생성된 제1 주소 및 주소 필드 B 및 주소 필드 D가 결합되어 생성된 제2 주소가 이용될 수도 있다.
실시예에 따라서는, 제1 주소는 행 주소(row address)를 나타내고, 제2 주소는 열 주소(column address)를 나타낼 수도 있다. 외부 호스트는 메모리 장치(200)로 제1 시간 구간 동안 행 주소를 전송하고, 제2 시간 구간 동안 열 주소를 전송할 수도 있다.
제1 메모리(210)는 행 주소(row address) 및 열 주소(column address)를 참조하여 접근되는 구조를 가질 수 있다. DRAM 또는 SRAM(Static RAM)에는 행 주소 및 열 주소를 참조하여 접근할 수 있다. 이 때, 컨트롤러(230)는 제1 메모리(210)에 행 주소 및 열 주소를 참조하여 접근할 수 있다. 컨트롤러(230)는 외부 호스트로부터 요청된 데이터가 제1 메모리(210)에 저장되어 있는지 여부를 행 주소를 이용하여 판정할 수 있다.
컨트롤러(230)는 외부 호스트로부터 요청된 데이터가 제1 메모리(210)에 저장되어 있지 않으면 외부 호스트로부터 열 주소를 수신하는 동안 요청된 데이터를 제2 메모리(220)로부터 읽을 수 있다. 컨트롤러(230)는 외부 호스트로부터 열 주소를 기다리는 시간을 이용하여 제2 메모리(220)에 접근함으로써 외부 호스트로부터 요청된 데이터를 신속하게 외부 호스트로 전달할 수 있다.
컨트롤러(230)는 외부 호스트로부터 요청된 데이터가 제1 메모리(210)에 저장되어 있지 않으면 요청된 데이터의 행 주소에 대응하는 데이터 블록을 제2 메모리(220)로부터 읽어 제1 메모리(210)에 저장할 수 있다. 제1 메모리(210) 및 제2 메모리(220) 간의 데이터 스와핑은 행 주소에 대응하는 데이터 블록 단위로 수행될 수 있다. 실시예에 따라서는 행 주소에 대응하는 데이터 블록은 페이지라 불리기도 한다.
컨트롤러(230)는 제1 메모리(210) 및 제2 메모리(220) 간에 데이터 스와핑이 발생하면 새롭게 제1 메모리(210)에 저장된 데이터 블록 또는 페이지의 행 주소를 저장할 수 있다. 컨트롤러(230)는 새롭게 제1 메모리(210)에 저장된 데이터 블록 또는 페이지의 행 주소를 제1 메모리(210)에 저장할 수도 있고, 별도의 버퍼 메모리(도시되지 않음)에 저장할 수도 있다.
페이지 테이블(page table)은 활성화된 물리 주소를 저장하는 메모리이다. 외부 호스트로부터 수신된 가상 주소에 대응하는 물리 주소가 페이지 테이블에 저장되어 있지 않으면 페이지 폴트(page fault)이고, 메모리 장치(200)에 외부 호스트가 필요로 하는 데이터가 저장되어 있지 않음을 나타낸다. 외부 호스트로부터 수신된 가상 주소에 대응하는 물리 주소가 페이지 테이블에 저장되어 있으면 메모리 장치(200)에 외부 호스트가 필요로 하는 데이터가 저장되어 있음을 나타낸다. 실시예에 따라서는, 페이지 테이블은 메모리 장치(200)의 외부에 위치할 수 있다. 이 때, 페이지 테이블은 외부 호스트로부터 수신된 가상 주소의 페이지 폴트 여부를 판정하고, 수신된 가상 주소에 대응하는 물리 주소(가상 메모리 시스템에서의 물리 주소이다)를 메모리 장치(200)로 전달할 수 있다. 실시예에 따라서는, 페이지 테이블은 메모리 장치(200)의 내부에 위치할 수 있다. 컨트롤러(230)가 페이지 테이블을 포함하는 경우, 컨트롤러(230)는 외부 호스트로부터 수신된 가상 주소의 페이지 폴트 여부를 판정하고, 페이지 폴트가 아니면 제1 메모리(210) 또는 제2 메모리(220)로부터 읽은 데이터를 외부 호스트로 전송한다.
도 3은 도 2의 메모리 장치(200)의 동작의 일 예를 도시하는 타이밍도이다.
도 3을 참조하면, 외부 호스트로부터 요청된 데이터가 제1 메모리(210)에 저장되어 있는 경우의 동작이 도시된다.
시간 구간(310) 동안 컨트롤러(230)는 외부 호스트로부터 요청된 데이터의 행 주소(Row Address, RA)를 받는다. 시간 구간(310) 동안 컨트롤러(230)는 제1 메모리(210)에 저장되어 있는 데이터 블록들(또는 페이지들) 중 외부 호스트로부터 요청된 데이터의 RA에 대응하는 데이터 블록들(또는 페이지들)을 탐색한다.
탐색 결과 외부 호스트로부터 요청된 데이터의 RA에 대응하는 데이터 블록 또는 페이지가 제1 메모리(210)에 저장되어 있으면 제1 메모리(210)는 외부 호스트로부터 요청된 데이터를 출력할 수 있도록 준비 동작을 수행한다.
제1 메모리(210)가 SRAM 또는 DRAM인 경우 시간 구간(320) 동안 제1 메모리(210)는 수신한 RA에 대응하는 워드 라인(word line)을 활성화(activate)할 수 있다.
컨트롤러(230) 및 외부 호스트는 시간 구간(320)의 길이를 고려하여 시간 구간(320)의 길이만큼 대기할 수 있다. 만일 시간 구간(320)의 길이가 충분히 짧다 면 제1 메모리(210)는 워드 라인을 시간 구간(310) 동안 활성화할 수 있다. 이 때, 컨트롤러(230) 및 외부 호스트는 시간 구간(320)을 생략하고 다음 동작을 수행할 수 있다.
시간 구간(330) 동안 컨트롤러(230)는 외부 호스트로부터 요청된 데이터의 열 주소(Column Address, CA)를 받는다. 시간 구간(330) 동안 제1 메모리(210)는 수신된 CA를 이용하여 요청된 데이터가 저장된 열(column)을 활성화할 수 있다.
시간 구간(340)은 제1 메모리(210)로부터 데이터가 출력되기까지의 대기 시간을 나타낸다.
시간 구간(350) 동안 제1 메모리(210)는 외부 호스트로부터 요청된 데이터를 출력하고, 컨트롤러(230)는 제1 메모리(210)가 출력한 데이터를 외부 호스트로 전달한다.
도 4는 도 2의 메모리 장치(200)의 동작의 다른 예를 도시하는 타이밍도이다.
도 4를 참조하면, 외부 호스트로부터 요청된 데이터가 제1 메모리(210)에 저장되어 있는 경우의 동작이 도시된다.
시간 구간(410) 동안 컨트롤러(230)는 외부 호스트로부터 요청된 데이터의 행 주소(Row Address, RA)를 받는다. 시간 구간(410) 동안 컨트롤러(230)는 제1 메모리(210)에 저장되어 있는 데이터 블록들(또는 페이지들) 중 외부 호스트로부터 요청된 데이터의 RA에 대응하는 데이터 블록들(또는 페이지들)을 탐색한다.
탐색 결과 외부 호스트로부터 요청된 데이터의 RA에 대응하는 데이터 블록 또는 페이지가 제1 메모리(210)에 저장되어 있지 않으면 컨트롤러(230)는 RA를 제2 메모리(220)로 전달할 수 있다.
시간 구간(420)은 시간 구간(320)과 같은 길이의 대기 시간을 나타낸다. 시간 구간(420) 동안 외부 호스트 및 컨트롤러(230)는 대기할 수 있다.
도 4에서는 컨트롤러(230)가 시간 구간(420) 동안 대기하는 경우가 도시되었지만, 다른 실시예에 따라서는, 컨트롤러(230)는 RA를 이용하여 제2 메모리(220)에 접근할 수 있다. 제2 메모리(220)는 시간 구간(420) 동안 RA에 대응하는 데이터 블록 또는 페이지를 활성화할 수 있다. 제2 메모리(220)는 시간 구간(420) 동안 RA에 대응하는 워드 라인(word line)을 활성화함으로써 데이터 블록 또는 페이지를 활성화할 수 있다.
다시 도 4를 참조하면, 시간 구간(430) 동안 컨트롤러(430)는 외부 호스트로부터 요청된 데이터의 CA를 받는다.
시간 구간(420) 동안 컨트롤러(230) 및 제2 메모리(220)가 대기하는 실시예에 따르면 시간 구간(430) 동안 제2 메모리(220)는 수신된 RA 및 CA에 기초하여 외부 호스트로부터 요청된 데이터를 출력하기 위한 준비 동작을 수행할 수 있다.
시간 구간(420) 동안 제2 메모리(220)가 RA에 대응하는 데이터 블록 또는 페이지를 활성화하는 실시예에 따르면 시간 구간(430) 동안 제2 메모리(220)는 활성화된 데이터 블록 또는 페이지 중 CA에 대응하는 데이터를 출력하기 위한 준비 동작을 수행할 수 있다.
RA에 대응하는 데이터 블록 또는 페이지가 활성화되면, 컨트롤러(230)는 활 성화된 데이터 블록 또는 페이지를 제1 메모리(210)에 저장할 수 있다. 이 때, 제1 메모리(210)에 빈 공간이 없으면 제1 메모리(210)에 저장된 데이터 블록들 또는 페이지들 중 일부를 제2 메모리(220)로 방출(evict)할 수 있다. 컨트롤러(230)는 제1 메모리(210)에 저장된 데이터 블록들 또는 페이지들의 행 주소를 별도의 버퍼 메모리에 저장할 수도 있고, 제1 메모리(210)의 저장 공간 일부를 이용하여 저장할 수도 있다.
시간 구간(440)은 제2 메모리(220)로부터 데이터가 출력되기까지의 대기 시간을 나타낸다.
시간 구간(450) 동안 제2 메모리(220)는 외부 호스트로부터 요청된 데이터를 출력하고, 컨트롤러(230)는 제2 메모리(220)가 출력한 데이터를 외부 호스트로 전달한다.
제1 메모리(210)가 더 제2 메모리(220)보다 빠르면 시간 구간(440)의 길이는 시간 구간(340)의 길이보다 길 수 있다.
메모리 장치(200)는, 제1 메모리(210)에 요청된 데이터가 저장되어 있지 않은 경우에, 외부 호스트로부터 열 주소를 받는 시간 및 받은 열 주소를 처리하는 시간을 이용하여 제2 메모리(220)에 접근함으로써 외부 호스트로 데이터를 전달하는 데 소요되는 대기 시간을 단축할 수 있다.
메모리 장치(200)는 메모리 버스를 사용하여 외부 호스트 (또는 프로세서)에 직접 연결될 수도 있고, 메모리 브릿지를 경유하여 외부 호스트에 연결될 수도 있다.
메모리 장치(200)는 메모리 브릿지에 연결된 다른 I/O 디바이스와 외부 호스트를 경유하지 않는 dedicated path를 경유하여 데이터를 전송하거나 받을 수 있다.
외부 호스트는 물리 주소 또는 메모리 장치(200)의 물리적 특성을 고려한 논리적 주소를 사용하지 않고 가상 주소를 이용하여 메모리 장치(200)에 접근할 수 있다. 메모리 장치(200)는 제3 저장 용량에 대응하는 가상 주소 공간을 가지고 제1 메모리(210)의 동작 속도 레벨의 상대적으로 빠른 동작 속도를 가지는 스토리지 장치로 외부 호스트에 의해 인식될 수 있다.
메모리 장치(200)가 외부 호스트에 의해 새로운 데이터를 저장하는 경우에, 메모리 장치(200)는 라이트-스루 기법(write-through scheme)을 이용할 수도 있고, 라이트-백 기법(write-back scheme)을 이용할 수도 있다.
메모리 장치(200)가 라이트-스루 기법을 이용하는 경우에, 컨트롤러(230)는 데이터를 제1 메모리(210)에 저장하면서 제2 메모리(220)의 대응하는 위치에도 데이터를 저장할 수 있다.
메모리 장치(200)가 라이트-백 기법을 이용하는 경우에, 컨트롤러(230)는 데이터를 제1 메모리(210)에 저장하면서 제1 메모리(210)의 데이터가 새롭게 저장되었음을 나타내는 플래그를 저장할 수 있다. 컨트롤러(230)는 데이터를 제1 메모리(210)에 저장한 후 데이터가 저장되었음을 알리는 통지 (acknowledgement, ACK) 를 외부 호스트로 전송할 수 있다. 일정 시간 주기가 경과하면 컨트롤러(230)는 제1 메모리(210)에 새롭게 저장된 데이터를 모두 제2 메모리(220)의 대응하는 위치 에 저장하고, 제1 메모리(210)에 저장된 플래그를 리셋할 수 있다.
실시예에 따라서는 제1 메모리(210) 또는 제2 메모리(220)에 주소 변환 테이블이 저장될 수 있고, 컨트롤러(230)는 변환 탐색 버퍼(Translation Lookaside Buffer, TLB)를 포함할 수 있다. TLB는 내용 주소 메모리(Content Addressable Memory, CAM)로 구성될 수 있고, 주소 변환 테이블에 저장된 엔트리 중 최근에 접근된 가상 주소에 대한 엔트리를 저장할 수 있다. 컨트롤러(230)는 TLB를 이용하여 가상 주소를 빠르게 제1 메모리(210) 또는 제2 메모리(220)의 물리 주소로 변환할 수 있다.
컨트롤러(230) 및 제1 메모리(210) 간의 인터페이스는 메모리 버스일 수 있고, 네트워크 온 칩 기법(Network On Chip scheme, NoC scheme) 으로 구성될 수도 있다. 컨트롤러(230) 및 제2 메모리(220) 간의 인터페이스 또한 메모리 버스일 수도 있고, 네트워크 온 칩 기법(Network On Chip scheme, NoC scheme) 으로 구성될 수도 있다.
컨트롤러(230)는 외부 호스트로부터 요청된 데이터가 포함된 페이지를 제2 메모리(220)로부터 제1 메모리(210)로 저장할 수 있다. 이 때, 제1 메모리(210)에 빈 공간이 없으면 컨트롤러(230)는 제1 메모리(210)에 저장된 페이지들 중 방출(evict)될 페이지를 선택할 수 있다. 컨트롤러(230)는 시간적 지역성이 가장 낮은 페이지를 선택하여 방출할 수 있다.
메모리 장치(200) 내의 주소 변환 테이블의 관리 및 페이지 스와핑은 Dedicated Hardware Logic에 의해서 처리될 수도 있고, 범용 프로세서에 의해서 수 행되는 소프트웨어에 의해 처리될 수도 있다. 실시예에 따라서는 하드웨어에 의한 처리 및 소프트웨어 의한 처리가 병용될 수도 있다.
주소 변환 테이블의 관리 및 페이지 스와핑이 소프트웨어에 의해 처리되는 경우 프로세서의 코드 및 데이터를 고속으로 저장하기 위한 SRAM 및 캐시(cache) 메모리가 이용될 수 있다.
또 다른 실시예에 따라서는, 제1 메모리(210)는 비휘발성 RAM일 수도 있다. 비휘발성 RAM의 예로는 PRAM(Phase-change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 등이 있을 수 있다. 비휘발성 RAM은 비휘발성이면서도 바이트 단위 또는 워드 단위로 접근 가능한 특징을 가진다. 이 때, 메모리 장치(200)는 외부 호스트에 의해 고속이면서 대용량인 비휘발성 RAM으로 인식될 수 있다.
또 다른 실시예에 따라서는, 배터리 또는 수퍼 커패시터를 이용하여 메모리 장치(200)에 대한 전원 공급이 차단되면 컨트롤러(230)가 인터럽트 신호를 생성할 수 있다. 인터럽트 신호가 생성되면 컨트롤러(230)는 휘발성 메모리인 제1 메모리(210)에 저장된 데이터 중 비휘발성 메모리인 제2 메모리(220)에 저장되지 않은 데이터를 제2 메모리(220)에 저장할 수 있다. 이 때, 메모리 장치(200)는 외부 호스트에 의하여 비휘발성 메모리로 인식될 수 있다.
배터리는 메모리 장치(200) 내부에 위치할 수도 있고 메모리 장치(200)의 외부에 위치할 수도 있다. 전원 공급의 차단을 감지하는 회로는 컨트롤러(230)에 포함될 수도 있고 메모리 장치(200)의 외부에 위치할 수도 있다. 전원 공급의 차단을 감지하는 회로가 메모리 장치(200)의 외부에 위치하는 경우 감지된 이벤트를 메 모리 장치(200)로 통지할 수 있다.
또 다른 실시예에 따라서는, 메모리 장치(200)는 제2 메모리(220) 외에도 복수의 비휘발성 메모리들을 포함할 수 있다. 이 때, 컨트롤러(230)는 복수의 비휘발성 메모리들이 멀티 채널 I/O 동작을 수행할 수 있도록 제어할 수 있다. 컨트롤러(230)는 복수의 비휘발성 메모리들이 인터리브되어 멀티 웨이 I/O 동작을 수행하도록 제어할 수 있다. 컨트롤러(230)는 멀티 채널 I/O 동작 또는 멀티 웨이 I/O 동작을 지원하기 위한 주소 변환 계층을 유지할 수 있다.
도 5는 본 발명의 또 다른 실시예에 따른 메모리 장치(500)를 도시하는 도면이다.
도 5를 참조하면, 메모리 장치(500)는 컨트롤러(510), 휘발성 메모리(520) 및 비휘발성 메모리(530)를 포함한다.
컨트롤러(510)는 외부 호스트로부터 가상 주소를 입력 받는다. 컨트롤러(510)는 입력된 가상 주소의 시간적 지역성에 기초하여 가상 주소를 휘발성 메모리(520)의 물리 주소(물리 주소 1)로 변환하거나 비휘발성 메모리(530)의 물리 주소(물리 주소 2)로 변환할 수 있다.
컨트롤러(510)는 가상 주소의 시간적 지역성이 높아 가까운 시간 내에 다시 참조될 가능성이 높으면 가상 주소를 물리 주소 1로 변환할 수 있다. 컨트롤러(510)는 가상 주소 및 물리 주소 1의 변환 관계를 저장할 수 있고, 가상 주소 및 물리 주소 2의 변환 관계를 저장할 수 있다.
외부 호스트는 메모리 장치(500)의 물리적 특성을 고려할 필요 없이 OS에서 인식되는 가상 주소를 이용하여 메모리 장치(500)에 접근할 수 있다. 따라서 종래의 외부 호스트의 가상 메모리 또는 파일 시스템 기능을 메모리 장치(500)가 수행할 수 있다. 외부 호스트는 메모리 관리 기능을 메모리 장치(500)에 일임함으로써 메모리 관리 효율을 높일 수 있다.
비휘발성 메모리(530)에서는 데이터의 읽기, 쓰기 및 소거 동작이 불균형적으로 수행되므로 컨트롤러(510)는 비휘발성 메모리(530)의 물리적 특성 정보에 기초하여 가상 주소를 물리 주소 2로 변환한다.
도 7은 도 5의 컨트롤러(510)의 동작의 일 예를 도시하는 동작 흐름도이다.
도 7을 참조하면, 컨트롤러(510)는 외부 호스트로부터 가상 주소를 수신한다(S710). 컨트롤러(510)는 수신된 가상 주소의 시간적 지역성을 일정 기준 T와 비교한다(S720). 컨트롤러(510)는 가상 주소의 시간적 지역성이 T보다 크면 가상 주소를 물리 주소 1로 변환한다(S730). 컨트롤러(510)는 변환된 물리 주소 1을 이용하여 휘발성 메모리(520)에 접근한다(S740). 컨트롤러(510)는 가상 주소의 시간적 지역성이 T보다 크지 않으면 가상 주소를 물리 주소 2로 변환한다(S750). 컨트롤러(510)는 변환된 물리 주소 2를 이용하여 비휘발성 메모리(530)에 접근한다(S760).
도 6은 본 발명의 또 다른 실시예에 따른 메모리 장치(600)를 도시하는 도면이다.
도 6을 참조하면, 메모리 장치(600)는 컨트롤러(630), 휘발성 메모리(640) 및 비휘발성 메모리(650)를 포함한다.
컨트롤러(630)는 외부의 호스트(610) 또는 외부의 캐시 메모리(620)의 컨트롤러로부터 가상 주소를 입력 받는다. 컨트롤러(630)는 수신된 가상 주소가 제1 영역에 대응하는지 제2 영역에 대응하는지 여부를 판정한다.
실시예에 따라서는, 컨트롤러(630)는 메모리 컨트롤러 또는 시스템 칩셋으로부터 가상 주소를 입력 받을 수 있다.
판정 결과 수신된 가상 주소가 제1 영역에 대응하면 컨트롤러(630)는 수신된 가상 주소를 휘발성 메모리(640)의 물리 주소로 변환한다. 판정 결과 수신된 가상 주소가 제2 영역에 대응하면 컨트롤러(630)는 수신된 가상 주소를 비휘발성 메모리(650)의 물리 주소로 변환한다.
호스트(610)는 데이터의 시간적 지역성에 기초하여 데이터에 대응하는 가상 주소를 결정할 수 있다. 호스트(610)는 데이터의 시간적 지역성이 높아 가까운 시간 내에 다시 데이터가 참조될 가능성이 높으면 데이터에 대응하는 가상 주소를 제1 영역에 대응하는 가상 주소로 결정할 수 있다. 호스트(610)는 데이터의 시간적 지역성이 낮아 가까운 시간 내에 다시 데이터가 참조될 가능성이 낮으면 데이터에 대응하는 가상 주소를 제2 영역에 대응하는 가상 주소로 결정할 수 있다.
호스트(610)는 결정된 가상 주소를 이용하여 캐시 메모리(620)에 접근할 수 있다. 캐시 메모리(620)에서 캐시 미스가 발생하면 캐시 메모리(620)는 결정된 가상 주소를 이용하여 메모리 장치(600)에 접근할 수 있다.
메모리 장치(600) 내의 휘발성 메모리(640) 및 비휘발성 메모리(650)는 동일한 계층(layer)에 위치한다.
실시예에 따라서는 컨트롤러(630)는 단순히 가상 주소에 따라 휘발성 메모리(640) 또는 비휘발성 메모리(650)를 선택할 수도 있다. 이 때, 가상 주소로부터 물리 주소 1 또는 물리 주소 2로 변환되는 과정은 주소 변환 테이블을 참조하여 실행될 수 있다.
본 발명의 또 다른 실시예에 따른 메모리 장치는 바이트 또는 워드 단위로 읽기 및 쓰기 명령을 처리하고, 버스트 모드 신호에 의해 순차적으로 I/O를 처리할 수 있다. 다른 실시예에 따라서는 외부 호스트가 I/O 연산의 범위를 지정하면 메모리 장치는 지정된 범위에 대응하는 I/O를 처리할 수 있다. I/O 연산의 범위는 시작 주소 및 끝 주소로 표현될 수도 있고, 시작 주소 및 I/O의 크기로 표현될 수도 있다.
메모리 장치는 버스트 모드 I/O를 처리하기 위하여 DDR(Double Data Rate) 또는 PCIE(Peripheral Component Interconnect Express) 기법을 이용할 수도 있다.
메모리 장치는 외부 호스트에 하나로 통합된 주소 공간을 제공할 수도 있고, 복수의 분할된 주소 공간을 제공할 수도 있다. 하나로 통합된 주소 공간을 제공하기 위해서는 메모리 장치 및 외부 호스트 간에는 주소를 보내고 받을 수 있다. 복수의 분할된 주소 공간을 제공하기 위해서는 메모리 장치 및 외부 호스트 간에는 주소 공간의 인덱스 및 주소 공간 내의 주소를 보내고 받을 수 있다. 주소 공간의 인덱스 및 주소 공간 내의 주소는 서로 다른 물리적 경로로 전달될 수도 있고 서로 동일한 물리적 경로를 경유하여 순차적으로 전달될 수도 있다.
메모리 장치는 non-uniform한 access time을 외부 호스트에 제공하므로 현재 데이터가 준비 중임을 알리는 신호를 이용할 수 있다. 또는 메모리 장치는 데이터가 준비되기까지의 시간을 알리는 소정의 신호를 이용할 수 있다.
외부 호스트는 메모리 장치의 데이터 준비 시간 정보에 기초하여 대기하는 동안 다른 태스크(task)를 미리 수행할 수 있다. 메모리 장치는 외부 호스트로부터 요청된 데이터가 준비되면 준비 상태를 알리는 신호를 전송할 수 있다.
외부 호스트는 가상 주소에 대응하는 메모리 장치의 주소 공간에 접근 권한(읽기, 쓰기, 실행, 수정, 공유 여부에 대한 권한)을 설정할 수 있다. 외부 호스트는 현재 진행 중인 프로세스의 식별자(Identification, ID) 또는 우선 순위 레벨을 메모리 장치로 전달할 수 있다.
최우선 순위의 권한을 가지는 ID 및 ID의 권한의 제한은 하드웨어를 이용하여 구현될 수 있다.
다른 실시예에 따라서는 최우선 순위의 권한을 가지는 ID 또는 우선 순위 레벨이 미리 정의되고 미리 정의된 ID 또는 우선 순위 레벨을 이용하여 특정 메모리 주소에 대한 접근 권한이 설정될 수도 있다. 외부 호스트, 프로세서 또는 OS는 최우선 순위 ID 또는 우선 순위 레벨에 대한 접근을 제어할 수 있다.
외부 호스트는 TLB (Table Lookaside Buffer) 를 포함할 수 있다. 외부 호스트는 L1 및 L2 캐시에 가상 주소 또는 물리 주소를 이용하여 접근할 수 있다.
실시예에 따라서는 외부 호스트는 TLB를 포함하지 않고 가상 주소를 이용하여 L1 및 L2 캐시에 접근할 수 있다. L1 및 L2 캐시에 대하여 캐시 미스가 발생하면 외부 호스트는 메모리 장치에 접근할 수 있다. 이 때, 가상 주소는 메모리 장 치의 주소 공간에 대응한다. 메모리 장치가 복수의 주소 공간을 제공하는 경우에 캐시는 주소 공간 ID를 인식하고 문맥 교환(context exchange) 시에 캐시를 flush하지 않을 수 있다. 다른 실시예에 따라서는 캐시는 주소 공간 ID를 인식할 수 없고 문맥 교환 시에 캐시를 flush할 수 있다.
OS가 가상 메모리를 이용하는 경우 다중 주소 공간을 이용할 수 있다. 이 때, OS는 하나의 프로세스에 하나의 주소 공간을 할당한다. 주소 공간의 특정 영역은 OS의 kernel이 매핑되어 있다. 어플리케이션은 특정 영역에 매핑되고 하나 이상의 thread를 가질 수 있다. 동일 프로세스 내의 thread 간에는 thread 간의 통신에 소요되는 자원이 서로 다른 프로세스 내의 thread 간의 통신에 비해 적을 수 있다.
OS가 단일 주소 공간을 이용하는 경우 프로세스들 각각을 OS는 주소 공간 상에 순차적으로 매핑할 수 있다. 주소 공간이 부족하면 OS는 적어도 하나 이상의 프로세스를 종료할 수 있다. OS는 주소 공간이 부족하면 가용 메모리 공간이 확보될 때까지 대기하거나 오류 메시지를 리턴할 수 있다.
OS의 파일 시스템은 주소 공간의 일부를 이용하여 구성될 수 있다. OS의 파일 시스템은 메모리 장치의 파일 시스템을 이용하여 구성될 수 있다.
메모리 장치가 복수의 주소 공간을 가지는 경우 프로세스들 각각은 하나씩의 주소 공간을 가질 수 있다. 이 때, 파일 시스템은 하나 이상의 주소 공간을 가질 수 있다. 메모리 장치는 내부에서 데이터 미스(miss)가 발생하지 않은 것처럼 외부에서 인식되도록 주소 변환 테이블을 관리할 수 있다.
외부 호스트가 메모리 장치의 주소 공간에 직접 접근하는 경우에는 부가적인 주소 변환이 필요하지 않다. 메모리 장치가 복수의 주소 공간을 지원하고 주소 공간의 개수가 충분히 크며 주소 공간의 크기가 외부 호스트에서 요구되는 용량보다 큰 경우에는 페이지 스와핑 기능이 필요하지 않을 수 있다.
본 발명의 실시예들에 따른 컴퓨팅 시스템 또는 메모리 장치는 비휘발성 메모리에 기반한 구조를 가지므로 HDD의 spin-up(회전 속도를 일정한 레벨에 도달하기 위해 높이는 과정) 시간을 필요로 하지 않을 수 있다. 또한 컴퓨팅 시스템 또는 메모리 장치는 HDD 등의 스토리지 장치와 메모리 장치 간의 데이터 전달 과정에 dedicated path를 이용함으로써 부팅 시간을 단축할 수 있다.
본 발명의 실시예들에 따른 컴퓨팅 시스템 또는 메모리 장치는 Page Fault를 메모리 장치 내부에서 handle함으로써 handling 시간을 줄일 수 있다. 메모리 장치는 외부 호스트의 데이터 쓰기 요청을 수신함과 동시에 ACK를 전송하고 실질적인 데이터 저장 과정은 메모리 장치 내부에서 handle함으로써 외부 호스트에 대한 응답 시간을 줄일 수 있다.
메모리 장치는 외부 호스트의 working set에 기초하여 내부의 DRAM의 동작을 조정함으로써 소모 전력을 줄일 수 있다.
메모리 장치는 외부 호스트에 집중된 제어 기능 중 메모리 관리 기능을 offload함으로써 외부 호스트의 복잡도를 줄일 수 있다. 외부 호스트가 멀티 코어 프로세서인 경우 메모리 장치는 다중 주소 공간을 효율적으로 관리할 수 있다.
SMP(Symmetric Multi-Processor) 구조의 멀티 코어 프로세서는 가상 주소 공 간을 관리하는 메타 데이터를 코어 간에 공유하여 코어 간 동기화 비용이 증가한다. 본 발명의 실시예들에 따른 메모리 장치는 가상 주소 공간의 관리 기능을 프로세서로부터 offload하므로 SMP 구조의 멀티 코어 프로세서의 각 코어들은 동기화 없이 가상 주소 공간에 직접 접근할 수 있다.
메모리 장치가 외부 호스트에 비휘발성 대용량 메모리로 인식되는 경우, 외부 호스트는 휘발성 메모리를 관리하기 위한 추가적인 기능을 수행할 필요 없으므로 외부 호스트의 복잡도를 줄일 수 있다.
메모리 장치는 종래의 외부 호스트 또는 플래시 메모리 등에 분산되어 있던 메모리 관리 기능을 통합하여 관리함으로써 자원의 중복된 사용을 줄일 수 있다.
메모리 장치는 메모리 관리 기능을 통합하여 관리함으로써 시스템 인 패키지(System-in Package, SiP)를 용이하게 구현하도록 할 수 있다.
본 발명의 실시예들에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 다양한 형태들의 패키지를 이용하여 구현될 수 있다. 예를 들면, 본 발명의 실시예들에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 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 Metric Quad 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), 등과 같은 패키지들을 이용하여 구현될 수 있다.
플래시 메모리 장치와 메모리 컨트롤러는 메모리 카드를 구성할 수 있다. 이러한 경우, 메모리 컨트롤러는 USB, MMC, PCI-E, SATA, PATA, SCSI, ESDI, 그리고 IDE 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(예를 들면, 호스트)와 통신하도록 구성될 수 있다.
플래시 메모리 장치는 전력이 차단되어도 저장된 데이터를 유지할 수 있는 비휘발성 메모리 장치이다. 셀룰러 폰, PDA 디지털 카메라, 포터블 게임 콘솔, 그리고 MP3P와 같은 모바일 장치들의 사용 증가에 따라, 플래시 메모리 장치는 데이터 스토리지 뿐만 아니라 코드 스토리지로서 보다 널리 사용될 수 있다. 플래시 메모리 장치는, 또한, HDTV, DVD, 라우터, 그리고 GPS와 같은 홈 어플리케이션에 사용될 수 있다.
본 발명의 실시예들에 따른 컴퓨팅 시스템 또는 호스트는 버스에 전기적으로 연결된 마이크로프로세서, 사용자 인터페이스, 베이스밴드 칩셋(baseband chipset)과 같은 모뎀, 메모리 컨트롤러, 그리고 플래시 메모리 장치를 포함한다. 플래시 메모리 장치에는 마이크로프로세서에 의해서 처리된/처리될 N-비트 데이터(N은 1 또는 그 보다 큰 정수)가 메모리 컨트롤러를 통해 저장될 것이다. 본 발명의 실시예들에 따른 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리가 추가적으로 제공될 것이다.
본 발명의 실시예들에 따른 컴퓨팅 시스템에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 메모리 컨트롤러와 플래시 메모리 장치는, 예를 들면, 데이터를 저장하는 데 비휘발성 메모리를 사용하는 SSD(Solid State Drive/Disk)를 구성할 수 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명의 일 실시예에 따른 컴퓨팅 시스템(100)을 도시하는 도면이다.
도 2는 본 발명의 다른 실시예에 따른 메모리 장치(200)를 도시하는 도면이다.
도 3은 도 2의 메모리 장치(200)의 동작의 일 예를 도시하는 타이밍도이다.
도 4는 도 2의 메모리 장치(200)의 동작의 다른 예를 도시하는 타이밍도이다.
도 5는 본 발명의 또 다른 실시예에 따른 메모리 장치(500)를 도시하는 도면이다.
도 6은 본 발명의 또 다른 실시예에 따른 메모리 장치(600)를 도시하는 도면이다.
도 7은 도 5의 메모리 장치(500)의 동작의 일 예를 도시하는 도면이다.
<도면의 주요 부분에 대한 부호의 설명>
110: 호스트
120: 인터페이스
130: 비휘발성 메모리

Claims (15)

  1. 제1 저장 용량을 가지는 제1 메모리;
    상기 제1 저장 용량보다 큰 제2 저장 용량을 가지는 제2 메모리; 및
    상기 제1 저장 용량보다 크고 상기 제1 저장 용량 및 상기 제2 저장 용량의 합보다 작은 제3 저장 용량에 대응하는 주소 공간을 외부 호스트에 제공하는 컨트롤러
    를 포함하고,
    상기 컨트롤러는 외부 호스트로부터 가상 주소를 입력 받고, 상기 입력 받은 가상 주소의 시간적 지역성에 기초하여 상기 가상 주소를 상기 제1 메모리의 물리 주소 또는 상기 제2 메모리의 물리 주소 중 어느 하나로 변환하고, 상기 외부 호스트로부터 요청된 데이터가 상기 제1 메모리에 저장되어 있으면 상기 요청된 데이터를 상기 제1 메모리로부터 상기 외부 호스트로 전달하고, 상기 요청된 데이터가 상기 제1 메모리에 저장되어 있지 않으면 상기 요청된 데이터를 상기 제2 메모리로부터 상기 외부 호스트로 전달하는 메모리 장치.
  2. 제1항에 있어서,
    상기 외부 호스트에 제공되는 주소 공간을 나타내는 주소는 복수의 주소 필드들로 분할되고,
    상기 컨트롤러는
    상기 제1 메모리에 상기 분할된 주소 필드들 중 제1 주소 및 제2 주소를 참조하여 접근하고, 상기 제1 주소를 이용하여 상기 요청된 데이터가 상기 제1 메모 리에 저장되어 있는지 여부를 판정하는 메모리 장치.
  3. 제2항에 있어서,
    상기 컨트롤러는
    상기 요청된 데이터가 상기 제1 메모리에 저장되어 있지 않으면, 상기 외부 호스트로부터 상기 제2 주소를 수신하는 동안 상기 요청된 데이터를 상기 제2 메모리로부터 읽는 메모리 장치.
  4. 제2항에 있어서,
    상기 컨트롤러는
    상기 요청된 데이터가 상기 제1 메모리에 저장되어 있지 않으면 상기 요청된 데이터의 제2 주소에 대응하는 데이터 블록을 상기 제2 메모리로부터 읽어 상기 제1 메모리에 저장하는 메모리 장치.
  5. 제2항에 있어서,
    상기 제1 주소는 행 주소이고, 상기 제2 주소는 열 주소인 메모리 장치.
  6. 제1항에 있어서,
    상기 제2 메모리는 전원 공급이 차단되어도 저장된 데이터를 잃지 않는 비휘발성인 메모리 장치.
  7. 제6항에 있어서,
    상기 제2 메모리는
    상기 외부 호스트가 워드 단위로 랜덤하게 접근 가능한 비휘발성 메모리인 메모리 장치.
  8. 비휘발성 메모리;
    가상 주소를 상기 비휘발성 메모리의 블록들의 상태 정보 - 상기 상태 정보는 상기 블록들이 소거된 횟수를 포함 - 에 기초하여 상기 비휘발성 메모리의 물리 주소로 변환하는 호스트; 및
    상기 비휘발성 메모리의 물리 주소를 상기 호스트로부터 상기 비휘발성 메모리로 전달하고, 상기 호스트 및 상기 비휘발성 메모리 간에 데이터를 전달하는 인터페이스
    를 포함하고,
    컨트롤러가 물리 주소 및 가상 주소 간의 변환을 수행함으로써, 상기 호스트는 운영 체제가 인식하는 가상 주소를 이용하여 상기 운영 체제 상의 메모리를 관리하는 것
    을 특징으로 하
    는 컴퓨팅 시스템.
  9. 제8항에 있어서,
    상기 호스트는
    상기 가상 주소를 가상 메모리의 물리 주소 또는 상기 비휘발성 메모리의 물리 주소 중 어느 하나로 변환하고,
    상기 호스트는
    상기 가상 주소 및 상기 가상 메모리의 물리 주소의 대응 관계 또는 상기 가상 주소 및 상기 비휘발성 메모리의 물리 주소의 대응 관계를 저장하고, 상기 저장된 물리 주소의 성질을 나타내는 플래그를 저장하는 변환 탐색 버퍼
    를 더 포함하는 컴퓨팅 시스템.
  10. 제8항에 있어서,
    상기 호스트는
    상기 비휘발성 메모리의 물리 주소를 이용하여 상기 비휘발성 메모리의 블록들에 대한 가비지 콜렉션 동작을 제어하는 컴퓨팅 시스템.
  11. 제8항에 있어서,
    상기 호스트는
    상기 비휘발성 메모리에 대응하며 운영 체제에 의하여 제공되는 드라이버를 이용하여 상기 비휘발성 메모리의 상태 정보를 획득하고, 상기 비휘발성 메모리의 블록들 중 상기 비휘발성 메모리의 물리 주소에 대응하는 블록의 상태 정보에 기초하여 상기 비휘발성 메모리의 물리 주소에 대응하는 블록의 소거 동작을 제어하는 컴퓨팅 시스템.
  12. 제8항에 있어서,
    상기 비휘발성 메모리는
    표준에 의하여 규정되는 표준 구성 - 상기 표준 구성은 상기 비휘발성 메모리의 채널의 개수, 상기 비휘발성 메모리의 채널 별 뱅크의 개수, 상기 비휘발성 메모리의 소거 연산의 단위 중 적어도 하나 이상을 포함 - 을 가지고,
    상기 호스트는
    상기 표준 구성에 기초하여 상기 상태 정보를 획득하는 컴퓨팅 시스템.
  13. 휘발성 메모리;
    비휘발성 메모리; 및
    외부 호스트로부터 가상 주소를 입력 받고, 상기 가상 주소의 시간적 지역성에 기초하여 상기 가상 주소를 상기 휘발성 메모리의 물리 주소 또는 상기 비휘발성 메모리의 물리 주소 중 어느 하나로 변환하는 컨트롤러
    를 포함하고,
    상기 컨트롤러가 물리 주소 및 가상 주소 간의 변환을 수행함으로써, 상기 외부 호스트는 운영 체제가 인식하는 가상 주소를 이용하여 상기 운영 체제 상의 메모리를 관리하며,
    상기 컨트롤러는 상기 가상 주소 및 상기 휘발성 메모리 또는 상기 비휘발성 메모리의 상기 변환된 물리 주소의 대응 관계를 저장하는 메모리 장치.
  14. 휘발성 메모리;
    비휘발성 메모리; 및
    외부의 호스트, 외부의 캐시 컨트롤러, 메모리 컨트롤러 또는 시스템 칩셋으로부터 가상 주소를 입력 받고, 상기 가상 주소가 제1 영역에 대응하는지 제2 영역에 대응하는지 여부를 판정하는 컨트롤러
    를 포함하고,
    상기 컨트롤러는 상기 가상 주소가 상기 제1 영역에 대응하면 상기 가상 주소를 상기 휘발성 메모리의 물리 주소로 변환하고, 상기 가상 주소가 상기 제2 영역에 대응하면 상기 가상 주소를 상기 비휘발성 메모리의 물리 주소로 변환하는 메모리 장치.
  15. 제14항에 있어서,
    상기 가상 주소는 상기 외부의 호스트 또는 상기 캐시 메모리로부터 상기 가상 주소에 대응하는 데이터의 시간적 지역성에 기초하여 상기 제1 영역에 대응할지 상기 제2 영역에 대응할지 결정되는 메모리 장치.
KR1020080022961A 2008-03-12 2008-03-12 스토리지 장치 및 컴퓨팅 시스템 KR101449524B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020080022961A KR101449524B1 (ko) 2008-03-12 2008-03-12 스토리지 장치 및 컴퓨팅 시스템
US12/176,491 US8443144B2 (en) 2008-03-12 2008-07-21 Storage device reducing a memory management load and computing system using the storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080022961A KR101449524B1 (ko) 2008-03-12 2008-03-12 스토리지 장치 및 컴퓨팅 시스템

Publications (2)

Publication Number Publication Date
KR20090097671A KR20090097671A (ko) 2009-09-16
KR101449524B1 true KR101449524B1 (ko) 2014-10-14

Family

ID=41064251

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080022961A KR101449524B1 (ko) 2008-03-12 2008-03-12 스토리지 장치 및 컴퓨팅 시스템

Country Status (2)

Country Link
US (1) US8443144B2 (ko)
KR (1) KR101449524B1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160107696A (ko) * 2015-03-05 2016-09-19 홍익대학교 산학협력단 컴퓨팅 장치의 데이터 출력방법 및 이를 위한 컴퓨팅 장치
US11243709B2 (en) 2019-08-22 2022-02-08 SK Hynix Inc. Data storage apparatus and operating method thereof
US11288189B2 (en) 2019-09-20 2022-03-29 SK Hynix Inc. Memory controller and method of operating the same
US11487627B2 (en) 2019-12-16 2022-11-01 SK Hynix Inc. Storage device and method of operating the same
US11734175B2 (en) 2019-08-22 2023-08-22 SK Hynix Inc. Storage device and method of operating the same
US11762769B2 (en) 2019-09-20 2023-09-19 SK Hynix Inc. Memory controller based on flush operation and method of operating the same

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719485B2 (en) * 2008-06-27 2014-05-06 Marvell World Trade Ltd. Solid-state disk with wireless functionality
US20100058025A1 (en) * 2008-08-26 2010-03-04 Kimmo Kuusilinna Method, apparatus and software product for distributed address-channel calculator for multi-channel memory
JP5474327B2 (ja) * 2008-10-02 2014-04-16 ピーエスフォー ルクスコ エスエイアールエル 半導体記憶装置及びこれを備えるデータ処理システム
US20100250798A1 (en) * 2009-03-31 2010-09-30 Sean Eilert Hierarchical memory architecture with an interface to differing memory formats
US8495423B2 (en) * 2009-08-11 2013-07-23 International Business Machines Corporation Flash-based memory system with robust backup and restart features and removable modules
US8438334B2 (en) * 2009-12-22 2013-05-07 International Business Machines Corporation Hybrid storage subsystem with mixed placement of file contents
KR101095046B1 (ko) 2010-02-25 2011-12-20 연세대학교 산학협력단 솔리드 스테이트 디스크 및 이를 포함하는 사용자 시스템
JP2012063871A (ja) * 2010-09-14 2012-03-29 Univ Of Tokyo 制御装置およびデータ記憶装置
KR20120029239A (ko) * 2010-09-16 2012-03-26 삼성전자주식회사 Pram을 이용하는 데이터 기록 시스템 및 그 방법
KR20120079682A (ko) * 2011-01-05 2012-07-13 삼성전자주식회사 디램 캐시를 포함하는 메모리 장치 및 이를 포함하는 시스템
TWI459198B (zh) * 2011-07-08 2014-11-01 Phison Electronics Corp 記憶體儲存裝置、其記憶體控制器與有效資料識別方法
KR20130139604A (ko) 2012-06-13 2013-12-23 삼성전자주식회사 복수의 메모리 칩을 구비한 메모리 장치, 그 인증 시스템 및 인증 방법
US20130339573A1 (en) * 2012-06-15 2013-12-19 International Business Machines Corporation Optimizing write performance to flash memory
KR20140065196A (ko) * 2012-11-21 2014-05-29 삼성전자주식회사 메모리 시스템 및 그 구동 방법
KR101821633B1 (ko) 2013-03-14 2018-03-08 삼성전자주식회사 메모리 시스템
KR102053865B1 (ko) 2013-03-15 2019-12-09 삼성전자주식회사 호스트-주도 가비지 컬렉션 방법과 상기 방법을 수행할 수 있는 시스템
US9477619B2 (en) * 2013-06-10 2016-10-25 Cypress Semiconductor Corporation Programmable latency count to achieve higher memory bandwidth
US11822474B2 (en) 2013-10-21 2023-11-21 Flc Global, Ltd Storage system and method for accessing same
JP6431536B2 (ja) * 2013-10-21 2018-11-28 マーベル インターナショナル リミテッド 最終レベルキャッシュシステム及び対応する方法
US9612973B2 (en) * 2013-11-09 2017-04-04 Microsoft Technology Licensing, Llc Using shared virtual memory resources for performing memory-mapping
KR20150062646A (ko) * 2013-11-29 2015-06-08 삼성전자주식회사 전자 시스템 및 이의 동작 방법
US10445025B2 (en) * 2014-03-18 2019-10-15 Micron Technology, Inc. Apparatuses and methods having memory tier structure and recursively searching between tiers for address in a translation table where information is only directly transferred between controllers
US9619326B2 (en) 2014-12-09 2017-04-11 Western Digital Technologies, Inc. Methods and systems for implementing redundancy in memory controllers
JP2016167215A (ja) * 2015-03-10 2016-09-15 株式会社東芝 メモリ装置
US11165717B2 (en) 2015-10-26 2021-11-02 Western Digital Technologies, Inc. Fabric interconnection for memory banks based on network-on-chip methodology
US10243881B2 (en) 2015-10-27 2019-03-26 Western Digital Technologies, Inc. Multilayer 3D memory based on network-on-chip interconnection
CN109154917B (zh) * 2016-12-29 2020-09-29 华为技术有限公司 存储***和固态硬盘
WO2019246139A1 (en) 2018-06-18 2019-12-26 Flc Technology Group Inc. Method and apparatus for using a storage system as main memory
US11347653B2 (en) * 2018-08-31 2022-05-31 Nyriad, Inc. Persistent storage device management
JP6874814B2 (ja) * 2019-10-30 2021-05-19 株式会社安川電機 産業機器の制御装置、産業機器の制御装置の設定システム、産業機器の制御装置の設定方法、及びプログラム
KR20230016990A (ko) * 2021-07-27 2023-02-03 에스케이하이닉스 주식회사 컬럼동작을 수행하는 메모리장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004094778A (ja) 2002-09-03 2004-03-25 Matsushita Electric Ind Co Ltd 記憶装置と複製装置
KR20070074134A (ko) * 2006-01-06 2007-07-12 삼성전자주식회사 메모리 카드의 저장용량을 확장시키는 장치 및 그를 이용한메모리 카드의 동작 방법

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6052789A (en) * 1994-03-02 2000-04-18 Packard Bell Nec, Inc. Power management architecture for a reconfigurable write-back cache
US5912906A (en) * 1997-06-23 1999-06-15 Sun Microsystems, Inc. Method and apparatus for recovering from correctable ECC errors
JP4079506B2 (ja) 1997-08-08 2008-04-23 株式会社東芝 不揮発性半導体メモリシステムの制御方法
JPH11338782A (ja) * 1998-05-27 1999-12-10 Oki Electric Ind Co Ltd 記憶装置及びその欠陥セクタ代替方法
US6859399B1 (en) * 2000-05-17 2005-02-22 Marvell International, Ltd. Memory architecture and system and multiport interface protocol
JP3942807B2 (ja) 2000-06-06 2007-07-11 株式会社ルネサステクノロジ ブロックアラインメント機能付き半導体記憶装置
US6557077B1 (en) * 2000-07-07 2003-04-29 Lsi Logic Corporation Transportable memory apparatus and associated methods of initializing a computer system having the same
US7275135B2 (en) * 2001-08-31 2007-09-25 Intel Corporation Hardware updated metadata for non-volatile mass storage cache
US7073030B2 (en) * 2002-05-22 2006-07-04 International Business Machines Corporation Method and apparatus providing non level one information caching using prefetch to increase a hit ratio
US7181578B1 (en) * 2002-09-12 2007-02-20 Copan Systems, Inc. Method and apparatus for efficient scalable storage management
DE112004001255T5 (de) 2003-07-07 2006-06-08 Hitachi ULSI Systems Co., Ltd., Kodaira Speichervorrichtung und Speichersystem
US7136973B2 (en) 2004-02-04 2006-11-14 Sandisk Corporation Dual media storage device
US20070150653A1 (en) * 2005-12-22 2007-06-28 Intel Corporation Processing of cacheable streaming data
ITRM20060139A1 (it) * 2006-03-13 2007-09-14 Micron Technology Inc Sistema ad unita di controllo distribuito di dispositivo di memoria
KR20070047329A (ko) 2007-02-27 2007-05-04 가부시끼가이샤 르네사스 테크놀로지 반도체 집적 회로
US7801993B2 (en) * 2007-07-19 2010-09-21 Hitachi, Ltd. Method and apparatus for storage-service-provider-aware storage system
US20090106498A1 (en) * 2007-10-23 2009-04-23 Kevin Michael Lepak Coherent dram prefetcher

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004094778A (ja) 2002-09-03 2004-03-25 Matsushita Electric Ind Co Ltd 記憶装置と複製装置
KR20070074134A (ko) * 2006-01-06 2007-07-12 삼성전자주식회사 메모리 카드의 저장용량을 확장시키는 장치 및 그를 이용한메모리 카드의 동작 방법

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160107696A (ko) * 2015-03-05 2016-09-19 홍익대학교 산학협력단 컴퓨팅 장치의 데이터 출력방법 및 이를 위한 컴퓨팅 장치
KR101661418B1 (ko) * 2015-03-05 2016-09-29 홍익대학교 산학협력단 컴퓨팅 장치의 데이터 출력방법 및 이를 위한 컴퓨팅 장치
US11243709B2 (en) 2019-08-22 2022-02-08 SK Hynix Inc. Data storage apparatus and operating method thereof
US11734175B2 (en) 2019-08-22 2023-08-22 SK Hynix Inc. Storage device and method of operating the same
US11288189B2 (en) 2019-09-20 2022-03-29 SK Hynix Inc. Memory controller and method of operating the same
US11762769B2 (en) 2019-09-20 2023-09-19 SK Hynix Inc. Memory controller based on flush operation and method of operating the same
US11487627B2 (en) 2019-12-16 2022-11-01 SK Hynix Inc. Storage device and method of operating the same

Also Published As

Publication number Publication date
US8443144B2 (en) 2013-05-14
US20090235014A1 (en) 2009-09-17
KR20090097671A (ko) 2009-09-16

Similar Documents

Publication Publication Date Title
KR101449524B1 (ko) 스토리지 장치 및 컴퓨팅 시스템
US11200176B2 (en) Dynamic partial power down of memory-side cache in a 2-level memory hierarchy
US10719443B2 (en) Apparatus and method for implementing a multi-level memory hierarchy
US11132298B2 (en) Apparatus and method for implementing a multi-level memory hierarchy having different operating modes
CN113508368B (zh) 存储器子***及其操作方法
US9269438B2 (en) System and method for intelligently flushing data from a processor into a memory subsystem
US9317429B2 (en) Apparatus and method for implementing a multi-level memory hierarchy over common memory channels
US9286205B2 (en) Apparatus and method for phase change memory drift management
KR101553532B1 (ko) 스토리지 장치
US11741011B2 (en) Memory card with volatile and non volatile memory space having multiple usage model configurations
CN114402305A (zh) 与存储器类型相关的页表
KR20220060548A (ko) 데이터가 저장된 메모리 디바이스를 식별하기 위해 저장된 메타데이터 액세싱
US20220179798A1 (en) Separate read-only cache and write-read cache in a memory sub-system
US20210056030A1 (en) Multi-level system memory with near memory capable of storing compressed cache lines
US10180796B2 (en) Memory system
CN113243007A (zh) 存储级存储器访问
CN113711193A (zh) 用以存取存储器子***中的高速缓存数据的队列中的优先级调度
US20170109074A1 (en) Memory system
US20220229552A1 (en) Computer system including main memory device having heterogeneous memories, and data management method thereof
TW202318205A (zh) 記憶體系統及資料輸入輸出系統

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
FPAY Annual fee payment

Payment date: 20170918

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee