KR100985517B1 - 캐시메모리 제어방법 - Google Patents

캐시메모리 제어방법 Download PDF

Info

Publication number
KR100985517B1
KR100985517B1 KR1020080122277A KR20080122277A KR100985517B1 KR 100985517 B1 KR100985517 B1 KR 100985517B1 KR 1020080122277 A KR1020080122277 A KR 1020080122277A KR 20080122277 A KR20080122277 A KR 20080122277A KR 100985517 B1 KR100985517 B1 KR 100985517B1
Authority
KR
South Korea
Prior art keywords
cache
tag
data
write
memory
Prior art date
Application number
KR1020080122277A
Other languages
English (en)
Other versions
KR20100063910A (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 KR1020080122277A priority Critical patent/KR100985517B1/ko
Publication of KR20100063910A publication Critical patent/KR20100063910A/ko
Application granted granted Critical
Publication of KR100985517B1 publication Critical patent/KR100985517B1/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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers

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

본 발명의 캐시메모리 제어방법은 캐시메모리 쓰기 동작시 캐시 히트일 경우 캐시태그데이터, 인덱스 및 오프셋과 캐시데이터 저장부에 기록될 쓰기 데이터를 쓰기 버퍼에 저장함으로써 쓰기 동작 다음에 읽기 동작이 진행되더라도 파이프라인의 멈춤 없이 캐시메모리 읽기 동작을 수행할 수 있어 종래에 비해 파이프라인의 수행사이클을 감소시킬 수 있고, 이로 인해 프로세서 및 캐시에서 소비되는 전력을 감소시킬 수 있다.
Figure R1020080122277
캐시메모리, 버퍼, 캐시히트, 메모리요청주소

Description

캐시메모리 제어방법{cache memory controlling method}
본 발명은 캐시메모리 제어방법에 관한 것으로, 캐시메모리 쓰기 동작시 캐시 히트일 경우 캐시데이터 저장부에 기록될 쓰기 데이터를 쓰기 버퍼에 저장함으로써 쓰기 동작 다음에 캐시메모리 읽기 동작이 진행되더라도 파이프라인의 멈춤 없이 캐시메모리 읽기 동작을 수행할 수 있어 파이프라인의 수행사이클을 감소시킬 수 있고, 프로세서 및 캐시에서 소비되는 전력을 감소시킬 수 있는 캐시메모리 제어방법에 관한 것이다.
일반적으로 캐시메모리(Cache Memory)는 처리속도가 상대적으로 고속인 프로세서(processor)와 상대적으로 저속인 주메모리(Main Memory) 사이에서 일시적으로 정보를 저장하는 고속의 기억장치이다. 이러한 캐시메모리는 공유 프로그램의 수행시 참조집약성(locality of reference)을 이용하여 컴퓨터의 처리속도를 빠르게 할 수 있다. 즉, 컴퓨터프로그램이 수행될 때 프로세서가 접근하는 주메모리 내의 주소를 관찰하면 어느 한정된 시간에 주메모리의 한두 영역만이 집중적으로 접근되는 관찰할 수 있으며, 이를 공간의 집약성이라 한다. 이러한 성질을 이용하여 주메모리와 프로세서의 사이에 고속의 캐시메모리를 두어 여기에 자주 사용되는 주메모리 의 일부 영역을 저장함으로써, 프로세서가 주메모리를 접근하는데 걸리는 시간을 대폭 단축할 수 있다.
도 1은 일반적인 4개의 32비트 워드(word)로 구성된 캐시메모리를 가진 캐시 구조의 블럭도이다.
캐시는 캐시태그데이터(CTAG)가 저장된 캐시태그 저장부(1)와 캐시데이터가 저장된 캐시데이터 저장부(3)와 더티비트(Dirty Bit:D)이 저장된 캐시상태 저장부(5)로 구성된 캐시메모리(10)와 캐시컨트롤러(20)로 구성된다.
캐시는 캐시 라인 안에 저장되어 있는 정보가 주메모리의 어느 영역에 해당되는지 알아야 하는데 캐시태그 저장부(1)의 캐시태그(CTAG)를 통하여 캐시 라인 안에 저장되어 있는 정보가 주메모리의 어느 영역의 주소인지 알 수 있으며, 캐시메모리(10)는 주메모리에서 읽어온 데이터를 저장하고 있으며, 이는 캐시데이터 저장부(3)에 저장된 캐시데이터(CD)이다.
더티비트(D)는 캐시 라인 안에 저장되어 있는 캐시데이터(CD)와 주메모리 안에 저장되어 있는 데이터가 일치하는지를 결정하는 비트이다.
캐시컨트롤러(20)는 읽기(read) 및 쓰기(write)를 위한 메모리 요청을 메모리 컨트롤러에게 보내기 전에 가로채며, 이때 메모리요청주소(MA)는 태그(Tag), 인덱스(Index) 및 오프셋(Offset)의 세 부분으로 나누어 처리된다. 캐시콘트롤러(20)는 캐시메모리(10)의 캐시 라인을 찾기 위해 메모리요청주소(MA)의 인덱스(Index)를 사용하여 인덱스에 의해 선택된 캐시 라인은 캐시태그 저장부(1)의 캐시태그데이터(CTAG)와 캐시상태 저장부(5)의 더티비트(D)를 이용하여 캐시데이터(CD)의 사 용가능 여부를 결정한다. 만약 캐시데이터(CD)가 사용 가능하면 캐시 히트(hit)라 하고, 그렇지 않을 경우 캐시 미스(miss)라고 한다.
캐시 미스이면 캐시컨트롤러(20)는 주메모리에서 미스된 캐시 라인의 모든 정보를 캐시메모리(10)로 복사하고 프로세서로부터 요청된 데이터를 프로세서로 전송하며, 캐시 히트인 경우에는 캐시컨트롤러(20)는 캐시메모리(10)에 저장된 캐시데이터(CD)를 프로세서에 전송한다.
도 2a 및 도 2b는 종래의 캐시메모리 제어방법의 순서도이다.
도 2a에 도시된 바와 같이 종래의 캐시메모리 제어방법은 프로세서로부터 요청된 명령이 읽기동작인지 쓰기동작인지를 판단하는 읽기쓰기판단단계(S10)와, 읽기쓰기판단단계(S10)에서 읽기동작이면 메모리요청주소(MA)의 인덱스(Index)에 의해 선택된 캐시태그저장부(1)에 저장된 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 인덱스(Index)와 오프셋(Offset)으로 구성된 캐시메모리주소(CA)에 의해 선택된 캐시데이터 저장부(3)에 저장된 캐시데이터(CD)를 읽는 캐시읽기단계(S20)와, 캐시읽기단계(S20)에서 읽은 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(Tag)와 비교하여 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(Tag)가 동일하면 캐시히트신호(hit)를 출력하고, 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(Tag)가 동일하지 않으면 캐시미스신호(miss)를 출력하는 제1태그비교단계(S30)와, 제1태그비교단계(S30)에서 캐시히트신호(hit)이면 캐시읽기단계(S20)에서 읽은 캐시데이터(CD)를 프로세서로 전송하는 데이터전송단계(S40)와, 읽기쓰기판단단계(S10)에서 쓰기동작이면 메모리요청주소(MA)의 인덱스(Index)에 의해 캐시태그저장부(1)에 저장된 캐시태그데이터(CTAG)를 읽는 태그읽기단계(S50)와, 태그읽기단계(S50)에서 읽은 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(Tag)와 비교하여 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(Tag)가 동일하면 캐시히트신호(hit)를 출력하고, 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(Tag)가 동일하지 않으면 캐시미스신호(miss)를 출력하는 제2태그비교단계(S60)와, 제2태그비교단계(S60)에서 캐시히트신호(hit)이면 캐시메모리주소(CA)에 의해 선택된 캐시데이터 저장부(3)에 프로세서에서 쓰기 요청한 데이터를 쓰고, 메모리요청주소(MA)의 인덱스(Index)에 의해 선택된 상태저장부(5)의 더티비트를 갱신하는 캐시메모리쓰기단계(S70)와, 제1태그비교단계(S30)와 제2태그비교단계(S60)에서 캐시미스신호(miss)이면 캐시미스를 수행하는 캐시미스수행단계(S80)로 구성된다.
도 2b에 도시된 바와 같이 캐시미스수행단계(S80)는 메모리요청주소(MA)의 인덱스(Index)에 의해 선택된 상태저장부(5)에 저장된 더티비트(D)을 읽는 상태정보읽기단계(S81)와, 상태정보읽기단계(S81)에서 더티비트(D)의 활성화유무를 판단하는 더티비트판단단계(S83)와, 더티비트판단단계(S83)에서 더티비트(D)가 활성화되어 있으면 미스된 캐시데이터 저장부(3)에 저장된 캐시데이터(CD)를 캐시메모리주소(CA)에 의해 선택된 주메모리에 쓰는 카피백단계(S85)와 더티비트판단단계(S83)에서 더티비트(D)가 비활성화되거나 카피백단계(S85) 완료 후 메모리요청주소(MA)에 의해 선택된 주메모리에 저장된 데이터를 미스된 캐시데이터 저장부(3)로 저장하는 데이터대체단계(S87)로 구성된다.
도 3a는 종래의 캐시메모리 읽기동작일 때의 파이프라인 동작을 설명하기 위한 도면이고, 도 3b는 종래의 캐시메모리 쓰기동작일 때의 파이프라인 동작을 설명하기 위한 도면이고, 도 3c는 종래의 캐시메모리 쓰기동작 후 읽기동작일 때의 파이프라인 동작을 설명하기 위한 도면이다.
종래의 경우 캐시메모리 읽기 동작은 도 3a에 도시된 바와 같이 전상태단계(PR)에서는 현재상태단계(NR)에서 수행하기 위한 메모리요청주소(MA)와 현재상태단계(NR)가 캐시읽기수행인 것을 알 수 있으며, 현재상태단계(NR)에서는 도 2a의 캐시읽기단계(S20)와 제1태그비교단계(S30)를 수행하고, 다음상태단계(NTR)에서는 제1태그비교단계(S30)에서 캐시히트(hit)이면 데이터전송단계(S40)를 수행하여 읽기동작을 완료한다.
종래의 경우 캐시메모리 쓰기 동작은 도 3b에 도시된 바와 같이 전상태단계(PW)에서는 현재상태단계(NW)에서 수행하기 위한 메모리요청주소(MA)와 현재상태단계(NW)가 캐시쓰기수행인 것을 알 수 있으며, 현재상태단계(NW)에서는 도 2a의 태그읽기단계(S50)와 제2태그비교단계(S60)를 수행하고, 다음상태단계(NTW)에서는 제2태그비교단계(S50)에서 캐시히트(hit)이면 캐시메모리쓰기단계(S70)를 수행하여 쓰기동작을 완료한다.
도 3c에 도시된 바와 같이 캐시메모리 쓰기동작 후에 읽기동작을 수행할 경우에는 쓰기동작의 다음상태단계(NTW)에서는 메모리요청주소(MA)의 인덱스(Index)에 의해 선택된 캐시태그저장부(1)에 저장된 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 인덱스(Index)와 오프셋(Offset)으로 구성된 캐시메모리주소(CA)에 의해 선택된 주소의 캐시데이터 저장부(3)에 프로세서에서 쓰기 요청한 데이터를 쓰고, 메모리요청주소(MA)의 인덱스(Index)에 의해 선택된 상태저장부(5)의 더티비트(D)를 갱신하는 캐시메모리쓰기단계(S70)를 수행한다. 파이프라인 동작에 따라 쓰기동작의 다음상태단계(NTW)에서는 쓰기동작의 다음 동작인 읽기동작을 위한 현재상태단계(NR)를 수행하여야 하나, 캐시메모리는 정적기억장치(Static Random Access Mmemory:SRAM)로 구성되므로 동시에 캐시메모리의 캐시데이터 저장부(3)를 접근할 수 없다. 즉, 도 3c에 도시된 바와 같이 쓰기동작의 다음상태단계(NTW)에서 캐시메모리쓰기단계(S70)를 완료할 때까지 읽기동작을 정지하고, 캐시메모리쓰기단계(S70) 완료 후 다음 파이프라인 사이클에서 읽기동작의 현재상태단계(NR)인 도 2a의 캐시읽기단계(S20)를 수행하여야 한다.
따라서 종래의 캐시메모리 제어방법은 캐시메모리 쓰기동작 후에 캐시메모리 읽기동작을 수행할 경우 캐시메모리 쓰기동작이 완료될 때까지 캐시메모리 읽기동작을 정지하고, 캐시메모리 쓰기동작이 완료한 후 캐시데이터 저장부에 저장된 캐시데이터를 읽어야 하므로 파이프라인 동작시 한 개의 휴지기(休止期) 사이클이 발생되고 이로 인해 프로세서 및 캐시에서 소비되는 전력이 증가되는 문제점을 가지고 있다.
본 발명의 목적은 캐시메모리 쓰기 동작시 캐시 히트일 경우 캐시태그데이터, 인덱스 및 오프셋과 캐시데이터 저장부에 기록될 쓰기 데이터를 쓰기 버퍼에 저장함으로써 쓰기 동작 다음에 읽기 동작이 진행되더라도 파이프라인의 멈춤 없이 캐시메모리 읽기 동작을 수행할 수 있어 종래에 비해 파이프라인의 수행사이클을 감소시킬 수 있고, 이로 인해 프로세서 및 캐시에서 소비되는 전력을 감소시킬 수 있는 캐시메모리 제어방법을 제공하는 데 있다.
상기의 목적을 달성하기 위하여 본 발명의 캐시메모리 제어방법은 프로세서로부터 태그, 인덱스 및 오프셋으로 구성된 메모리요청주소에 대해 읽기 또는 쓰기 명령어에 따라 캐시태그데이터가 저장된 캐시태그 저장부, 더티비트가 저장된 캐시상태 저장부 및 캐시데이터가 저장된 캐시데이터 저장부로 구성된 캐시메모리를 제어하는 캐시메모리 제어방법에 있어서, 상기 프로세서로부터 요청된 명령이 읽기동작인지 쓰기동작인지를 판단하는 읽기쓰기판단단계; 이전에 수행된 쓰기동작에 의해 선택된 제1캐시태그데이터, 제1인덱스 및 제1오프셋으로 구성된 제1캐시메모리주소와 프로세서로부터 캐시메모리에 쓰기 요청한 쓰기데이터가 저장된 쓰기버퍼의 제1캐시메모리주소와 상기 메모리요청주소를 비교하는 주소비교단계; 상기 주소비교단계에서 상기 제1캐시메모리주소와 메모리요청주소가 동일하면 상기 쓰기버퍼에 저장된 쓰기데이터를 상기 프로세서에 전송하여 읽기동작을 완료하는 쓰기버퍼데이터 전송단계; 상기 주소비교단계에서 상기 제1캐시메모리주소와 메모리요청주소가 동일하지 않으면 상기 메모리요청주소의 인덱스에 의해 선택된 캐시태그저장부에 저장된 캐시태그데이터와 메모리요청주소의 인덱스와 오프셋으로 구성된 캐시메모리주소에 의해 선택된 캐시데이터 저장부에 저장된 캐시데이터를 읽는 캐시읽기단계; 상기 캐시읽기단계에서 읽은 캐시태그데이터와 메모리요청주소의 태그와 비교하여 캐시태그데이터와 메모리요청주소의 태그가 동일하면 캐시히트신호를 출력하고, 캐시태그데이터와 메모리요청주소의 태그가 동일하지 않으면 캐시미스신호를 출력하는 제1태그비교단계; 상기 제1태그비교단계에서 캐시히트신호이면 상기 캐시읽기단계에서 읽은 캐시데이터를 프로세서에 전송하여 읽기동작을 완료하는 캐시데이터전송단계; 상기 읽기쓰기판단단계에서 쓰기동작이고, 이전에 수행된 쓰기동작에 의해 상기 쓰기버퍼에 쓰기데이터가 저장되어 있으면 상기 쓰기버퍼에 저장된 제1캐시메모리주소에 의해 선택된 캐시데이터 저장부에 상기 쓰기데이터를 저장하는 제1캐시메모리 갱신단계; 상기 읽기쓰기판단단계에서 쓰기동작이면 메모리요청주소의 인덱스에 의해 선택된 캐시태그저장부에 저장된 캐시태그데이터를 읽는 태그읽기단계; 상기 태그읽기단계에서 읽은 캐시태그데이터와 메모리요청주소의 태그와 비교하여 캐시태그데이터와 메모리요청주소의 태그가 동일하면 캐시히트신호를 출력하고, 캐시태그데이터와 메모리요청주소의 태그가 동일하지 않으면 캐시미스신호를 출력하는 제2태그비교단계; 상기 제2태그비교단계에서 캐시히트신호이면 메모리요청주소의 인덱스에 의해 선택된 캐시태그저장부에 저장된 캐시태그데이터와 메모리요청주소의 인덱스와 오프셋으로 구성된 캐시 메모리주소와 프로세서로부터 캐시메모리에 쓰기 요청한 쓰기데이터를 상기 쓰기버퍼에 저장하는 제1쓰기버퍼저장단계; 및 상기 제1태그비교단계와 제2태그비교단계에서 캐시미스신호이면 캐시미스동작을 수행하는 캐시미스수행단계를 구비한 것을 특징으로 한다.
본 발명의 캐시메모리 제어방법은 캐시메모리 쓰기 동작시 캐시 히트일 경우 캐시태그데이터, 인덱스 및 오프셋과 캐시데이터 저장부에 기록될 쓰기 데이터를 쓰기 버퍼에 저장함으로써 쓰기 동작 다음에 읽기 동작이 진행되더라도 파이프라인의 멈춤 없이 캐시메모리 읽기 동작을 수행할 수 있어 종래에 비해 파이프라인의 수행사이클을 감소시킬 수 있고, 이로 인해 프로세서 및 캐시에서 소비되는 전력을 감소시킬 수 있다.
이하, 첨부된 도면을 참조하여 본 발명의 캐시메모리 제어방법을 상세히 설명하고자 한다.
도 4는 본 발명의 캐시메모리 제어방법의 순서도이고, 도 5는 본 발명의 다른 실시예인 캐시메모리 제어방법의 순서도이고, 도 6은 본 발명의 캐시미스수행단계의 순서도이고, 도 7은 본 발명의 캐시메모리 제어방법의 동작을 나타내는 파이프라인 구조도이고, 도 8a 및 도 8b는 쓰기동작에 따른 쓰기버퍼의 구성도이다.
도 4에 도시된 바와 같이 본 발명의 캐시메모리 제어방법은 프로세서로부터 요청된 명령이 읽기동작인지 쓰기동작인지를 판단하는 읽기쓰기판단단계(S110)와, 이전에 수행된 쓰기동작에 의해 선택된 제1캐시태그데이터(CTAG1), 제1인덱스(I1) 및 제1오프셋(O1)으로 구성된 제1캐시메모리주소(CA1)와 프로세서로부터 캐시메모리에 쓰기 요청한 쓰기데이터(WD)가 저장된 쓰기버퍼(200)의 제1캐시메모리주소(CA1)와 메모리요청주소(MA)를 비교하는 주소비교단계(S120)와, 주소비교단계(S120)에서 제1캐시메모리주소(CA1)와 메모리요청주소(MA)가 동일하면 쓰기버퍼(200)에 저장된 쓰기데이터(WD)를 프로세서에 전송하여 읽기동작을 완료하는 쓰기버퍼데이터 전송단계(S130)와, 주소비교단계(S120)에서 제1캐시메모리주소(CA1)와 메모리요청주소(MA)가 동일하지 않으면 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 캐시태그저장부(110)에 저장된 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 인덱스(I)와 오프셋(O)으로 구성된 캐시메모리주소(CA)에 의해 선택된 캐시데이터 저장부(130)에 저장된 캐시데이터(CD)를 읽는 캐시읽기단계(S140)와, 캐시읽기단계(S140)에서 읽은 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)와 비교하여 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)가 동일하면 캐시히트신호(hit)를 출력하고, 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)가 동일하지 않으면 캐시미스신호(miss)를 출력하는 제1태그비교단계(S150)와, 제1태그비교단계(S150)에서 캐시히트신호(hit)이면 캐시읽기단계(S140)에서 읽은 캐시데이터(CD)를 프로세서에 전송하여 읽기동작을 완료하는 캐시데이터전송단계(S160)와, 읽기쓰기판단단계(S110)에서 쓰기동작이고, 이전에 수행된 쓰기동작에 의해 쓰기버퍼(200)에 쓰기데이터(WD)가 저장되어 있으면 쓰기버퍼(200)에 저장된 제1캐시메모리주소(CA1)에 의해 선택된 캐시데이터 저장부(130)에 쓰기데이터(WD)를 저장 하는 제1캐시메모리 갱신단계(S170)와, 읽기쓰기판단단계(S110)에서 쓰기동작이면 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 캐시태그저장부(110)에 저장된 캐시태그데이터(CTAG)를 읽는 태그읽기단계(S180)와, 태그읽기단계(S180)에서 읽은 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)와 비교하여 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)가 동일하면 캐시히트신호(hit)를 출력하고, 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)가 동일하지 않으면 캐시미스신호(miss)를 출력하는 제2태그비교단계(S190)와, 제2태그비교단계(S190)에서 캐시히트신호(hit)이면 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 캐시태그저장부(110)에 저장된 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 인덱스(I)와 오프셋(O)으로 구성된 캐시메모리주소(CA)와 프로세서로부터 캐시메모리에 쓰기 요청한 쓰기데이터(WD)를 쓰기버퍼(200)에 저장하는 제1쓰기버퍼저장단계(S200)와, 제1태그비교단계(S150)와 제2태그비교단계(S190)에서 캐시미스신호(miss)이면 캐시미스동작을 수행하는 캐시미스수행단계(S300)로 구성된다.
도 5에 도시된 바와 같이 본 발명의 다른 실시예인 캐시메모리 제어방법은 프로세서로부터 요청된 명령이 읽기동작인지 쓰기동작인지를 판단하는 읽기쓰기판단단계(S110)와, 이전에 수행된 쓰기동작에 의해 선택된 제1캐시태그데이터(CTAG1), 제1인덱스(I1) 및 제1오프셋(O1)으로 구성된 제1캐시메모리주소(CA1)와 프로세서로부터 캐시메모리에 쓰기 요청한 쓰기데이터(WD)가 저장된 쓰기버퍼(200)의 제1캐시메모리주소(CA1)와 메모리요청주소(MA)를 비교하는 주소비교단계(S120)와, 주소비교단계(S120)에서 제1캐시메모리주소(CA1)와 메모리요청주소(MA)가 동일 하면 쓰기버퍼(200)에 저장된 쓰기데이터(WD)를 프로세서에 전송하여 읽기동작을 완료하는 쓰기버퍼데이터 전송단계(S130)와, 주소비교단계(S120)에서 제1캐시메모리주소(CA1)와 메모리요청주소(MA)가 동일하지 않으면 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 캐시태그저장부(110)에 저장된 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 인덱스(I)와 오프셋(O)으로 구성된 캐시메모리주소(CA)에 의해 선택된 캐시데이터 저장부(130)에 저장된 캐시데이터(CD)를 읽는 캐시읽기단계(S140)와, 캐시읽기단계(S140)에서 읽은 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)와 비교하여 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)가 동일하면 캐시히트신호(hit)를 출력하고, 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)가 동일하지 않으면 캐시미스신호(miss)를 출력하는 제1태그비교단계(S150)와, 제1태그비교단계(S150)에서 캐시히트신호(hit)이면 캐시읽기단계(S140)에서 읽은 캐시데이터(CD)를 프로세서에 전송하여 읽기동작을 완료하는 캐시데이터전송단계(S160)와, 읽기쓰기판단단계(S110)에서 쓰기동작이고, 이전에 수행된 쓰기동작에 의해 쓰기버퍼(200)에 쓰기데이터(WD)가 저장되어 있으면 쓰기버퍼(200)에 저장된 제1캐시메모리주소(CA1)에 의해 선택된 캐시데이터 저장부(130)에 쓰기데이터(WD)를 저장하는 제1캐시메모리 갱신단계(S170)와, 읽기쓰기판단단계(S110)에서 쓰기동작이면 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 캐시태그저장부(110)에 저장된 캐시태그데이터(CTAG)를 읽는 태그읽기단계(S180)와, 태그읽기단계(S180)에서 읽은 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)와 비교하여 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)가 동일 하면 캐시히트신호(hit)를 출력하고, 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)가 동일하지 않으면 캐시미스신호(miss)를 출력하는 제2태그비교단계(S190)와, 제2태그비교단계(S190)에서 캐시히트신호(hit)이고, 다음 수행 동작이 읽기동작이면 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 캐시태그저장부(110)에 저장된 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 인덱스(I)와 오프셋(O)으로 구성된 캐시메모리주소(CA)와 프로세서로부터 캐시메모리에 쓰기 요청한 쓰기데이터(WD)를 쓰기버퍼(200)에 저장하는 제2쓰기버퍼저장단계(S200a)와, 제2태그비교단계(S190)에서 캐시히트신호(hit)이고, 다음 수행 동작이 쓰기동작이면 캐시메모리주소(CA)에 의해 선택된 캐시데이터 저장부(130)에 프로세서로부터 쓰기 요청한 쓰기데이터(WD)를 쓰고, 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 상태저장부(150)의 더티비트(D)를 갱신하는 캐시메모리쓰기단계(S200b)와, 제1태그비교단계(S150)와 제2태그비교단계(S190)에서 캐시미스신호(miss)이면 캐시미스동작을 수행하는 캐시미스수행단계(S300)로 구성된다.
또한 도 6에 도시된 바와 같이 캐시미스수행단계(S300)는 이전에 수행된 쓰기동작에 의해 쓰기버퍼(200)에 쓰기데이터(WD)가 저장되어 있으면 쓰기버퍼(200)에 저장된 제1캐시메모리주소(CA1)에 의해 선택된 캐시데이터 저장부(130)에 쓰기데이터(WD)를 저장하는 제2캐시메모리 갱신단계(S310)와, 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 상태저장부(150)에 저장된 더티비트(D)를 읽는 상태정보읽기단계(S320)와, 상태정보읽기단계(S320)에서 더티비트(D)의 활성화유무를 판단하는 더티비트판단단계(S330)와, 더티비트판단단계(S330)에서 더티비트(D)가 활성화되어 있으면 캐시메모리주소(CA)에 의해 선택된 캐시데이터 저장부(130)에 저장된 캐시데이터(CD)를 캐시메모리주소(CA)에 의해 선택된 주메모리에 쓰는 카피백단계(S340)와, 더티비트판단단계(S330)에서 더티비트(D)가 비활성화되거나 카피백단계(S340) 완료 후 메모리요청주소(MA)에 의해 선택된 주메모리에 저장된 데이터를 상기 메모리요청주소(MA)에 의해 선택된 캐시데이터 저장부(130)에 저장하고, 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 캐시태그데이터 저장부(110)에 메모리요청주소(MA)의 태그(T)를 저장하는 데이터대체단계(S350)로 구성된다.
상기의 구성에 따른 본 발명인 캐시메모리 제어방법의 동작은 다음과 같다.
메모리요청주소(MA)는 태그(Tag:T), 인덱스(Index:T) 및 오프셋(Offset:O)으로 구성되어, 프로세서로부터 주메모리접근을 위한 주소로 정의하며, 캐시메모리주소(CA)는 캐시메모리 내의 캐시태그 저장부(110)에 저장된 캐시태그데이터(CTAG)와, 메모리요청주소(MA)의 인덱스(Index:T)와 오프셋(Offset:O)으로 구성되어, 캐시메모리 내의 캐시데이터 저장부(130)에 접근을 위한 주소, 즉 캐시데이터 저장부(130)의 특정 주소에 위치한 캐시데이터(CD)를 읽거나, 캐시데이터 저장부(130) 내의 특정 주소로 프로세서로부터 요청한 데이터를 쓰기 위한 주소로 정의한다.
본 발명의 캐시메모리 제어방법은 프로세서가 요청한 명령어가 쓰기 동작일 경우 종래의 캐시메모리 제어방법과는 달리 프로세서로부터 요청한 쓰기데이터를 쓰기버퍼(200)에 저장하며, 쓰기버퍼(200)는 도 8a 및 도 8b에 도시된 바와 같이 캐시메모리주소(CA1,CA)와 쓰기데이터(WD)를 저장한다.
도 7에 도시된 바와 같이 첫번째 쓰기동작에서 메모리요청주소(MA)는 제1태그(T1), 제1인덱스(I1) 및 제1오프셋(O1)이라 하고, 캐시메모리주소(CA)는 제1인덱스(I1)에 의해 선택된 캐시태그 저장부(110)에 저장된 제1캐시태그데이터(CTAG1)와 제1인덱스(I1)와 제1오프셋(O1)으로 구성된 제1캐시메모리주소(CA1)라 한다.
도 4에 도시된 바와 같이 첫번째 쓰기동작(WR1)의 전상태단계(PW1)에서는 읽기쓰기판단단계(S110)를 수행하며, 읽기쓰기판단단계(S110)는 프로세서로부터 요청된 명령이 읽기동작인지 쓰기동작인지를 판단한다. 예를 들어 도 7에 도시된 바와 같이 프로세서로부터 요청된 명령이 첫번째 쓰기동작(WR1)이면 읽기쓰기판단단계(S110)는 쓰기동작인 것을 판단하고, 첫번째 쓰기동작(WR1)이 프로세서로부터 최초의 쓰기 명령어이면 쓰기버퍼(200)에는 어떠한 데이터도 저장되어 있지 않는다.
따라서 첫번째 쓰기동작(WR1)에서는 종래의 쓰기동작과 동일하게 제1캐시메모리 갱신단계(S170)를 수행하지 않고 첫번째 쓰기동작(WR1)의 현상태단계(NW1)에서 태그읽기단계(S180)와, 제2태그비교단계(S190)를 수행한다. 즉, 태그읽기단계(S180)는 메모리요청주소(MA)의 제1인덱스(I1)에 의해 선택된 캐시태그저장부(110)에 저장된 제1캐시태그데이터(CTAG1)를 읽고, 제2태그비교단계(S190)는 태그읽기단계(S180)에서 읽은 제1캐시태그데이터(CTAG1)와 메모리요청주소(MA)의 태그(T1)와 비교하여 제1캐시태그데이터(CTAG1)와 메모리요청주소(MA)의 태그(T1)가 동일하면 캐시히트신호(hit)를 출력하고, 제1캐시태그데이터(CTAG1)와 메모리요청주소(MA)의 태그(T1)가 동일하지 않으면 캐시미스신호(miss)를 출력한다.
제2태그비교단계(S190)에서 캐시히트신호(hit)이면 첫번째 쓰기동작(WR1)의 다음상태단계(NTW1)에서는 제1쓰기버퍼저장단계(S200)를 수행한다. 즉, 제1쓰기버퍼저장단계(S200)는 첫번째 메모리요청주소(MA)의 제1인덱스(I1)에 의해 선택된 캐시태그저장부(110)에 저장된 제1캐시태그데이터(CTAG1)와 메모리요청주소(MA)의 제1인덱스(I1)와 제1오프셋(O1)으로 구성된 제1캐시메모리주소(CA1)와 프로세서로부터 캐시메모리에 쓰기 요청한 쓰기데이터(WD)를 쓰기버퍼(200)에 저장하고, 캐시데이터 저장부(130)로 쓰기데이터(WD)를 저장하지 않는다. 따라서 첫번째 쓰기동작의 다음상태단계(NTW1)에서 수행되는 제1쓰기버퍼저장단계(S200)에 의해 도 8a에 도시된 바와 같이 쓰기버퍼(200)에는 제1캐시태그데이터(CTAG1)와 제1인덱스(I1)와 제1오프셋(O1)으로 구성된 제1캐시메모리주소(CA1)와 쓰기데이터(WD)가 저장된다.
프로세서가 첫번째 쓰기동작(WR1)의 수행을 요구한 후 첫번째 읽기동작(RD1)의 수행이 요청되면, 도 7에 도시된 바와 같이 첫번째 읽기동작(RD1)의 전상태단계(PW1)에서는 읽기쓰기판단단계(S110)와 주소비교단계(S120)를 수행하여 캐시메모리 읽기동작이 진행된다. 주소비교단계(S120)는 이전에 수행된 쓰기동작, 즉 첫번째 읽기동작(WR1)에 의해 쓰기버퍼(200)에 저장된 제1캐시메모리주소(CA1)와 첫번째 읽기동작(RD1)을 위한 프로세서로부터 요청한 메모리요청주소(MA)를 비교한다.
쓰기버퍼데이터 전송단계(S130)는 주소비교단계(S120)에서 제1캐시메모리주소(CA1)와 메모리요청주소(MA)가 동일하면 쓰기버퍼(200)에 저장된 쓰기데이터(WD)를 프로세서에 전송하여 읽기동작을 완료한다.
주소비교단계(S120)에서 제1캐시메모리주소(CA1)와 메모리요청주소(MA)가 동일하지 않으면 첫번째 읽기동작(RD1)의 현재상태단계(NR)에서는 캐시읽기단 계(S140)와 제1태그비교단계(S150)를 수행한다.
캐시읽기단계(S140)는 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 캐시태그저장부(110)에 저장된 캐시태그데이터(CTAG)를 읽고, 동시에 캐시메모리주소(CA)에 의해 선택된 캐시데이터 저장부(130)에 저장된 캐시데이터(CD)를 읽는다. 종래의 경우에는 첫번째 쓰기동작(WR1)의 다음상태단계(NTW1)에서는 캐시데이터 저장부(130)에 프로세서로부터 요청한 쓰기데이터를 써야하므로 그 다음에 수행되는 첫번째 읽기동작(RD1)은 첫번째 쓰기동작(WR1)의 다음상태단계(NTW1)에서 첫번째 읽기동작(RD1)의 현상태단계(NR)를 수행하지 못하고, 첫번째 쓰기동작(WR1)의 다음상태단계(NTW1)가 완료한 후 첫번째 읽기동작(RD1)의 현상태단계(NR)를 수행하여야 하므로 첫번째 쓰기동작 다음에 수행되는 첫번째 읽기동작은 한 개의 파이프라인 사이클을 대기한 후 그 다음의 파이프라인 사이클에서 읽기 동작이 수행되어야 한다. 그러나 본 발명의 경우 도 7에 도시된 바와 같이 첫번째 쓰기동작(WR1)의 다음상태단계(NTW1)에서 프로세서로부터 쓰기 요청한 쓰기데이터(WD)를 쓰기버퍼(200)에 저장하므로 첫번째 쓰기동작(WR1)의 다음상태단계(NTW1)와 동일한 파이프라인 사이클에서 첫번째 읽기동작(RD1)의 현재상태단계(NR)를 수행할 수 있으므로 파이프라인의 멈춤 없이 캐시메모리의 캐시데이터 저장부(130)로부터 캐시데이터(CD)의 읽기 동작을 수행할 수 있어 종래에 비해 파이프라인의 수행사이클이 감소되어 프로세서 및 캐시에서 소비되는 전력을 감소시킬 수 있다.
제1태그비교단계(S150)는 캐시읽기단계(S140)에서 읽은 캐시태그 저장부(110)에 저장된 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)와 비교하 여 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)가 동일하면 캐시히트신호(hit)를 출력하고, 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)가 동일하지 않으면 캐시미스신호(miss)를 출력한다.
캐시데이터전송단계(S160)는 첫번째 읽기동작(RD1)의 다음상태단계(NTR)에서 제1태그비교단계(S150)에서 캐시히트신호(hit)이면 캐시읽기단계(S140)에서 읽은 캐시데이터(CD)를 프로세서에 전송하여 읽기동작을 완료한다.
도 7에 도시된 바와 같이 프로세서로부터 첫번째 읽기동작(RD1) 후 두번째 쓰기동작(WR2)이 요청되면, 두번째 쓰기동작(WR2)의 전상태단계(PW2)에서는 읽기쓰기판단단계(S110)를 수행한다.
두번째 쓰기동작(WR2)의 현상태단계(NW2)에서는 제1캐시메모리 갱신단계(S170),태그읽기단계(S180) 및 제2태그비교단계(S190)를 수행한다. 제1캐시메모리 갱신단계(S170)는 이전에 수행된 쓰기동작, 즉 첫번째 쓰기동작(WR1)에 의해 쓰기버퍼(200)에 쓰기데이터(WD)가 저장되어 있으므로, 도 8a에 도시된 바와 같이 쓰기버퍼(200)에 저장된 제1캐시메모리주소(CA1)에 의해 선택된 캐시데이터 저장부(130)에 쓰기데이터(WD)를 저장한다. 이와 같이 제1캐시메모리 갱신단계(S170)에 의해 쓰기버퍼(200)에 이미 쓰기데이터(WD)가 저장되어 있으면 쓰기버퍼(200)에 기저장된 쓰기데이터(WD)를 제1캐시메모리주소(CA1)에 의해 선택된 캐시데이터 저장부(130)에 저장하여 쓰기버퍼(200)를 비워두어, 캐시히트(hit)가 발생하면 두번째 쓰기동작(WR2)의 다음상태단계(NTW2)에서 프로세서로부터 쓰기 요청한 쓰기데이터(WD)를 쓰기버퍼(200)에 저장할 수 있다. 태그읽기단계(S180)는 읽기쓰기판단단 계(S110)에서 쓰기동작이면 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 캐시태그저장부(110)에 저장된 캐시태그데이터(CTAG)를 읽고, 제2태그비교단계(S190)는 태그읽기단계(S180)에서 읽은 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)와 비교하여 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)가 동일하면 캐시히트신호(hit)를 출력하고, 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)가 동일하지 않으면 캐시미스신호(miss)를 출력한다.
두번째 쓰기동작(WR2)의 다음상태단계(NW2)에서는 제1쓰기버퍼저장단계(S200)를 수행하여 두번째 쓰기동작(WR2)의 수행을 완료한다. 즉, 제1쓰기버퍼저장단계(S200)는 제2태그비교단계(S190)에서 캐시히트신호(hit)이면 도 8b에 도시된 바와 같이 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 캐시태그저장부(110)에 저장된 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 인덱스(I)와 오프셋(O)으로 구성된 캐시메모리주소(CA)와 프로세서로부터 캐시메모리에 쓰기 요청한 쓰기데이터(WD)를 쓰기버퍼(200)에 저장한다.
도 4 및 도 6에 도시된 바와 같이 캐시미스수행단계(S300)는 제1태그비교단계(S150)와 제2태그비교단계(S190)에서 캐시미스신호(miss)이면 캐시미스동작을 수행한다. 캐시미스동작 수행되기 전인 이전에 수행된 쓰기동작, 예를 들어 첫번째 쓰기동작(WR1)에 의해 쓰기버퍼(200)에 쓰기데이터(WD)가 저장되어 있으면 제2캐시메모리 갱신단계(S310)에 의해 쓰기버퍼(200)에 저장된 제1캐시메모리주소(CA1)에 의해 선택된 캐시데이터 저장부(130)에 쓰기데이터(WD)를 저장한다.
상태정보읽기단계(S320)는 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 상태저장부(150)에 저장된 더티비트(D)를 읽고, 더티비트판단단계(S330)는 상태정보읽기단계(S320)에서 더티비트(D)의 활성화유무를 판단한다.
후기입 방식(write back)의 캐시메모리를 사용하는 경우 캐시데이터는 캐시메모리의 캐시데이터 저장부(130)에는 저장되어 가장 최근의 데이터를 저장하고 있으나 주메모리에는 이를 저장하지 않으므로 주메모리의 데이터를 주기적으로 갱신하여 캐시메모리와 주메모리 사이에 일관성이 유지되도록 해준다. 따라서 카피백단계(S340)는 더티비트판단단계(S330)에서 더티비트(D)가 활성화되어 있으면 캐시메모리주소(CA)에 의해 선택된 캐시데이터 저장부(130)에 저장된 캐시데이터(CD)를 캐시메모리주소(CA)에 의해 선택된 주메모리에 쓰도록 하여 주메모리의 데이터를 갱신해준다. 데이터대체단계(S350)는 더티비트판단단계(S330)에서 더티비트(D)가 비활성화되거나 카피백단계(S340) 완료 후 메모리요청주소(MA)에 의해 선택된 주메모리에 저장된 데이터를 상기 메모리요청주소(MA)에 의해 선택된 캐시데이터 저장부(130)에 저장하고, 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 캐시태그데이터 저장부(110)에 메모리요청주소(MA)의 태그(T)를 저장한다.
도 5에 도시된 바와 같이 본 발명의 다른 실시예의 캐시메모리 제어방법은 도 도 4의 캐시메모리 제어방법과 동일하나, 도 5의 본 발명의 다른 실시예의 캐시메모리 제어방법은 도 4의 제1쓰기버퍼저장단계(S200) 대신에 제2쓰기버퍼저장단계(S200a)와 캐시메모리쓰기단계(S200b)를 수행한다.
도 5 및 도 7에 도시된 바와 같이 두번째 쓰기동작(WR2)의 다음상태단계(NTW2)에서는 제2쓰기버퍼저장단계(S200a)와 캐시메모리쓰기단계(S200b)를 수행 하여 쓰기동작을 완료한다. 즉, 제2쓰기버퍼저장단계(S200a)는 제2태그비교단계(S190)에서 캐시히트신호(hit)이고, 다음 수행 동작이 읽기동작이면 두번째 쓰기동작(WR2)에 따라 쓰기버퍼(200)에 프로세서로부터 캐시메모리에 쓰기 요청한 쓰기데이터(WD)를 저장하고, 동시에 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 캐시태그저장부(110)에 저장된 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 인덱스(I)와 오프셋(O)으로 구성된 캐시메모리주소(CA)를 쓰기버퍼(200)에 저장하여 두번째 쓰기동작(WR2)을 완료한다. 그러나 제2태그비교단계(S190)에서 캐시히트신호(hit)이고, 다음 수행 동작이 쓰기동작일 때에는 프로세서로부터 요청한 쓰기데이터(WD)를 쓰기버퍼(200)에 저장할 필요가 없으므로 종래와 동일하게 캐시메모리쓰기단계(S200b)에 의해 캐시메모리주소(CA)에 의해 선택된 캐시데이터 저장부(130)에 프로세서로부터 쓰기 요청한 쓰기데이터(WD)를 쓴 후 두번째 쓰기동작(WR2)을 완료한다.
도 1은 일반적인 4개의 32비트 워드(word)로 구성된 캐시메모리를 가진 캐시 구조의 블럭도,
도 2a 및 도 2b는 종래의 캐시메모리 제어방법의 순서도,
도 3a 내지 도 3c는 종래의 캐시메모리 제어방법의 파이프라인 구조도이고,
도 4는 본 발명의 캐시메모리 제어방법의 순서도이고,
도 5는 본 발명의 다른 실시예인 캐시메모리 제어방법의 순서도이고,
도 6은 본 발명의 캐시미스수행단계의 순서도이고,
도 7은 본 발명의 캐시메모리 제어방법의 동작을 나타내는 파이프라인 구조도이고,
도 8a 및 도 8b는 쓰기동작에 따른 쓰기버퍼의 구성도이다.

Claims (4)

  1. 프로세서로부터 태그(Tag:T), 인덱스(Index:T) 및 오프셋(Offset:O)으로 구성된 메모리요청주소(MA)에 대해 읽기 또는 쓰기 명령어에 따라 캐시태그데이터(CTAG)가 저장된 캐시태그 저장부(110), 더티비트(D)가 저장된 캐시상태 저장부(150) 및 캐시데이터(CD)가 저장된 캐시데이터 저장부(130)로 구성된 캐시메모리를 제어하는 캐시메모리 제어방법에 있어서,
    상기 프로세서로부터 요청된 명령이 읽기동작인지 쓰기동작인지를 판단하는 읽기쓰기판단단계(S110);
    이전에 수행된 쓰기동작에 의해 선택된 제1캐시태그데이터(CTAG1), 제1인덱스(I1) 및 제1오프셋(O1)으로 구성된 제1캐시메모리주소(CA1)와 프로세서로부터 캐시메모리에 쓰기 요청한 쓰기데이터(WD)가 저장된 쓰기버퍼(200)의 제1캐시메모리주소(CA1)와 상기 메모리요청주소(MA)를 비교하는 주소비교단계(S120);
    상기 주소비교단계(S120)에서 상기 제1캐시메모리주소(CA1)와 메모리요청주소(MA)가 동일하면 상기 쓰기버퍼(200)에 저장된 쓰기데이터(WD)를 상기 프로세서에 전송하여 읽기동작을 완료하는 쓰기버퍼데이터 전송단계(S130);
    상기 주소비교단계(S120)에서 상기 제1캐시메모리주소(CA1)와 메모리요청주소(MA)가 동일하지 않으면 상기 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 캐시태그저장부(110)에 저장된 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 인덱스(I)와 오프셋(O)으로 구성된 캐시메모리주소(CA)에 의해 선택된 캐시데이터 저장 부(130)에 저장된 캐시데이터(CD)를 읽는 캐시읽기단계(S140);
    상기 캐시읽기단계(S140)에서 읽은 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)와 비교하여 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)가 동일하면 캐시히트신호(hit)를 출력하고, 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)가 동일하지 않으면 캐시미스신호(miss)를 출력하는 제1태그비교단계(S150);
    상기 제1태그비교단계(S150)에서 캐시히트신호(hit)이면 상기 캐시읽기단계(S140)에서 읽은 캐시데이터(CD)를 프로세서에 전송하여 읽기동작을 완료하는 캐시데이터전송단계(S160);
    상기 읽기쓰기판단단계(S110)에서 쓰기동작이고, 이전에 수행된 쓰기동작에 의해 상기 쓰기버퍼(200)에 쓰기데이터(WD)가 저장되어 있으면 상기 쓰기버퍼(200)에 저장된 제1캐시메모리주소(CA1)에 의해 선택된 캐시데이터 저장부(130)에 상기 쓰기데이터(WD)를 저장하는 제1캐시메모리 갱신단계(S170);
    상기 읽기쓰기판단단계(S110)에서 쓰기동작이면 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 캐시태그저장부(110)에 저장된 캐시태그데이터(CTAG)를 읽는 태그읽기단계(S180);
    상기 태그읽기단계(S180)에서 읽은 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)와 비교하여 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)가 동일하면 캐시히트신호(hit)를 출력하고, 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)가 동일하지 않으면 캐시미스신호(miss)를 출력하는 제2태 그비교단계(S190);
    상기 제2태그비교단계(S190)에서 캐시히트신호(hit)이면 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 캐시태그저장부(110)에 저장된 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 인덱스(I)와 오프셋(O)으로 구성된 캐시메모리주소(CA)와 프로세서로부터 캐시메모리에 쓰기 요청한 쓰기데이터(WD)를 상기 쓰기버퍼(200)에 저장하는 제1쓰기버퍼저장단계(S200); 및
    상기 제1태그비교단계(S150)와 제2태그비교단계(S190)에서 캐시미스신호(miss)이면 캐시미스동작을 수행하는 캐시미스수행단계(S300)를 구비한 것을 특징으로 하는 캐시메모리 제어방법.
  2. 제 1 항에 있어서, 상기 캐시미스수행단계(S300)는
    이전에 수행된 쓰기동작에 의해 상기 쓰기버퍼(200)에 쓰기데이터(WD)가 저장되어 있으면 상기 쓰기버퍼(200)에 저장된 제1캐시메모리주소(CA1)에 의해 선택된 캐시데이터 저장부(130)에 상기 쓰기데이터(WD)를 저장하는 제2캐시메모리 갱신단계(S310);
    상기 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 상태저장부(150)에 저장된 더티비트(D)를 읽는 상태정보읽기단계(S320);
    상기 상태정보읽기단계(S320)에서 더티비트(D)의 활성화유무를 판단하는 더티비트판단단계(S330);
    상기 더티비트판단단계(S330)에서 더티비트(D)가 활성화되어 있으면 상기 캐시메모리주소(CA)에 의해 선택된 상기 캐시데이터 저장부(130)에 저장된 캐시데이터(CD)를 상기 캐시메모리주소(CA)에 의해 선택된 주메모리에 쓰는 카피백단계(S340); 및
    상기 더티비트판단단계(S330)에서 더티비트(D)가 비활성화되거나 상기 카피백단계(S340) 완료 후 상기 메모리요청주소(MA)에 의해 선택된 주메모리에 저장된 데이터를 상기 메모리요청주소(MA)에 의해 선택된 캐시데이터 저장부(130)에 저장하고, 상기 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 캐시태그데이터 저장부(110)에 상기 메모리요청주소(MA)의 태그(T)를 저장하는 데이터대체단계(S350)를 구비한 것을 특징으로 하는 캐시메모리 제어방법.
  3. 프로세서로부터 태그(Tag:T), 인덱스(Index:T) 및 오프셋(Offset:O)으로 구성된 메모리요청주소(MA)에 대해 읽기 또는 쓰기 명령어에 따라 캐시태그데이터(CTAG)가 저장된 캐시태그 저장부(110), 더티비트(D)가 저장된 캐시상태 저장부(150) 및 캐시데이터(CD)가 저장된 캐시데이터 저장부(130)로 구성된 캐시메모리를 제어하는 캐시메모리 제어방법에 있어서,
    상기 프로세서로부터 요청된 명령이 읽기동작인지 쓰기동작인지를 판단하는 읽기쓰기판단단계(S110);
    이전에 수행된 쓰기동작에 의해 선택된 제1캐시태그데이터(CTAG1), 제1인덱 스(I1) 및 제1오프셋(O1)으로 구성된 제1캐시메모리주소(CA1)와 프로세서로부터 캐시메모리에 쓰기 요청한 쓰기데이터(WD)가 저장된 쓰기버퍼(200)의 제1캐시메모리주소(CA1)와 상기 메모리요청주소(MA)를 비교하는 주소비교단계(S120);
    상기 주소비교단계(S120)에서 상기 제1캐시메모리주소(CA1)와 메모리요청주소(MA)가 동일하면 상기 쓰기버퍼(200)에 저장된 쓰기데이터(WD)를 상기 프로세서에 전송하여 읽기동작을 완료하는 쓰기버퍼데이터 전송단계(S130);
    상기 주소비교단계(S120)에서 상기 제1캐시메모리주소(CA1)와 메모리요청주소(MA)가 동일하지 않으면 상기 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 캐시태그저장부(110)에 저장된 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 인덱스(I)와 오프셋(O)으로 구성된 캐시메모리주소(CA)에 의해 선택된 캐시데이터 저장부(130)에 저장된 캐시데이터(CD)를 읽는 캐시읽기단계(S140);
    상기 캐시읽기단계(S140)에서 읽은 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)와 비교하여 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)가 동일하면 캐시히트신호(hit)를 출력하고, 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)가 동일하지 않으면 캐시미스신호(miss)를 출력하는 제1태그비교단계(S150);
    상기 제1태그비교단계(S150)에서 캐시히트신호(hit)이면 상기 캐시읽기단계(S140)에서 읽은 캐시데이터(CD)를 프로세서에 전송하여 읽기동작을 완료하는 캐시데이터전송단계(S160);
    상기 읽기쓰기판단단계(S110)에서 쓰기동작이고, 이전에 수행된 쓰기동작에 의해 상기 쓰기버퍼(200)에 쓰기데이터(WD)가 저장되어 있으면 상기 쓰기버퍼(200)에 저장된 제1캐시메모리주소(CA1)에 의해 선택된 캐시데이터 저장부(130)에 상기 쓰기데이터(WD)를 저장하는 제1캐시메모리 갱신단계(S170);
    상기 읽기쓰기판단단계(S110)에서 쓰기동작이면 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 캐시태그저장부(110)에 저장된 캐시태그데이터(CTAG)를 읽는 태그읽기단계(S180);
    상기 태그읽기단계(S180)에서 읽은 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)와 비교하여 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)가 동일하면 캐시히트신호(hit)를 출력하고, 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 태그(T)가 동일하지 않으면 캐시미스신호(miss)를 출력하는 제2태그비교단계(S190);
    상기 제2태그비교단계(S190)에서 캐시히트신호(hit)이고, 다음 수행 동작이 읽기동작이면 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 캐시태그저장부(110)에 저장된 캐시태그데이터(CTAG)와 메모리요청주소(MA)의 인덱스(I)와 오프셋(O)으로 구성된 캐시메모리주소(CA)와 프로세서로부터 캐시메모리에 쓰기 요청한 쓰기데이터(WD)를 상기 쓰기버퍼(200)에 저장하는 제2쓰기버퍼저장단계(S200a);
    상기 제2태그비교단계(S190)에서 캐시히트신호(hit)이고, 다음 수행 동작이 쓰기동작이면 상기 캐시메모리주소(CA)에 의해 선택된 캐시데이터 저장부(130)에 프로세서로부터 쓰기 요청한 쓰기데이터(WD)를 쓰고, 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 상태저장부(150)의 더티비트(D)를 갱신하는 캐시메모리쓰기단 계(S200b); 및
    상기 제1태그비교단계(S150)와 제2태그비교단계(S190)에서 캐시미스신호(miss)이면 캐시미스동작을 수행하는 캐시미스수행단계(S300)를 구비한 것을 특징으로 하는 캐시메모리 제어방법.
  4. 제 3 항에 있어서, 상기 캐시미스수행단계(S300)는
    이전에 수행된 쓰기동작에 의해 상기 쓰기버퍼(200)에 쓰기데이터(WD)가 저장되어 있으면 상기 쓰기버퍼(200)에 저장된 제1캐시메모리주소(CA1)에 의해 선택된 캐시데이터 저장부(130)에 상기 쓰기데이터(WD)를 저장하는 제2캐시메모리 갱신단계(S310);
    상기 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 상태저장부(150)에 저장된 더티비트(D)를 읽는 상태정보읽기단계(S320);
    상기 상태정보읽기단계(S320)에서 더티비트(D)의 활성화유무를 판단하는 더티비트판단단계(S330);
    상기 더티비트판단단계(S330)에서 더티비트(D)가 활성화되어 있으면 상기 캐시메모리주소(CA)에 의해 선택된 상기 캐시데이터 저장부(130)에 저장된 캐시데이터(CD)를 상기 캐시메모리주소(CA)에 의해 선택된 주메모리에 쓰는 카피백단계(S340); 및
    상기 더티비트판단단계(S330)에서 더티비트(D)가 비활성화되거나 상기 카피백단계(S340) 완료 후 상기 메모리요청주소(MA)에 의해 선택된 주메모리에 저장된 데이터를 상기 메모리요청주소(MA)에 의해 선택된 캐시데이터 저장부(130)에 저장하고, 상기 메모리요청주소(MA)의 인덱스(I)에 의해 선택된 캐시태그데이터 저장부(110)에 상기 메모리요청주소(MA)의 태그(T)를 저장하는 데이터대체단계(S350)를 구비한 것을 특징으로 하는 캐시메모리 제어방법.
KR1020080122277A 2008-12-04 2008-12-04 캐시메모리 제어방법 KR100985517B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080122277A KR100985517B1 (ko) 2008-12-04 2008-12-04 캐시메모리 제어방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080122277A KR100985517B1 (ko) 2008-12-04 2008-12-04 캐시메모리 제어방법

Publications (2)

Publication Number Publication Date
KR20100063910A KR20100063910A (ko) 2010-06-14
KR100985517B1 true KR100985517B1 (ko) 2010-10-05

Family

ID=42363670

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080122277A KR100985517B1 (ko) 2008-12-04 2008-12-04 캐시메모리 제어방법

Country Status (1)

Country Link
KR (1) KR100985517B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100190379B1 (ko) 1996-11-06 1999-06-01 김영환 쓰기 사이클의 성능 향상을 위한 프로세서
KR20040047398A (ko) * 2002-11-30 2004-06-05 엘지전자 주식회사 캐쉬 메모리를 이용한 데이터 억세스 방법
KR100617663B1 (ko) 2001-09-14 2006-08-28 썬 마이크로시스템즈, 인코포레이티드 캐시 메모리 내 태그 액세스 및 데이터 액세스의 분리방법 및 장치
KR20070093452A (ko) * 2005-04-08 2007-09-18 마쯔시다덴기산교 가부시키가이샤 캐시 메모리 시스템 및 그 제어 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100190379B1 (ko) 1996-11-06 1999-06-01 김영환 쓰기 사이클의 성능 향상을 위한 프로세서
KR100617663B1 (ko) 2001-09-14 2006-08-28 썬 마이크로시스템즈, 인코포레이티드 캐시 메모리 내 태그 액세스 및 데이터 액세스의 분리방법 및 장치
KR20040047398A (ko) * 2002-11-30 2004-06-05 엘지전자 주식회사 캐쉬 메모리를 이용한 데이터 억세스 방법
KR20070093452A (ko) * 2005-04-08 2007-09-18 마쯔시다덴기산교 가부시키가이샤 캐시 메모리 시스템 및 그 제어 방법

Also Published As

Publication number Publication date
KR20100063910A (ko) 2010-06-14

Similar Documents

Publication Publication Date Title
TWI408550B (zh) 對資料處理設備中共用記憶體之寫入存取請求之處理
US10445211B2 (en) Logging trace data for program code execution at an instruction level
US10719448B2 (en) Cache devices with configurable access policies and control methods thereof
US8327075B2 (en) Methods and apparatus for handling a cache miss
US20200026639A1 (en) Logging trace data for program code execution at an instruction level
KR20200085522A (ko) 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법
US8352646B2 (en) Direct access to cache memory
CN103076992A (zh) 一种内存数据缓冲方法及装置
KR101298171B1 (ko) 메모리 시스템 및 그 관리 방법
US20080301372A1 (en) Memory access control apparatus and memory access control method
US20170116126A1 (en) Coherence de-coupling buffer
JP5319049B2 (ja) キャッシュシステム
KR20080014402A (ko) 컴퓨터 그래픽스 데이터 처리방법과 데이터 처리장치
US10606517B2 (en) Management device and information processing device
CN101930344B (zh) 确定链接数据储存器中存储和重写的项目的数据存储协议
US7779205B2 (en) Coherent caching of local memory data
US8473685B2 (en) Cache memory device, processor, and control method for cache memory device to reduce power unnecessarily consumed by cache memory
JPWO2007105256A1 (ja) マルチプロセッサシステム、プロセッサ、およびキャッシュ制御方法
KR100985517B1 (ko) 캐시메모리 제어방법
US20080301324A1 (en) Processor device and instruction processing method
JP2010128698A (ja) マルチプロセッサシステム
US10915404B2 (en) Persistent memory cleaning
EP2979192B1 (en) Implementing coherency with reflective memory
CN111026681A (zh) 一种基于Ceph的缓存方法、系统及存储介质
US7519778B2 (en) System and method for cache coherence

Legal Events

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

Payment date: 20130927

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140922

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150924

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160927

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee