KR100204741B1 - 제1및 제2캐시 메모리 사용방법 - Google Patents

제1및 제2캐시 메모리 사용방법 Download PDF

Info

Publication number
KR100204741B1
KR100204741B1 KR1019900010065A KR900010065A KR100204741B1 KR 100204741 B1 KR100204741 B1 KR 100204741B1 KR 1019900010065 A KR1019900010065 A KR 1019900010065A KR 900010065 A KR900010065 A KR 900010065A KR 100204741 B1 KR100204741 B1 KR 100204741B1
Authority
KR
South Korea
Prior art keywords
cache memory
memory
instruction
data
cache
Prior art date
Application number
KR1019900010065A
Other languages
English (en)
Other versions
KR910003496A (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 디. 크레이그 노룬드
Publication of KR910003496A publication Critical patent/KR910003496A/ko
Application granted granted Critical
Publication of KR100204741B1 publication Critical patent/KR100204741B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels

Abstract

내용없음.

Description

제1 및 제2캐시 메모리 사용 방법
제1도는 중앙 처리 장치와 메인 메모리 사이에 두개의 캐시 메모리를 직렬로 연결한 종래 기술의 컴퓨팅 시스템을 도시한 도면,
제2도는 본 발명의 바람직한 실시예에 따른, 중앙 처리 장치, 코프로세서, 및 메인 메모리 사이에 접속된 메인 캐시 메모리 및 룩 어사이드 캐시 메모리를 도시한 도면,
제3도는 본 발명의 바람직한 실시예에 따른 어드레스 구성을 도시한 도면,
제4도는 본 발명의 바람직한 실시예에 따라 제3도에 도시된 룩 어사이드 캐시 메모리 시스템내의 무효 데이타를 나타내는데 이용되는 저장 장치를 도시한 도면.
* 도면의 주요부분에 대한 부호의 설명
1, 101 : CPU 2, 3, 102, 103 : 캐시 메모리
4, 104 : 메인 메모리 107 : 멀티플렉서
125, 135 : 어드레스 구조
본 발명은 표준 캐시 메모리와 함께, 소형의 신속한 룩 어사이드(look-aside) 캐시 메모리를 이용하는 컴퓨터 시스템에 관한 것이다.
대부분의 최신 컴퓨터 시스템은 중앙 처리 장치(CPU)와 메인 메모리를 포함한다. CPU가 인스트럭션 및 오프랜드를 디코딩하여 실행할 수 있는 속도는, 인스트럭션 및 오퍼랜드를 메인 메모리로부터 CPU로 전송하는 속도에 좌우된다. CPU가 메인 메모리로부터 인스트럭션 및 오퍼랜드를 전달받는데 소요되는 시간을 감소시키기 위해, 많은 컴퓨터 시스템은 CPU와 메인 메모리 사이에 캐시 메모리를 구비하고 있다.
캐시 메모리는 소형의 고속 버퍼 메모리로서, 장차 CPU에 의해 사용될 것으로 생각되는 메인 메모리의 내용중 일부를 일시적으로 저장하는데 사용된다. 캐시 메모리를 사용하는 주 목적은 데이타 또는 인스트럭션을 페치하기 위해 메모리에 액세스하는데 소요되는 시간을 단축시키는데 있다. 캐시 메모리에 있는 정보는 메인 메모리에 있는 정보보다 훨씬 짧은 시간 내에 액세스될 수 있다. 따라서, 캐시 메모리를 구비한 CPU에서는 인스트럭션 및 오퍼랜드를 페치하여 저장하는데 필요한 대기 시간이 훨씬 짧아진다.
캐시 메모리는 하나 이상의 데이타 워드로 된 다수의 블럭으로 이루어진다. 각각의 블럭은 어드레스 태그(address tag)를 가지며, 이 태크는 메인 메모리의 어느 블럭에 해당하는 사본(copy)인지를 고유하게 식별한다. 프로세서는 메모리를 참조할 때마다, 어드레스 태크를 비교하여 요구된 데이타의 사본이 캐시 메모리에 존재하는지를 확인한다. 원하는 메모리 블럭이 캐시 메모리에 없는 경우, 그 블럭은 메인 메모리에서 검색된 후, 캐시 메모리에 저장되어, 프로세서에 제공된다.
메인 메모리로부터의 데이타를 검색하기 위해 캐시 메모리를 이용하는 것 이외에도, CPU는 데이타를 메인 메모리에 직접 기입하는 대신에 캐시 메모리에 데이타를 기입할 수도 있다. 프로세서가 메모리에 데이타를 기입하고자 할 때, 데이타가 기록될 데이타 블럭이 캐시 메모리 내에 존재하는지를 알아보기 위하여 캐시 메모리는 어드레스 태그를 비교한다. 이 데이타 블럭이 캐시 메모리에 존재하는 경우, 캐시 메모리 내의 해당 데이타 블럭에 데이타가 기입된다. 그 후 대부분의 시스템에서는, 이 데이타 블럭에 대한 데이타 더티 비트(dirty bit)가 세트된다. 더티 비트란 데이타 블럭 내의 데이타가 변경되었음을 나타내며, 따라서 이 데이타 블럭을 캐시 메모리로부터 삭제하기 전에 상기 변경된 데이타는 메인 메모리에 기입되어야 한다. 데이타가 기록될 데이타 블럭이 캐시 메모리에 존재하지 않는 경우, 그 데이타 블럭을 캐시 메모리로 페치하거나, 그 데이타를 메인 메모리에 직접 기입하여야 한다. 새로운 데이타를 캐시 메모리에 기입할 때, 중복 기입되거나 또는 캐시 메모리로부터 카피되는 데이타 블럭을 희생(victim) 블럭 또는 희생 라인이라고 부른다.
소정의 애플리케이션에서는, 제1캐시 메모리와 메인 메모리 사이에 제2캐시 메모리가 직렬로 추가된다. 일반적으로, 제1캐시 메모리는 제2캐시 메모리 내의 데이타의 부분 집합(subset)을 갖는다. 마찬가지로, 제2캐시 메모리는 메인 메모리 내의 데이타의 부분 집합을 갖는다. 액세스되는 데이타는, 우선 제1캐시 메모리에서 검색된다. 제1캐시 메모리에 데이타가 없는(miss) 경우에는, 제2캐시 메모리에서 검색된다. 제2캐시 메모리에도 없는 경우에는 이 데이타는 메인 메모리로부터 페치된다.
본 발명의 바람직한 실시예에 따르면, 다음과 같은 컴퓨팅 시스템이 제공된다. 본 발명의 컴퓨팅 시스템은 하나의 프로세서와, 이 프로세서에 의해 사용될 데이타를 포함하는 하나의 시스템 메모리와, 두개의 캐시 메모리를 포함한다. 각 캐시 메모리는 직렬 접속되어 있는 것이 아니라, 각각 프로세서에 직접 접속되어 있다. 제1캐시 메모리는 프로세서에 접속되며, 제2캐시 메모리는 프로세서 및 시스템 메모리에 접속된다. 제2캐시 메모리는 시스템 메모리 내의 데이타의 부분 집합을 포함한다. 제1캐시 메모리는 제2캐시 메모리 내의 데이타의 부분 집합을 포함한다. 제1캐시 메모리의 데이타는 어떠한 경우에도 시스템 메모리에 기입되지(down load) 않는다. 시스템 메모리의 데이타 완전성(data integrity)은 제2캐시 메모리만을 사용하여 유지된다. 통상, 프로세서가 데이타를 기입할 때, 프로세서는 제1캐시 메모리 및 제2캐시 메모리 양쪽 모두에 데이타를 기입한다. 프로세서가 데이타를 판독할 때에는, 프로세서는 우선 제1캐시 메모리로부터 데이타를 판독하려고 한다. 제1캐시 메모리에 데이타가 없으면, 프로세서는 제2캐시 메모리로부터 데이타를 판독하려고 한다. 제2캐시 메모리에도 데이타가 없으면, 데이타를 시스템 메모리로부터 검색하여 제2캐시 메모리에 기입한다. 그 후, 프로세서는 제2캐시 메모리로부터 데이타를 판독한다. 일반적으로, 프로세서가 제2캐시 메모리로부터 데이타를 판독할 때, 이 판독된 데이타는 제1캐시 메모리에 기입된다.
데이타가 파이프라인(pipeline)화된 스테이지로 실행될 때, 두개의 개별적인 인스트럭션에 대한 서로 다른 파이프라인 스테이지들이 모두 제1캐시 메모리에 대한 액세스를 요구하는 경우 충돌이 발생할 수도 있다. 예를 들면, 제1인스트럭션을 실행하는 동안, 제1인스트럭션을 실행하는데 필요한 데이타를 제1캐시 메모리에서 얻을 수 없는 경우가 있을 수 있다. 제1캐시 메모리에서 이러한 미스가 발생하면, 제1인스트럭션의 실행에 필요한 데이타를 제2캐시 메모리로부터 획득하여 이를 제1캐시 메모리에 기입한다. 그러나, 만약 제2인스트럭션에 필요한 데이타를 제1캐시 메모리 데이타로부터 액세스하고자 하고 이와 동시에 제1인스트럭션의 실행에 필요한 데이타를 제2캐시 메모리로부터 제1캐시 메모리로 기입할 경우, 충돌이 발생할 것이다. 제1캐시 메모리가 자유롭게 될 때까지, 제2인스트럭션의 실행을 지연시키는 대신에 강제로 캐시 미스를 발생시킬 수도 있다. 즉, 제2인스트럭션의 실행에 필요한 데이타가 제1캐시 메모리에 없는 것처럼 처리하여, 제2인스트럭션을 실행하는데 필요한 데이타를 위해 제2캐시 메모리가 액세스되게 한다.
종래의 대부분의 직렬 캐시 구성으로는, 상술한 바와 같은 강제 캐시 미스를 발생시킬 수 없다. 그 이유는 통상적인 직렬 캐시 구성에서는, 프로세서에 가장 가까이 있는 데이타 캐시에 가장 최근에 갱신된 데이타가 입력되어 있기 때문이다. 다른 데이타 캐시는 오래된 데이타를 포함하고 있다. 따라서, 데이타가 프로세서에 가장 가까운 데이타 캐시내에 존재할 경우, 이 데이타 캐시에 강제적으로 캐시 미스를 발생시키면, 나중에 오래된 데이타가 사용되게 된다는 문제점이 있다. 본 발명에 따르면, 제1캐시 메모리가 제2캐시 메모리에 따른 스토어 스루(store through) 캐시 메모리이며, 제2캐시 메모리는 오래된 데이타를 포함하고 있지 않기 때문에 이러한 문제를 방지할 수 있게 된다.
이하, 첨부된 도면을 참조하여 본 발명에 대해 더욱 상세히 설명한다.
제1도는 종래 기술에 따른 다중 캐시 메모리 시스템을 도시한 도면이다. 중앙 처리 장치(CPU)(1)와 메인 메모리(4) 사이에 캐시 메모리(2) 및 캐시 메모리(3)가 직렬로 접속되어 있다. CPU(1)는, 데이타를 메모리로부터 판독하거나 메모리에 기입할 때, 우선 캐시 메모리(2)를 체크하여 판독되거나 변경될 데이타가 캐시 메모리(2)에 존재하는지 여부를 확인한다. 캐시 메모리(2)에 데이타가 존재하는 경우, 데이타의 처리(transaction)가 행해진다. 캐시 메모리(2)에 데이타가 존재하지 않는 경우는, 레벨 1캐시 메모리 미스로 되며, 판독되거나 변경될 데이타가 존재하는지를 확인하기 위해 캐시 메모리(3)가 체크된다. 캐시 메모리(3)에 데이타가 존재하는 경우, 그 데이타는 캐시 메모리(2)로 로드되고, 데이타 처리가 수행된다. 캐시 메모리(3)에 데이타가 존재하지 않는 경우, 레벨 2캐시 메모리 미스로 되며, 그 데이타는 메인 메모리(4)에서 검색되고, 캐시 메모리(3) 및 캐시 메모리(2)로 로드되어 데이타 처리가 수행된다.
제2도는 본 발명의 바람직한 실시예에 따른 다중 캐시 메모리 시스템을 도시한 도면이다. 메모리로부터 데이타를 판독할 때, 중앙 처리 장치(CPU)(101)는 데이타의 어드레스(120)를 병렬로 연결된 캐시 메모리(102) 및 캐시 메모리(103)에 전달한다. 예를 들면, 캐시 메모리(102)는 32비트 워드의 2K 블럭을 포함하며, 캐시 메모리(103)는 16개의 32비트 워드의 4K블럭을 포함한다.
제3도는 캐시 메모리(102) 또는 캐시 메모리(103)를 액세스할 때의 어드레스(120) 구성의 예를 나타낸 도면이다. 캐시 메모리(103)를 액세스할 때는 어드레스 구성(125)을 사용한다. 어드레스는, 예를 들면 32비트이다. 비트 0은 최상위 비트이며 비트 31은 최하위 비트이다. 어드레스 구성(125)에서는, 비트 0-13을 어드레스 태그(121)로 사용하고, 비트 14-25를 캐시 메모리 인덱스(122)로 사용하며, 비트 26-29를 라인 인덱스(123)로 사용하고, 비트 30-31을 바이트 오프 세트(124)로 사용한다. 라인 인덱스(123)는 라인 내의 하나의 워드를 나타낸다.
어드레스 구성(135)은 캐시 메모리(102)를 액세스할 때 사용된다. 어드레스 구성(135)에서는, 비트 0-18을 어드레스 태그(131)로 사용하고, 비트 19-29를 캐시 메모리 인덱스(132)로 사용하며, 비트 30-31을 바이트 오프세트(134)로 사용한다.
캐시 메모리(102)에 원하는 데이타가 존재하면, 그 데이타는 CPU(101)로 전송된다. 원하는 데이타가 캐시 메모리(102)에는 없고, 캐시 메모리(103)에 존재하는 경우, 캐시 메모리(103)는 그 데이타를 CPU(101)로 전송하고 또한 멀티플렉서(107)를 통해 캐시 메모리(102)로도 전송한다. 데이타를 변경한 경우에도, 캐시 메모리(102)의 희생 라인이 중복 기재될 수 있다. 원하는 데이타가 캐시 메모리(103)에 존재하지 않으면, 메인 메모리(104)로부터 데이타가 페치되어 캐시 메모리(103)에 기입된다. 희생 라인에 대한 더티 비트가 세트되어 있으면, 이 희생 라인은 메인 메모리에 기입된다. 세트되어 있지 않으면, 캐시 메모리(103)의 희생 라인은 중복 기재된다. 그 후, 캐시 메모리(103)는 메인 메모리(104)로부터 검색된 데이타를 CPU(101)로 전송하고, 멀티플렉서(107)를 통해 캐시 메모리(102)로도 전송한다.
메모리에 데이타를 기입할 때, CPU(101)는 어드레스(120)를 캐시 메모리(102) 및 캐시 메모리(103)에 전송한다. 이 데이타는 어드레스(120)에 의해 지정되는 인덱스의 위치에 있는 캐시 메모리(102)에 기입된다. 캐시 메모리(103)는, 변경될 데이타가 캐시 메모리(103)에 존재하는지 여부를 확인하기 위해 체크된다. 존재하면, 그 데이타는 어드레스(120)의 인덱스에 의해 지정된 위치에 있는 캐시 메모리(103) 내에 기입된다. 변경된 데이타가 캐시 메모리(103)에 존재하지 않으면, 변경될 데이타가 메인 메모리(104)로부터 페치되어 캐시 메모리(103)에 기입된다. 캐시 메모리(103) 내의 희생 라인이 더티가 아닌 경우, 그 희생 라인은 중복 기재된다. 희생 라인이 더티인 경우, 메인 메모리(104)로부터의 데이타가 캐시 메모리(103)에 기입되기 전에, 그 희생 라인이 메인 메모리(104)에 기입된다.
CPU(101)는 두개의 캐시 메모리(102, 103)를 이용하지만, 코프로세서(105)는 오직 하나의 캐시 메모리(103)만을 이용한다. 코프로세서(105)가 데이타를 판독하고자 할 때, 이 데이타는 캐시 메모리(103)로부터 판독된다. 캐시 메모리(103)에 미스가 발생하면, 메인 메모리(104)로부터 데이가 페치된다. 이 새로운 데이타는 캐시 메모리(103)에 기입된다.
소정의 기능 유닛만이 캐시 메모리(102)를 사용하게 함으로써 캐시 메모리(103)의 속도를 보다 빠르게 할 수 있다. 예를 들면, 코프로세서(105)는 부동 소수점 계산을 수행할 수도 있다. 따라서, (범용 레지스터 파일로 혹은 범용 레지스터 파일로부터) 정수를 로드 및 저장할 때에는 두개의 캐시 메모리(102) 및 캐시 메모리(103) 둘 모두를 이용한다. 그러나, 부동 소수점 수의 로드 및 저장은 캐시 메모리(103)만을 사용하여 행해진다.
예를 들어, 데이타 블럭을 메인 메모리(104)로부터 캐시 메모리(103)에 전송하거나, 32비트 워드를 코프로세서(105)로부터 캐시 메모리(103)로 기입함으로써, 데이타가 캐시 메모리(102)가 아닌 캐시 메모리(103)에 기입될 경우, 캐시 메모리(102) 내의 오래된 데이타는 무효화되어야 한다. 메인 메모리(104)로부터 캐시 메모리(103)로 데이타 블럭을 전송하는 경우, 캐시 메모리(102)내의 전체 데이타 영역을 무효로 할 필요가 있다. 본 발명의 바람직한 실시예에서는, 실제로 어떤 데이타 블럭이 캐시 메모리(102) 내에 존재하는지를 체크하는데 소모하는 시간을 없애기 위하여, 메인 메모리(104)로부터 캐시 메모리(103)로 전송될 데이타를 포함할 수 있는 캐시 메모리(102) 내의 모든 데이타 위치를 무효화시킨다. 따라서, 캐시 메모리(102)내의 무효화될 영역의 크기는 메인 메모리(104)로부터 캐시 메모리(103)로 전송되는 블럭의 크기와 동일하다. 코프로세서(105)로부터 캐시 메모리(103)로 32비트 워드를 기입하는 경우, 캐시 메모리(102) 내의 하나의 데이타 워드를 무효화할 필요가 있다.
캐시 메모리(102)내에서 1개의 32비트 워드 또는 8개의 32비트 워드 블럭중 어느 하나를 신속히 무효화시킬 수 있도록 하기 위해, 제4도에 도시한 특수 메모리(140)를 사용한다. 메모리(140)는 캐시 메모리(102)의 각 32비트 워드의 영역마다 1개의 무료 비트를 포함한다. 캐시 메모리(120) 내 데이타의 각 32비트 워드를 무효화시키기 위하여, 한번에 1비트의 데이타를 메모리(140)에 기입할 수 있고, 혹은 캐시 메모리(102) 내의 8개의 32비트 워드의 블럭을 무효화시키기 위하여, 한번에 8비트의 데이타를 메모리(140)에 기입할 수도 있다.
메모리(140)는 8비트의 데이타를 수신하기 위한 라인(147)과, 메모리(140) 내의 데이타를 기입하기 위한 라인(141)을 포함한다. 메모리(140) 내의 데이타는 어드레스 라인(142) 및 어드레스 라인(143)을 이용하여 어드레스 지정된다. 8비트, 즉 1바이트의 데이타를 어드레스할 때는 어드레스 라인(142)만을 사용한다. 데이타의 각 비트를 어드레스할 때는 어드레스 라인(142) 및 어드레스 라인(143)을 사용한다. 라인(145)상으로는 기입 인에이블 신호가 입력된다. 라인(146)상으로는 1비트의 데이타와 8비트의 데이타 중 어느 것이 메모리(140)에 기입되는지를 나타내는 신호가 입력된다.
전술한 바와 같이, CPU(101)는 캐시 메모리(102) 및 캐시 메모리(103)를 동시에 액세스한다. 실행 효율을 더욱 증가시키기 위해, CPU(101)는, 요구된 데이타가 캐시 메모리(102)에 없어서 아직 완료되지 못한 로드 동작 이후에 있는 인스트럭션을 계속해서 실행할 수 있다. 이 동작은, CPU(101)가, 로드 동작이 완료되기 전에 이 로드의 결과를 요구하는 인스트럭션을 받지 않는 한 수행될 수 있다.
이하의 테이블에 나타낸 바와 같은 여러 방법으로 인스트럭션을 실행할 수 있다. 표 1에는, CPU(1)의 동작을 나타내고 있다. 이 표에는, CPU(1)가 인스트럭션을 파이프라인(pipeline)식으로 실행하는 것을 나타낸다. 각 인스트럭션은 3단계(stage)로 실행된다. 제1단계는 페치 단계이다. 페치 단계에서는, CPU(1)가 인스트럭션을 페치한다. 제2단계는 ALU단계이다. ALU단계에서는, 인스트럭션이 디코딩되어 산술 연산(어드레스 계산을 포함)이 수행된다. 제3단계는 메모리 단계이다. 메모리 단계에서는, 데이타를 메모리에 기입하거나 또는 메모리로부터 데이타를 판독한다. 표 1은 5개의 실행 사이클을 나타내는데, 여기서 1개의 로드 인스트럭션 및 3개의 연산 인스트럭션(0p1∼0p3)이 개시된다. 사이클 2에서, 로드 A 인스트럭션 미스가 발생된다(즉, CPU(1)가 캐시 메모리(2)내에서 원하는 데이타를 찾지 못하였다). 따라서, 캐시 메모리(2)에서 캐시 메모리 미스가 발생하였다. 사이클 3 및 사이클 4에서는, 원하는 데이타가 캐시 메모리(3)로부터 검색되고, 캐시 메모리(2)로 로드되어 CPU(1)에서 이용할 수 있게 된다. 사이클 5에서 통상적인 동작이 재개된다.
Figure kpo00002
전술한 바와 같이, 사이클 2에서, 캐시 메모리(2)에 캐시 메모리 미스가 발생하였기 때문에, 데이타가 캐시 메모리(3)로부터 검색될 때까지는 더 이상의 처리가 정지된다. 그러나, 데이타 A를 당장 필요로 하지 않는다면, CPU(1)는 아직 완료되지 않은 로드 동작 이후에 있는 인스트럭션을 계속하여 실행할 수 있다. 표 2에는, 이를 설명하기 위하여, 두개의 캐시 메모리 액세스 단계(캐시 단계 I 및 캐시 단계 II)가 추가되어 있다. 캐시 메모리 액세스 단계는, 캐시 메모리(2)에서 미스가 발생한 경우, 캐시 메모리(3)로부터 데이타를 검색하는데 필요한 사이클을 나타낸다. 캐시 단계 I 및 II는 의사(pseudo) 단계로서, 캐시 메모리(2)에서 미스가 발생한 경우에만 인스트럭션에 의해 이용된다.
그러나, 캐시 메모리(3)로부터 페치되는 데이타를 즉시 필요로 할 경우에는, 캐시 메모리(2)에서 미스가 발생하였던 인스트럭션 이후에 있는 인스트럭션을 계속해서 실행할 수 없다. 예를 들면, 표 2의 사이클 4에서는, 로드 B가 시작된다. 사이클 6에서, 데이타 B가 캐시 메모리(2)에 경우에 캐시 메모리 미스가 발생된다. 사이클 7 및 사이클 8에서, 캐시 메모리(3)로부터 데이타를 획득한다. 그러나, 로드 B 다음에 계속되는 인스트럭션은, 로드 B에 의해 얻어진 데이타 B를 사용하는 인스트럭션인 사용(Use) B이다. 따라서 더 이상의 인스트럭션 실행은, 사이클 7 및 사이클 8 동안 유휴 상태로 대기하여야 하며, 그 동안에 데이타 B가 캐시 메모리(3)로부터 검색된다. 사이클 9에서는 정상 동작이 재개된다.
Figure kpo00003
표 3에서는 CPU(101)의 동작을 나타낸다. 또한, CPU(101)도 인스트럭션을 파이프라인식으로 실행하는 것으로 가정한다. 각 인스트럭션은 3단계로 실행된다. 제1단계는 페치 단계이다. 페치 단계에서, CPU(101)는 인스트럭션을 페치한다. 제2단계는 ALU 단계이다. ALU 단계에서는, 인스트럭션이 디코딩되어 산술 연산 동작(어드레스 계산을 포함)이 행해진다. 제3단계는 메모리 단계이다. 메모리 단계에서는 데이타가 메모리에 기입되거나 메모리로부터 판독된다.
캐시 메모리(102)로부터 페치될 데이타에 대해 캐시 메모리 미스가 발생하고, 그 데이타가 당장 필요하지 않을 때는, CPU(101)는 완료되지 않은 인스트럭션 이후의 인스트럭션을 계속해서 실행할 수 있다. 이를 설명하기 위하여, 캐시 메모리 액세스 단계인 캐시 단계 I 및 캐시 단계 II를 테이블 3에 나타낸다. 캐시 단계 I 및 II는, 캐시 메모리(102)에 데이타가 없을 때에, 캐시 메모리(103)로부터 이 데이타를 검색하는데 필요한 사이클을 나타낸다. 캐시 단계 I 및 II는 의사 단계로서, 캐시 메모리(102)에 데이타가 없는 경우에만 인스트럭션에 의해 이용된다.
표 3에는, CPU(101)가, 아직 완료되지 않은 로드 이후의 인스트럭션을 계속 실행하는 경우에 어떤 상황이 발생하는지를 나타낸다. 사이클 2에서, 로드 A에 의해 캐시 메모리(102)에서 데이타의 캐시 메모리 미스가 발생한다. 사이클 3에서, 인스트럭션 로드 A가 캐시 메모리(103)로부터 데이타를 얻는다. 사이클 4에서, 로드 A는 캐시 메모리(103)로부터의 데이타를 캐시 캐모리(102)에 복사한다. 그러나, 로드 B는 메모리 단계에 있으며, 데이타를 캐시 메모리(102)로부터 판독하려고 한다. 이들 2개의 인스트럭션은 사이클 4동안 동시에 캐시 메모리(102)를 액세스할 수 없기 때문에, 로드 A가 데이타 복사를 완료할 때까지 기계의 정상 동작은 정지된다. 사이클 5에서, 인스트럭션 로드 B는 캐시 메모리(102)를 액세스할 수 있으며, 정상 동작이 재개된다.
Figure kpo00004
캐시 메모리(102)를 액세스하려고 시도하는 인스트럭션들이 충돌할 때 발생하는 지연을 피하기 위해, CPU(101)는 캐시 메모리(102)의 캐시 메모리 미스를 강제로 발생시킬 수 있다. 즉, 실제로 데이타가 캐시 메모리(102)에 있는지 여부에 관계없이, CPU(101)는 데이타를 캐시 메모리(103)로부터 얻게 된다. 이에 대해 이하의 표 4를 이용하여 설명한다. 사이클 4에서, 인스트럭션 로드 A 및 인스트럭션 로드 B 둘 모두가 캐시 메모리(102)에 대한 액세스를 시도한다. CPU(101)는 동작을 정지하지 않고, 캐시 메모리(102)의 캐시 메모리 미스를 강제로 발생시키며, 사이클 5 및 사이클 6에서 캐시 메모리(103)로부터 데이타를 검색한다.
Figure kpo00005
표 4에 나타낸 방법은, 동시에 캐시 메모리(102)를 액세스하도록 된 두개의 인스트럭션 사이의 경쟁으로 인해, CPU(101)에 의해 유발될 수 있는 성능의 불이익을 감소시키는 점에서, 다른 설계에 비해 개선되어 있다.
표 4에 제시된 것의 대안을 아래의 표 5에 나타낸다. 표 5의 사이클 4에서, 인스트럭션 로드 A 및 인스트럭션 로드 B가 캐시 메모리(102)로의 액세스를 시도한다. 표 5에서는, 표 4에 나타낸 예와 같이 인스트럭션 로드 A를 완료시키고 인스트럭션 로드 B를 강제로 캐시 메모리(102)에서 미스가 발생되도록 하는 대신에, 인스트럭션 로드 B가 캐시 메모리(102)를 액세스할 수 있고 인스트럭션 로드 A가 캐시 메모리(102)에 데이타를 기입하는 것이 금지된다.
Figure kpo00006
상기 표 5에 나타낸 바와 같이, 인스트럭션 로드 B는, 캐시 메모리(102) 내에서 데이타를 성공적으로 발견하였다. 그러나 원하는 데이타가 캐시 메모리(102)에 없기 때문에 캐시 메모리(103) 또는 메인 메모리(104)로부터 데이타를 페치하는 것이 가능하다.
표 5에 예시된 방법에 대한 한 가지 단점은, 인스트럭션 로드 A가 캐시 메모리(102)를 갱신하는 것은 허용되어 있지 않으므로, 차후에 갱신되지 않은 데이타가 요구되는 경우, 캐시 메모리(102)에서 다시 캐시 미스가 발생할 것이라는 사실이다. 그러나, 캐시 메모리(102)에서의 각 캐시 미스는 또다른 충돌을 초래할 수도 있기 때문에, 캐시 메모리(102) 내에 추가의 데이타가 갱신되지 않을 수도 있다. 따라서, 캐시 메모리에 대한 잦은 미스는, 캐시 메모리(102)의 미스 율(miss rate)이 캐시 메모리(102)의 갱신을 방해할 수도 있는 나쁜 상황을 초래할 수 있을 것으로 생각된다. 이는 캐시 메모리(102)가 유용한 정보를 점점 더 적게 포함하게 하여 캐시 메모리(102)에서 보다 많은 미스를 발생하게 할 수 있다. 이러한 나쁜 상황의 가능성은 캐시 메모리(102)를 액세스하는 빈도 및 캐시 메모리(102) 내에 통상적으로 배치된 데이타가 재사용되는 빈도를 포함하여 많은 요인에 의존한다.

Claims (12)

  1. 복수의 인스트럭션을 실행하는 컴퓨팅 시스템(computing system)에서, 시스템 메모리로부터의 데이타 판독이나 시스템 메모리로의 데이타 기입을 목적으로 하는 시스템 메모리내의 데이타 액세스를 비롯하여 복수의 인스트럭션을 원활하게 실행하기 위해 프로세서가 제1캐시 메모리 및 제2캐시 메모리를 사용하는 방법에 있어서, (a) 상기 프로세서가 제1인스트럭션을 실행하는 단계로서, (i) 상기 제1인스트럭션의 실행에 요구되는 데이타를 구하기 위해 상기 제1캐시 메모리에 엑세스하는 단계와, (ii) 상기 제1인스트럭션의 실행에 요구되는 데이타가 상기 제1캐시 메모리내에 존재하지 않을 때, 상기 제1인스트럭션의 실행에 요구되는 데이타를 구하기 위해 상기 제2캐시 메모리에 액세스하여, 상기 제1인스트럭션의 실행에 요구되는 데이타를 상기 제2캐시 메모리로부터 상기 제1캐시 메모리에 기압하는 단계와, (b) 상기 프로세서가 제2인스트럭션을 실행하는 단계로서, (i) 상기 제1인스트럭션의 실행에 요구되는 데이타가 상기 제2캐시 메모리로부터 상기 제1캐시 메모리로 기입되고 있는 중인지의 여부에 대하여 판정하는 단계와, (ii) 상기 판정 단계 (b)의 (i)에서, 상기 제1인스트럭션의 실행에 요구되는 데이타가 상기 제2캐시 메모리로부터 상기 제1캐시 메모리로 기입되고 있지 않은 것으로 판정될 때에는, 상기 제2인스트럭션의 실행에 요구되는 데이타를 구하기 위해 상기 제1캐시 메모리에 액세스하는 단계와, (iii) 상기 판정 단계 (b)의 (i)에서, 상기 제1인스트럭션의 실행에 요구되는 데이타가 상기 제2캐시 메모리로부터 상기 제1캐시 메모리에 기입되고 있는 중인 것으로 판정될 때에는, 상기 제2인스트럭션의 실행에 요구되는 데이타가 상기 제1캐시 메모리에 존재하지 않는 것처럼 하여, 상기 제2인스트럭션의 실행에 요구되는 데이타를 구하기 위해 상기 제2캐시 메모리에 액세스하는 단계를 포함하는 제1 및 제2캐시 메모리 사용 방법.
  2. 제1항에 있어서, 상기 제1캐시 메모리 및 상기 제2캐시 메모리는 상기 프로세서에 의해 동시에 액세스될 수 있으며, 상기 프로세서에 의해 상기 제1캐시 메모리에 기입되는 모든 데이타는 상기 제2캐시 메모리에도 또한 기입되는 제1 및 제2캐시 메모리 사용 방법.
  3. 제1항에 있어서, 상기 프로세서는, 인스트럭션이 페치(fetch)되는 페치 단계와, 산술 기능(arithmetic functions)이 수행되는 ALU 단계와, 상기 제1캐시 메모리로의 데이타 액세스가 수행되는 메모리 단계를 포함하는 파이프라인 스테이지 방식으로 인스트럭션을 실행하는 제1 및 제2캐시 메모리 사용 방법.
  4. 제3항에 있어서, 복수의 인스트럭션 중 하나의 인스트럭션을 실행하는데 요구되는 데이타를 상기 제1캐시 메모리부터 입수할 수 없을 때, 상기 인스트럭션의 실행에 요구되는 데이타는, 복수의 캐시 단계 동안, 상기 제2캐시 메모리로부터 액세스되는 제1 및 제2캐시 메모리 사용 방법.
  5. 제4항에 있어서, 상기 단계 (a)의 (ii)는, 상기 제1인스트럭션에 대한 상기 복수의 캐시 단계 동안 발생하며, 상기 단계 (b)의 (i)는 상기 제2인스트럭션의 메모리 단계 동안 발생하는 제1 및 제2캐시 메모리 사용 방법.
  6. 제5항에 있어서, 상기 제1캐시 메모리 및 상기 제2캐시 메모리는 상기 프로세서에 의해 동시에 액세스될 수 있으며, 상기 프로세서에 의해 상기 제1캐시 메모리에 기입되는 모든 데이타는 상기 제2캐시 메모리에도 또한 기입되는 제1 및 제2캐시 메모리 사용 방법.
  7. 복수의 인스트럭션을 실행하는 컴퓨팅 시스템에서, 시스템 메모리로부터의 데이타 판독이나 시스템 메모리로의 데이타 기입을 목적으로 하는 시스템 메모리내의 데이타 액세스를 비롯하여 복수의 인스트럭션을 원활하게 실행하기 위해 프로세서가 제1캐시 메모리 및 제2캐시 메모리를 사용하는 방법에 있어서, (a) 상기 프로세서가 제1인스트럭션을 실행하는 단계로서, (i) 상기 제1인스트럭션의 실행에 요구되는 데이타를 구하기 위해 상기 제1캐시 메모리에 액세스하는 단계와, (ii) 상기 제1인스트럭션의 실행에 요구되는 데이타가 상기 제1캐시 메모리에 존재하지 않을 때, 상기 제1인스트럭션의 실행에 요구되는 데이타를 구하기 위해 상기 제2캐시 메모리에 액세스하여, 상기 제1인스트럭션의 실행에 요구되는 데이타를 상기 제2캐시 메모리로부터 상기 제1캐시 메모리에 기입하는 단계와, (b) 상기 프로세서가 제2인스트럭션을 실행하는 단계로서, (i) 상기 제2인스트럭션의 실행에 요구되는 데이타를 구하기 위해 제1캐시 메모리에 액세스하는 단계와, (ii) 상기 단계 (b)의 (i)의 실행이, 상기 제1인스트럭션의 실행에 요구되는 데이타를 상기 제2캐시 메모리로부터 상기 제1캐시 메모리로 기입하는 단계 (a)의 (ii)의 실행과 동시에 행해지려고 할 때, 상기 제1인스트럭션의 실행에 요구되는 데이타를 상기 제2캐시 메모리로부터 상기 제1캐시 메모리로 기입하는 것을 중지시키는 단계를 포함하는 제1 및 제2캐시 메모리 사용 방법.
  8. 제7항에 있어서, 상기 제1캐시 메모리 및 상기 제2캐시 메모리는 상기 프로세서에 의해 동시에 액세스될 수 있으며, 상기 프로세서에 의해 상기 제1캐시 메모리에 기입되는 모든 데이타는 상기 제2캐시 메모리에도 또한 기입되는 제1 및 제2캐시 메모리 사용 방법.
  9. 제7항에 있어서, 상기 프로세서는, 인스트럭션이 페치되는 페치 단계와, 산술 기능이 수행되는 ALU 단계와, 상기 제1캐시 메모리로의 데이타 액세스가 수행되는 메모리 단계를 포함하는 파이프라인 스테이지 인스트럭션을 실행하는 제1 및 제2캐시 메모리 사용 방법.
  10. 제9항에 있어서, 복수의 인스트럭션 중 하나의 인스트럭션을 실행하는데 요구되는 데이타를 상기 제1캐시 메모리로부터 입수할 수 없을 때, 상기 인스트럭션의 실행에 요구되는 데이타는, 복수의 캐시 단계 동안 상기 제2캐시 메모리로부터 액세스되는 제1 및 제2캐시 메모리 사용 방법.
  11. 제10항에 있어서, 상기 단계 (a)의 (ii)는, 상기 제1인스트럭션에 대한 상기 복수의 캐시 단계 동안 발생하며, 상기 단계 (b)의 (i)은 상기 제2인스트럭션의 메모리 단계 동안 발생하는 제1 및 제2캐시 메모리 사용 방법.
  12. 제11항에 있어서, 상기 제1캐시 메모리 및 상기 제2캐시 메모리는 상기 프로세서에 의해 동시에 액세스될 수 있으며, 상기 프로세서에 의해 상기 제1캐시 메모리에 기입되는 모든 데이타는 상기 제2캐시 메모리에도 또한 기입되는 제1 및 제2캐시 메모리 사용 방법.
KR1019900010065A 1989-07-05 1990-07-04 제1및 제2캐시 메모리 사용방법 KR100204741B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/376,265 US5155832A (en) 1989-07-05 1989-07-05 Method to increase performance in a multi-level cache system by the use of forced cache misses
US376265 1999-08-18

Publications (2)

Publication Number Publication Date
KR910003496A KR910003496A (ko) 1991-02-27
KR100204741B1 true KR100204741B1 (ko) 1999-06-15

Family

ID=23484313

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019900010065A KR100204741B1 (ko) 1989-07-05 1990-07-04 제1및 제2캐시 메모리 사용방법

Country Status (5)

Country Link
US (1) US5155832A (ko)
EP (1) EP0407052B1 (ko)
JP (1) JP3016575B2 (ko)
KR (1) KR100204741B1 (ko)
DE (1) DE69025658T2 (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5261066A (en) * 1990-03-27 1993-11-09 Digital Equipment Corporation Data processing system and method with small fully-associative cache and prefetch buffers
US6101576A (en) * 1992-07-31 2000-08-08 Fujitsu Limited Method for saving generated character image in a cache system including a backup cache
JP3409866B2 (ja) * 1992-09-18 2003-05-26 株式会社日立製作所 並列計算機
US5509135A (en) * 1992-09-25 1996-04-16 Digital Equipment Corporation Multi-index multi-way set-associative cache
JP2768889B2 (ja) * 1993-06-07 1998-06-25 株式会社東芝 論理シミュレーション装置
JPH0784881A (ja) * 1993-09-13 1995-03-31 Mitsubishi Electric Corp キャッシュメモリ
US5809525A (en) * 1993-09-17 1998-09-15 International Business Machines Corporation Multi-level computer cache system providing plural cache controllers associated with memory address ranges and having cache directories
KR970010368B1 (ko) * 1994-01-18 1997-06-25 삼성전자 주식회사 캐시라인 리프레이스장치 및 방법
US5826052A (en) * 1994-04-29 1998-10-20 Advanced Micro Devices, Inc. Method and apparatus for concurrent access to multiple physical caches
US5539895A (en) * 1994-05-12 1996-07-23 International Business Machines Corporation Hierarchical computer cache system
US5553264A (en) * 1994-06-24 1996-09-03 Digital Equipment Corporation Method and apparatus for efficient cache refilling by the use of forced cache misses
US5537575A (en) * 1994-06-30 1996-07-16 Foley; Denis System for handling cache memory victim data which transfers data from cache to the interface while CPU performs a cache lookup using cache status information
DE19526960A1 (de) * 1994-09-27 1996-03-28 Hewlett Packard Co Eine Übersetzungs-Querzuordnungs-Puffer-Organisation mit variabler Seitengrößenabbildung und Opfer-Cache-Speicherung
US5584013A (en) * 1994-12-09 1996-12-10 International Business Machines Corporation Hierarchical cache arrangement wherein the replacement of an LRU entry in a second level cache is prevented when the cache entry is the only inclusive entry in the first level cache
US5721864A (en) * 1995-09-18 1998-02-24 International Business Machines Corporation Prefetching instructions between caches
US5860150A (en) * 1995-10-06 1999-01-12 International Business Machines Corporation Instruction pre-fetching of a cache line within a processor
US5794243A (en) * 1995-12-11 1998-08-11 International Business Machines Corporation Method and apparatus for executing a binary search in a data cache
US5740391A (en) * 1996-03-01 1998-04-14 Hewlett-Packard Co. Preventing premature early exception signaling with special instruction encoding
US5813033A (en) * 1996-03-08 1998-09-22 Advanced Micro Devices, Inc. Superscalar microprocessor including a cache configured to detect dependencies between accesses to the cache and another cache
US5765194A (en) * 1996-05-01 1998-06-09 Hewlett-Packard Company Timing consistent dynamic compare with force miss circuit
US5761490A (en) * 1996-05-28 1998-06-02 Hewlett-Packard Company Changing the meaning of a pre-decode bit in a cache memory depending on branch prediction mode
US5781923A (en) * 1996-05-28 1998-07-14 Hewlett-Packard Company Adding a field to the cache tag in a computer system to indicate byte ordering
US5875469A (en) * 1996-08-26 1999-02-23 International Business Machines Corporation Apparatus and method of snooping processors and look-aside caches
US6122711A (en) * 1997-01-07 2000-09-19 Unisys Corporation Method of and apparatus for store-in second level cache flush
US5895495A (en) * 1997-03-13 1999-04-20 International Business Machines Corporation Demand-based larx-reserve protocol for SMP system buses
US6073212A (en) * 1997-09-30 2000-06-06 Sun Microsystems, Inc. Reducing bandwidth and areas needed for non-inclusive memory hierarchy by using dual tags
US5909697A (en) * 1997-09-30 1999-06-01 Sun Microsystems, Inc. Reducing cache misses by snarfing writebacks in non-inclusive memory systems
US6253291B1 (en) 1998-02-13 2001-06-26 Sun Microsystems, Inc. Method and apparatus for relaxing the FIFO ordering constraint for memory accesses in a multi-processor asynchronous cache system
US6336168B1 (en) * 1999-02-26 2002-01-01 International Business Machines Corporation System and method for merging multiple outstanding load miss instructions
US6341331B1 (en) * 1999-10-01 2002-01-22 International Business Machines Corporation Method and system for managing a raid storage system with cache
TW490637B (en) * 2001-01-16 2002-06-11 Ind Tech Res Inst Memory emulator for simulating memory components of different interface specification and not restrained to memory space
US6996812B2 (en) * 2001-06-18 2006-02-07 International Business Machines Corporation Software implementation of synchronous memory barriers
CN104657145B (zh) * 2015-03-09 2017-12-15 上海兆芯集成电路有限公司 用于微处理器的重发停靠的系统和方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3938097A (en) * 1974-04-01 1976-02-10 Xerox Corporation Memory and buffer arrangement for digital computers
US4268907A (en) * 1979-01-22 1981-05-19 Honeywell Information Systems Inc. Cache unit bypass apparatus
JPS57105879A (en) * 1980-12-23 1982-07-01 Hitachi Ltd Control system for storage device
US4667288A (en) * 1983-06-30 1987-05-19 Honeywell Information Systems Inc. Enable/disable control checking apparatus
US4774654A (en) * 1984-12-24 1988-09-27 International Business Machines Corporation Apparatus and method for prefetching subblocks from a low speed memory to a high speed memory of a memory hierarchy depending upon state of replacing bit in the low speed memory
US4755930A (en) * 1985-06-27 1988-07-05 Encore Computer Corporation Hierarchical cache memory system and method
US4713755A (en) * 1985-06-28 1987-12-15 Hewlett-Packard Company Cache memory consistency control with explicit software instructions
US4794521A (en) * 1985-07-22 1988-12-27 Alliant Computer Systems Corporation Digital computer with cache capable of concurrently handling multiple accesses from parallel processors
US4833599A (en) * 1987-04-20 1989-05-23 Multiflow Computer, Inc. Hierarchical priority branch handling for parallel execution in a parallel processor
US5023776A (en) * 1988-02-22 1991-06-11 International Business Machines Corp. Store queue for a tightly coupled multiple processor configuration with two-level cache buffer storage

Also Published As

Publication number Publication date
JP3016575B2 (ja) 2000-03-06
EP0407052A3 (en) 1992-02-12
DE69025658D1 (de) 1996-04-11
US5155832A (en) 1992-10-13
EP0407052A2 (en) 1991-01-09
EP0407052B1 (en) 1996-03-06
KR910003496A (ko) 1991-02-27
JPH0342745A (ja) 1991-02-22
DE69025658T2 (de) 1996-07-18

Similar Documents

Publication Publication Date Title
KR100204741B1 (ko) 제1및 제2캐시 메모리 사용방법
EP0674267B1 (en) Sub-line cache coherent write transactions
EP0674270B1 (en) Input/output address translation mechanisms
US6085294A (en) Distributed data dependency stall mechanism
US20080005504A1 (en) Global overflow method for virtualized transactional memory
US5671231A (en) Method and apparatus for performing cache snoop testing on a cache system
JPH0345407B2 (ko)
US5155828A (en) Computing system with a cache memory and an additional look-aside cache memory
US6105108A (en) Method and apparatus for releasing victim data buffers of computer systems by comparing a probe counter with a service counter
US6202126B1 (en) Victimization of clean data blocks
WO2005121970A1 (en) Title: system and method for canceling write back operation during simultaneous snoop push or snoop kill operation in write back caches
US5479629A (en) Method and apparatus for translation request buffer and requestor table for minimizing the number of accesses to the same address
US6256710B1 (en) Cache management during cache inhibited transactions for increasing cache efficiency
EP0173909B1 (en) Look-aside buffer least recently used marker controller
JP3733604B2 (ja) キャッシュメモリ
US6401173B1 (en) Method and apparatus for optimizing bcache tag performance by inferring bcache tag state from internal processor state
KR100201671B1 (ko) 컴퓨팅 시스템 및 컴퓨팅 시스템의 캐시 메모리 이용방법
GB2037466A (en) Computer with cache memory
JP3006204B2 (ja) 情報処理装置
US20020010837A1 (en) Cache memory system and method of controlling cache memory
JP3651857B6 (ja) キャッシュ・コヒーレントdma書込み方法
JP3171639B2 (ja) データ処理装置
JPH06324942A (ja) 並列計算機システム
JPH06309225A (ja) 情報処理装置
JPH0719229B2 (ja) 記憶キー制御方式

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: 20090325

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee