KR20160064720A - 캐시 메모리 장치 및 이를 포함하는 전자 시스템 - Google Patents

캐시 메모리 장치 및 이를 포함하는 전자 시스템 Download PDF

Info

Publication number
KR20160064720A
KR20160064720A KR1020140168680A KR20140168680A KR20160064720A KR 20160064720 A KR20160064720 A KR 20160064720A KR 1020140168680 A KR1020140168680 A KR 1020140168680A KR 20140168680 A KR20140168680 A KR 20140168680A KR 20160064720 A KR20160064720 A KR 20160064720A
Authority
KR
South Korea
Prior art keywords
cache
processors
memory
processor
information
Prior art date
Application number
KR1020140168680A
Other languages
English (en)
Other versions
KR102354848B1 (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 KR1020140168680A priority Critical patent/KR102354848B1/ko
Priority to US14/933,144 priority patent/US9892046B2/en
Publication of KR20160064720A publication Critical patent/KR20160064720A/ko
Priority to US15/882,722 priority patent/US10503647B2/en
Application granted granted Critical
Publication of KR102354848B1 publication Critical patent/KR102354848B1/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
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors

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)

Abstract

복수(2이상)의 프로세서에 의해 공유되는 캐시 메모리 장치 및 이를 포함하는 전자 시스템이 제공된다. 본 발명의 캐시 메모리 장치는 메인 메모리에 저장된 데이터의 일부를 저장하며, 상기 복수(2이상)의 프로세서에 의해 억세스되는 캐시 메모리 및 상기 복수의 프로세서의 각 서비스 품질 정보(QoS)를 저장하고, 해당 프로세서의 서비스 품질 정보에 따라, 상기 캐시 메모리 내의 해당 프로세서가 관리할 수 있는 저장 공간의 크기를 다르게 할당하는 캐시 컨트롤러를 포함한다.

Description

캐시 메모리 장치 및 이를 포함하는 전자 시스템{Cache Memory Device and Electronic System including the Same}
본 발명의 개념에 따른 실시 예는 캐시(cache) 메모리 및 이를 포함하는 전자 시스템에 관한 것이다.
대부분의 프로세서(processor)나 SoC(system-on-Chip)는 캐시 메모리를 사용한다. 캐시 메모리는 캐시를 포함하는 반도체 집적회로나 시스템의 성능에 큰 영향을 준다.
특히, 둘(2) 이상의 프로세서가 공유하는 캐시 메모리의 경우, 캐시 메모리를 어떻게 운영하느냐에 따라 전체 시스템의 성능이 달라질 수 있다.
본 발명이 이루고자 하는 기술적인 과제는 둘 이상의 프로세서가 공유하는 캐시 메모리에서 서비스 품질 정보(QoS)에 따라 할당되는 캐시 사이즈를 다르게 하여 프로세서별 성능을 다르게 조절할 있는 캐시 메모리 장치 및 이를 포함하는 전자 시스템을 제공하는 것이다.
본 발명의 실시 예에 따르면, 제1 프로세서; 제2 프로세서; 메인 메모리에 저장된 데이터의 일부를 저장하며, 상기 제1 및 제2 프로세서가 억세스할 수 있는 캐시 메모리; 및 상기 제1 및 제2 프로세서의 서비스 품질 정보(QoS)에 따라, 상기 캐시 메모리 내의 해당 프로세서가 관리할 수 있는 저장 공간의 크기를 다르게 할당하는 캐시 컨트롤러를 포함하는 전자 시스템이 제공된다.
상기 캐시 컨트롤러는 상기 제1 및 제2 프로세서 각각의 서비스 품질 정보를 저장하는 QoS 정보 저장부를 포함하며, 상기 캐시 메모리는 복수의 엔트리들을 포함할 수 있다.
상기 캐시 컨트롤러는 상기 서비스 품질 정보에 따른 캐시 사이즈 정보를 저장하는 사이즈 정보 저장부를 더 포함할 수 있다.
상기 캐시 컨트롤러는 상기 캐시 사이즈 정보에 따라 상기 복수의 엔트리들 중 해당 프로세서가 관리할 수 있는 엔트리들을 제한할 수 있다.
상기 캐시 메모리는 n(2이상의 정수)개의 웨이(way)를 포함하는 n-방향 세트-연관 캐시일 수 있다.
상기 캐시 컨트롤러는 상기 캐시 사이즈 정보에 따라 상기 n개의 웨이 중 관리할 수 있는 웨이를 제한할 수 있다.
상기 복수의 엔트리들은 둘 이상의 엔트리 그룹들로 나뉘어지고, 상기 캐시 컨트롤러는 상기 캐시 사이즈 정보에 따라 상기 둘 이상의 엔트리 그룹 중 관리할 수 있는 엔트리 그룹을 제한할 수 있다.
본 발명의 실시예에 따르면, 복수(2이상)의 프로세서에 의해 공유되는 캐시 메모리 장치가 제공된다.
상기 캐시 메모리 장치는 메인 메모리에 저장된 데이터의 일부를 저장하며, 상기 복수(2이상)의 프로세서에 의해 억세스되는 캐시 메모리; 및 상기 복수의 프로세서의 각 서비스 품질 정보(QoS)를 저장하고, 해당 프로세서의 서비스 품질 정보에 따라, 상기 캐시 메모리 내의 해당 프로세서가 관리할 수 있는 저장 공간의 크기를 다르게 할당하는 캐시 컨트롤러를 포함한다.
상기 캐시 컨트롤러는 상기 복수의 프로세서 각각에 해당하는 서비스 품질 정보(QoS)를 저장하는 QoS 품질 저장부를 포함하고, 상기 복수의 프로세서 중 어느 하나의 프로세서로부터 트랜잭션 수신시 프로세서 식별자를 함께 수신하고, 상기 QoS 품질 저장부로부터 상기 수신된 프로세서 식별자에 해당하는 서비스 품질 정보를 추출할 수 있다.
상기 캐시 컨트롤러는 상기 서비스 품질 정보에 따른 캐시 사이즈 정보를 저장하는 사이즈 정보 저장부를 더 포함하고, 상기 캐시 메모리는 복수의 엔트리들을 포함할 수 있다.
본 발명의 실시 예에 따르면, 둘 이상의 프로세서가 공유하는 캐시 메모리에서 서비스 품질 정보(QoS)에 따라 할당되는 캐시 사이즈를 다르게 함으로써 중요도에 따라 성능을 가변할 수 있다. 따라서, 높은 서비스 품질을 요구하는 프로세서는 상대적으로 더 많은 캐시 엔트리들을 할당 받을 수 있고, 그로 인해 캐시 히트율(cache hit-ratio)이 높아질 수 있다.
또한 본 발명의 실시예에 따르면, 프로세서별 또는 상황별 요구되는 서비스 품질 정보가 달라지는 환경에서, 서비스 품질 정보에 따라 할당 가능한 캐시 사이즈를 다르게 함으로써, 트랜잭션의 중요도에 따라 성능을 다르게 할 수 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 2는 도 1에 도시된 캐시 메모리의 일 실시예를 나타내는 구성 블록도이다.
도 3은 도 2의 데이터 메모리의 일 실시예를 나타낸다.
도 4는 도 2의 태그 메모리의 일 실시예를 나타낸다.
도 5는 도 1에 도시된 트랜잭션이 포함하는 트랜잭션 어드레스의 일 실시예를 나타낸다.
도 6은 본 발명의 다른 실시예에 따른 캐시 메모리의 구성 블록도이다.
도 7은 도 6에 도시된 QoS 정보 저장부의 일 실시예를 나타낸다.
도 8a는 도 6에 도시된 사이즈 정보 저장부의 일 실시예를 나타낸다.
도 8b는 도 6에 도시된 사이즈 정보 저장부의 다른 실시예를 나타낸다.
도 9는 본 발명의 실시예에 따른 캐시 메모리 장치의 동작 방법을 나타내는 플로우차트이다.
도 10은 본 발명의 실시예에 따른 SoC를 포함하는 전자 시스템의 실시 예를 나타내는 블록도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 1을 참조하면, 전자 시스템(10)은 이동 전화기, 스마트폰, 태블릿 컴퓨터(tablet computer), PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PDN(personal navigation device 또는 portable navigation device), 손으로 들고 다닐 수 있는 게임 콘솔(handheld game console), 또는 e-북(e-book)과 같이 손으로 들고 다닐 수 있는 장치(handheld device)로 구현될 수 있다.
전자 시스템(10)은 복수(m; 2이상의 정수)의 프로세서(processor)들(110-1, 110-2, 110-m), 메인 메모리(140), 시스템 버스(150) 및 캐시 메모리(200)를 포함할 수 있다.
제1 내지 제m 프로세서(110-1, 110-2, 110-m) 각각은 메인 메모리(140)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 예컨대, 각 프로세서(110-1, 110-2, 110-m)는 클락 신호 발생기(미도시)로부터 출력된 클락 신호에 응답하여 상기 프로그램들 및/또는 상기 데이터를 처리 또는 실행할 수 있다.
각 프로세서(110-1, 110-2, 110-m)는 별도의 프로세서일 수도 있고, 멀티-코어 프로세서(multi-core processor)를 구성하는 코어(core)일 수도 있다. 상기 멀티-코어 프로세서는 두 개 또는 그 이상의 독립적인 실질적인 프로세서들('코어들(cores)'이라고 불림)을 갖는 하나의 컴퓨팅 컴포넌트(computing component)이고, 상기 코어들 각각은 프로그램 명령들(program instructions)을 읽고 실행할 수 있다.
제1 내지 제m 프로세서(110-1, 110-2, 110-m) 각각은 CPU(Central Processing Unit), GPU(Graphic Processing Unit), MFC(Multi-Format Codec), JPEG(Joint Photographic Experts Group) 프로세서, 또는 비디오 프로세서(Video Processor)일 수 있으나, 이에 한정되는 것은 아니다.
메인 메모리(140)는 제1 내지 제m 프로세서(110-1, 110-2, 110-m)가 실행하기 위한 명령 및 데이터를 저장할 수 있다. 메인 메모리(140)는 휘발성 메모리 장치 또는 불휘발성 메모리 장치로 구현될 수 있다.
상기 휘발성 메모리 장치는 DRAM(dynamic random access memory), SRAM (static random access memory), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM)으로 구현될 수 있다.
상기 불휘발성 메모리 장치는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque(STT)-MRAM), Conductive bridging RAM(CBRAM), FeRAM (Ferroelectric RAM), PRAM(Phase change RAM), 저항 메모리(Resistive RAM: RRAM), 나노튜브 RRAM(nanotube RRAM), 폴리머 RAM(Polymer RAM: PoRAM), 나노 부유 게이트 메모리(nano Floating Gate Memory: nFGm), 홀로그래픽 메모리 (holographic memory), 분자 전자 메모리 소자(molecular Electronics Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)로 구현될 수 있다.
캐시 메모리(또는 '시스템 캐시'라 칭하기도 함, 200)는 시스템 버스(150)와 메인 메모리(140) 사이에 접속될 수 있다.
실시예에 따라 캐시 메모리(200)는 휘발성 메모리 장치, 예컨대 SRAM으로 구현될 수 있다.
캐시 메모리(200)는 데이터 메모리(Data Array, 210), 태그 메모리(Tag Array, 220) 및 캐시 컨트롤러(230)를 포함할 수 있다.
캐시 컨트롤러(230)는 유한상태머신(finite state machine; FSM)으로 구현될 수 있다.
실시예에 따라, 제1 내지 제m 프로세서(110-1, 110-2, 110-m)는 내부에 캐시 메모리(예컨대, L1 캐시)(미도시)를 포함할 수 있다.
예컨대, 제1 프로세서(110-1)는 L1캐시(미도시)를 포함할 수 있다. L1캐시는 제1 프로세서(110-1)와 동일한 칩 상에 위치할 수 있다.
전자 시스템(10)은 L2캐시(미도시)를 더 포함할 수 있다. L2캐시는 제1 내지 제m 프로세서(110-1, 110-2, 110-m)와 별도의 칩이나 확장 카드 상에 구현되고, 제1 내지 제m 프로세서(110-1, 110-2, 110-m) 중 하나의 프로세서와 시스템 버스(150) 사이에 접속될 수 있다.
도 2는 도 1에 도시된 캐시 메모리의 일 실시예(200a)를 나타내는 구성 블록도이다. 도 3은 도 2의 데이터 메모리의 일 실시예를 나타내고, 도 4는 도 2의 태그 메모리의 일 실시예를 나타낸다.
도 1 내지 도 4를 참조하면, 본 발명의 일 실시예에 따른 캐시 메모리(200a)는 캐시 컨트롤러(230), 데이터 메모리(210), 및 태그 메모리(220)를 포함한다.
데이터 메모리(210)는 메인 메모리(140)에 저장된 데이터의 일부를 저장하기 위한 데이터 저장 장소로서, 복수(2이상, 예컨대, 1024)의 데이터 엔트리를 포함할 수 있다.
태그 메모리(220)는 각 데이터 엔트리에 대한 정보, 예컨대, 태그 어드레스, 유효성(valid) 비트(V, 280) 등을 저장하기 위한 저장 장소로서, 데이터 엔트리와 동일한 수의 태그 엔트리를 포함할 수 있다.
캐시 컨트롤러(230)는 제1 내지 제m 프로세서(110-1, 110-2, 110-m)의 각 서비스 품질 정보(QoS; Quality of Service)를 저장하고, 해당 프로세서의 서비스 품질 정보에 따라, 데이터 메모리(210)의 저장 공간들 중 해당 프로세서가 관리할 수 있는 저장 공간의 크기를 다르게 할당할 수 있다.
예컨대, 캐시 컨트롤러(230)는 해당 프로세서(또는 트랜잭션)의 서비스 품질 정보 따라 복수의 엔트리들 중 해당 프로세서(또는 트랜잭션)가 관리할 수 있는 엔트리들을 제한하거나, 추가로 할당 가능한 엔트리들을 다르게 함으로써, 프로세서(또는 트랜잭션)별 관리 가능한 캐시 사이즈를 다르게 할 수 있다.
실시예에 따라, 캐시 컨트롤러(230)는 캐시 일관성(cache coherency)을 해치지 않기 위해 해당 프로세서가 관리하지 못하는 엔트리에 대해서도 엑세스를 가능하게 할 수 있다.
예를 들어, 캐시 컨트롤러(230)는 데이터 메모리(210)에 기 저장되어 있는 데이터를 해당 프로세서(또는 트랜잭션)가 읽거나 쓰고자 할 때에는 제한을 두지 않고, 모든 엔트리의 데이터에 대하여 읽거나 쓸 수 있도록 허용할 수 있다.
반면, 캐시 컨트롤러(230)는 데이터 메모리(210)에 있는 데이터를 삭제(또는 무효화)하거나, 해당 프로세서(또는 트랜잭션)에 신규로 엔트리들을 할당할 때는 해당 프로세서의 서비스 품질 정보에 따라 엔트리를 제한할 수 있다.
캐시 메모리(200)는 하나 이상의 버스(bus)와 인터페이스하기 위한 버스 인터페이스 유닛(BIU)(241, 243, 245)을 더 포함할 수 있다.
실시예에 따라, 버스 인터페이스 유닛(241, 243, 245)은 메인 버스(151)와 인터페이스하기 위한 메인 버스 인터페이스 유닛(241), 메모리 버스(152)와 인터페이스하기 위한 메모리 버스 인터페이스 유닛(243) 및 페리페럴 버스(peripheral bus)(153)와 인터페이스하기 위한 페리페럴 버스 인터페이스 유닛(245)을 포함할 수 있다.
캐시 메모리(200)는 n-방향 세트-연관 캐시(n-way set-associative cache)로 구현될 수 있다. 이때, 캐시 메모리(200)는 n(n은 2 이상의 정수)개의 서브 메모리(또는 웨이라고 칭함)를 포함할 수 있다. 각 서브 메모리는 상응하는 서브 데이터 메모리 및 서브 태그 메모리를 포함할 수 있다.
n=2이고, 각 서브 메모리의 캐시 라인의 수가 1024개인 경우를 가정한다.
데이터 메모리(210)는 제1 서브 데이터 메모리(211-1) 및 제2 서브 데이터 메모리(211-2)를 포함할 수 있다.
실시예에 따라, 각 서브 데이터 메모리(211-1, 211-2)는 데이터를 저장하는 1024개의 캐시 라인을 포함할 수 있고, 각 캐시 라인은 64바이트일 수 있다. 그러나, 본 발명의 실시예가 이에 한정되는 것은 아니다.
각 캐시 라인은 1부터 1024까지의 인덱스(index)에 의해 선택될 수 있다. 동일한 인덱스(예컨대, 1 이상 1024 이하의 임의의 정수 k)에 의해 선택된 각 서브 데이터 메모리(211-1, 211-2)의 캐시 라인은 하나의 세트를 구성할 수 있다.
태그 메모리(220)는 제1 서브 태그 메모리(221-1) 및 제2 서브 태그 메모리(221a-2)를 포함할 수 있다.
각 서브 태그 메모리(221-1, 221-2)는 캐시 라인의 수와 동일한 수, 예컨대 1024개의 태그 어드레스(290)를 포함할 수 있다.
각 서브 태그 메모리(221-1, 221-2)는 각각이 각 태그 어드레스(290)에 상응하는 유효성(valid) 비트(V, 280)를 더 포함할 수 있다.
유효성 비트(280)는 태그 어드레스(290)에 상응하는 캐시 라인의 데이터가 유효한지를 나타낸다. 각 서브 태그 메모리(221-1, 221-2)는 또한 캐시 라인의 데이터가 메인 메모리(140)의 데이터와 다른지 여부를 나타내는 더티 비트(미도시)를 더 포함할 수 있다.
이하에서, 제1 서브 메모리는 제1 서브 데이터 메모리(211-1) 및 제1 서브 태그 메모리(221-1)로 구성되고, 제2 서브 메모리는 제2 서브 데이터 메모리(211-2) 및 제2 서브 태그 메모리(221-2)로 구성되는 것으로 가정한다.
제1 내지 제m 프로세서(110-1, 110-2, 110-m) 각각은 시스템 버스(150)를 통해 캐시 메모리(200)로 메모리 액세스 요청, 즉 트랜잭션(trs)을 전송할 수 있다. 각 트랜잭션(trs)은 특정 어드레스를 포함할 수 있다.
도 5는 도 1에 도시된 트랜잭션(trs)이 포함하는 트랜잭션 어드레스의 일 실시예를 나타낸다.
트랜잭션 어드레스(300)는 태그 어드레스(Tag_add, 310), 인덱스(Index, 320) 및 라인 오프셋(Line_offset, 330)을 포함할 수 있다.
시스템 버스(150)는 태그 어드레스(310), 인덱스(320) 및 라인 오프셋(330)을 이용하여 캐시 메모리(200)에 캐시 액세스를 할 수 있다.
도 1 및 도 5를 참조하여 캐시 액세스 시의 동작을 기술하면 다음과 같다. 여기서, n개의 서브 태그 메모리(221-1~221-n)가 상기 n개의 웨이에 상응한다고 가정한다.
캐시 컨트롤러(230)는 트랜잭션 어드레스(300)의 인덱스(320)에 상응하는 각 서브 태그 메모리(221-1~221-n)의 태그 어드레스를 트랜잭션 어드레스(300)의 태그 어드레스(Tag_add)와 비교하여 동일한지 판단한다.
캐시 컨트롤러(230)는 태그 어드레스가 동일하고, 태그 어드레스에 상응하는 유효성 비트(V)가 유효함을 나타내면, 캐시 히트(cache hit)로 판단할 수 있다. 이후 캐시 컨트롤러(230)는 상응하는 서브 데이터 메모리(211)에서, 인덱스(320)에 상응하는 데이터 엔트리내의 라인 오프셋(330)에 상응하는 데이터를 선택할 수 있다.
도 6은 본 발명의 다른 실시예에 따른 캐시 메모리(200b)의 구성 블록도이다. 도 7은 도 6에 도시된 QoS 정보 저장부의 일 실시예를 나타낸다.
도 1, 도 6 및 도 7을 참조하면, 캐시 메모리(200b)는 캐시 컨트롤러(230), 데이터 메모리(210b), 및 태그 메모리(220b)를 포함한다.
캐시 컨트롤러(230)는 QoS 정보 저장부(231), 사이즈 정보 저장부(232), 엔트리 메니저(233) 및 엔트리 할당부(234)를 포함할 수 있다.
QoS 정보 저장부(231)는 프로세서별로 서비스 품질 정보(P_QoS)를 저장한다.
예를 들어, 도 7의 실시예과 같이, QoS 정보 저장부(231)는 각 프로세서의 식별자(PID)에 상응하여 서비스 품질 정보(P_QoS)를 저장할 수 있다. 도 7의 실시예에서는, 제1 프로세서(PID:1)에 대해서는 제1 값(Q1), 제2 프로세서(PID:2)에 대해서는 제2 값(Q2), 제3 프로세서(PID:3)에 대해서는 제3 값(Q3) 및 제4 프로세서(PID:4)에 대해서는 제4 값(Q4)이 설정되어 저장될 수 있다.
QoS 정보 저장부(231)는 특수 기능 레지스터(SFR; special function register)로 구현될 수 있으나, 이에 한정되는 것은 아니다.
QoS 정보 저장부(231)는 캐시 관리 포트(미도시)를 통해 억세스될 수 있다. 이에 따라, 사용자는 캐시 관리 포트를 통해 QoS 정보 저장부(231)에 프로세서별 서비스 품질 정보(P_QoS)를 저장하거나, 또는 저장된 서비스 품질 정보(P_QoS)를 변경할 수 있다.
실시예에 따라, 서비스 품질 정보(P_QoS)는 별도의 버스나 포트를 통해 설정되거나 변경될 수도 있지만, 다른 실시예에 따라, 서비스 품질 정보(P_QoS)는 운영체계(OS: operating system)과 같은 소프트웨어(S/W)를 통해 설정되거나 변경될 수도 있다.
캐시 컨트롤러(230)는 프로세서로부터 트랜잭션 수신시 프로세서의 식별자(PID)도 함께 수신한다.
캐시 컨트롤러(230)는 QoS 정보 저장부(231)로부터 상기 수신된 프로세서 식별자(PID)에 해당하는 서비스 품질 정보(P_QoS)를 추출할 수 있다.
사이즈 정보 저장부(232)는 서비스 품질 정보(P_QoS)에 따라 할당 가능한 캐시 크기에 관한 정보(즉, 사이즈 정보)를 저장한다.
도 8a는 도 6에 도시된 사이즈 정보 저장부(232)의 일 실시예를 나타낸다.
도 8a를 참조하면, 서비스 품질 정보(P_QoS)에 따라 할당 가능한 사이즈 정보는 할당 가능한 엔트리 개수로 표현될 수 있다. 따라서, 사이즈 정보 저장부(232)는 서비스 품질 정보(P_QoS)별 엔트리 개수를 저장할 수 있다.
예컨대, 제1 값(Q1)에 대해서는 제1 엔트리 갯수(N1), 제2 값(Q2)에 대해서는 제2 엔트리 갯수(N2), 제3 값(Q3)에 대해서는 제3 엔트리 갯수(N3) 및 제4 값(Q4)에 대해서는 제4 엔트리 갯수(N4)가 설정되어 저장될 수 있다.
제1 값(Q1), 제2 값(Q2), 제3 값(Q3), 제4 값(Q4) 순으로 QoS가 낮아진다고 가정하면, 제1 엔트리 갯수(N1)가 제2 엔트리 갯수(N2) 보다 크고, 제2 엔트리 갯수(N2)가 제3 엔트리 갯수(N3) 보다 크고, 제3 엔트리 갯수(N3)가 제4 엔트리 갯수(N4)보다 큰 값일 수 있다.
도 8b는 도 6에 도시된 사이즈 정보 저장부(232)의 다른 실시예를 나타낸다.
도 8b를 참조하면, 서비스 품질 정보(P_QoS)에 따라 할당 가능한 사이즈 정보는 할당 가능한 엔트리 그룹으로 표현될 수 있다
실시예에 따라, 캐시 엔트리들(데이터 엔트리들 및 태그 엔트리들)은 복수(2이상)의 엔트리 그룹들로 나뉘어질 수 있다.
도 8b의 실시예에서는, 캐시 엔트리들은 제1 내지 제4 엔트리 그룹(G1~G4)으로 나뉘어지고, 제1 값(Q1)에 대해서는 모든 엔트리 그룹(G1~G4)이 할당될 수 있고, 제2 값(Q2)에 대해서는 제1 내지 제3 엔트리 그룹(G1~G3)만이 할당될 수 있고, 제3 값(Q3)에 대해서는 제1 내지 제2 엔트리 그룹(G1~G2)만이 할당될 수 있으며, 제4 값(Q4)에 대해서는 제1 엔트리 그룹(G1)만이 할당될 수 있도록 설정될 수 있다.
캐시 엔트리들을 복수의 엔트리 그룹으로 나누는 기준은 다양할 수 있다.
일 실시예에서, 캐시 엔트리들은 웨이(way)에 따라 그룹화될 수 있다.
예컨대, 캐시 메모리(200)가 4개의 웨이를 포함하면, 제1 내지 제4 웨이 각각이 제1 내지 제4 엔트리 그룹(G1~G4) 각각으로 그룹화될 수 있다. 예를 들어, 도 4 및 도 5에 도시된 실시예에서는 캐시 메모리(200)가 2개의 웨이만 도시되지만, 제1 웨이(211-1 및 221-1)는 제1 엔트리 그룹(G1)으로, 제2 웨이(211-2 및 221-2)는 제2 엔트리 그룹(G2)으로 설정될 수 있다.
다른 실시예에서, 캐시 엔트리들은 인덱스(index)에 따라 그룹화될 수 있다.
예컨대, 캐시 엔트리들이 도 4 및 도 5에 도시된 바와 같이, 1024개의 인덱스를 포함하면, 각 엔트리 그룹(G1~G4)이 256개의 인덱스의 엔트리들을 포함하도록 제1 내지 제4 엔트리 그룹(G1~G4)으로 그룹화할 수 있다. 예를 들어, 인덱스 1 내지 256의 엔트리들은 제1 엔트리 그룹(G1)으로, 인덱스 257 내지 512의 엔트리들은 제2 엔트리 그룹(G2)으로 설정될 수 있다.
엔트리 매니저(233)는 서비스 품질 정보(P_QoS) 및 사이즈 정보에 따라 해당 트랜잭션에 할당할 수 있는 가용 엔트리 리스트(available entry list)를 캐시 엔트리 할당부(234)에 제공할 수 있다.
캐시 엔트리 할당부(234)는 엔트리 매니저(233)로부터 수신한 가용 엔트리 리스트에 따라 해당 트랜잭션에 신규 엔트리를 할당하거나, 기존 엔트리를 교체할 수 있다.
캐시 엔트리 할당부(234)는 프로세서의 요청에 따라 신규 엔트리를 할당해야 할 필요가 있을 경우, 해당 프로세서의 서비스 품질 정보(P_QoS)에 따라 제한된 엔트리(예컨대, 가용 엔트리 리스트) 내에서만 신규 엔트리를 할당한다.
또한, 캐시 엔트리 할당부(234)는 엔트리의 교체(replacement)가 필요한 경우 교체 정책(replacement policy)에 따라 교체할 엔트리를 선정하는데, 선정 대상이 되는 엔트리의 개수를 서비스 품질 정보(P_QoS)에 따라 다르게 할 수 있다.
따라서, 캐시 엔트리 할당부(234)는 서비스 품질 정보(P_QoS)에 따라 각 프로세서(혹은 트랜잭션)가 관리할 수 있는 저장 공간의 크기, 예컨대, 캐시 엔트리 크기(예컨대, 개수)를 다르게 할당할 수 있다.
이에 따라, 서비스 품질 정보(P_QoS)에 따라 각 프로세서(혹은 트랜잭션)가 관리할 수 있는 캐시 엔트리들 또는 엔트리 그룹이 제한될 수 있다.
실시예에 따라, 서비스 품질 정보(P_QoS)에 따라 각 프로세서(혹은 트랜잭션)가 관리할 수 있는 캐시 웨이(way)나 캐시 인텍스(index)가 제한될 수 있다.
상술한 바와 같이 본 발명의 실시 예에 따르면, 둘 이상의 프로세서가 공유하는 캐시 메모리에서 서비스 품질 정보(QoS)에 따라 할당되는 캐시 사이즈를 다르게 함으로써 중요도에 따라 성능을 가변할 수 있다. 즉, 높은 서비스 품질을 요구하는 프로세서는 상대적으로 더 많은 캐시 엔트리들을 할당 받을 수 있고, 그로 인해 캐시 히트율(cache hit-ratio)이 높아질 수 있다.
한편, 둘 이상의 프로세서에 이종의(heterogeneous) 코어들이 포함되는 경우, 고성능 코어(빅 코어)와 저성능 코어(litte core)가 요구하는 서비스 품질이 다를 수 있다. 또한, 하나의 프로세서에 대해서도 동적 전압 및 주파수 스케일링(DVFS: Dynamic Voltage and Frequency Scaling) 상황에 따라 실제 요구하는 성능, 즉 서비스 품질이 달라질 수 있다.
이와 같이 프로세서별 또는 상황별 요구되는 서비스 품질 정보가 달라지는 환경에서, 본 발명의 실시예에 따르면, 서비스 품질 정보에 따라 보여지는 캐시 사이즈를 다르게 함으로써, 트랜잭션의 중요도에 따라 성능을 다르게 할 수 있다.
도 9는 본 발명의 실시예에 따른 캐시 메모리 장치의 동작 방법을 나타내는 플로우차트이다. 도 9에 캐시 메모리 장치의 동작 방법은 도 1, 도 2 또는 도 6에 도시된 캐시 메모리(200, 200a, 200b)에 의해 수행될 수 있다.
도 1, 도 2, 도 6 및 도 9를 참조하면, 제1 내지 제m 프로세서(110-1, 110-2, 110-m) 중 어느 하나로부터 시스템 버스(150)를 통해 트랜잭션(trs)을 수신하면(S110), 캐시 컨트롤러(230)는 트랜잭션(trs)이 포함하는 트랜잭션 어드레스와 태그 메모리의 태그 어드레스를 이용하여 캐시 히트(cache hit)인지 여부를 판단할 수 있다(S120). 판단 결과 캐시 히트인 경우에는 해당 프로세서의 서비스 품질 정보(QoS)에 무관하게 해당 엔트리를 억세스할 수 있도록 허용한다(S130).
S120 단계에서의 판단 결과, 캐시 히트가 아닌 경우, 즉, 캐시 미스(cache miss)인 캐시 컨트롤러(230)는 QoS 정보 저장부(231)로부터 해당 프로세서의 서비스 품질 정보(QoS)를 인출할 수 있다(S140), 또한, 캐시 컨트롤러(230)는 사이즈 정보 저장부(232)로부터 해당 서비스 품질 정보(QoS)에 상응하는 사이즈 정보를 인출할 수 있다(S150).
캐시 미스인 경우, 캐시 컨트롤러(230)는 신규 엔트리를 할당할 수 있는지를 판단한다(S160). S160 단계에서의 판단 결과, 신규 엔트리 할당이 가능하면, 캐시 컨트롤러(230)는 해당 프로세서에 신규로 엔트리들을 할당하되, 사이즈 정보에 따라 제한적으로 엔트리들을 할당한다(S170).
예를 들어, 신규로 할당할 수 있는 엔트리들이 많더라도, 해당 프로세서의 사이즈 정보에 따라, 신규로 할당할 수 있는 엔트리 개수 또는 엔트리 그룹이 제한될 수 있다.
S160 단계에서의 판단 결과, 신규 엔트리 할당이 불가능하면, 캐시 컨트롤러(230)는 기존 엔트리들의 교체 여부를 판단한다(S180).
S180 단계에서의 판단 결과에 따라, 캐시 컨트롤러(230)는 기존 엔트리들 중 일부의 데이터를 삭제(또는 무효화)하고 해당 프로세서에 할당할 수 있다(S190).
S190 단계에서, 캐시 컨트롤러(230)는 교체할 엔트리를 선정하는데, 선정 대상이 되는 엔트리의 개수 또는 그룹을 사이즈 정보에 따라 제한할 수 있다.
도 10은 본 발명의 실시예에 따른 SoC를 포함하는 전자 시스템의 실시 예를 나타내는 블록도이다. 이를 참조하면, 전자 시스템(400)은 PC(personal computer) 또는 데이터 서버, 랩탑(laptop) 컴퓨터 또는 휴대용 장치로 구현될 수 있다. 휴대용 장치는 이동 전화기, 스마트 폰(smart phone), 태블릿 (tablet) PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라 (digital still camera), 디지털 비디오 카메라 (digital video camera), PMP(portable multimedia player), PDN(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 또는 e-북(e-book)으로 구현될 수 있다.
전자 시스템(400)은 SoC(405), 파워 소스(410), 저장 장치(420), 메모리(430), 입출력 포트들(440), 확장 카드(450), 네트워크 장치(460), 및 디스플레이(470)를 포함한다. 실시 예에 따라. 전자 시스템(200, 300, 400)은 카메라 모듈(480)을 더 포함할 수 있다.
SoC(405)는 구성 요소들(elements; 410~480) 중에서 적어도 하나의 동작을 제어할 수 있다.
파워 소스(410)는 구성 요소들(405 및 420~480) 중에서 적어도 하나로 동작 전압을 공급할 수 있다.
저장 장치(420)는 하드디스크 드라이브(hard disk drive) 또는 SSD(solid state drive)로 구현될 수 있다.
메모리(430)는 휘발성 메모리 또는 불휘발성 메모리로 구현될 수 있다. 실시 예에 따라, 메모리(430)에 대한 데이터 액세스 동작, 예컨대, 리드 동작, 라이트 동작(또는 프로그램 동작), 또는 이레이즈 동작을 제어할 수 있는 메모리 컨트롤러는 프로세서(100)에 집적 또는 내장될 수 있다. 다른 실시 예에 따라, 상기 메모리 컨트롤러는 프로세서(100)와 메모리(430) 사이에 구현될 수 있다.
입출력 포트들(440)은 전자 시스템(200, 300, 400)으로 데이터를 전송하거나 또는 전자 시스템(200, 300, 400)으로부터 출력된 데이터를 외부 장치로 전송할 수 있는 포트들을 의미한다. 예컨대, 입출력 포트들(440)은 컴퓨터 마우스와 같은 포인팅 장치(pointing device)를 접속하기 위한 포트, 프린터를 접속하기 위한 포트, 또는 USB 드라이브를 접속하기 위한 포트일 수 있다.
확장 카드(450)는 SD(secure digital) 카드 또는 MMC(multimedia card)로 구현될 수 있다. 실시 예에 따라, 확장 카드(450)는 SIM(Subscriber Identification Module) 카드 또는 USIM(Universal Subscriber Identity Module) 카드일 수 있다.
네트워크 장치(460)는 전자 시스템(200, 300, 400)을 유선 네트워크 또는 무선 네트워크에 접속시킬 수 있는 장치를 의미한다.
디스플레이(470)는 저장 장치(420), 메모리(430), 입출력 포트들(440), 확장 카드(450), 또는 네트워크 장치(460)로부터 출력된 데이터를 디스플레이할 수 있다.
카메라 모듈(480)은 광학 이미지를 전기적인 이미지로 변환할 수 있는 모듈을 의미한다. 따라서, 카메라 모듈(480)로부터 출력된 전기적인 이미지는 저장 장치(420), 메모리(430), 또는 확장 카드(450)에 저장될 수 있다. 또한, 카메라 모듈 (480)로부터 출력된 전기적인 이미지는 디스플레이(420)를 통하여 디스플레이될 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10, 400; 전자 시스템
110-1, 110-2, 110-m; 프로세서
140; 메인 메모리
150; 시스템 버스
151, 152, 153; 버스
200; 캐시 메모리
210; 데이터 메모리
211-1, 211-2; 서브 데이터 메모리
220; 태그 메모리
221-1, 221-2; 서브 태그 메모리
230; 캐시 컨트롤러
231; QoS 정보 저장부
232; 사이즈 정보 저장부
233; 엔트리 메니저
234; 엔트리 할당부
241, 243, 245; 버스 인터페이스 유닛
280; 유효성 비트
290; 태그 어드레스
300; 트랜잭션 어드레스
310; 태그 어드레스
320; 인덱스
330; 라인 오프셋

Claims (10)

  1. 제1 프로세서;
    제2 프로세서;
    메인 메모리에 저장된 데이터의 일부를 저장하며, 상기 제1 및 제2 프로세서가 억세스할 수 있는 캐시 메모리; 및
    상기 제1 및 제2 프로세서의 서비스 품질 정보(QoS)에 따라, 상기 캐시 메모리 내의 해당 프로세서가 관리할 수 있는 저장 공간의 크기를 다르게 할당하는 캐시 컨트롤러를 포함하는 전자 시스템.
  2. 제1항에 있어서,
    상기 캐시 컨트롤러는 상기 제1 및 제2 프로세서 각각의 서비스 품질 정보를 저장하는 QoS 정보 저장부를 포함하며,
    상기 캐시 메모리는 복수의 엔트리들을 포함하는 전자 시스템.
  3. 제2항에 있어서, 상기 캐시 컨트롤러는
    상기 서비스 품질 정보에 따른 캐시 사이즈 정보를 저장하는 사이즈 정보 저장부를 더 포함하는 전자 시스템.
  4. 제3항에 있어서, 상기 캐시 컨트롤러는
    상기 캐시 사이즈 정보에 따라 상기 복수의 엔트리들 중 해당 프로세서가 관리할 수 있는 엔트리들을 제한하는 전자 시스템.
  5. 제3항에 있어서, 상기 캐시 메모리는
    n(2이상의 정수)개의 웨이(way)를 포함하는 n-방향 세트-연관 캐시이며,
    상기 캐시 컨트롤러는
    상기 캐시 사이즈 정보에 따라 상기 n개의 웨이 중 관리할 수 있는 웨이를 제한하는 전자 시스템.
  6. 제3항에 있어서,
    상기 복수의 엔트리들은 둘 이상의 엔트리 그룹들로 나뉘어지고,
    상기 캐시 컨트롤러는 상기 캐시 사이즈 정보에 따라 상기 둘 이상의 엔트리 그룹 중 억세스할 수 있는 엔트리 그룹을 제한하는 전자 시스템.
  7. 제3항에 있어서, 상기 캐시 컨트롤러는
    상기 제1 프로세서 또는 상기 제2 프로세서로부터 트랜잭션 수신시 프로세서 식별자를 수신하고, 상기 QoS 정보 저장부로부터 상기 프로세서 식별자에 따른 서비스 품질 정보를 추출하고,
    상기 사이즈 정보 저장부로부터 상기 추출된 서비스 품질 정보에 해당하는 캐시 사이즈 정보를 추출하는 전자 시스템.
  8. 제7항에 있어서, 상기 캐시 컨트롤러는
    상기 추출된 캐시 사이즈 정보에 따라 가용 엔트리 리스트를 제공하는 엔트리 매니저; 및
    상기 가용 엔트리 리스트에 따라, 신규 엔트리를 할당하거나 기존 엔트리를 교체하여 할당하는 엔트리 할당부를 더 포함하는 전자 시스템.
  9. 제1항에 있어서, 상기 캐시 컨트롤러는
    상기 제1 및 제2 프로세서 각각이 상기 캐시 메모리에 기 저장되어 있는 데이터를 억세스하는 경우에는 상기 제1 및 제2 프로세서의 각 서비스 품질 정보에 따른 제한을 하지 않으며,
    상기 제1 및 제2 프로세서 각각에 대해 상기 캐시 메모리의 저장 공간을 신규로 할당하거나 또는 교체하여 할당하는 경우에는 상기 제1 및 제2 프로세서의 각 서비스 품질 정보에 따라 제한하는 전자 시스템.
  10. 복수(2이상)의 프로세서에 의해 공유되는 캐시 메모리 장치에 있어서,
    메인 메모리에 저장된 데이터의 일부를 저장하며, 상기 복수(2이상)의 프로세서에 의해 억세스되는 캐시 메모리; 및
    상기 복수의 프로세서의 각 서비스 품질 정보(QoS)를 저장하고, 해당 프로세서의 서비스 품질 정보에 따라, 상기 캐시 메모리 내의 해당 프로세서가 관리할 수 있는 저장 공간의 크기를 다르게 할당하는 캐시 컨트롤러를 포함하는 캐시 메모리 장치.

KR1020140168680A 2014-11-28 2014-11-28 캐시 메모리 장치 및 이를 포함하는 전자 시스템 KR102354848B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020140168680A KR102354848B1 (ko) 2014-11-28 2014-11-28 캐시 메모리 장치 및 이를 포함하는 전자 시스템
US14/933,144 US9892046B2 (en) 2014-11-28 2015-11-05 Cache allocation based on quality-of-service information
US15/882,722 US10503647B2 (en) 2014-11-28 2018-01-29 Cache allocation based on quality-of-service information

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140168680A KR102354848B1 (ko) 2014-11-28 2014-11-28 캐시 메모리 장치 및 이를 포함하는 전자 시스템

Publications (2)

Publication Number Publication Date
KR20160064720A true KR20160064720A (ko) 2016-06-08
KR102354848B1 KR102354848B1 (ko) 2022-01-21

Family

ID=56079296

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140168680A KR102354848B1 (ko) 2014-11-28 2014-11-28 캐시 메모리 장치 및 이를 포함하는 전자 시스템

Country Status (2)

Country Link
US (2) US9892046B2 (ko)
KR (1) KR102354848B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110781093A (zh) * 2018-07-31 2020-02-11 爱思开海力士有限公司 能够改变映射高速缓存缓冲器大小的数据存储设备

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102354848B1 (ko) * 2014-11-28 2022-01-21 삼성전자주식회사 캐시 메모리 장치 및 이를 포함하는 전자 시스템
JP6517549B2 (ja) * 2015-03-13 2019-05-22 東芝メモリ株式会社 メモリコントローラ、記憶装置、データ転送システム、データ転送方法、及びデータ転送プログラム
CN109508302B (zh) * 2017-09-14 2023-04-18 华为技术有限公司 一种内容填充方法和存储器
US11520700B2 (en) * 2018-06-29 2022-12-06 Intel Corporation Techniques to support a holistic view of cache class of service for a processor cache
US11196678B2 (en) * 2018-10-25 2021-12-07 Tesla, Inc. QOS manager for system on a chip communications
JP7367365B2 (ja) * 2019-07-23 2023-10-24 富士通株式会社 タスク実行管理装置、タスク実行管理方法、および、タスク実行管理プログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060049710A (ko) * 2004-06-30 2006-05-19 인텔 코오퍼레이션 칩 멀티-프로세서의 공유 캐시를 분할하기 위한 장치 및방법
KR20110127733A (ko) * 2009-03-03 2011-11-25 콸콤 인코포레이티드 구성가능한 캐시 및 그 구성 방법
US20130138891A1 (en) * 2011-11-30 2013-05-30 International Business Machines Corporation Allocation enforcement in a multi-tenant cache mechanism
KR20130131135A (ko) * 2012-05-23 2013-12-03 삼성전자주식회사 QoS 기반 캐시 컨트롤러 및 그 동작 방법

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6493800B1 (en) 1999-03-31 2002-12-10 International Business Machines Corporation Method and system for dynamically partitioning a shared cache
US6678793B1 (en) 2000-09-27 2004-01-13 International Business Machines Corporation User-based selective cache content replacement technique
JP3620473B2 (ja) 2001-06-14 2005-02-16 日本電気株式会社 共有キャッシュメモリのリプレイスメント制御方法及びその装置
US7107403B2 (en) 2003-09-30 2006-09-12 International Business Machines Corporation System and method for dynamically allocating cache space among different workload classes that can have different quality of service (QoS) requirements where the system and method may maintain a history of recently evicted pages for each class and may determine a future cache size for the class based on the history and the QoS requirements
US8035650B2 (en) 2006-07-25 2011-10-11 Qualcomm Incorporated Tiled cache for multiple software programs
US7899994B2 (en) 2006-08-14 2011-03-01 Intel Corporation Providing quality of service (QoS) for cache architectures using priority information
JP2009211649A (ja) 2008-03-06 2009-09-17 Nec Corp キャッシュシステム、その制御方法、及び、プログラム
US8244982B2 (en) * 2009-08-21 2012-08-14 Empire Technology Development Llc Allocating processor cores with cache memory associativity
JP2011059777A (ja) 2009-09-07 2011-03-24 Toshiba Corp タスクスケジューリング方法及びマルチコアシステム
JP2011150684A (ja) 2009-12-21 2011-08-04 Sony Corp キャッシュメモリおよびキャッシュメモリ制御装置
KR101659365B1 (ko) 2010-09-03 2016-09-23 삼성전자 주식회사 복수 프로세서 시스템의 트래픽 제어 방법 및 장치
US9268611B2 (en) 2010-09-25 2016-02-23 Intel Corporation Application scheduling in heterogeneous multiprocessor computing platform based on a ratio of predicted performance of processor cores
KR101283055B1 (ko) 2010-11-22 2013-07-05 엘지이노텍 주식회사 백라이트 유닛 및 이를 구비하는 표시장치
US8490107B2 (en) 2011-08-08 2013-07-16 Arm Limited Processing resource allocation within an integrated circuit supporting transaction requests of different priority levels
KR101356541B1 (ko) 2012-01-09 2014-01-29 한국과학기술원 멀티 코어 프로세서, 이를 포함하는 멀티 코어 시스템, 전자 장치 및 멀티 코어 프로세서의 캐시 공유 방법
US9135156B2 (en) * 2012-10-29 2015-09-15 Broadcom Corporation Dynamically configurable memory
US20160034023A1 (en) * 2014-07-31 2016-02-04 Advanced Micro Devices, Inc. Dynamic cache prefetching based on power gating and prefetching policies
KR102354848B1 (ko) * 2014-11-28 2022-01-21 삼성전자주식회사 캐시 메모리 장치 및 이를 포함하는 전자 시스템

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060049710A (ko) * 2004-06-30 2006-05-19 인텔 코오퍼레이션 칩 멀티-프로세서의 공유 캐시를 분할하기 위한 장치 및방법
KR20110127733A (ko) * 2009-03-03 2011-11-25 콸콤 인코포레이티드 구성가능한 캐시 및 그 구성 방법
US20130138891A1 (en) * 2011-11-30 2013-05-30 International Business Machines Corporation Allocation enforcement in a multi-tenant cache mechanism
KR20130131135A (ko) * 2012-05-23 2013-12-03 삼성전자주식회사 QoS 기반 캐시 컨트롤러 및 그 동작 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110781093A (zh) * 2018-07-31 2020-02-11 爱思开海力士有限公司 能够改变映射高速缓存缓冲器大小的数据存储设备
US10684953B2 (en) 2018-07-31 2020-06-16 SK Hynix Inc. Data storage apparatus capable of varying map cache buffer size

Also Published As

Publication number Publication date
US20160154734A1 (en) 2016-06-02
US10503647B2 (en) 2019-12-10
US9892046B2 (en) 2018-02-13
US20180150393A1 (en) 2018-05-31
KR102354848B1 (ko) 2022-01-21

Similar Documents

Publication Publication Date Title
US10503647B2 (en) Cache allocation based on quality-of-service information
CN102483719B (zh) 基于块的非透明高速缓存
JP5752989B2 (ja) プロセッサ・メインメモリのための持続性メモリ
JP6496626B2 (ja) 異種統合メモリ部及びその拡張統合メモリスペース管理方法
CN106537360B (zh) 用于具有动态分区的共享高速缓存的方法和装置
US11341059B2 (en) Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations
JP5348429B2 (ja) 持続性メモリのためのキャッシュコヒーレンスプロトコル
KR20170138765A (ko) 메모리 장치, 메모리 모듈 및 메모리 장치의 동작 방법
US9195579B2 (en) Page replacement method and memory system using the same
KR102575913B1 (ko) 비대칭 세트 결합된 캐시
KR102258126B1 (ko) 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
US9697111B2 (en) Method of managing dynamic memory reallocation and device performing the method
US20190171392A1 (en) Method of operating storage device capable of reducing write latency
CN103999038A (zh) 用于在易失性存储器与非易失性存储器之间分布代码和数据存储的方法和设备
US20170062025A1 (en) Memory system including plural memory devices forming plural ranks and memory controller accessing plural memory ranks and method of operating the memory system
KR20170013270A (ko) 플래시 메모리 기반 저장 디바이스의 입력/출력 가상화 (iov) 호스트 제어기 (hc) (iov-hc)
US8612691B2 (en) Assigning memory to on-chip coherence domains
KR101823983B1 (ko) 메모리 디바이스들 및 방법들
CN113138851B (zh) 一种数据管理方法、相关装置及系统
US11216383B2 (en) Storage device providing a virtual memory region, electronic system including the same, and method of operating the same
US10725675B2 (en) Management apparatus, information processing apparatus, management method, and computer program product
US11526448B2 (en) Direct mapped caching scheme for a memory side cache that exhibits associativity in response to blocking from pinning
WO2020122779A1 (en) Methods and nodes for handling memory
CN112703481A (zh) 混合式存储器系统接口

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant