KR20170075396A - 메모리 시스템 - Google Patents

메모리 시스템 Download PDF

Info

Publication number
KR20170075396A
KR20170075396A KR1020150185001A KR20150185001A KR20170075396A KR 20170075396 A KR20170075396 A KR 20170075396A KR 1020150185001 A KR1020150185001 A KR 1020150185001A KR 20150185001 A KR20150185001 A KR 20150185001A KR 20170075396 A KR20170075396 A KR 20170075396A
Authority
KR
South Korea
Prior art keywords
memory
address
cache
main
cache memory
Prior art date
Application number
KR1020150185001A
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 KR1020150185001A priority Critical patent/KR20170075396A/ko
Priority to US15/343,417 priority patent/US10402325B2/en
Priority to CN201611205341.8A priority patent/CN107038126B/zh
Publication of KR20170075396A publication Critical patent/KR20170075396A/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
    • 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/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/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • 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/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories

Abstract

메모리 시스템은, 제1어드레스를 이용해 억세스되는 다수의 영역을 포함하고, 각 영역에는 캐시된 데이터의 존재 여부와 제2어드레스가 저장되는 제1캐시 메모리; 상기 제1캐시 메모리의 억세스 결과 캐시된 데이터가 존재하는 경우에 상기 제1캐시 메모리의 억세스된 영역에 저장된 제2어드레스를 이용해 억세스되는 제2캐시 메모리; 및 상기 제1캐시의 억세스 결과 캐시된 데이터가 존재하지 않는 경우에 상기 제1어드레스를 이용해 억세스되는 메인 메모리를 포함할 수 있다.

Description

메모리 시스템 {MEMORY SYSTEM}
본 특허 문헌은 캐시 메모리, 스페어 메모리 및 메인 메모리 등을 포함하는 메모리 시스템에 관한 것이다.
일반적인 셋-어소시에이티브 캐시(set-associative cache)는 억세스하는 데이터의 캐시 히트/미스(hit/miss)를 판별하기 위해 태그 매칭(tag matching)을 필요로 한다. 태그 매칭을 위해 캐시는 메타데이터의 저장소(metadata storage)와 태그 매칭을 위한 로직(logic)을 필요로하는데 이러한 로직은 매우 복잡해 메모리 시스템의 면적 증가를 유발하게 되고, 태그 매칭을 위한 동작에 의해 레이턴시(latency)가 증가하게 된다. 그러므로, 메모리 시스템의 면적 증가 및 레이턴시 증가를 최소화하는 캐시 구조가 요구된다.
한편, 최근 RRAM(Resistive Random Access Memory), PCRAM(Phase-Change Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등의 차세대 메모리들에 대한 연구가 활발하게 수행되고 있는데, 차세대 메모리들의 동작 속도는 아직 원하는 속도에 미치지 못하고 있으며 차세대 메모리들의 결함률도 아직 원하는 수준에 미치지 못하고 있다. 또한, 차세대 메모리들은 내구성(endurance)에 문제가 있어 여러번 억세스되면 수명이 급속도로 줄어드는 문제점을 가지고 있다. 그러므로, 차세대 메모리들의 동작 속도를 보조해줄 캐시 구조 및 차세대 메모리들의 결함을 해소해줄 기술이 요구된다.
본 발명의 실시예들은 메모리 시스템의 면적 증가 및 레이턴시 증가를 최소화하는 캐시 스킴을 제공할 수 있다. 또한, 메모리 시스템의 성능 향상 뿐만이 아니라 메모리 시스템의 결함을 회복 가능하게 하는 캐시 스킴을 제공할 수 있다.
상기 과제를 해결하기 위한 본 발명의 일실시예에 따른 메모리 시스템은, 제1어드레스를 이용해 억세스되는 다수의 영역을 포함하고, 각 영역에는 캐시된 데이터의 존재 여부와 제2어드레스가 저장되는 제1캐시 메모리; 상기 제1캐시 메모리의 억세스 결과 캐시된 데이터가 존재하는 경우에 상기 제1캐시 메모리의 억세스된 영역에 저장된 제2어드레스를 이용해 억세스되는 제2캐시 메모리; 및 상기 제1캐시의 억세스 결과 캐시된 데이터가 존재하지 않는 경우에 상기 제1어드레스를 이용해 억세스되는 메인 메모리를 포함할 수 있다.
상기 제2캐시 메모리와 상기 메인 메모리의 억세스시에는 제3어드레스가 더 사용될 수 있다.
상기 메인 메모리는 다수의 메인 페이지를 포함하고, 상기 제1어드레스는 상기 다수의 메인 페이지 중 하나의 메인 페이지를 선택하기 위해 사용되고, 상기 제3어드레스는 선택된 메인 페이지 내에서 데이터를 선택하기 위해 사용될 수 있다.
상기 제2캐시 메모리는 다수의 캐시 페이지를 포함하고, 상기 제2어드레스는 상기 다수의 캐시 페이지 중 하나의 캐시 페이지를 선택하기 위해 사용되고, 상기 제3어드레스는 선택된 캐시 페이지 내에서 데이터를 선택하기 위해 사용될 수 있다.
상기 다수의 영역 각각에는 더티/클린 정보와 억세스 카운트 정보가 더 저장될 수 있다.
상기 메인 메모리의 동작 속도는 상기 제1캐시 메모리와 상기 제2캐시 메모리의 동작 속도보다 느리고, 상기 메인 메모리의 저장 용량은 상기 제1캐시 메모리와 상기 제2캐시 메모리의 저장 용량보다 클 수 있다.
본 발명의 다른 실시예에 따른 메모리 시스템은, 제1어드레스를 이용해 억세스되는 다수의 영역을 포함하고, 각 영역에는 결함의 존재 여부와 제2어드레스가 저장되는 제1캐시 메모리; 상기 제1캐시 메모리의 억세스 결과 결함이 존재하는 경우에 상기 제1캐시 메모리의 억세스된 영역에 저장된 제2어드레스를 이용해 억세스되는 스페어 메모리; 및 상기 제1캐시 메모리의 억세스 결과 결함이 존재하지 않는 경우에 상기 제1어드레스를 이용해 억세스되는 메인 메모리를 포함할 수 있다.
상기 스페어 메모리와 상기 메인 메모리의 억세스시에는 제3어드레스가 더 사용될 수 있다.
상기 메인 메모리는 다수의 메인 페이지를 포함하고, 상기 제1어드레스는 상기 다수의 메인 페이지 중 하나의 메인 페이지를 선택하기 위해 사용되고, 상기 제3어드레스는 선택된 메인 페이지 내에서 데이터를 선택하기 위해 사용될 수 있다.
상기 스페어 메모리는 다수의 스페어 페이지를 포함하고, 상기 제2어드레스는 상기 다수의 스페어 페이지 중 하나의 스페어 페이지를 선택하기 위해 사용되고, 상기 제3어드레스는 선택된 스페어 페이지 내에서 데이터를 선택하기 위해 사용될 수 있다.
상기 메인 메모리와 상기 스페어 메모리의 동작 속도는 상기 제1캐시 메모리의 동작 속도보다 느리고, 상기 메인 메모리의 저장 용량은 상기 제1캐시 메모리와 상기 스페어 메모리의 저장 용량보다 클 수 있다.
본 발명의 또 다른 실시예에 따른 메모리 시스템은, 제1어드레스를 이용해 억세스되는 다수의 영역을 포함하고, 각 영역에는 캐시된 데이터의 존재 여부, 결함의 존재 여부 및 제2어드레스가 저장되는 제1캐시 메모리; 상기 제1캐시 메모리의 억세스 결과 캐시된 데이터가 존재하는 경우에 상기 제1캐시 메모리의 억세스된 영역에 저장된 제2어드레스를 이용해 억세스되는 제2캐시 메모리; 상기 제1캐시 메모리의 억세스 결과 캐시된 데이터가 존재하지 않고 결함이 존재하는 경우에 상기 제1캐시 메모리의 억세스된 영역에 저장된 제2어드레스를 이용해 억세스되는 스페어 메모리; 및 상기 제1캐시 메모리의 억세스 결과 캐시된 데이터와 결함이 존재하지 않는 경우에 상기 제1어드레스를 이용해 억세스되는 메인 메모리를 포함할 수 있다.
본 발명의 일실시예에 따른 메모리 시스템의 동작 방법은, 제1어드레스를 이용해 제1캐시 메모리에 억세스하는 단계; 상기 제1캐시 메모리의 억세스 결과 캐시된 데이터의 존재가 확인되는 경우에, 상기 제1캐시 메모리에 저장된 제2어드레스를 이용해 제2캐시 메모리에 억세스하는 단계; 및 상기 제1캐시 메모리의 억세스 결과 캐시된 데이터가 존재하지 않는다고 확인되는 경우에, 상기 제1어드레스를 이용해 메인 메모리에 억세스하는 단계를 포함할 수 있다.
상기 동작 방법은, 상기 제1캐시 메모리의 억세스 결과 캐시된 데이터가 존재하지 않고 결함이 존재한다고 확인되는 경우에, 상기 메인 메모리에 억세스하는 단계를 대신해 상기 제1캐시 메모리에 저장된 제2어드레스를 이용해 스페어 메모리에 억세스하는 단계를 더 포함할 수 있다.
본 발명의 실시예들에 따르면 메모리 시스템의 면적 증가와 레이턴시 증가를 최소화하고, 메모리 시스템의 결함을 회복할 수 있다.
도 1은 본 발명의 일실시예에 따른 메모리 시스템의 구성도.
도 2는 제1캐시 메모리(110)의 영역들 각각에 저장되는 정보를 나타낸 도면.
도 3은 메모리 시스템(100)의 동작을 도시한 순서도.
도 4는 본 발명의 다른 실시예에 따른 메모리 시스템의 구성도.
도 5는 제1캐시 메모리(410)의 영역들 각각에 저장되는 정보를 나타낸 도면.
도 6은 메모리 시스템(400)의 동작을 도시한 순서도.
도 7은 본 발명의 또 다른 실시예에 따른 메모리 시스템의 구성도.
도 8은 제1캐시 메모리(710)의 영역들 각각에 저장되는 정보를 나타낸 도면.
도 9는 메모리 시스템(700)의 동작을 도시한 순서도.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부 도면을 참조하여 설명하기로 한다. 본 발명을 설명함에 있어서, 본 발명의 요지와 무관한 구성은 생략될 수 있다. 각 도면의 구성요소들에 참조 번호를 부가함에 있어서, 동일한 구성요소들에 한해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 번호를 가지도록 하고 있음에 유의하여야 한다.
도 1은 본 발명의 일실시예에 따른 메모리 시스템의 구성도이다.
도 1을 참조하면, 메모리 시스템(100)은 제1캐시 메모리(110), 제2캐시 메모리(120), 메인 메모리(130) 및 억세스 제어부(140)를 포함할 수 있다.
메인 메모리(130)는 큰 저장 용량을 가지고, 다수개의 메인 페이지들(Main Pages)을 포함할 수 있다. 예를 들어, 메인 메모리는 전체 128GB(Giga Byte)의 저장 용량을 가지고, 128M개의 메인 페이지를 가지고 각 메인 페이지는 1KB(Kilo Byte)의 저장 용량을 가질 수 있다. 그리고 각 메인 페이지 내에서 바이트 단위로 데이터의 어드레싱이 가능할 수, 즉 각 메인 페이지는 Byte Addressable할 수, 있다. 메인 메모리(130)로 입력되는 제1어드레스(ADD1<0:26))는 메인 메모리(130)의 128M개의 메인 페이지 중 하나의 메인 페이지를 선택하는데 사용될 수 있다. 그러므로 제1어드레스(ADD1<0:26>)는 27비트일 수 있다(2^27=128M). 메인 메모리(130)로 입력되는 제3어드레스(ADD3<0:9>)는 제1어드레스(ADD1<0:26>)에 의해 선택된 메인 페이지(1KB) 내에서 1바이트의 데이터를 선택하기위해 사용될 수 있다. 그러므로 제3어드레스(ADD3<0:9>)는 10비트일 수 있다(2^10=1K). 메인 메모리(130)는 제1캐시 메모리(110)와 제2캐시 메모리(120)보다 용량은 크고 제1캐시 메모리(110)와 제2캐시 메모리(120)보다 동작 속도는 느린 메모리일 수 있다. 예를 들어, 제1캐시 메모리(110)와 제2캐시 메모리(120)가 DRAM이라면 메인 메모리(130)는 FLASH메모리, PCRAM 및 RRAM 중 하나일 수 있다.
제1캐시 메모리(110)는 메인 메모리(130)의 메인 페이지들과 동일한 개수(128M)의 영역들(Regions)을 포함할 수 있다. 영역들 각각은 메타 데이터(mata data)를 저장하므로 비교적 작은 저장용량(예, 4B)을 가질 수 있다. 제1캐시 메모리(110)의 억세스시 영역들 중 하나의 영역이 제1어드레스(ADD1<0:26>)에 의해 선택되어 억세스될 수 있다. 영역들 각각에는 도 2와 같은 정보들이 저장될 수 있다.
도 2를 참조하면, 캐시 정보(Cached)는 제1캐시 메모리(110)의 해당 영역에 대응하는 메인 메모리(130)의 메인 페이지에 대한 캐시된 데이터가 제2캐시 메모리(120)에 존재하는지의 여부를 나타낼 수 있다. 캐시 정보(Cached)는 1비트일 수 있으며, 캐시 정보(Cached)가 '1'이면 캐시된 데이터가 존재한다는 것을 나타내고 캐시 정보(Cached)가 '0'이면 캐시된 데이터가 존재하지 않는다는 것을 나타낼 수 있다. 더티/클린 정보(Dirty/Clean)는 제2캐시 메모리(120)에 캐시된 데이터와 메인 메모리(130)에 저장된 데이터가 일치하는지/아닌지에 대한 정보를 의미한다. 더티/클린 정보(Dirty/Clean)는 1비트일 수 있으며, 더티/클린 정보(Dirty/Clean)가 '1'이면 더티, 즉 제2캐시 메모리(120)에 캐시된 데이터와 메인 메모리(130)에 저장된 데이터가 일치하지 않음, 를 의미할 수 있다. 더티/클린 정보(Dirty/Clean)가 '0'이면 클린, 즉 제2캐시 메모리(120)에 캐시된 데이터와 메인 메모리(130)에 저장된 데이터가 일치함, 을 의미할 수 있다. 카운터 정보(Counter)는 해당 영역의 억세스 회수를 나타낼 수 있다. 카운터 정보(Counter)는 9비트인 것으로 예시했다. 제2어드레스(ADD2<0:19>)는 캐시된 데이터가 저장된 제2캐시 메모리(120)의 어드레스를 나타낼 수 있다. 캐시된 데이터가 존재하는 경우에 제2어드레스(ADD2<0:19>)를 이용해 제2캐시 메모리(120)를 억세스할 수 있다. 제2어드레스(ADD2<0:19>)의 비트 수는 제2캐시 메모리(120) 내의 캐시 페이지의 개수에 따라 결정될 수 있다. 여기서는 제2캐시 메모리(120)가 1M개의 캐시 페이지들을 포함하는 것으로 예시했으므로 제2어드레스(ADD2<0:19>)의 비트 수가 20비트인 것으로 예시했다. 제1캐시 메모리(110)의 영역에서 남는 나머지 1비트는 사용되지 않을 수 있다(Unused).
제2캐시 메모리(120)는 다수의 캐시 페이지들(Cache Pages)을 포함할 수 있다. 캐시 페이지들 각각은 메인 메모리(130)의 메인 페이지들과 동일한 저장 용량(예, 1KB)을 가질 수 있다. 그리고 캐시 페이지들의 개수는 제2어드레스의 비트수에 대응할 수 있다. 여기서는 제2어드레스(ADD2<0:19>)가 20비트인 것으로 예시되었으므로 캐시 페이지들의 개수가 1M(=2^20)일 수 있다. 캐시 페이지들에는 대응하는 메인 페이지들의 캐시된 데이터가 저장될 수 있다. 제2어드레스(ADD2<0:19>)는 제2캐시 메모리(120)에서 캐시 페이지들 중 하나의 페이지를 선택하기 위해 사용되고, 제3어드레스(ADD3<0:9>)는 선택된 캐시 페이지(1KB) 내에서 1바이트(1B)의 데이터를 선택하기위해 사용될 수 있다.
억세스 제어부(140)는 메모리 콘트롤러(호스트)(MEMORY CONTROLLER (HOST))로부터 전달되는 커맨드(CMD)와 어드레스(ADD<0:36>)에 응답해 제1캐시 메모리(110), 제2캐시 메모리(120) 및 메인 메모리(130)에 억세스하고, 제1캐시 메모리(110), 제2캐시 메모리(120) 및 메인 메모리(130)의 데이터(DATA)를 메모리 콘트롤러(호스트)(MEMORY CONTROLLER (HOST))와 주고받을 수 있다.
도 3은 메모리 시스템(100)의 동작을 도시한 순서도인데, 이를 참조해 메모리 시스템(100)의 동작에 대해 알아보기로 한다.
먼저, 메모리 콘트롤러(호스트)로부터 메모리 시스템(100)을 억세스하기 위한 커맨드(CMD)(예, 리드 커맨드 또는 라이트 커맨드)와 어드레스(ADD<0:36>)가 인가될 수 있다(S310). 여기서, 커맨드(CMD)가 라이트 커맨드인 경우에는 메모리 시스템(100)에 라이트될 데이터(DATA)도 메모리 시스템(100)으로 인가될 수 있다.
억세스 제어부(140)는 먼저 제1캐시 메모리(110)를 억세스할 수 있다(S320). 억세스 제어부(140)는 메모리 콘트롤러(호스트)로부터 전달된 어드레스(ADD<0:36) 중 27비트를 제1캐시 메모리(110)를 억세스하기 위한 제1어드레스(ADD1<0:26>)로 사용할 수 있다. 제1캐시 메모리(110)의 억세스시에 제1어드레스(ADD1<0:26>)를 이용해 억세스된 제1캐시 메모리(110)의 선택된 영역의 더티/클린 정보(Dirty/Clean) 및 카운터 정보(Counter)가 업데이트될 수 있다.
제1어드레스(ADD1<0:26>)를 이용해 억세스된 제1캐시 메모리(110)의 선택된 영역에 캐시된 데이터가 존재한다는 정보가 저장되어 있는 경우에(S330에서 Y), 즉 캐시 정보(Cached)='1'인 경우에, 억세스 제어부(140)는 제1캐시 메모리(110)의 선택된 영역에 저장된 제2어드레스(ADD2<0:19>)를 이용해 제2캐시 메모리(120)를 억세스할 수 있다(S340). 제2캐시 메모리(120)의 억세스시에 제2어드레스(ADD2<0:19>)는 제2캐시 메모리(120)에서 캐시 페이지를 선택하기 위해 사용되고, 제3어드레스(ADD3<0:9>)는 선택된 캐시 페이지에서 데이터를 선택하기 위해 사용될 수 있다. 제3어드레스(ADD3<0:9>)는 단계(S310)에서 억세스 제어부(140)가 메모리 콘트롤러(호스트)로부터 수신한 어드레스(ADD<0:36>) 중 제1어드레스(ADD1<0:26>)를 제외한 나머지 어드레스일 수 있다. 단계(S310)에서 억세스 제어부(140)가 메모리 콘트롤러(호스트)로부터 수신한 커맨드(CMD)가 리드 커맨드인 경우에 단계(S340)에서 제2캐시 메모리(120)로부터 리드된 데이터가 억세스 제어부(140)를 통해 메모리 콘트롤러(호스트)로 전송될 수 있다. 그리고, 단계(S310)에서 억세스 제어부(140)가 메모리 콘트롤러(호스트)로부터 수신한 커맨드(CMD)가 라이트 커맨드인 경우에 단계(S310)에서 억세스 제어부(140)가 메모리 콘트롤러(호스트)로부터 수신한 데이터(DATA)가 단계(S340)에서 제2캐시 메모리(120)로 라이트될 수 있다.
제1어드레스(ADD1<0:26>)를 이용해 억세스된 제1캐시 메모리(110)의 선택된 영역에 캐시된 데이터가 존재하지 않는다는 정보가 저장되어 있는 경우에(S330에서 N), 즉 캐시 정보(Cached)='0'인 경우에, 억세스 제어부(140)는 제1어드레스(ADD1<0:26>)와 제3어드레스(ADD3<0:9>)를 이용해 메인 메모리(130)를 억세스할 수 있다(S350). 제3어드레스(ADD3<0:9>)는 단계(S310)에서 억세스 제어부(140)가 메모리 콘트롤러(호스트)로부터 수신한 어드레스(ADD<0:36>) 중 제1어드레스(ADD1<0:26>)를 제외한 나머지 어드레스일 수 있다. 단계(S310)에서 억세스 제어부(140)가 메모리 콘트롤러(호스트)로부터 수신한 커맨드(CMD)가 리드 커맨드인 경우에 단계(S350)에서 메인 메모리(130)로부터 리드된 데이터가 억세스 제어부(140)를 통해 메모리 콘트롤러(호스트)로 전송될 수 있다. 그리고, 단계(S310)에서 억세스 제어부(140)가 메모리 콘트롤러(호스트)로부터 수신한 커맨드(CMD)가 라이트 커맨드인 경우에 단계(S310)에서 억세스 제어부(140)가 메모리 콘트롤러(호스트)로부터 수신한 데이터(DATA)가 단계(S350)에서 메인 메모리(130)로 라이트될 수 있다.
메모리 시스템(100)에서는 먼저 제1캐시 메모리(110)가 억세스되어 캐시된 데이터가 존재하는지의 여부가 확인되고, 캐시된 데이터가 존재하는 경우에는 제1캐시 메모리(110)에 저장된 제2어드레스(ADD2<0:19>)를 이용해 제2캐시 메모리(120)가 억세스되어 데이터가 리드 또는 라이트될 수 있다. 그리고, 캐시된 데이터가 존재하지 않는 경우에는 메인 메모리(130)가 억세스되어 데이터가 리드 또는 라이트될 수 있다. 이러한 캐시 스킴은 캐시를 위한 메모리 시스템(100)의 면적 증가를 최소화하면서도 메모리 시스템(100)의 빠른 억세스를 가능하게 할 수 있다.
메모리 시스템(100)에서 제2캐시 메모리(120)에 캐시될 데이터의 추가 및 제2캐시 메모리(120)에 이미 캐시된 데이터의 축출(eviction) 등의 동작은 제1캐시 메모리(110)에 저장된 더티/클린 정보(Dirty/Clean) 및 카운터 정보(Counter) 등을 참조하여 메모리 시스템(100)의 캐시 관리 규정에 따라 수행될 수 있다. 그리고 캐시될 데이터의 추가 및 이미 캐시된 데이터의 축출 등의 동작을 수행하기 위한 캐시 관리 로직(미도시)이 메모리 시스템(100)에 추가되거나 메모리 시스템(100) 외부에 존재할 수 있다.
도 1에 도시된 메모리 시스템(100)의 구성들(110, 120, 130, 140)은 기능적인 분류를 의미하며 물리적인 구별을 의미하는 것이 아니다. 예를 들어, 도 1의 구성들(110, 120, 130, 140) 중 2 이상의 구성들이 하나의 물리적인 반도체 칩에 형성되거나 하나의 반도체 패키지 내에 포함될 수도 있다. 또한, 도 1에서 예시된 제1캐시 메모리(110), 제2캐시 메모리(120) 및 메인 메모리(130)의 전체 용량, 페이지의 개수 및 페이지의 용량은 예시일 뿐이며, 이는 얼마든 변경될 수 있음은 당연하다.
도 4는 본 발명의 다른 실시예에 따른 메모리 시스템의 구성도이다.
도 4를 참조하면, 메모리 시스템(400)은 제1캐시 메모리(410), 스페어 메모리(420), 메인 메모리(130) 및 억세스 제어부(440)를 포함할 수 있다.
메인 메모리(130)는 큰 저장 용량을 가지고, 다수의 메인 페이지들을 포함할 수 있다. 예를 들어, 메인 메모리는 전체 128GB(Giga Byte)의 저장 용량을 가지고, 128M개의 메인 페이지를 가지고 각 메인 페이지는 1KB(Kilo Byte)의 저장 용량을 가질 수 있다. 그리고 각 메인 페이지 내에서 바이트 단위로 데이터의 어드레싱이 가능할 수, 즉 각 메인 페이지는 Byte Addressable할 수, 있다. 메인 메모리(130)로 입력되는 제1어드레스(ADD1<0:26))는 메인 메모리(130)의 128M개의 메인 페이지 중 하나의 메인 페이지를 선택하는데 사용될 수 있다. 그러므로 제1어드레스(ADD1<0:26>)는 27비트일 수 있다(2^27=128M). 메인 메모리(130)로 입력되는 제3어드레스(ADD3<0:9>)는 제1어드레스(ADD1<0:26>)에 의해 선택된 메인 페이지(1KB) 내에서 1바이트의 데이터를 선택하기위해 사용될 수 있다. 그러므로 제3어드레스(ADD3<0:9>)는 10비트일 수 있다(2^10=1K). 메인 메모리(130)는 제1캐시 메모리(410)보다 용량은 크고 제1캐시 메모리(410)보다 동작 속도는 느린 메모리일 수 있다. 예를 들어, 제1캐시 메모리(410)가 DRAM이라면 메인 메모리(130)는 FLASH메모리, PCRAM 및 RRAM 중 하나일 수 있다.
제1캐시 메모리(410)는 메인 메모리(130)의 메인 페이지들과 동일한 개수(128M)의 영역들(Regions)을 포함할 수 있다. 영역들 각각은 메타 데이터(mata data)를 저장하므로 비교적 작은 저장용량(예, 4B)을 가질 수 있다. 제1캐시 메모리(410)의 억세스시 영역들 중 하나의 영역이 제1어드레스(ADD1<0:26>)에 의해 선택되어 억세스될 수 있다. 영역들 각각에는 도 5와 같은 정보들이 저장될 수 있다.
도 5를 참조하면, 불량 정보(Faulty)는 제1캐시 메모리(110)의 해당 영역에 대응하는 메인 메모리(130)의 메인 페이지에 불량이 존재하는지의 여부를 나타낼 수 있다. 불량 정보(Faulty)는 1비트일 수 있으며, 불량 정보(Faulty)가 '1'이면 불량이 존재한다는 것을 나타내고 불량 정보(Faulty)가 '0'이면 불량이 존재하지 않는다는 것을 나타낼 수 있다. 제2어드레스(ADD2<0:19>)는 메인 페이지에 불량이 존재하는 경우에 해당 메인 페이지를 대체할 스페어 메모리(420) 내의 스페어 페이지의 어드레스를 나타낼 수 있다. 메인 페이지에 불량이 존재하는 경우에 제2어드레스(ADD2<0:19>)를 이용해 스페어 메모리(420)를 억세스할 수 있다. 제2어드레스(ADD2<0:19>)의 비트 수는 스페어 메모리(420) 내의 스페어 페이지의 개수에 따라 결정될 수 있다. 여기서는 스페어 메모리(420)가 1M개의 스페어 페이지들을 포함하는 것으로 예시했으므로 제2어드레스(ADD2<0:19>)의 비트 수가 20비트인 것으로 예시했다. 제1캐시 메모리(410)의 영역에서 남는 나머지 11비트는 사용되지 않을 수 있다(Unused).
스페어 메모리(420)는 다수의 스페어 페이지들(Spare Pages)을 포함할 수 있다. 스페어 페이지들 각각은 메인 메모리(130)의 메인 페이지들과 동일한 저장 용량(예, 1KB)을 가질 수 있다. 그리고 스페어 페이지들의 개수는 제2어드레스의 비트수에 대응할 수 있다. 여기서는 제2어드레스(ADD2<0:19>)가 20비트인 것으로 예시되었으므로 캐시 페이지들의 개수가 1M(=2^20)일 수 있다. 스페어 페이지들에는 대응하는 메인 페이지들, 즉 오류가 있는 메인 페이지들, 에 저장되어야 할 데이터가 저장될 수 있다. 즉, 스페어 페이지들은 오류가 있는 메인 페이지들을 대체(리페어)할 수 있다. 제2어드레스(ADD2<0:19>)는 스페어 메모리(420)에서 스페어 페이지들 중 하나의 스페어 페이지를 선택하기 위해 사용되고, 제3어드레스(ADD3<0:9>)는 선택된 스페어 페이지(1KB) 내에서 1바이트(1B)의 데이터를 선택하기위해 사용될 수 있다. 스페어 메모리(420)는 메인 메모리(130)와 동일한 종류의 메모리일 수 있다.
억세스 제어부(440)는 메모리 콘트롤러(호스트)(MEMORY CONTROLLER (HOST))로부터 전달되는 커맨드(CMD)와 어드레스(ADD<0:36>)에 응답해 제1캐시 메모리(410), 스페어 메모리(420) 및 메인 메모리(130)에 억세스하고, 제1캐시 메모리(410), 스페어 메모리(420) 및 메인 메모리(130)의 데이터(DATA)를 메모리 콘트롤러(호스트)(MEMORY CONTROLLER (HOST))와 주고받을 수 있다.
도 6은 메모리 시스템(400)의 동작을 도시한 순서도인데, 이를 참조해 메모리 시스템(400)의 동작에 대해 알아보기로 한다.
먼저, 메모리 콘트롤러(호스트)로부터 메모리 시스템(400)을 억세스하기 위한 커맨드(CMD)(예, 리드 커맨드 또는 라이트 커맨드)와 어드레스(ADD<0:36>)가 인가될 수 있다(S610). 여기서, 커맨드(CMD)가 라이트 커맨드인 경우에는 메모리 시스템(400)에 라이트될 데이터(DATA)도 메모리 시스템(400)으로 인가될 수 있다.
억세스 제어부(440)는 먼저 제1캐시 메모리(410)를 억세스할 수 있다(S620). 억세스 제어부(440)는 메모리 콘트롤러(호스트)로부터 전달된 어드레스(ADD<0:36) 중 27비트를 제1캐시 메모리(410)를 억세스하기 위한 제1어드레스(ADD1<0:26>)로 사용할 수 있다.
제1어드레스(ADD1<0:26>)를 이용해 억세스된 제1캐시 메모리(410)의 선택된 영역에 불량이 존재한다는 정보가 저장되어 있는 경우에(S630에서 Y), 즉 불량 정보(Faulty)='1'인 경우에, 억세스 제어부(440)는 제1캐시 메모리(410)의 선택된 영역에 저장된 제2어드레스(ADD2<0:19>)를 이용해 스페어 메모리(420)를 억세스할 수 있다(S640). 스페어 메모리(420)의 억세스시에 제2어드레스(ADD2<0:19>)는 스페어 메모리(420)에서 스페어 페이지를 선택하기 위해 사용되고, 제3어드레스(ADD3<0:9>)는 선택된 스페어 페이지에서 데이터를 선택하기 위해 사용될 수 있다. 제3어드레스(ADD3<0:9>)는 단계(S610)에서 억세스 제어부(640)가 메모리 콘트롤러(호스트)로부터 수신한 어드레스(ADD<0:36>) 중 제1어드레스(ADD1<0:26>)를 제외한 나머지 어드레스일 수 있다. 단계(S610)에서 억세스 제어부(640)가 메모리 콘트롤러(호스트)로부터 수신한 커맨드(CMD)가 리드 커맨드인 경우에 단계(S640)에서 스페어 메모리(420)로부터 리드된 데이터가 억세스 제어부(440)를 통해 메모리 콘트롤러(호스트)로 전송될 수 있다. 그리고, 단계(S610)에서 억세스 제어부(440)가 메모리 콘트롤러(호스트)로부터 수신한 커맨드(CMD)가 라이트 커맨드인 경우에 단계(S610)에서 억세스 제어부(440)가 메모리 콘트롤러(호스트)로부터 수신한 데이터(DATA)가 단계(S640)에서 스페어 메모리(420)로 라이트될 수 있다.
제1어드레스(ADD1<0:26>)를 이용해 억세스된 제1캐시 메모리(410)의 선택된 영역에 불량이 존재하지 않는다는 정보가 저장되어 있는 경우에(S630에서 N), 즉 불량 정보(Faulty)='0'인 경우에, 억세스 제어부(440)는 제1어드레스(ADD1<0:26>)와 제3어드레스(ADD3<0:9>)를 이용해 메인 메모리(130)를 억세스할 수 있다(S650). 제3어드레스(ADD3<0:9>)는 단계(S610)에서 억세스 제어부(440)가 메모리 콘트롤러(호스트)로부터 수신한 어드레스(ADD<0:36>) 중 제1어드레스(ADD1<0:26>)를 제외한 나머지 어드레스일 수 있다. 단계(S610)에서 억세스 제어부(440)가 메모리 콘트롤러(호스트)로부터 수신한 커맨드(CMD)가 리드 커맨드인 경우에 단계(S650)에서 메인 메모리(130)로부터 리드된 데이터가 억세스 제어부(440)를 통해 메모리 콘트롤러(호스트)로 전송될 수 있다. 그리고, 단계(S610)에서 억세스 제어부(440)가 메모리 콘트롤러(호스트)로부터 수신한 커맨드(CMD)가 라이트 커맨드인 경우에 단계(S610)에서 억세스 제어부(440)가 메모리 콘트롤러(호스트)로부터 수신한 데이터(DATA)가 단계(S650)에서 메인 메모리(130)로 라이트될 수 있다.
메모리 시스템(400)에서는 먼저 제1캐시 메모리(410)가 억세스되어 불량의 존재 여부가 확인되고, 불량이 존재하는 경우에는 제1캐시 메모리(410)에 저장된 제2어드레스(ADD2<0:19>)를 이용해 스페어 메모리(420)가 억세스되어 불량 없이 데이터가 리드 또는 라이트될 수 있다. 그리고, 불량이 존재하지 않는 경우에는 메인 메모리(130)가 억세스되어 데이터가 리드 또는 라이트될 수 있다. 이러한 리페어 스킴은 리페어를 위한 메모리 시스템(400)의 면적 증가를 최소화하면서도 메인 메모리(130)의 리페어를 가능하게 할 수 있다.
도 4에 도시된 메모리 시스템(400)의 구성들(410, 420, 130, 440)은 기능적인 분류를 의미하며 물리적인 구별을 의미하는 것이 아니다. 예를 들어, 도 4의 구성들(410, 420, 130, 440) 중 2 이상의 구성들이 하나의 물리적인 반도체 칩에 형성되거나 하나의 반도체 패키지 내에 포함될 수도 있다. 또한, 도 4에서 예시된 제1캐시 메모리(410), 스페어 메모리(420) 및 메인 메모리(130)의 전체 용량, 페이지의 개수 및 페이지의 용량은 예시일 뿐이며, 이는 얼마든 변경될 수 있음은 당연하다.
도 7은 본 발명의 또 다른 실시예에 따른 메모리 시스템의 구성도이다.
도 7을 참조하면, 메모리 시스템(700)은 제1캐시 메모리(710), 제2캐시 메모리(120), 스페어 메모리(420), 메인 메모리(130) 및 억세스 제어부(740)를 포함할 수 있다.
메인 메모리(130)는 큰 저장 용량을 가지고, 다수의 메인 페이지들을 포함할 수 있다. 예를 들어, 메인 메모리는 전체 128GB(Giga Byte)의 저장 용량을 가지고, 128M개의 메인 페이지를 가지고 각 메인 페이지는 1KB(Kilo Byte)의 저장 용량을 가질 수 있다. 그리고 각 메인 페이지 내에서 바이트 단위로 데이터의 어드레싱이 가능할 수, 즉 각 메인 페이지는 Byte Addressable할 수, 있다. 메인 메모리(130)로 입력되는 제1어드레스(ADD1<0:26))는 메인 메모리(130)의 128M개의 메인 페이지 중 하나의 메인 페이지를 선택하는데 사용될 수 있다. 그러므로 제1어드레스(ADD1<0:26>)는 27비트일 수 있다(2^27=128M). 메인 메모리(130)로 입력되는 제3어드레스(ADD3<0:9>)는 제1어드레스(ADD1<0:26>)에 의해 선택된 메인 페이지(1KB) 내에서 1바이트의 데이터를 선택하기위해 사용될 수 있다. 그러므로 제3어드레스(ADD3<0:9>)는 10비트일 수 있다(2^10=1K). 메인 메모리(130)와 스페어 메모리(420)는 제1캐시 메모리(710)와 제2캐시 메모리(120)보다 동작 속도는 느린 메모리일 수 있다. 예를 들어, 제1캐시 메모리(710)와 제2캐시 메모리(120)가 DRAM이라면 메인 메모리(130)와 스페어 메모리(420)는 FLASH메모리, PCRAM 및 RRAM 중 하나일 수 있다.
제1캐시 메모리(710)는 메인 메모리(130)의 메인 페이지들과 동일한 개수(128M)의 영역들(Regions)을 포함할 수 있다. 영역들 각각은 메타 데이터(mata data)를 저장하므로 비교적 작은 저장용량(예, 4B)을 가질 수 있다. 제1캐시 메모리(710)의 억세스시 영역들 중 하나의 영역이 제1어드레스(ADD1<0:26>)에 의해 선택되어 억세스될 수 있다. 영역들 각각에는 도 8와 같은 정보들이 저장될 수 있다.
도 8을 참조하면, 캐시 정보(Cached)는 제1캐시 메모리(710)의 해당 영역에 대응하는 메인 메모리(130)의 메인 페이지에 대한 캐시된 데이터가 제2캐시 메모리(120)에 존재하는지의 여부를 나타낼 수 있다. 캐시 정보(Cached)는 1비트일 수 있으며, 캐시 정보(Cached)가 '1'이면 캐시된 데이터가 존재한다는 것을 나타내고 캐시 정보(Cached)가 '0'이면 캐시된 데이터가 존재하지 않는다는 것을 나타낼 수 있다. 불량 정보(Faulty)는 제1캐시 메모리(710)의 해당 영역에 대응하는 메인 메모리(130)의 메인 페이지에 불량이 존재하는지의 여부를 나타낼 수 있다. 불량 정보(Faulty)는 1비트일 수 있으며, 불량 정보(Faulty)가 '1'이면 불량이 존재한다는 것을 나타내고 불량 정보(Faulty)가 '0'이면 불량이 존재하지 않는다는 것을 나타낼 수 있다. 더티/클린 정보(Dirty/Clean)는 제2캐시 메모리(120)에 캐시된 데이터와 메인 메모리(130)에 저장된 데이터가 일치하는지/아닌지에 대한 정보를 의미한다. 더티/클린 정보(Dirty/Clean)는 1비트일 수 있으며, 더티/클린 정보(Dirty/Clean)가 '1'이면 더티, 즉 제2캐시 메모리(120)에 캐시된 데이터와 메인 메모리(130)에 저장된 데이터가 일치하지 않음, 를 의미할 수 있다. 더티/클린 정보(Dirty/Clean)가 '0'이면 클린, 즉 제2캐시 메모리(120)에 캐시된 데이터와 메인 메모리(130)에 저장된 데이터가 일치함, 을 의미할 수 있다. 카운터 정보(Counter)는 해당 영역의 억세스 회수를 나타낼 수 있다. 카운터 정보(Counter)는 9비트인 것으로 예시했다. 제2어드레스(ADD2<0:19>)는 캐시된 데이터가 저장된 제2캐시 메모리(120)의 어드레스 또는 해당 메인 페이지를 대체할 스페어 메모리(420) 내의 스페어 페이지의 어드레스를 나타낼 수 있다. 캐시된 데이터가 존재하는 경우에는 제2어드레스(ADD2<0:19>)를 이용해 제2캐시 메모리(120)를 억세스할 수 있으며, 불량이 존재하는 경우에는 제2어드레스(ADD2<0:19>)를 이용해 스페어 메모리(420)를 억세스할 수 있다. 제2어드레스(ADD2<0:19>)의 비트 수는 제2캐시 메모리(120) 내의 캐시 페이지의 개수 및 스페어 메모리(420) 내의 스페어 페이지의 개수에 따라 결정될 수 있다. 여기서는 제2캐시 메모리(120)가 1M개의 캐시 페이지들을 포함하고 스페어 메모리(420)가 1M개의 스페어 페이지들을 포함하는 것으로 예시했으므로 제2어드레스(ADD2<0:19>)의 비트 수가 20비트인 것으로 예시했다.
제2캐시 메모리(120)는 다수의 캐시 페이지들(Cache Pages)을 포함할 수 있다. 캐시 페이지들 각각은 메인 메모리(130)의 메인 페이지들과 동일한 저장 용량(예, 1KB)을 가질 수 있다. 그리고 캐시 페이지들의 개수는 제2어드레스의 비트수에 대응할 수 있다. 여기서는 제2어드레스(ADD2<0:19>)가 20비트인 것으로 예시되었으므로 캐시 페이지들의 개수가 1M(=2^20)일 수 있다. 캐시 페이지들에는 대응하는 메인 페이지들의 캐시된 데이터가 저장될 수 있다. 제2어드레스(ADD2<0:19>)는 제2캐시 메모리(120)에서 캐시 페이지들 중 하나의 페이지를 선택하기 위해 사용되고, 제3어드레스(ADD3<0:9>)는 선택된 캐시 페이지(1KB) 내에서 1바이트(1B)의 데이터를 선택하기위해 사용될 수 있다.
스페어 메모리(420)는 다수의 스페어 페이지들(Spare Pages)을 포함할 수 있다. 스페어 페이지들 각각은 메인 메모리(130)의 메인 페이지들과 동일한 저장 용량(예, 1KB)을 가질 수 있다. 그리고 스페어 페이지들의 개수는 제2어드레스의 비트수에 대응할 수 있다. 여기서는 제2어드레스(ADD2<0:19>)가 20비트인 것으로 예시되었으므로 캐시 페이지들의 개수가 1M(=2^20)일 수 있다. 스페어 페이지들에는 대응하는 메인 페이지들, 즉 오류가 있는 메인 페이지들, 에 저장되어야 할 데이터가 저장될 수 있다. 즉, 스페어 페이지들은 오류가 있는 메인 페이지들을 대체(리페어)할 수 있다. 제2어드레스(ADD2<0:19>)는 스페어 메모리(420)에서 스페어 페이지들 중 하나의 스페어 페이지를 선택하기 위해 사용되고, 제3어드레스(ADD3<0:9>)는 선택된 스페어 페이지(1KB) 내에서 1바이트(1B)의 데이터를 선택하기위해 사용될 수 있다. 스페어 메모리(420)는 메인 메모리(130)와 동일한 종류의 메모리일 수 있다.
억세스 제어부(740)는 메모리 콘트롤러(호스트)(MEMORY CONTROLLER (HOST))로부터 전달되는 커맨드(CMD)와 어드레스(ADD<0:36>)에 응답해 제1캐시 메모리(710), 제2캐시 메모리(120), 스페어 메모리(420) 및 메인 메모리(130)에 억세스하고, 제1캐시 메모리(710), 제2캐시 메모리(120), 스페어 메모리(420) 및 메인 메모리(130)의 데이터(DATA)를 메모리 콘트롤러(호스트)(MEMORY CONTROLLER (HOST))와 주고받을 수 있다.
도 9는 메모리 시스템(700)의 동작을 도시한 순서도인데, 이를 참조해 메모리 시스템(700)의 동작에 대해 알아보기로 한다.
먼저, 메모리 콘트롤러(호스트)로부터 메모리 시스템(700)을 억세스하기 위한 커맨드(CMD)(예, 리드 커맨드 또는 라이트 커맨드)와 어드레스(ADD<0:36>)가 인가될 수 있다(S910). 여기서, 커맨드(CMD)가 라이트 커맨드인 경우에는 메모리 시스템(700)에 라이트될 데이터(DATA)도 메모리 시스템(700)으로 인가될 수 있다.
억세스 제어부(740)는 먼저 제1캐시 메모리(710)를 억세스할 수 있다(S920). 억세스 제어부(740)는 메모리 콘트롤러(호스트)로부터 전달된 어드레스(ADD<0:36) 중 27비트를 제1캐시 메모리(710)를 억세스하기 위한 제1어드레스(ADD1<0:26>)로 사용할 수 있다. 제1캐시 메모리(710)의 억세스시에 제1어드레스(ADD1<0:26>)를 이용해 억세스된 제1캐시 메모리(710)의 선택된 영역의 더티/클린 정보(Dirty/Clean) 및 카운터 정보(Counter)가 업데이트될 수 있다.
제1어드레스(ADD1<0:26>)를 이용해 억세스된 제1캐시 메모리(710)의 선택된 영역에 캐시된 데이터가 존재한다는 정보가 저장되어 있는 경우에(S930에서 Y), 즉 캐시 정보(Cached)='1'인 경우에, 억세스 제어부(740)는 제1캐시 메모리(710)의 선택된 영역에 저장된 제2어드레스(ADD2<0:19>)를 이용해 제2캐시 메모리(120)를 억세스할 수 있다(S940). 제2캐시 메모리(120)의 억세스시에 제2어드레스(ADD2<0:19>)는 제2캐시 메모리(120)에서 캐시 페이지를 선택하기 위해 사용되고, 제3어드레스(ADD3<0:9>)는 선택된 캐시 페이지에서 데이터를 선택하기 위해 사용될 수 있다. 제3어드레스(ADD3<0:9>)는 단계(S910)에서 억세스 제어부(740)가 메모리 콘트롤러(호스트)로부터 수신한 어드레스(ADD<0:36>) 중 제1어드레스(ADD1<0:26>)를 제외한 나머지 어드레스일 수 있다. 단계(S910)에서 억세스 제어부(740)가 메모리 콘트롤러(호스트)로부터 수신한 커맨드(CMD)가 리드 커맨드인 경우에 단계(S940)에서 제2캐시 메모리(120)로부터 리드된 데이터가 억세스 제어부(740)를 통해 메모리 콘트롤러(호스트)로 전송될 수 있다. 그리고, 단계(S910)에서 억세스 제어부(740)가 메모리 콘트롤러(호스트)로부터 수신한 커맨드(CMD)가 라이트 커맨드인 경우에 단계(S910)에서 억세스 제어부(740)가 메모리 콘트롤러(호스트)로부터 수신한 데이터(DATA)가 단계(S940)에서 제2캐시 메모리(120)로 라이트될 수 있다.
제1어드레스(ADD1<0:26>)를 이용해 억세스된 제1캐시 메모리(710)의 선택된 영역에 캐시된 데이터가 존재하지 않는다는 정보가 저장되어 있는 경우에(S930에서 N), 즉 캐시 정보(Cached)='0'인 경우에, 제1어드레스(ADD1<0:26>)를 이용해 억세스된 제1캐시 메모리(710)의 선택된 영역에 저장된 불량 정보(Faulty)가 확인될 수 있다(S950).
제1어드레스(ADD1<0:26>)를 이용해 억세스된 제1캐시 메모리(710)의 선택된 영역에 불량이 존재한다는 정보가 저장되어 있는 경우에(S950에서 Y), 즉 불량 정보(Faulty)='1'인 경우에, 억세스 제어부(740)는 제1캐시 메모리(710)의 선택된 영역에 저장된 제2어드레스(ADD2<0:19>)를 이용해 스페어 메모리(420)를 억세스할 수 있다(S960). 스페어 메모리(420)의 억세스시에 제2어드레스(ADD2<0:19>)는 스페어 메모리(420)에서 스페어 페이지를 선택하기 위해 사용되고, 제3어드레스(ADD3<0:9>)는 선택된 스페어 페이지 내에서 데이터를 선택하기 위해 사용될 수 있다. 단계(S910)에서 억세스 제어부(740)가 메모리 콘트롤러(호스트)로부터 수신한 커맨드(CMD)가 리드 커맨드인 경우에 단계(S960)에서 스페어 메모리(420)로부터 리드된 데이터가 억세스 제어부(740)를 통해 메모리 콘트롤러(호스트)로 전송될 수 있다. 그리고 단계(S910)에서 억세스 제어부(740)가 메모리 콘트롤러(호스트)로부터 수신한 커맨드(CMD)가 라이트 커맨드인 경우에 단계(S910)에서 억세스 제어부(740)가 메모리 콘트롤러(호스트)로부터 수신한 데이터(DATA)가 단계(S960)에서 스페어 메모리(420)로 라이트될 수 있다.
제1어드레스(ADD1<0:26>)를 이용해 억세스된 제1캐시 메모리(710)의 선택된 영역에 불량이 존재하지 않는다는 정보가 저장되어 있는 경우에(S950에서 N), 즉 불량 정보(Faulty)='0'인 경우에, 억세스 제어부(740)는 제1어드레스(ADD1<0:26>)와 제3어드레스(ADD3<0:9>)를 이용해 메인 메모리(130)를 억세스할 수 있다(S970). 단계(S910)에서 억세스 제어부(740)가 메모리 콘트롤러(호스트)로부터 수신한 커맨드(CMD)가 리드 커맨드인 경우에 단계(S970)에서 메인 메모리(130)로부터 리드된 데이터가 억세스 제어부(740)를 통해 메모리 콘트롤러(호스트)로 전송될 수 있다. 그리고, 단계(S910)에서 억세스 제어부(740)가 메모리 콘트롤러(호스트)로부터 수신한 커맨드(CMD)가 라이트 커맨드인 경우에 단계(S910)에서 억세스 제어부(440)가 메모리 콘트롤러(호스트)로부터 수신한 데이터(DATA)가 단계(S970)에서 메인 메모리(130)로 라이트될 수 있다.
메모리 시스템(700)에서는 먼저 제1캐시 메모리(710)가 억세스되어 캐시된 데이터가 존재하는지의 여부가 확인되고, 캐시된 데이터가 존재하는 경우에는 제1캐시 메모리(710)에 저장된 제2어드레스(ADD2<0:19>)를 이용해 제2캐시 메모리(120)가 억세스되어 데이터가 리드 또는 라이트될 수 있다. 그리고, 캐시된 데이터가 존재하지 않는 경우에는 불량의 존재 여부가 확인되고, 불량이 존재하는 경우에는 제1캐시 메모리(710)에 저장된 제2어드레스(ADD2<0:19>)를 이용해 스페어 메모리(420)가 억세스되어 불량 없이 데이터가 리드 또는 라이트될 수 있다. 그리고, 불량이 존재하지 않는 경우에는 메인 메모리(130)가 억세스되어 데이터가 리드 또는 라이트될 수 있다. 이러한 캐시 및 리페어 스킴은 캐시 및 리페어를 위한 메모리 시스템(700)의 면적 증가를 최소화하면서도 메모리 시스템(700)의 빠른 억세스를 가능하게 할 수 있다.
메모리 시스템(700)에서 제2캐시 메모리(120)에 캐시될 데이터의 추가 및 제2캐시 메모리(120)에 이미 캐시된 데이터의 축출(eviction) 등의 동작은 제1캐시 메모리(710)에 저장된 더티/클린 정보(Dirty/Clean) 및 카운터 정보(Counter) 등을 참조하여 메모리 시스템(700)의 캐시 관리 규정에 따라 수행될 수 있다. 그리고 캐시될 데이터의 추가 및 이미 캐시된 데이터의 축출 등의 동작을 수행하기 위한 캐시 관리 로직(미도시)이 메모리 시스템(700)에 추가되거나 메모리 시스템(700) 외부에 존재할 수 있다.
도 7에 도시된 메모리 시스템(700)의 구성들(710, 120, 420, 130, 740)은 기능적인 분류를 의미하며 물리적인 구별을 의미하는 것이 아니다. 예를 들어, 도 7의 구성들(710, 120, 420, 130, 740) 중 2 이상의 구성들이 하나의 물리적인 반도체 칩에 형성되거나 하나의 반도체 패키지 내에 포함될 수도 있다. 또한, 도 7에서 예시된 제1캐시 메모리(710), 제2캐시 메모리(120), 스페어 메모리(420) 및 메인 메모리(130)의 전체 용량, 페이지의 개수 및 페이지의 용량은 예시일 뿐이며, 이는 얼마든 변경될 수 있음은 당연하다.
본 발명의 기술 사상은 상기 바람직한 실시예들에 따라 구체적으로 기술되었으나, 상기한 실시예들은 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술분야에서 통상의 지식을 가진 자라면 본 발명의 기술사상의 범위 내에서 다양한 실시예가 가능함을 알 수 있을 것이다.
100: 메모리 시스템 110: 제1캐시 메모리(110)
120: 제2캐시 메모리 130: 메인 메모리(130)
140: 억세스 제어부

Claims (20)

  1. 제1어드레스를 이용해 억세스되는 다수의 영역을 포함하고, 각 영역에는 캐시된 데이터의 존재 여부와 제2어드레스가 저장되는 제1캐시 메모리;
    상기 제1캐시 메모리의 억세스 결과 캐시된 데이터가 존재하는 경우에 상기 제1캐시 메모리의 억세스된 영역에 저장된 제2어드레스를 이용해 억세스되는 제2캐시 메모리; 및
    상기 제1캐시의 억세스 결과 캐시된 데이터가 존재하지 않는 경우에 상기 제1어드레스를 이용해 억세스되는 메인 메모리
    를 포함하는 메모리 시스템.
  2. 제 1항에 있어서,
    상기 제2캐시 메모리와 상기 메인 메모리의 억세스시에는 제3어드레스가 더 사용되는
    메모리 시스템.
  3. 제 2항에 있어서,
    상기 메인 메모리는 다수의 메인 페이지를 포함하고,
    상기 제1어드레스는 상기 다수의 메인 페이지 중 하나의 메인 페이지를 선택하기 위해 사용되고, 상기 제3어드레스는 선택된 메인 페이지 내에서 데이터를 선택하기 위해 사용되는
    메모리 시스템.
  4. 제 2항에 있어서,
    상기 제2캐시 메모리는 다수의 캐시 페이지를 포함하고,
    상기 제2어드레스는 상기 다수의 캐시 페이지 중 하나의 캐시 페이지를 선택하기 위해 사용되고, 상기 제3어드레스는 선택된 캐시 페이지 내에서 데이터를 선택하기 위해 사용되는
    메모리 시스템.
  5. 제 1항에 있어서,
    상기 다수의 영역 각각에는 더티/클린 정보와 억세스 카운트 정보가 더 저장되는
    메모리 시스템.
  6. 제 1항에 있어서,
    상기 메인 메모리의 동작 속도는 상기 제1캐시 메모리와 상기 제2캐시 메모리의 동작 속도보다 느리고,
    상기 메인 메모리의 저장 용량은 상기 제1캐시 메모리와 상기 제2캐시 메모리의 저장 용량보다 큰
    메모리 시스템.
  7. 제1어드레스를 이용해 억세스되는 다수의 영역을 포함하고, 각 영역에는 결함의 존재 여부와 제2어드레스가 저장되는 제1캐시 메모리;
    상기 제1캐시 메모리의 억세스 결과 결함이 존재하는 경우에 상기 제1캐시 메모리의 억세스된 영역에 저장된 제2어드레스를 이용해 억세스되는 스페어 메모리; 및
    상기 제1캐시 메모리의 억세스 결과 결함이 존재하지 않는 경우에 상기 제1어드레스를 이용해 억세스되는 메인 메모리
    를 포함하는 메모리 시스템.
  8. 제 7항에 있어서,
    상기 스페어 메모리와 상기 메인 메모리의 억세스시에는 제3어드레스가 더 사용되는
    메모리 시스템.
  9. 제 8항에 있어서,
    상기 메인 메모리는 다수의 메인 페이지를 포함하고,
    상기 제1어드레스는 상기 다수의 메인 페이지 중 하나의 메인 페이지를 선택하기 위해 사용되고, 상기 제3어드레스는 선택된 메인 페이지 내에서 데이터를 선택하기 위해 사용되는
    메모리 시스템.
  10. 제 8항에 있어서,
    상기 스페어 메모리는 다수의 스페어 페이지를 포함하고,
    상기 제2어드레스는 상기 다수의 스페어 페이지 중 하나의 스페어 페이지를 선택하기 위해 사용되고, 상기 제3어드레스는 선택된 스페어 페이지 내에서 데이터를 선택하기 위해 사용되는
    메모리 시스템.
  11. 제 7항에 있어서,
    상기 메인 메모리와 상기 스페어 메모리의 동작 속도는 상기 제1캐시 메모리의 동작 속도보다 느리고,
    상기 메인 메모리의 저장 용량은 상기 제1캐시 메모리와 상기 스페어 메모리의 저장 용량보다 큰
    메모리 시스템.
  12. 제1어드레스를 이용해 억세스되는 다수의 영역을 포함하고, 각 영역에는 캐시된 데이터의 존재 여부, 결함의 존재 여부 및 제2어드레스가 저장되는 제1캐시 메모리;
    상기 제1캐시 메모리의 억세스 결과 캐시된 데이터가 존재하는 경우에 상기 제1캐시 메모리의 억세스된 영역에 저장된 제2어드레스를 이용해 억세스되는 제2캐시 메모리;
    상기 제1캐시 메모리의 억세스 결과 캐시된 데이터가 존재하지 않고 결함이 존재하는 경우에 상기 제1캐시 메모리의 억세스된 영역에 저장된 제2어드레스를 이용해 억세스되는 스페어 메모리; 및
    상기 제1캐시 메모리의 억세스 결과 캐시된 데이터와 결함이 존재하지 않는 경우에 상기 제1어드레스를 이용해 억세스되는 메인 메모리
    를 포함하는 메모리 시스템.
  13. 제 12항에 있어서,
    상기 제2캐시 메모리, 상기 스페어 메모리 및 상기 메인 메모리의 억세스시에는 제3어드레스가 더 사용되는
    메모리 시스템.
  14. 제 13항에 있어서,
    상기 메인 메모리는 다수의 메인 페이지를 포함하고,
    상기 제1어드레스는 상기 다수의 메인 페이지 중 하나의 메인 페이지를 선택하기 위해 사용되고, 상기 제3어드레스는 선택된 메인 페이지 내에서 데이터를 선택하기 위해 사용되는
    메모리 시스템.
  15. 제 13항에 있어서,
    상기 제2캐시 메모리는 다수의 캐시 페이지를 포함하고,
    상기 제2어드레스는 상기 다수의 캐시 페이지 중 하나의 캐시 페이지를 선택하기 위해 사용되고, 상기 제3어드레스는 선택된 캐시 페이지 내에서 데이터를 선택하기 위해 사용되는
    메모리 시스템.
  16. 제 13항에 있어서,
    상기 스페어 메모리는 다수의 스페어 페이지를 포함하고,
    상기 제2어드레스는 상기 다수의 스페어 페이지 중 하나의 스페어 페이지를 선택하기 위해 사용되고, 상기 제3어드레스는 선택된 스페어 페이지 내에서 데이터를 선택하기 위해 사용되는
    메모리 시스템.
  17. 제 12항에 있어서,
    상기 다수의 영역 각각에는 더티/클린 정보와 억세스 카운트 정보가 더 저장되는
    메모리 시스템.
  18. 제 12항에 있어서,
    상기 메인 메모리와 상기 스페어 메모리의 동작 속도는 상기 제1캐시 메모리와 상기 제2캐시 메모리의 동작 속도보다 느리고,
    상기 메인 메모리의 저장 용량은 상기 스페어 메모리, 상기 제1캐시 메모리 및 상기 제2캐시 메모리의 저장 용량보다 큰
    메모리 시스템.
  19. 제1어드레스를 이용해 제1캐시 메모리에 억세스하는 단계;
    상기 제1캐시 메모리의 억세스 결과 캐시된 데이터의 존재가 확인되는 경우에, 상기 제1캐시 메모리에 저장된 제2어드레스를 이용해 제2캐시 메모리에 억세스하는 단계; 및
    상기 제1캐시 메모리의 억세스 결과 캐시된 데이터가 존재하지 않는다고 확인되는 경우에, 상기 제1어드레스를 이용해 메인 메모리에 억세스하는 단계
    를 포함하는 메모리 시스템의 동작 방법.
  20. 제 19항에 있어서,
    상기 제1캐시 메모리의 억세스 결과 캐시된 데이터가 존재하지 않고 결함이 존재한다고 확인되는 경우에, 상기 메인 메모리에 억세스하는 단계를 대신해 상기 제1캐시 메모리에 저장된 제2어드레스를 이용해 스페어 메모리에 억세스하는 단계
    를 더 포함하는 메모리 시스템의 동작 방법.
KR1020150185001A 2015-12-23 2015-12-23 메모리 시스템 KR20170075396A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020150185001A KR20170075396A (ko) 2015-12-23 2015-12-23 메모리 시스템
US15/343,417 US10402325B2 (en) 2015-12-23 2016-11-04 Memory system
CN201611205341.8A CN107038126B (zh) 2015-12-23 2016-12-23 存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150185001A KR20170075396A (ko) 2015-12-23 2015-12-23 메모리 시스템

Publications (1)

Publication Number Publication Date
KR20170075396A true KR20170075396A (ko) 2017-07-03

Family

ID=59088322

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150185001A KR20170075396A (ko) 2015-12-23 2015-12-23 메모리 시스템

Country Status (3)

Country Link
US (1) US10402325B2 (ko)
KR (1) KR20170075396A (ko)
CN (1) CN107038126B (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200004119A (ko) * 2018-07-03 2020-01-13 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
KR20200056548A (ko) * 2018-11-14 2020-05-25 에스케이하이닉스 주식회사 캐시 시스템을 갖는 메모리 시스템 및 메모리 시스템에서의 캐싱 동작 제어방법

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5249282A (en) 1990-11-21 1993-09-28 Benchmarq Microelectronics, Inc. Integrated cache memory system with primary and secondary cache memories
US6029224A (en) * 1995-06-07 2000-02-22 Lucent Technologies Inc. Self-contained memory apparatus having diverse types of memory and distributed control
CN1173271C (zh) * 1999-12-24 2004-10-27 仁宝电脑工业股份有限公司 具有双重高速缓冲映射存储器的高速缓冲存储器系统
KR100351504B1 (ko) * 2000-06-05 2002-09-05 삼성전자 주식회사 캐쉬 메모리, 그의 전력 소비 절감 방법 그리고 캐쉬메모리를 구비하는 데이터 처리 시스템
GB2378277B (en) * 2001-07-31 2003-06-25 Sun Microsystems Inc Multiple address translations
JP4199519B2 (ja) * 2002-11-05 2008-12-17 パナソニック株式会社 メモリ管理装置及びメモリ管理方法
TW201017421A (en) * 2008-09-24 2010-05-01 Panasonic Corp Cache memory, memory system and control method therefor
US8825957B2 (en) 2012-01-17 2014-09-02 International Business Machines Corporation Demoting tracks from a first cache to a second cache by using an occupancy of valid tracks in strides in the second cache to consolidate strides in the second cache

Also Published As

Publication number Publication date
US10402325B2 (en) 2019-09-03
US20170185513A1 (en) 2017-06-29
CN107038126A (zh) 2017-08-11
CN107038126B (zh) 2021-03-16

Similar Documents

Publication Publication Date Title
US10445005B2 (en) Memory system and operating method thereof
JP5479479B2 (ja) 超低電圧動作時にキャッシュラインが動作可能かを判断する装置、方法、及びコンピューティングシステム
JP5792019B2 (ja) 半導体装置
US20170185499A1 (en) Memory device performing post package repair (ppr) operation
US9563551B2 (en) Data storage device and data fetching method for flash memory
JP5847940B2 (ja) 半導体装置
US9786389B2 (en) Memory system
US10235300B2 (en) Memory system including memory device and operation method thereof
KR20160024546A (ko) 데이터 저장 장치 및 그것의 동작 방법
US20180197968A1 (en) Nonvolatile storage circuit and semiconductor memory device including the same
US10235049B2 (en) Device and method to manage access method for memory pages
KR20170075396A (ko) 메모리 시스템
US9030871B2 (en) Integrated circuit with programmable storage cell array and boot-up operation method thereof
CN110727610B (zh) 高速缓存存储器、存储系统和高速缓存存储器的逐出方法
KR102103415B1 (ko) 반도체 장치, 메모리 장치 및 이를 포함하는 시스템
KR20130136341A (ko) 반도체 장치 및 그 동작 방법
JP2019045910A (ja) 半導体記憶装置
KR20180134119A (ko) 비휘발성 메모리 시스템 및 그 동작 방법
US20210208808A1 (en) Host Supported Partitions in Storage Device
JP6039772B1 (ja) メモリシステム
US10140025B2 (en) Memory system including memory controller and operation method thereof
WO2016056290A1 (ja) メモリコントローラ、メモリシステム、記憶装置、情報処理システムおよび記憶制御方法
KR20200112435A (ko) 캐시 메모리, 이를 포함하는 메모리 시스템, 및 그의 동작 방법
JP6145227B2 (ja) 半導体装置
US20240152461A1 (en) Swap memory device providing data and data block, method of operating the same, and method of operating electronic device including the same

Legal Events

Date Code Title Description
N231 Notification of change of applicant