KR100617663B1 - 캐시 메모리 내 태그 액세스 및 데이터 액세스의 분리방법 및 장치 - Google Patents

캐시 메모리 내 태그 액세스 및 데이터 액세스의 분리방법 및 장치 Download PDF

Info

Publication number
KR100617663B1
KR100617663B1 KR1020047003430A KR20047003430A KR100617663B1 KR 100617663 B1 KR100617663 B1 KR 100617663B1 KR 1020047003430 A KR1020047003430 A KR 1020047003430A KR 20047003430 A KR20047003430 A KR 20047003430A KR 100617663 B1 KR100617663 B1 KR 100617663B1
Authority
KR
South Korea
Prior art keywords
cache
tag
memory
access
data
Prior art date
Application number
KR1020047003430A
Other languages
English (en)
Other versions
KR20040033029A (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 KR20040033029A publication Critical patent/KR20040033029A/ko
Application granted granted Critical
Publication of KR100617663B1 publication Critical patent/KR100617663B1/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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline

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

본 발명의 한 실시예는 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리시키는 시스템을 제공한다. 이 시스템은 캐시 메모리에서 메모리 요청을 수신함으로서 동작하며, 이때, 메모리 요청은 메모리 위치를 식별하는 어드레스를 포함한다. 그후 시스템은, 캐시 메모리 내의 태그 어레이로부터 한 개 이상의 태그를 룩업(lookup)함으로서, 그리고, 상기 어드레스를 지닌 캐시 라인이 캐시 메모리 내에 위치하는 지를 결정하기 위해 상기 어드레스의 태그 부분과 상기 한 개 이상의 태그를 비교함으로서, 태그 액세스를 실행한다. 상기 어드레스를 지닌 캐시 라인이 캐시 메모리 내에 위치하지만 캐시 라인을 지닌 데이터 어레이가 사용 중(busy)일 경우, 시스템은 나중에 데이터 어레이가 비게 될 때 해당 데이터 액세스를 실행한다. 더욱이, 메모리 요청이 로드 동작에 대한 요청일 경우, 해당 데이터 액세스는 선행 로드 동작의 완료를 기다릴 필요없이 발생한다.

Description

캐시 메모리 내 태그 액세스 및 데이터 액세스의 분리 방법 및 장치{METHOD AND APPARATUS FOR DECOUPLING TAG AND DATA ACCESSES IN A CACHE MEMORY}
본 발명은 컴퓨터 시스템 내 캐시 메모리 설계에 관한 것으로서, 특히, 태그 액세스를 캐시 메모리 내 해당 데이터 액세스로부터 분리하기 위한 방법 및 장치에 관한 것이다.
프로세서 클럭 속도가 기하급수적으로 증가하고 있기 때문에, 컴퓨터 시스템 설계자들은 더 빠른 클럭 속도로 연산을 실행해야한다는 압력을 받고 있다. 이는 연산 실행을 "파이프라인화"함으로서 실현될 수 있다. 이 파이프라인화 연산 실행은 각각의 연산을 단일 클럭 사이클 내에서 실행될 수 있는 다수의 작은 연산들로 분할하는 과정을 포함한다. 파이프라인화로 인해, 더 작은 연산을 실행하는 파이프라인 스테이지 세트를 통해 락스텝(lockstep)으로 공급함으로서 다수의 연산 실행을 동시에 처리할 수 있다.
파이프라인 컴퓨터 시스템을 설계할 때의 한가지 문제점은 캐시 메모리에 대한 가변적인 액세스 시간을 효율적으로 취급하는 것이다. 전형적인 컴퓨터 시스템에서는 한 개 이상의 파이프라인 스테이지가 캐시 메모리 액세스에 전용으로 공급되어 불러오기(데이터 로딩)나 저장 동작을 실행하게 한다. 불행하게도, 캐시 액세 스 시간은 캐시 액세스가 캐시 히트(cache hit)를 발생시키는 지 캐시 미스(cache miss)를 발생시키는 지에 따라 크게 변할 수 있다.
캐시 히트 중에도, 다수의 환경이 캐시 액세스를 지연시킬 수 있다. 예를 들어, 캐시 라인이 캐시 미스 동작 중 되돌아올 때, 캐시 필 동작(cache fill operation)이 실행되어 캐시 라인을 캐시의 데이터 어레이 부분으로 로딩시킬 수 있다. 불행하게도, 이 캐시 필 동작은 파이프라인으로부터의 현 캐시 액세스와 충돌을 일으켜서 현 캐시 액세스를 지연시킬 수 있다. 또다른 예에서, 파이프라인으로부터의 로드 동작이 현 저장 동작을 가진 캐시 라인에 보내어지기 때문에 RAW(Read-After-Write) 위험이 발생할 수 있다. 이 경우에, 로드 동작은 상기 임박해 있는 저장 동작이 끝날 때까지 대기하도록 되어, 상기 로드 동작이 상기 캐시 라인으로부터 최근의 값을 되돌려 보낼 수 있도록 하여야 한다.
상술한 문제점을 경감시키기 위해, 일부 캐시들은 캐시 메모리의 태그 어레이에 대한 액세스가 캐시 메모리의 데이터 어레이에 대한 액세스로부터 분리되도록 설계되고 있다. 전형적인 캐시 메모리는 태그 어레이로부터의 한 개 이상의 태그들을 어드레스의 태그 부분과 비교하기 위해 태그 어레이 내로의 태그 룩업(tag lookup)을 실행한다. 이로 인해, 요망 캐시 라인이 캐시에 위치하는 지를 해당 캐시가 결정할 수 있다.
태그 어레이 액세스가 데이터 어레이 액세스로부터 분리될 경우, 요망 캐시 라인이 캐시에 위치하는 지를 결정하기 위해 태그 룩업과 비교를 먼저 실행할 수 있다. 만약 그러하다면, 태그 룩업은 캐시 메모리의 데이터 어레이 내 요망 캐시 라인의 세트 및 웨이 위치(set and way location)를 되돌려보낸다.
해당 데이터 어레이 액세스가 회선 쟁탈로 인해 지연될 경우, 해당 데이터 어레이 액세스가 나중에 데이터 어레이가 비워질 때, 실행될 수 있다. 이 데이터 어레이 액세스는 태그 룩업 중에 미리 결정된 세트 및 웨이 위치를 이용한다. 이 방식으로, 태그 어레이 액세스는 차후 데이터 어레이 액세스에 대해 반복될 필요가 없다. 더욱이, 태그 어레이 액세스는 고정된 시간에 일어나며, 이는 파이프라인 설계를 크게 단순화시키고 따라서 파이프라인 성능을 크게 개선시킬 수 있다.
불행하게도, 태그 및 데이터 액세스를 분리시키는 기존 캐시들은 로드 동작 중 캐시 미스로부터의 오류 데이터 리턴을 지원하지 않는다. 캐시 미스 중 되돌아오는 캐시 라인이 캐시 미스를 유발한 캐시 액세스와, 동일한 캐시 라인에 대한 모든 다른 차후 액세스와 어떤 측면에서 반드시 매치되어야 하기 때문에, 그리고 이 매치가 효율적인 방식으로 발생하여야 하기 때문에, 오류 리턴을 지원하는 것은 매우 복잡한 일이다.
따라서, 캐시 미스 동작 중 캐시 라인의 오류 리턴을 효율적으로 지원하는 방식으로 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리하는 방법 및 장치가 요구된다.
본 발명의 한가지 실시예는 캐시 메모리 내의 해당 데이터 액세스로부터 태그 액세스를 분리하는 시스템을 제공한다. 이 시스템은 캐시 메모리에서 메모리 요청을 수신함으로서 동작하며, 이때, 메모리 요청은 메모리 위치를 식별하는 어드레 스를 포함한다. 그후, 시스템은 캐시 메모리 내의 태그 어레이로부터 한 개 이상의 태그를 룩업(lookup)함으로서, 그리고 상기 어드레스를 지닌 캐시 라인이 캐시 메모리 내에 위치하는 지를 결정하기 위해 상기 한 개 이상의 태그를 어드레스의 태그 부분과 비교함으로서, 태그 액세스를 실행한다. 상기 어드레스를 지닌 캐시 라인이 캐시 메모리 내에 위치하지만 캐시 라인을 지닌 데이터 어레이가 사용중일 경우(busy), 시스템은 나중에 데이터 어레이가 비게될 때, 해당 데이터 액세스를 실행한다. 더욱이, 메모리 요청이 로드 동작에 대한 것일 경우, 해당 데이터 액세스는 선행 로드 동작의 완료를 기다리지 않고 발생한다.
발명의 한 실시예에 따르면, 메모리 요청이 로드 동작에 대한 요청일 경우, 시스템은 로드 동작에 대한 엔트리를 로드 버퍼에 저장함으로서 나중에 해당 데이터 액세스를 실행하며, 이때, 상기 엔트리를 태그 액세스 중 결정된 데이터 어레이내 해당 캐시 라인 위치를 명시한다. 데이터 어레이가 나중에 비게될 경우, 시스템은 이 엔트리를 이용하여 데이터 어레이로부터 로드 동작을 실행하고, 이때, 데이터 어레이 내 캐시 라인 위치 결정을 위해 태그 액세스를 다시 실행할 필요가 없다.
발명의 한 실시예에서, 메모리 요청이 저장 동작에 대한 요청일 경우, 시스템은 저장 동작에 대한 엔트리를 저장 버퍼에 저장함으로서, 나중에 해당 데이터 액세스를 실행하며, 이때, 상기 엔트리는 태그 액세스 중 결정된 데이터 어레이 내 해당 캐시 라인 위치를 명시한다. 데이터 어레이가 나중에 비게되면, 시스템은 상기 엔트리를 이용하여, 데이터 어레이 내 캐시 라인 위치를 결정하기 위해 태그 액 세스를 다시 실행할 필요없이, 데이터 어레이에 대한 저장 동작을 실행한다.
발명의 한 실시예에 따르면, 메모리 요청이 캐시 미스를 발생시키는 로드 동작에 대한 요청이라면, 시스템은 메모리 수직구조의 로우 레벨로부터 캐시 라인을 요청하고 이전 미스 버퍼(prior miss buffer)에 로드 동작에 대한 엔트리를 저장한다. 시스템은 캐시 라인에 의해 채워질 타겟 캐시 위치를 또한 선택하며, 태그 어레이 내 해당 타겟 엔트리를 어드레스의 태그 부분으로 업데이트한다. 타겟 엔트리 업데이트는 타겟 캐시 위치가 두드러진 캐시 미스 동작에 연계되어 있음을 표시하도록 타겟 엔트리 내 이전 미스 비트를 설정하는 과정을 포함한다.
본 발명의 한 실시예에 따르면, 메모리 요청이 캐시 미스를 발생시킬 경우, 시스템은 이전 미스 버퍼 내에 캐시 미스에 대한 엔트리를 생성한다. 본 실시예에 대한 한가지 변형에서는 태그 액세스 실행이 태그에 관련된 이전 미스 비트들을 룩업(lookup)하는 과정을 추가적으로 포함한다. 본 변형에서, 메모리 요청이 로드 동작에 대한 것이고 어드레스의 태그 부분이 태그 어레이 내 태그와 매치될 경우, 또한, 관련 캐시 라인이 두드러진 캐시 미스 동작에 종속됨을 표시하도록 해당 이전 미스 비트가 설정될 경우, 시스템은 이전 미스 버퍼 내에 메모리 요청에 대한 엔트리를 저장한다.
발명의 한 실시예에 따르면, 두드러진 캐시 미스 동작에 의해 되돌아온 캐시 라인을 수신하면, 시스템은 되돌아온 캐시 라인을 데이터 어레이에 삽입시키도록 캐시 필 동작을 실행한다. 그후, 시스템은 캐시 필 동작을 기다리는 이전 미스 버퍼 내의 메모리 요청을 완료시킨다.
발명의 한 실시예에서, 시스템은 아래의 다섯가지 사이의 데이터 어레이에 대한 액세스를 조정한다. 즉,
1) 두드러진 캐시 미스가 되돌아오길 기다리고 있는 메모리 요청을 포함한 이전 미스 버퍼,
2) 캐시 미스 동작에 의해 되돌아오는 캐시 라인들을 포함한 필 버퍼,
3) 메모리 요청을 발생시키는 컴퓨터 시스템 파이프라인,
4) 데이터 어레이에 대한 회선쟁탈로 인해 지연된 로드 요청을 포함하는 로드 버퍼, 그리고
5) 데이터 어레이에 대한 회선쟁탈로 인해 지연된 저장 요청을 포함한 저장 버퍼.
발명의 한 실시예에 따르면, 시스템은 두드러진 캐시 미스 동작과 충돌하는 캐시 필 동작을 차단한다.
도 1은 본 발명의 한 실시예에 따른 컴퓨터 시스템의 도면.
도 2는 본 발명의 한 실시예에 따른 데이터 어레이와 태그 어레이에 대한 분리된 액세스를 지원하는 캐시 메모리의 도면.
도 3은 본 발명의 한 실시예에 따른 아비터 회로의 도면.
도 4는 본 발명의 한 실시예에 따라 도 2에 도시된 캐시 메모리 내에서 로드 동작과 저장 동작이 실행되는 방식을 보여주는 도면.
실시예 단락에서 설명되는 데이터 구조 및 코드는 통상적으로 컴퓨터 판독형 저장 매체에 저장되며, 이 저장 매체는 컴퓨터 시스템에 의해 이용가능한 코드 및 데이터를 저장할 수 있는 어떤 장치/매체이다. 이는 자기 및 광학 장치를 포함하며, 그 예로는 디스크 드라이브, 자기 테이프, CD, DVD, 전송 매체에 내장된 컴퓨터 명령 신호 등이 있다. 예를 들어, 전송 매체는 인터넷같은 통신 네트워크를 포함할 수 있다.
컴퓨터 시스템
도 1은 발명의 한 실시예에 따른 컴퓨터 시스템(100)의 도면이다. 상당수 컴퓨터 시스템(100)이 단일 반도체 칩(101) 내에 위치한다. 구체적으로, 반도체 칩(101)은 다수의 프로세서(110, 120, 130, 140)을 포함하며, 레벨 1(L1) 캐시(112, 122, 132, 142)를 각각 포함한다. L1 캐시(112, 122, 132, 142)는 명령 및 데이터 분리형 캐시일 수도 있고, 명령 및 데이터 통합 캐시일 수도 있다. L1 캐시(112, 122, 132, 142)는 레벨 2(L2) 캐시(106)에 연결된다. L2 캐시(106)는 메모리 컨트롤러(104)를 통해 오프-칩 메모리(102)에 연결된다.
발명의 한 실시예에 따르면, L1 캐시(112, 122, 132, 142)는 기록전달(write-through) 캐시이다. 이는 L1 캐시(112, 122, 132, 142)에 대한 모든 업데이트가 자동적으로 L2 캐시(106)에 전달된다는 것을 의미한다. 이는 코히어런스 프로토콜을 단순화시킨다. 왜냐하면, 프로세서(110)가 L1 캐시(112) 내에 존재하는 데이터 아이템을 필요로할 경우 프로세서(110)가 L1 캐시(112)의 데이터 소싱을 기다릴 필요없이 L2 캐시(106)로부터 데이터를 수신할 수 있기 때문이다.
본 발명이 단일 칩 상의 멀티프로세서 시스템에 관하여 설명되지만, 본 발명이 멀티프로세서 시스템이나 단일 칩 프로세서에 제한되는 것을 의미하는 것은 아니다. 일반적으로, 본 발명은 유니프로세서 컴퓨터 시스템이나 멀티프로세서 컴퓨터 시스템처럼 어떤 종류의 컴퓨터 시스템에도 적용될 수 있다. 더욱이, 본 발명은 집합 연관식 캐시(set-associative cache), 지향성 매핑 캐시(directed-mapped cache), 명령 캐시, 데이터 캐시, 명령 및 데이터 통합 캐시, L1 캐시, 또는 L2 캐시를 포함하는 거의 모든 종류의 캐시 메모리에 적용될 수 있다.
캐시 메모리
도 2는 발명의 한 실시예에 따라 태그 어레이와 데이터 어레이에 대한 분리된 액세스를 지원하는 L1 캐시(112)의 구조를 도시한다.
L1 캐시(112)는 다수의 기존 캐시 메모리 구조를 포함한다. 가령, 태그 어레이(202), 데이터 어레이(204), 라이트백(writeback) 버퍼(210), 그리고 필(fill) 버퍼(212)를 포함한다. 태그 어레이(202)는 L1 캐시(112) 내에 저장된 라인들에 대한 어드레스의 태그 부분을 포함한다. L1 캐시(112)가 타겟 어드레스에 대한 메모리 액세스를 실행하려는 요청을 수신하면, L1 캐시(112)는 타겟 어드레스의 세트 번호를 이용하여, 태그 어레이(202)로부터 한 개 이상의 태그를 룩업할 수 있다. 이 태그들은 타겟 어드레스의 태그 부분과 비교되어, 타겟 어드레스를 지닌 캐시 라인이 L1 캐시(112) 내에 있는 지를 결정할 수 있다.
태그 비교를 위한 비교 회로가 도 2에는 도시되지 않았다. 집합 연관식 캐시에 대한 태그 룩업 중 불러들여지는 다중 태그가 또한 도시되지 않았다. 태그 어레이(202) 내 각각의 엔트리는 이전 미스 비트(prior miss bits)(203)를 포함하며, 이 같은 이전 미스 비트가 두드러진 캐시 미스(outstanding cache miss)와 관련되어 있음, 즉 상기 이전 미스(203)가 캐시 미스가 현저한 것을 표시하도록 하는 것이다.
데이터 어레이(204)는 태그 어레이(202) 내에 저장된 태그에 해당하는 캐시 라인들을 저장한다. 기존 캐시 메모리에서의 로드 동작 중, 데이터 어레이(204)는 태그 어레이(202) 액세스와 동시에 액세스된다. 로드 동작이 히트임을 태그 룩업이 표시하면, 데이터 어레이(204)로부터 불러들여지는 데이터 값이 리턴되어 로드 동작을 완료시킬 수 있다.
데이터 어레이(204)는 라이트백(writeback) 버퍼(210) 및 필(fill) 버퍼(212)를 통해 L2 캐시(106)와 통신한다. 라이트백 버퍼(210)는 L2 캐시(106)에 다시 쓰여질 것을 기다리고 있는, 데이터 어레이(204)로부터 불러들여지는 캐시 라인들을 포함한다. 이때, 필 버퍼(212)는 데이터 어레이(204)에 저장되기를 기다라고 있는, L2 캐시(106)로부터 불러들여지는 캐시 라인들을 포함한다.
태그 어레이(202)와 데이터 어레이(204)가 각각 별도의 디코더(206, 208)를 포함하는 점에 주목해야 한다. 이로 인해, 여러 다른 세트 번호 룩업들이 태그 어레이(202)와 데이터 어레이(204)에서 동시에 발생할 수 있게 함으로서, 태그 어레이(202)와 데이터 어레이(204)에 대한 분리된 액세스가 용이해진다.
L2 캐시(110)는 로드 버퍼(214), 저장 버퍼(216), 그리고 이전 미스 버퍼(218)를 포함하는, 기존의 캐시 메모리에 존재하지 않는 다수의 새로운 구조를 포함한다. 로드 버퍼(214)와 저장 버퍼(216)는 데이터 어레이(204)가 비게되기를 기다리고 있는 데이터 어레이(204)에 대한 계류중인 액세스를 가진다. 구체적으로, 로드 버퍼(214)는 데이터 어레이(204)에 대한 회선쟁탈로 인해 지연된 로드 요청을 가지며, 저장 버퍼(216)는 데이터 어레이(204)에 대한 회선쟁탈로 인해 지연된 저장 요청을 지닌다. 이 구조들은 태그 액세스와 데이터 액세스가 분리된 사실의 결과로 존재한다. 이는 로드 동작이나 저장 동작에 대한 태그 액세스가 데이터 어레이(204)에 대한 해당 로드나 저장 동작이 일어나기 전에 발생할 수 있다는 것을 의미한다. 이 "계류중인" 로드 및 저장 동작은 일시적으로 로드 버퍼(214)와 저장 버퍼(216)에 저장된다.
이전 미스 버퍼(218)는 두드러진 캐시 미스가 되돌아오기를 기다리고 있는 메모리 요청을 지닌다. 이는 캐시 라인 리턴 이전에 발생하는 동일한 캐시 라인에 대한 캐시 미스와 차후 로드 및 저장 동작을 유발하는 메모리 요청을 포함한다.
로드 버퍼(214)의 주어진 엔트리(221)는 데이터 어레이(204) 내 로드 동작의 세트(set) 및 웨이(way) 위치(224)와 행선 레지스터 식별자(destination register identifier)(222)를 지닌다. 엔트리(221)는 부호 확장 옵션을 표시하는 필드나 메모리 액세스 크기를 표시하는 필드처럼 도시되지 않은 다른 필드들을 또한 지닌다. 저장 버퍼(216)의 엔트리(225)는 저장 동작 중 데이터 어레이(204)에 기록될 데이터(226)를 지니며, 데이터 어레이(204) 내 저장 동작에 대한 타겟 캐시 라인의 세트 및 웨이 위치를 지닌다. 엔트리(225)는 도시되지 않은 다른 필드도 포함한다. 한 실시예에서는, 이전 미스 버퍼(218)의 엔트리가 로드 버퍼(214)의 엔트리와 유사하다.
다수의 구조가 로드 버퍼(214), 저장 버퍼(216), 이전 미스 버퍼(218), 필 버퍼(212), 그리고 프로세서 파이프라인(도시되지 않음)을 포함하는, 데이터 어레이(204)에 대한 액세스를 필요로 한다. 이 액세스들은 아비터(arbiter) 회로(220)에 의해 제어되며, 도 3을 참고하여 보다 상세하게 설명된다.
조정 회로(Arbitration Circuit)
도 3은 발명의 한 실시예에 따른 도 2로부터의 아비터 회로(220)의 구조를 도시하는 도면이다. 아비터 회로(220)는 데이터 어레이(204)의 디코더(208)에 대한 액세스를 제어하는 다수의 스위치(302-305)를 가진다. 디코더(208)에 가장 가까운 이전 미스 버퍼(218)에 최우선 순위가 부여된다. 따라서 스위치(305)를 이용하여 데이터 어레이(204)에 액세스하고자 하는 상향 경쟁자들을 밀어낼 수 있다. 이전 미스 버퍼(218)는 캐시 미스를 기다려온 액세스들을 포함하기 때문에 최우선순위를 가진다. 이 액세스들은 프로세서를 차단시키기 쉽다. 다음 높은 우선순위는 필 버퍼(212)에 부여된다. 필 버퍼(212)는 캐시 미스 동작에 대한 캐시 라인을 되돌려보내려 시도한다. 그 다음의 우선순위는 명령 파이프라인이고 그 다음은 로드 버퍼(214)이다. 마지막으로 저장 버퍼(216)에 최저우선순위가 부여된다. 왜냐하면, 저장 동작은 가장 여유로운 속도로 발생할 수 있기 때문이다.
로드 및 저장 동작
도 4는 본 발명의 한 실시예에 따라 도 2에 도시되는 캐시 메모리(110) 내에서 로드 동작과 저장 동작이 어떻게 실행되는 지를 도시한다. 도 4는 여러 다양한 파이프라인 스테이지 내에서 무엇이 구현되는 지를 도시하도록 그려진다. 명령 페 치 및 디코드 파이프라인 스테이지 이후, 다수의 추가적인 스테이지가 존재한다. 가령, E1, C1, C2, E4, E5, T, 그리고 WB가 존재한다. 구체적으로, E1은 실행 스테이지, C1과 C2는 캐시 액세스 스테이지, E4와 E5는 추가 실행 스테이지, T는 트랩 스테이지, 그리고 WB는 라이트백(writeback) 스테이지이다. 본 발명이 어떤 종류의 파이프라인 컴퓨터 시스템에서도 구현될 수 있고, 도 4에 도시되는 특정 스테이지 세트에 제한되지 않음에 주목하여야 한다.
도 4의 상단은 로드 동작 중 발생하는 액션들을 도시한다. C1 스테이지 중, 시스템은 다수의 동작을 실행한다. 이 동작들에는 어드레스에 연관된 태그를 읽어들이기 위해 태그 어레이(202)에 대한 룩업을 실행하는 단계를 포함한다. 시스템은 메모리 관리 유닛을 통한 시각적->물리적 어드레스 변환을 또한 실행한다. 시스템은 데이터 어레이(204)로부터 해당 캐시 라인을 읽어들이려 또한 시도한다. 시스템은, 필 웨이(fill way)와 이전 미스 웨이(prior miss way)를 읽어들임으로서, 로드 동작이 데이터 어레이(204)에 대한 조정 기능을 상실하였는 지를 추가적으로 결정한다. 필 웨이나 이전 미스 웨이가 동일한 웨이에 대한 것일 경우, 시스템은 실행 파이프라인이 조정 기능을 상실하였음을 알게된다. 왜냐하면, 도 3에 도시되는 아비터(220)가 필 버퍼(212)와 이전 미스 버퍼(218)에 우선순위를 부여하기 때문이다. 시스템은 필요시 캐시 미스 중 대체할 캐시의 한 라인을 식별하기 위해 상기 미스 웨이(miss way)를 또한 연산한다.
스테이지 C2 동안, 시스템은 추가적인 동작들을 실행한다. 이 동작에는 로드가 캐시 히트를 일으키는 지를 결정하기 위해 태그 어레이(202)로부터 불러들여지는 태그를 현 태그와 비교하는 단계가 포함된다. 로드가 히트를 일으키면, 시스템은 데이터 어레이(204)로부터 데이터를 로딩한다. 로드 동작과 선행 저장 동작 사이에 RAW(Read-After-Write) 위험이 존재하는 지를 결정하기 위해 저장 버퍼(216) 상에서 콘텐트-어드레서블 검색(content-addressable search)을 또한 실행한다. 시스템은 로드 동작을 위해 한 엔트리를 로드 버퍼(214)에 임시로 삽입한다. 시스템은 캐시 미스가 발생할 경우를 대비하여 이전 미스 버퍼(218)의 빈 슬롯을 식별한다. 시스템은 로드가 이전 미스 버퍼(218)에 들어가야 하는 경우를 대비하여 이전 미스 버퍼(218) 내 큐(queues)의 세트 및 웨이를 읽어들인다. 캐시 미스의 경우, 상기 시스템은 기존 태그를 새 태그로 엎데이트하고 상기 이전 미스 비트를 정하여, 뒤이어 발생되는 액세스들은 한 캐시 미스가 상기 캐시 라인에 대하여 두드러진 또한 현저한 것임을 알 수 있도록 한다.
스테이지 E3 동안, 시스템은 추가의 동작들을 실행한다. 이 동작에는, 상기 로드가 히트를 발생시켜서 데이터 어레이(204)에 액세스할 수 있었거나, 로드가 미스나, 이전 미스, 또는 RAW 위험을 발생시킨 경우, 로드 버퍼(214)로부터 임시로 삽입된 엔트리를 제거시킴을 포함한다. (상기 시스템은 태그 어레이 엔트리의 이전 미스 비트를 검사함으로서 이전 미스가 존재하는 지를 결정할 수 있음에 주목하여야 한다). 상기 로드가 캐시 미스(cache miss)나 이전 미스(prior miss)를 발생시킨 경우, 시스템은 이전 미스 버퍼(218)로 상기 로드를 입력시킨다. 이전 미스 버퍼는 두드러진 캐시 미스 동작(outstanding cache miss operation) 각각에 대한 큐(queues) 세트 (대기 행렬 세트)로 조직된다. 이로 인해, 시스템은 전체 관련 검색을 실행하는 대신, 각 큐의 헤드(head)만을 검사할 수 있도록 한다. 이는 룩업 시간을 감소시킨다. 상기 로드가 캐시 미스를 발생시키면, 시스템은 상기 로드를 한 로드 요청 큐로 입력 시키어 L2 캐시(106)로부터 해당 캐시 라인을 끌어낼 수 있도록 한다.

마지막으로, 스테이지 E4에서, 상기 시스템은 필요 시에 L2 캐시(106)로 미스(miss)를 발생시킨다.
도 4의 하단은 저장 동작 중 발생하는 액션들을 도시한다. C1 스테이지에서, 시스템은 다수의 동작을 실행한다. 이 동작에는 어드레스에 연관된 태그들을 읽어들이기 위해 태그 어레이(202)에 대한 룩업을 실행하는 단계가 포함된다. 시스템은 메모리 관리 유닛을 통해 시각적->물리적 어드레스 변환을 또한 실행한다.
스테이지 C2 중, 시스템은 추가적인 동작들을 실행한다. 이 동작에는 캐시 히트가 있는 지를 결정하기 위해 태그 어레이(202)로부터 불러들여지는 태그를 현 태그와 비교하는 단계가 포함된다. 히트가 존재할 경우 시스템은 데이터 어레이(204)에 데이터를 저장한다. 시스템은 저장 동작이 이전 미스 버퍼(218)에 들어가야 하는 경우를 대비하여 이전 미스 버퍼(218) 내의 큐에 대한 세트 및 웨이 정보를 또한 읽어들인다.
스테이지 E3 중, 시스템은 추가적인 동작들을 실행한다. 이 동작에는 저장 동작이 캐시 히트였으나 데이터 어레이(204)에 대한 액세스를 얻을 수 없었을 경우 저장 동작을 저장 버퍼(216)에 들어가게 하는 단계가 포함된다.
스테이지 E4 중, 시스템은, 저장 동작이 이전 미스를 발생시킬 경우, 저장 동작을 저장 요청 큐(218)에 보낸다.

Claims (23)

  1. 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리하는 방법으로서,
    - 상기 캐시 메모리에서 메모리 요청을 수신하고, 이때, 상기 메모리 요청은 메모리 요청에 관련된 메모리 위치를 식별시키는 어드레스를 포함하며; 그리고
    - 상기 캐시 메모리 내 태그 어레이로부터 한 개 이상의 태그를 룩업(탐색)함으로써, 그리고, 한 개 이상의 태그를 상기 어드레스를 갖는 태그 부분과 비교하여 상기 어드레스를 지닌 캐시 라인이 캐시 메모리에 위치하는 지를 결정하도록 함으로써 상기 태그 액세스를 실행하고;
    -상기 어드레스를 지닌 캐시 라인이 상기 캐시 메모리 내에 위치하지만 이 같은 캐시 라인을 지닌 데이터 어레이가 사용 중이기 때문에, 상기 태그 룩업이 캐시 히트를 발생시킨다면, 상기 방법이,
    상기 데이터 어레이가 사용되지 않는 때인 나중에 상기 데이터 어레이로 해당 데이터 액세스를 실행함을 더욱 포함하며;
    -상기 메모리 요청이 로드 동작에 대한 것이라면, 상기 해당 데이터 액세스가 로드 동작이 끝날 때까지 기다리지 않고 발생되도록 하고;
    -상기 데이터 액세스가 로드 동작이 끝날 때까지 기다리지 않고 실행되도록 한다는 것은:
    상기 데이터 어레이로부터의 데이터를 적재하도록 시도하고,
    로드 버퍼 내에 상기 로드 동작을 저장하여 상기 데이터 어레이에 대한 회선 쟁탈을 예측하도록 하며, 그리고
    이전 미스(prior miss)내에 빈 슬롯을 식별시키어 캐시 미스를 예측하도록 하고, 상기 동작들이 병렬로 실행되며;
    -상기 해당 데이터 액세스를 상기 데이터 어레이가 사용되지 않는 때인 나중에 실행하는 것이:
    한 로드 버퍼에 상기 로드 동작에 대한 엔트리를 저장함을 포함하고, 이때 상기 엔트리가 상기 태그 액세스중에 결정되었던 상기 데이터 어레이내 해당 캐시 라인의 한 위치를 명시하는 것이며, 그리고
    상기 데이터 어레이가 나중에 사용되고 있지 않을 때, 상기 엔트리를 사용하여 상기 데이터 어레이 내 캐시 라인의 위치를 결정하기 위해 다시 상기 태그 액세스를 실행할 필요없이 상기 데이터 어레이로부터 로드 동작을 실행하도록 함을 포함하는 것임을 특징으로 하는 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리하는 방법
  2. 삭제
  3. 제 1 항에 있어서, 상기 메모리 요청이 저장 동작에 대한 것일 경우, 상기 나중에 해당 데이터 액세스를 실행하는 것이,
    - 저장 동작에 대한 엔트리를 저장 버퍼에 저장하고, 이때 상기 엔트리가 상기 태그 액세스 중 결정된 데이터 어레이 내 해당 캐시 라인의 위치를 명시하는 것이며; 그리고
    - 나중에 상기 데이터 어레이가 사용되고 있지 않을 때, 상기 엔트리를 사용하여 상기 데이터 어레이 내 캐시 라인의 위치를 결정하기 위해 다시 상기 태그 액세스를 실행해야 할 필요없이 상기 데이터 어레이로 저장 동작을 실행함을 포함하는 것임을 특징으로 하는 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리하는 방법.
  4. 제 1 항에 있어서, 상기 메모리 요청이 캐시 미스를 발생시키는 로드 동작에 대한 요청일 경우, 이 방법은,
    - 메모리 계층 구조의 로우 레벨로부터 캐시 라인을 요청하고,
    - 상기 로드 동작에 대한 엔트리를 이전 미스 버퍼(prior miss buffer)에 저장하며,
    - 상기 캐시 라인에 의해 채워질 타겟 캐시 위치를 선택하고, 그리고
    - 상기 태그 어레이 내 해당 타겟 엔트리를 상기 어드레스의 태그 부분으로 업데이트함을 추가로 포함하며, 이때, 상기 타겟 엔트리를 업데이트하는 것이, 상기 타겟 캐시 위치가 두드러진 캐시 미스 동작(outstanding cache miss operation)에 관련되어 있음을 표시하도록 타겟 엔트리 내에 이전 미스 비트를 설정하도록 함을 포함하는 것임을 특징으로 하는 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리하는 방법.
  5. 제 1 항에 있어서, 상기 메모리 요청이 캐시 미스를 발생시키는 것이라면, 이 방법은,
    - 상기 캐시 미스에 대한 엔트리를 이전 미스 버퍼 내에 생성함을 더욱 포함하는 것임을 특징으로 하는 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리하는 방법.
  6. 제 5 항에 있어서,
    상기 태그 액세스를 실행하는 것이 한 개 이상의 태그에 관련된 이전 미스 비트를 룩업(lookup)함을 추가로 포함하고, 그리고
    상기 메모리 요청이 로드 동작에 대한 요청이고, 상기 어드레스의 태그 부분이 태그 어레이 내 한 태그와 매치되며, 그리고 상기 해당 이전 미스 비트가 설정되어 한 관련 캐시 라인이 두드러진 캐시 미스 동작을 받게 됨을 표시하게 되면, 상기 방법이,
    - 상기 이전 미스 버퍼 내에 상기 메모리 요청에 대한 엔트리를 저장함을 더욱 포함함을 특징으로 하는 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리하는 방법.
  7. 제 5 항에 있어서, 상기 방법이,
    - 두드러진 캐시 미스 동작을 댓가로 하여 되돌아온 캐시 라인을 수신하고,
    - 되돌아온 캐시 라인을 데이터 어레이에 삽입하도록 캐시 필 동작을 실행하며, 그리고
    - 캐시 필 동작을 기다리고 있었던 이전 미스 버퍼 내 메모리 요청을 완료시킴을 더욱 포함함을 특징으로 하는 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리하는 방법.
  8. 제 1 항에 있어서,
    a) 두드러진 캐시 미스의 리턴을 기다리고 있는 메모리 요청을 지닌 이전 미스 버퍼,
    b) 캐시 미스 동작에 의해 되돌아오는 캐시 라인들을 지닌 필 버퍼,
    c) 메모리 요청을 발생시키는 컴퓨터 시스템 파이프라인,
    d) 데이터 어레이에 대한 회선쟁탈로 인해 지연된 로드 요청을 지닌 로드 버퍼, 그리고
    e) 데이터 어레이에 대한 회선쟁탈로 인해 지연된 저장 요청을 지닌 저장 버퍼들 사이에서
    상기 데이터 어레이에 대한 액세스들을 조정함을 더욱 포함함을 특징으로 하는 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리하는 방법.
  9. 제 1 항에 있어서,
    - 두드러진 캐시 미스 동작에 관련되어 있는 한 캐시 위치로의 캐시 필 동작을 차단함을 더욱 포함함을 특징으로 하는 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리하는 방법.
  10. 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리시키는 장치로서,
    -상기 장치가 캐시 메모리, 캐시 메모리 내의 태그 어레이, 캐시 메모리 내의 데이터 어레이, 태그 액세스 메커니즘, 그리고 상기 캐시 메모리 내의 데이터 어레이 액세스 메커니즘을 포함하고,
    -상기 캐시 메모리는 메모리 요청을 수신하도록 구성되고, 상기 메모리 요청은 메모리 요청에 관련된 메모리 위치를 식별시키는 어드레스를 포함하며;
    - 상기 태그 액세스 메커니즘이 상기 캐시 메모리 내 태그 어레이로부터 한 개 이상의 태그를 룩업(탐색)함으로써, 그리고, 한 개 이상의 태그를 상기 어드레스를 갖는 태그 부분과 비교하여 상기 어드레스를 지닌 캐시 라인이 캐시 메모리에 위치하는 지를 결정하도록 함으로써 상기 태그 액세스를 실행하고;
    - 상기 어드레스를 지닌 캐시 라인이 상기 캐시 메모리 내에 위치하지만 이 같은 캐시 라인을 지닌 데이터 어레이가 사용 중이기 때문에, 상기 태그 룩업이 캐시 히트를 발생시킨다면, 상기 캐시 메모리 내의 데이터 액세스 메커니즘이 상기 데이터 어레이가 사용되지 않는 때인 나중에 상기 데이터 어레이로 해당 데이터 액세스를 실행하도록 구성되며;
    -상기 메모리 요청이 로드 동작에 대한 것이라면, 상기 해당 데이터 액세스가 로드 동작이 끝날 때까지 기다리지 않고 발생되도록 하고;
    -상기 데이터 액세스가 로드 동작이 끝날 때까지 기다리지 않고 실행되도록 한다는 것은:
    상기 데이터 어레이로부터의 데이터를 적재하도록 시도하고,
    로드 버퍼 내에 상기 로드 동작을 저장하여 상기 데이터 어레이에 대한 회선 쟁탈을 예측하도록 하며, 그리고
    이전 미스(prior miss)내에 빈 슬롯을 식별시키어 캐시 미스를 예측하도록 하고, 상기 동작들이 병렬로 실행되며; 그리고
    -상기 데이터 어레이가 사용되고 있지 않은 때를 기다리는 캐시 히트로부터의 로드 동작을 담고 있는 로드 버퍼를 더욱 포함하며, 상기 메모리 요청이 로드 동작을 위한 것이라면, 상기 데이터 어레이 메커니즘이 다음 a), 및 b)에서와 같이, 엔트리를 저장하고, 또한 엔트리를 사용함에 의해 상기 데이터 어레이가 사용되지 않는 때인 나중에 상기 해당 데이터 액세스를 실행하도록 구성됨을 특징으로 하는 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리시키는 장치.
    -다 음-
    a) 한 로드 버퍼에 상기 로드 동작에 대한 엔트리를 저장함을 포함하고, 이때 상기 엔트리가 상기 태그 액세스중에 결정되었던 상기 데이터 어레이내 해당 캐시 라인의 한 위치를 명시하는 것이며, 그리고
    b) 상기 데이터 어레이가 나중에 사용되고 있지 않을 때, 상기 엔트리를 사용하여 상기 데이터 어레이 내 캐시 라인의 위치를 결정하기 위해 다시 상기 태그 액세스를 실행할 필요없이 상기 데이터 어레이로부터 로드 동작을 실행하도록 함
  11. 삭제
  12. 제 10 항에 있어서, 상기 로드 버퍼가 큐(queue)로 조직되는 것을 특징으로 하는 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리시키는 장치.
  13. 제 10 항에 있어서, 상기 데이터 어레이가 사용되고 있지 않을 때를 기다리는 저장 동작을 지닌 저장 버퍼를 더욱 포함하며, 상기 메모리 요청이 저장 동작에 대한 것일 경우, 상기 데이터 어레이 액세스 메커니즘이
    - 상기 저장 동작에 대한 엔트리를 저장 버퍼에 저장하고, 이때 상기 엔트리가 상기 태그 액세스 중 결정된 데이터 어레이 내 해당 캐시 라인의 위치를 명시하는 것이며; 그리고
    - 나중에 상기 데이터 어레이가 사용되고 있지 않을 때, 상기 엔트리를 사용하여 상기 데이터 어레이 내 캐시 라인의 위치를 결정하기 위해 다시 상기 태그 액세스를 실행해야 할 필요없이 상기 데이터 어레이로 저장 동작을 실행함에 의해 상기 데이터 어레이가 사용되지 않는 때인 나중에 해당 데이터 액세스를 실행하도록 구성됨을 특징으로 하는 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리시키는 장치.
  14. 제 10 항에 있어서, 상기 저장 버퍼가 큐(queue)로 조직되는 것을 특징으로 하는 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리시키는 장치.
  15. 제 10 항에 있어서,
    상기 메모리 요청이 한 캐시 미스(cache mjss)를 발생시키는 로드 동작에 대한 요청일 경우, 상기 데이터 어레이 액세스 메커니즘이,
    - 메모리 계층 구조의 로우 레벨로부터 캐시 라인을 요청하고,
    - 상기 로드 동작에 대한 엔트리를 이전 미스 버퍼(prior miss buffer)에 저장하며,
    - 상기 캐시 라인에 의해 채워질 타겟 캐시 위치를 선택하고, 그리고
    - 상기 태그 어레이 내 해당 타겟 엔트리를 상기 어드레스의 태그 부분으로 업데이트하도록 구성되며,
    이때, 상기 타겟 엔트리를 업데이트하는 것이, 상기 타겟 캐시 위치가 두드러진 캐시 미스 동작(outstanding cache miss operation)에 관련되어 있음을 표시하도록 타겟 엔트리 내에 이전 미스 비트를 설정하도록 함을 포함하는 것임을 특징으로 하는 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리시키는 장치.
  16. 제 10 항에 있어서, 상기 메모리 요청이 한 캐시 미스를 발생시키면, 상기 데이터 어레이 액세스 메커니즘이 이전 미스 버퍼 내 캐시 미스를 위한 한 엔트리를 발생시키도록 구성됨을 특징으로 하는 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리시키는 장치.
  17. 제 16 항에 있어서,
    상기 태그 액세스 메카니즘이 한 개 이상의 태그에 관련된 이전 미스 비트를 룩업(lookup)함을 추가로 포함하고, 그리고
    상기 메모리 요청이 로드 동작에 대한 요청이고, 상기 어드레스의 태그 부분이 태그 어레이 내 한 태그와 매치되며, 그리고 상기 해당 이전 미스 비트가 설정되어 한 관련 캐시 라인이 두드러진 캐시 미스 동작을 받게 됨을 표시하게 되면, 상기 데이터 액세스 메카니즘이 상기 이전 미스 버퍼 내에 상기 메모리 요청에 대한 엔트리를 발생시키도록 구성됨을 특징으로 하는 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리시키는 장치.
  18. 제 16 항에 있어서,
    - 두드러진 캐시 미스 동작을 댓가로 하여 되돌아온 캐시 라인을 수신하고,
    - 되돌아온 캐시 라인을 데이터 어레이에 삽입하도록 캐시 필 동작을 실행하며, 그리고
    - 캐시 필 동작을 기다리고 있었던 이전 미스 버퍼 내 메모리 요청을 완료시키도록 구성된 캐시 필 메커니즘을 더욱 포함함을 특징으로 하는 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리시키는 장치.
  19. 제 16 항에 있어서, 상기 이전 미스 버퍼가 큐(queue)로 조직되는 것을 특징으로 하는 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리시키는 장치.
  20. 제 10 항에 있어서,
    a) 두드러진 캐시 미스의 리턴을 기다리고 있는 메모리 요청을 지닌 이전 미스 버퍼,
    b) 캐시 미스 동작에 의해 되돌아오는 캐시 라인들을 지닌 필 버퍼,
    c) 메모리 요청을 발생시키는 컴퓨터 시스템 파이프라인,
    d) 데이터 어레이에 대한 회선쟁탈로 인해 지연된 로드 요청을 지닌 로드 버퍼, 그리고
    e) 데이터 어레이에 대한 회선쟁탈로 인해 지연된 저장 요청을 지닌 저장 버퍼들 사이에서
    상기 데이터 어레이에 대한 액세스들을 조정하도록 구성된 아비터 조정 메카니즘함을 더욱 포함함을 특징으로 하는 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리시키는 장치.
  21. 제 10 항에 있어서, 상기 장치는 두드러진 캐시 미스 동작과 관련되어 있는 한 캐시 위치로의 캐시 필 동작을 차단하도록 구성됨을 특징으로 하는 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리시키는 장치.
  22. 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리시키는 장치로서,
    -상기 장치가 캐시 메모리, 캐시 메모리 내의 요청 입력(request input), 캐시 메모리 내의 태그 어레이, 캐시 메모리 내의 데이터 어레이, 태그 액세스 메커니즘, 그리고 상기 캐시 메모리 내의 데이터 어레이 액세스 메커니즘을 포함하고,
    -상기 캐시 메모리 내의 요청 입력이 메모리 요청을 수신하도록 구성되고, 상기 메모리 요청은 메모리 요청에 관련된 메모리 위치를 식별시키는 어드레스를 포함하며;
    - 상기 태그 액세스 메커니즘이 상기 캐시 메모리 내 태그 어레이로부터 한 개 이상의 태그를 룩업(탐색)함으로써, 그리고, 한 개 이상의 태그를 상기 어드레스를 갖는 태그 부분과 비교하여 상기 어드레스를 지닌 캐시 라인이 캐시 메모리에 위치하는 지를 결정하도록 함으로써 상기 태그 액세스를 실행하고;
    - 상기 어드레스를 지닌 캐시 라인이 상기 캐시 메모리 내에 위치하지만 이 같은 캐시 라인을 지닌 데이터 어레이가 사용 중이기 때문에, 상기 태그 룩업이 캐시 히트를 발생시킨다면, 상기 캐시 메모리 내의 데이터 액세스 메커니즘이 상기 데이터 어레이가 사용되지 않는 때인 나중에 상기 데이터 어레이로 해당 데이터 액세스를 실행하도록 구성되며;
    -상기 메모리 요청이 로드 동작에 대한 것이라면, 상기 해당 데이터 액세스가 로드 동작이 끝날 때까지 기다리지 않고 발생되도록 하고;
    -상기 데이터 액세스가 로드 동작이 끝날 때까지 기다리지 않고 실행되도록 한다는 것은:
    상기 데이터 어레이로부터의 데이터를 적재하도록 시도하고,
    로드 버퍼 내에 상기 로드 동작을 저장하여 상기 데이터 어레이에 대한 회선 쟁탈을 예측하도록 하며, 그리고
    이전 미스(prior miss)내에 빈 슬롯을 식별시키어 캐시 미스를 예측하도록 하고, 상기 동작들이 병렬로 실행되며;
    한 이전 미스 버퍼가 두드러진 캐시 미스의 리턴을 기다리고 있는 메모리 요청들을 지니고;
    한 필 버퍼는 캐시 미스 동작들에 의해 되돌아오는 캐시 라인을 지니며;
    한 로드 버퍼는 데이터 어레이에 대한 액세스의 회선 쟁탈로 인해 지연된 캐시 히트에 의해 발생된 로드 요청들을 지니고; 그리고
    한 저장 버퍼가 데이터 어레이에 대한 액세스의 회선쟁탈로 지연된 캐시 히트에 의해 발생된 저장 요청들을 지니는 것을 특징으로 하는 캐시 메모리 내에서 태그 액세스를 해당 데이터 액세스로부터 분리시키는 장치.
  23. 태그 액세스를 해당 데이터 액세스로부터 분리하는 캐시 메모리를 포함하는 컴퓨터 시스템으로서,
    상기 컴퓨터 시스템이 프로세서, 메모리, 상기 프로세서와 메모리 사이에 연결되는 캐시 메모리, 캐시 메모리 내 요청 입력, 캐시 메모리 내의 태그 어레이, 캐시 메모리 내의 데이터 어레이, 태그 액세스 메커니즘, 그리고 상기 캐시 메모리 내 데이터 어레이 액세스 메커니즘을 포함하고;
    -상기 캐시 메모리내 요청 입력이 메모리 요청을 수신하도록 구성되고, 상기 메모리 요청은 메모리 요청에 관련된 메모리 위치를 식별시키는 어드레스를 포함하며;
    - 상기 태그 액세스 메커니즘이 상기 캐시 메모리 내 태그 어레이로부터 한 개 이상의 태그를 룩업(탐색)함으로써, 그리고, 한 개 이상의 태그를 상기 어드레스를 갖는 태그 부분과 비교하여 상기 어드레스를 지닌 캐시 라인이 캐시 메모리에 위치하는 지를 결정하도록 함으로써 상기 태그 액세스를 실행하고;
    - 상기 어드레스를 지닌 캐시 라인이 상기 캐시 메모리 내에 위치하지만 이 같은 캐시 라인을 지닌 데이터 어레이가 사용 중이기 때문에, 상기 태그 룩업이 캐시 히트를 발생시킨다면, 상기 캐시 메모리 내의 데이터 액세스 메커니즘이 상기 데이터 어레이가 사용되지 않는 때인 나중에 상기 데이터 어레이로 해당 데이터 액세스를 실행하도록 구성되며;
    -상기 메모리 요청이 로드 동작에 대한 것이라면, 상기 해당 데이터 액세스가 로드 동작이 끝날 때까지 기다리지 않고 발생되도록 하고; -상기 데이터 액세스가 로드 동작이 끝날 때까지 기다리지 않고 실행되도록 한다는 것은:
    상기 데이터 어레이로부터의 데이터를 적재하도록 시도하고,
    로드 버퍼 내에 상기 로드 동작을 저장하여 상기 데이터 어레이에 대한 회선 쟁탈을 예측하도록 하며, 그리고
    이전 미스(prior miss)내에 빈 슬롯을 식별시키어 캐시 미스를 예측하도록 하고, 상기 동작들이 병렬로 실행되며; 그리고
    - 상기 데이터 어레이가 사용되지 않는 때인 나중에 상기 해당 데이터 액세스를 실행하도록 함이,
    a) 한 로드 버퍼에 상기 로드 동작에 대한 엔트리를 저장함을 포함하고, 이때 상기 엔트리가 상기 태그 액세스중에 결정되었던 상기 데이터 어레이내 해당 캐시 라인의 한 위치를 명시하는 것이며, 그리고
    b) 상기 데이터 어레이가 나중에 사용되고 있지 않을 때, 상기 엔트리를 사용하여 상기 데이터 어레이 내 캐시 라인의 위치를 결정하기 위해 다시 상기 태그 액세스를 실행할 필요없이 상기 데이터 어레이로부터 로드 동작을 실행하도록 함을 포함하는 것임을 특징으로 하는 태그 액세스를 해당 데이터 액세스로부터 분리하는 캐시 메모리를 포함하는 컴퓨터 시스템.
KR1020047003430A 2001-09-14 2002-09-13 캐시 메모리 내 태그 액세스 및 데이터 액세스의 분리방법 및 장치 KR100617663B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US32398901P 2001-09-14 2001-09-14
US60/323,989 2001-09-14
PCT/US2002/029259 WO2003025757A2 (en) 2001-09-14 2002-09-13 Method and apparatus for decoupling tag and data accesses in a cache memory

Publications (2)

Publication Number Publication Date
KR20040033029A KR20040033029A (ko) 2004-04-17
KR100617663B1 true KR100617663B1 (ko) 2006-08-28

Family

ID=23261595

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047003430A KR100617663B1 (ko) 2001-09-14 2002-09-13 캐시 메모리 내 태그 액세스 및 데이터 액세스의 분리방법 및 장치

Country Status (6)

Country Link
US (1) US6944724B2 (ko)
EP (1) EP1425670A2 (ko)
JP (1) JP4417715B2 (ko)
KR (1) KR100617663B1 (ko)
AU (1) AU2002330027A1 (ko)
WO (1) WO2003025757A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100985517B1 (ko) 2008-12-04 2010-10-05 주식회사 에이디칩스 캐시메모리 제어방법
KR101121487B1 (ko) 2008-11-21 2012-02-28 엔비디아 코포레이션 멀티-클래스 데이터 캐시 정책들

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030137519A1 (en) * 2002-01-22 2003-07-24 Nazanda Rima M. Method and apparatus to handle multiple requests to different memory agents
US20050010595A1 (en) * 2003-07-11 2005-01-13 International Business Machines Corporation System and method for automating an identification mechanism and type information configuration process for a real-time data feed to a database
US7769950B2 (en) * 2004-03-24 2010-08-03 Qualcomm Incorporated Cached memory system and cache controller for embedded digital signal processor
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
US7836262B2 (en) 2007-06-05 2010-11-16 Apple Inc. Converting victim writeback to a fill
US8239638B2 (en) * 2007-06-05 2012-08-07 Apple Inc. Store handling in a processor
US20090006777A1 (en) * 2007-06-28 2009-01-01 Donley Greggory D Apparatus for reducing cache latency while preserving cache bandwidth in a cache subsystem of a processor
US20090006756A1 (en) * 2007-06-29 2009-01-01 Donley Greggory D Cache memory having configurable associativity
GB2456405B (en) * 2008-01-15 2012-05-02 Ibm Store aborting
US8103831B2 (en) * 2008-03-31 2012-01-24 Intel Corporation Efficient method and apparatus for employing a micro-op cache in a processor
US8332590B1 (en) * 2008-06-25 2012-12-11 Marvell Israel (M.I.S.L.) Ltd. Multi-stage command processing pipeline and method for shared cache access
JP2010033480A (ja) * 2008-07-31 2010-02-12 Sony Corp キャッシュメモリおよびキャッシュメモリ制御装置
JP2010146084A (ja) * 2008-12-16 2010-07-01 Toshiba Corp キャッシュメモリ制御部を備えるデータ処理装置
US20100169578A1 (en) * 2008-12-31 2010-07-01 Texas Instruments Incorporated Cache tag memory
US8352683B2 (en) * 2010-06-24 2013-01-08 Intel Corporation Method and system to reduce the power consumption of a memory device
US20130145097A1 (en) * 2011-12-05 2013-06-06 Qualcomm Incorporated Selective Access of a Store Buffer Based on Cache State
JP2014006807A (ja) * 2012-06-26 2014-01-16 Fujitsu Ltd 演算処理装置、キャッシュメモリ制御装置及びキャッシュメモリの制御方法
US9110811B2 (en) * 2012-09-18 2015-08-18 Oracle International Corporation Prefetching method and apparatus
US9529720B2 (en) * 2013-06-07 2016-12-27 Advanced Micro Devices, Inc. Variable distance bypass between tag array and data array pipelines in a cache
US9665468B2 (en) 2013-08-19 2017-05-30 Intel Corporation Systems and methods for invasive debug of a processor without processor execution of instructions
US9632947B2 (en) * 2013-08-19 2017-04-25 Intel Corporation Systems and methods for acquiring data for loads at different access times from hierarchical sources using a load queue as a temporary storage buffer and completing the load early
US9779025B2 (en) 2014-06-02 2017-10-03 Micron Technology, Inc. Cache architecture for comparing data
US10922230B2 (en) * 2016-07-15 2021-02-16 Advanced Micro Devices, Inc. System and method for identifying pendency of a memory access request at a cache entry
US10565109B2 (en) 2017-09-05 2020-02-18 International Business Machines Corporation Asynchronous update of metadata tracks in response to a cache hit generated via an I/O operation over a bus interface
US10579535B2 (en) 2017-12-15 2020-03-03 Intel Corporation Defragmented and efficient micro-operation cache

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4370710A (en) * 1980-08-26 1983-01-25 Control Data Corporation Cache memory organization utilizing miss information holding registers to prevent lockup from cache misses
DE69323790T2 (de) * 1992-04-29 1999-10-07 Sun Microsystems, Inc. Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem
US5745729A (en) * 1995-02-16 1998-04-28 Sun Microsystems, Inc. Methods and apparatuses for servicing load instructions
US6732236B2 (en) * 2000-12-18 2004-05-04 Redback Networks Inc. Cache retry request queue
US6915396B2 (en) * 2001-05-10 2005-07-05 Hewlett-Packard Development Company, L.P. Fast priority determination circuit with rotating priority

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101121487B1 (ko) 2008-11-21 2012-02-28 엔비디아 코포레이션 멀티-클래스 데이터 캐시 정책들
KR100985517B1 (ko) 2008-12-04 2010-10-05 주식회사 에이디칩스 캐시메모리 제어방법

Also Published As

Publication number Publication date
US6944724B2 (en) 2005-09-13
WO2003025757A2 (en) 2003-03-27
JP4417715B2 (ja) 2010-02-17
US20030056066A1 (en) 2003-03-20
KR20040033029A (ko) 2004-04-17
WO2003025757A3 (en) 2003-10-16
JP2005533295A (ja) 2005-11-04
AU2002330027A1 (en) 2003-04-01
EP1425670A2 (en) 2004-06-09

Similar Documents

Publication Publication Date Title
KR100617663B1 (ko) 캐시 메모리 내 태그 액세스 및 데이터 액세스의 분리방법 및 장치
US5353426A (en) Cache miss buffer adapted to satisfy read requests to portions of a cache fill in progress without waiting for the cache fill to complete
JP4298800B2 (ja) キャッシュメモリにおけるプリフェッチ管理
JP2005533295A5 (ko)
US7594100B2 (en) Efficient store queue architecture
KR100955433B1 (ko) 파이프라인 구조를 갖는 캐시 메모리 및 이를 제어하는방법
US8190825B2 (en) Arithmetic processing apparatus and method of controlling the same
US20080189487A1 (en) Control of cache transactions
JPH08194615A (ja) 情報処理装置
WO2003001369A2 (en) Method and apparatus for facilitating speculative stores in a multiprocessor system
WO2003001383A2 (en) Using an l2 directory to facilitate speculative loads in a multiprocessor system
US10740029B2 (en) Expandable buffer for memory transactions
US7260674B2 (en) Programmable parallel lookup memory
JPH0668736B2 (ja) 2個のシステムクロックサイクルを利用する書込み動作をもったキャッシュメモリユニットを供与する装置及び方法
EP0543487B1 (en) Method and cache memory controller for fetching data for a CPU that further reduces CPU idle time
JP2000285023A (ja) ファイル制御装置
JP2006018841A (ja) さまざまなメモリラインサイズに適応的に対応可能なキャッシュメモリシステムおよび方法
US8356141B2 (en) Identifying replacement memory pages from three page record lists
US7900023B2 (en) Technique to enable store forwarding during long latency instruction execution
JP6016689B2 (ja) 半導体装置
US20230418749A1 (en) Processor and method for designating a demotion target to be demoted from an in-core cache structure to an out-of-core cache structure
US6944698B2 (en) Method and apparatus for providing bus arbitrations in a data processing system

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

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20130801

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150717

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160720

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170719

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20180730

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20190729

Year of fee payment: 14