KR20040047398A - 캐쉬 메모리를 이용한 데이터 억세스 방법 - Google Patents
캐쉬 메모리를 이용한 데이터 억세스 방법 Download PDFInfo
- Publication number
- KR20040047398A KR20040047398A KR1020020075607A KR20020075607A KR20040047398A KR 20040047398 A KR20040047398 A KR 20040047398A KR 1020020075607 A KR1020020075607 A KR 1020020075607A KR 20020075607 A KR20020075607 A KR 20020075607A KR 20040047398 A KR20040047398 A KR 20040047398A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- cpu
- cache memory
- cache
- memory
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 132
- 238000000034 method Methods 0.000 title claims abstract description 22
- 238000010586 diagram Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
Classifications
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 발명은 RISC 프로세서의 데이터 캐쉬(data cache) 메모리가 라이트 백(write back) 방식을 취할 때의 데이터 억세스 방법에 관한 것으로서, 특히 CPU로부터 어드레스를 받고 캐쉬 메모리 내의 해당 인덱스로부터 태그를 읽어 들였는데 미스가 난 경우에, 라이트 백을 위해 라이트 버퍼에 존재하는 데이터의 인덱스 영역과 태그 영역을 비교하여 최종적으로 히트인지 미스인지 판정하여 히트로 판별되면 상기 라이트 버퍼에 있는 해당 데이터를 메모리로 억세스하지 않고 바로 CPU로 보내줌으로써, 불필요한 메모리 억세스로 인한 시간을 단축할 수 있으므로, 전체적인 프로그램의 실행 시간을 단축할 수 있다는 장점이 있다.
Description
본 발명은 RISC 프로세서에 관한 것으로서, 특히 내부의 데이터 캐쉬(data cache) 메모리가 라이트 백(write back) 방식을 취할 때의 데이터 억세스 방법에 관한 것이다.
상기 RISC(Reduced Instruction Set Computer)는 중앙처리장치(Central Process Unit ; CPU) 내의 명령의 갯수를 최대한 줄여 고속 처리를 수행하도록 설계된 마이크로프로세서로서, 기존의 기계어와 마이크로 명령의 중간 레벨로 어드레싱을 소수로 제한하고 있으며 LSI(고집적)화가 용이하고 파이프라인에 의한 명령의 고속화가 가능한 장점을 갖고 있다. 특히, RISC의 모든 명령은 1클럭(스위치 개폐를 제어하는 순간적인 신호)으로 실행되고, 모든 명령은 고정된 길이로, 연산은 레지스터 사이에서만 실행되는 특징을 지닌다.
또한, 캐쉬 메모리는 CPU의 코어(Core, 핵심을 말하며 ALU,CU,레지스터등의 집합을 가리킴.)와 메인 메모리 사이에 있는 고속 메모리로서, 캐쉬는 빠른 장치(예, CPU)와 느린 장치(예, 메모리) 사이에서 두 장치의 속도 차이를 극복하게 해주기 위해 사용한다. 보통 RISC 프로세서의 CPU와 캐쉬 메모리는 칩 내부에 존재하지만, 메인 메모리는 칩 외부에 존재하게 된다. 즉, 프로세서는 칩 외부에 있는 메인 메모리를 억세스하는데 시간이 많이 걸리기 때문에 프로세서의 성능을 향상시키기 위해서 캐쉬 메모리를 사용한다. 이것은 그만큼 메인 메모리를 억세스하는 시간이 프로세서의 속도에 비해 훨씬 길다는 것을 의미한다.
예를 들어, 메인 메모리인 램에서 자료를 읽어와 CPU에서 데이터를 처리한 후에 다시 메인 메모리에서 데이터를 읽어오게 되는 경우를 생각해본다. 이때, CPU는 메인 메모리에서 데이터를 읽어와 계산을 처리한 후 다시 메인 메모리에서 데이터를 가져올 때 CPU의 데이터 처리 속도가 워낙 빨라 메인 메모리에서 데이터를 가져오기까지 쉬게 된다. 즉, CPU가 아무 작업도 하지 않은 채 메인 메모리에서 데이터를 가져올 때까지 기다림으로써, 시스템의 전체적인 처리 속도가 저하된다. 이러한 일을 최대한 줄이고자 CPU와 메인 메모리인 램 사이에 램보다 빠른 캐쉬 메모리를 두고, CPU가 데이터를 처리할 때, 제일 먼저 해당 데이터가 캐쉬 메모리에 있는지를 찾는데, 만약 거기에서 원하는 데이터를 찾으면, 읽는데 더 많은 시간이 필요한 메인 메모리로 갈 필요가 없게된다.
그리고, 상기 캐쉬 메모리 내의 데이터가 라이트 명령으로 인해 업데이트 되었을 경우, 해당 데이터가 캐쉬 메모리에서 지워질 때 이를 메인 메모리로 전달해주는 것을 라이트 백(write back)이라 한다.
도 1은 이러한 라이트 백 기능이 있는 시스템의 구성 블록도로서, 보통 RISC 프로세서의 CPU(101)와 캐쉬 메모리(102)는 칩 내부에 존재하지만, 메인 메모리(1034는 칩 외부에 존재하게 된다. 그리고, 상기 캐쉬 메모리(102)와 메인 메모리 사이에 라이트 백을 위한 라이트 버퍼(103)가 구비된다.
즉, 상기 캐쉬 메모리(102)에 저장되어 있던 데이터에 CPU(101)가 새로운 값을 라이트했을 경우, 메인 메모리(104)와의 일관성(coherency)를 맞추기 위해서 상기 캐쉬 메모리(102)의 새로운 값을 라이트 버퍼(103)를 통해 다시 메인 메모리(104)로 써주는 것을 라이트 백이라 한다. 여기서, 그 값을 써주는 시점은 해당 캐쉬라인(cacheline, 캐쉬 메모리 내 데이터의 기본단위)이 새로운 데이터로 업데이트 되어 캐쉬 메모리(102) 내에 존재하지 않을 때이다. 상기 라이트 백과 다른 방식으로는 라이트 관통(write through)이 있는데 이는 CPU(101)가 새로운 값을 상기 캐쉬 메모리(102)에 라이트할 때마다 그 새로운 값을 바로 메인 메모리로써주는 방식을 뜻한다.
한편, 상기 CPU(101)가 데이터를 요청할 때는 먼저 그 데이터가 캐쉬 메모리(102)에 있는지를 확인하고, 있으면 캐쉬 메모리(102)의 데이터를 읽어가고, 없으면 메인 메모리(104)로부터 데이터를 읽어 와 캐쉬 메모리(102)에 저장한 후 읽어간다.
여기서, 상기 CPU(101)가 원하는 데이터가 캐쉬 메모리(102)에 있는 경우를 히트(Hit)라 하고, 없는 경우 즉, 메인 메모리(104)에서 가져와야 하는 경우를 미스(Miss)라고 한다.
도 2는 캐쉬 메모리의 내부 구성과 동작 예를 보인 도면으로서, 4KB의 데이터 캐쉬 메모리를 나타낸다. 도 2에서 도면 부호 201은 CPU에서 출력되는 어드레스로서 32비트로 구성되어 있고, 202는 캐쉬 메모리 내부이다. 이때, 상기 CPU의 32 비트의 어드레스 영역 중에서 11:5까지의 7bit는 인덱스(index)로서 캐쉬 메모리(202)의 한 캐쉬라인을 선택하는 번지의 역할을 한다.
그리고, 31:12까지의 20bit는 태그(tag)로서 히트를 판단할 때 사용하는데, CPU에서 전송한 어드레스(201)의 인덱스 값과 같은 인덱스를 갖는 캐쉬 메모리(202)의 캐쉬라인 내의 태그와 상기 전송된 CPU의 어드레스(201)의 태그 값(31:12)을 비교하여 같으면 히트의 조건이 된다. 즉, CPU에서 요청하는 데이터가 상기 CPU의 어드레스(201)의 인덱스가 가리키는 캐쉬 메모리(202)의 캐쉬라인에 있음을 의미한다. 그런데, 상기 캐쉬 메모리(202)에서 V라는 valid/invalid를 나타내는 부분이 '1'로 유효(valid)할 때 앤드 게이트를 통해 최종 히트로 판명이 된다.
상기 캐쉬 메모리(202)의 한 캐쉬라인은 32bit의 데이터 8개, 즉 256bit(32Bytes) 데이터 영역, 20비트의 태그 영역, LRU 영역, 및 V 영역으로 이루어져 있다. 따라서, 상기 CPU의 어드레스(201)의 4:2까지의 3bit는 캐쉬 메모리(202)의 먹스로 출력되어 한 캐쉬 라인에서 데이터 영역의 32비트(4바이트) 데이터를 선택하는 선택 신호로 사용된다. 그리고, 상기 캐쉬 메모리(202)의 LRU(Least Recently Used) 영역은 2비트로서, 상위 비트는 라이트 명령으로 업데이트 되어 라이트 백을 해야 하는지의 여부가 기록되고, 하위 비트는 최근에 캐쉬에 쓰여졌는지의 여부를 기록한다. 도 2는 1-way를 나타내지만 2-way 이상의 경우는 몇 번째의 캐쉬라인을 대체할 지를 LRU의 하위 비트로 판단한다.
도 3은 도 2와 같은 캐쉬 메모리 2개로 2-way set-associative를 나타낸 도면이다. 즉, 인덱스가 같은 데이터를 둘 중에 아무 곳에나 저장할 수 있다는 의미이다. 그러므로, 미스가 났을 경우 메인 메모리로부터 읽어 오는 데이터를 둘 중에 어느 곳에 저장할지의 기준이 필요하다. 이때, 전술한 LRU의 하위 비트를 사용한다. 최근에 업데이트된 쪽을 '1'로 셋트하여 놓는다면, 새로이 라이트할 데이터는 LRU의 하위 비트가 '0', 즉 둘 중에 보다 먼저 캐쉬에 쓰여진 데이터를 지우고 그 곳에 써준다. 이는 일반적으로 최근에 사용한 데이터를 다시 사용할 확률이 더 높기 때문이다.
도 4는 상기된 도 2 또는, 도 3과 같은 캐쉬 구조를 갖는 시스템에서 CPU가 캐쉬로 데이터를 요청할 때의 종래의 동작 흐름도이다. 즉, CPU에서 캐쉬 메모리로 데이터를 요청하면(단계 401), CPU에서 전송한 어드레스의 인덱스에 해당하는 캐쉬메모리의 캐쉬라인의 태그 값과 상기 CPU에서 전송한 어드레스의 태그 값이 같은지를 비교한다(단계 402). 만일, 상기 단계 402에서의 비교 결과, 두 태그 값이 같다면 히트라 판단하고, 같지 않으면 미스라 판단한다(단계 403).
상기 단계 403에서 미스로 판별되면 캐쉬 메모리는 메인 메모리에서 해당 데이터를 읽어 와 CPU로 전송한 후 캐쉬 메모리에 라이트한다(단계 404).
상기 단계 403에서 히트로 판별되면(이 경우 V값이 '1'이라고 가정함.), 캐쉬 메모리 내의 해당 데이터를 상기 CPU로 전송한다(단계 405). 즉, 상기 CPU에서 전송된 어드레스의 인덱스에 해당하는 캐쉬 라인의 32바이트 데이터 중에서 상기 CPU의 어드레스의 4:2까지의 3bit가 지시하는 4바이트 데이터를 선택하여 CPU로 전송한다.
이때, 해당 캐쉬라인이 다른 데이터로 대체되어 라이트 백을 하려고 라이트 버퍼에서 메모리 억세스를 기다리고 있는 데이터가 있다고 가정한다. 그런데, CPU에서 그 데이터를 요청한다면, 기존 캐쉬 방식은 라이트 버퍼에 있는 데이터가 메인 메모리로 라이트 백이 끝난 후, 미스인 캐쉬 메모리가 메인 메모리를 억세스하여 그 값을 읽어 와 CPU로 보내준다. 이때, 캐쉬 메모리가 메인 메모리를 억세스하려는 요청보다 라이트 백이 버스 인터페이스상에서 더 우선순위가 높아야 한다. 왜냐하면, 메인 메모리의 데이터가 업데이트 되기 전에 캐쉬에서 읽어 가면 캐쉬와 메모리와의 일관성(coherency)이 맞지 않는 비정상적인 동작이 발생하기 때문이다.
이와 같이 종래의 데이터 캐쉬 방법은, 라이트 백되어야 하는 데이터를 CPU가 억세스할 경우 먼저, 그 데이터가 메인 메모리로 라이트 백되고, 그 후 다시 메인 메모리를 억세스하여 데이터 캐쉬 메모리로 읽어온 뒤 해당 데이터를 CPU로 전송하도록 구현되어 있다.
따라서, 이 경우 라이트 백하는 시간과 메인 메모리 억세스하는 시간이 추가되어 CPU에서는 데이터를 오랜 사이클동안 기다리면서 쉬어야 한다. 즉, 이 경우 버스가 다른 일을 하고 있어서 한동안 라이트 백을 할 수 없거나 또는, 라이트 백 후 캐쉬 메모리가 메인 메모리를 사용하려고 할 때 버스가 역시 다른 일을 하고 있을 수 있다. 그러면, CPU는 오랜 사이클동안 데이터를 기다리면서 아무 일도 하지 못한다. 그렇지 않더라도, 라이트 백이 이루어진 후 해당 데이터를 메인 메모리에서 읽어와야 하므로, 두 번의 메모리 억세스 시간이 지나야 CPU는 원하는 데이터를 받을 수 있다. 만일, 메인 메모리가 칩 외부에 존재한다면 메인 메모리를 억세스하는 시간이 프로세서의 입장에서는 매우 길 것이다.
본 발명은 상기와 같은 문제점을 해결하기 위한 것으로서, 본 발명의 목적은 내부의 데이터 캐쉬가 라이트 백 방식을 취할 때, 라이트 백되기 전에 라이트 버퍼에 존재하는 데이터를 프로세서의 코어에서 요청할 경우 히트로 처리하여 해당 데이터를 메모리 억세스 타임 없이 라이트 버퍼에서 캐쉬를 통해 바로 CPU로 보내주는 데이터 억세스 방법을 제공함에 있다.
도 1은 일반적인 캐쉬 기능을 갖는 시스템의 구성 블록도
도 2는 일반적인 4KB 데이터 캐쉬 메모리의 일 예를 보인 도면
도 3은 일반적인 8KB 2-way set-associative 데이터 캐쉬 메모리의 일 예를 보인 도면
도 4는 기존의 캐쉬 메모리를 이용한 데이터 억세스 방법의 흐름도
도 5는 본 발명에 따른 캐쉬 메모리를 이용한 데이터 억세스 방법의 흐름도
도면의 주요부분에 대한 부호의 설명
101 : CPU102 : 캐쉬 메모리
103 : 라이트 버퍼104 : 메인 메모리
상기와 같은 목적을 달성하기 위한 본 발명에 따른 캐쉬 메모리를 이용한 데이터 억세스 방법은, (a) CPU에서 캐쉬 메모리로 데이터를 요청하면, 상기 CPU에서전송한 어드레스의 인덱스에 해당하는 캐쉬 메모리의 캐쉬라인의 태그 값과 상기 CPU에서 전송한 어드레스의 태그 값을 비교하여 같으면 히트로, 같지 않으면 미스로 1차 판별하는 단계; (b) 상기 (a) 단계에서 미스로 판별되면 라이트 백을 하려고 라이트 버퍼에서 기다리는 데이터 어드레스의 인덱스와 태그 값 그리고, 상기 CPU의 어드레스의 인덱스와 태그 값을 비교하여 같으면 히트로, 같지 않으면 미스로 2차 판별하는 단계; 및 (c) 상기 (b) 단계에서 히트로 판별되면 상기 라이트 버퍼에 있는 해당 데이터를 메인 메모리로 억세스하지 않고 바로 CPU로 전송하는 단계를 포함하여 이루어지는 것을 특징으로 한다.
상기 (a) 단계에서 히트로 판별되면 캐쉬 메모리 내의 해당 데이터를 CPU로 전송하는 것을 특징으로 한다.
상기 (b) 단계에서 미스로 판별되면 메인 메모리에서 해당 데이터를 읽어 와 캐쉬 메모리를 통해 CPU로 전송하는 것을 특징으로 한다.
상기 (b) 단계는 리드 히트로 판별되면 라이트 버퍼에 있는 해당 데이터를 CPU로 전송한 후 그 데이터를 캐쉬 메모리에 다시 라이트하고, 라이트 히트로 판별되면 CPU로부터 받은 데이터를 캐쉬 메모리에 다시 라이트하고, 다음에 그 데이터가 라이트 백되어야 함을 기록하는 것을 특징으로 한다.
본 발명의 다른 목적, 특징 및 잇점들은 첨부한 도면을 참조한 실시예들의 상세한 설명을 통해 명백해질 것이다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예의 구성과 그 작용을 설명하며, 도면에 도시되고 또 이것에 의해서 설명되는 본 발명의 구성과 작용은 적어도하나의 실시예로서 설명되는 것이며, 이것에 의해서 상기한 본 발명의 기술적 사상과 그 핵심 구성 및 작용이 제한되지는 않는다.
본 발명은 라이트 백을 하려고 라이트 버퍼에 대기중인 데이터의 태그와 인덱스도 캐쉬 미스/히트 판단시 비교하여, 히트이면 라이트 버퍼에 있는 해당 데이터를 메인 메모리로 억세스하지 않고 바로 CPU로 보내 줌으로써, 라이트 백되는 시간과 메인 메모리를 억세스하는 시간을 단축하여 CPU에서 불필요하게 쉬는 사이클을 줄일 수 있도록 하는데 그 특징이 있다.
도 5는 본 발명에 따른 데이터 억세스 방법의 일 실시예를 나타낸 흐름도로서, CPU에서 캐쉬 메모리로 데이터를 요청하면(단계 501), 상기 CPU에서 전송한 어드레스의 태그 값과 상기 CPU에서 전송한 어드레스의 인덱스에 해당하는 캐쉬 메모리의 캐쉬라인의 태그 값이 같은지를 비교한다(단계 502). 만일, 상기 단계 502에서의 비교 결과, 두 태그 값이 같고, V값이 '1'이면 히트라 판단하고, 그렇지 않으면 미스라 판단한다(단계 503).
상기 단계 503에서 히트로 판별되면, 캐쉬 메모리 내의 해당 데이터를 상기 CPU로 전송한다(단계 504). 즉, 상기 CPU에서 전송된 어드레스의 인덱스에 해당하는 캐쉬 라인의 32바이트 데이터 중에서 상기 CPU의 어드레스의 4:2까지의 3bit가 지시하는 4바이트 데이터를 선택하여 CPU로 전송한다.
한편, 상기 단계 503에서 미스로 판별되면 라이트 백을 하려고 라이트 버퍼에서 기다리는 데이터의 어드레스에서 태그 영역과 인덱스 영역을 다시 캐쉬 히트/미스 판단에 이용한다. 즉, 상기 CPU에서 전송한 어드레스의 인덱스와 태그 그리고, 라이트 버퍼의 데이터 어드레스의 인덱스와 태그를 비교하여(단계 505), 상기 CPU에서 전송한 어드레스의 인덱스와 라이트 버퍼의 데이터 어드레스의 인덱스가 같고, 또한 두 태그 값이 같다면 히트라 판단하고, 같지 않으면 미스라 판단한다(단계 506).
상기 단계 506에서 미스로 판단되면 메인 메모리에서 해당 데이터를 읽어 와 캐쉬 메모리를 통해 CPU로 전송한다(단계 508).
한편, 상기 단계 506에서 히트로 판단되면 상기 라이트 버퍼에 있는 데이터를 바로 캐쉬 메모리를 통해 CPU로 전송한다(단계 507).
즉, 해당 캐쉬라인이 다른 데이터로 대체되어 라이트 백을 하려고 라이트 버퍼에서 메모리 억세스를 기다리고 있는 데이터가 있고, CPU에서 그 데이터를 요청한다면, 라이트 버퍼에 있는 데이터를 메인 메모리로 억스세하지 않고 바로 CPU로 전송한다.
이때, CPU가 리드를 요청했으면 데이터를 CPU로 보내주고 다시 캐쉬 메모리 내의 다른 캐쉬 라인을 대체하면 된다. 그리고, CPU가 라이트를 요청했으면 CPU로부터 받은 새로운 데이터를 캐쉬 메모리에 다시 저장하며, 추후에 라이트 백되어야 함을 기록해둔다. 또한 유효를 나타내는 부분('V')에도 유효하다고 기록해주며('V'=1), LRU의 하위 비트에는 최근에 업데이트 했다고 기록한다.
이와 같이 본 발명은 CPU로부터 어드레스를 받고 캐쉬 메모리 내의 해당 인덱스로부터 태그를 읽어 들였는데 미스가 난 경우에, 라이트 백을 위해 라이트 버퍼에 존재하는 데이터의 인덱스 영역과 태그 영역을 비교하여 최종적으로 히트인지미스인지 판정하여 히트로 판별되면 라이트 버퍼에 있는 해당 데이터를 바로 CPU로 전송한다.
따라서, 프로세서는 적어도 메모리 억세스 타임의 두 배 이상을 단축할 수 있다. 보통 프로세서 CPU(즉, 코어)와 캐쉬 메모리는 칩 내부에 존재하지만 메인 메모리는 칩 외부에 존재하게 된다. 그러면 프로세서의 동작 속도와 메모리의 속도는 차이가 크다. 이럴 경우 메모리 억세스 타임의 단축은 전체적인 칩의 성능에 많은 도움을 준다. 그리고, 인덱스가 같은 데이터를 자주 사용하는 프로그램을 실행할 때 특히 유용하다. 그런 프로그램의 경우 캐쉬 메모리의 way수가 많을수록 유리하지만 way수가 고정적으로 정해져 칩 내부를 고치기가 어려울 때는, 전술한 본 발명을 적용하면 전체적인 실행 시간의 단축 효과가 클 것으로 예상되며, 프로세서의 성능(performance) 또한 향상될 것이다.
이상에서와 같이 본 발명에 따른 메모리 억세스 방법에 의하면, 프로세서의 데이터 캐쉬에서 라이트 백을 하려고 기다리던 데이터를 CPU에서 요청하게 될 경우, 캐쉬 메모리에서 히트로 판단하고, 상기 라이트 버퍼에 있는 데이터를 메모리로 억세스하지 않고 바로 CPU로 보내줌으로써, 불필요한 메모리 억세스로 인한 시간을 단축할 수 있으므로, 전체적인 프로그램의 실행 시간을 단축할 수 있다는 장점이 있다. 특히, 인덱스가 같은 데이터를 자주 사용하는 프로그램의 경우는 프로세서의 성능을 더욱 향상시킬 수 있다.
이상 설명한 내용을 통해 당업자라면 본 발명의 기술 사상을 일탈하지 아니하는 범위에서 다양한 변경 및 수정이 가능함을 알 수 있을 것이다.
따라서, 본 발명의 기술적 범위는 실시예에 기재된 내용으로 한정되는 것이 아니라 특허 청구의 범위에 의하여 정해져야 한다.
Claims (5)
- CPU와 캐쉬 메모리, 그리고 캐쉬 메모리에서 라이트 백되는 데이터를 일시 저장하는 라이트 버퍼, 및 라이트 버퍼에 있는 데이터를 억세스하는 메인 메모리로 구성된 시스템의 데이터 억세스 방법에 있어서,(a) 상기 CPU에서 캐쉬 메모리로 데이터를 요청하면, 상기 CPU에서 전송한 어드레스의 인덱스에 해당하는 캐쉬 메모리의 캐쉬라인의 태그 값과 상기 CPU에서 전송한 어드레스의 태그 값을 비교하여 같으면 히트로, 같지 않으면 미스로 1차 판별하는 단계;(b) 상기 (a) 단계에서 미스로 판별되면 라이트 백을 하려고 라이트 버퍼에서 기다리는 데이터 어드레스의 인덱스와 태그 값 그리고, 상기 CPU의 어드레스의 인덱스와 태그 값을 비교하여 같으면 히트로, 같지 않으면 미스로 2차 판별하는 단계; 및(c) 상기 (b) 단계에서 히트로 판별되면 상기 라이트 버퍼에 있는 해당 데이터를 메인 메모리로 억세스하지 않고 바로 CPU로 전송하는 단계를 포함하여 이루어지는 것을 특징으로 하는 데이터 억세스 방법.
- 제 1 항에 있어서,상기 (a) 단계에서 히트로 판별되면 캐쉬 메모리 내의 해당 데이터를 CPU로 전송하는 것을 특징으로 하는 데이터 억세스 방법.
- 제 1 항에 있어서,상기 (b) 단계에서 미스로 판별되면 메인 메모리에서 해당 데이터를 읽어 와 캐쉬 메모리를 통해 CPU로 전송하는 것을 특징으로 하는 데이터 억세스 방법.
- 제 1 항에 있어서, 상기 (b) 단계는리드 히트로 판별되면 라이트 버퍼에 있는 해당 데이터를 CPU로 전송한 후 그 데이터를 캐쉬 메모리에 다시 라이트하는 것을 특징으로 하는 데이터 억세스 방법.
- 제 1 항에 있어서, 상기 (b) 단계는라이트 히트로 판별되면 CPU로부터 받은 새로운 데이터를 캐쉬 메모리에 다시 라이트하고, 다음에 그 데이터가 라이트 백되어야 함을 기록하는 것을 특징으로 하는 데이터 억세스 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020020075607A KR20040047398A (ko) | 2002-11-30 | 2002-11-30 | 캐쉬 메모리를 이용한 데이터 억세스 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020020075607A KR20040047398A (ko) | 2002-11-30 | 2002-11-30 | 캐쉬 메모리를 이용한 데이터 억세스 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20040047398A true KR20040047398A (ko) | 2004-06-05 |
Family
ID=37342797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020020075607A KR20040047398A (ko) | 2002-11-30 | 2002-11-30 | 캐쉬 메모리를 이용한 데이터 억세스 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20040047398A (ko) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100698310B1 (ko) * | 2005-06-03 | 2007-03-23 | 엘지전자 주식회사 | 데이터 억세스 제어 장치 및 데이터 호출 방법 |
KR100985517B1 (ko) * | 2008-12-04 | 2010-10-05 | 주식회사 에이디칩스 | 캐시메모리 제어방법 |
CN113204370A (zh) * | 2021-03-16 | 2021-08-03 | 南京英锐创电子科技有限公司 | 指令缓存方法及装置 |
CN116701246A (zh) * | 2023-05-23 | 2023-09-05 | 合芯科技有限公司 | 一种提升缓存带宽的方法、装置、设备及存储介质 |
-
2002
- 2002-11-30 KR KR1020020075607A patent/KR20040047398A/ko not_active Application Discontinuation
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100698310B1 (ko) * | 2005-06-03 | 2007-03-23 | 엘지전자 주식회사 | 데이터 억세스 제어 장치 및 데이터 호출 방법 |
KR100985517B1 (ko) * | 2008-12-04 | 2010-10-05 | 주식회사 에이디칩스 | 캐시메모리 제어방법 |
CN113204370A (zh) * | 2021-03-16 | 2021-08-03 | 南京英锐创电子科技有限公司 | 指令缓存方法及装置 |
CN116701246A (zh) * | 2023-05-23 | 2023-09-05 | 合芯科技有限公司 | 一种提升缓存带宽的方法、装置、设备及存储介质 |
CN116701246B (zh) * | 2023-05-23 | 2024-05-07 | 合芯科技有限公司 | 一种提升缓存带宽的方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100353656B1 (ko) | Dma 및 l1/l2 캐시 성능을 향상시키기 위한 방법, 장치 및 컴퓨터 프로그램 기록 매체 | |
US7032074B2 (en) | Method and mechanism to use a cache to translate from a virtual bus to a physical bus | |
US6138208A (en) | Multiple level cache memory with overlapped L1 and L2 memory access | |
US6725337B1 (en) | Method and system for speculatively invalidating lines in a cache | |
US5551001A (en) | Master-slave cache system for instruction and data cache memories | |
US8725987B2 (en) | Cache memory system including selectively accessible pre-fetch memory for pre-fetch of variable size data | |
KR100262906B1 (ko) | 데이터 선인출 방법 및 시스템 | |
US5784590A (en) | Slave cache having sub-line valid bits updated by a master cache | |
US20140237174A1 (en) | Highly Efficient Design of Storage Array Utilizing Multiple Cache Lines for Use in First and Second Cache Spaces and Memory Subsystems | |
KR100228940B1 (ko) | 메모리 일관성 유지 방법 | |
JP2000250813A (ja) | I/oキャッシュ・メモリにおけるデータ管理方法 | |
US8621152B1 (en) | Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access | |
JP4218820B2 (ja) | ダイレクトマップドキャッシュとフルアソシアティブバッファとを含んだキャッシュシステム、その制御方法及び記録媒体 | |
US7472227B2 (en) | Invalidating multiple address cache entries | |
CN109219804B (zh) | 非易失内存访问方法、装置和*** | |
JP5319049B2 (ja) | キャッシュシステム | |
US5926841A (en) | Segment descriptor cache for a processor | |
US7949833B1 (en) | Transparent level 2 cache controller | |
US6976130B2 (en) | Cache controller unit architecture and applied method | |
US20120066456A1 (en) | Direct memory access cache prefetching | |
WO1997034229A9 (en) | Segment descriptor cache for a processor | |
JPH1055276A (ja) | 多重レベル分岐予測方法および装置 | |
KR20040047398A (ko) | 캐쉬 메모리를 이용한 데이터 억세스 방법 | |
US7035981B1 (en) | Asynchronous input/output cache having reduced latency | |
JPH0210450A (ja) | キヤツシユメモリの先行フエツチ制御方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Withdrawal due to no request for examination |