KR20230068743A - 이종 메모리를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법 - Google Patents
이종 메모리를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법 Download PDFInfo
- Publication number
- KR20230068743A KR20230068743A KR1020210154848A KR20210154848A KR20230068743A KR 20230068743 A KR20230068743 A KR 20230068743A KR 1020210154848 A KR1020210154848 A KR 1020210154848A KR 20210154848 A KR20210154848 A KR 20210154848A KR 20230068743 A KR20230068743 A KR 20230068743A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- value
- storage area
- tag value
- tag
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 123
- 238000000034 method Methods 0.000 title claims description 32
- 238000013523 data management Methods 0.000 title claims description 23
- 238000007726 management method Methods 0.000 claims description 74
- 230000009977 dual effect Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 18
- 238000005516 engineering process Methods 0.000 description 9
- 238000000605 extraction Methods 0.000 description 5
- 230000000717 retained effect Effects 0.000 description 4
- PCTMTFRHKVHKIS-BMFZQQSSSA-N (1s,3r,4e,6e,8e,10e,12e,14e,16e,18s,19r,20r,21s,25r,27r,30r,31r,33s,35r,37s,38r)-3-[(2r,3s,4s,5s,6r)-4-amino-3,5-dihydroxy-6-methyloxan-2-yl]oxy-19,25,27,30,31,33,35,37-octahydroxy-18,20,21-trimethyl-23-oxo-22,39-dioxabicyclo[33.3.1]nonatriaconta-4,6,8,10 Chemical compound C1C=C2C[C@@H](OS(O)(=O)=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H]([C@H](C)CCCC(C)C)[C@@]1(C)CC2.O[C@H]1[C@@H](N)[C@H](O)[C@@H](C)O[C@H]1O[C@H]1/C=C/C=C/C=C/C=C/C=C/C=C/C=C/[C@H](C)[C@@H](O)[C@@H](C)[C@H](C)OC(=O)C[C@H](O)C[C@H](O)CC[C@@H](O)[C@H](O)C[C@H](O)C[C@](O)(C[C@H](O)[C@H]2C(O)=O)O[C@H]2C1 PCTMTFRHKVHKIS-BMFZQQSSSA-N 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1694—Configuration of memory controller to different memory types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
일 실시예에 의한 컴퓨터 시스템은 태그값 저장 영역 및 데이터값 저장 영역을 포함하는 제 1 메모리 장치, 적어도 하나의 태그값 및 적어도 하나의 태그값 각각과 연관된 데이터값 을 저장하는 적어도 하나의 캐시라인이 할당되는 제 2 메모리 장치 및, 호스트 장치가 리드 요청과 함께 전송한 리드 어드레스로부터 생성된 제 1 태그값을 태그값 저장 영역으로부터 조회하고, 조회 결과에 따라 데이터값 저장 영역 또는 제 2 메모리 장치로부터 제 1 태그값과 연관된 제 1 데이터값을 리드하여 호스트 장치로 전송하는 메모리 관리 시스템을 포함하도록 구성할 수 있다.
Description
본 기술은 컴퓨터 시스템에 관한 것으로, 보다 구체적으로는 이종 메모리를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법에 관한 것이다.
컴퓨터 시스템은 다양한 형태의 메모리 장치를 포함할 수 있다. 메모리 장치는 데이터를 저장하기 위한 메모리와 메모리의 동작을 제어하는 메모리 컨트롤러를 포함한다. 메모리는 DRAM(dynamic random access memory), SRAM(static random access memory) 등과 같은 휘발성(volatile) 메모리와, EEPROM(Electrically Erasable Programmable ROM), FRAM(Ferroelectric RAM), PCRAM(Phase change Random Access Memory), MRAM(Magnetic RAM), Flash Memory 등과 같은 비휘발성(non-volatile) 메모리로 분류된다. 휘발성 메모리에 저장된 데이터는 전원 공급이 중단되면 소멸되는 반면, 비휘발성 메모리에 저장된 데이터는 전원 공급이 중단되더라도 소멸되지 않는다. 최근에는 이러한 이종의 메모리들이 탑재된 메인 메모리 장치가 개발되고 있다.
휘발성 메모리는 동작(예컨대, 쓰기 및 읽기 등) 속도가 빠르나 에너지 소모량이 크고, 비휘발성 메모리는 에너지 효율이 우수하나 수명이 제한적인 특성이 있다. 이에 따라, 메모리 시스템의 성능 향상을 위해 메모리 공간을 효율적으로 사용하면서도 액세싱이 빈번한 데이터를 고속으로 접근할 필요가 있다.
본 기술의 실시예는 재참조될 가능성이 높은 데이터를 선별적으로 캐싱할 수 있는 이종 메모리를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법을 제공할 수 있다.
본 기술의 실시예는 데이터 캐싱 공간을 효율적으로 이용할 수 있는 이종 메모리를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법을 제공할 수 있다.
본 기술의 일 실시예에 의한 이종 메모리를 포함하는 컴퓨터 시스템은 태그값 저장 영역 및 데이터값 저장 영역을 포함하는 제 1 메모리 장치; 적어도 하나의 태그값 및 상기 적어도 하나의 태그값 각각과 연관된 데이터값 을 저장하는 적어도 하나의 캐시라인이 할당되는 제 2 메모리 장치; 및 호스트 장치가 리드 요청과 함께 전송한 리드 어드레스로부터 생성된 제 1 태그값을 상기 태그값 저장 영역으로부터 조회하고, 상기 조회 결과에 따라 상기 데이터값 저장 영역 또는 상기 제 2 메모리 장치로부터 상기 제 1 태그값과 연관된 제 1 데이터값을 리드하여 상기 호스트 장치로 전송하는 메모리 관리 시스템;을 포함하도록 구성될 수 있다.
본 기술의 일 실시예에 의한 이종 메모리를 포함하는 컴퓨터 시스템은 태그값 저장 영역 및 데이터값 저장 영역을 포함하는 제 1 메모리 장치; 적어도 하나의 태그값 및 상기 적어도 하나의 태그값 각각과 연관된 데이터값을 포함하는 데이터를 저장하는 제 2 메모리 장치; 및 호스트 장치가 요청한 제 1 데이터의 제 1 태그값이 상기 태그값 저장 영역에 존재하지 않는 경우, 상기 제 2 메모리 장치로부터 리드한 제 1 데이터의 상기 제 1 태그값을 상기 태그값 저장 영역에 저장하는 메모리 관리 시스템;을 포함하도록 구성될 수 있다.
본 기술의 일 실시예에 의한 이종 메모리를 포함하는 컴퓨터 시스템의 데이터 관리 방법은 제 1 메모리 장치 및 제 2 메모리 장치와 각각 독립적인 인터페이스를 통해 접속되는 메모리 관리 시스템의 데이터 관리 방법으로서, 상기 메모리 관리 시스템이, 호스트 장치가 리드 요청과 함께 전송한 리드 어드레스로부터 제 1 태그값을 생성하는 단계; 상기 메모리 관리 시스템이, 상기 제 1 태그값을 제 1 메모리 장치의 태그값 저장 영역으로부터 조회하는 단계; 상기 메모리 관리 시스템이, 상기 조회 결과에 따라 상기 제 1 메모리 장치의 데이터값 저장 영역 또는 상기 제 2 메모리 장치로부터 상기 제 1 태그값과 연관된 제 1 데이터값을 리드하여 상기 호스트 장치로 전송하는 단계;를 포함할 수 있다.
본 기술에 의하면 재참조될 가능성이 낮을 데이터를 캐싱하는 작업을 줄여 컴퓨터 시스템의 성능을 향상시킬 수 있고, 캐싱 공간을 효율적으로 사용할 수 있다.
또한, 재참조될 가능성이 높은 데이터를 선별적으로 캐싱하여 캐시 히트율을 높임으로써 컴퓨터 시스템의 동작 속도를 향상시킬 수 있다.
도 1은 일 실시예에 의한 컴퓨터 시스템의 구성도이다.
도 3은 일 실시예에 의한 제 2 메모리 장치에 저장되는 데이터 포맷을 설명하기 위한 도면이다.
도 2는 일 실시예에 의한 제 1 메모리 장치에 저장되는 데이터 포맷을 설명하기 위한 도면이다.
도 4는 일 실시예에 의한 캐시 컨트롤러의 구성도이다.
도 5는 일 실시예에 의한 컴퓨터 시스템의 데이터 관리 방법을 설명하기 위한 흐름도이다.
도 6은 일 실시예에 의한 컴퓨터 시스템의 데이터 관리 방법을 설명하기 위한 개념도이다.
도 7은 일 실시예에 의한 컴퓨터 시스템의 데이터 관리 방법을 설명하기 위한 개념도이다.
도 8은 일 실시예에 의한 컴퓨터 시스템의 데이터 관리 방법을 설명하기 위한 개념도이다.
도 9는 일 실시예에 의한 컴퓨터 시스템의 구성도이다.
도 10은 일 실시예에 의한 제 1 메모리 장치에 저장되는 데이터 포맷을 설명하기 위한 도면이다.
도 11은 일 실시예에 의한 컴퓨터 시스템의 데이터 관리 방법을 설명하기 위한 흐름도이다.
도 3은 일 실시예에 의한 제 2 메모리 장치에 저장되는 데이터 포맷을 설명하기 위한 도면이다.
도 2는 일 실시예에 의한 제 1 메모리 장치에 저장되는 데이터 포맷을 설명하기 위한 도면이다.
도 4는 일 실시예에 의한 캐시 컨트롤러의 구성도이다.
도 5는 일 실시예에 의한 컴퓨터 시스템의 데이터 관리 방법을 설명하기 위한 흐름도이다.
도 6은 일 실시예에 의한 컴퓨터 시스템의 데이터 관리 방법을 설명하기 위한 개념도이다.
도 7은 일 실시예에 의한 컴퓨터 시스템의 데이터 관리 방법을 설명하기 위한 개념도이다.
도 8은 일 실시예에 의한 컴퓨터 시스템의 데이터 관리 방법을 설명하기 위한 개념도이다.
도 9는 일 실시예에 의한 컴퓨터 시스템의 구성도이다.
도 10은 일 실시예에 의한 제 1 메모리 장치에 저장되는 데이터 포맷을 설명하기 위한 도면이다.
도 11은 일 실시예에 의한 컴퓨터 시스템의 데이터 관리 방법을 설명하기 위한 흐름도이다.
이하, 첨부된 도면을 참조하여 본 기술의 실시예를 보다 구체적으로 설명한다.
도 1은 일 실시예에 의한 컴퓨터 시스템의 구성도이다.
도 1을 참조하면, 일 실시예에 의한 컴퓨터 시스템(10)은 시스템 버스를 통해 전기적으로 연결되는 중앙 처리 장치(central processing unit, 이하, 'CPU'라 함)(100), 메모리 관리 시스템(200), 티어드(Tiered) 메모리 장치(300), 스토리지(400) 및 외부장치 인터페이스(500)를 포함할 수 있다. CPU(100)의 내부 또는 외부에 캐시 메모리(150)가 구비될 수 있다.
CPU(100)는 상업적으로 이용할 수 있는 다양한 프로세서일 수 있으며, 듀얼 마이크로프로세서, 멀티-코어 프로세서, 그리고 기타 멀티-프로세서 아키텍처가 CPU(100)로 채택될 수 있다.
CPU(100)는 티어드 메모리 장치(300)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 예컨대, CPU(100)는 클럭 신호 발생기(미도시)로부터 출력된 클럭 신호에 응답하여 상기 프로그램들 및/또는 상기 데이터를 처리 또는 실행할 수 있다. 또한, CPU(100)는 메모리 관리 시스템(200)을 통해 캐시 메모리(150) 및 티어드 메모리 장치(300)를 액세스할 수 있다. CPU(100)는 티어드 메모리 장치(300)의 호스트 장치일 수 있다.
캐시 메모리(150)는 속도가 빠른 장치와 느린 장치 사이에서 속도 차이에 따른 병목 현상을 줄이기 위한 범용 메모리를 지칭한다. 즉, 캐시 메모리(150)는 고속 동작하는 CPU(100)와 상대적으로 저속 동작하는 티어드 메모리 장치(300) 사이의 데이터 병목 현상을 완화하는 역할을 한다. 캐시 메모리(150)는 티어드 메모리 장치(300)에 저장된 데이터 중 CPU(100)가 자주 액세스하는 데이터를 캐싱할 수 있다.
도시하지 않았지만, 캐시 메모리(150)는 동작 속도 및 CPU(100)와의 물리적인 거리에 따라 복수 레벨로 구성될 수 있다. 일반적으로, 제 1 레벨(L1) 캐시는 CPU(100) 내에 내장되어 데이터 참조 및 사용에 가장 먼저 접근될 수 있다. L1 캐시는 캐시들 중 가장 속도가 빠른 반면, 저장 용량은 작을 수 있다. L1 캐시에 데이터가 존재하지 않으면(예컨대, 캐시 미스), CPU(100)는 제 2 레벨(L2) 캐시를 액세스할 수 있다. L2 캐시는 L1 캐시보다 상대적으로 속도는 느린 반면, 저장 용량은 클 수 있다. L2 캐시에도 데이터가 존재하지 않으면, CPU(100)는 L2 캐시보다 하위 레벨 캐시, 예컨대 제 3 레벨(L3) 캐시에 액세스하거나 L3 캐시가 구비되지 않은 경우에는 티어드 메모리 장치(300)를 액세스할 수 있다.
티어드 메모리 장치(300)는 제 1 메모리 장치(310) 및 제 2 메모리 장치(320)를 포함할 수 있다. 제 1 메모리 장치(310) 및 제 2 메모리 장치(320)는 구조가 다르고 액세스 레이턴시가 다른 이종 메모리이며, 예를 들어 제 1 메모리 장치(310)는 휘발성 메모리(Volatile Memory, VM)를 포함할 수 있고 제 2 메모리 장치(320)는 휘발성 메모리 장치 또는 비휘발성 메모리(Non-Volatile Memory, NVM)를 포함할 수 있다. 예시적으로, 휘발성 메모리는 DRAM(dynamic random access memory), 매니지드 D램 솔루션(MDS; Managed Dram Solution)이고, 비휘발성 메모리는 PCRAM(phase change RAM) 또는 플래시 메모리일 수 있으나, 특별히 이에 한정되는 것은 아니다.
제 1 메모리 장치(310)는 메모리 관리 시스템(200)과 제 1 인터페이스(301)를 통해 인터페이싱될 수 있다. 제 1 인터페이스(301)는 DIMM(Dual In-line Memory Module) 인터페이스일 수 있다. 제 2 메모리 장치(320)는 메모리 관리 시스템(200)과 제 2 인터페이스(302)를 통해 인터페이싱될 수 있다. 제 2 인터페이스(302)는 CXL(Compute eXpress Link)일 수 있다.
제 1 메모리 장치(310)는 CPU(100)의 라스트 레벨 캐시(LLC) 일 수 있다. 다른 관점에서, 제 1 메모리 장치(310)는 제 2 메모리 장치(320)의 라이트 버퍼일 수 있다. 제 2 메모리 장치(320)는 CPU(100)의 메인 메모리일 수 있다.
메모리 관리 시스템(200)은 CPU(100)의 제어에 따라 CPU(100)에서 사용되거나 처리되는 프로그램들 및/또는 데이터들을 캐시 메모리(150) 및/또는 티어드 메모리 장치(300)에 저장할 수 있다. 또한, 메모리 관리 시스템(200)은 CPU(100)의 제어에 따라 캐시 메모리(150) 및/또는 티어드 메모리 장치(300)에 저장된 데이터를 읽을 수 있다.
메모리 관리 시스템(200)은 캐시 컨트롤러(210), 제 1 메모리 컨트롤러(220) 및 제 2 메모리 컨트롤러(230)를 포함할 수 있다.
캐시 컨트롤러(210)는 캐시 메모리(150)의 전반적인 동작을 제어한다. 즉, 티어드 메모리 장치(300)에 로드되어 있는 데이터 중에서 어떠한 데이터를 캐시 메모리(150)에 저장할 것인지, 캐시 메모리(150)가 가득 차서 데이터 교체가 필요한 경우 어떠한 데이터를 교체할 것인지, CPU(100)로부터 요청되는 데이터가 캐시 메모리(150)에 존재하는지를 판단하기 위한 내부 알고리즘 및 이를 처리 하기 위한 하드웨어를 포함한다. 이를 위하여, 캐시 컨트롤러(210)는 캐싱된 데이터와 티어드 메모리 장치(300)에 저장된 데이터와의 연관 관계를 나타내는 매핑 테이블(mapping table) 등을 사용할 수 있다.
제 1 메모리 컨트롤러(220)는 캐시 컨트롤러(210)의 요청에 응답하여 제 1 메모리 장치(310)의 동작을 제어할 수 있다. 제 1 메모리 장치(310)는 제 1 메모리 컨트롤러(220)로부터 제공된 명령에 따라 메모리 셀 어레이(도시하지 않음)에 데이터를 쓰거나 또는, 메모리 셀 어레이로부터 데이터를 읽는 동작을 수행할 수 있다.
제 2 메모리 컨트롤러(230)는 캐시 컨트롤러(210)의 요청에 응답하여 제 2 메모리 장치(320)의 동작을 제어할 수 있다. 제 2 메모리 장치(320)는 제 2 메모리 컨트롤러(230)로부터 제공된 명령에 따라 메모리 셀 어레이(도시하지 않음)에 데이터를 쓰거나 또는, 메모리 셀 어레이로부터 데이터를 읽는 동작을 수행할 수 있다.
컴퓨터 시스템(10)은 티어드 메모리 장치(300)에 데이터를 단기적으로 그리고 임시로 저장할 수 있다. 또한, 티어드 메모리 장치(300)는 파일 시스템 형식의 데이터를 저장하거나, 판독 전용 공간을 별도로 두어 운영 체제 프로그램을 저장할 수도 있다. 한편, CPU(100)가 응용 프로그램을 실행할 때, 응용 프로그램의 적어도 일부는 스토리지(400)로부터 독출되어 티어드 메모리 장치(300)에 로드될 수 있다.
스토리지(400)는 하드 디스크 드라이브(이하, HDD) 및 SSD(solid state drive) 중 적어도 하나를 포함할 수 있다. 스토리지(400)는 컴퓨터 시스템(10)이 사용자 데이터를 장기적으로 저장하는 저장 매체로 작용할 수 있다. 스토리지(400)에는 운영 시스템(Operation System, OS), 응용 프로그램(application program), 프로그램 데이터(program data) 등이 저장될 수 있다.
외부장치 인터페이스(500)는 입력장치 인터페이스, 출력장치 인터페이스, 네트워크장치 인터페이스, 메모리 인터페이스 등을 포함할 수 있다. 입력장치는 키보드(keyboard), 마우스(Mouse), 마이크(Mike) 또는 스캐너(Scanner) 등일 수 있다. 사용자는 입력 장치를 통해 명령, 데이터 및 정보를 컴퓨터 시스템(10)에 입력할 수 있다.
출력장치는 모니터(Monitor), 프린터(Printer) 또는 스피커(Speaker) 등일 수 있다. 사용자 명령에 대한 컴퓨터 시스템(10)의 실행 과정 및 처리 결과는 출력 장치를 통해 표출될 수 있다.
네트워크장치는 다양한 통신 프로토콜을 지원하도록 구성된 하드웨어 및 소프트웨어를 포함할 수 있다. 컴퓨터 시스템(10)은 네트워크 장치 인터페이스를 통해 원격에 위치한 다은 컴퓨터 시스템과 통신할 수 있다.
본 기술의 일 실시예에 의한 메모리 관리 시스템(200)은 CPU(100)가 재참조한 데이터, 또는 CPU(100)에 의해 참조될 것으로 예측된 데이터를 제 2 메모리 장치(320)로부터 제 1 메모리 장치(310)에 복사하도록 구성될 수 있다.
도 2는 일 실시예에 의한 제 2 메모리 장치에 저장되는 데이터 포맷을 설명하기 위한 도면이다.
CPU(100)가 어드레스를 포함하는 리드 요청을 전송함에 따라, 메모리 관리 시스템(200)은 리드 요청된 어드레스로부터 태그값(TAG) 및 태그값 인덱스(INDEX)를 생성할 수 있다. 태그값(TAG)은 티어드 메모리 장치(300)에 저장되는 자료들을 구분하기 위한 식별자일 수 있다. 태그값 인덱스(INDEX)는 태그값(TAG)이 저장될 제 1 메모리 장치(310) 내의 위치를 나타낸다.
도 2를 참조하면, 제 2 메모리 장치(320)에는 복수의 캐시 라인(Cache Line 1~ Cache Linel)이 할당되고, 각 캐시라인(Cache Line 1~ Cache Linel)에는 태그값(TAG) 및 데이터값(FATA)을 포함하는 데이터가 저장된다.
도 3은 일 실시예에 의한 제 1 메모리 장치에 저장되는 데이터 포맷을 설명하기 위한 도면이다.
도 3을 참조하면, 제 1 메모리 장치(310)는 태그값 저장 영역(311) 및 데이터값 저장 영역(313)을 포함할 수 있다. 태그값 저장 영역(311)은 복수의 태그값 엔트리(TETR1~TETRm)를 포함하고, 각 태그값 엔트리(TETR)는 태그값(TAG) 필드, 태그값(TAG)의 유효성 필드(V) 및 데이터값 인덱스(DIDX) 필드를 포함할 수 있다. 데이터값 인덱스(DIDX) 필드에는 태그값(TAG)에 연관된 데이터값이 저장된 데이터값 저장 영역(313)의 주소가 저장될 수 있다. 데이터값 저장 영역(313)은 복수의 데이터값 엔트리(DETR1~DETRn)를 포함하고, 각 데이터값 엔트리(DETR)는 태그값 인덱스(INDEX) 필드 및 데이터값(DATA) 필드를 포함할 수 있다. 태그값 인덱스(INDEX) 필드에는 태그값(TAG)이 저장된 태그값 저장 영역(311)의 주소가 저장되고, 데이터값(DATA) 필드에는 태그값(TAG)에 연관된 데이터값이 저장될 수 있다.
메모리 관리 시스템(200)은 CPU(100)가 접근 어드레스를 포함하는 리드 요청을 전송함에 따라, 리드 요청된 어드레스로부터 태그값(TAG) 및 태그 인덱스(INDEX)를 생성할 수 있다. 생성된 태그값 인덱스(INDEX)가 지시하는 태그값 엔트리(TETR)에 태그값(TAG)이 존재하지 않는 경우, 제 2 메모리 장치(320)로부터 해당 태그값(TAG)을 포함하는 캐시 라인의 데이터(태그값(TAG)+데이터값(DATA))를 독출하여 CPU(100)로 제공하는 한편, 독출한 캐시 라인 내의 태그값(TAG)을 대응하는 태그값 엔트리(TETR)에 저장할 수 있다.
CPU(100)가 리드 요청한 어드레스 정보로부터 생성한 태그값(TAG)이 태그값 엔트리(TETR)에 존재하는 경우, 메모리 관리 시스템(200)은 해당 태그값 엔트리(TETR)로부터 유효성을 확인하고, 데이터값 인덱스(DIDX)를 검출할 수 있다. 태그값(TAG)이 유효하고 데이터값 인덱스(DIDX)가 검출된 경우에는 데이터값 인덱스(DIDX)에 따라 데이터값 저장 영역(311)에 접근하여 데이터값(DATA)을 독출하고, 태그값(TAG)과 데이터값(DATA)을 포함하는 데이터를 CPU(100)로 제공할 수 있다.
CPU(100)가 리드 요청한 어드레스 정보로부터 생성한 태그값(TAG)이 제 1 메모리 장치(310)의 태그값 저장 영역(311)에 존재하고 유효하나 데이터값 인덱스(DIDX)가 검출되지 않는 경우, 메모리 관리 시스템(200)은 제 2 메모리 장치(320)로부터 대응하는 캐시 라인의 자료를 독출하여 CPU(100)로 제공한다. 아울러, 캐시 라인 내의 데이터값(DATA)을 태그값 인덱스(INDEX)와 연관지어 데이터값 엔트리(DETR)에 저장하는 한편, 데이터값(DATA)이 저장된 위치를 지시하는 데이터값 인덱스(IDIX)를 태그값 엔트리(TETR)에 반영한다.
이와 같이, 일 실시예에 의한 메모리 관리 시스템(200)은 CPU(100)의 리드 요청시 태그값 엔트리(TETR)로부터 태그값(TAG)을 조회하고, 조회 결과에 따라 제 1 메모리 장치(310)의 데이터값 엔트리(DETR) 또는 제 2 메모리 장치(320)의 캐시 라인(Cache Line)으로부터 데이터값(DATA)을 리드하여 CPU(100)로 전송할 수 있다.
일 실시예에서, 메모리 관리 시스템(200)은 태그값(TAG)이 제 1 메모리 장치(310)에서 발견되지 않는 경우(태그값 미스) 제 2 메모리 장치(320)에서 리드한 캐시 라인의 값 중 태그값(TAG)만을 제 1 메모리 장치(310)에 저장하고 리드된 캐시 라인을 CPU(100)로 전송할 수 있다.
일 실시예에서, 메모리 관리 시스템(200)은 제 1 메모리 장치(310)에서 태그값(TAG)은 발견되나 데이터값(DATA)이 발견되지 않는 경우(데이터값 미스) 제 2 메모리 장치(320)에서 리드한 캐시 라인의 값 중 데이터값(DATA)을 제 1 메모리 장치(310) 내의 태그값(TAG)과 연관지어 저장하고 리드된 캐시 라인을 CPU(100)로 전송할 수 있다.
CPU(100)로부터 요청된 데이터의 태그값(TAG)만을, 즉 데이터값(DATA) 없이 제 1 메모리 장치(310)에 우선 저장하고, 제 1 메모리 장치(310)에 저장된 태그값(TAG)과 연관된 데이터가 요청되는 경우에 비로소 제 1 메모리 장치(310)에 데이터값(DATA)을 저장함에 따라, 제 1 메모리 장치(310)에 구비되는 태그값 엔트리(TETR)의 수는 데이터값 엔트리(DETR)의 수보다 많을 수 있다.
태그값 엔트리(TETR)에 대한 축출 이벤트가 발생하는 경우, 데이터값 인덱스(DIDX)가 비어 있는 태그값 엔트리(TETR)를 축출하는 것이 바람직하다.
데이터값 엔트리(DETR)에 대한 축출 이벤트가 발생하는 경우, 데이터값 엔트리(DETR)로부터 데이터값(DATA)을 축출하고 대응하는 태그값 엔트리(TETR)는 태그값 저장 영역(311)의 잔여 용량에 따라 축출하거나 유지하는 것도 가능하다.
태그값 엔트리(TETR) 또는 데이터값 엔트리(DETR)에 대한 축출 동작은 CPU(100)와 제 1 메모리 장치(310) 간의 대역폭, CPU(100)와 제 2 메모리 장치(320) 간의 대역폭에 충분한 여유가 있는 동안 수행할 수 있다. 축출 동작은 제 1 메모리 장치(310) 내의 잔여 용량이 설정값을 유지하도록 수행할 수 있다.
도 4는 일 실시예에 의한 캐시 컨트롤러의 구성도이다.
도 4를 참조하면, 일 실시예에 의한 캐시 컨트롤러(210)는 태그값 엔트리 관리부(2110), 데이터값 엔트리 관리부(2120), 데이터 전송부(2130) 및 축출부(2140)를 포함할 수 있다.
태그값 엔트리 관리부(2110)는 CPU(100)가 리드 요청한 어드레스로부터 생성한 태그값 인덱스(INDEX)가 지시하는 태그값 엔트리(TETR)에 태그값(TAG)이 저장되어 있는지 확인할 수 있다. 태그값 엔트리(TETR)에 태그값(TAG)이 저장되어 있지 않은 경우, 태그값 엔트리 관리부(2110)는 제 2 메모리 장치(320)로부터 리드된 캐시라인의 태그값(TAG)을 태그값 엔트리(TETR)에 저장하고, 유효성을 설정할 수 있다. 태그값 엔트리(TETR)에 태그값(TAG)이 저장되어 있는 경우, 태그값 엔트리 관리부(2110)는 해당 태그값 엔트리(TETR)로부터 데이터값 인덱스(DIDX)를 리드하여 데이터값 엔트리 관리부(2120)로 제공할 수 있다.
태그값 엔트리(TETR)에 데이터값 인덱스(DIDX)가 저장되어 있지 않은 경우 데이터값 엔트리 관리부(2120)는 제 2 메모리 장치(320)로부터 리드된 캐시라인의 데이터값(DATA)을 태그값 인덱스(INDEX)와 연관지어 데이터값 엔트리(DETR)에 저장하고, 데이터값(DATA)이 저장된 위치를 지시하는 데이터값 인덱스(DIDX)가 태그값 엔트리(TETR)에 반영되도록 할 수 있다.
태그값 엔트리(TETR)에 데이터값 인덱스(DIDX)가 저장되어 있는 경우 데이터값 엔트리 관리부(2120)는 데이터값 인덱스(DIDX)가 지시하는 데이터값 엔트리(DETR)로부터 데이터값(DATA)이 리드되도록 할 수 있다.
데이터 전송부(2130)은 제 1 메모리 장치(310)로부터 리드한 태그값(TAG) 및 데이터값(DATA)을 CPU(100)로 전송하거나, 제 2 메모리 장치(320)로부터 리드한 캐시라인의 데이터를 CPU(100)로 전송할 수 있다.
축출부(2140)는 제 1 메모리 장치(310)에 저장된 데이터의 축출 이벤트가 트리거링됨에 따라 태그값 저장 영역(311) 및 데이터값 저장 영역(313)을 독립적으로 제어하여 태그값 또는 데이터값을 축출할 수 있다.
태그값 저장 영역(311)에 대한 축출 이벤트가 발생하는 경우, 데이터값 인덱스(DIDX)가 저장되어 있지 않은 태그값 엔트리(TETR)를 축출하는 것이 바람직하다.
데이터값 저장 영역(313)에 대한 축출 이벤트가 발생하는 경우, 데이터값 엔트리(DETR)로부터 설정된 기준에 따라 선택된 데이터값(DATA)을 축출하고, 축출된 데이터값(DATA)에 대응하는 태그값 엔트리(TETR)는 태그값 저장 영역(311)의 잔여 용량에 따라 축출하거나 유지하는 것도 가능하다.
제 1 메모리 장치(310) 에 대한 축출 동작은 CPU(100)와 제 1 메모리 장치(310) 간의 대역폭, CPU(100)와 제 2 메모리 장치(320) 간의 대역폭이 제 1 설정값 이상 여유가 있는 동안 수행할 수 있다. 축출 동작은 제 1 메모리 장치(310) 내의 잔여 용량이 제 2 설정값을 유지하도록 수행할 수 있다.
도 5는 일 실시예에 의한 컴퓨터 시스템의 데이터 관리 방법을 설명하기 위한 흐름도이다.
메모리 관리 시스템(200)은 호스트 장치, 즉 CPU(100)로부터 리드 요청을 수신할 수 이다(S101).
메모리 관리 시스템(200)은 리드 요청된 어드레스로부터 생성한 태그값 인덱스(INDEX)가 지시하는 제 1 메모리 장치(310)의 태그값 저장 영역(311)에 태그값(TAG)이 저장되어 있는지 확인할 수 있다(S103).
태그값 저장 영역(311)에 태그값(TAG)이 저장되어 있지 않은 경우(S103:N), 메모리 관리 시스템(200)은 제 2 메모리 장치(320)로부터 해당 태그값(TAG)이 포함된 캐시라인을 리드하고(S105), 리드된 캐시라인의 태그값(TAG)을 태그값 저장 영역(311)에 저장할 수 있다(S107). 아울러, 제 2 메모리 장치(320)에서 리드한 캐시라인의 데이터를 CPU(100)로 전송한다(S109).
태그값 저장 영역(311)에 태그값(TAG)이 저장되어 있는 경우(S103:Y), 메모리 관리 시스템(200)은 태그값 저장 영역(311)으로부터 태그값(TAG)과 연관된 데이터값 인덱스(DIDX)에 대응하는 영역에 데이터값(DATA)이 저장되어 있는지 확인할 수 있다(S111).
데이터값 저장 영역(3130에 데이터값이 저장되어 있는 경우(S111:Y), 메모리 관리 시스템(200)은 데이터값 저장 영역(313)으로부터 리드한 데이터값(DATA)을 태그값(TAG)과 함께 CPU(100)로 전송할 수 있다(S109).
데이터값 저장 영역(313)에 태그값(TAG)과 연관된 데이터값(DATA)이 저장되어 있지 않는 경우(S111:N), 메모리 관리 시스템(200)은 제 2 메모리 장치(320)로부터 해당 태그값(TAG)이 포함된 캐시라인을 리드하고(S113), 리드된 캐시라인의 데이터값(DATA)을 태그값 인덱스(INDEX)와 연관지어 데이터값 저장 영역(313)에 저장할 수 있다(S115). 이때, 데이터값(DATA)이 저장된 위치를 지시하는 데이터값 인덱스(DIDX)를 태그값 저장 영역(311)에 반영할 수 있다.
아울러, 제 2 메모리 장치(320)에서 리드한 캐시라인의 데이터를 CPU(100)로 전송한다(S109).
도시하지 않았으나, 태그값 저장 영역(311) 및 데이터값 저장 영역(313)에 대해 독립적으로 축출 동작이 수행될 수 있고, 데이터값이 축출될 때 이에 대응하는 태그값은 태그값 저장 영역(311)의 잔여 용량에 따라 축출되거나 유지될 수 있다.
도 6은 일 실시예에 의한 컴퓨터 시스템의 데이터 관리 방법을 설명하기 위한 개념도이다.
메모리 관리 시스템(200)은 CPU(100)가 리드 요청한 어드레스로부터 태그값(TAG, 00100), 태그값 인덱스(INDEX, 001) 및 오프셋(OFFSET, 01)을 포함하는 정보를 생성될 수 있다. 오프셋(OFFSET)은 태그 엔트리(TETR) 내의 위치를 구분하기 위하여 사용될 수 잇다.
태그값 저장 영역(311)의 태그값 인덱스(INDEX)가 지시하는 위치 "001"에서 리드한 태그값(Null)이 생성된 태그값 "00100"과 상이하므로(Miss), 메모리 관리 시스템(200)은 제 2 메모리 장치(320)로부터 해당 태그값(00100)을 포함하는 캐시 라인의 데이터(00100 EFGG)를 리드하여 CPU(100)로 제공할 수 있다.
이때, 캐시라인에 포함된 태그값(OO100)을 태그값 저장 영역(311)의 태그 인덱스(INDEX)가 지시하는 위치(001)에 저장하고 유효성 필드(V)의 속성을 설정할 수 있다.
데이터값(DATA)은 데이터값 저장 영역(313)에 아직 캐싱되지 않으므로 데이터값 저장 영역(313)의 잔여 공간은 유지될 수 있다.
도 7은 일 실시예에 의한 컴퓨터 시스템의 데이터 관리 방법을 설명하기 위한 개념도이다.
메모리 관리 시스템(200)은 CPU(100)가 리드 요청한 어드레스로부터 태그값(TAG, 01011), 태그값 인덱스(INDEX, 111) 및 오프셋(OFFSET, 10)을 포함하는 정보를 생성될 수 있다.
태그값 저장 영역(311)의 태그값 인덱스(INDEX)가 지시하는 위치 "111"에서 리드한 태그값(01011)이 생성된 태그값 "01011"과 일치하므로(Hit), 메모리 관리 시스템(200)은 태그값 저장 영역(311)의 데이터값 인덱스(DIDX)를 조회할 수 있다. 데이터값 인덱스(DIDX)가 검출되지 않으므로, 즉 데이터값 저장 영역(313)에 태그값(01011)에 대응하는 데이터값(DATA)이 저장되어 있지 않으므로, 메모리 관리 시스템(200)은 제 2 메모리 장치(320)로부터 해당 태그값(00100)을 포함하는 캐시 라인의 데이터(01011 CDEG)를 리드하여 CPU(100)로 제공할 수 있다.
이때, 캐시라인에 포함된 데이터값(CDEG)을 태그값 인덱스(111)와 연관지어 데이터값 저장 영역(313)에 저장하고, 데이터값(DATA)이 저장된 위치인 데이터값 인덱스(DIDX, 0001)를 태그값 저장 영역(311)에 반영한다.
제 1 메모리 장치(310)에 캐싱하지 않은 데이터를 CPU(100)가 요청한 경우 태그값(TAG)을 우선적으로 캐싱하고, 동일한 데이터가 재요청되면 데이터값(DATA)을 추가로 캐싱함으로써 CPU(100)에 의해 재참조될 가능성이 높은 데이터를 고속으로 제공할 수 있다.
도 8은 일 실시예에 의한 컴퓨터 시스템의 데이터 관리 방법을 설명하기 위한 개념도이다.
메모리 관리 시스템(200)은 CPU(100)가 리드 요청한 어드레스로부터 태그값(TAG, 01100), 태그값 인덱스(INDEX, 010) 및 오프셋(OFFSET, 11)을 포함하는 정보를 생성될 수 있다.
태그값 저장 영역(311)의 태그값 인덱스(INDEX)가 지시하는 위치 "010"에서 리드한 태그값(01100)이 생성된 태그값 "01100"과 일치하므로(Hit), 메모리 관리 시스템(200)은 태그값 저장 영역(311)의 데이터값 인덱스(DIDX)를 조회할 수 있다. 데이터값 인덱스(DIDX)가 "1101"로 검출되므로, 데이터값 저장 영역(313)의 대응하는 위치 "1101"로부터 데이터값(ABCD)를 리드하고, 태그값(01100) 및 데이터값(ABCD)을 포함하는 데이터(011100 ABCD)를 CPU(100)로 제공할 수 있다.
CPU(100)가 이전에 요청한 데이터를 재요청한 경우 제 1 메모리 장치(310)로부터 태그값(TAG)과 데이터값(DATA)을 리드하여 CPU(100)에게 고속으로 제공할 수 있다.
도 9는 일 실시예에 의한 컴퓨터 시스템의 구성도이다.
도 9에 도시한 컴퓨터 시스템(10-1)은 CPU(100-1)가 예측부(160)를 더 포함한다.
예측부(160)는 컴퓨터 시스템(10-1)에서 실행 중인 어플리케이션에 의해 미래에 발생할 메모리 접근을 예측하고, 예측된 메모리 어드레스를 예측 테이블로 관리할 수 있다. 즉, 예측부(160)는 프리페치가 필요할 것으로 예측된 데이터의 어드레스를 예측 테이블로 관리할 수 있다.
메모리 관리 시스템(200)는 제 1 메모리 장치(310)에 태그값이 존재하지 않아 제 2 메모리 장치(320)로부터 리드한 캐시라인의 데이터가 예측 테이블에 포함된 데이터인지 확인할 수 있다. 예측된 테이블에 포함된 데이터인 경우, 메모리 관리 장치(200)는 캐시라인의 태그값과 데이터값을 모두 제 1 메모리 장치(310)에 저장할 수 있다. 이 때, 해당 데이터의 축출 우선 순위를 낮게 설정하여 제 1 메모리 장치(310)에서의 히트율을 높일 수 있다.
도 10은 일 실시예에 의한 제 1 메모리 장치에 저장되는 데이터 포맷을 설명하기 위한 도면이다.
도 10을 참조하면, 일 실시예 의한 태그값 저장 영역(311-1)은 복수의 태그 엔트리(TETR)를 포함한다. 각 태그 엔트리(EETR)는 태그값(TAG) 필드, 태그값(TAG)의 유효성 필드(V), 데이터값 인덱스(DIDX) 필드 및 축출 우선순위 필드(P)를 포함할 수 있다.
예측부(160)에 의해 미래에 참조될 것으로 예측된 데이터가 리드 요청되어 제 1 메모리 장치(310)에 캐싱되는 경우 축출 우선순위 필드(P)를 특정 논리 레벨로 설정하여 축출이 지양되도록 할 수 있다.
도 11은 일 실시예에 의한 컴퓨터 시스템의 데이터 관리 방법을 설명하기 위한 흐름도이다.
메모리 관리 시스템(200)은 호스트 장치, 즉 CPU(100)로부터 리드 요청을 수신할 수 이다(S201).
메모리 관리 시스템(200)은 리드 요청된 어드레스로부터 생성한 태그값 인덱스(INDEX)가 지시하는 제 1 메모리 장치(310)의 태그값 저장 영역(311)에 태그값(TAG)이 저장되어 있는지 확인할 수 있다(S203).
태그값 저장 영역(311)에 태그값(TAG)이 저장되어 있지 않은 경우(S203:N), 메모리 관리 시스템(200)은 제 2 메모리 장치(320)로부터 해당 태그값(TAG)이 포함된 캐시라인을 리드한다(S205).
리드 요청된 어드레스가 CPU(100)가 생성한 예측 테이블에 포함되어 있는지 확인하여(S207) 프리페치가 필요할 것으로 예측된 경우(S207:Y), 메모리 관리 시스템(200)은 리드된 캐시라인의 태그값(TAG)과 데이터값(DATA)을 모두 제 1 메모리 장치(310)에 저장할 수 있다(S209). 이 때, 축출 우선 순위를 낮게 설정할 수 있다. 그리고, 제 2 메모리 장치(320)에서 리드한 캐시라인의 데이터를 CPU(100)로 전송한다(S211).
리드 요청된 어드레스가 CPU(100)가 생성한 예측 테이블에 포함되어 있지 않은 경우(S207:N), 메모리 관리 시스템(200)은 리드된 캐시라인의 태그값(TAG)을 제 1 메모리 장치(310)의 태그값 저장 영역(311)에 저장할 수 있다(S213). 아울러, 제 2 메모리 장치(320)에서 리드한 캐시라인의 데이터를 CPU(100)로 전송한다(S211).
태그값 저장 영역(311)에 태그값(TAG)이 저장되어 있는 경우(S203:Y), 메모리 관리 시스템(200)은 태그값 저장 영역(311)으로부터 태그값(TAG)과 연관된 데이터값 인덱스(DIDX)에 대응하는 영역에 데이터값(DATA)이 저장되어 있는지 확인할 수 있다(S215).
데이터값 저장 영역(3130에 데이터값이 저장되어 있는 경우(S215:Y), 메모리 관리 시스템(200)은 데이터값 저장 영역(313)으로부터 리드한 데이터값(DATA)을 태그값(TAG)과 함께 CPU(100)로 전송할 수 있다(S211).
데이터값 저장 영역(313)에 태그값(TAG)과 연관된 데이터값(DATA)이 저장되어 있지 않는 경우(S215:N), 메모리 관리 시스템(200)은 제 2 메모리 장치(320)로부터 해당 태그값(TAG)이 포함된 캐시라인을 리드하고(S217), 리드된 캐시라인의 데이터값(DATA)을 태그값 인덱스(INDEX)와 연관지어 데이터값 저장 영역(313)에 저장할 수 있다(S219). 이때, 데이터값(DATA)이 저장된 위치를 지시하는 데이터값 인덱스(DIDX)를 태그값 저장 영역(311)에 반영할 수 있다.
아울러, 제 2 메모리 장치(320)에서 리드한 캐시라인의 데이터를 CPU(100)로 전송한다(S211).
도시하지 않았으나, 태그값 저장 영역(311) 및 데이터값 저장 영역(313)에 대해 독립적으로 축출 동작이 수행될 수 있고, 데이터값이 축출될 때 이에 대응하는 태그값은 태그값 저장 영역(311)의 잔여 용량에 따라 축출되거나 유지될 수 있다.
아울러, 프리페치가 필요할 것으로 예측된 데이터는 축출 우선 순위가 낮게 설정되어 있으므로 제 1 메모리 장치(310)에서의 히트율을 높일 수 있다.
따라서, 재참조될 가능성이 낮을 데이터를 캐싱하는 작업을 줄여 컴퓨터 시스템의 성능을 향상시킬 수 있고, 캐싱 공간을 효율적으로 사용할 수 있다.
또한, 재참조될 가능성이 높은 데이터를 선별적으로 캐싱하여 캐시 히트율을 높임으로써 컴퓨터 시스템의 동작 속도를 향상시킬 수 있다.
이와 같이, 본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10, 10-1 : 컴퓨터 시스템
100, 100-1 : CPU
200 : 메모리 관리 시스템
300 : 티어드 메모리 장치
400 : 스토리지
100, 100-1 : CPU
200 : 메모리 관리 시스템
300 : 티어드 메모리 장치
400 : 스토리지
Claims (27)
- 태그값 저장 영역 및 데이터값 저장 영역을 포함하는 제 1 메모리 장치;
적어도 하나의 태그값 및 상기 적어도 하나의 태그값 각각과 연관된 데이터값을 저장하는 적어도 하나의 캐시라인이 할당되는 제 2 메모리 장치; 및
호스트 장치가 리드 요청과 함께 전송한 리드 어드레스로부터 생성된 제 1 태그값을 상기 태그값 저장 영역으로부터 조회하고, 상기 조회 결과에 따라 상기 데이터값 저장 영역 또는 상기 제 2 메모리 장치로부터 상기 제 1 태그값과 연관된 제 1 데이터값을 리드하여 상기 호스트 장치로 전송하는 메모리 관리 시스템;
을 포함하도록 구성되는 컴퓨터 시스템. - 제 1 항에 있어서,
상기 메모리 관리 시스템은 상기 제 1 태그값이 상기 태그값 저장 영역에서 조회되지 않는 경우, 상기 제 2 메모리 장치로부터 상기 제 1 태그값과 연관된 제 1 캐시라인의 데이터를 리드하고, 상기 제 1 태그값을 상기 태그값 저장 영역에 저장하도록 구성되는 컴퓨터 시스템. - 제 1 항에 있어서,
상기 메모리 관리 시스템은 상기 제 1 태그값이 상기 태그값 저장 영역에서 조회되는 경우 상기 데이터값 저장 영역으로부터 상기 제 1 데이터값을 조회하도록 구성되는 컴퓨터 시스템. - 제 3 항에 있어서,
상기 메모리 관리 시스템은, 상기 제 1 데이터값이 상기 데이터값 저장 영역에서 조회되지 않는 경우, 상기 제 2 메모리 장치로부터 상기 제 1 태그값과 연관된 제 1 캐시라인의 데이터를 리드하고, 상기 제 1 캐시라인에 포함된 상기 제 1 데이터값을 상기 데이터값 저장 영역에 저장하도록 구성되는 컴퓨터 시스템. - 제 3 항에 있어서,
상기 메모리 관리 시스템은, 상기 제 1 데이터값이 상기 데이터값 저장 영역에서 조회되는 경우, 상기 데이터값 저장 영역으로부터 상기 제 1 데이터값을 리드하도록 구성되는 컴퓨터 시스템. - 제 1 항에 있어서,
상기 호스트 장치는 프리페치가 필요한 것으로 예측된 예측 데이터의 어드레스를 예측 테이블에 저장하고,
상기 메모리 관리 시스템은, 상기 예측 데이터가 상기 제 2 메모리 장치로부터 리드됨에 따라, 상기 예측 데이터에 대응하는 태그값 및 데이터값을 상기 제 1 메모리 장치에 저장하도록 구성되는 컴퓨터 시스템. - 제 6 항에 있어서,
상기 메모리 관리 시스템은, 상기 제 1 메모리 장치에 저장된 데이터의 축출 우선 순위를 설정하되, 상기 예측 데이터의 축출 우선 순위를 예측되지 않은 데이터의 축출 우선 순위보다 낮게 설정하도록 구성되는 컴퓨터 시스템. - 제 1 항에 있어서,
상기 태그값 저장 영역은 복수의 태그값 엔트리를 포함하고, 상기 데이터값 저장 영역은 복수의 데이터값 엔트리를 포함하며, 상기 태그값 엔트리 수는 상기 복수의 데이터값 엔트리의 수보다 많도록 구성되는 컴퓨터 시스템. - 제 8 항에 있어서,
상기 태그값 엔트리는 연관된 데이터값 엔트리의 저장 위치를 포함하도록 구성되는 컴퓨터 시스템. - 제 8 항에 있어서,
상기 데이터값 엔트리는 연관된 태그값 엔트리의 저장 위치를 포함하도록 구성되는 컴퓨터 시스템. - 제 1 항에 있어서,
상기 제 1 메모리 장치는 상기 호스트 장치와 DIMM(Dual In-line Memory Module) 인터페이스를 통해 접속되도록 구성되는 컴퓨터 시스템. - 제 1 항에 있어서,
상기 제 2 메모리 장치는 상기 호스트 장치와 CXL(Compute eXpress Link)인터페이스를 통해 접속되도록 구성되는 컴퓨터 시스템. - 태그값 저장 영역 및 데이터값 저장 영역을 포함하는 제 1 메모리 장치;
적어도 하나의 태그값 및 상기 적어도 하나의 태그값 각각과 연관된 데이터값을 포함하는 데이터를 저장하는 제 2 메모리 장치; 및
호스트 장치가 요청한 제 1 데이터의 제 1 태그값이 상기 태그값 저장 영역에 존재하지 않는 경우, 상기 제 2 메모리 장치로부터 리드한 제 1 데이터의 상기 제 1 태그값을 상기 태그값 저장 영역에 저장하는 메모리 관리 시스템;
을 포함하도록 구성되는 컴퓨터 시스템. - 제 13 항에 있어서,
상기 메모리 관리 시스템은, 상기 호스트 장치가 요청한 제 2 데이터의 제 2 태그값이 상기 태그값 저장 영역에 존재하고 제 2 데이터의 제 2 데이터값이 상기 데이터값 저장 영역에 존재하지 않는 경우, 상기 제 2 메모리 장치로부터 리드한 상기 제 2 데이터값을 상기 제 2 태그값과 연관지어 상기 데이터값 저장 영역에 저장하도록 구성되는 컴퓨터 시스템. - 제 13 항에 있어서,
상기 호스트 장치는 프리페치가 필요한 것으로 예측된 예측 데이터의 어드레스를 예측 테이블에 저장하고,
상기 메모리 관리 시스템은, 상기 예측 데이터가 상기 제 2 메모리 장치로부터 리드됨에 따라, 상기 예측 데이터에 대응하는 태그값 및 데이터값을 상기 제 1 메모리 장치에 저장하도록 구성되는 컴퓨터 시스템. - 제 15 항에 있어서,
상기 메모리 관리 시스템은, 상기 제 1 메모리 장치에 저장된 데이터의 축출 우선 순위를 설정하되, 상기 예측 데이터의 축출 우선 순위를 예측되지 않은 데이터의 축출 우선 순위보다 낮게 설정하도록 구성되는 컴퓨터 시스템. - 제 13 항에 있어서,
상기 태그값 저장 영역은 복수의 태그값 엔트리를 포함하고, 상기 데이터값 저장 영역은 복수의 데이터값 엔트리를 포함하며, 상기 태그값 엔트리 수는 상기 복수의 데이터값 엔트리의 수보다 많도록 구성되는 컴퓨터 시스템. - 제 13 항에 있어서,
상기 제 1 메모리 장치는 상기 호스트 장치와 DIMM(Dual In-line Memory Module) 인터페이스를 통해 접속되도록 구성되는 컴퓨터 시스템. - 제 13 항에 있어서,
상기 제 2 메모리 장치는 상기 호스트 장치와 CXL(Compute eXpress Link)인터페이스를 통해 접속되도록 구성되는 컴퓨터 시스템. - 제 1 메모리 장치 및 제 2 메모리 장치와 각각 독립적인 인터페이스를 통해 접속되는 메모리 관리 시스템의 데이터 관리 방법으로서,
상기 메모리 관리 시스템이, 호스트 장치가 리드 요청과 함께 전송한 리드 어드레스로부터 제 1 태그값을 생성하는 단계;
상기 메모리 관리 시스템이, 상기 제 1 태그값을 제 1 메모리 장치의 태그값 저장 영역으로부터 조회하는 단계;
상기 메모리 관리 시스템이, 상기 조회 결과에 따라 상기 제 1 메모리 장치의 데이터값 저장 영역 또는 상기 제 2 메모리 장치로부터 상기 제 1 태그값과 연관된 제 1 데이터값을 리드하여 상기 호스트 장치로 전송하는 단계;
를 포함하는 컴퓨터 시스템의 데이터 관리 방법. - 제 20 항에 있어서,
상기 제 1 태그값이 상기 태그값 저장 영역에서 조회되지 않는 경우 상기 메모리 관리 시스템이, 상기 제 2 메모리 장치로부터 상기 제 1 태그값과 연관된 제 1 캐시라인의 데이터를 리드하고, 상기 제 1 태그값을 상기 태그값 저장 영역에 저장하는 단계를 더 포함하는 컴퓨터 시스템의 데이터 관리 방법. - 제 20 항에 있어서,
상기 제 1 태그값이 상기 태그값 저장 영역에서 조회되는 경우 상기 메모리 관리 시스템이, 상기 데이터값 저장 영역으로부터 상기 제 1 데이터값을 조회하는 단계를 더 포함하는 컴퓨터 시스템의 데이터 관리 방법. - 제 22 항에 있어서,
상기 제 1 데이터값이 상기 데이터값 저장 영역에서 조회되지 않는 경우 상기 메모리 관리 시스템이, 상기 제 2 메모리 장치로부터 상기 제 1 태그값과 연관된 제 1 캐시라인의 데이터를 리드하고, 상기 제 1 캐시라인에 포함된 상기 제 1 데이터값을 상기 데이터값 저장 영역에 저장하는 단계를 더 포함하는 컴퓨터 시스템의 데이터 관리 방법. - 제 22 항에 있어서,
상기 제 1 데이터값이 상기 데이터값 저장 영역에서 조회되는 경우 상기 메모리 관리 시스템이, 상기 데이터값 저장 영역으로부터 상기 제 1 데이터값을 리드하는 단계를 더 포함하는 컴퓨터 시스템의 데이터 관리 방법. - 제 20 항에 있어서,
상기 호스트 장치가, 프리페치가 필요한 것으로 예측된 예측 데이터의 어드레스를 예측 테이블에 저장하는 단계; 및
상기 메모리 관리 시스템이, 상기 예측 데이터가 상기 제 2 메모리 장치로부터 리드됨에 따라, 상기 예측 데이터에 대응하는 태그값 및 데이터값을 상기 제 1 메모리 장치에 저장하는 단계;
를 더 포함하는 컴퓨터 시스템의 데이터 관리 방법. - 제 25 항에 있어서,
상기 메모리 관리 시스템이, 상기 제 1 메모리 장치에 저장된 데이터의 축출 우선 순위를 설정하되, 상기 예측 데이터의 축출 우선 순위를 예측되지 않은 데이터의 축출 우선 순위보다 낮게 설정하는 단계를 더 포함하는 컴퓨터 시스템의 데이터 관리 방법. - 제 1 항에 있어서,
상기 메모리 관리 시스템이, 태그값 저장 영역에 복수의 태그값 엔트리를 할당하고, 상기 데이터값 저장 영역에 복수의 데이터값 엔트리를 할당하되, 상기 태그값 엔트리 수가 상기 데이터값 엔트리의 수보다 많도록 할당하는 단계를 더 포함하는 컴퓨터 시스템의 데이터 관리 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210154848A KR20230068743A (ko) | 2021-11-11 | 2021-11-11 | 이종 메모리를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210154848A KR20230068743A (ko) | 2021-11-11 | 2021-11-11 | 이종 메모리를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230068743A true KR20230068743A (ko) | 2023-05-18 |
Family
ID=86545556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210154848A KR20230068743A (ko) | 2021-11-11 | 2021-11-11 | 이종 메모리를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20230068743A (ko) |
-
2021
- 2021-11-11 KR KR1020210154848A patent/KR20230068743A/ko unknown
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113508368B (zh) | 存储器子系统及其操作方法 | |
US10339056B2 (en) | Systems, methods and apparatus for cache transfers | |
US8688900B2 (en) | Cache memory management in a flash cache architecture | |
US20170235681A1 (en) | Memory system and control method of the same | |
US7266647B2 (en) | List based method and apparatus for selective and rapid cache flushes | |
US8015365B2 (en) | Reducing back invalidation transactions from a snoop filter | |
US20110161597A1 (en) | Combined Memory Including a Logical Partition in a Storage Memory Accessed Through an IO Controller | |
US6782453B2 (en) | Storing data in memory | |
US20110276746A1 (en) | Caching storage adapter architecture | |
CN102150147A (zh) | 存储器服务器 | |
JP2008502069A (ja) | メモリ・キャッシュ制御装置及びそのためのコヒーレンシ動作を実行する方法 | |
US8145870B2 (en) | System, method and computer program product for application-level cache-mapping awareness and reallocation | |
US20220179798A1 (en) | Separate read-only cache and write-read cache in a memory sub-system | |
US12007917B2 (en) | Priority scheduling in queues to access cache data in a memory sub-system | |
WO2024066195A1 (zh) | 缓存管理方法及装置、缓存装置、电子装置和介质 | |
KR20210025344A (ko) | 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템, 그것의 데이터 관리 방법 | |
US20060123196A1 (en) | System, method and computer program product for application-level cache-mapping awareness and reallocation requests | |
KR20230068743A (ko) | 이종 메모리를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법 | |
KR101976320B1 (ko) | 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법 | |
US6859868B2 (en) | Object addressed memory hierarchy | |
US9454488B2 (en) | Systems and methods to manage cache data storage | |
KR102521746B1 (ko) | 메모리 장치의 주소 맵핑을 관리하는 반도체 장치 및 이를 포함하는 데이터 저장 장치 | |
US20220229552A1 (en) | Computer system including main memory device having heterogeneous memories, and data management method thereof | |
US20050033920A1 (en) | Cache structure and methodology | |
KR20240069323A (ko) | 이종 메모리로 구성된 메인 메모리 장치를 포함하는 컴퓨터 시스템 및 그 동작 방법 |