KR102684940B1 - 데이터 처리 시스템 - Google Patents

데이터 처리 시스템 Download PDF

Info

Publication number
KR102684940B1
KR102684940B1 KR1020180144288A KR20180144288A KR102684940B1 KR 102684940 B1 KR102684940 B1 KR 102684940B1 KR 1020180144288 A KR1020180144288 A KR 1020180144288A KR 20180144288 A KR20180144288 A KR 20180144288A KR 102684940 B1 KR102684940 B1 KR 102684940B1
Authority
KR
South Korea
Prior art keywords
data
memory
memories
blade
data processing
Prior art date
Application number
KR1020180144288A
Other languages
English (en)
Other versions
KR20200059493A (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 KR1020180144288A priority Critical patent/KR102684940B1/ko
Priority to US16/288,015 priority patent/US10860498B2/en
Priority to CN201910197794.8A priority patent/CN111209227B/zh
Priority to TW108109647A priority patent/TW202020674A/zh
Priority to JP2019059544A priority patent/JP2020087409A/ja
Priority to US16/860,850 priority patent/US11544063B2/en
Publication of KR20200059493A publication Critical patent/KR20200059493A/ko
Priority to US18/061,370 priority patent/US12073217B2/en
Priority to US18/745,042 priority patent/US20240338215A1/en
Application granted granted Critical
Publication of KR102684940B1 publication Critical patent/KR102684940B1/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/16General purpose computing application
    • G06F2212/163Server or database system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • 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)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

본 발명은 데이터 처리 시스템에 관한 것으로, 다수의 메모리들을 포함하는 통합 메모리 시스템에 관한 기술이다. 이러한 본 발명은 데이터의 저장을 위한 라이트 커맨드 및 데이터의 리드를 위한 리드 커맨드를 생성하는 연산 블레이드 및 라이트 커맨드 및 리드 커맨드에 대응하여 복수의 메모리에서 데이터의 리드 동작 또는 라이트 동작이 선택적으로 수행되는 메모리 블레이드를 포함하고, 연산 블레이드는 복수의 메모리에 대한 특성 정보를 저장하고, 특성 정보에 대응하여 캐시 라인의 제거 동작이 수행되는 우선순위를 선정한다.

Description

데이터 처리 시스템{Data processing system}
본 발명은 데이터 처리 시스템에 관한 것으로, 다수의 메모리들을 포함하는 통합 메모리 시스템에 관한 기술이다.
최근 스마트 폰, 태블릿 PC와 같은 이동 통신 단말기의 보급이 대중화되고 있다. 그리고, 소셜 네트워크 서비스(SNS, Social Network Service), 사물 네트워크(M2M, Machine to Machine), 센서 네트워크(Sensor Network) 등의 사용이 증가하고 있다. 이에 따라, 데이터의 양, 생성 속도 및 그 다양성이 기하급수적으로 증가하고 있다. 빅 데이터의 처리를 위해서는 메모리의 속도도 중요하지만 저장 용량이 큰 메모리 장치 및 메모리 모듈이 요구된다.
이에, 메모리 시스템은 데이터의 저장 용량을 늘리기 위하여 복수의 메모리 장치들을 구비한다. 그런데, 메모리 시스템에 포함된 복수의 메모리 장치들은 각각 메모리 특성이 다르다. 따라서, 메모리 시스템에서 캐시의 관리시 각각의 메모리 특성이 달라 미스 패널티(Miss Penalty)가 발생할 수 있다.
본 발명의 실시예는 캐시 라인의 제거(Eviction) 동작시 메모리 특성에 대응하여 우선순위를 부여함으로써 미스 패널티(Miss Penalty)를 줄일 수 있도록 하는 메모리 시스템을 제공한다.
본 발명의 실시예에 따른 데이터 처리 시스템은, 데이터의 저장을 위한 라이트 커맨드 및 데이터의 리드를 위한 리드 커맨드를 생성하는 연산 블레이드; 및 라이트 커맨드 및 리드 커맨드에 대응하여 복수의 메모리에서 데이터의 리드 동작 또는 라이트 동작이 선택적으로 수행되는 메모리 블레이드를 포함하고, 연산 블레이드는 복수의 메모리에 대한 특성 정보를 저장하고, 특성 정보에 대응하여 캐시 라인의 제거 동작이 수행되는 우선순위를 선정한다.
본 발명의 실시예는 캐시의 관리시 메모리의 특성을 고려하여 제거(Eviction) 블록을 결정함으로써 미스 패널티(Miss Penalty)를 줄일 수 있도록 하는 효과를 제공한다.
아울러 본 발명의 실시예는 예시를 위한 것으로, 당업자라면 첨부된 특허청구범위의 기술적 사상과 범위를 통해 다양한 수정, 변경, 대체 및 부가가 가능할 것이며, 이러한 수정 변경 등은 이하의 특허청구범위에 속하는 것으로 보아야 할 것이다.
도 1은 본 발명의 실시예에 따른 데이터 처리 시스템을 도시하는 도면.
도 2는 도 1에 따른 컴퓨팅 랙의 구조를 개략적으로 도시한 도면.
도 3은 도 1에 따른 컴퓨팅 랙의 블록 구성을 도시한 도면.
도 4는 도 3의 메모리 블레이드의 구성을 도시하는 도면.
도 5는 도 3의 연산 블레이드의 구성을 도시하는 도면.
도 6은 도 5의 캐시 메모리에 관한 상세 구성도.
도 7 및 도 8은 도 6의 제거회로에 대한 동작을 설명하기 위한 도면.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명하고자 한다. 본 발명의 실시예를 설명함에 있어서 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때 이는 "직접적으로 연결"되어 있는 경우뿐만 아니라 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한, 어떤 부분이 어떤 구성요소를 "포함" 또는 "구비"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함하거나 구비할 수 있는 것을 의미한다. 또한, 명세서 전체의 기재에 있어서 일부 구성요소들을 단수형으로 기재하였다고 해서, 본 발명이 그에 국한되는 것은 아니며, 해당 구성요소가 복수 개로 이루어질 수 있음을 알 것이다.
도 1은 본 발명의 실시예에 따른 데이터 처리 시스템을 도시하는 도면이다.
데이터 처리 시스템(10)은 다수의 컴퓨팅 랙들(Computing racks)(20), 관리 인터페이스(Management interface)(30) 및 이들 사이의 통신이 가능하도록 하는 네트워크(Network)(40)를 포함할 수 있다. 이러한 랙스케일 구조(Rack-scale architecture)를 가지는 데이터 처리 시스템(10)은 대용량 데이터 처리를 위한 데이터 센터 등에 사용될 수 있다.
다수의 컴퓨팅 랙들(20) 각각은 단독으로 하나의 컴퓨팅 디바이스(Computing device)를 구현할 수 있다. 이를 대신하여, 다수의 컴퓨팅 랙들(20) 각각은 다른 컴퓨팅 랙들과의 조합으로 하나의 컴퓨팅 디바이스를 구현할 수 있다. 이러한 컴퓨터 랙들(20)의 구체적인 구성 및 동작에 대한 설명은 후술될 것이다.
그리고, 관리 인터페이스(30)는 사용자가 데이터 처리 시스템(10)을 조정, 운영 또는 관리할 수 있도록 하는 인터액티브 인터페이스(Interactive interface)를 제공할 수 있다. 관리 인터페이스(30)는 컴퓨터, 멀티프로세서 시스템, 서버, 랙마운트(Rack-mount) 서버, 블레이드(Blade) 서버, 랩탑(Lap-top) 컴퓨터, 노트북 컴퓨터, 태블릿 컴퓨터, 웨어러블 컴퓨팅 디바이스, 네트워크 기기, 웹 기기, 분산 컴퓨팅 시스템, 프로세서 기반 시스템, 및/또는 소비자 전자 기기를 포함하는, 임의의 유형의 연산 디바이스로서 구현될 수 있다.
실시예에 따라, 관리 인터페이스(30)는 컴퓨팅 랙들(20)에 의해 수행될 수 있는 연산 기능들이나, 관리 인터페이스(30)에 의해 수행될 수 있는 사용자 인터페이스 기능들을 가지는 분산 시스템에 의해 구현되어질 수 있다. 다른 실시예에서, 관리 인터페이스(30)는 네트워크(40)를 통하여 분산된 다중 컴퓨팅 디바이스들에 의해 구성되고 클라우드(Cloud)로서 동작하는 가상 서버(Virtual server)에 의해 구현될 수 있다. 여기서, 관리 인터페이스(30)는 프로세서, 입출력 서브시스템, 메모리, 데이터 스토리지 디바이스 및 통신 회로를 포함할 수 있다.
그리고, 네트워크(40)는 컴퓨팅 랙들(20)과 관리 인터페이스(30) 사이 및/또는 컴퓨팅 랙들(20) 사이에서 데이터를 송수신할 수 있다. 네트워크(40)는 적절한 수의 다양한 무선 및/또는 유선 네트워크들에 의해 구현될 수 있다.
예를 들어, 네트워크(40)는 유선 또는 무선 LAN(Local Area Network), WAN(Wide Area Network) 셀룰라 네트워크, 및/또는 인터넷과 같이 공개적으로 액세스 가능한 글로벌 네트워크(Publicly-accessible, global network)에 의해 구현되거나 이를 포함할 수 있다. 추가적으로, 네트워크(40)는 보조적인 컴퓨터들, 라우터(Router)들 및 스위치들과 같은 적절한 수의 보조적인 네트워크 디바이스들을 포함할 수 있다.
도 2는 도 1에 따른 컴퓨팅 랙 구조를 개략적으로 도시한 도면이다.
컴퓨팅 랙(20)은 구성요소들의 구조, 형태 및 호칭 등에 제한되는 것은 아니지만, 다양한 형태의 구성요소들을 포함할 수 있다. 예를 들어, 컴퓨팅 랙(20)은 다수의 드로워(Drawer)들(21-29)을 포함할 수 있다. 다수의 드로워들(21-29) 각각은 다수의 모듈(Module)들을 포함할 수 있다. 다수의 모듈들 각각은 다수의 블레이드(Blade)들을 포함할 수 있다.
실시예에 따라, 컴퓨팅 랙(20)은 적절한 수의 연산 블레이드(Compute blade), 메모리 블레이드(Memory blade) 및/또는 상호접속 블레이드(Interconnect blade)의 조합에 의해 구현될 수 있다. 여기서는 컴퓨팅 랙(20)이 다수의 블레이드들의 조합에 의해 구현되는 것으로 정의되고 있지만, 이를 대신하여, 드로워들, 모듈들, 트레이들, 보드들, 샷시들 또는 유닛들 등의 다양한 이름으로 구현되는 것으로 정의될 수 있음에 유의하여야 한다.
이러한 컴퓨팅 랙(20)의 구성요소들은 구현의 편의상 기능별로 분류 및 구별되는 구조를 가질 수 있다. 제한되는 것은 아니지만, 컴퓨팅 랙(20)은 상단부터 상호접속 블레이드, 연산 블레이드, 메모리 블레이드의 순서로 분류된 구조를 가질 수 있다. 이러한 컴퓨팅 랙(20) 및 이에 의해 구현되는 컴퓨팅 디바이스는 "랙스케일 시스템(Rack-scale system)" 또는 "분류 시스템(Disaggregated system)"으로 명명될 수 있다.
다양한 실시예들에 있어서, 컴퓨팅 디바이스는 하나의 컴퓨팅 랙(20)에 의해 구현될 수 있다. 이를 대신하여, 컴퓨팅 디바이스는 2개 이상의 컴퓨팅 랙(20)들에 포함되는 모든 구성요소들에 의해 구현되거나, 2개 이상의 컴퓨팅 랙들(20)에 포함되는 일부 구성요소들의 조합에 의해 구현되거나, 하나의 컴퓨팅 랙(20)들에 포함되는 일부 구성요소들에 의해 구현될 수 있다.
다양한 실시예들에 있어서, 컴퓨팅 디바이스는 컴퓨팅 랙(20)에 포함되는 적절한 수의 연산 블레이드, 메모리 블레이드 및 상호접속 블레이드의 조합에 의해 구현될 수 있다. 예를 들어, 컴퓨팅 디바이스(20A)는 2개의 연산 블레이드들, 3개의 메모리 블레이드들 및 1개의 상호접속 블레이드에 의해 구현될 수 있다. 다른 예로, 컴퓨팅 디바이스(20B)는 3개의 연산 블레이드들, 2개의 메모리 블레이드들 및 1개의 상호접속 블레이드에 의해 구현될 수 있다. 또 다른 예로, 컴퓨팅 디바이스(20C)는 1개의 연산 블레이드들, 4개의 메모리 블레이드들 및 1개의 상호접속 블레이드에 의해 구현될 수 있다.
비록 도 2에서는 컴퓨팅 랙(20)이 적절한 수의 연산 블레이드, 메모리 블레이드 및/또는 상호접속 블레이드의 조합에 의해 구현되는 경우를 도시하고 있지만, 컴퓨팅 랙(20)은 통상의 서버 등에서 확인될 수 있는, 파워 시스템, 냉각 시스템, 입출력 디바이스들과 같은 추가적인 구성요소들을 포함할 수 있다.
도 3은 도 1에 따른 컴퓨팅 랙(20)의 블록 구성을 도시한 도면이다.
컴퓨팅 랙(20)은 다수의 연산 블레이드들(200), 상호접속 블레이드(300) 및 다수의 메모리 블레이드들(400)을 포함할 수 있다.
여기서, 다수의 연산 블레이드들(200)은 풀드 연산 블레이드(Pooled compute blades), 풀드 연산 시스템 등으로 불리울 수 있다. 유사하게, 다수의 메모리 블레이드들(400)은 풀드 메모리 블레이드(Pooled memory blade), 풀드 메모리 시스템 등으로 불리울 수 있다.
다수의 연산 블레이드들(200) 각각은 데이터의 저장을 위한 라이트 커맨드 및 데이터의 리드를 위한 리드 커맨드를 생성한다. 이러한 다수의 연산 블레이드들(200) 각각은 하나 또는 그 이상의 프로세서, 프로세싱/컨트롤 회로, 또는 중앙처리장치(Central Processing Unit, CPU)와 같은 프로세싱 요소를 포함할 수 있다.
그리고, 다수의 메모리 블레이드들(400) 각각은 라이트 커맨드 및 리드 커맨드에 대응하여 데이터의 리드 동작 또는 라이트 동작이 선택적으로 수행된다. 이러한 다수의 메모리 블레이드들(400) 각각은 다수의 휘발성 메모리(Volatile memory)들 및/또는 비휘발성 메모리(Nonvolatile memory)들과 같은 다양한 형태의 메모리들을 포함할 수 있다.
예를 들어, 다수의 메모리 블레이드들(400)은 다수의 디램(Dynamic Random Access Memory, DRAM)들, 플래시 메모리(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) 사이의 통신을 지원할 수 있다.
데이터 센터와 같은 서버 시스템 또는 데이터 처리 시스템은 연산 블레이드들(200), 메모리 블레이드들(400) 등과 같은 다수의 블레이드들이 단위 컴퓨팅 랙(20) 내에서 구별되어 장착되는 구조를 가질 수 있다. 이때, 하나의 메모리 블레이드 또는 다수의 메모리 블레이드들은 동일한 종류 또는 서로 다른 종류의 다수의 메모리들이 통합된 형태를 가지는 통합 메모리 디바이스(convergence memory device) 또는 풀드 메모리 시스템(pooled memory system)일 수 있다.
도 4는 도 3의 메모리 블레이드의 구성을 도시하는 도면이다.
메모리 블레이드(400)는 컨트롤러(410)와 다수의 메모리들(420)을 포함할 수 있다.
여기서, 컨트롤러(410)는 데이터 컨트롤러(Data controller)(510), 메모리 컨트롤러들(Memory controller)(520A-520C) 및 입출력(Input/Output, I/O) 인터페이스(530)를 포함할 수 있다.
데이터 컨트롤러(510)는 도 3의 연산 블레이드들(200)과 다수의 메모리들(420) 사이에서 송수신되는 데이터를 제어할 수 있다. 예를 들어, 라이트 요청 또는 커맨드에 응답하여, 데이터 컨트롤러(510)는 연산 블레이드들(200)로부터의 라이트를 위한 데이터를 수신한다. 데이터 컨트롤러(510)는 수신된 데이터를 다수의 메모리들(420) 중에서 해당하는 메모리에 라이트하는 라이트 동작을 제어할 수 있다. 다른 예로, 리드 요청 또는 커맨드에 응답하여, 데이터 컨트롤러(510)는 연산 블레이드들(200)로부터 다수의 메모리들(420) 중에서 특정 메모리에 저장된 데이터를 리드한다. 데이터 컨트롤러(510)는 리드 데이터를 연산 블레이드들(200) 중에서 해당하는 연산 블레이드로 출력하는 리드 동작을 제어할 수 있다.
메모리 컨트롤러들(520A-520C)은 데이터 컨트롤러(510)와 다수의 메모리들 (420)의 사이에 위치하며, 이들 사이에서의 인터페이싱을 지원할 수 있다. 메모리 컨트롤러들(520A-520C)은 다수의 메모리들(420)에 포함되는 제 1그룹의 메모리들(420A), 제 2그룹의 메모리들(420B) 및 제 3그룹의 메모리들(420C) 각각에 대응하는 동작을 제어할 수 있다.
즉, 메모리 컨트롤러(520A)는 데이터 컨트롤러(510)와 제 1그룹의 메모리들(420A)의 사이에 위치하며, 이들 사이에서의 데이터 송수신을 지원할 수 있다. 메모리 컨트롤러(520B)는 데이터 컨트롤러(510)와 제 2그룹의 메모리들(420B)의 사이에 위치하며, 이들 사이에서의 데이터 송수신을 지원할 수 있다. 메모리 컨트롤러(520C)는 데이터 컨트롤러(510)와 제 3그룹의 메모리들(420C)의 사이에 위치하며, 이들 사이에서의 데이터 송수신을 지원할 수 있다.
여기서는 컨트롤러(410)가 3개의 메모리 컨트롤러들(520A~520C)을 포함하는 예가 도시되어 있다. 하지만, 제 1그룹의 메모리들(420A), 제 제 2그룹의 메모리들(420B) 및 제 3그룹의 메모리들(420C)가 모두 동일한 메모리로 구현되는 경우 컨트롤러(410)는 단일의 메모리 컨트롤러를 포함하는 형태로 도시될 수도 있다.
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) 사이의 통신을 지원할 수 있다.
또한, 다수의 메모리들(420)은 컨트롤러(410)의 제어에 따라 데이터를 저장(또는 라이트)하고, 저장된 데이터를 출력(또는 리드)할 수 있다. 다수의 메모리들(420)은 제 1그룹의 메모리들(420A), 제 2그룹의 메모리들(420B) 및 제 3그룹의 메모리들(420C)을 포함할 수 있다. 제 1그룹의 메모리들(420A), 제 2그룹의 메모리들(420B) 및 제 3그룹의 메모리들(420C)은 서로 동일한 특성을 가질 수도 있고, 서로 다른 특성을 가질 수 있다.
실시예에 따라, 제 1그룹의 메모리들(420A), 제 2그룹의 메모리들(420B) 및 제 3그룹의 메모리들(420C)은 저장 용량(capacity) 또는 레이턴시(latency) 측면에서 동일한 특성을 가지는 메모리들이거나, 서로 다른 특성을 가지는 메모리들일 수 있다.
일 예로, 제 1그룹의 메모리들(420A)과, 제 2그룹의 메모리들(420B) 및 제 3그룹의 메모리들(420C)은 동일한 종류의 디램일 수 있다. 이와 달리, 제 1그룹의 메모리들(420A)와, 제 2그룹의 메모리들(420B) 및 제 3그룹의 메모리들(420C)는 정적 램(Static Random Access Memory, SRAM)이나 플래시 메모리(Flash memory)와 같이 동일한 종류의 메모리일 수 있다. 또한, 제 1그룹의 메모리들(420A)와, 제 2그룹의 메모리들(420B) 및 제 3그룹의 메모리들(420C)는 서로 다른 종류의 메모리일 수도 있다.
다른 실시예들에 있어서, 메모리 블레이드(400)에 포함되는 동일한 종류의 메모리들(240)은 다양한 온도 사용 환경에 따라서 다양한 성능이나 특성을 나타낼 수 있다. 여기서, 다양한 성능이나 특성은 데이터 액세스 속도, 리프레시(Refresh) 기간 또는 온칩 정보의 누설량(On-chip leakage)을 포함할 수 있다.
즉, 제 1그룹의 메모리들(420A)과, 제 2그룹의 메모리들(420B) 및 제 3그룹의 메모리들(420C)은 서로 다른 온도 환경에 있을 수 있다. 제 1그룹의 메모리들(420A)은 제 1온도, 즉, 실온 환경에서 동작할 수 있다. 그리고, 제 2그룹의 메모리들(420B)은 제 2온도, 즉, 저온 환경에서 동작할 수 있다. 그리고, 제 3그룹의 메모리들(420C)은 제 3온도, 즉, 극저온(Cryogenic) 환경에서 동작할 수 있다.
예를 들어, 제 3그룹의 메모리들(420C)이 극저온과 같이 온도가 낮은 환경에서 동작하는 경우, 휘발성 메모리(예를 들면, 디램)에서 동작 속도가 빨라질 수 있으며, 온칩 누설량이 급속히 감소함에 따라 리프레시 기간이 길어질 수 있다. 이와 같이, 온도가 낮은 환경에서의 휘발성 메모리는 비휘발성 메모리와 같은 특성을 나타낼 수 있다. 즉, 최상의 시스템 성능을 요구하는 요청에 대응하여 온도가 낮은 환경에서 동작하는 제 3그룹의 메모리들(420C)이 선택될 수 있다. 그러면, 긴급 처리가 필요한 요청과 같이 상대적으로 우선 순위가 높은 요청에 대하여 빠른 대응이 가능할 뿐만 아니라 파워 소모도 줄어들 수 있다.
그리고, 양호의 시스템 성능을 요구하는 요청인 경우, 제 2그룹의 메모리들(420B)이 선택될 수 있다. 또한, 제 1그룹의 메모리들(420A)이 실온에서와 같이 온도가 높은 환경에서 동작하는 경우, 휘발성 메모리에서 동작 속도가 느려질 수 있으며, 온칩 누설량이 증가함에 따라 파워 소모가 커질 수 있다.
따라서, 제 1그룹의 메모리들(420A)과, 제 2그룹의 메모리들(420B) 및 제 3그룹의 메모리들(420C)이 다양한 온도 환경에서 사용되어 다양한 성능 또는 특성을 가진다. 이에 따라, 제 1그룹의 메모리들(420A)은 제 1특성(슬로우 특성; SS)을 갖는 메모리로 설정될 수 있다. 그리고, 제 2그룹의 메모리들(420B)은 제 2특성(노말 특성; TT)을 갖는 메모리로 설정될 수 있다. 또한, 제 3그룹의 메모리들(420C)은 제 3특성(패스트 특성; FF)을 갖는 메모리로 설정될 수 있다.
도 5는 도 3의 연산 블레이드의 구성을 도시하는 도면이다.
연산 블레이드(200)는 하나 이상의 중앙처리장치(Central Processing Unit, CPU)(210A~210C)와, 하나 이상의 캐시(Cache) 메모리(220A~220C) 및 I/O 인터페이스(230)를 포함할 수 있다.
CPU(210A~210C)는 메모리 블레이드(400)를 제어하기 위한 커맨드를 생성한다. 이러한 CPU(210A~210C)는 도 3에 도시된 다수의 메모리 블레이드들(400) 중에서 적어도 하나 이상의 메모리 블레이드(400)를 분할, 할당 또는 지정할 수 있다. 또한, CPU(210A~210C)는 분할, 할당 또는 지정된 적어도 하나의 메모리 블레이드(400)를 초기화하고, 데이터의 리드 동작, 라이트(또는 프로그램) 동작 등을 수행할 수 있다.
캐시 메모리(220A~220C)는 레이턴시(Latency)를 줄이기 위하여 CPU(210A~210C)의 동작 수행 중에 필요한 데이터를 저장할 수 있다. 그리고, 캐시 메모리(220A~220C)는 CPU(210A~210C)의 동작에 필요한 데이터를 캐시 라인에 저장하며, 메모리들(420)의 특성 정보에 대응하여 제거 동작이 수행되는 메모리의 우선순위를 선정한다. 실시예에 따라, 캐시 메모리(220A~220C)는 CPU(210A~210C)에 일대일 대응하는 구조를 가질 수 있다.
I/O 인터페이스(230)는 도 3의 상호접속 블레이드(300)을 통한 CPU(210A~210C)와 메모리 블레이드들(400) 사이에서의 인터페이싱을 지원할 수 있다. I/O 인터페이스(230)는 하나 이상의 유선 또는 유선 통신 기술들과 관련된 프로토콜들을 사용하여 입출력 동작을 제어한다. 즉, I/O 인터페이스(230)는 CPU(210A~210C)로부터 상호접속 블레이드(300)로의 송신 데이터를 출력하고, 상호접속 블레이드(300)으로부터 CPU(210A~210C)로 수신 데이터를 입력할 수 있다.
예를 들어, I/O 인터페이스(230)는 PCIe(Peripheral Component Interconnect Express), QPI(QuickPath Interconnect), 이더넷(Ethernet) 등과 같은 프로토콜들에 따라 CPU(210A~210C)와 상호접속 블레이드(300) 사이의 통신을 지원할 수 있다.
도 6은 도 5의 캐시 메모리(220A~220C)에 관한 상세 구성도이다. 본 발명의 실시예에서 캐시 메모리(220A~220C)의 구성은 모두 동일하므로, 본 발명의 실시예에서는 캐시 메모리(220A)의 상세 구성을 일 예로 설명하기로 한다.
캐시 메모리(220A)는 어드레스 디코더(211), 웨이(Way) 블록(212), 데이터 처리부(213), 제거(Eviction) 회로(214) 및 특성 저장부(215)를 포함한다.
여기서, 어드레스 디코더(211)는 CPU(210A)로부터 인가되는 어드레스 ADD를 디코딩하여 웨이 블록(212), 제거 회로(214) 및 특성 저장부(215)의 해당 어드레스를 선택한다. 그리고, 웨이 블록(212)은 CPU(210A)의 동작 수행 중에 필요한 데이터를 저장하기 위해 복수의 웨이 WAY0~WAY3를 포함할 수 있다.
여기서, 복수의 웨이 WAY0~WAY3 각각에는 태그 주소, 더티 플래그 및 데이터를 포함할 수 있다. CPU(210A)로부터 요청되는 어드레스 ADD는 세트 번호와 태그 주소의 조합으로 생성될 수 있다. 따라서, CPU(210A)로부터 요청된 주소에 대한 값이 캐시 메모리(220A)에 저장되어 있는지 확인하기 위해, 요청된 어드레스 ADD에 의해 자동으로 결정되는 세트에서 그 내부에 포함된 다수의 웨이 WAY0~WAY3의 태그 주소를 조회한다. 태그 주소에 특정한 값(예를 들어 "0")을 지정하여 해당 웨이가 비어 있음을 표시할 수도 있다.
그리고, 더티 플래그는 캐시 메모리(220A)에 저장된 데이터가 메모리들(420)에 저장되었는지 여부를 표시한다. 예를 들어, 활성화된 더티 플래그는 웨이 WAY0~WAY3에 저장된 데이터가 업데이트 되었으나 메모리들(420)에는 저장되지 않았음을 표시할 수 있다. 따라서, 캐시 메모리(220A)에서 추방되는 웨이를 확인하여 더티 플래그가 활성화된 것이면 그 데이터를 이용하여 메모리들(420)을 업데이트 할 수 있다.
데이터 처리부(213)는 캐시 교체 정책에 대응하는 데이터를 처리할 수 있다. 예를 들면, 캐시 교체 정책은 최소 최근 사용(Least Recently Used; LRU) 동작 또는 선입선출(First-In First-Out; FIFO) 동작을 사용하여 캐시 데이터를 교체하는 것을 말한다. 여기서, LRU 동작은 히트율(Hit ratio)을 높이기 위해 최근에 가장 적게 사용한 데이터를 순차적으로 출력하기 위한 동작이다. 그리고, FIFO 동작은 먼저 입력된 데이터를 먼저 출력하는 동작이다.
캐시 메모리(220A)는 한정된 공간으로 인하여 캐시-풀(Cache-Full)일 때 새로운 데이터 로딩을 위하여 기존에 존재하는 데이터를 삭제해야 하는 특성을 지닌다. 이를 위해, 제거 회로(214)는 캐시-풀(Cache-Full)일 때 데이터 처리부(213)의 동작을 토대로 하여 데이터 참조 확률이 낮은 데이터를 삭제하거나 메인 메모리로 라이트-백(WRITE-BACK)하고 해당 공간의 데이터를 새로운 데이터로 교체(Replacement)한다. 그리고, 본 발명의 실시예에 따른 제거 회로(214)는 특성 저장부(215)에 저장된 특성 정보를 토대로 하여 제거 동작을 수행하기 위한 메모리의 우선순위를 선정한다.
특성 저장부(215)는 위에서 설명된 제 1그룹의 메모리들(420A)과, 제 2그룹의 메모리들(420B) 및 제 3그룹의 메모리들(420C)에 대한 특성 정보를 저장한다. 예를 들어, 특성 저장부(215)는 위에서 설명된 제 1그룹의 메모리들(420A)에 대한 데이터 액세스 속도 정보를 저장할 수 있다. 제 1그룹의 메모리들(420A)에 포함된 메모리가 4개의 디램으로 이루어진 경우를 가정한다. 그러면, 특성 저장부(215)는 제 1그룹의 메모리들(420A)에 포함된 각 디램의 데이터 액세스 속도 정보를 저장할 수 있다. 제 1그룹의 메모리들(420A)에 포함된 4개의 메모리 중 두 개의 디램은 "패스트(FAST)" 특성을 갖고 나머지 두 개의 디램은 "슬로우(SLOW)" 특성을 갖는다.
여기서, 특성 저장부(215)는 메모리의 데이터 액세스 속도 정보를 1 비트 데이터로 저장할 수 있다. 예를 들면, 메모리가 "패스트(FAST)" 특성을 갖는 경우 데이터 "0"으로 저장하고, 메모리가 "슬로우(SLOW)" 특성을 갖는 경우 데이터 "1"로 저장할 수 있다.
데이터 처리부(213)의 히트율 만으로 캐시 데이터를 제거하는 경우 미스 패널티(Miss penalty)가 전혀 고려되지 않는다. 이에 따라, 본 발명의 실시예는 특성 저장부(215)를 통해 메모리들(420)의 특성 정보를 저장하고 메모리들(420)의 특성을 반영하여 캐시 데이터의 제거 동작에 반영한다.
도 7 및 도 8은 도 6의 제거회로(214)에 대한 동작을 설명하기 위한 도면이다. 도 7 및 도 8의 실시예에서는 메모리(420)가 디램으로 이루어진 경우를 일 예로 설명하기로 한다. 그리고, 도 7 및 도 8의 실시예에서는 데이터 처리부(213)가 LRU 동작을 이용하여 캐시 데이터를 교체하는 경우를 일 예로 설명하기로 한다.
위에서 설명된 바와 같이, CPU(210A)와 메모리(420) 간의 상대적인 위치 또는 메모리들(420)의 온도 환경에 따라 메모리의 데이터 액세스 속도가 다르므로 각 메모리(420)가 서로 다른 특성을 가질 수 있다. 본 발명의 실시예에서는 특성 저장부(215)에 각 메모리(420)들에 대한 특성 정보를 저장한다. 그리고, 제거회로(214)는 특성 저장부(215)에 저장된 정보에 대응하여 캐시 라인의 제거 동작을 수행하기 위한 메모리의 우선순위를 결정한다.
예를 들어, "패스트(FAST)" 특성을 갖는 메모리와 "슬로우(SLOW)" 특성을 갖는 메모리는 미스 패널티(Miss Penalty)가 서로 상이하다. 즉, "패스트(FAST)" 특성을 갖는 메모리가 "슬로우(SLOW)" 특성을 갖는 메모리 보다 미스 패널티(Miss Penalty)가 클 수 있다.
여기서, 미스 패널티란 캐쉬 미스가 발생하여 외부의 주메모리와 액세스하여 캐쉬 메모리의 해당 라인을 주메모리에 저장된 데이터로 채우는 동작 즉, 라인 필(line fill) 동작을 수행하는 데 걸리는 시간이다. 이에 따라, "패스트" 특성을 갖는 메모리인 경우 "슬로우" 특성을 갖는 메모리 보다 액세스 타임이 빠르므로 미스 패널티가 커질 수 있다.
이에 따라, 본 발명의 실시예는 "패스트(FAST)" 특성을 갖는 메모리에 대해 우선적으로 제거(Eviction) 동작을 수행하여 미스 패널티가 큰 데이터를 캐시 메모리(220A)에 저장한다.
도 7의 실시예에서는 제거 회로(214)가 먼저 제거 동작이 수행될 메모리를 찾은 후 LRU 동작을 수행하는 것을 나타낸다.
먼저, 제거 회로(214)는 특성 저장부(215)에 저장된 특성 정보를 토대로 하여 메모리에 패스트 디램 영역이 있는지를 판단한다.(단계 S1) 만약, 패스트 디램 영역이 있는 경우 패스트 디램을 제거 블록으로 결정한다. 그리고, 패스트 디램 내에서 데이터 처리부(213)를 통해 LRU 동작을 수행한다.(단계 S2) 그리고, 제거회로(214)는 LRU 동작에 따라 캐시 데이터의 제거 동작을 수행한다.(단계 S4) 반면에, 패스트 디램 영역이 없는 경우 슬로우 디램을 제거 블록으로 결정한다. 그리고, 슬로우 디램 내에서 데이터 처리부(213)를 통해 LRU 동작을 수행한다.(단계 S3) 이후에, 제거회로(214)는 LRU 동작에 따라 캐시 데이터의 제거 동작을 수행한다.(단계 S4)
도 8의 실시예에서는 LRU 동작을 먼저 수행한 후 제거 동작이 수행될 메모리를 찾는 것을 나타낸다.
먼저, 제거 회로(214)는 데이터 처리부(213)를 통해 LRU 동작을 수행한다. (단계 S10) 이후에, 제거 회로(214)는 특성 저장부(215)에 저장된 특성 정보를 토대로 하여 제거 동작이 수행될 메모리의 우선순위를 선정한다.(단계 S11)
이후에, 제거 회로(214)는 제거 동작이 수행될 1순위가 슬로우 디램에 해당하는지를 판단한다.(단계 S12) 이후에, 1순위가 슬로우 디램인 경우 2순위가 슬로 디램인지의 여부를 판단한다.(단계 S13)
만약, 1순위가 슬로우 디램이 아닌 경우 패스트 디램을 1순위로 선정한다. 즉, 패스트 디램에서 미스 패널티를 비교하여 미스 패널티가 큰 패스트 디램을 1순위로 선정하고(단계 S14) 캐시 라인의 제거 동작을 수행한다.(단계 S16)
그리고, 1순위가 슬로우 디램이지만 2순위가 슬로우 디램이 아닌 경우 순위를 변경하여 패스트 디램을 1순위로 선정한다. 비록, 패스트 디램이 1순위가 아니지만 패스트 디램에서 먼저 제거동작을 수행하기 위해 패스트 디램을 1순위로 변경한다. 즉, 패스트 디램에서 미스 패널티를 비교하여 미스 패널티가 큰 패스트 디램을 1순위로 선정하고(단계 S14) 캐시 라인의 제거 동작을 수행한다.(단계 S16)
반면에, 1, 2순위가 모두 슬로우 디램인 경우 슬로우 디램을 1순위로 선정하고, 패스트 디램을 2순위로 선정한다. 즉, 패스트 디램에서 미스 패널티를 비교하여 미스 패널티가 큰 패스트 디램을 2순위로 선정하고(단계 S15) 캐시 라인의 제거 동작을 수행한다.(단계 S16)
본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.

Claims (20)

  1. 데이터의 저장을 위한 라이트 커맨드 및 상기 데이터의 리드를 위한 리드 커맨드를 생성하는 연산 블레이드; 및
    상기 라이트 커맨드 및 상기 리드 커맨드에 대응하여 복수의 메모리에서 상기 데이터의 리드 동작 또는 라이트 동작이 선택적으로 수행되는 메모리 블레이드를 포함하고,
    상기 연산 블레이드는
    상기 복수의 메모리 각각에 대한 특성 정보를 저장하는 캐시 메모리를 포함하고, 상기 특성 정보에 대응하여 캐시 라인의 제거 동작이 수행되는 메모리의 우선순위를 선정하고,
    상기 캐시 메모리는
    중앙처리장치의 동작에 필요한 데이터를 저장하는 웨이 블록;
    상기 캐시 라인의 제거 동작을 위한 데이터를 처리하는 데이터 처리부;
    상기 특성 정보를 저장하는 특성 저장부; 및
    상기 특성 정보에 대응하여 상기 메모리의 우선순위를 선정하고 상기 제거 동작을 수행하는 제거 회로를 포함하고,
    상기 데이터 처리부의 처리 동작이 수행된 이후에, 상기 메모리의 우선순위가 선정되고,
    상기 제거 회로는
    데이터 액세스 속도가 패스트 특성을 갖는 메모리를 1순위로 선정하고,
    상기 데이터 액세스 속도가 슬로우 특성을 갖는 메모리가 1순위 및 2순위로 선정되면, 상기 패스트 특성을 갖는 메모리를 2순위로 변경하는 데이터 처리 시스템.
  2. 제 1항에 있어서,
    상기 연산 블레이드와 상기 메모리 블레이드 사이에서 통신을 수행하는 상호접속 블레이드를 더 포함하는 데이터 처리 시스템.
  3. 제 1항에 있어서, 상기 메모리 블레이드는
    상기 데이터의 리드 또는 라이트 동작이 수행되는 상기 복수의 메모리; 및
    상기 연산 블레이드로부터 인가되는 요청에 따라 상기 복수의 메모리를 선택적으로 액세스하는 컨트롤러를 포함하는 데이터 처리 시스템.
  4. 제 3항에 있어서, 상기 컨트롤러는
    상기 연산 블레이드와 상기 복수의 메모리 사이에서 송수신되는 상기 데이터를 제어하는 데이터 컨트롤러;
    상기 데이터 컨트롤러와 상기 복수의 메모리 사이에서 상기 데이터의 송수신 동작을 제어하는 복수의 메모리 컨트롤러; 및
    상기 데이터 컨트롤러와 상기 연산 블레이드 사이에서 인터페이싱을 수행하는 입출력 인터페이스를 포함하는 데이터 처리 시스템.
  5. 제 4항에 있어서, 상기 데이터 컨트롤러는
    상기 라이트 커맨드에 응답하여, 상기 연산 블레이드로부터의 라이트를 위한 데이터를 수신하여 수신된 데이터를 상기 복수의 메모리 중에서 해당하는 메모리에 라이트하고,
    상기 리드 커맨드에 응답하여, 상기 복수의 메모리 중에서 특정 메모리에 저장된 데이터를 리드하여 상기 연산 블레이드로 출력하는 데이터 처리 시스템.
  6. 제 1항에 있어서, 상기 복수의 메모리는
    제 1온도의 환경에 있는 제 1그룹의 메모리;
    상기 제 1온도보다 낮은 제 2온도의 환경에 있는 제 2그룹의 메모리; 및
    상기 제 2온도보다 낮은 제 3온도 환경에 있는 제 3그룹의 메모리를 포함하는 데이터 처리 시스템.
  7. 제 6항에 있어서,
    상기 제 1그룹의 메모리, 상기 제 2그룹의 메모리 및 상기 제 3그룹의 메모리는 동일한 종류의 메모리인 데이터 처리 시스템.
  8. 제 6항에 있어서,
    상기 복수의 메모리는 서로 다른 특성 정보를 갖는 데이터 처리 시스템.
  9. 제 6항에 있어서,
    상기 제 1그룹의 메모리는 데이터 액세스 속도가 슬로우 특성을 갖고,
    상기 제 2그룹의 메모리는 노말 특성을 갖고,
    상기 제 3그룹의 메모리는 패스트 특성을 갖는 데이터 처리 시스템.
  10. 제1항에 있어서, 상기 연산 블레이드는
    상기 메모리 블레이드를 제어하기 위한 커맨드를 생성하는 상기 중앙처리장치;
    상기 중앙처리장치의 동작에 필요한 데이터를 상기 캐시 라인에 저장하는 상기 캐시 메모리; 및
    상기 중앙처리장치와 상기 메모리 블레이드 사이에서 인터페이싱을 수행하는 I/O 인터페이스를 포함하는 데이터 처리 시스템.
  11. 삭제
  12. 제1항에 있어서, 상기 캐시 메모리는
    상기 중앙처리장치로부터 인가되는 어드레스를 디코딩하는 어드레스 디코더를 더 포함하는 데이터 처리 시스템.
  13. 제1항에 있어서, 상기 데이터 처리부는
    최소 최근 사용(Least Recently Used; LRU) 동작을 수행하여 캐시 데이터를 교체하는 데이터 처리 시스템.
  14. 제1항에 있어서, 상기 데이터 처리부는
    선입선출(First-In First-Out; FIFO) 동작을 수행하여 캐시 데이터를 교체하는 데이터 처리 시스템.
  15. 제1항에 있어서, 상기 특성 정보는
    데이터 액세스 속도, 리프레시 기간 및 온칩 정보의 누설량 중 어느 하나의 정보를 포함하는 데이터 처리 시스템.
  16. 제1항에 있어서, 상기 제거 회로는
    데이터 액세스 속도가 패스트 특성을 갖는 메모리를 1순위로 선정하고, 슬로우 특성을 갖는 메모리를 2순위로 선정하는 데이터 처리 시스템.
  17. 삭제
  18. 삭제
  19. 제1항에 있어서, 상기 제거 회로는
    데이터 액세스 속도가 패스트 특성을 갖는 메모리를 1순위로 선정하고,
    상기 데이터 액세스 속도가 슬로우 특성을 갖는 메모리가 1순위로 선정되고, 패스트 특성을 갖는 메모리가 2순위로 선정되면, 상기 패스트 특성을 갖는 메모리를 1순위로 변경하는 데이터 처리 시스템.
  20. 삭제
KR1020180144288A 2018-11-21 2018-11-21 데이터 처리 시스템 KR102684940B1 (ko)

Priority Applications (8)

Application Number Priority Date Filing Date Title
KR1020180144288A KR102684940B1 (ko) 2018-11-21 2018-11-21 데이터 처리 시스템
US16/288,015 US10860498B2 (en) 2018-11-21 2019-02-27 Data processing system
CN201910197794.8A CN111209227B (zh) 2018-11-21 2019-03-15 数据处理系统
TW108109647A TW202020674A (zh) 2018-11-21 2019-03-20 數據處理系統
JP2019059544A JP2020087409A (ja) 2018-11-21 2019-03-27 データ処理システム
US16/860,850 US11544063B2 (en) 2018-11-21 2020-04-28 Memory system and data processing system including the same
US18/061,370 US12073217B2 (en) 2018-11-21 2022-12-02 Memory system and data processing system including the same
US18/745,042 US20240338215A1 (en) 2018-11-21 2024-06-17 Memory system and data processing system including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180144288A KR102684940B1 (ko) 2018-11-21 2018-11-21 데이터 처리 시스템

Publications (2)

Publication Number Publication Date
KR20200059493A KR20200059493A (ko) 2020-05-29
KR102684940B1 true KR102684940B1 (ko) 2024-07-17

Family

ID=70726348

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180144288A KR102684940B1 (ko) 2018-11-21 2018-11-21 데이터 처리 시스템

Country Status (5)

Country Link
US (1) US10860498B2 (ko)
JP (1) JP2020087409A (ko)
KR (1) KR102684940B1 (ko)
CN (1) CN111209227B (ko)
TW (1) TW202020674A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11544063B2 (en) * 2018-11-21 2023-01-03 SK Hynix Inc. Memory system and data processing system including the same

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120311269A1 (en) * 2011-06-03 2012-12-06 Loh Gabriel H Non-uniform memory-aware cache management
US20140149653A1 (en) * 2012-11-26 2014-05-29 Arm Limited Variable mapping of memory accesses to regions within a memory
US20160041902A1 (en) * 2006-12-06 2016-02-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05289760A (ja) * 1992-04-06 1993-11-05 Mitsubishi Electric Corp 基準電圧発生回路
US5717884A (en) * 1996-02-02 1998-02-10 Storage Technology Corporation Method and apparatus for cache management
US7173863B2 (en) 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
US7206902B2 (en) 2004-08-17 2007-04-17 Nvidia Corporation System, apparatus and method for predicting accesses to a memory
US7437510B2 (en) * 2005-09-30 2008-10-14 Intel Corporation Instruction-assisted cache management for efficient use of cache and memory
KR100782592B1 (ko) 2006-08-10 2007-12-06 엠텍비젼 주식회사 공유 메모리를 구비한 장치 및 공유 메모리 제어 방법
US8102663B2 (en) 2007-09-28 2012-01-24 Oracle America, Inc. Proximity communication package for processor, cache and memory
US8868838B1 (en) * 2008-11-21 2014-10-21 Nvidia Corporation Multi-class data cache policies
US8095738B2 (en) 2009-06-15 2012-01-10 International Business Machines Corporation Differential caching mechanism based on media I/O speed
US8566531B2 (en) * 2009-08-21 2013-10-22 Google Inc. System and method of selectively caching information based on the interarrival time of requests for the same information
KR101840238B1 (ko) * 2010-03-08 2018-03-20 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 데이터 저장 장치 및 방법
US8539163B1 (en) 2010-12-17 2013-09-17 Amazon Technologies, Inc. Speculative reads
US9432298B1 (en) 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
US8792511B2 (en) 2011-04-18 2014-07-29 Lsi Corporation System and method for split ring first in first out buffer memory with priority
JP5888050B2 (ja) 2012-03-27 2016-03-16 株式会社ソシオネクスト 半導体集積回路およびそのdma制御方法
US8922243B2 (en) 2012-12-23 2014-12-30 Advanced Micro Devices, Inc. Die-stacked memory device with reconfigurable logic
KR20140024593A (ko) 2012-08-20 2014-03-03 에스케이하이닉스 주식회사 시스템 패키지
US9235513B2 (en) * 2012-10-18 2016-01-12 International Business Machines Corporation Cache management based on physical memory device characteristics
KR102029806B1 (ko) 2012-11-27 2019-10-08 삼성전자주식회사 선입선출 버퍼를 포함하는 시스템 온 칩, 응용 프로세서 및 그것을 포함하는 모바일 장치
US9170948B2 (en) 2012-12-23 2015-10-27 Advanced Micro Devices, Inc. Cache coherency using die-stacked memory device with logic die
US9135185B2 (en) 2012-12-23 2015-09-15 Advanced Micro Devices, Inc. Die-stacked memory device providing data translation
KR102070136B1 (ko) 2013-05-03 2020-01-28 삼성전자주식회사 프리페치를 위한 캐시 제어 장치 및 그 캐시 제어 장치를 이용한 프리페치 방법
KR20140147213A (ko) 2013-06-19 2014-12-30 에스케이하이닉스 주식회사 프리페치 동작을 제어하는 반도체 장치
GB2516831B (en) 2013-07-31 2020-10-21 Advanced Risc Mach Ltd Error code management in systems permitting partial writes
US9612975B2 (en) 2014-11-20 2017-04-04 Samsung Electronics Co., Ltd. Page cache device and method for efficient mapping
CN111935035B (zh) * 2015-05-22 2022-11-15 格雷研究有限公司 片上网络系统
US20170123796A1 (en) * 2015-10-29 2017-05-04 Intel Corporation Instruction and logic to prefetch information from a persistent memory
US10417134B2 (en) * 2016-11-10 2019-09-17 Oracle International Corporation Cache memory architecture and policies for accelerating graph algorithms
US10649904B2 (en) * 2016-12-12 2020-05-12 Samsung Electronics Co., Ltd. System and method for store streaming detection and handling
JP6979777B2 (ja) 2017-03-22 2021-12-15 キヤノン株式会社 インターフェース装置およびその制御方法
US20180300238A1 (en) * 2017-04-17 2018-10-18 Balaji Vembu Adaptive cache sizing per workload
US10496561B2 (en) 2017-04-18 2019-12-03 Advanced Micro Devices, Inc. Resilient vertical stacked chip network for routing memory requests to a plurality of memory dies
KR102469811B1 (ko) 2017-12-20 2022-11-24 에스케이하이닉스 주식회사 서비스품질 제어를 위한 선입선출 버퍼 시스템
US10713173B2 (en) * 2018-09-06 2020-07-14 Intel Corporation Memory controller with pre-loader

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160041902A1 (en) * 2006-12-06 2016-02-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US20120311269A1 (en) * 2011-06-03 2012-12-06 Loh Gabriel H Non-uniform memory-aware cache management
US20140149653A1 (en) * 2012-11-26 2014-05-29 Arm Limited Variable mapping of memory accesses to regions within a memory

Also Published As

Publication number Publication date
CN111209227B (zh) 2023-08-18
US20200159671A1 (en) 2020-05-21
JP2020087409A (ja) 2020-06-04
US10860498B2 (en) 2020-12-08
CN111209227A (zh) 2020-05-29
TW202020674A (zh) 2020-06-01
KR20200059493A (ko) 2020-05-29

Similar Documents

Publication Publication Date Title
US11487661B2 (en) Converged memory device and operation method thereof
US11163699B2 (en) Managing least recently used cache using reduced memory footprint sequence container
US11290533B2 (en) Network storage device storing large amount of data
US10572150B2 (en) Memory network with memory nodes controlling memory accesses in the memory network
US9652405B1 (en) Persistence of page access heuristics in a memory centric architecture
JP7449063B2 (ja) メモリシステム及びメモリシステムの動作方法
US20230092541A1 (en) Method to minimize hot/cold page detection overhead on running workloads
WO2018022175A1 (en) Techniques to allocate regions of a multi level, multitechnology system memory to appropriate memory access initiators
US20200348871A1 (en) 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
KR102684940B1 (ko) 데이터 처리 시스템
US20230144038A1 (en) Memory pooling bandwidth multiplier using final level cache system
US10691625B2 (en) Converged memory device and operation method thereof
US11687443B2 (en) Tiered persistent memory allocation
US11016666B2 (en) Memory system and operating method thereof
KR20190123038A (ko) 메모리 시스템 및 그것의 동작방법
US20240211406A1 (en) Systems, methods, and apparatus for accessing data from memory or storage at a storage node
US20230229498A1 (en) Systems and methods with integrated memory pooling and direct swap caching
WO2023140911A1 (en) Systems and methods with integrated memory pooling and direct swap caching
CN118511151A (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