KR20170027922A - 복수의 랭크들을 형성하는 복수의 메모리 장치들 및 복수의 메모리 랭크들을 액세스하는 메모리 컨트롤러를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 - Google Patents

복수의 랭크들을 형성하는 복수의 메모리 장치들 및 복수의 메모리 랭크들을 액세스하는 메모리 컨트롤러를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 Download PDF

Info

Publication number
KR20170027922A
KR20170027922A KR1020150124264A KR20150124264A KR20170027922A KR 20170027922 A KR20170027922 A KR 20170027922A KR 1020150124264 A KR1020150124264 A KR 1020150124264A KR 20150124264 A KR20150124264 A KR 20150124264A KR 20170027922 A KR20170027922 A KR 20170027922A
Authority
KR
South Korea
Prior art keywords
memory
slab
rank
size
request
Prior art date
Application number
KR1020150124264A
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 KR1020150124264A priority Critical patent/KR20170027922A/ko
Priority to US15/182,038 priority patent/US20170062025A1/en
Publication of KR20170027922A publication Critical patent/KR20170027922A/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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3225Monitoring of peripheral devices of memory 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • 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

Abstract

본 발명은 메모리 시스템에 관한 것이다. 본 발명의 메모리 시스템은,
복수의 메모리 그룹들을 형성하는 복수의 메모리 장치들, 그리고 복수의 메모리 그룹들을 독립적으로 액세스하도록 구성되는 메모리 컨트롤러를 포함한다. 메모리 컨트롤러는, 서로 다른 사이즈들을 갖는 할당 단위들을 서로 다른 메모리 그룹들에 할당하도록 구성된다.

Description

복수의 랭크들을 형성하는 복수의 메모리 장치들 및 복수의 메모리 랭크들을 액세스하는 메모리 컨트롤러를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법{MEMORY SYSTEM INCLUDING PLURAL MEMORY DEVICE FORMING PLURAL RANKS AND MEMORY CONTROLLER AND OPERATING METHOD OF MEMORY SYSTEM}
본 발명은 반도체 메모리에 관한 것으로, 더 상세하게는 메모리 장치들 및 메모리 컨트롤러를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법에 관한 것이다.
메모리 시스템은 사용자 데이터를 저장하고 저장된 데이터를 사용자에게 제공하는 데에 사용된다. 메모리 시스템은 스마트폰, 스마트패드, 개인용 컴퓨터 등과 같은 다양한 개인용 장치들에서 사용될 수 있고, 데이터센터와 같은 기업용 장치에서 사용될 수 있다.
데이터센터는 어플리케이션 서버, 데이터베이스 서버, 그리고 캐시 서버를 포함한다. 어플리케이션 서버는 클라이언트의 요청을 처리하고, 클라이언트의 요청에 따라 데이터베이스 서버 또는 캐시 서버를 액세스할 수 있다. 데이터베이스 서버는 어플리케이션 서버에 의해 처리된 데이터를 저장하고, 어플리케이션 서버의 요청에 따라 저장된 데이터를 어플리케이션 서버로 제공할 수 있다. 캐시 서버는 데이터베이스 서버에 저장된 데이터를 임시로 저장하며, 데이터베이스 서버보다 더 높은 응답 속도로 어플리케이션 서버의 요청에 응답할 수 있다.
메모리 시스템은 어플리케이션 서버, 데이터베이스 서버, 그리고 캐시 서버에 제공된다. 메모리 시스템은 데이터센터에 대규모로 제공되며, 따라서 대규모의 전력을 소비한다. 메모리 시스템의 소비 전력은 데이터센터의 소비 전력의 대부분을 차지한다. 따라서, 데이터센터의 소비 전력을 감소시키기 위하여, 메모리 시스템의 소비 전력을 감소시키기 위한 새로운 장치 또는 방법에 대한 연구가 요구되고 있다.
본 발명의 목적은 소비 전력이 감소된 메모리 시스템 및 메모리 시스템의 동작 방법을 제공하는 데에 있다.
본 발명의 실시 예들에 따른 메모리 시스템은 복수의 메모리 그룹들을 형성하는 복수의 메모리 장치들, 그리고 복수의 메모리 그룹들을 독립적으로 액세스하도록 구성되는 메모리 컨트롤러를 포함한다. 메모리 컨트롤러는 서로 다른 사이즈들을 갖는 할당 단위들을 서로 다른 메모리 그룹들에 할당하도록 구성된다.
제1 메모리 그룹 및 제2 메모리 그룹을 형성하는 복수의 메모리 장치들 및 메모리 컨트롤러를 포함하는 본 발명의 실시 예들에 따른 메모리 시스템의 동작 방법은, 메모리 컨트롤러가 쓰기 요청을 수신하는 단계, 쓰기 요청과 연관된 쓰기 데이터의 사이즈가 기준 사이즈 이하이면 메모리 컨트롤러가 쓰기 데이터를 상기 제1 메모리 그룹에 기입하는 단계, 그리고 쓰기 요청과 연관된 쓰기 데이터의 사이즈가 기준 사이즈보다 크면, 메모리 컨트롤러가 쓰기 데이터를 제2 메모리 그룹에 기입하는 단계를 포함한다. 제1 메모리 그룹 및 제2 메모리 그룹은 각각 독립적으로 절전 모드로 진입한다.
본 발명의 실시 예들에 따르면, 쓰기 데이터의 사이즈에 따라 쓰기 데이터가 저장될 랭크가 결정된다. 유사한 사이즈의 쓰기 데이터들이 동일한 랭크에 저장되므로, 액세스 빈도가 특정한 랭크에 집중된다. 따라서, 메모리 시스템의 일부가 절전 모드로 진입할 수 있으며, 소비 전력이 감소된 메모리 시스템 및 메모리 시스템의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 2는 메모리 할당기가 제1 내지 제4 랭크들을 조직화하는 방법을 보여주는 순서도이다.
도 3은 메모리 할당기에 의해 설정된 슬랩 클래스들의 예를 보여준다.
도 4는 메모리 할당기가 제1 내지 제4 슬랩 클래스들에 기반하여 제1 내지 제4 랭크들을 조직화한 예를 보여준다.
도 5는 메모리 할당기가 쓰기 데이터에 슬랩을 할당하는 방법을 보여주는 순서도이다.
도 6은 슬랩 클래스들이 랭크들에 조직화되지 않은 경우에 랭크들이 액세스되는 예를 보여준다.
도 7은 슬랩 클래스들이 랭크들에 조직화된 경우에 랭크들이 액세스되는 예를 보여준다.
도 8은 본 발명의 실시 예에 따른 메모리 할당기를 보여주는 블록도이다.
도 9는 무효화 레지스터가 저장하는 무효화 어드레스의 예를 보여주는 테이블이다.
도 10은 이전 인덱스 레지스터가 저장하는 이전 인덱스의 예를 보여주는 테이블이다.
도 11은 어드레스 테이블의 예를 보여주는 테이블이다.
도 12는 메모리 할당기가 무효화 어드레스, 이전 인덱스 및 어드레스 테이블을 이용하여 슬랩을 할당하는 방법을 보여주는 순서도이다.
도 13은 도 1의 메모리 시스템의 응용 예를 보여주는 블록도이다.
도 14는 본 발명의 실시 예에 따른 메모리 시스템이 적용된 컴퓨터 네트워크를 보여준다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템(100)을 보여주는 블록도이다. 도 1을 참조하면, 메모리 시스템(100)은 복수의 메모리 장치들(110) 및 메모리 컨트롤러(120)를 포함한다.
복수의 메모리 장치들(110)은 메모리 컨트롤러(120)의 제어에 따라 쓰기 및 읽기를 수행할 수 있다. 복수의 메모리 장치들(110)은 DRAM (Dynamic Random Access Memory), SRAM (Static RAM) 등과 같은 휘발성 메모리 또는 플래시 메모리, PRAM (Phase-change RAM), FeRAM (Ferroelectric RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다.
복수의 메모리 장치들(110)은 복수의 메모리 그룹들을 형성할 수 있다. 복수의 메모리 그룹들은 서로 독립적으로 외부의 요청을 처리하며, 서로 독립적으로 절전 모드로 진입할 수 있다. 예시적으로, 간결한 설명을 위하여, 복수의 메모리 장치들(110)은 제1 내지 제4 랭크들(RANK1~RANK4)을 형성하는 것으로 가정된다. 제1 내지 제4 랭크들(RANK1~RANK4)은 DIMM (Dual In-line Memory Module) 인터페이스에 대응할 수 있다. 그러나, 본 발명의 기술적 사상은 DIMM 인터페이스의 랭크들에 한정되지 않는다.
각 랭크는 메모리 컨트롤러(120)에 의해 독립적으로 액세스될 수 있다. 선택된 랭크에 속한 메모리 장치들(110)은 메모리 컨트롤러(120)에 의해 병렬적으로 동시에 액세스될 수 있다. 제1 내지 제4 랭크들(RANK1~RANK4)을 형성하는 메모리 장치들(110)은 동일한 구조 및 동일한 특성을 가질 수 있다. 예를 들어 메모리 장치들(110)은 동종의(homogeneous) 메모리 장치들일 수 있다. 간결한 설명을 위하여 메모리 장치들(110)이 제1 내지 제4 랭크들(RANK1~RANK4)을 형성하는 것으로 가정되나, 랭크들의 수는 한정되지 않는다.
메모리 컨트롤러(120)는 외부의 호스트 장치의 요청에 따라, 각 랭크의 단위로 메모리 장치들(110)을 액세스할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 외부의 호스트 장치의 요청에 따라 제1 내지 제4 랭크들(RANK1~RANK4) 중 하나의 랭크를 선택할 수 있다. 메모리 컨트롤러(120)는 선택된 랭크의 메모리 장치들(110)을 액세스할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 선택된 랭크의 메모리 장치들(110)을 병렬적으로 동시에 액세스할 수 있다. 각 메모리 장치의 입출력 라인들의 수가 8이고, 선택된 랭크의 메모리 장치들(110)의 수가 9인 경우, 메모리 컨트롤러(120)는 72개의 입출력 라인들을 통해 선택된 랭크의 메모리 장치들(110)을 동시에 액세스할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 DIMM (Dual In-line Memory Module)의 인터페이스 방식에 기반하여 제1 내지 제4 랭크들(RANK1~RANK4) 및 메모리 장치들(110)을 액세스할 수 있다.
메모리 컨트롤러(120)는 메모리 할당기(130)를 포함한다. 메모리 할당기(120)는 쓰기 데이터의 사이즈에 따라 제1 내지 제4 랭크들(RANK1~RANK4)의 저장 공간들을 조직화(organize)할 수 있다. 메모리 할당기(130)는 제1 내지 제4 랭크들(RANK1~RANK4)의 조직화에 기반하여, 외부의 호스트 장치로부터 수신되는 쓰기 데이터에 제1 내지 제4 랭크들(RANK1~RANK4) 중 하나의 랭크를 할당할 수 있다. 메모리 할당기(130)는 후술되는 도면들을 참조하여 더 상세하게 설명된다.
도 2는 메모리 할당기(130)가 제1 내지 제4 랭크들(RANK1~RANK4)을 조직화하는 방법을 보여주는 순서도이다. 예시적으로, 도 2의 조직화는 메모리 시스템(100)의 초기화 시에 또는 메모리 시스템(100)이 외부의 호스트 장치의 요청에 따라 재구성될 때에 수행될 수 있다. 예를 들어, 메모리 할당기(130)는 할당 단위(또는 할당 사이즈) 및 할당 클래스에 기반하여 제1 내지 제4 랭크들(RANK1~RANK4)을 조직화할 수 있다.
각 할당 단위(또는 각 할당 사이즈)는 시작 어드레스 및 종료 어드레스, 시작 어드레스 및 섹터 카운트, 시작 어드레스 및 오프셋, 인덱스 및 세그먼트 등으로 식별되는 저장 공간일 수 있다. 동일한 사이즈들을 갖는 할당 단위들(또는 할당 사이즈들)는 동일한 할당 클래스에 속할 수 있다. 서로 다른 사이즈들을 갖는 할당 단위들(또는 할당 사이즈들)은 서로 다른 할당 클래스에 속할 수 있다. 간결한 설명을 위하여, 할당 단위(또는 할당 사이즈)는 슬랩(slab)이고, 할당 클래스는 슬랩 클래스(slab class)인 것으로 설명된다. 그러나, 본 발명의 기술적 사상은 슬랩 및 슬랩 클래스에 한정되지 않는다.
도 1 및 도 2를 참조하면, S110 단계에서, 메모리 할당기(130)는 슬랩 클래스들(slab classes)을 설정한다. 예를 들어, 각 슬랩 클래스는 동일한 사이즈들을 갖는 동종의(homogeneous) 슬랩들(slabs)을 포함할 수 있다. 서로 다른 슬랩 클래스들은 서로 다른 사이즈들을 갖는 이종의(heterogeneous) 슬랩들을 포함할 수 있다. 각 슬랩은 쓰기 데이터에 할당되는 기본 단위일 수 있다.
예를 들어, 메모리 할당기(130)는 슬랩의 제1 사이즈를 선택할 수 있다. 메모리 할당기(130)는 제1 사이즈들을 갖는 슬랩들로 제1 슬랩 클래스를 형성할 수 있다. 메모리 할당기(130)는 폼 팩터(form factor)를 선택할 수 있다. 예를 들어, 메모리 할당기(130)는 '2'의 폼 팩터를 선택할 수 있다. 메모리 할당기(130)는 제1 사이즈에 폼 팩터를 곱하여 제2 사이즈를 선택할 수 있다. 메모리 할당기(130)는 제2 사이즈들을 갖는 슬랩들로 제2 슬랩 클래스를 형성할 수 있다. 마찬가지로, 메모리 할당기(130)는 제k-1 사이즈에 폼 팩터를 곱하여 제k 사이즈를 선택할 수 있다. 메모리 할당기(130)는 제k 사이즈들을 갖는 슬랩들로 제k 슬랩 클래스를 형성할 수 있다. 폼 팩터 및 슬랩 클래스들의 수는 조절될 수 있으며, 한정되지 않는다.
S120 단계에서, 메모리 할당기(130)는 슬랩 클래스들을 랭크들(RANK1~RANK4)에 각각 할당한다. 예를 들어, 메모리 할당기(130)는 하나의 슬랩 클래스를 하나 또는 둘 이상의 랭크들에 할당할 수 있다. 다른 예로서, 메모리 할당기(130)는 하나의 랭크에 하나 또는 둘 이상의 슬랩 클래스들을 할당할 수 있다.
도 3은 메모리 할당기(130)에 의해 설정된 슬랩 클래스들의 예를 보여준다. 예시적으로, 메모리 장치들(110)의 가상(virtual) 또는 논리적(logical) 저장 공간에 슬랩 클래스들이 설정된 예가 도 3에 도시되어 있다.
도 1 및 도 3을 참조하면, 메모리 할당기(130)는 메모리 장치들(110)의 가상(또는 논리적) 저장 공간에 제1 내지 제4 슬랩 클래스들(SC1~SC4)을 설정할 수 있다. 메모리 할당기(130)는 가장 작은 사이즈들을 갖는 슬랩들을 포함하는 제1 슬랩 클래스(SC1)를 설정할 수 있다. 메모리 할당기(130)는 제1 슬랩 클래스(SC1)의 각 슬랩의 사이즈에 폼 팩터를 곱하여 제2 슬랩 클래스(SC2)를 설정할 수 있다. 예를 들어, 폼 팩터는 '4'인 것으로 도시되나 한정되지 않는다. 메모리 할당기(130)는 제2 슬랩 클래스(SC2)의 각 슬랩의 사이즈에 폼 팩터를 곱하여 제3 슬랩 클래스(SC3)를 설정할 수 있다. 메모리 할당기(130)는 제3 슬랩 클래스(SC3)의 각 슬랩의 사이즈에 폼 팩터를 곱하여 제4 슬랩 클래스(SC4)를 설정할 수 있다. 예시적으로, 각 슬랩의 사이즈에 관계 없이, 제1 내지 제4 슬랩 클래스들(SC1~SC4)은 동일한 사이즈들을 가질 수 있다.
예시적으로, 슬랩 클래스들(SC1~SC4)이 할당되지 않는 예비 영역(RA)이 존재할 수 있다. 예를 들어, 예비 영역(RA)은 제1 내지 제4 슬랩 클래스들(SC1~SC4) 중에서 저장 공간이 부족한 슬랩 클래스를 확장하는 데에 사용될 수 있다.
예를 들어, 예비 영역(RA)은 외부의 호스트 장치에 의해 직접 액세스되는 영역일 수 있다. 외부의 호스트 장치는 예비 영역(RA)에 페이지를 할당하고, 할당된 페이지에 데이터를 기입할 수 있다. 페이지의 사이즈는 각 슬랩의 사이즈보다 클 수 있다. 예를 들어, 외부의 호스트 장치가 메모리 시스템(100)에 기입할 쓰기 데이터의 사이즈가 페이지에 대응하는 경우, 외부의 호스트 장치는 예비 영역(RA)에 페이지를 할당할 수 있다. 외부의 호스트 장치가 메모리 시스템(100)에 기입할 쓰기 데이터의 사이즈가 제1 내지 제4 슬랩 클래스들(SC1~SC4)의 슬랩들 중 하나에 대응하는 경우, 외부의 호스트 장치는 슬랩의 할당을 메모리 할당기(130)에 요청할 수 있다.
다른 예로서, 예비 영역(RA)이 존재하지 않을 수 있다. 메모리 할당기(130)는 메모리 장치들(110)의 가상(또는 논리적) 저장 공간의 전체에 슬랩 클래스들 및 슬랩들을 설정할 수 있다. 메모리 할당기(130)는 외부의 호스트가 쓰기 데이터의 기입을 요청할 때에, 조직화된 슬랩 클래스들의 슬랩들 중 하나를 할당할 수 있다. 메모리 컨트롤러(120)는 외부의 호스트 장치가 메모리 시스템(100)에 직접 페이지를 할당하는 것을 금지할 수 있다.
도 4는 메모리 할당기(130)가 제1 내지 제4 슬랩 클래스들(SC1~SC4)에 기반하여 제1 내지 제4 랭크들(RANK1~RANK4)을 조직화한 예를 보여준다. 예시적으로, 하나의 슬랩 클래스에 하나의 슬랩 클래스가 속한 때의 예가 도 4에 도시되어 있다.
도 4를 참조하면, 제1 랭크(RANK1)에 제1 슬랩 클래스(SC1) 및 제1 예비 영역(RA_1)이 할당될 수 있다. 제2 랭크(RANK2)에 제2 슬랩 클래스(SC2) 및 제2 예비 영역(RA_2)이 할당될 수 있다. 제3 랭크(RANK3)에 제3 슬랩 클래스(SC3) 및 제3 예비 영역(RA_3)이 할당될 수 있다. 제4 랭크(RANK4)에 제4 슬랩 클래스(SC4) 및 제4 예비 영역(RA_4)이 할당될 수 있다.
예시적으로, 메모리 할당기(130)는 서로 다른 슬랩 클래스들을 서로 다른 랭크들에 할당할 수 있다. 즉, 메모리 할당기(130)는 서로 다른 슬랩 클래스들의 액세스들을 독립적으로 분리할 수 있다.
도 4에서, 하나의 랭크에 하나의 슬랩 클래스가 대응하는 것으로 도시되어 있다. 그러나, 복수의 랭크들에 하나의 슬랩 클래스가 할당될 수 있다. 또한, 하나의 랭크에 둘 이상의 슬랩 클래스들이 할당될 수 있다. 이 경우, 하나의 랭크에 할당되는 둘 이상의 슬랩 클래스들은 가장 인접한 슬랩 클래스들일 수 있다. 예를 들어, 가장 인접한 제k-1 및 제k 슬랩 클래스들이 하나의 랭크에 할당될 수 있다.
도 5는 메모리 할당기(130)가 쓰기 데이터에 슬랩을 할당하는 방법을 보여주는 순서도이다. 도 1 및 도 5를 참조하면, S210 단계에서, 메모리 컨트롤러(120)는 쓰기 요청을 수신한다. 쓰기 요청은 쓰기 데이터와 함께 또는 쓰기 데이터를 포함하여 수신될 수 있다.
S220 단계에서, 메모리 할당기(130)는 쓰기 데이터의 사이즈가 제1 기준 사이즈(RS1) 이하인지 판별한다. 예를 들어, 제1 기준 사이즈(RS1)는 제1 슬랩 클래스(SC1)의 각 슬랩의 사이즈일 수 있다.
쓰기 데이터의 사이즈가 제1 기준 사이즈(RS1) 이하이면, S230 단계에서, 메모리 할당기(130)는 제1 랭크(RANK1)에 속한 슬랩, 즉 제1 슬랩 클래스(SC1)의 슬랩을 쓰기 데이터에 할당할 수 있다. 쓰기 데이터의 사이즈가 제1 기준 사이즈(RS1)보다 크면, S240 단계가 수행된다.
S240 단계에서, 메모리 할당기(130)는 쓰기 데이터의 사이즈가 제1 기준 사이즈(RS1)보다 크고 제2 기준 사이즈(RS2) 이하인지 판별한다. 예를 들어, 제2 기준 사이즈(RS2)는 제2 슬랩 클래스(SC2)의 각 슬랩의 사이즈일 수 있다.
쓰기 데이터의 사이즈가 제1 기준 사이즈(RS1)보다 크고 제2 기준 사이즈(RS2) 이하이면, S250 단계에서, 메모리 할당기(130)는 제2 랭크(RANK2)에 속한 슬랩, 즉 제2 슬랩 클래스(SC2)의 슬랩을 쓰기 데이터에 할당할 수 있다. 쓰기 데이터의 사이즈가 제2 기준 사이즈(RS2)보다 크면, S260 단계가 수행된다.
S260 단계에서, 메모리 할당기(130)는 쓰기 데이터의 사이즈가 제2 기준 사이즈(RS2)보다 크고 제3 기준 사이즈(RS3) 이하인지 판별한다. 예를 들어, 제3 기준 사이즈(RS3)는 제3 슬랩 클래스(SC3)의 각 슬랩의 사이즈일 수 있다.
쓰기 데이터의 사이즈가 제2 기준 사이즈(RS2)보다 크고 제3 기준 사이즈(RS3) 이하이면, S270 단계에서, 메모리 할당기(130)는 제3 랭크(RANK3)에 속한 슬랩, 즉 제3 슬랩 클래스(SC3)의 슬랩을 쓰기 데이터에 할당할 수 있다.
쓰기 데이터의 사이즈가 제3 기준 사이즈(RS3)보다 크면, S280 단계가 수행된다. S280 단계에서, 메모리 할당기(130)는 제4 랭크(RANK4)에 속한 슬랩, 즉 제4 슬랩 클래스(SC4)의 슬랩을 쓰기 데이터에 할당할 수 있다.
도 1 내지 도 4를 참조하여 설명된 바와 같이, 메모리 할당기(130)는 서로 다른 슬랩 클래스들을 서로 다른 랭크들에 설정할 수 있다. 즉, 서로 다른 슬랩 클래스들이 액세스될 때에, 서로 다른 랭크들이 액세스된다.
메모리 시스템(100)은 키-값 저장(key-value store)에 기반한 데이터 구조를 구현하는 데에 사용될 수 있다. 예를 들어, 메모리 시스템(100)에 데이터를 기입할 때에, 외부의 호스트 장치는 메모리 시스템(100)이 키 및 값을 전송할 수 있다. 메모리 컨트롤러(120)는 키에 대해 해시 동작(hash operation)을 수행하여 해시 데이터를 생성할 수 있다. 예를 들어, 해시 데이터는 값이 저장될 위치에 대한 정보를 포함할 수 있다. 메모리 할당기(130)는 값의 사이즈에 따라 슬랩 클래스를 선택할 수 있다. 메모리 할당기(130)는 선택된 슬랩 클래스의 슬랩을 값에 할당하고, 선택된 슬랩 클래스 또는 선택된 슬랩 클래스의 선택된 슬랩을 해시 데이터와 매핑할 수 있다. 메모리 컨트롤러(120)는 해시 데이터와 연관된 매핑 정보를 별도로 저장할 수 있다. 예를 들어, 메모리 할당기(120)는 키 및 해시 데이터의 매핑 정보가 저장될 슬랩을 할당할 수 있다.
메모리 시스템(100)으로부터 데이터를 읽을 때에, 외부의 호스트 장치는 메모리 시스템(100)에 키를 전송할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 키에 대해 해시 동작을 수행하여 해시 데이터를 생성할 수 있다. 다른 예로서, 메모리 컨트롤러(120)는 수신된 키를 이용하여 쓰기 시에 저장된 해시 데이터를 읽을 수 있다. 메모리 시스템(100)은 해시 데이터의 매핑 정보가 가리키는 슬랩 클래스의 슬랩으로부터 값을 읽을 수 있다.
키-값 저장 기반의 데이터 구조에서, 값의 사이즈에 따라 액세스 빈도가 달라지는 특징이 있다. 즉, 슬랩 클래스 별로 액세스 빈도가 달라지는 특징이 있다. 본 발명의 실시 예에 따른 메모리 시스템(100)은 서로 다른 슬랩 클래스들을 서로 다른 랭크들로 분리한다. 따라서, 본 발명의 실시 예에 따른 메모리 시스템(100)에서, 랭크 별로 액세스 빈도가 달라지며, 액세스 빈도가 낮은 랭크는 절전 모드로 진입할 수 있다. 따라서, 메모리 시스템(100)의 소비 전력이 감소된다.
도 6은 슬랩 클래스들이 랭크들에 조직화되지 않은 경우에 랭크들이 액세스되는 예를 보여준다. 도 6에서, 가로 축은 시간(T)을 가리킨다.
슬랩 클래스들이 랭크들에 조직화되지 않은 경우, 하나의 슬랩 클래스에 속한 슬랩들이 복수의 랭크들이 분산되어 설정될 수 있다. 하나의 랭크에 서로 다른 사이즈들을 갖는 슬랩들이 설정될 수 있다.
도 1 및 도 6을 참조하면, 제1 요청 그래프(RG1)는 제1 랭크(RANK1)에 대한 액세스 요청들을 보여준다. 제1 데이터 그래프(DG1)는 제1 랭크(RANK1)에서 발생하는 데이터 액세스들을 보여준다. 제2 요청 그래프(RG2)는 제2 랭크(RANK2)에 대한 액세스 요청들을 보여준다. 제2 데이터 그래프(DG2)는 제2 랭크(RANK2)에서 발생하는 데이터 액세스들을 보여준다.
우선, 제1 랭크(RANK1)에 대해 제1 요청(R1)이 발생하고, 제2 랭크(RANK2)에 대해 제2 및 제3 요청들(R2, R3)이 발생할 수 있다. 예시적으로, 제1 및 제2 요청들(R1, R2)은 제1 슬랩 클래스(SC1)의 슬랩들에 대한 액세스 요청이고, 제3 요청(R3)은 제2 슬랩 클래스(SC2)의 슬랩에 대한 액세스 요청일 수 있다.
제1 요청(R1)에 따라, 제1 랭크(RANK1)에서 제1 데이터(D1)가 액세스된다. 제2 및 제3 요청들(R2, R3)에 따라, 제2 랭크(RANK2)에서 제2 및 제3 데이터(D2, D3)가 액세스된다.
이후에, 제1 랭크(RANK1)에서 제4 요청(R4)이 발생하고, 제2 랭크(RANK2)에서 제5 요청(R5)이 발생한다. 제4 및 제5 요청들(R4, R5)은 각각 제1 슬랩 클래스(SC1)의 슬랩들에 대응할 수 있다. 제4 요청(R4)에 따라 제1 랭크(RANK1)에서 제4 데이터(D4)가 액세스된다. 제5 요청(R5)에 따라 제2 랭크(RANK2)에서 제5 데이터(D5)가 액세스된다.
이후에, 제1 랭크(RANK1)에서 제6 및 제7 요청들(R6, R7)이 발생하고, 제2 랭크(RANK2)에서 제8 요청(R8)이 발생한다. 제6 요청은 제2 슬랩 클래스(SC2)의 슬랩에 대응하고, 제7 및 제8 요청들(R7, R8)은 각각 제1 슬랩 클래스(SC1)의 슬랩들에 대응할 수 있다. 제6 및 제7 요청들(R6, R7)에 따라 제1 랭크(RANK1)에서 제6 및 제7 데이터(D6, D7)가 액세스된다. 제8 요청(R8)에 따라 제2 랭크(RANK2)에서 제8 데이터(D8)가 액세스된다.
이후에, 제1 랭크(RANK1)에서 제9 요청(R9)이 발생하고, 제2 랭크(RANK2)에서 제10 요청(R10)이 발생한다. 제9 및 제10 요청들(R9, R10)은 각각 제1 슬랩 클래스(SC1)의 슬랩들에 대응할 수 있다. 제9 요청(R9)에 따라 제1 랭크(RANK1)에서 제9 데이터(D9)가 액세스된다. 제10 요청(R10)에 따라 제2 랭크(RANK2)에서 제10 데이터(D10)가 액세스된다.
이후에, 제1 랭크(RANK1)에서 제11 요청(R11)이 발생하고, 제2 랭크(RANK2)에서 제12 요청(R12)이 발생한다. 제11 및 제12 요청들(R11, R12)은 각각 제1 슬랩 클래스(SC1)의 슬랩들에 대응할 수 있다. 제11 요청(R11)에 따라 제1 랭크(RANK1)에서 제11 데이터(D11)가 액세스된다. 제12 요청(R12)에 따라 제2 랭크(RANK2)에서 제12 데이터(D12)가 액세스된다.
이후에, 제1 랭크(RANK1)에서 제13 요청(R13)이 발생하고, 제2 랭크(RANK2)에서 제14 요청(R14)이 발생한다. 제13 및 제14 요청들(R13, R14)은 각각 제1 슬랩 클래스(SC1)의 슬랩들에 대응할 수 있다. 제13 요청(R13)에 따라 제1 랭크(RANK1)에서 제13 데이터(D13)가 액세스된다. 제14 요청(R14)에 따라 제2 랭크(RANK2)에서 제14 데이터(D14)가 액세스된다.
도 6에 도시된 바와 같이, 더 작은 사이즈에 대응하는 제1 슬랩 클래스(SC1)의 슬랩들의 액세스 빈도는 더 큰 사이즈에 대응하는 제2 슬랩 클래스(SC2)의 슬랩들의 액세스 빈도보다 높을 수 있다. 슬랩 클래스들(SC1, SC2)이 랭크들(RANK1, RANK2)에 대해 조직화되지 않은 경우, 랭크들(RANK1, RANK2)에 대한 액세스는 랭크들(RANK1, RANK2)에서 분산되어 발생할 수 있다.
도 7은 슬랩 클래스들이 랭크들에 조직화된 경우에 랭크들이 액세스되는 예를 보여준다. 도 7에서, 가로 축은 시간(T)을 가리킨다.
슬랩 클래스들이 랭크들에 조직화되지 않은 경우, 하나의 슬랩 클래스에 속한 슬랩들이 복수의 랭크들이 분산되어 설정될 수 있다. 하나의 랭크에 서로 다른 사이즈들을 갖는 슬랩들이 설정될 수 있다.
도 1 및 도 7을 참조하면, 제1 요청 그래프(RG1)는 제1 랭크(RANK1)에 대한 액세스 요청들을 보여준다. 제1 데이터 그래프(DG1)는 제1 랭크(RANK1)에서 발생하는 데이터 액세스들을 보여준다. 제2 요청 그래프(RG2)는 제2 랭크(RANK2)에 대한 액세스 요청들을 보여준다. 제2 데이터 그래프(DG2)는 제2 랭크(RANK2)에서 발생하는 데이터 액세스들을 보여준다.
도 6에서 설명된 것과 같이, 도 7에서 제1 내지 제14 요청들(R1~R14)이 발생할 수 있다. 제1 내지 제14 요청들(R1~R14)에 따라 제1 내지 제14 데이터(D1~D14)가 액세스될 수 있다.
도 6을 참조하여 설명된 것과 달리, 제1 슬랩 클래스(SC1)는 제1 랭크(RANK1)에 설정되고, 제2 슬랩 클래스(SC2)는 제2 랭크(RANK2)에 설정될 수 있다.
도 6 및 도 7을 비교하면, 제1 및 제2 슬랩 클래스들(SC1, SC2)이 제1 및 제2 랭크들(RANK1, RANK2)에 각각 설정된 경우, 제2 랭크(RANk2)의 액세스 빈도가 감소하는 것으로 나타난다. 따라서, 제2 랭크(RANK2)에서 유휴 시간이 발생하며, 제2 랭크(RANK2)가 절전 모드로 진입할 수 있다. 즉, 메모리 시스템(100)의 소비 전력이 감소된다.
도 8은 본 발명의 실시 예에 따른 메모리 할당기(130)를 보여주는 블록도이다. 도 1 및 도 8을 참조하면, 메모리 할당기(130)는 요청 생성기(131), 무효화 체크 회로(132), 무효화 레지스터(133), 어드레스 체크 회로(134), 그리고 이전 인덱스 레지스터(135)를 포함한다.
요청 생성기(131)는 메모리 컨트롤러(120)로부터 요청 사이즈(RS) 및 요청 카운트(RC)를 수신할 수 있다. 예를 들어, 요청 사이즈(RS)는 메모리 컨트롤러(120)가 요청하는 슬랩의 사이즈에 대한 정보를 포함할 수 있다. 요청 카운트(RC)는 메모리 컨트롤러(120)가 요청하는 슬랩들의 수에 대한 정보를 포함할 수 있다.
요청 사이즈(RS) 및 요청 카운트(RC)에 따라, 요청 생성기(131)는 목표 랭크 정보(TR)를 출력할 수 있다. 예를 들어, 요청 생성기(131)는 요청 사이즈(RS)에 대응하는 슬랩이 속한 슬랩 클래스가 설정된 랭크를 선택하고, 선택된 랭크를 가리키는 목표 랭크 정보(TR)를 출력할 수 있다. 요청 생성기(131)는 요청 카운트(RC)가 가리키는 값에 해당하는 횟수만큼 목표 랭크 정보(TR)를 출력할 수 있다.
무효화 체크 회로(132)는 요청 생성기(131)로부터 목표 랭크 정보(TR)를 수신한다. 무효화 체크 회로(132)는 무효화 레지스터(133)를 참조하여, 목표 랭크와 연관된 정보가 무효화 레지스터(133)에 저장되어 있는지 판별할 수 있다.
무효화 레지스터(133)는 무효화 어드레스(IA)에 대한 정보를 저장할 수 있다. 예를 들어, 무효화 레지스터(133)는 메모리 시스템(100)의 각 랭크 별로, 이전에 무효화(또는 해제(release))된 적어도 하나의 슬랩의 어드레스를 저장할 수 있다.
목표 랭크와 연관된 무효화 어드레스(IA)가 무효화 레지스터(133)에 저장되어 있는 경우, 무효화 체크 회로(132)는 무효화 어드레스(IA) 및 목표 랭크 정보(TR)를 어드레스 체크 회로(134)로 출력할 수 있다. 그리고, 무효화 체크 회로(132)는 출력된 무효화 어드레스(IA)를 무효화 레지스터(133)로부터 삭제할 수 있다. 목표 랭크와 연관된 무효화 어드레스(IA)가 무효화 레지스터(133)에 저장되어 있지 않은 경우, 무효화 체크 회로(132)는 목표 랭크 정보(TR)를 어드레스 체크 회로(134)로 출력할 수 있다.
어드레스 체크 회로(134)는 무효화 체크 회로(132)로부터 목표 랭크 정보(TR) 및 무효화 어드레스(IA) 또는 목표 랭크 정보(TR)를 수신할 수 있다. 예를 들어, 무효화 레지스터(133)에 목표 랭크와 연관된 무효화 어드레스(IA)가 저장된 경우, 어드레스 체크 회로(134)는 무효화 어드레스(IA) 및 목표 랭크 정보(TR)를 수신할 수 있다. 무효화 레지스터(133)에 목표 랭크와 연관된 무효화 어드레스(IA)가 저장되지 않은 경우, 어드레스 체크 회로(134)는 목표 랭크 정보(IA)를 수신할 수 있다.
무효화 어드레스(IA) 및 목표 랭크 정보(TR)가 수신되는 경우, 어드레스 체크 회로(134)는 목표 랭크 정보(TR)에 대응하는 랭크로부터 어드레스 테이블(AT)을 읽고, 어드레스 테이블(AT)을 이용하여, 무효화 어드레스(IA)가 가리키는 슬랩이 무효한 데이터를 저장하는 슬랩인지 유효한 데이터를 저장하는 슬랩인지 체크할 수 있다. 무효화 어드레스(IA)가 가리키는 슬랩이 무효한 데이터를 저장하는 경우, 어드레스 체크 회로(134)는 무효화 어드레스(IA)를 할당된 어드레스(AA)로 출력할 수 있다. 무효화 어드레스(IA)가 가리키는 슬랩이 유효한 데이터를 저장하는 경우, 어드레스 체크 회로(134)는 무효화 어드레스(IA)를 무시하고 목표 랭크 정보(TR)를 이용하여 슬랩을 할당할 수 있다.
목표 랭크 정보(TR)가 수신되거나 또는 목표 랭크 정보(TR)와 함께 수신된 무효화 어드레스(IA)가 잘못된 경우, 어드레스 체크 회로(134)는 이전 인덱스 레지스터(135)를 참조할 수 있다. 이전 인덱스 레지스터(135)는 목표 랭크에서 바로 이전에 할당된 슬랩의 인덱스를 가리키는 이전 인덱스(PI)를 저장할 수 있다. 이전 인덱스 레지스터(135)는 각 랭크 별로 이전 인덱스(PI)를 저장할 수 있다.
목표 랭크와 연관된 이전 인덱스(PI)가 이전 인덱스 레지스터(135)에 저장된 경우, 어드레스 체크 회로(134)는 이전 인덱스(PI)를 이용하여 어드레스 테이블(AT)을 검색할 수 있다. 예를 들어, 어드레스 체크 회로(134)는 목표 랭크 정보(TR)에 대응하는 랭크로부터 어드레스 테이블(AT)을 읽고, 이전 인덱스(PI)로부터 순차적으로 어드레스 테이블(AT)을 검색하여 무효한 데이터를 저장하는 슬랩을 검색할 수 있다.
목표 랭크와 연관된 이전 인덱스(PI)가 이전 인덱스 레지스터(135)에 저장되지 않은 경우, 어드레스 체크 회로(134)는 목표 랭크 정보(TR)에 대응하는 랭크로부터 어드레스 테이블(AT)을 읽고, 어드레스 테이블(AT)의 첫 번째 인덱스로부터 무효한 데이터를 저장하는 슬랩을 검색할 수 있다.
예시적으로, 어드레스 테이블(AT)은 각 랭크의 정해진 위치(또는 어드레스)에 저장될 수 있다. 따라서, 어드레스 체크 회로(134)는 각 랭크의 정해진 위치(또는 어드레스)에 대해 읽기를 수행하여 어드레스 테이블(AT)을 획득할 수 있다.
도 9는 무효화 레지스터(133)가 저장하는 무효화 어드레스(IA)의 예를 보여주는 테이블이다. 도 9를 참조하면, 제1 내지 제4 랭크들(RANK1~RANK4) 각각에 대해 2 개의 무효화 어드레스들이 저장될 수 있다.
도 10은 이전 인덱스 레지스터(135)가 저장하는 이전 인덱스(PI)의 예를 보여주는 테이블이다. 도 10을 참조하면, 제1 내지 제4 랭크들(RANK1~RANK4) 각각에 대해 바로 이전에 할당된 이전 인덱스 또는 이전 어드레스가 저장될 수 있다.
도 1, 도 4 및 도 11은 어드레스 테이블(AT)의 예를 보여주는 테이블이다. 도 11을 참조하면, 제1 랭크(RANK1)에 설정된 제1 슬랩 클래스(SC1)의 각 슬랩에 하나의 비트가 할당된다. 각 슬랩이 유효한 데이터를 저장하는 경우, 대응하는 비트는 '0'으로 설정될 수 있다. 각 슬랩이 무효한 데이터를 저장하는 경우, 대응하는 비트는 '1'로 설정될 수 있다.
각 랭크의 어드레스 테이블은 인덱스 및 세그먼트에 기반하여 관리될 수 있다. 하나의 인덱스에 복수의 세그먼트들이 대응한다. 세그먼트들의 수는 제1 내지 제4 랭크들(RANK1~RANK4)에서 동일할 수 있다. 예를 들어, 세그먼트들의 수는 각 랭크의 메모리 장치들의 입출력 라인들의 합에 대응할 수 있다. 즉, 각 인덱스에 대응하는 세그먼트들은 메모리 컨트롤러(120)가 한 번의 읽기를 통해 선택된 랭크로부터 읽을 수 있는 사이즈, 즉 입출력 대역폭에 대응할 수 있다.
예를 들어, 제1 랭크(RANK1)의 슬랩들은 제1 내지 제8 인덱스들(IDX1~IDX8) 및 제1 내지 제16 세그먼트들(S1~S16)에 기반하여 관리될 수 있다. 제2 랭크(RANK2)의 슬랩들은 제1 내지 제4 인덱스들(IDX1~IDX4) 및 제1 내지 제16 세그먼트들(S1~S16)에 기반하여 관리될 수 있다. 제3 랭크(RANK3)의 슬랩들은 제1 및 제2 인덱스들(IDX1, IDX2) 및 제1 내지 제16 세그먼트들(S1~S16)에 기반하여 관리될 수 있다. 제4 랭크(RANK4)의 슬랩들은 제1 인덱스(IDX1) 및 제1 내지 제16 세그먼트들(S1~S16)에 기반하여 관리될 수 있다.
각 랭크에 속한 슬랩들의 사이즈는 동일하므로, 슬랩들은 각 랭크의 저장 공간을 균등하게 분할하여 차지할 수 있다. 각 랭크에 속한 슬랩의 인덱스의 값 및 세그먼트의 값으로부터 각 랭크의 물리 어드레스가 계산될 수 있다.
도 12는 메모리 할당기(130)가 무효화 어드레스(IA), 이전 인덱스(PI) 및 어드레스 테이블(AT)을 이용하여 슬랩을 할당하는 방법을 보여주는 순서도이다. 도 1, 도 8 및 도 12를 참조하면, S210 단계에서, 요청 생성기(131)는 할당 요청을 수신할 수 있다. 예를 들어, 할당 요청은 요청 사이즈(RS) 및 요청 카운트(RC)를 포함할 수 있다. 간결한 설명을 위하여, 요청 카운트(RC)는 1인 것으로 가정된다.
S220 단계에서, 요청 생성기(131)는 요청 사이즈(RS)에 따라 목표 랭크를 선택한다. 요청 생성기(131)는 선택된 목표 랭크를 가리키는 목표 랭크 정보(TR)를 출력할 수 있다.
S230 단계에서, 무효화 체크 회로(132)는 무효화 레지스터(133)를 참조하여, 목표 랭크와 연관된 무효화 어드레스(IA)가 무효화 레지스터(133)에 저장되어 있는지 판별한다.
S240 단계에서, 무효화 어드레스(IA)가 무효화 레지스터(133)에 저장되어 있으면, S245 단계에서 무효화 어드레스(IA)에 대응하는 슬랩이 사용 가능한지 판별된다. 예를 들어, 어드레스 체크 회로(134)는 어드레스 테이블(AT)을 참조하여 무효화 어드레스(IA)에 대응하는 슬랩이 유효한 데이터를 저장하는지 판별할 수 있다. 무효화 어드레스(IA)에 대응하는 슬랩이 유효한 데이터를 저장하지 않으면, 무효화 어드레스(IA)가 가리키는 슬랩은 사용 가능한 것으로 판별된다. 이후에 무효화 어드레스(IA)가 가리키는 슬랩이 선택되며, S290 단계가 수행된다. 무효화 어드레스(IA)가 가리키는 슬랩이 유효한 데이터를 저장하면, 무효화 어드레스(IA)가 가리키는 슬랩은 사용 가능하지 않은 것으로 판별된다. 이후에 S250 단계가 수행된다.
무효화 어드레스(IA)가 저장되어 있지 않거나 또는 무효화 어드레스(IA)가 잘못된 경우, S250 단계가 수행된다. S250 단계에서, 어드레스 체크 회로(134)는 이전 인덱스 레지스터(135)를 참조하여 이전 인덱스(PI)가 존재하는지 판별한다. 목표 랭크와 연관된 이전 인덱스(PI)가 이전 인덱스 레지스터(135)에 저장되어 있으면, S270 단계에서, 어드레스 체크 회로(134)는 어드레스 테이블(AT)에서 이전 인덱스(PI)로부터 무효 데이터를 저장하는 슬랩을 검색한다. 그리고, 어드레스 체크 회로(134)는 검색된 슬랩을 선택할 수 있다. 목표 랭크와 연관된 이전 인덱스(PI)가 이전 인덱스 레지스터(135)에 저장되어 있지 않으면, S270 단계에서, 어드레스 체크 회로(134)는 어드레스 테이블(AT)에서 첫 번째 인덱스로부터 무효한 데이터를 저장하는 슬랩을 검색한다. 어드레스 체크 회로(134)는 검색된 슬랩을 선택할 수 있다.
이후에. S290 단계에서, 어드레스 체크 회로(134)는 선택된 슬랩의 어드레스를 할당할 수 있다.
상술된 바와 같이, 이전에 무효화된 슬랩을 가리키는 무효화 어드레스(IA)가 존재하는 경우, 어드레스 테이블(AT)의 검색이 수행되지 않는다. 따라서, 슬랩의 선택 속도가 향상된다.
또한, 각 랭크에 데이터가 기입되기 시작한 경우, 도 11에 도시된 바와 같이, 각 랭크의 후반부의 인덱스들에 무효한 슬랩들이 집중되어 있다. 이 경우, 이전 인덱스(PI)를 참조하여 어드레스 테이블(AT)이 검색되면, 슬랩의 선택 속도가 향상된다.
도 13은 도 1의 메모리 시스템(100)의 응용 예를 보여주는 블록도이다. 도 13을 참조하면, 메모리 시스템(200)은 제1 내지 제4 랭크들(RANK1~RANK4)을 형성하는 메모리 장치들(210), 메모리 컨트롤러(220), 그리고 프로세서(230)를 포함한다.
메모리 할당기(240)는 메모리 컨트롤러(220)에 배치되지 않고, 프로세서(230)에 배치될 수 있다. 예를 들어, 메모리 할당기(240)는 프로세서(230)에서 구동되는 소프트웨어로 구현될 수 있다. 예를 들어, 메모리 할당기(240)는 프로세서(230)에서 구동되는 버디 할당기(buddy allocator)의 일부로 구현될 수 있다.
프로세서(230)는 메모리 컨트롤러(220)를 통해 메모리 장치들(210)의 저장 공간들을 직접 관리할 수 있다. 메모리 컨트롤러(220)는 프로세서(230)의 제어에 따라 메모리 장치들(210)을 물리적으로 제어할 수 있다. 메모리 할당기(240)는 메모리 컨트롤러(220)를 통해 메모리 장치들(210)의 저장 공간에 슬랩 클래스들을 설정할 수 있다. 메모리 할당기(240)는 메모리 컨트롤러(220)를 통해 슬랩 클래스들을 랭크들(RANK1~RANK4)에 대해 조직화할 수 있다.
상술된 실시 예들에서, 슬랩(slab), 슬랩 클래스(slab class) 및 슬랩 할당자(slab allocator)와 같이 구체적인 예들을 참조하여 본 발명의 기술적 사상이 설명되었다. 그러나, 본 발명의 기술적 사상은 슬랩, 슬랩 클래스 및 슬랩 할당자와 같은 구체적인 예들에 한정되지 않는다. 예를 들어, 본 발명의 기술적 사상은 서로 다른 할당 사이즈들(또는 할당 단위들)에 대응하는 메모리 할당 요청들에 따라 서로 다른 할당 사이즈들(또는 할당 단위들)을 갖는 저장 공간들을 할당하는 메모리 시스템들에 적용될 수 있다.
상술된 실시 예들에서, 서로 다른 할당 사이즈들(또는 할당 단위들)은 랭크들(예를 들어 서로 다른 랭크들)에서 조직화되는 것으로 설명되었다. 그러나, 본 발명의 기술적 사상은 랭크와 같은 구체적인 예에 한정되지 않는다. 예를 들어, 본 발명의 실시 예에 따라, 서로 다른 할당 사이즈들(또는 할당 단위들)은 메모리 그룹들(예를 들어 서로 다른 메모리 그룹들)에서 조직화될 수 있다.
예를 들어, 서로 다른 메모리 그룹들은 서로 독립적으로 절전 모드로 진입할 수 있다. 제1 메모리 그룹이 절전 모드인지 또는 정상 모드인지에 관계 없이, 제2 메모리 그룹은 절전 모드로 진입할 수 있다. 제1 및 제2 메모리 그룹에서, 제1 메모리 그룹이 정상 모드이고 제2 메모리 그룹이 정상 모드인 제1 상태, 제1 메모리 그룹이 절전 모드이고 제2 메모리 그룹이 정상 모드인 제2 상태, 제1 메모리 그룹이 정상 모드이고 제2 메모리 그룹이 절전 모드인 제3 상태, 그리고 제1 및 제2 메모리 그룹들이 절전 모드들인 제4 상태가 발생할 수 있다.
도 14는 본 발명의 실시 예에 따른 메모리 시스템(100 또는 200)이 적용된 컴퓨터 네트워크를 보여준다. 도 14를 참조하면, 클라이언트 그룹(CG)의 클라이언트 장치들(C)은 제1 네트워크(NET1)를 통해 데이터센터(DC)와 통신할 수 있다. 클라이언트 장치들(C)은 스마트폰, 스마트패드, 노트북컴퓨터, 개인용컴퓨터, 스마트카메라, 스마트텔레비전 등과 같은 다양한 장치들을 포함할 수 있다. 제1 네트워크(NET1)은 인터넷을 포함할 수 있다.
데이터센터(DC)는 어플리케이션 서버들(AS)을 포함하는 어플리케이션 서버 그룹(ASG), 객체 캐시 서버들(OCS)을 포함하는 객체 캐시 서버 그룹(OCSG), 데이터베이스 서버들(DS)을 포함하는 데이터베이스 서버 그룹(DSG), 그리고 제2 네트워크(NET2)를 포함한다.
어플리케이션 서버들(AS)은 제1 네트워크(NET1)를 통해 클라이언트 장치들(C)로부터 다양한 요청들을 수신할 수 있다. 어플리케이션 서버들(AS)은 클라이언트 장치들(C)이 저장을 요청한 데이터를 제2 네트워크(NET2)를 통해 데이터베이스 서버들(DS)에 저장할 수 있다. 어플리케이션 서버들(AS)은 클라이언트 장치들(C)이 읽기를 요청한 데이터를 데이터베이스 서버들(DS)로부터 제2 네트워크(NET2)를 통해 획득할 수 있다.
객체 캐시 서버들(OCS)은 어플리케이션 서버들(AS)과 데이터베이스 서버들(DS) 사이에서 캐시의 기능을 수행할 수 있다. 객체 캐시 서버들(OCS)은 제2 네트워크(NET2)를 통해 데이터베이스 서버들(DS)에 저장되는 데이터 또는 데이터베이스 서버들(DS)로부터 읽히는 데이터를 임시로 저장할 수 있다. 어플리케이션 서버들(AS)이 요청하는 데이터가 객체 캐시 서버들(OCS)에 저장되어 있는 경우, 객체 캐시 서버들(OCS)은 데이터베이스 서버들(DS) 대신에 요청된 데이터를 제2 네트워크(NET2)를 통해 어플리케이션 서버들(AS)로 제공할 수 있다.
제2 네트워크(NET2)는 지역 네트워크(LAN) 또는 인트라넷을 포함할 수 있다.
본 발명의 실시 예에 따른 메모리 시스템(100 또는 200)은 어플리케이션 서버들(AS), 객체 캐시 서버들(OCS), 그리고 데이터 서버들(DS) 중 하나에 적용될 수 있다. 특히, 본 발명의 실시 예에 따른 메모리 시스템(100 또는 200)은 객체 캐시 서버들(OCS)에 적용되어, 데이터센터(DS)의 응답 속도를 획기적으로 향상시킬 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100; 메모리 시스템
110; 메모리 장치
120; 메모리 컨트롤러
130; 메모리 할당기
131; 요청 생성기
132; 무효화 체크 회로
133; 무효화 레지스터
134; 어드레스 체크 회로
135; 이전 인덱스 레지스터

Claims (10)

  1. 복수의 메모리 그룹들을 형성하는 복수의 메모리 장치들; 그리고
    상기 복수의 메모리 그룹들을 독립적으로 액세스하도록 구성되는 메모리 컨트롤러를 포함하고,
    상기 메모리 컨트롤러는, 서로 다른 사이즈들을 갖는 할당 단위들을 서로 다른 메모리 그룹들에 할당하도록 구성되는 메모리 시스템.
  2. 제1 항에 있어서,
    쓰기 요청에 응답하여, 상기 메모리 컨트롤러는 상기 쓰기 요청에 대응하는 쓰기 데이터의 사이즈에 따라 상기 복수의 메모리 그룹들 중 하나를 선택하고, 상기 선택된 메모리 그룹에 속한 할당 단위를 상기 쓰기 데이터에 할당하도록 구성되는 메모리 시스템.
  3. 제1 항에 있어서,
    상기 메모리 컨트롤러는 각 메모리 그룹에 속한 할당 단위들에 유효한 데이터가 저장되어 있는지를 가리키는 어드레스 테이블을 관리하도록 구성되는 메모리 시스템.
  4. 제3 항에 있어서,
    쓰기 요청에 응답하여, 상기 메모리 컨트롤러는 상기 쓰기 요청에 대응하는 쓰기 데이터의 사이즈에 따라 상기 복수의 메모리 그룹들 중 하나를 선택하고, 상기 선택된 메모리 그룹의 어드레스 테이블에서 무효한 데이터가 저장된 할당 단위들을 검색하도록 구성되는 메모리 시스템.
  5. 제3 항에 있어서,
    상기 메모리 컨트롤러는 각 메모리 그룹에서 이전에 할당된 할당 단위의 정보를 관리하도록 구성되는 메모리 시스템.
  6. 제5 항에 있어서,
    쓰기 요청에 응답하여, 상기 메모리 컨트롤러는 상기 쓰기 요청에 대응하는 쓰기 데이터의 사이즈에 따라 상기 복수의 메모리 그룹들 중 하나를 선택하고, 상기 선택된 메모리 그룹의 어드레스 테이블에서 상기 이전에 할당된 할당 단위의 정보를 참조하여 무효 데이터가 저장된 할당 단위를 검색하도록 구성되는 메모리 시스템.
  7. 제3 항에 있어서,
    상기 메모리 컨트롤러는 각 메모리 그룹에 속한 할당 단위들 중에서 이전에 무효화된 할당 단위의 정보를 관리하도록 구성되는 메모리 시스템.
  8. 제7 항에 있어서,
    쓰기 요청에 응답하여, 상기 메모리 컨트롤러는 상기 쓰기 요청에 대응하는 쓰기 데이터의 사이즈에 따라 상기 복수의 메모리 그룹들 중 하나를 선택하고, 상기 선택된 메모리 그룹과 연관된 상기 무효화된 할당 단위의 정보를 이용하여 상기 무효화된 할당 단위를 상기 쓰기 데이터에 할당하도록 구성되는 메모리 시스템.
  9. 제1 항에 있어서,
    상기 메모리 컨트롤러는,
    쓰기 요청에 응답하여 상기 쓰기 요청에 대응하는 쓰기 데이터의 사이즈에 따라 상기 복수의 메모리 그룹들 중 하나를 선택하도록 구성되는 요청 생성기;
    상기 선택된 메모리 그룹에서 이전에 무효화된 할당 단위가 존재하는지 판별하고, 상기 이전에 무효화된 할당 단위가 존재하면 상기 이전에 무효화된 할당 단위의 어드레스 및 상기 선택된 메모리 그룹의 정보를 출력하고, 그리고 상기 이전에 무효화된 할당 단위가 존재하지 않으면 상기 선택된 메모리 그룹의 정보를 출력하도록 구성되는 무효화 체크 회로; 그리고
    상기 무효화 체크 회로로부터 상기 이전에 무효화된 할당 단위의 어드레스 및 상기 선택된 메모리 그룹의 정보가 수신되면 상기 이전에 무효화된 할당 단위를 쓰기 데이터에 할당하고, 상기 무효화 체크 회로로부터 상기 선택된 메모리 그룹의 정보가 수신되면 상기 선택된 메모리 그룹의 어드레스 테이블을 이용하여 무효 데이터를 저장하는 슬랩을 검색하고 그리고 상기 검색된 할당 단위를 상기 쓰기 데이터에 할당하도록 구성되는 어드레스 체크 회로를 포함하는 메모리 시스템.
  10. 제1 메모리 그룹 및 제2 메모리 그룹을 형성하는 복수의 메모리 장치들 및 메모리 컨트롤러를 포함하는 메모리 시스템의 동작 방법에 있어서:
    상기 메모리 컨트롤러가 쓰기 요청을 수신하는 단계;
    상기 쓰기 요청과 연관된 쓰기 데이터의 사이즈가 기준 사이즈 이하이면, 상기 메모리 컨트롤러가 상기 쓰기 데이터를 상기 제1 메모리 그룹에 기입하는 단계; 그리고
    상기 쓰기 요청과 연관된 상기 쓰기 데이터의 사이즈가 상기 기준 사이즈보다 크면, 상기 메모리 컨트롤러가 상기 쓰기 데이터를 상기 제2 메모리 그룹에 기입하는 단계를 포함하고,
    상기 제1 메모리 그룹 및 상기 제2 메모리 그룹은 각각 독립적으로 절전 모드로 진입하는 동작 방법.
KR1020150124264A 2015-09-02 2015-09-02 복수의 랭크들을 형성하는 복수의 메모리 장치들 및 복수의 메모리 랭크들을 액세스하는 메모리 컨트롤러를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 KR20170027922A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150124264A KR20170027922A (ko) 2015-09-02 2015-09-02 복수의 랭크들을 형성하는 복수의 메모리 장치들 및 복수의 메모리 랭크들을 액세스하는 메모리 컨트롤러를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
US15/182,038 US20170062025A1 (en) 2015-09-02 2016-06-14 Memory system including plural memory devices forming plural ranks and memory controller accessing plural memory ranks and method of operating the memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150124264A KR20170027922A (ko) 2015-09-02 2015-09-02 복수의 랭크들을 형성하는 복수의 메모리 장치들 및 복수의 메모리 랭크들을 액세스하는 메모리 컨트롤러를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법

Publications (1)

Publication Number Publication Date
KR20170027922A true KR20170027922A (ko) 2017-03-13

Family

ID=58096831

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150124264A KR20170027922A (ko) 2015-09-02 2015-09-02 복수의 랭크들을 형성하는 복수의 메모리 장치들 및 복수의 메모리 랭크들을 액세스하는 메모리 컨트롤러를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법

Country Status (2)

Country Link
US (1) US20170062025A1 (ko)
KR (1) KR20170027922A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11782616B2 (en) 2021-04-06 2023-10-10 SK Hynix Inc. Storage system and method of operating the same

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108038062B (zh) * 2017-11-27 2021-05-04 北京锦鸿希电信息技术股份有限公司 嵌入式系统的内存管理方法和装置
KR20190085644A (ko) * 2018-01-11 2019-07-19 에스케이하이닉스 주식회사 데이터 처리 시스템 및 그것의 동작 방법
US10628063B2 (en) 2018-08-24 2020-04-21 Advanced Micro Devices, Inc. Implementing scalable memory allocation using identifiers that return a succinct pointer representation
CN110134514B (zh) * 2019-04-18 2021-04-13 华中科技大学 基于异构内存的可扩展内存对象存储系统
TWI830363B (zh) * 2022-05-19 2024-01-21 鈺立微電子股份有限公司 用於提供三維資訊的感測裝置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8122193B2 (en) * 2004-12-21 2012-02-21 Samsung Electronics Co., Ltd. Storage device and user device including the same
JP2007265270A (ja) * 2006-03-29 2007-10-11 Hitachi Ltd ストレージシステム及び記憶領域割当て方法
JP4620722B2 (ja) * 2007-12-26 2011-01-26 富士通株式会社 データ配置制御プログラム、データ配置制御装置、データ配置制御方法、およびマルチノードストレージシステム
US8181046B2 (en) * 2008-10-29 2012-05-15 Sandisk Il Ltd. Transparent self-hibernation of non-volatile memory system
US8380942B1 (en) * 2009-05-29 2013-02-19 Amazon Technologies, Inc. Managing data storage
US8375173B2 (en) * 2009-10-09 2013-02-12 Qualcomm Incorporated Accessing a multi-channel memory system having non-uniform page sizes
US8984162B1 (en) * 2011-11-02 2015-03-17 Amazon Technologies, Inc. Optimizing performance for routing operations
KR101832934B1 (ko) * 2012-01-27 2018-02-28 삼성전자주식회사 비휘발성 메모리 장치, 그것을 포함하는 메모리 시스템, 그것의 블록 관리 방법, 프로그램 방법 및 소거 방법
US9026765B1 (en) * 2012-09-11 2015-05-05 Emc Corporation Performing write operations in a multi-tiered storage environment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11782616B2 (en) 2021-04-06 2023-10-10 SK Hynix Inc. Storage system and method of operating the same

Also Published As

Publication number Publication date
US20170062025A1 (en) 2017-03-02

Similar Documents

Publication Publication Date Title
US10067684B2 (en) File access method and apparatus, and storage device
KR20170027922A (ko) 복수의 랭크들을 형성하는 복수의 메모리 장치들 및 복수의 메모리 랭크들을 액세스하는 메모리 컨트롤러를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
CN108804350B (zh) 一种内存访问方法及计算机系统
EP2645259B1 (en) Method, device and system for caching data in multi-node system
US9244619B2 (en) Method of managing data storage device and data storage device
US10002072B2 (en) Method and apparatus for controlling data migration in multi-channel memory device
KR102569545B1 (ko) 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법
KR102051698B1 (ko) 단일 페이지 테이블 엔트리 내의 속성 필드들의 다중 세트들
US9612975B2 (en) Page cache device and method for efficient mapping
US9940029B2 (en) Semiconductor memory device that switches between states and moves data in accordance with a current state
US10503647B2 (en) Cache allocation based on quality-of-service information
US20150113230A1 (en) Directory storage method and query method, and node controller
JP2022548887A (ja) メモリタイプへのページテーブルフック
US10678704B2 (en) Method and apparatus for enabling larger memory capacity than physical memory size
US11093410B2 (en) Cache management method, storage system and computer program product
KR20170141538A (ko) 오브젝트 스토리지 장치 및 상기 오브젝트 스토리지 장치의 동작 방법들
US20200201782A1 (en) Memory controller and memory page management method
CN104995611B (zh) 用于存取存储器的系统及方法
WO2018057129A1 (en) Multi-level system memory having near memory space capable of behaving as near memory cache or fast addressable system memory depending on system state
CN105095113A (zh) 一种缓存管理方法和系统
CN110597742A (zh) 用于具有持久系统存储器的计算机系统的改进存储模型
CN115794669A (zh) 一种扩展内存的方法、装置及相关设备
US10528284B2 (en) Method and apparatus for enabling larger memory capacity than physical memory size
TW201717016A (zh) 計算系統以及其操作方法
US10339052B2 (en) Massive access request for out-of-core textures by a parallel processor with limited memory