KR20190113437A - 메모리 시스템, 그것의 동작방법 및 메모리 시스템을 포함하는 컴퓨팅 시스템 - Google Patents

메모리 시스템, 그것의 동작방법 및 메모리 시스템을 포함하는 컴퓨팅 시스템 Download PDF

Info

Publication number
KR20190113437A
KR20190113437A KR1020180036122A KR20180036122A KR20190113437A KR 20190113437 A KR20190113437 A KR 20190113437A KR 1020180036122 A KR1020180036122 A KR 1020180036122A KR 20180036122 A KR20180036122 A KR 20180036122A KR 20190113437 A KR20190113437 A KR 20190113437A
Authority
KR
South Korea
Prior art keywords
memory device
memory
target data
ratio
data
Prior art date
Application number
KR1020180036122A
Other languages
English (en)
Inventor
김이석
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020180036122A priority Critical patent/KR20190113437A/ko
Priority to TW108100119A priority patent/TWI795505B/zh
Priority to US16/238,726 priority patent/US10754570B2/en
Priority to JP2019000540A priority patent/JP7368942B2/ja
Priority to CN201910085149.7A priority patent/CN110321071B/zh
Publication of KR20190113437A publication Critical patent/KR20190113437A/ko
Priority to US16/932,157 priority patent/US20200348871A1/en

Links

Images

Classifications

    • 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/0658Controller construction arrangements
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • 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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/061Improving I/O performance
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0673Single storage device
    • 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/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명의 실시 예에 따른 컴퓨팅 시스템에 있어서, 타겟 데이터를 제공하는 호스트; 및 상기 타겟 데이터를 저장하는 메모리 시스템으로 구성되며, 상기 메모리 시스템은 하나 이상의 메모리 장치들 및 상기 타겟 데이터를 저장하도록 상기 메모리 장치들을 제어하는 컨트롤러로 구성되고, 상기 컨트롤러는 상기 호스트 요청에 기초하여 상기 메모리 장치 그룹의 범위를 가변하여, 하나 이상의 메모리 장치 그룹들로 그루핑하는 그룹설정부를 포함하며, 상기 호스트는 상기 타겟 데이터의 성격에 기초하여 상기 타겟 데이터의 가속화 여부를 판단하고, 상기 타겟 데이터가 저장되는 메모리 장치 그룹을 선택하는 가속화 판단부를 포함할 수 있다.

Description

메모리 시스템, 그것의 동작방법 및 메모리 시스템을 포함하는 컴퓨팅 시스템 {MEMORY SYSTEM, OPERATION METHOD THEREOF AND COMPUTING SYSTEM INCLUDING THE MEMORY SYSTEM}
본 발명은 메모리 시스템에 관한 것으로, 보다 구체적으로는 효율적인 데이터 처리를 위한 메모리 시스템, 그것의 동작방법 메모리 시스템을 포함하는 컴퓨팅 시스템에 관한 것이다.
데이터는 4차 산업혁명 시대 기업들의 비즈니스에 가장 중요한 자산이 되고 있으며, 이에 대규모 데이터를 빠르게 전송 및 분석하도록 지원하는 최신 기술에 대한 수요가 점차 증가하고 있다. 예를 들어, 인공지능, 자율주행, 로봇, 헬스케어, 가상현실(virtual reality, VR)/증강현실(augmented reality, AR), 스마트홈 등이 확대됨에 따라 서버나 데이터 센터에 대한 수요의 증가가 예상되고 있다.
레거시(legacy) 데이터 센터는 자원들(예; 컴퓨팅, 네트워킹, 스토리지)을 하나의 장비 내에 포함시키는 구조였다. 그러나 미래의 대용량 데이터 센터는 자원들을 각각 별개로 구성하고, 논리적으로 자원들을 재구성하는 구조를 가질 수 있다. 예를 들어, 대용량 데이터 센터는 자원들을 각각 랙(rack) 수준에서 모듈화하고, 용도에 따라 자원들을 재구성하여 공급할 수 있는 구조를 가질 수 있다. 따라서 미래의 대용량 데이터 센터에 사용하기 적합한 통합형 스토리지 또는 메모리 디바이스가 요구되고 있다.
본 발명은 데이터의 특성에 기초하여 효율적으로 데이터를 메모리 장치에 저장할 수 있는 메모리 시스템, 그것의 동작방법 메모리 시스템을 포함하는 컴퓨팅 시스템에 대하여 제안한다.
본 발명의 실시 예들에 따른 메모리 시스템에 있어서, 서로 다른 종류인 복수의 메모리 장치들; 및 상기 복수의 메모리 장치들 각각을 제어하는 컨트롤러를 포함하고, 상기 컨트롤러는 타겟 데이터의 R/W 비율을 측정하는 카운터, 상기 타겟 데이터의 R/W 비율을 상기 복수의 메모리 장치들 각각의 임계 값과 비교하여 상기 타겟 데이터가 저장될 메모리 장치를 선택하는 선택부, 및 상기 선택된 메모리 장치에 상기 타겟 데이터를 저장하는 프로세서를 포함할 수 있다.
본 발명의 실시 예들에 따른 메모리 시스템의 동작방법에 있어서, 타겟 데이터의 R/W 비율을 측정하는 단계; 상기 타겟 데이터의 R/W 비율을 상기 복수의 메모리 장치들 각각의 임계 값과 비교하여 상기 타겟 데이터가 저장될 메모리 장치를 선택하는 단계; 및 상기 선택된 메모리 장치에 상기 타겟 데이터를 저장하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 컴퓨팅 시스템에 있어서, 서로 종류가 상이한 복수의 메모리 장치들 및 상기 복수의 메모리 장치들 각각을 제어하는 제 1 컨트롤러를 포함하는 제 1 메모리 시스템; 상기 제 1 메모리 시스템에 포함된 복수의 메모리 장치들과 종류가 상이한 메모리 장치 및 상기 메모리 장치를 제어하는 제 2 컨트롤러를 포함하는 제 2 메모리 시스템; 및 상기 제 1 메모리 시스템 및 상기 제 2 메모리 시스템 각각과 데이터 통신하는 메모리 시스템 관리부를 포함하고 상기 제 1 컨트롤러는 상기 MMU로부터 전달받은 타겟 데이터의 R/W 비율을 측정하고, 상기 타겟 데이터의 R/W 비율을 상기 복수의 메모리 장치들 각각의 임계 값과 비교하여 상기 타겟 데이터가 저장될 메모리 장치를 선택하며, 상기 선택된 메모리 장치에 상기 타겟 데이터를 저장할 수 있다.
본 발명의 실시 예에 따르면, 데이터의 특성에 기초하여 데이터가 저장될 메모리 장치를 선택하고, 신속하게 데이터를 처리할 수 있어 전체적인 시스템의 효율성을 증가시킬 수 있다.
도 1은 데이터 처리 시스템을 도시하는 도면이다.
도 2 본 발명의 실시 예에 따른 컴퓨팅 랙의 구조를 개략적으로 도시하는 도면이다.
도 3은 본 발명의 실시 예에 따른 컴퓨팅 랙의 블록 구성을 도시하는 도면이다.
도 4는 본 발명의 실시 예에 따른 연산 보드의 구성을 도시하는 도면이다.
도 5는 본 발명의 실시 예에 따른 메모리 보드의 구성을 개략적으로 나타낸 도면들이다.
도 6a은 본 발명의 실시 예에 따른 메모리 보드의 구성을 나타낸 도면이다.
도 6b은 본 발명의 구체적인 실시 예에 따른 메모리 보드의 구성을 나타낸 도면이다.
도 7은 본 발명의 실시 예에 따른 데이터 컨트롤러의 동작을 나타낸 흐름도이다.
도 8은 본 발명의 실시 예에 따른 데이터 컨트롤러의 동작을 나타낸 흐름도이다.
도 9은 본 발명의 실시 예에 따른 컴퓨팅 시스템의 구조를 나타낸 도면이다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
도 1은 데이터 처리 시스템(10)을 도시하는 도면이다. 도 1을 참조하면, 데이터 처리 시스템(10)은 다수의 컴퓨팅 랙들(computing racks, 20)과 관리 인터페이스(management interface, 30), 그리고 이들 사이의 통신이 가능하도록 하는 네트워크(network, 40)을 포함할 수 있다. 이러한 랙스케일 구조(rack-scale architecture)를 가지는 데이터 처리 시스템(10)은 대용량 데이터 처리를 위한 데이터 센터 등에 사용될 수 있다.
다수의 컴퓨팅 랙(20)들 각각은 다른 컴퓨팅 랙(20)들과의 조합으로 하나의 컴퓨팅 시스템을 구현할 수 있다. 이러한 컴퓨팅 랙(20)들의 구체적인 구성 및 동작에 대한 설명은 후술될 것이다.
관리 인터페이스(30)은 사용자가 데이터 처리 시스템(10)을 조정, 운영 또는 관리할 수 있도록 하는 인터액티브 인터페이스(interactive interface)를 제공할 수 있다. 관리 인터페이스(30)는 컴퓨터, 멀티프로세서 시스템, 서버, 랙마운트(rack-mount) 서버, 보드(board) 서버, 랩탑(lap-top) 컴퓨터, 노트북 컴퓨터, 태블릿 컴퓨터, 웨어러블 컴퓨팅 시스템, 네트워크 기기, 웹 기기, 분산 컴퓨팅 시스템, 프로세서 기반 시스템, 및/또는 소비자 전자 기기를 포함하는, 임의 유형의 연산 디바이스로서 구현될 수 있다.
일부 실시 예들에서, 관리 인터페이스(30)은 컴퓨팅 랙(20)들에 의해 수행될 수 있는 연산 기능들이나, 관리 인터페이스(30)에 의해 수행될 수 있는 사용자 인터페이스 기능들을 가지는 분산 시스템에 의해 구현될 수 있다. 다른 일부 실시 예들에서, 관리 인터페이스(30)는 네트워크(40)를 통하여 분산된 다중 컴퓨팅 시스템들에 의해 구성되고 클라우드(cloud)로서 동작하는 가상 서버(virtual server)에 의해 구현될 수 있다. 관리 인터페이스(30)은 프로세서, 입력/출력 서브시스템, 메모리, 데이터 스토리지 디바이스 및 통신 회로를 포함할 수 있다.
네트워크(40)은 컴퓨팅 랙들과 관리 인터페이스(30) 사이 및/또는 컴퓨팅 랙들 사이에서의 데이터를 송수신할 수 있다. 네트워크(40)은 적절한 수의 다양한 유선 및/또는 유선 네트워크들에 의해 구현될 수 있다. 예를 들어, 네트워크(40)은 유선 또는 무선 LAN(local area network), WAN(wide area network) 셀룰라 네트워크, 및/또는 인터넷과 같이 공개적으로 억세스 가능한 글로벌 네트워크(publicly-accessible, global network)에 의해 구현되거나 이를 포함할 수 있다. 추가적으로, 네트워크(40)은 보조적인 컴퓨터들, 라우터(router)들 및 스위치들과 같은 적절한 수의 보조적인 네트워크 디바이스들을 포함할 수 있다. 또한, 네트워크(40)는 CCIX(Cache Coherent Interconnect for accelerators) 및 GEN-Z와 같은 인터페이스 규격에 의해서 연결될 수 있다.
도 2는 본 발명의 실시 예에 따른 컴퓨팅 랙 구조를 개략적으로 도시하는 도면이다.
도 2를 참조하면, 컴퓨팅 랙(20) 은 구성요소들의 구조, 형태 및 호칭 등에 제한되는 것은 아니지만, 다양한 형태의 구성요소들을 포함할 수 있다. 예를 들어, 컴퓨팅 랙(20) 은 다수의 드로워(drawer)들(21 내지 29)를 포함할 수 있다. 다수의 드로워들 (21 내지 29) 각각은 다수의 보드(board)들을 포함할 수 있다.
다양한 실시 예들에 있어서, 컴퓨팅 랙(20)은 적절한 수의 연산 보드(compute board), 메모리 보드(memory board) 및/또는 상호접속 보드(interconnect board)의 조합에 의해 구현될 수 있다. 여기서는 컴퓨팅 랙(20)이 다수의 보드들의 조합에 의해 구현되는 것으로 정의되고 있지만, 이를 대신하여, 드로워들, 모듈들, 트레이들, 보드들, 샷시들 또는 유닛들 등의 다양한 이름으로 구현되는 것으로 정의될 수 있음에 유의하여야 한다. 이러한 컴퓨팅 랙(20)의 구성요소들은 구현의 편의상 기능별로 분류 및 구별되는 구조를 가질 수 있다. 제한되는 것은 아니지만, 컴퓨팅 랙(20)은 상단부터 상호접속 보드, 연산 보드, 메모리 보드의 순서로 분류된 구조를 가질 수 있다. 이러한 컴퓨팅 랙(20) 및 이에 의해 구현되는 컴퓨팅 시스템은 "랙스케일 시스템(rack-scale system)" 또는"분류 시스템(disaggregated system)"으로 명명될 수 있다.
다양한 실시 예들에 있어서, 컴퓨팅 시스템은 하나의 컴퓨팅 랙(20)에 의해 구현될 수 있다. 이를 대신하여, 컴퓨팅 시스템은 2개 이상의 컴퓨팅 랙들에 포함되는 모든 구성요소들에 의해 구현되거나, 2개 이상의 컴퓨팅 랙들에 포함되는 일부 구성요소들의 조합에 의해 구현되거나, 하나의 컴퓨팅 랙(20)에 포함되는 일부 구성요소들에 의해 구현될 수 있다.
다양한 실시 예들에 있어서, 컴퓨팅 시스템은 컴퓨팅 랙(20)에 포함되는 적절한 수의 연산 보드, 메모리 보드 및 상호접속 보드(interconnect board)의 조합에 의해 구현될 수 있다. 예를 들어, 컴퓨팅 시스템(20A)는 2개의 연산 보드들, 3개의 메모리 보드들 및 1개의 상호접속 보드에 의해 구현될 수 있다. 다른 예로, 컴퓨팅 시스템(20B)는 3개의 연산 보드들, 2개의 메모리 보드들 및 1개의 상호접속 보드에 의해 구현될 수 있다. 또 다른 예로, 컴퓨팅 시스템(20C)는 1개의 연산 보드들, 4개의 메모리 보드들 및 1개의 상호접속 보드에 의해 구현될 수 있다.
비록 도 2에서는 컴퓨팅 랙(20)이 적절한 수의 연산 보드, 메모리 보드 및/또는 상호접속 보드의 조합에 의해 구현되는 경우를 도시하고 있지만, 컴퓨팅 랙(20)은 통상의 서버 등에서 확인될 수 있는, 파워 시스템, 냉각 시스템, 입력/출력 디바이스들과 같은 추가적인 구성요소들을 포함할 수 있다.
도 3은 본 발명의 실시 예에 따른 컴퓨팅 랙(20)의 블록 구성을 도시하는 도면이다.
도 3을 참조하면, 컴퓨팅 랙(20)은 다수의 연산 보드들(compute boards, 200), 다수의 메모리 보드들(memory boards, 400) 및 상호접속 보드(interconnect board, 300)를 포함할 수 있다. 다수의 연산 보드들(200)은 풀드 연산 보드(pooled compute boards), 풀드 연산 시스템 등으로 불리울 수 있다. 유사하게, 다수의 메모리 보드들은 풀드 메모리 보드(pooled memory board), 풀드 메모리 시스템 등으로 불리울 수 있다. 여기서는 컴퓨팅 시스템이 다수의 보드들의 조합에 의해 구현되는 것으로 정의되고 있지만, 이를 대신하여 드로워들, 모듈들, 트레이들, 보드들, 샷시들 또는 유닛들 등의 다양한 이름으로 구현되는 것으로 정의될 수 있음에 유의하여야 한다.
다수의 연산 보드들(200) 각각은 하나 또는 그 이상의 프로세서, 프로세싱/컨트롤 회로, 또는 중앙처리장치(central processing unit, CPU)와 같은 프로세싱 요소를 포함할 수 있다.
다수의 메모리 보드들(400) 각각은 다수의 휘발성 메모리(volatile memory)들 및/또는 비휘발성 메모리(nonvolatile memory)들과 같은 다양한 형태의 메모리들을 포함할 수 있다. 예를 들어, 다수의 메모리 보드들(400) 다수의 DRAM(Dynamic Random Access Memory)들, 플래시 메모리(flash memory)들, 메모리 카드들, 하드 디스크 드라이브(hard disk drive, HDD)들, 솔리드 스테이트 드라이브(solid state drive, SSD)들, 및/또는 이들의 조합들을 포함할 수 있다.
다수의 메모리 보드들(400) 각각은 연산 보드들(200) 각각에 포함되는 하나 이상의 프로세싱 요소에 의해 분할되거나, 할당되거나, 또는 지정되어 사용될 수 있다. 또한 다수의 메모리 보드들(400) 각각은 연산 보드들(200)에 의해 초기화 및/또는 수행될 수 있는 하나 이상의 오퍼레이팅 시스템(operating system, OS)들을 저장할 수 있다.
상호접속 보드(300)은 연산 보드들(200) 각각에 포함되는 하나 이상의 프로세싱 요소에 의해 분할, 할당 또는 지정되어 사용될 수 있는, 임의의 통신 회로, 디바이스, 또는 이들의 결합에 의해 구현될 수 있다. 예를 들어, 상호접속 보드(300)은 임의 개수의 네트워크 인터페이스 포트들, 카드들, 또는 스위치들로서 구현될 수 있다. 상호접속 보드(300)은 통신을 실행시키기 위한, 하나 이상의 유선 또는 유선 통신 기술들과 관련된 프로토콜들을 사용할 수 있다. 예를 들어, 상호접속 보드(300)은 PCIe(Peripheral Component Interconnect Express), QPI(QuickPath Interconnect), 이더넷(Ethernet) 등과 같은 프로토콜들에 따라 연산 보드들(200)과 메모리 보드들(400) 사이의 통신을 지원할 수 있다. 뿐만 아니라, 상호접속 보드(300)는 CCIX(Cache Coherent Interconnect for accelerators) 및 GEN-Z와 같은 인터페이스 규격에 의해서 연산 보드들(200)과 연결될 수 있다.
도 4는 본 발명의 실시 예에 따른 연산(200)의 구성을 도시하는 도면이다.
도 4를 참조하면, 연산 보드(200)은 하나 이상의 중앙처리장치(central processing unit, CPU, 210), 하나 이상의 로컬 메모리(local memory, 220) 및 입출력(input/output, I/O) 인터페이스(interface, 230)를 포함할 수 있다.
CPU(210)은 도 3에 도시된 다수의 메모리 보드들(400) 중에서 사용하기 위한 적어도 하나의 메모리 보드를 분할, 할당 또는 지정할 수 있다. 또한 CPU(210)은 분할, 할당 또는 지정된 적어도 하나의 메모리 보드를 초기화하고, 이들을 통해 데이터의 리드 동작, 라이트(또는 프로그램) 동작 등을 수행할 수 있다.
로컬 메모리(220)은 CPU(210)의 동작 수행 중에 필요한 데이터를 저장할 수 있다. 다양한 실시 예들에 있어서, 하나의 로컬 메모리(220)은 하나의 CPU(210)에 일대일 대응하는 구조를 가질 수 있다.
I/O 인터페이스(230)은 도 3의 상호접속 보드(300)을 통한 CPU(210)과 메모리 보드들(400) 사이에서의 인터페이싱을 지원할 수 있다. I/O 인터페이스 (230)은 하나 이상의 유선 또는 유선 통신 기술들과 관련된 프로토콜들을 사용하여, CPU(210)으로부터 상호접속 보드(300)으로의 송신 데이터를 출력하고, 상호접속 보드(300)으로부터 CPU(210)으로의 수신 데이터를 입력할 수 있다. 예를 들어, I/O 인터페이스(230)는 PCIe(Peripheral Component Interconnect Express), QPI(QuickPath Interconnect), 이더넷(Ethernet) 등과 같은 프로토콜들에 따라 CPU (210)과 상호접속 보드(300) 사이의 통신을 지원할 수 있다. 뿐만 아니라, I/O 인터페이스(230)는 CCIX(Cache Coherent Interconnect for accelerators) 및 GEN-Z와 같은 인터페이스 규격에 따라 CPU(210)와 상호접속 보드(300) 사이의 통신을 지원할 수 있다.
도 5는 본 발명의 실시 예에 따른 메모리 보드(400)의 구성을 도시하는 도면들이다.
도 5를 참조하면, 메모리 보드(400)은 컨트롤러(410)와 다수의 메모리들 (420)을 포함할 수 있다. 다수의 메모리들(420)은 컨트롤러(410)의 제어에 따라 데이터를 저장(또는 라이트)하고, 저장된 데이터를 출력(또는 리드)할 수 있다. 다수의 메모리들(420)은 제 1 메모리 장치 (420A), 제 2 메모리 장치(420B) 및 제 3 메모리 장치(420C)를 포함할 수 있다. 제 1 메모리 장치(420A), 제 2 메모리 장치(420B) 및 제 3 메모리 장치(420C)은 서로 동일한 특성을 가질 수도 있고, 서로 다른 특성을 가질 수 있다. 다양한 실시 예들에 있어서, 제 1 메모리 장치(420A), 제 2 메모리 장치 (420B) 및 제 3 메모리 장치(420C)은 저장 용량(capacity) 또는 레이턴시(latency) 측면에서 서로 다른 특성을 가지는 메모리들일 수 있다.
컨트롤러(410)은 데이터 컨트롤러(data controller, 510), 메모리 컨트롤러들(memory controller, MC, 520A-520C), 및 I/O 인터페이스(530)을 포함할 수 있다.
데이터 컨트롤러(510)은 도 3의 연산 보드들(200)과 다수의 메모리들(420) 사이에서 송수신되는 데이터를 제어할 수 있다. 예를 들어, 라이트 요청 또는 커맨드에 응답하여, 데이터 컨트롤러(510)은 연산 보드들(200)로부터의 라이트를 위한 데이터를 수신하고, 이 데이터를 다수의 메모리들(420) 중에서 해당하는 메모리에 라이트하는 라이트 동작을 제어할 수 있다. 다른 예로, 리드 요청 또는 커맨드에 응답하여, 데이터 컨트롤러(510)은 연산 보드들(200)으로부터 다수의 메모리들(420) 중에서 특정 메모리에 저장된 데이터를 리드하고, 리드 데이터를 연산 보드들(200) 중에서 해당하는 연산 보드로 출력하는 리드 동작을 제어할 수 있다.
메모리 컨트롤러들(520A-520C)는 데이터 컨트롤러(510)과 다수의 메모리들 (420)의 사이에 위치하며, 이들 사이에서의 인터페이싱을 지원할 수 있다. 메모리 컨트롤러들(520)은 다수의 메모리들(420)에 포함되는 제 1 메모리 장치(420A), 제 2 메모리 장치(420B) 및 제 3 메모리 장치 (420C)를 각각에 대응하는 메모리 컨트롤러(iMC0, 520A), 메모리 컨트롤러(iMC1, 520B), 메모리 컨트롤러(iMC2, 520C)를 포함할 수 있다. 메모리 컨트롤러(iMC0, 520A)는 데이터 컨트롤러(510)와 제 1 메모리 장치(420A)의 사이에 위치하며, 이들 사이에서의 데이터 송수신을 지원할 수 있다. 메모리 컨트롤러(iMC1, 520B)는 데이터 컨트롤러(510)과 제 2 메모리 장치(420B)의 사이에 위치하며, 이들 사이에서의 데이터 송수신을 지원할 수 있다. 메모리 컨트롤러(iMC2, 520C)는 데이터 컨트롤러(510)과 제 3 메모리 장치(420C)의 사이에 위치하며, 이들 사이에서의 데이터 송수신을 지원할 수 있다. 예를 들면, 제 3 메모리 장치(420C)가 플래시 메모리인 경우, 메모리 컨트롤러(iMC2, 520C)는 플래시 컨트롤러(flash controller)일 수 있다. 제 1 내지 제 3 메모리 장치(420A 내지 420C)는 설명의 편의를 위한 예시일 뿐이며, 이에 제한되는 것은 아니다.
I/O 인터페이스(530)은 도 3의 상호접속 보드(300)을 통한 데이터 컨트롤러(510)과 연산 보드들(200) 사이에서의 인터페이싱을 지원할 수 있다. I/O 인터페이스(530)는 하나 이상의 유선 또는 유선 통신 기술들과 관련된 프로토콜들을 사용하여, 데이터 컨트롤러(510)으로부터 상호접속 보드(300)으로의 송신 데이터를 출력하고, 상호접속 보드(300)으로부터 데이터 컨트롤러(510)으로의 수신 데이터를 입력할 수 있다. 예를 들어, I/O 인터페이스(530)는 PCIe(Peripheral Component Interconnect Express), QPI(QuickPath Interconnect), 이더넷(Ethernet) 등과 같은 프로토콜들에 따라 데이터 컨트롤러(510)과 상호접속 보드(300) 사이의 통신을 지원할 수 있다. 뿐만 아니라, I/O 인터페이스(530)는 CCIX(Cache Coherent Interconnect for accelerators) 및 GEN-Z와 같은 인터페이스 규격에 따라 데이터 컨트롤러(510)와 상호접속 보드(300) 사이의 통신을 지원할 수 있다.
전술한 바와 같이, 데이터 센터와 같은 서버 시스템 또는 데이터 처리 시스템은 연산 보드들, 메모리 또는 스토리지 보드들 등과 같은 다수의 보드들이 단위 랙 내에서 구별되어 장착되는 구조를 가질 수 있다. 이때 하나의 메모리 보드에는 다양한 사용자 워크로드(user workload)를 충족시키기 위하여 서로 다른 특성을 가지는 다수의 메모리들이 포함될 수 있다. 즉, 하나의 메모리 보드는 DRAM, PCRAM, MRAM, STT-RAM, 플래시 메모리와 같은 다수의 메모리들이 통합된 형태를 가지는 통합 메모리 보드(convergence memory board)일 수 있다. 이러한 통합 메모리 보드는 각 메모리들이 서로 다른 특성을 가지기 때문에 다양한 사용 모델(usage model)에 활용될 수 있다.
도 6a는 본 발명의 실시 예에 따른 메모리 보드(400)의 구성을 나타낸 도면이다. 특히, 도 6a는 데이터 컨트롤러(510)의 구조를 구체적으로 나타낸다.
도 5를 참조하면, 메모리 보드(400)는 컨트롤러(410) 및 복수의 메모리 장치들(420A 내지 420C)을 포함할 수 있다. 나아가, 복수의 메모리 장치들(420A 내지 420C) 각각은 서로 다른 종류의 메모리 장치들일 수 있다. 예를 들면, 복수의 메모리 장치들(420A 내지 420C) 각각은 DRAM, MDS(Managed Dram solution), PCRAM, NAND flash memory 등일 수 있다.
이하에서는, 복수의 메모리 장치들(420A 내지 420C)이 제 1 메모리 장치 내지 제 3 메모리 장치(420A 내지 420C)로 구성되며, 각각의 메모리 장치들은 서로 다른 종류라고 가정한다. 다만, 이는 설명의 편의를 위한 가정일 뿐이며, 이보다 더 많은 서로 다른 종류의 메모리 장치로 구성될 수 있음은 당연하다. 나아가, 제 1 메모리 장치(420A), 제 2 메모리 장치(420B) 및 제 3 메모리 장치(420C) 순서로 데이터 처리 속도가 빠른 메모리 장치라고 가정한다. 반면에, 제 3 메모리 장치(420C), 제 2 메모리 장치(420B) 그리고 제 1 메모리 장치(420A) 순서로 메모리 용량이 큰 메모리 장치라고 가정한다. 그리고, 제 1 메모리 장치(420A)는 휘발성 메모리 장치(volatile memory device)이며, 제 2 메모리 장치(420B) 및 제 3 메모리 장치(420C)는 비휘발성 메모리 장치(non-volatile memory device)라고 가정한다.
컨트롤러(410)는 도 5에서 설명된 바와 같이, 데이터 컨트롤러(510), I/O 인터페이스(530) 및 메모리 컨트롤러(520A 내지 520C)를 포함할 수 있다.
데이터 컨트롤러(510)는 카운터(610), 데이터 관리부(630), 선택부(650) 및 프로세서(670)를 포함할 수 있다.
카운터(610)는 외부로부터 데이터 컨트롤러(510)에 리드 혹은 라이트 요청되는 데이터(이하, 타겟 데이터)에 대응하는 라이트 동작의 횟수에 대한 리드 동작의 횟수의 비율(이하, R/W 비율)을 측정할 수 있다. 구체적으로, 카운터(610)는 타겟 데이터에 대응하는 리드 동작의 횟수 및 라이트 동작에 횟수를 각각 카운트할 수 있으며, 카운트된 리드 동작의 횟수 및 라이트 동작의 횟수로부터 R/W 비율을 측정할 수 있다.
카운터(610)가 타겟 데이터에 대응하는 리드 동작의 횟수를 카운트하는 방법은 다음과 같다. 타겟 데이터에 대한 리드 커맨드는 타겟 데이터에 대한 식별자(ID), 타겟 데이터에 대한 리드 동작을 수행하기 위한 주소 정보 등을 포함할 수 있다. 전달된 타겟 데이터에 대한 리드 커맨드로부터 컨트롤러(410)는 타겟 데이터에 대한 리드 동작이 수행될 것이라는 사실을 알 수 있으며, 카운터(610)는 타겟 데이터에 대한 리드 커맨드에 기초하여 타겟 데이터에 대응하는 리드 동작의 횟수를 카운트할 수 있다. 즉, 한 번의 타겟 데이터에 대한 리드 커맨드가 전달될 때마다, 카운터(610)는 타겟 데이터에 대응하는 리드 동작의 횟수를 1회 증가시킬 수 있다. 동일한 원리로 카운터(610)는 타겟 데이터에 대응하는 라이트 동작의 횟수를 카운트할 수 있다. 그리고, 카운터(610)는 카운트된 리드 동작의 횟수 및 라이트 동작의 횟수로부터 타겟 데이터에 대응하는 R/W 비율을 측정할 수 있다.
다만, 앞서 설명된 리드 동작의 횟수 및 라이트 동작의 횟수를 카운트하는 방법은 하나의 실시 예일뿐이며, 이에 제한되는 것은 아니다.
나아가, 카운터(610)는 카운트된 리드 동작의 횟수 및 라이트 동작의 횟수, 그리고, 측정된 R/W 비율을 타겟 데이터와 대응시켜 저장할 수 있다. 또한, 저장된 리드 동작의 횟수, 라이트 동작의 횟수 및 R/W 비율은 메모리 장치에 타겟 데이터에 대응하는 메타 데이터로 저장될 수 있다.
또한, 카운터(610)는 측정된 타겟 데이터에 대응하는 R/W 비율을 데이터 관리부(630)에 전달할 수 있다.
데이터 관리부(630)는 복수의 메모리 장치들(420A 내지 420C) 각각의 메모리 맵을 생성하여 저장할 수 있다. 즉, 데이터 관리부(630)는 제 1 메모리 장치(420A)의 메모리 맵, 제 2 메모리 장치(420B)의 메모리 맵 및 제 3 메모리 장치(420C)의 메모리 맵 각각을 개별적으로 관리할 수 있다. 또한, 복수의 메모리 장치들(420A 내지 420C) 각각에 저장된 데이터의 이동으로 인한 메모리 맵 변화가 있을 때, 데이터 관리부(630)는 복수의 메모리 장치들(420A 내지 420C) 각각의 메모리 맵을 업데이트할 수 있다.
앞서 설명된 바와 같이, 데이터 관리부(630)는 카운터(610)에서 측정된 타겟 데이터에 대한 R/W 비율을 전달받을 수 있다. 데이터 관리부(630)는 전달받은 타겟 데이터에 대응하는 R/W 비율을 타겟 데이터와 매칭하여 관리할 수 있다.
나아가, 데이터 관리부(630)는 타겟 데이터에 대응하는 메타 데이터를 생성할 수 있다. 메타 데이터는 타겟 데이터가 저장된 메모리 장치의 주소 정보, 타겟 데이터에 대응하는 R/W 비율, 타겟 데이터의 저장완료 여부를 나타낼 수 있다. 예를 들어, 타겟 데이터가 제 1 메모리 장치(420A)에 저장된 경우, 데이터 관리부(630)는 메모리 맵을 참조하여 타겟 데이터가 저장된 제 1 메모리 장치의 주소 정보, 타겟 데이터의 R/W 비율, 제 1 메모리 장치에 타겟 데이터의 저장완료 여부를 나타내는 메타 데이터를 생성할 수 있다.
선택부(650)는 카운터(610)에서 측정된 R/W 비율에 기초하여 타겟 데이터가 저장될 메모리 장치를 선택할 수 있다.
복수의 메모리 장치들(420A 내지 420C) 각각은 타겟 데이터를 저장할 수 있는 임계 값을 각각 가질 수 있다. 예를 들면, 제 1 메모리 장치(420A)는 타겟 데이터의 R/W 비율이 제 1 임계 값보다 크거나 같은 경우에만 타겟 데이터를 저장할 수 있다. 또한, 제 2 메모리 장치(420B)는 타겟 데이터의 R/W 비율이 제 1 임계 값보다는 작지만 제 2 임계 값보다는 크거나 같은 경우에만 타겟 데이터를 저장할 수 있다. 마찬가지로, 제 3 메모리 장치(420C)는 타겟 데이터의 R/W 비율이 제2 임계 값보다 작은 경우에만 타겟 데이터를 저장할 수 있다.
따라서, 선택부(650)는 타겟 데이터의 R/W 비율을 앞서 설명된 임계 값 각각과 비교할 수 있으며, 타겟 데이터가 저장되기 가장 적합한 메모리 장치를 선택할 수 있다.
프로세서(670)는 선택부(650)의 메모리 장치 선택에 기초하여 해당 메모리 장치에 타겟 데이터를 저장할 수 있다. 예를 들면, 제 1 임계 값보다 큰 R/W 비율을 갖는 타겟 데이터에 대하여, 프로세서(670)는 타겟 데이터를 제 1 메모리 장치(420A)에 저장할 수 있다. 또한, 제 3 메모리 장치에 저장된 데이터가 제 1 임계 값보다 작은 접근 시간을 갖는 경우, 프로세서(670)는 해당 타겟 데이터를 제 3 메모리 장치(420C)로부터 리드하여, 제 1 메모리 장치(420A)에 저장할 수 있다. 이때, 데이터 관리부(630)는 주소가 바뀐 데이터에 대한 맵 업데이트를 수행할 수 있다.
나아가, 프로세서(670)는 데이터 관리부(630)에서 생성된 메타 데이터를 타겟 데이터가 저장된 메모리 장치에 저장할 수 있다. 다만, 타겟 데이터가 저장된 메모리 장치가 휘발성 메모리 장치인 경우, 프로세서(670)는 타겟 데이터가 저장된 메모리 장치의 하위 메모리 장치에 메타 데이터를 저장할 수 있다. 예를 들면, 프로세서(670)가 타겟 데이터를 제 1 메모리 장치(420A)에 저장한 경우, 제 1 메모리 장치(420A)는 휘발성 메모리 장치이므로 프로세서(670)는 타겟 데이터에 대응하는 메타 데이터를 제 2 메모리 장치(420B)에 저장할 수 있다. 반면에, 프로세서(670)가 타겟 데이터를 제 2 메모리 장치(420B)에 저장한 경우, 제 2 메모리 장치(420B)는 비휘발성 메모리 장치이므로 프로세서(670)는 타겟 데이터에 대응하는 메타 데이터를 제 2 메모리 장치(420B)에 저장할 수 있다.
또한, 프로세서(670)가 제 2 메모리 장치(420B)에 저장된 데이터를 리드하여 제 1 메모리 장치(420A)로 저장한 경우, 프로세서(670)는 해당 타겟 데이터에 대응하는 메타 데이터를 타겟 데이터와 같이 이동시키는 것이 아니고, 제 2 메모리 장치(420B)에 저장되도록 유지할 수 있다.
비휘발성 메모리 장치의 경우 상기 설명된 바와 같이 타겟 데이터와 메타 데이터를 나누어 서로 다른 메모리 장치에 저장하는 이유는 SPO(Sudden Power Off) 발생 시, 데이터 컨트롤러(510)가 SPOR(Sudden Power Off Recovery)동작을 원활하게 수행할 수 있도록 하기 위해서이다. 만약, 데이터 컨트롤러(410)에 포함되어 있는 휘발성 메모리 장치(420A)와 인터페이싱 할 수 있는 인터페이스 유닛(520A)이 NVD(non-volatile DIMM)인 경우, SPO가 발생하더라도 인터페이스 유닛(520A)의 전원이 잠시 동안 유지될 수 있다. 그 결과, SPO 발생 시, 휘발성 메모리 장치(420A)의 전원이 잠시동안 유지될 수 있다. 다만, 휘발성 메모리 장치(420A)에 저장된 데이터가 저장이 완료된 데이터 인지 아니면 저장이 진행되던 데이터인지 여부를 확인될 수 없다. 이때, 프로세서(670)는 타겟 데이터의 저장 완료 여부를 확인하기 위하여 휘발성 메모리(420A)의 하위 메모리 장치(420B)에 저장된 메타 데이터를 리드하여 타겟 데이터의 저장 완료여부를 확인할 수 있다. 만약, 타겟 데이터가 저장 완료되지 않았다면, 해당 타겟 데이터는 불완전한 데이터이므로 데이터 컨트롤러(410)는 해당 타겟 데이터에 대한 SPOR 동작을 수행할 수 있다. 나아가, 데이터 관리부(630)는 SPO발생 시 소멸된 메모리 맵을 메타 데이터에 기초하여 복구할 수 있다.
도 6b는 본 발명의 구체적인 실시 예에 따른 메모리 보드의 구성을 나타낸 도면이다. 구체적으로, 도 6a를 참조하면, DRAM(690A)는 제 1 메모리 장치(420A)와 대응될 수 있다. PCRAM(690B)는 제 2 메모리 장치(420B)와 대응될 수 있으며, NAND(690C)는 제 3 메모리 장치(420C)와 대응될 수 있다. 다만, 이와 같은 실시 예는 하나의 예에 불과하며, 이에 제한되는 것은 아니다.
DRAM(690A)는 메모리 특성상 PCRAM(690B) 및 NAND(690C)보다 빠르게 데이터를 처리할 수 있는 반면에, 작은 메모리 용량을 갖고 있다. 따라서, DRAM(690A)은 R/W 비율이 높은 데이터 혹은 빠른 처리를 요하는 데이터를 처리하기에 적합한 메모리 장치이다.
NAND(690C)는 메모리 특성상 PCRAM(690B) 및 DRAM(690A)보다 느리게 데이터를 처리할 수 있는 반면에, 큰 메모리 용량을 갖고 있다. 따라서, NAND(690C)는 R/W 비율이 낮은 데이터 혹은 빠른 처리를 요하지 않는 데이터를 처리하기에 적합한 메모리 장치이다.
PCRAM(690B)는 메모리 특성상 DRAM(690A)과 NAND(690C)의 중간 성질을 갖고 있으므로, DRAM(690A)과 NAND(690C)의 중간역할을 할 수 있는 메모리 장치이다.
도 6a를 참조하면, 데이터 관리부(630)는 DRAM(690A), PCRAM(690B) 및 NAND(690C)의 메모리 맵 각각을 생성 및 저장할 수 있다. 또한, 앞서 설명된 바와 같이, 데이터 관리부(630)는 메모리 장치들(690A 내지 690C) 각각의 메모리 맵을 개별적으로 업데이트할 수 있다.
또한, 선택부(650)는 메모리 장치들(690A 내지 690C) 중 타겟 데이터가 저장될 메모리 장치를 선택할 수 있다. 예를 들면, 타겟 데이터의 R/W 비율이 제 1 임계 값보다 크거나 같은 경우에는, 선택부(650)는 DRAM(690A)에 타겟 데이터를 저장할 수 있다. 즉, 도 6a에서 설명된 원리와 동일하게 선택부(650)는 메모리 장치를 타겟 데이터의 특성에 따라 선택할 수 있다.
나아가, 프로세서(670)는 선택된 메모리 장치에 타겟 데이터를 저장할 수 있으며, 타겟 데이터에 대응하는 메타 데이터를 도 6a에서 설명된 기준에 따른 해당 메모리 장치에 저장할 수 있다.
도 7은 본 발명의 실시 예에 따른 데이터 컨트롤러(410)의 동작을 나타낸 흐름도이다. 구체적으로 도 7은 데이터 컨트롤러(410)가 타겟 데이터의 특성을 판단하고, 타겟 데이터를 저장하기에 적합한 메모리 장치를 검색하여, 타겟 데이터를 저장하는 과정을 나타낸다. 이때, 타겟 데이터는 라이트 데이터라고 가정한다. 설명의 편의를 위하여, 데이터 관리부(630)는 이미 메모리 장치를 각각의 메모리 맵을 저장하고 있다고 가정한다. 설명의 편의를 위하여 도 6a를 참조하여 데이터 컨트롤러(410)의 동작이 설명된다. 도 6a를 참조하면, 제 1 메모리 장치(420A)는 휘발성 메모리 장치이고, 제 2 메모리 장치(420B) 및 제 3 메모리 장치(420C)는 비휘발성 메모리 장치이다.
단계 S701에서, 카운터(610)는 타겟 데이터의 R/W 비율 측정할 수 있다.
그 후, 선택부(650)는 타겟 데이터의 R/W 비율에 기초하여 타겟 데이터를 저장할 메모리 장치를 선택할 수 있다.
먼저, 단계 S703에서, 선택부(650)는 타겟 데이터의 R/W 비율을 제 1 메모리 장치(420A)의 제 1 임계 값과 비교할 수 있다.
만약, 타겟 데이터의 R/W 비율이 제 1 임계 값보다 크거나 같은 경우(단계 S703에서 'Y'), 단계 S705에서, 선택부(650)는 타겟 데이터를 저장할 메모리 장치로 제 1 메모리 장치(420A)를 선택할 수 있다.
단계 S707에서, 프로세서(670)는 타겟 데이터를 제 1 메모리 장치(420A)에 저장할 수 있다.
그리고, 단계 S709에서, 데이터 관리부(630)는 타겟 데이터가 저장될 제 1 메모리 장치(420A)의 주소 정보, 타겟 데이터 R/W 비율 및 저장 완료 여부를 나타내는 메타 데이터를 생성할 수 있다. 다만, 메타 데이터를 생성하는 시점은 설명의 편의를 위하여 단계 S709에 위치시킨 것이며, 이에 제한되는 것은 아니다. 예를 들면, 데이터 관리부(630)는 타겟 데이터에 대응하는 메타 데이터를 도 7에 설명되는 동작 이전에 생성할 수 있으며, 데이터 컨트롤러(410)가 주소 정보를 인지한 시점, R/W 비율을 측정한 시점, 타겟 데이터의 저장이 완료된 시점마다 데이터 관리부(630)는 메타 데이터를 업데이트할 수 있다.
그리고 나서, 단계 S711에서, 프로세서(670)는 생성된 메타 데이터를 제 2 메모리 장치(420B)에 저장할 수 있다. 도 6a에서 설명된 바와 같이, 제 1 메모리 장치(420A)가 휘발성 메모리 장치이므로, 프로세서(670)는 제 1 메모리 장치(420A)에 저장된 타겟 데이터에 대응하는 메타 데이터를 제 2 메모리 장치(420B)에 저장할 수 있다.
그 후, 단계 S731에서, 데이터 관리부(630)는 제 1 메모리 장치(420A)에 저장된 타겟 데이터에 대한 정보를 반영하기 위하여 메모리 맵을 업데이트할 수 있다.
반면에, 타겟 데이터의 R/W 비율이 제 1 임계 값보다 작은 경우(단계 S703에서 'N'), 단계 S713에서, 선택부(650)는 타겟 데이터의 R/W 비율을 제 2 임계 값과 비교할 수 있다.
만약, 타겟 데이터의 R/W 비율이 제 2 임계 값보다 크거나 같은 경우(단계 S713에서 'Y'), 단계 S715에서, 선택부(650) 타겟 데이터를 저장한 메모리 장치로 제 2 메모리 장치(420B)를 선택할 수 있다.
단계 S717에서, 프로세서(670)는 타겟 데이터를 제 2 메모리 장치(420B)에 저장할 수 있다.
그리고, 단계 S719에서, 데이터 관리부(630)는 타겟 데이터가 저장될 제 2 메모리 장치(420B)의 주소 정보, 타겟 데이터 R/W 비율 및 저장 완료 여부를 나타내는 메타 데이터를 생성할 수 있다. 앞서 설명된 바와 같이, 메타 데이터를 생성하는 시점은 설명의 편의를 위한 것이다.
그리고 나서, 단계 S721에서, 프로세서(670)는 생성된 메타 데이터를 제 2 메모리 장치(420B)에 저장할 수 있다. 도 6a에서 설명된 바와 같이, 제 2 메모리 장치(420B)가 비휘발성 메모리 장치이므로, 프로세서(670)는 제 2 메모리 장치(420B)에 저장된 타겟 데이터에 대응하는 메타 데이터를 제 2 메모리 장치(420B)에 저장할 수 있다.
그 후, 단계 S731에서, 데이터 관리부(630)는 제 2 메모리 장치(420B)에 저장된 타겟 데이터에 대한 정보를 반영하기 위하여 메모리 맵을 업데이트할 수 있다.
반면에, 타겟 데이터의 R/W 비율이 제 1 임계 값보다 작은 경우(단계 S703에서 'N'), 단계 S723에서, 선택부(650)는 타겟 데이터를 저장한 메모리 장치로 제 3 메모리 장치(420C)를 선택할 수 있다.
단계 S725에서, 프로세서(670)는 타겟 데이터를 제 3 메모리 장치(420C)에 저장할 수 있다.
그리고, 단계 S727에서, 데이터 관리부(630)는 타겟 데이터가 저장될 제 3 메모리 장치(420C)의 주소 정보, 타겟 데이터 R/W 비율 및 저장 완료 여부를 나타내는 메타 데이터를 생성할 수 있다. 앞서 설명된 바와 같이, 메타 데이터를 생성하는 시점은 설명의 편의를 위한 것이다.
그리고 나서, 단계 S729에서, 프로세서(670)는 생성된 메타 데이터를 제 3 메모리 장치(420C)에 저장할 수 있다. 도 6a에서 설명된 바와 같이, 제 3 메모리 장치(420C)가 비휘발성 메모리 장치이므로, 프로세서(670)는 제 3 메모리 장치(420C)에 저장된 타겟 데이터에 대응하는 메타 데이터를 제 3 메모리 장치(420C)에 저장할 수 있다.
그 후, 단계 S731에서, 데이터 관리부(630)는 제 3 메모리 장치(420C)에 저장된 타겟 데이터에 대한 정보를 반영하기 위하여 메모리 맵을 업데이트할 수 있다.
도 8은 본 발명의 다른 실시 예에 따른 데이터 컨트롤러(410)의 동작을 나타낸 흐름도이다. 구체적으로, 도 8은 타겟 데이터가 리드 데이터인 경우, 데이터 컨트롤러(410)의 동작을 나타낸 흐름도이다.
먼저, 단계 S801에서, 데이터 관리부(630)는 선택된 메모리 장치의 메모리 맵을 확인할 수 있다. 즉, 데이터 관리부(630)는 타겟 데이터의 주소 정보를 확인할 수 있다.
그 후, 단계 S803에서 프로세서(410)는 타겟 데이터를 선택된 메모리 장치에서 리드할 수 있다.
그 후, 단계 S805에서, 데이터 관리부(630)는 타겟 데이터가 저장될 메모리 장치의 변경이 필요한지 판단할 수 있다. 예를 들면, 타겟 데이터가 제 3 메모리 장치(420C)에 저장되어 있는 경우, 타겟 데이터에 대한 리드 비율이 높아져 타겟 데이터에 대한 R/W 비율이 제 2 임계 값보다 커졌다면, 타겟 데이터는 제 3 메모리 장치(420C)에서 제 2 메모리 장치(420B)로 저장될 메모리 장치를 변경이 필요할 수 있다.
만약, 타겟 데이터가 저장될 메모리 장치의 변경이 필요한 경우라면(단계 S805에서, 'Y'), 단계 S807에서, 데이터 컨트롤러(410)는 단계 S703 내지 S731을 수행할 수 있다.
반면에, 타겟 데이터가 저장될 메모리 장치의 변경이 필요하지 않은 경우라면(단계 S805에서, 'N'), 데이터 컨트롤러(410)는 타겟 데이터가 저장된 메모리 장치를 변경하지 않고 유지할 수 있다.
도 6a를 참조하면, 제 1 메모리 보드(400A)의 데이터 컨트롤러(510A)는 타겟 데이터의 특성, 즉, 타겟 데이터의 R/W 비율에 따라서 타겟 데이터를 저장하기에 적합한 메모리 장치를 선택하고, 선택된 메모리 장치에 타겟 데이터를 저장할 수 있다. 예를 들면, 타겟 데이터의 R/W 비율을 복수의 메모리 장치들(420A 내지 420C) 각각의 임계 값과 비교하여, 데이터 컨트롤러(510A)는 빠른 데이터 처리를 요하는 경우에는 제 1 메모리 장치에 저장할 수 있고, 빠른 데이터 처리를 요하지 않는 경우에는 제 3 메모리 장치(420C)에 저장할 수 있다. 다만, 데이터 컨트롤러(510A)는 제 3 메모리 장치(420C)의 임계 값과는 비교하지 않았다. 이하에서는, 도 6a에서 설명된 데이터 처리 동작을 확장시켜 적용된 컴퓨팅 시스템(900)이 도 9를 통하여 설명된다.
도 9는 본 발명의 일 실시 예에 따른 컴퓨팅 시스템(900)의 구조를 개략적으로 나타낸 도면이다.
컴퓨팅 시스템(900)은 메모리 보드 관리부(Memory board Management, 이하, MMU, 910) 및 복수의 메모리 보드(400A 및 400B)를 포함할 수 있다. MMU(910)는 도 2 내지 도 4에서 설명된 복수의 연산 보드(200) 및 상호접속 보드(300)와 대응될 수 있다. 비록 도면에 2개의 메모리 보드(400A 및 400B)가 도시되어 있으며, 제 2 메모리 보드(400B)는 한 종류의 메모리 장치(420D)를 포함하고 있으나, 이는 설명의 편의를 위한 일 실시 예일 뿐이며, 이에 제한되는 것은 아니다. 도 6a를 참조하여, 제 1 메모리 장치(420A)는 DRAM, 제 2 메모리 장치(420B)는 PCRAM 그리고 제 3 메모리 장치(420C)는 NAND라고 가정하며, 나아가, 제 4 메모리 장치는 HDD라고 가정한다.
도 6a를 참조하면, 제 1 메모리 보드(400A) 및 제 2 메모리 보드(400B)는 메모리 보드(400)와 대응될 수 있으며, 각각의 메모리 보드에 포함된 구성요소들 역시 각각 대응될 수 있다. 예를 들면, 제 1 데이터 컨트롤러(510A) 및 제 2 데이터 컨트롤러(510B)는 데이터 컨트롤러(510)와 대응될 수 있다.
MMU(910)는 복수의 메모리 보드(400A 및 400B)의 메모리 장치 구성에 대한 정보를 관리할 수 있다. 구체적으로, MMU(910)는 제 1 메모리 보드(400A)에 제 1 메모리 장치 내지 제 3 메모리 장치(420A 내지 420C)가 포함된 것을 알 수 있으며, 제 2 메모리 보드(400B)에 제 4 메모리 장치(420D)가 포함된 것을 알 수 있다.
나아가, MMU(910)는 복수의 메모리 보드(400A 및 400B) 각각과 통신할 수 있다. 따라서, MMU(910)는 제 1 메모리 보드(400A) 및 제 2 메모리 보드(400B) 각각에 데이터를 전달할 수 있으며, 데이터를 전달받을 수도 있다. 또한, MMU(910)는 제 1 메모리 보드(400A)로부터 전달받은 데이터를 제 2 메모리 보드(400B)로 전달할 수 있다.
도 6a를 참조하면, 제 1 메모리 보드(400A)의 제 1 데이터 컨트롤러(510A)는 타겟 데이터의 특성에 따라 타겟 데이터를 해당 메모리 장치에 저장할 수 있다. 앞서 설명된 바와 같이, 제 1 데이터 컨트롤러(510A)는 타겟 데이터에 대한 R/W비율을 측정하여, 제 1 메모리 장치(420A)의 제 1 임계 값 및 제 2 메모리 장치(420B)의 제 2 임계 값과 측정된 R/W비율을 비교하여 타겟 데이터가 저장될 메모리 장치를 선택할 수 있다. 나아가, 제 1 데이터 컨트롤러(510A)는 제 3 메모리 장치(420C)의 제 3 임계 값과 상기 측정된 R/W 비율을 비교할 수 있다. 만약, 타겟 데이터에 대한 R/W 비율이 제 2 임계 값보다 작고, 제 3 임계 값보다 크거나 같은 경우, 제 1 데이터 컨트롤러(510A)는 타겟 데이터를 제 3 메모리 장치(420C)에 저장할 수 있다. 반면에, 타겟 데이터에 대한 R/W 비율이 제 3 임계 값보다 작은 경우, 제 1 데이터 컨트롤러(510A)는 타겟 데이터를 제 1 I/O 인테페이스(530A)를 통하여 MMU(910)에 전달할 수 있다. MMU(910)는 복수의 메모리 보드(400A 및 400B)에 포함된 복수의 메모리 장치들(420A 내지 420D) 각각의 특징을 알고 있기 때문에, 제 1 메모리 보드(400A)로부터 전달받은 타겟 데이터를 제 2 메모리 보드(400B)에게 전달할 수 있다. 제 2 메모리 보드(400B)는 MMU(910)로부터 타겟 데이터를 전달받을 수 있다. 제 2 데이터 컨트롤러(510B)는 제 2 I/O 인터페이스(530B)를 통하여 타겟 데이터를 전달받을 수 있다. 또한, 제 2 데이터 컨트롤러(510B)는 제 4 메모리 장치(420D)에 타겟 데이터를 저장할 수 있다. 동일한 원리로, 제 2 데이터 컨트롤러(510B)는 타겟 데이터의 메타 데이터도 제 4 메모리 장치(420D)에 저장할 수 있다.
또한, 제 4 메모리 장치(420D)에 저장된 타겟 데이터의 R/W 비율이 증가한 경우, 제 2 데이터 컨트롤러(510B)는 타겟 데이터를 리드할 수 있다. 그리고 제 2 데이터 컨트롤러(510B)는 타겟 데이터를 제 2 I/O 인터페이스(530B)를 통하여 MMU(910)에 전달할 수 있다. MMU(910)는 제 2 메모리 보드(400B)로부터 전달받은 타겟 데이터를 제 1 메모리 보드(400A)에게 전달할 수 있다. 제 1 데이터 컨트롤러(510A)는 타겟 데이터를 제 1 I/O 인터페이스(530A)를 통하여 전달받을 수 있다. 그리고 나서, 도 6a에 설명된 동작과 동일하게 제 1 데이터 컨트롤러(510A)는 타겟 데이터에 대한 R/W 비율에 기초하여 해당 메모리 장치에 타겟 데이터를 저장할 수 있다. 동일한 원리로, 제 1 데이터 컨트롤러(510A)는 타겟 데이터의 메타 데이터를 해당 메모리 장치에 저장할 수 있다.
앞서 설명된 바와 같이, 본 발명의 일 실시 예에 따른 데이터 컨트롤러(410) 및 컴퓨팅 시스템(900)은 데이터 특성에 따라 데이터가 저장될 메모리 장치를 선택하여 저장함으로써, 데이터를 효율적으로 처리할 수 있다. 즉, 본 발명의 일 실시 예에 따른 데이터 컨트롤러(410) 및 컴퓨팅 시스템(900)은 빠른 처리를 요하는 데이터가 저장되는 메모리 장치 및 상대적으로 빠른 처리를 요하지 않는 데이터가 저장되는 메모리 장치를 분류하여 효율적으로 데이터를 처리할 수 있다. 그 결과, 전체적인 시스템의 성능이 향상될 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.

Claims (20)

  1. 서로 다른 종류인 복수의 메모리 장치들; 및
    타겟 데이터의 R/W 비율을 측정하는 카운터,
    상기 타겟 데이터의 R/W 비율을 상기 복수의 메모리 장치들 각각의 임계 값과 비교하여 상기 타겟 데이터가 저장될 메모리 장치를 선택하는 선택부, 및
    상기 선택된 메모리 장치에 상기 타겟 데이터를 저장하는 프로세서
    를 포함하는 컨트롤러 메모리 시스템.
  2. 제 1 항에 있어서,
    상기 복수의 메모리 장치들이 제 1 메모리 장치, 제 2 메모리 장치 및 제 3 메모리 장치를 포함할 때,
    상기 선택부는 상기 타겟 데이터의 R/W 비율을 상기 제 1 메모리 장치에 대응하는 제 1 임계 값과 비교하고, 상기 제 1 임계 값보다 상기 R/W 비율이 크거나 같은 경우 상기 타겟 데이터가 저장될 메모리 장치로 상기 제 1 메모리 장치를 선택하는
    메모리 시스템.
  3. 제 2 항에 있어서,
    상기 R/W 비율이 상기 제 1 임계 값보다 작은 경우,
    상기 선택부는 상기 R/W 비율을 상기 제 2 메모리 장치에 대응하는 제 2 임계 값과 비교하고, 상기 제 2 임계 값보다 상기 R/W 비율이 크거나 같은 경우, 상기 타겟 데이터가 저장될 메모리 장치로 상기 제 2 메모리 장치를 선택하는
    메모리 시스템.
  4. 제 3 항에 있어서,
    상기 R/W 비율이 상기 제 2 임계 값보다 작은 경우,
    상기 선택부는 상기 타겟 데이터가 저장될 메모리 장치로 상기 제 3 메모리 장치를 선택하는
    메모리 시스템.
  5. 제 1 항에 있어서,
    상기 컨트롤러는
    상기 복수의 메모리 장치들 각각의 메모리 맵을 저장하는 데이터 관리부를
    더 포함하는 메모리 시스템.
  6. 제 5 항에 있어서,
    상기 데이터 관리부는
    상기 타겟 데이터에 대응하는 메타 데이터를 생성하고,
    상기 메타 데이터는
    상기 타겟 데이터가 저장된 메모리 장치의 주소 정보, 상기 타겟 데이터의 R/W 비율 및 상기 타겟 데이터의 저장 완료 여부를 나타내는
    메모리 시스템.
  7. 제 6 항에 있어서,
    상기 복수의 메모리 장치가 휘발성 메모리 장치와 비휘발성 메모리 장치가 혼합되어 구성되고, 상기 타겟 데이터가 저장된 메모리 장치가 휘발성 메모리 장치인 경우,
    상기 프로세서는
    상기 타겟 데이터에 대응하는 상기 메타 데이터를 상기 비휘발성 메모리 장치에 저장하는
    메모리 시스템.
  8. 서로 다른 종류의 복수의 메모리 장치들 및 상기 복수의 메모리 장치들 각각을 제어하는 컨트롤러를 포함하는 메모리 시스템의 동작방법에 있어서,
    타겟 데이터의 R/W 비율을 측정하는 단계;
    상기 타겟 데이터의 R/W 비율을 상기 복수의 메모리 장치들 각각의 임계 값과 비교하여 상기 타겟 데이터가 저장될 메모리 장치를 선택하는 단계; 및
    상기 선택된 메모리 장치에 상기 타겟 데이터를 저장하는 단계
    를 포함하는 메모리 시스템의 동작방법.
  9. 제 8 항에 있어서,
    상기 복수의 메모리 장치들이 제 1 메모리 장치, 제 2 메모리 장치 및 제 3 메모리 장치를 포함할 때,
    상기 메모리 장치를 선택하는 단계는 상기 타겟 데이터의 R/W 비율을 상기 제 1 메모리 장치에 대응하는 제 1 임계 값과 비교하고, 상기 제 1 임계 값보다 상기 R/W 비율이 크거나 같은 경우 상기 타겟 데이터가 저장될 메모리 장치로 상기 제 1 메모리 장치를 선택하는
    메모리 시스템의 동작방법.
  10. 제 9 항에 있어서,
    상기 R/W 비율이 상기 제 1 임계 값보다 작은 경우,
    상기 메모리 장치를 선택하는 단계는 상기 R/W 비율을 상기 제 2 메모리 장치에 대응하는 제 2 임계 값과 비교하고, 상기 제 2 임계 값보다 상기 R/W 비율이 크거나 같은 경우, 상기 타겟 데이터가 저장될 메모리 장치로 상기 제 2 메모리 장치를 선택하는
    메모리 시스템의 동작방법.
  11. 제 10 항에 있어서,
    상기 R/W 비율이 상기 제 2 임계 값보다 작은 경우,
    상기 메모리 장치를 선택하는 단계는 상기 타겟 데이터가 저장될 메모리 장치로 상기 제 3 메모리 장치를 선택하는
    메모리 시스템의 동작방법.
  12. 제 8 항에 있어서,
    상기 복수의 메모리 장치들 각각의 메모리 맵을 저장하는 단계
    를 더 포함하는 메모리 시스템의 동작방법.
  13. 제 12 항에 있어서,
    상기 타겟 데이터에 대응하는 메타 데이터를 생성하는 단계
    를 더 포함하며,
    상기 메타 데이터는
    상기 타겟 데이터가 저장된 메모리 장치의 주소 정보, 상기 타겟 데이터의 R/W 비율 및 상기 타겟 데이터의 저장 완료 여부를 나타내는
    메모리 시스템의 동작방법.
  14. 제 13 항에 있어서,
    상기 복수의 메모리 장치가 휘발성 메모리 장치와 비휘발성 메모리 장치가 혼합되어 구성되고, 상기 타겟 데이터가 저장된 메모리 장치가 휘발성 메모리 장치인 경우,
    상기 타겟 데이터에 대응하는 상기 메타 데이터를 상기 비휘발성 메모리 장치에 저장하는 단계
    를 더 포함하는 메모리 시스템의 동작방법.
  15. 컴퓨팅 시스템에 있어서,
    서로 종류가 상이한 복수의 메모리 장치들 및
    상기 복수의 메모리 장치들 각각을 제어하는 제 1 컨트롤러
    를 포함하는 제 1 메모리 시스템;
    상기 제 1 메모리 시스템에 포함된 복수의 메모리 장치들과 종류가 상이한 메모리 장치 및
    상기 메모리 장치를 제어하는 제 2 컨트롤러
    를 포함하는 제 2 메모리 시스템; 및
    상기 제 1 메모리 시스템 및 상기 제 2 메모리 시스템 각각과 데이터 통신하는 메모리 시스템 관리부
    를 포함하고,
    상기 제 1 컨트롤러 및 제 2 컨트롤러는
    상기 MMU로부터 전달받은 타겟 데이터의 R/W 비율을 측정하고, 상기 타겟 데이터의 R/W 비율을 제 1 메모리 시스템 및 제 2 메모리 시스템 각각에 포함된 상기 복수의 메모리 장치들 각각의 임계 값과 비교하여 상기 타겟 데이터가 저장될 메모리 장치를 선택하며, 상기 선택된 메모리 장치에 상기 타겟 데이터를 저장하는
    컴퓨팅 시스템.
  16. 제 15 항에 있어서,
    상기 복수의 메모리 장치들이 제 1 메모리 장치, 제 2 메모리 장치 및 제 3 메모리 장치를 포함할 때,
    상기 제 1 컨트롤러는 상기 타겟 데이터의 R/W 비율을 상기 제 1 메모리 장치에 대응하는 제 1 임계 값과 비교하고, 상기 제 1 임계 값보다 상기 R/W 비율이 크거나 같은 경우 상기 타겟 데이터가 저장될 메모리 장치로 상기 제 1 메모리 장치를 선택하는
    컴퓨팅 시스템.
  17. 제 15 항에 있어서,
    상기 R/W 비율이 상기 제 1 임계 값보다 작은 경우,
    상기 제 1 컨트롤러는 상기 R/W 비율을 상기 제 2 메모리 장치에 대응하는 제 2 임계 값과 비교하고, 상기 제 2 임계 값보다 상기 R/W 비율이 크거나 같은 경우, 상기 타겟 데이터가 저장될 메모리 장치로 상기 제 2 메모리 장치를 선택하는
    컴퓨팅 시스템.
  18. 제 16 항에 있어서,
    상기 R/W 비율이 상기 제 2 임계 값보다 작은 경우,
    상기 제 1 컨트롤러는 상기 R/W 비율을 상기 제 3 메모리 장치에 대응하는 제 3 임계 값과 비교하고, 상기 제 3 임계 값보다 상기 R/W 비율이 크거나 같은 경우, 타겟 데이터가 저장될 메모리 장치로 상기 제 3 메모리 장치를 선택하는
    컴퓨팅 시스템.
  19. 제 18 항에 있어서,
    상기 R/W 비율이 상기 제 3 임계 값보다 작은 경우,
    상기 제 1 컨트롤러는 상기 타겟 데이터를 상기 MMU로 전달하고,
    상기 MMU는 전달받은 상기 타겟 데이터를 제 2 컨트롤러로 전달하며,
    상기 제 2 컨트롤러는 상기 제 4 메모리 장치에 상기 타겟 데이터를 저장하는
    컴퓨팅 시스템.
  20. 제 19 항에 있어서,
    상기 제 4 메모리 장치에 저장된 상기 타겟 데이터의 R/W 비율이 제 1 임계 값 혹은 제 2 임계 값 혹은 제 3 임계 값보다 커진 경우,
    상기 제 2 컨트롤러는 상기 타겟 데이터를 상기 MMU 로 전달하고,
    상기 MMU는 전달받은 상기 타겟 데이터를 제 1 컨트롤러로 전달하며,
    상기 제 1 컨트롤러는 상기 타겟 데이터를 해당 메모리 장치에 저장하는
    컴퓨팅 시스템.
KR1020180036122A 2018-03-28 2018-03-28 메모리 시스템, 그것의 동작방법 및 메모리 시스템을 포함하는 컴퓨팅 시스템 KR20190113437A (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020180036122A KR20190113437A (ko) 2018-03-28 2018-03-28 메모리 시스템, 그것의 동작방법 및 메모리 시스템을 포함하는 컴퓨팅 시스템
TW108100119A TWI795505B (zh) 2018-03-28 2019-01-02 記憶體系統、其操作方法和包括該記憶體系統的計算系統
US16/238,726 US10754570B2 (en) 2018-03-28 2019-01-03 Memory system, operating method thereof and computing system for classifying data according to read and write counts and storing the classified data in a plurality of types of memory devices
JP2019000540A JP7368942B2 (ja) 2018-03-28 2019-01-07 メモリシステムを含むコンピュータシステム
CN201910085149.7A CN110321071B (zh) 2018-03-28 2019-01-29 存储器系统、其操作方法和包括该存储器系统的计算系统
US16/932,157 US20200348871A1 (en) 2018-03-28 2020-07-17 Memory system, operating method thereof and computing system for classifying data according to read and write counts and storing the classified data in a plurality of types of memory devices

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180036122A KR20190113437A (ko) 2018-03-28 2018-03-28 메모리 시스템, 그것의 동작방법 및 메모리 시스템을 포함하는 컴퓨팅 시스템

Publications (1)

Publication Number Publication Date
KR20190113437A true KR20190113437A (ko) 2019-10-08

Family

ID=68054382

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180036122A KR20190113437A (ko) 2018-03-28 2018-03-28 메모리 시스템, 그것의 동작방법 및 메모리 시스템을 포함하는 컴퓨팅 시스템

Country Status (5)

Country Link
US (2) US10754570B2 (ko)
JP (1) JP7368942B2 (ko)
KR (1) KR20190113437A (ko)
CN (1) CN110321071B (ko)
TW (1) TWI795505B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220269443A1 (en) * 2021-02-24 2022-08-25 Silicon Motion, Inc. Data Storage Device and Non-Volatile Memory Control Method

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021052353A (ja) 2019-09-26 2021-04-01 日本電気株式会社 送信側中継装置、システム、方法、及びプログラム
US11520488B2 (en) * 2020-04-22 2022-12-06 Dell Products, L.P. Method and apparatus for identifying a device missing from a consistency group

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4933861B2 (ja) 2005-09-22 2012-05-16 株式会社日立製作所 ストレージ制御装置、データ管理システムおよびデータ管理方法
US8341300B1 (en) * 2007-08-30 2012-12-25 Virident Systems, Inc. Systems for sustained read and write performance with non-volatile memory
KR101464338B1 (ko) 2007-10-25 2014-11-25 삼성전자주식회사 불휘발성 메모리 장치를 이용한 데이터 저장장치, 메모리시스템, 그리고 컴퓨터 시스템
US7801994B2 (en) * 2007-11-29 2010-09-21 Hitachi, Ltd. Method and apparatus for locating candidate data centers for application migration
JP2011128792A (ja) 2009-12-16 2011-06-30 Toshiba Corp メモリ管理装置
US8230123B2 (en) * 2010-08-23 2012-07-24 International Business Machines Corporation Using information on input/output (I/O) sizes of accesses to an extent to determine a type of storage device for the extent
JP2012094030A (ja) 2010-10-28 2012-05-17 Hitachi Ltd 計算機システム及び処理制御方法
US8773904B2 (en) * 2011-12-28 2014-07-08 Apple Inc. Optimized threshold search in analog memory cells
KR101999132B1 (ko) 2012-12-17 2019-10-01 삼성전자주식회사 가상 머신 환경에서 메모리 관리 방법 및 장치
US9792227B2 (en) 2014-08-19 2017-10-17 Samsung Electronics Co., Ltd. Heterogeneous unified memory
US20170075812A1 (en) * 2015-09-16 2017-03-16 Intel Corporation Technologies for managing a dynamic read cache of a solid state drive
KR102491651B1 (ko) * 2015-12-14 2023-01-26 삼성전자주식회사 비휘발성 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 동작 방법
KR102435873B1 (ko) * 2015-12-18 2022-08-25 삼성전자주식회사 스토리지 장치 및 그것의 리드 리클레임 방법
KR20170099437A (ko) 2016-02-23 2017-09-01 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
JP2018032323A (ja) * 2016-08-26 2018-03-01 株式会社東芝 記憶装置、メモリic、および、メモリicへのライト処理方法
TWI602061B (zh) * 2017-03-16 2017-10-11 群聯電子股份有限公司 資料寫入方法、記憶體儲存裝置與記憶體控制電路單元
KR102394695B1 (ko) 2017-11-08 2022-05-10 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220269443A1 (en) * 2021-02-24 2022-08-25 Silicon Motion, Inc. Data Storage Device and Non-Volatile Memory Control Method
US11875058B2 (en) * 2021-02-24 2024-01-16 Silicon Motion, Inc. Data storage device and non-volatile memory control method

Also Published As

Publication number Publication date
TWI795505B (zh) 2023-03-11
US20190303032A1 (en) 2019-10-03
TW201942750A (zh) 2019-11-01
CN110321071B (zh) 2023-07-04
CN110321071A (zh) 2019-10-11
JP7368942B2 (ja) 2023-10-25
JP2019175433A (ja) 2019-10-10
US10754570B2 (en) 2020-08-25
US20200348871A1 (en) 2020-11-05

Similar Documents

Publication Publication Date Title
KR102414047B1 (ko) 통합 메모리 디바이스 및 그의 동작 방법
US11636014B2 (en) Memory system and data processing system including the same
JP7449063B2 (ja) メモリシステム及びメモリシステムの動作方法
JP7368942B2 (ja) メモリシステムを含むコンピュータシステム
US11461024B2 (en) Computing system and operating method thereof
KR20210006664A (ko) 메모리 시스템 및 그것의 동작방법
US11221931B2 (en) Memory system and data processing system
KR102394695B1 (ko) 메모리 시스템 및 그것의 동작방법
KR102433549B1 (ko) 통합 메모리 디바이스 및 그의 동작 방법
KR102586741B1 (ko) 메모리 시스템 및 그것의 동작방법
US20190129483A1 (en) Computing device and operation method thereof

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
E90F Notification of reason for final refusal
X601 Decision of rejection after re-examination