KR100252570B1 - 축소된요구블로킹을갖는캐시메모리 - Google Patents

축소된요구블로킹을갖는캐시메모리 Download PDF

Info

Publication number
KR100252570B1
KR100252570B1 KR1019950046155A KR19950046155A KR100252570B1 KR 100252570 B1 KR100252570 B1 KR 100252570B1 KR 1019950046155 A KR1019950046155 A KR 1019950046155A KR 19950046155 A KR19950046155 A KR 19950046155A KR 100252570 B1 KR100252570 B1 KR 100252570B1
Authority
KR
South Korea
Prior art keywords
request
cache memory
cache
memory
bus
Prior art date
Application number
KR1019950046155A
Other languages
English (en)
Other versions
KR960024987A (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 KR960024987A publication Critical patent/KR960024987A/ko
Application granted granted Critical
Publication of KR100252570B1 publication Critical patent/KR100252570B1/ko

Links

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
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures

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

축소된 블로킹을 갖는 캐시메모리는 캐시가 이미 서비스하고 있는 요구의 타입에 근거하여 요구가 캐시메모리에 의해 수용되지 않도록 블로킹한다. 캐시메모리에서 히트하는 요구, 또는 캐시메모리에서 미스하지만 이미 서비스되고 있는 어떤 요구와 콘플릭트하지 않는 요구는 블로킹되지 않는다. 캐시메모리에서 미스하고 또한 이미 서비스되고 있는 요구 (들)과 콘플릭트하는 요구는 요구가 블로킹되어진다.
일 실시예에서, 기입요구에 대한 콘플릭트는 기입요구와 동일한 캐시세트로 매핑하는 요구에 대한 시스템 메모리로부터의 캐시라인을 캐시가 이미 검색하고 있는지를 체크함으로써 판단된다. 이와 같은 요구가 있다면, 콘플릭트가 발생한다. 이 실시예에서, 판독요구에 대한 콘플릭트는 동일 주소의 메모리에 대한 미해결한 요구를 캐시가 이미 서비스하고 있는지를 체크함으로써 판단된다. 그렇다면, 콘플릭트가 발생한다.
그렇지 않다면, 콘플릭트는 판독요구에 대한 희생라인이 더티상태이고 희생라인을 일시적으로 기억시키는 재기입 버퍼에 어떤 공간도 존재하지 않는다면 발생하지 않는다.

Description

축소된 요구 블로킹을 갖는 캐시메모리
제 1도는 본 발명의 일 실시예에서의 컴퓨터 시스템의 메모리 서브시스템의 블록도.
제 2도는 본 발명의 일 실시예에서의 메모리 서브시스템의 외부 버스논리유닛 (이하, 유닛은 생략함)을 나타내는 블록도.
제 3도는 본 발명의 일 실시예에서의 메모리 서브시스템의 백사이드(backside) 버스 논리를 나타내는 블록도.
제 4도는 본 발명의 L2 캐시메모리의 일 실시예의 블록도,
제 5도는 본 발명의 컴퓨터 시스템의 개략 블록도.
제 6도는 본 발명의 일 실시예에서의 기입 요구에 응답할시의 캐시메모리 서브시스템이 수반하는 단계를 나타내는 순서도,
제 7도는 본 발명의 일 실시예에서 판독 요구에 응답할시의 캐시메모리 서브시스템이 수반하는 단계를 나타내는 순서도.
[발명의 상세한 설명]
[발명의 목적]
[발명이 속하는 기술분야 및 그 분야의 종래기술]
본 발명은 컴퓨터 분야에 관한 것이다. 더욱 구체적으로는, 본 발명은 컴퓨팅 시스템에 사용되는 캐시메모리 시스템에 관한 것이다.
[발명이 이루고자 하는 기술적 과제]
컴퓨터 기술은 지속적으로 진보하고 있어 점점더 빠른 속도로 동작하는 마이크로프로세서를 가져오고 있다. 이러한 고속 마이크로프로세서를 충분히 이용하기 위해서는 데이타 기억능력이 증가된 속도에 뒤지지 않아야 한다. 그러나, 고속 메모리는 매우 값비싸고, 그 비용은 수많은 현재 소프트웨어 프로그램이 요구하는 대용량의 메모리에 의해 더욱 증폭되고 있다.
값비싼 메모리 문제의 한가지 해결책은 캐시메모리 서브시스템이다. 캐시메모리 서브시스템은 일반적으로 시스템 메모리유닛보다 훨씬 소용량이지만 시스템 메모리보다 유효하게 고속도로 동작하는 메모리유닛이다. 캐시메모리의 목적은 마이크로프로세서가 다음에 사용할 정보 (데이타든지 또는 명령어이든지)를 포함하는 것이다. 이 정보는 그후 캐시메모리의 고속도에 기인하여 매우 빠르게 마이크로프로세서로 복귀될 수 있다.
캐시메모리는 전형적으로 시스템 메모리보다 훨씬 소용량이므로, 메모리주소의 일부분만이 정보가 캐시메모리의 어느 기억장소에 배치되어야 하는지를 판단하는데 사용된다.
이 부분은 "인덱스"라고 칭한다. 일반적으로 "태그부"라고 칭하는 메모리주소의 제 2 부분은 특정한 기억장소와 매치하는 정보에 대한 순차적인 요구가 기억장소에 현재 기억되어 있는 데이타에 대한 것인지를 판단하는데 사용된다. 따라서, 다중 시스템 메모리주소는 캐시메모리의 동일 기억장소를 참조한다.
캐시메모리 서브시스템의 동작은 변화하지만, 일반적으로 데이타는 시스템 메모리와 캐시메모리 사이에서 스와핑된다. 마이크로프로세서가 메모리로부터 예컨대 실행할 명령어 또는 명령어에 관련된 데이타 등의 정보를 요구할 경우에, 소정 정보의 메모리 주소를 캐시메모리로 전송한다. 캐시메모리가 정보를 포함한다면, 그렇다면 것을 지시하는 신호를 마이크로프로세서에 발행한다; 이 신호는 통상 "히트(hit)"라 칭해진다. 그후 캐시메모리는 요구된 정보를 마이크로프로세서로 복귀시킨다. 따라서, 마이크로프로세서는 캐시메모리의 보다 빠른 속도에 기인하여 매우 빨리 요구된 정보를 수신한다.
그러나, 캐시메모리가 마이크로프로세서에 의해 요구되는 정보를 포함하지 않는다면, 통상 "미스(miss)"라 칭해지는 신호가 마이크로프로세서로 복귀된다. 미스는 보다 느린 시스템 메모리로부터 정보를 검색해야 한다는 것을 마이크로프로세서에 지시한다. 대안적으로, 캐시메모리 제어기가 시스템 메모리로부터 정보를 검색하고 그 정보를 마이크로프로세서로 복귀시킬 수 있다.
마이크로프로세서가 시스템메모리로부터 정보를 검색하든지 또는 캐시제어기가 검색하든지에 상관없이, 검색된 정보는 마이크로프로세서로 복귀되고 또한 캐시메모리에 기억된다. 마이크로프로세서가 다른 캐시라인에 의해 이미 이용되고 있는 캐시메모리의 기억장소에 대응하는 메모리주소를 요구할 경우에, 콘플릭트(conflict)가 발생한다. 어떤 시스템에서, 이러한 상황은 캐시메모리의 특정 기억장소에 기억된 정보를 시스템 메모리로 전송하고 시스템 메모리에 기억된 정보를 캐시메모리의 상기 특정 기억장소로 전송함으로써 해결된다.
콘플릭트가 발생할 경우 캐시메모리가 정보를 시스템메모리로 전송해야 할지의 여부는 또한 적용되는 캐시방식에 따른다. 예컨대, 어떤 캐시방식 (통상 "시종기입(write-through)" 방식이라 함)은 캐시의 정보가 갱신될때마다 정보를 시스템메모리로 전송한다. 따라서, 시스템메모리로부터 새로운 정보를 검색할때에, 캐시의 정보는 시스템메모리로 전송될 필요가 없다. 그러나, 다른 캐시방식 (통상 "재기입(write-back)"이라 함)은 캐시라인 콘플릭트가 발생하고 캐시라인이 변경 (통상 "더티(dirty)" 상태가 된다고 함) 되었을 경우에만 캐시라인을 시스템메모리로 전송한다.
캐시메모리가 캐시미스의 경우에 특정 기억장소의 정보를 시스템메모리로 전송해야 할지의 여부에 상관없이, 시스템메모리로부터의 정보는 캐시메모리로 전송된다.
시스템메모리로부터의 정보를 캐시메모리로 검색하는 것은 통상 정보를 "페칭(fetching; 인출)"한다고 한다. 시스템메모리로부터의 정보의 페칭은 시스템 버스의 속도뿐만 아니라 시스템메모리의 느린 속도에 기인하여, 프로세서의 속도에 관하여 느린 동작이다. 따라서, 이 속도차이는 캐시메모리가 시스템메모리로부터 정보를 페칭하는 처리중에 있는 동안 프로세서가 캐시메모리에 추가적인 요구를 발생하는 상황을 가져올 수 있다.
캐시메모리가 시스템 메모리로부터 정보를 페칭하고 있을 경우에, 캐시 무결성이 유지되는 것을 보증하도록 고려되어야 한다. 예컨대, 프로세서가 캐시메모리에서 미스한 메모리주소(A)에 대한 판독요구를 발행한다면, 캐시메모리는 시스템 메모리로부터 주소(A)에서의 정보를 페칭하는 처리를 개시한다. 그러나, 프로세서는 캐시메모리가 시스템메모리로부터 주소(A)의 페치를 완료하기 전에 메모리주소(B)에 대한 제 2 요구를 발행할 수 있다. 주소(A)와 주소(B)가 동일 세트로 매핑한다면 캐시메모리는 둘중 어느 한 요구에 대해 잘못된 정보를 프로세서로 복귀시키지 않는다는 것을 보증하도록 고려되어야 한다.
정확한 정보가 프로세서로 복귀되는 것을 보증하는 한가지 방법은 캐시메모리가 시스템 메모리로부터 정보를 페칭하고 있는 동안 프로세서로부터의 모든 요구를 "블로킹"하는 것이다. 즉, 프로세서로부터의 어떤 요구도 페칭되고 있는 정보가 캐시메모리에 실제로 기억될때까지 캐시메모리에 의해 서비스되지 않는다. 그러나, 이 방법은 대기하는 동안 프로세서에 대한 지연이 "언블로킹"되도록 한다. 시스템메모리와 프로세서 사이의 속도차에 기인하여, 이것은 실질적인 지연일 수 있다.
따라서, 마이크로프로세서를 지원하기 위해서 캐시메모리 시스템을 효율적으로 이용하는 방법을 제공하는 것이 유용할 것이다.
또한, 동시에 정확한 정보가 프로세서로 복귀되는 것을 보증하면서 프로세서로부터의 요구는 블로킹을 축소하는 캐시메모리 시스템을 제공하는 것이 유용할 것이다.
본 발명은 이들 및 다른 효과적인 결과를 제공한다.
[발명의 요약]
축소된 요구 블로킹을 갖는 캐시메모리가 기술된다. 캐시메모리는 캐시가 이미 서비스하고 있는 요구타입에 근거하여 요구가 캐시메모리에 의해 수용되지 않도록 블로킹한다. 캐시메모리에서 히트하는 요구 또는 캐시메모리에서 미스하지만 이미 서비스되고 있는 요구와 콘플릭트하지 않는 요구는 블로킹되지 않는다. 캐시메모리에서 미스하고 또한 이미 서비스되고 있는 요구(들)와 콘플릭트하는 요구는 요구가 블로킹 되어진다.
일 실시예에서, 기입 요구에 대한 콘플릭트는 기입 요구와 동일 캐시세트로 매핑하는 요구에 대해 캐시가 이미 시스템 메모리로부터 캐시라인을 검색하고 있는지를 체크함으로써 판단된다. 이러한 요구가 있다면, 콘플릭트가 발생한다. 판독 요구에 대한 콘플릭트는 캐시가 이미 동일 주소에 대한 메모리에 미해결한(outstanding) 요구를 서비스하고 있는지를 체크함으로써 판단된다. 그렇다면, 콘플릭트가 발생한다.
그렇지 않다면, 판독 요구에 대한 희생라인(victim line) 이 더티상태이지 않고 재기입 버퍼내에 어떤 공간도 일시적으로 희생라인을 기억시키는데 존재하지 않는 것이 아니라면 콘플릭트가 발생하지 않는다.
[발명의 상세한 설명]
하기의 상세한 설명에서 많은 특정 세부사항은 본 발명의 전반적인 이해를 제공하기 위해서 개시된다. 그러나, 이러한 특성 세부사항없이 본 발명이 실행될 수 있다는 것은 본 기술의 당업자에 의해 이해될 것이다. 다른 실례에서, 공지된 방법, 순서, 구성요소, 및 회로는 본 발명의 측면을 불명료하게 하지 않기 위해서 상세히 기재되어 있지 않다. 본 발명은 다양한 다른 프로세서 아키텍쳐에 적용될 수 있다는 것으로 주목되어야 한다. 더욱이, 본 발명은 단일 또는 다중 칩 구현에 의해 또는 실리콘 또는 갈륨 비화물에 의한 제조 또는 다른 공정에 의해서와 같이, 다양한 방법으로 실행될 수 있다.
[메모리 서브시스템의 일 실시예]
제 1도는 본 발명의 일 실시예에서 컴퓨터 시스템의 메모리 서브시스템의 블록도이다. 경계선은 프로세서내에 포함되는 메모리 서브시스템의 부분 및 프로세서에 대한 외부 부분을 정의하기 위해 도시되어 있다. 제 1도를 참조하면, L2 캐시메모리(101)는 백사이드 버스(102)에 결합된다. 백사이드 버스(102)는 또한 백사이드 버스논리(BBL; 103)에 결합된다. 백사이드 버스논리(103)는 또한 외부 버스논리(EBL; 104), 명령어 페치유닛(IFU; 105) 및 데이타 캐시유닛(DCU; 106)에 결합된다. 외부 버스논리(104)는 또한 명령어 페치유닛(105), 데이타유닛(106) 및 시스템 버스(107)에 결합된다.
또한 시스템 버스(107)에는 시스템 메모리(108)가 결합된다.
명령어 페치유닛(105)은 명령어 페치논리 및 명령어 캐시를 포함하고 프로세서에서의 실행을 위한 명령어를 페치한다. IFU(105)의 명령어 캐시가 더 많은 명령어를 페치하고자 할때, 외부 버스논리(104)에 신호경로(110)로 요구를 전송한다. 외부 버스논리(104)는 L2 캐시메모리(101)에 요구를 발송하는 백사이드 버스논리(103)에 요구라인(115)으로 요구를 전송한다. 응답하여 L2 캐시메모리(101)는 판독동작을 수행한다. L2 캐시메모리(101)에서 히트가 있다면, 명령어는 백사이드 버스논리(103) 및 백사이드 버스(102)로부터 데이타 복귀 신호경로(111)로 명령어 페치유닛(105)에 복귀된다.
DCU(106)는 명령어를 실행하는데 있어서 프로세서에 의한 이용을 위해 데이타의 일시적인 복사를 유지한다. 일 실시예에서, DCU(106)는 L1 캐시메모리로 구성된다.
명령어를 실행하는데 있어서, 데이타가 DCU(106) (즉, L1 캐시)에 있지 않다면, 외부 버스논리(104)에 요구신호경로(112)로 요구를 행한다. 외부 버스논리(104)는 L2 캐시메모리(101)에 요구를 발송하는 백사이드 버스논리(103)에 요구라인(115)으로 요구를 전송한다. 데이타가 L2 캐시메모리(101)에 있다면 (즉, L2 캐시메모리(101) 에서 히트한다면), 데이타는 발송되고 데이타 복귀 신호경로(113)로 DCU(106)에 복귀된다. 데이타가 DCU(106)로부터 재기입될때 또는 DCU(106)에 더이상 여분이 없다면, 데이타는 백사이드 버스논리(103)를 거쳐 백사이드 버스(102)에 그리고 L2 캐시메모리(101)에 전송된다.
L2 캐시메모리(101)로부터의 데이타가 시스템 메모리(108)로 재기입될 때, 백사이드 버스논리(103)로부터 요구라인(116)을 거쳐 외부 버스논리(104)에 요구를 행한다. 데이타는 백사이드 버스(102)로부터 백사이드 버스논리(103)를 통해 데이타경로(127)를 거쳐 외부 버스논리(104)에 기입된다. 외부 버스논리(104)는 외부버스(117)로 데이타를 시스템 버스(107)를 거쳐 시스템 메모리(108)에 기입함으로써 데이타를 제어한다. L2 캐시메모리(101)에서 미스가 있을때, 외부 버스논리(104)는 외부버스(117) 및 시스템 버스(107)를 이용하여 시스템 메모리(108)에 요구를 전송한다. 복귀된 데이타는 외부 버스논리(104)에 의해 수신되고 L2 캐시메모리(101) 내의 기억을 위해 데이타 경로(127)를 거쳐 백사이드 버스논리(103)에 전송된다. 그후 데이타는 데이타 복귀라인(113)을 거쳐 DCU(106)에, 백사이드 버스(102)를 거쳐 L2 캐시메모리(101)에 기입된다.
명령어 페치유닛(105)으로부터의 프로세서 액세스는 데이타를 변경할 의도없이 항상 페치동작이다. 마찬가지로, 판독동작을 실행하는 프로세서에 의해 발생되는 데이타 캐시(106)로부터의 판독동작은 항상 데이타 페치동작이다. 이들 요구는 L2 캐시메모리(101)에서 미스한다면 메모리로부터의 판독동장으로서 시스템 버스(107)에 발송된다.
제 1도에 도시된 바와 같은 백사이드 버스논리(103)는 프로세서 칩내에 포함된다. 대안적인 실시예에서, BBL(103)은 L2 칩내에 포함된다. 따라서, 이 대안적인 실시예에서, L2 캐시에 대한 제어논리는 L2 칩내에 포함된다.
[외부 버스논리]
제 2도는 제 1도의 외부 버스논리(104)의 일 실시예를 보다 상세히 나타내는 블록도이다. EBL(104)은 외부 버스요구 큐(210), 외부 제어논리(220), 외부 버스 인터페이스(230), 및 백사이드 큐(240)를 포함한다. 외부 버스 인터페이스(230)는 외부버스(117)를 거쳐 EBL(104)과 시스템 버스(107) 사이를 인터페이스하기 위한 래치 및 필수회로를 포함한다.
외부 제어논리(220)는 프로세서가 시스템 버스(107)를 거쳐 다른 대리버스와 인터페이스하도록 시스템 버스 프로토콜을 구현한다. 외부 제어논리(220)는 외부 버스요구 큐(210)로부터 시스템 버스에 요구를 발송하고 또한 외부 버스요구 큐(210)에 외부요구 활동을 알린다. 부가적으로, 외부 제어논리(220)는 데이타 경로(221) 및 데이타 복귀(222)를 거쳐 시스템 버스(107)와 BBL(103) 사이에서 요구를 전송하고 시스템 버스(107) 상에 모든 미해결한 요구의 상태를 추적한다.
본 발명의 일 실시예에서, 외부 제어논리(220)는 또한 외부 스눕(snoop) 논리뿐만 아니라 에러 정정 및 검출 논리를 포함한다. 에러 정정 및 검출 논리는 출력 데이타에 대한 에러정정코드(ECC) 신드롬 및 출력주소 및 요구에 대한 패리티를 생성하고 또한 입력주소, 요구 및 응답핀상에서 패리티 및 입력 데이타핀상에서 ECC를 체크한다. 외부 스눕논리는 시스템 버스, IFU, DCU로부터 수신되는지 또는 자체 생성되는지 모든 스눕 요구를 제어한다. 외부 스눕논리는 백사이드 버스논리 및 시스템 버스로부터 수신된 요구에 근거하여 DCU, 백사이드 버스논리, 및 외부 버스 요구큐에 스눕 질의를 발행한다.
외부 버스 요구큐(210)는 DCU(106) 및 IFU(105)로부터 트랜잭션 요구를 처리하는 역할을 한다. 이것은 L2 캐시메모리(101)로부터 서비스를 요구하는 요구들을 BBL(103)에 전달하고 L2 캐시메모리(101)가 시스텝 버스에 성공적으로 처리할 수 없다( 즉, L2 캐시가 미스한다)는 것을 발송한다.
EBL(104)은 또한 백사이드 큐(240)를 포함한다. 본 발명의 일 실시예에서, 백사이드 큐(240)는 외부버스 요구큐(210)로부터 BBL(103)로 트랜잭션을 큐잉하는 선입선출(FIFO)큐이다. 일 구현에서, 백사이드 큐(240)는 4개의 트랜잭션을 위한 기억공간을 포함한다. 본 발명의 일 실시예에서, 요구는 3 가지 상황에서 외부 버스 요구큐(210)로 부터 백사이드 큐(240)로 배치된다: (1) 요구가 IFU(105) 또는 DCU(106)로부터 큐(210)로 수용될 경우; (2) 요구가 제시되고 그후 BBL(103)에 의해 거부될 경우; 및 (3) 요구가 L2 캐시메모리(101)를 목적으로 한 시스템 버스로부터 데이타를 수신하였을 경우이다. 이들 요구는 요구라인(1150을 거쳐 BBL(103)에 발송된다. 이 실시예에서, 요구가 상태라인(242)을 거쳐 BBL(103)에 제시되고 긍정응답될 경우 백사이드 큐(240)로부터 제거된다. 본 발명의 일 실시예에서, 백사이드 큐(240)에서의 각 큐엔트리는 요구의 주소, 요구타입, 및 요구에 대한 고유한 식별 태그를 포함한다. 부가적인 정보는 또한 요구타입에 따라서 요구길이, 방식 또는 상태 (예컨대, 공지된 MESI 상태 프로토콜) 등이 포함될 수 있다.
외부 버스 요구큐(210)는 요구가 EBL(104)로 수용될 순간으로부터 마지막 종료가 캐시로 다시 핸드세이크할 때까지 IFU(105) 및 DCU(106)로부터 모든 요구의 상태를 추적한다. 일 실시예에서, 큐(210)는 4-엔트리 트랜잭션 큐(212), 2-엔트리 L2 더티 희생주소 버퍼(214) 및 제어논리(216)를 포함한다. 4-엔트리 트랜잭션 큐(212)에서의 각 엔트리는 그 트랜잭션을 추적하는데 필요한 정보를 포함한다. 일 구현에서, 이 정보는 트랜잭션의 메모리주소, 에러체크정보, 트랜잭션이 BBL(103)에 발송되었는지의 여부, 트랜잭션의 타입, 트랜잭션에 대한 고유한 식별자, 및 트랜잭션이 시스템 메모리(108)에 의해 응답되었는지의 여부를 포함한다. 2-엔트리 트랜잭션 큐(214)에서의 각 엔트리는 더티 희생캐시라인을 시스템 메모리(108)로 다시 전송하는데 필요한 정보를 포함한다. 일 구현에서, 이 정보는 트랜잭션의 메모리주소, 에러체크정보, 대응 데이타가 BBL(103)의 판독라인버퍼(340)에 있는지 여부의 지시기, 더티 희생라인의 상태, 및 이 더티희생으로 야기된 트랜잭션 큐(212)에서의 엔트리의 표시기를 포함한다.
제어논리(216)는 외부 버스 요구큐(210)를 EBL(104)의 다른 구성요소에 인터페이스하기 위한 제어논리이다. 본 발명의 일 실시예에서, 제어논리(216)는 어떤 요구가 거부되어야 하는지를 BBL(103)에 지시한다. 하기에 보다 상세히 논의될 것으로써, 제어논리(216)는 IFU(105) 또는 DCU(106)로부터 수신된 요구의 세트 또는 주소 정보를 트랜잭션 큐(212) 및/ 또는 희생주소버퍼(214) 중에서의 현재 미해결한 요구에 비교하여 매치가 있는지를 판단한다. 제어논리(216)는 요구가 매치가 발견되는지에 근거하여 거부되어야 한다는 것을 BBL(103)에 지시한다.
[백사이드 버스논리]
제 3도는 제 1도의 백사이드 버스논리(103)의 일 실시예를 보다 상세히 나타내는 블록도이다. BBL(103)은 백사이드 버스 제어논리(310), 백사이드 버스 인터페이스(320), 재기입 버퍼(330), 및 판독라인버퍼(340)를 포함한다. BBL(103)은 또한 다중 데이타 멀티플렉서(305a, 305b 및 305c)를 포함하여 L2 캐시메모리(101), EBL(104), IFU(105), 및 DCU(106) 사이에서 데이타를 루팅한다. 데이타를 요구되는 동작에 따라서, 이들 유닛의 조합으로 및 조합으로부터 루팅될 수 있다. BBL(103)은 또한 주소가 직접 또는 주소기억장치(350)을 거쳐 L2 캐시메모리(101)로 전송되도록 주소 멀티플렉서(306)를 포함한다.
백사이드 버스 제어논리(310)는 EBL(104)로부터 수신된 L2 정보에 대한 요구를 처리하고 L2 마이크로 조작이 소정 동작을 실행하는데 요구되는지를 판단한다.
이들 L2 마이크로 조작은 하기에 보다 상세히 논의된다.
백사이드 버스 인터페이스(320)는 BBL(103)과 L2 캐시메모리(101) 사이에 인터페이스를 제공한다. 백사이드 버스 인터페이스(320)는 BBL(103)과 L2 캐시메모리(101) 사이를 인터페이스하기 위한 필수 회로 및 래치를 포함한다.
판독라인버퍼(340)는 데이타 경로(221)를 거쳐 IFU(105), DCU(106), 또는 L2 캐시메모리(101)로의 복귀를 위해 외부버스로부터 도착한 데이타를 버퍼링한다.
본 발명의 일 실시예에서, 판독라인버퍼(340)는 EBL(104)의 트랜잭션 큐(212)에서의 엔트리에 대해 하나당 하나에 근거하여 버퍼링 공간을 포함한다. 일 구현에서, 판독라인버퍼(340)는 4개의 캐시라인에 대한 버퍼링 공간을 포함한다. 외부 버스 요구큐(210)는 그 자체의 상태비트를 통해 판독라인버퍼(340) 할당을 뒤따르고 판독라인버퍼(340) 에서의 데이타의 IFU(105), DCU(106) 및 L2 캐시메모리(101)로의 복귀를 스케줄링하는 역할을 한다. 본 발명의 일 실시예에서, 외부 버스 요구큐(210)는 일단 모든 미해결한 데이타의 청크(chunk)가 시스템 메모리(108)로부터 복귀하였다면 L2 캐시메모리(101)로 다시 판독라인버퍼(340) 내용을 기입하기 위해서 백사이드 버스 제어논리(310)를 요구한다.
재기입 버퍼(330)는 L2 캐시라인 희생화에 의해 야기된 더티라인 (들) 을 기억한다. 재기입 버퍼(330)에 기억된 캐시라인은 외부 메모리 기입을 목적으로 하고 데이타 복귀라인(222)을 거쳐 EBL(104)로 복귀된다. BBL(103)은 요구라인(116)을 거쳐 요구를 EBL(104)에 발행함으로써 시스템 메모리(108)로 복귀될 재기입 버퍼(330)에 기억된 캐시라인을 요구한다. 본 발명의 일 실시예에서, 재기입 버퍼(330)는 EBL(104)의 L2 더티 희생주소버퍼(214)에서의 엔트리에 따라 하나당 하나에 근거하여 캐시라인을 기억한다. 일 구현에서, 재기입 버퍼(330)는 2 개의 캐시라인에 대한 기억공간을 포함한다. 대안적으로, 재기입 버퍼(330)는 부가적인 캐시라인 또는 단일 캐시라인만에 대한 기억공간을 포함할 수 있다.
본 발명의 일 실시예에서, 희생된 캐시라인이 재기입 버퍼(330)로 전송될 경우, 백사이드 버스 제어논리(310)는 DCU(106)가 동일주소에 대한 변경된 캐사리인을 포함하는지를 체크한다. 이러한 라인이 DCU(106)에 존재한다면, DCU(106)에서의 캐시라인은 L2 캐시메모리(101)에서의 캐시라인보다 더 최근에 변경될 것이다. 일 구현에서, DCU(106)로부터의 캐시라인은 재기입을 위한 재기입 버퍼(330)로 전송되어 L2 캐시메모리(101)로부터 희생된 캐시라인을 중복기재한다. 대안적으로 구현에서, 재기입 트랜잭션은 종료된다. 따라서 캐시라인은 DCU(106)가 캐시라인의 가장 최근에 변경된 버전을 포함하기 때문에 메모리로 다시 기입되지 않는다.
백사이드 버스 제어논리(310)는 백사이크 큐(240) 및 요구라인(115)을 거쳐 EBL(104)의 외부 버스 요구큐(120)로부터 요구를 수신한다. 제어논리(310)는 상태라인(242)을 거쳐 외부 버스 요구큐(210)로 이들 요구에 응답한다. 본 발명의 일 실시예에서, 제어논리(310)는 요구가 서비스될 것인지 또는 거부되는지를 지시한다.
요구가 서비스될 것이라는 지시는 BBL(103)가 요구를 수용하고 가능한 한 잘 수행할 것이라는 것을 EBL(104)에 알린다. BBL(103)은 예컨대, 시스템 메모리(108)로부터 캐시라인을 페칭하는 것을 요구한다면 즉시 전체 태스크를 수행할 수는 없다는 것을 주목해야 한다. 이 지시는 또한 요구가 L2 캐시메모리(101)에서 히트했는지 또는 미스했는지를 지시하는 신호를 포함한다. 요구가 L2 캐시메모리(101)에서 미스한다면, 미스신호는 요구된 라인이 시스템 메모리로부터 페치되어야 한다는 것을 EBL(104)에 알린다.
백사이드 버스 제어논리(310)는 또한 요구를 거부할 수 있다. 이 상황에서, EBL(104)은 요구를 재시도한다; 즉, 요구는 이후에 다시 BBL(103)에 제출된다. 따라서, 거부된 요구는 현재 요구가 더이상 BBL(103)에 의해 거부되지 않을때까지 캐시메모리에 의해 "블로킹"된다. 제어논리(310)는 수신된 요구에 따라서 다중 요인에 근거하여 요구를 거부할지를 판단한다. 이들 요인은 하기를 포함한다: (1) EBL(104)의 제어 논리(216)가 요구가 미해결한 요구와 콘플릭트한다는 것을 지시하는지의 여부; (2) 요구가 L2 캐시메모리(101)에서 히트하는지의 여부; 및 (3) 요구된 희생 캐시라인이 더티 상태인지의 여부이다.
부가적인 제어라인 (미도시)은 또한 BBL(103)내에 다양한 구성요소와 함께 결합된다. 예컨대, 제어라인은 백사이드 버스 제어논리(310) 및 멀티플렉서(305a, 305b, 305c 및 306)에 접속한다. 이들 부가적인 제어라인은 도면을 복잡하게 하지 않고 본 발명을 불명료히 하지 않기 위해서 도시되지 않았다. 이들 제어라인에 대한 필수접속은 본 기재 내용으로부터 명백할 것이다.
본 발명의 일 실시예에서, BBL(103)은 또한 주소기억장치(350)를 포함한다.
주소기억장치(350)는 백사이드 큐(240) 및 요구라인(115)을 거쳐 EBL(104)로부터 수신된 요구주소를 기억한다. 이들 주소는 예컨대 판독라인버퍼(340)에 기억된 데이타에 대응할 수 있다. 따라서, 데이타가 판독라인버퍼(340)로 전송될 경우, 대응주소는 주소 기억장치(350)로 전송된다. 본 발명의 일 구현에서, 식별값은 주소기억장치(350)에서의 주소 및 판독라인버퍼(340)에서의 데이타와 함께 기억된다. 이 구현에서, 제어논리(310)는 이들 식별값을 비교함으로써 판독라인버퍼(340)에서의 어느 데이타가 주소기억장치(350)에서의 어느 데이타와 매치하는지를 판단할 수 있다.
[L2 캐시메모리의 일 실시예]
L2 캐시메모리(101)의 일 실시예의 블록도는 제 4도에 도시된다. 제 4도를 참조하면, L2 캐시메모리(101)는 주소래치(401), 태그 어레이(402), 태그 비교논리(403), 제어논리(404), 청크 기입버퍼(405), 데이타 어레이(406), 멀티플렉서(MUX) 선택(407), 데이타 출력 레지스터(408), 및 청크 MUX 선택논리(409)를 포함한다. 제어논리(404)는 그 입력단에 수신된 제어신호(412) 및 L2 캐시메모리에 의한 신호(400)에 부분적으로 응답하여, L2 캐시메모리(101)에서의 구성요소에 결합되어 그들의 동작을 제어한다. 제어논리(404)는 또한 신호(413)를 프로세서에 제공한다.
주소래치(401)는 버스(103)로부터 주소를 수신한다. 주소의 비트[15:5]는 태그어레이(402)에서의 세트중 한 세트를 선택한다. 세트의 내용은 비교논리(403)에서의 주소의 비트[35:16]와 비교되고 그 결과는 멀티플렉서 선택논리(407)에서 정확한 웨이를 선택하는데 이용된다. 주소의 비트[4:3]는 청크 멀티플렉서 논리(409)를 거쳐 데이타의 어느 청크가 데이타 버스(420)로 전송되는지를 선택한다. 태그 어레이(402)로부터의 상태신호는 또한 신호(413) 및 제어논리(404)를 거쳐 프로세서로 복귀된다.
일 실시예에서, 캐시메모리(101)는 256 킬로바이트 4-웨이 세트연관캐시이므로, 태그 어레이(402)가 4 개의 별개의 웨이 (웨이 0-3으로 도시됨) 를 포함한다. 일 구현에서, 태그어레이(402)는 세트 0 내지 세트 2047로 명명된 2048 세트를 포함한다.
대안적인 실시예에서, 캐시메모리(101)는 512 킬로바이트 4-웨이 세트연관캐시이다.
이 대안적인 실시예에서, 태그 어레이(402)는 4096 세트를 포함하고, 주소래치(201)에서의 주소의 비트[16:5]는 태그 어레이(402) 에서의 세트중 한 세트를 선택하고, 그리고 세트의 내용은 비교논리(403)에서 주소의 비트[35:17]와 비교된다.
각 웨이에서의 각 세트 기억장소는 태그비트, 상태비트, 및 부가 패리티피트를 포함한다. 2 개의 부가 패리티비트가 포함된다. 태그의 크기는 L2 캐시메모리의 크기에 따른다. 상태비트는 L2 캐시메모리 라인의 상태: 변경된, 배타적인, 공유한, 또는 무효한(MESI) 상태를 반영한다.
L2 캐시메모리는 변경/ 배타적/ 공유 상태를 유효한 것으로서 여기고 유효한 상태간을 구별하지 않는다는 것을 주목해야 한다. 본 발명의 일 실시예에서, 프로세서는 유효한 상태간을 구별하므로, 캐시 응집 프로토콜을 구현한다. 즉, 본 발명의 프로세서는 L2 캐시메모리내에 기억된 데이타라인의 상태(MESI) 및 라인기입상에 타겟 연관 웨이정보를 직접 제어한다. 태그 어레이에서 모든 4개의 웨이의 캐시라인에 대응하는 4 개의 태그의 각 세트는 판독 미스동안 희생라인을 결정하기 위한 1 개의 최소최근사용(LRU) 필드를 포함한다. L2 캐시메모리는 그 라인 교체방식을 위한 의사-LRU 알고리즘을 구현한다. 일 실시예에서, 태그 어레이(402)는 L2 캐시메모리에서 최소최근사용 라인을 교체하기 위해서 각 세트에 대한 엔트리를 갖는 LRU 어레이를 포함한다. 그러므로 각 세트는 1 개의 LRU 엔트리, 4 개의 태그 엔트리 및 4 개의 상태 엔트리와 연관된다.
L2 캐시메모리는 패리티를 통해 데이타 무결성을 지원한다. 데이타 무결성은 백사이드 버스상의 전송에러 및 태그 어레이(402) 및 데이타 어레이(406) 에서의 기억에러를 커버하게 된다.
일 실시예에서, 데이타 어레이(406)는 4×2K×288로서 논리적으로 편성되는 288 킬로바이트 4-웨이 세트연관 정적 랜덤 액세스 메모리(SRAM)이다. 288 비트 워드 길이는 각 청크가 64 데이타비트와 8 ECC 비트를 포함하는 72 비트 폭 청크로 구성된다. 대안적인 실시예에서, 데이타 어레이(406)는 4×2K×288로서 논리적으로 편성되는 576 킬로바이트 4-웨이 세트연관 SRAM이다.
L2 캐시메모리는 데이타 라인 판독기능 및 태그 어레이 액세스 기능을 허용하는 메카니즘에 따라 "중복없는(seamless) 데이타" 스트림을 생성하기 위해 파이프라인식 판독 액세스를 허용한다. 메모리 요구가 L2 캐시메모리에 행해지면, 판독동작이 생긴다. L2 캐시메모리에 대한 판독동작동안, 주소는 백사이드 버스의 주소버스부로 구동된다. 주소는 메모리요구의 부분을 나타낸다. 주소는 주소 래치(401)로 래치된다.
주소래치(401)의 비트[15:5]로부터의 주소의 세트번호부는 4 개의 별개의 웨이에서 세트를 선택하는데 이용된다. 각각의 웨이에서 세트에 대한 태그비트는 주소래치(401)의 비트[35:16]로부터의 주소의 태그비트부와 함께 태그비교논리(403)로 전송된다. 따라서, 메모리요구는 정보가 캐시에 있는지를 판단하기 위해서 각각의 웨이에서의 페이지 기억장소에 태그 엔트리와 비교된다. 도시된 실시예에서, 4-웨이가 있기 때문에, 4 개의 별개의 비교가 행해진다. 이들 비교는 요구된 정보가 캐시에 기억되는지를 판단하기 위해서 병렬로 발생한다.
태그중 한 태그가 주소로부터의 태그와 매치한다면, 히트가 있다. 비교결과 히트가 있는지를 판단한다면, 태그 비교논리(403)는 MUX 선택논리(407)가 데이타 어레이(406)에서 페이지 및 대응 캐시라인을 선택하도록 MUX 선택논리(407)에 신호를 출력한다. 선택된 캐시라인 데이타는 백사이드 버스의 데이타 버스부(420)로 출력을 위한 데이타를 래치하는 데이타 출력 레지스터(408)에 출력된다. 주소래치(401)의 비트[4:3]로부터의 주소의 임계 청크부를 이용하여, 청크 MUX 선택논리(407)는 프로세서로 출력되는 데이타버스(420)로 출력을 위한 데이타의 소정 청크를 선택한다. 일 실시예에서, L2 캐시메모리는 임계 청크 제 1부와 함께 버스트 방식으로 4 개의 청크에 32 바이트 캐시라인을 전송한다. 반면, 태그 어레이(402)로부터의 태그중 어느 태그도 메모리 요구의 주소의 태그부와 매치하지 않는다면, 미스가 있고 신호(413)중 한 신호를 이용하여 프로세서에 지시된다.
데이타가 L2 캐시메모리로 다시 데이타를 기입하는 프로세서의 L1 캐시에 기인하여 또는 프로세서로 입력되는 시스템 메모리로부터의 정보에 기인하여 L2 캐시메모리로 기입되고 있을때, 캐시라인은 L2 캐시메모리로 전송된다. 일 실시예에서, 캐시라인은 32 바이트이다. 데이타는 데이타 버스(420)로부터 청크 기입버퍼(405)에 의해 수신된다. 데이타 버스(420)가 단지 8 바이트 폭이고 캐시라인이 32 바이트 폭이기 때문에, 데이타는 한번에 일 청크씩 청크 기입버퍼로 수신된다. 기입 제어신호(410)는 데이타버스(420)로부터의 데이타가 청크 기입버퍼(405)에서의 그 목적된 청크 기억장소에 지시되도록 한다. 일단 청크 기입버퍼(405)가 채워지면, 기입 제어신호(410)는 데이타가 데이타 어레이(406)로 청크기입버퍼(405)로부터 전송되도록 한다.
[L2 캐시메모리의 제어]
본 발명의 프로세서는 L2 캐시메모리의 기능성을 제어하므로, L2 캐시메모리가 백사이드 버스상에 슬레이브(slave) 이다. 즉, L2 캐시메모리의 제어는 L2 캐시메모리가 무엇을 행하고 있는지를 (예컨대 L2 캐시메모리가 데이타를 전송하고 있는지를) 본 발명의 프로세서가 제어하고 인식하는 방식으로 프로세서와 L2 캐시메모리 사이에 분할된다. 본 발명의 일 실시예에서, 프로세서는 L2 캐시메모리의 프로세서에 의해 전송된 오피코드를 이용하여 L2 캐시메모리를 제어한다.
프로세서는 L2 캐시메모리를 요구하는 모든 프로세서 마이크로 조작에 요구되는 기능성을 제공하는 마이크로 조작을 통해 L2 캐시메모리 행동을 제어한다. 일 실시예에서, 이들 마이크로 조작은 L2 캐시메모리에 대한 모든 기입동작을 수행하는데 이용된다. 또한, 프로세서는 캐시 일관성을 유지하기위해 이들 마이크로 조작을 이용한다. 이들 마이크로 조작은 다중 다이패키지에서의 단일 다이제어를 구현하기 위해 프로세서와 L2 캐시메모리 사이에 제공된 인터페이스의 경계내에서 기능한다. L2 캐시메모리에 의해 수행된 각 마이크로 조작의 간단한 설명이 하기에 주어져 있다.
L2 판독 조회: 프로세서는 라인이 L2 캐시메모리에 속해있다면 L2 캐시메모리로부터 전체 라인을 판독하기 위해 이 마이크로 조작을 이용한다. 프로세서는 완전한 주소를 L2 캐시메모리로 전송한다. L2 캐시메모리는 지정된 태그를 가지는지를 알아보기 위해 지정된 세트번호를 조사한다. L2 캐시메모리는 태그 매치가 발견되고 라인의 상태가 변경되거나, 배타적이거나 또는 공유된다면 프로세서에 히트를 알린다.
히트시에, L2 캐시메모리는 적합한 LRU 필드를 갱신하고 웨이 정보, 상태의 값, 및 4 사이클에 걸친 버스트 방식의 데이타 라인을 프로세서로 복귀한다. 태그마 매치하지 않는다면, L2 캐시메모리는 교체될 웨이 정보, 상태 및 캐시라인의 완전 라인주소 (태그 및 세트) 를 복귀한다. 미스가 발생된다면, LRU 필드가 갱신되지 않지만, 교체라인의 기입라인 갱신 마이크로 조작을 이용하여 기입될때 갱신될 것이다.
상태 기입: 프로세서는 상기 마이크로 조작으로 L2 캐시메모리에서의 소정라인의 상태를 변경할 수 있다. 프로세서는 기억될 세트주소, 웨이, 및 상태값을 지시한다. 어떤 태그매칭도 주소상에서 행해지지 않고 L2 캐시메모리 LRU 필드는 변경되지 않는다.
상태 판독: 프로세서는 이 마이크로 조작으로 L2 캐시메모리에서의 소정라인의 상태를 판독한다. 프로세서는 판독될 세트주소 및 웨이를 지시한다. L2 캐시메모리는 지정된 라인의 상태를 복귀한다. 어떤 태그매칭도 주소상에서 행해지지 않고 L2 캐시메모리 LRU 필드는 변경되지 않는다. 이 동작은 테스트 목적을 위해 이용될 수 있다.
태그 조회: 이 동작은 소정라인을 포함하는지를 판단하기 위해 L2 캐시메모리를 프롬프트한다. L2 캐시메모리는 지정된 태그를 가지는지를 판단하기 위해 지정된 세트번호를 조사한다. L2 캐시메모리는 태그 매치가 발견되고 라인의 상태가 무효한 것이 아닌 어떤 것이라면 프로세서에 히트를 지시한다(부당한 상태 인코딩이 모든 신호를 히트이게 할 것이지만, 또한 BERR을 야기할 것이다). L2 캐시메모리 데이타 어레이는 액세스되지 않고 L2 캐시메모리 LRU 필드는 변경되지 않는다. 이 동작은 요구되는 데이타가 캐시메모리에 현재 기억되어 있는지를 판단하는 외부버스상의 장치로부터의 요구에 응답하여 이용될 수 있다.
태그 조회 갱신: 이 마이크로 조작은 LRU 필드가 매치시에 갱신된다는 것을 제외하고 태그 조회와 동일하다.
태그 어레이 판독: 이 마이크로 조작은 데이타 어레이를 액세스하지 않고 태그 어레이에서의 엔트리를 판독하는데 이용된다. 프로세서는 세트주소 및 웨이정보를 제공한다. L2 캐시메모리는 태그상태 및 완전주소를 복귀한다. 주소는 태그의 본래의 정렬을 이용하여 데이타 라인을 거쳐 복귀된다. 이 구성은 주소라인상에 양 방향성을 피한다. L2 캐시메모리 LRU 필드는 변경되지 않는다.
데이타 어레이 판독: 이 마이크로 조작은 태그 어레이를 액세스하지 않고 데이타 어레이에서의 엔트리를 판독하는데 이용된다. 프로세서는 세트주소 및 웨이정보를 제공한다. 데이타 라인은 4 사이클 버스트에 걸쳐 버스트 방식으로 다시 전송된다. L2 캐시메모리 LRU 필드는 변경되지 않는다. 이 동작은 어레이를 테스트하는데 이용될 수 있다.
기입 청크: 프로세서는 청크 번호를 지정하고, 데이타 버스로 데이타 워드를 구동하고, 청크를 기입하도록 L2 캐시메모리를 신호지정함으로써 L2 캐시메모리 칩상에 청크 기입버퍼로 데이타 청크를 로드하는데 이 마이크로 조작을 이용한다. 이 마이크로 조작은 데이타 버스를 수반하지 않는 다른 L2 캐시메모리동작에 독립적으로 발생할 수 있다. 기입 청크 마이크로 조작을 발생하는 경우에 데이타 버스 충돌을 방지하는 것이 프로세서의 책임이다. 어떤 데이타 어레이 또는 태그 어레이 액세스도 이동작동안 수행되지 않고 LRU 필드는 변경되지 않는다. 이 동작은 단일 청크를 L2 청크 기입버퍼로 기입하는데 이용되고 그후에 청크 기입버퍼의 내용을 L2 캐시메모리로 전송한다.
기입 라인: 이 마이크로 조작은 전체라인을 L2 캐시메모리로 기입하는데 있어 마지막 단계로서 이용된다. 기입될 라인은 먼저 상술된 기입 청크 마이크로 조작을 이용하여 L2 캐시메모리 청크 기입버퍼에 기억된다. 그후 프로세서는 태그 및 세트주소, 웨이정보, 및 기입될 라인의 상태를 지정함에 따라 기입라인 마이크로 조작을 이용한다. 청크 기입버퍼에 포함된 전체라인은 L2 캐시메모리 데이타 어레이로 기입된다. 태그 및 상태는 각각 태그 어레이 및 상태 어레이로 기입된다.
기입라인 마이크로 조작은 4 개의 기입청크 명령의 마지막과 동시에 발행될 수 있다. LRU 필드는 이 마이크로 조작으로 변경되지 않는다.
기입 라인 갱신: 이 마이크로 조작은 LRU 필드가 갱신된다는 것을 부가하면 기입라인과 동일하다.
프로세서는 출력 시퀀스를 제어하고 데이타 무결성을 제공하기 위해 마이크로 조작을 디코드하는 L2 캐시메모리의 제어논리에 이들 마이크로 조작을 전송한다. 수행된 디코딩은 액세스 사이클을 개시하는 신호를 생성한다. L2 캐시메모리의 제어블록은 또한 출력제어를 수행한다. 제어논리는 또한 데이타 무결성 동작을 수행하기 위한 논리를 포함한다.
마이크로 조작은 백사이드 버스에 의해 제공된 인터페이스를 이용하여 L2 캐시메모리 상에서 동작한다. 백사이드 버스의 일 실시예는 하기의 L2 캐시메모리 외부 인터페이스를 제공한다:
T-1
T-2
T-3
상기 신호의 이용을 통해, 본 발명은 프로세서에 의한 L2 캐시메모리로의 액세스를 허용한다. 그러나, L2 캐시메모리는 임의의 방식으로 액세스를 완료할 수 있다. 프로세서는 어떻게 액세스가 완료되고 있는지를 알 필요가 없다. 이 분할작업으로 인해, 임의의 L2 캐시메모리가 본 발명의 컴퓨터 시스템에서의 이용을 위해 설계될 수 있다. 프로세서의 테스팅 뿐만 아니라 결합 제어 및 테스팅을 위한 다른 신호는 본 발명을 불명료히 하지 않도록 생략되었다.
프로세서 다이는 마이크로 조작을 발생시키고 L2 캐시메모리 다이와 프로세서 다이 사이에 제공된 인터페이스를 이용하기 위한 제어논리를 포함한다는 것을 주목해야 한다. 프로세서는 예외로서 양 방향 데이타 버스만을 이용하여 두개의 다이 사이에 단측 제어경로를 제공한다. 이 방식에서 두개의 다이 사이의 분할작업은 다른 다이 (들)를 제어하는데 필수기능을 포함하도록 다이중 한 다이를 허용한다.
L2 캐시로 전송되는 동작 시퀀스는 프로세서에 의해 제어된다. 이 제어논리는 L1 캐시메모리로의 액세스, 프로세서 요구, 및 시스템 버스요구를 가질때 L2 캐시 메모리를 최적으로 이용할 수 있다. 논리는 모든 프로세서 엑세스에 최고의 우선순위를 제공하도록 설정된다. 이들 액세스는 단기간동안 주소버스 및 어레이를 이용하지만 데이타 청크를 판독하는데 4 사이클을 거쳐 데이타버스를 이용한다. 제어논리는 이 조건을 인식할 수 있고, 병렬로 동작하고 데이타버스를 요구하지 않도록 태그 조회 명령어를 수행한다.
[본 발명의 컴퓨터 시스템의 일 실시예]
본 발명의 프로세서 및 L2 캐시메모리는 제 5도에서와 같이 컴퓨터 시스템내로 일체화될 수 있다. 제 5 도는 블록도 형태로 도시된 본 발명의 컴퓨터 시스템의 개략도이다. 제 5도는 본 발명의 컴퓨터 시스템의 전반적인 설명을 제공하는데 유용하지만, 시스템의 다수의 세부사항이 도시되어 있지 않은 것으로 이해될 것이다. 본 발명의 개시내용에 필요한 것으로서 더 세부한 내용은 본 명세서에 제공된 다른 도면을 참조하여 개시된다.
제 5도에 예시된 바와 같이, 본 발명의 일 실시예에 의해 이용될 수 있는 컴퓨터 시스템은 일반적으로 정보를 통신하기 위한 프로세서- 시스텝 버스 또는 다른 통신장치(501), 및 정보를 처리하기 위한 프로세서- 시스템 버스(501)와 결합된 프로세서(502)로 구성된다. 본 발명에서, 프로세서- 시스템 버스(501)는 주소 버스, 데이타 버스 및 제어버스를 포함한다. 일 구현에서, 본 발명은 프로세서(502 및 503)로서 인텔 아키텍쳐 마이크로프로세서를 포함한다; 그러나, 본 발명은 임의의 타입의 마이크로프로세서 아키텍쳐를 이용할 수 있다. 본 발명의 일 실시예에서, 프로세서(502)는 데이타 및 명령어를 온- 칩에 일시적으로 기억하기 위한 레벨 1(L1) 캐시메모리로서 보통 참조되는 내부 캐시메모리를 포함한다. 레벨 2(L2) 캐시메모리(504)는 프로세서(502)용으로 데이타 및 명령어를 일시적으로 기억하기 위해 프로세서(502)에 결합된다. 일 실시예에서, 캐시메모리(504)는 프로세서(502)와 같인 칩 패키지에 포함된다.
또한 프로세서- 시스템 버스(501)에 프로세서(502)와 결합하여 정보를 처리하기 위한 프로세서(503)가 결합된다. 프로세서(503)는 프로세서(502)와 유사하거나 또는 동일한 프로세서와 같이 병행 프로세서로 구성될 수 있고, 또는 디지탈 신호 프로세서와 같이 코프로세서로 구성될 수 있다. 컴퓨터 시스템에서 다른 장치용으로 데이타 및 명령어를 일시적으로 기억하기 위한 레벨 3(L3) 캐시메모리(511) 및 L3 캐시메모리(511)로의 액세스를 제어하기 위한 L3 캐시제어기(510)는 또한 프로세서- 시스템 버스(501)에 결합될 수 있다. L3 캐시제어기(510)는 또한 메모리-시스템 버스(515)에 결합된다.
정보를 통신하기 위한 메모리-시스템 버스 또는 다른 통신수단(515)은 프로세서(502) 및 컴퓨터 시스템의 다른 장치에 메모리 및 입력/출력(I/O) 서브시스템으로의 액세스를 제공하기 위해 프로세서(502)에 결합된다. 메모리 제어기(522)는 랜덤 액세스 메모리(RAM)로의 액세스를 제어하기 위해 메모리-시스템 버스(515)와 결합되고 또한 프로세서(502)(및 프로세서(503))를 위한 정보 및 명령어를 기억시키기 위한 다른 동적 기억장치(521)(통상 메인메모리 또는 시스템 메모리라 칭해짐)와 결합된다. 정보 및 명령어를 기억하기 위한 자기디스크 및 디스크 드라이브 등의 대용량 데이타 기억장치(525), 및 정보를 컴퓨터 이용자에게 표시하기 위한 음극선관(CRT), 액정표시장치(LCD) 등의 표시장치(523)는 메모리- 시스템 버스(515)에 결합된다.
입력/ 출력(I/O) 브리지(524)는 메모리-시스템 버스(515) 및 I/O 버스(531)에 결합되어 메모리- 시스템 버스(515) 또는 I/O 버스(531) 상의 장치에 통신경로 또는 게이트웨이를 제공하여 다른 버스상의 장치들간에 데이타를 액세스하거나 또는 전송한다.
특히, 브리지(524)는 I/O 버스(531)로부터의 바이트/ 워드/ 디워드 데이타 전송 트래픽을 메모리- 시스템 버스(515) 상의 라인크기 트래픽으로 턴한다.
I/O 버스(531)는 컴퓨터 시스템내의 장치들간에 정보를 통신한다. 시스템 버스(531)에 결합될 수 있는 장치는 음극선관, 액정표시장치 등의 표시장치(532), 컴퓨터 시스템내의 다른 장치 (예컨대, 프로세서(502))에 정보 및 명령선택을 통신하기 위한 영숫자키 및 다른 키등을 포함하는 영숫자 입력장치(533), 및 커서이동을 제어하기 위한 커서제어장치(534)를 포함한다. 또한, 시스템 버스(531)에는 컴퓨터 화상의 영상표현을 제공하기 위한 플로터 또는 프린터 등의 하드카피장치(535), 및 정보 및 명령어를 기억시키기 위한 자기디스크 및 디스크 드라이브 등의 대용량 기억장치(536)가 결합될 수 있다.
물론, 본 발명의 구현 및 이용은 상기 구성요소 모두를 요구하지 않거나 또는 포함하지 않을 수 있다. 예컨대, 어떤 구현에서는, L3 캐시제어기 및 L3 캐시메모리는 요구되지 않을 수 있다. 이와 같은 구현에서 프로세서(502 및 503)는 메모리 시스템 버스(515) 상에 직접 상주할 것이다. 다른 구현에서, 정보를 표시하기 위한 표시장치를 제공하는 것이 요구되지 않을 수 있다. 부가적으로, 본 발명의 어떤 구현은 다른 구성요소를 포함할 수 있다.
[기입 요구에 대한 응답]
제 6도는 본 발명의 일 실시예에서 기입 요구에 응답하는데 있어서 캐시메모리 서브 시스템에 의해 수반되는 단계를 도시하는 순서도이다. 우선 기입요구는 외부버스논리에 의해 수신된다 (단계 610). 본 발명의 일 실시예에서, 이 기입요구는 데이타 캐시 유닛으로부터 수신되며, 희생된 캐시라인을 L2 캐시메모리로 복귀하도록 요구하고 있다.
캐시메모리에 대한 기입요구는 메모리주소 및 그 연관된 데이타를 포함한다.
이 메모리 주소는 연관된 데이타에 대한 시스템 메모리에서의 주소이다. 주소는 또한 데이타가 캐시메모리의 어느 세트에 기입되어야 하는지를 판단하는데 이용된다.
기입요구는 어떤 요구가 외부버스 요구큐에서 현재 미해결중인지를 외부버스논리가 체크할 어떤 시간에, 백사이드 큐의 톱으로 전해진다. 제 2도를 참조하여 상기에 논의된 바와 같이, 외부버스 요구큐는 외부버스논리로부터 메인 시스템 메모리로 현재 미해결한 요구를 모니터한다. 예컨대, 이들 미해결 요구는 캐시메모리가 시스템 메모리에 캐시라인을 기입하고 있는 재기입 요구, 또는 캐시메모리가 시스템 메모리로부터 데이타라인을 검색하고 있는 페치요구를 포함할 수 있었다. 따라서, 외부버스 요구큐내의 제어논리는 어떤 요구가 현재 미해결중인지를 체크할 수 있다. 본 발명의 일 실시예에서, 이것은 임의의 트랜잭션 큐 엔트리가 무효한지를 체크함으로써 수행된다. 어떤 요구도 현재 미해결중이 아니라면, 요구는 서비스된다 (단계 650). 요구를 서비스한다는 것은 백사이드 버스논리가 가능한 한 많은 요구를 수용하고 수행한다는 것을 의미한다. 기입요구동안, 외부 버스논리는 요구와 연관된 데이타를 백사이드 버스논리로 전송하며, 백사이드 버스논리에서 판독라인버퍼에 일시적으로 기억된다.
그후, 백사이드 버스논리는 그 데이타를 캐시메모리의 적합한 세트로 전송한다.
캐시메모리에 데이타를 기억시키기 전에, 백사이드 버스논리는 이 데이타가 기입될 세트가 이 캐시라인을 포함하는지 (즉, 이 요구가 캐시메모리에서 히트하는지) 를 체크한다. 세트가 캐시라인을 포함하지 않는다면, L2 캐시메모리의 캐시라인은 이 기입요구와 연관된 데이타에 의해 교체된다. 그러나, L2 캐시메모리가 캐시라인을 포함하지 않는다면, 백사이드 버스논리는 L2 캐시를 우회하여 외부버스논리를 거쳐 기입요구를 시스템 메모리로 전송한다.
단계(620)로 되돌아서, 미해결한 요구가 있다면, 외부버스 요구큐는 기입요구가 임의의 미해결한 요구와 동일한 캐시메모리의 세트로 매핑하는지를 판단한다 (단계 630).
이 판단은 외부버스 요구큐내의 제어논리에 의해 행해진다. 제어논리는 외부버스 요구큐에서 각 주소의 세트정보에 대해 기입요구가 매핑하는 세트를 체크한다.
따라서, 외부버스 요구큐내의 제어논리는 기입요구에 대한 세트정보를 큐에서의 이들 미해결한 요구에 재빨리 비교하여 콘플릭트가 존재하는지를 판단할 수 있다.
대안적인 실시예에서, 제어논리는 세트정보보다 오히려 단계(620)에서 전체 주소정보를 체크한다. 따라서, 콘플릭트는 두 주소가 매치하는 경우에만 존재한다.
본 발명의 일 실시예에서, 제어논리는 단계(620)에서 외부버스 요구큐의 트랜잭션 큐에서의 주소만의 세트 정보를 체크한다. 즉, 외부버스 요구큐의 L2 더티 희생주소 버퍼에서의 주소의 세트 정보는 단계(620)에서 체크되지 않는다.
매치는 상기 세트에 기억된 데이타에 영향을 줄 수 있는 요구가 현재 미해결중이라는 것을 제어논리에 지시한다. 예컨대, 시스템 메모리로부터 이 세트로 데이타를 검색할 페치요구가 현재 미해결중일 수 있다. 따라서, 캐시 일관성을 유지하기 위해서, 기입 요구는 거부된다.
본 발명의 일 실시예에서, 백사이드 버스논리는 기입요구가 미해결한 요구와 동일한 세트로 매핑할 때에 요구를 거부한다 (단계 640). 본 발명의 일 실시예에서, 이 거부는 기입요구가 백사이드 큐의 보텀에 배치되도록 한다. 대안적으로, 기입요구는 큐의 톱으로부터 다음 위치 등의 백사이드 큐의 다른 위치에 배치될 수 있다.
그후, 외부버스 요구큐는 어떤 판독라인버퍼 엔트리가 L2 캐시메모리로 기입되도록 대기하고 있는지를 체크한다 (단계 644). 이 체킹은 엔트리가 판독라인버퍼에 대기하고 있을때까지 계속 유지된다. 일단 엔트리가 판독라인버퍼에 있다면, 외부버스 요구큐는 백사이드 버스논리가 L2 캐시메모리로 판독기입버퍼의 일 엔트리를 전송해야 한다는 것을 요구하는 신호를 백사이드 버스논리에 발행한다. 일 구현에서, 이것은 외부버스 논리에서 백사이드 큐로부터의 트랜잭션을 제거하고 처리함으로써 수행된다.
판독라인버퍼의 상기 전송이 완료된 후에, 단계 620 내지 648은 기입요구와 미해결한 요구 (들) 간에 콘플릭트가 더이상 존재하지 않을때까지 반복된다. 제 6 도의 처리동안, 외부버스 요구큐의 부가요구는 응답을 수신할 수 있다. 예컨대, 데이타라인은 시스템 메모리로부터 페치될 수 있고 판독라인버퍼에 기억될 수 있다. 따라서, 결과적으로, 기입요구와 콘플릭트하는 현재 미해결한 요구는 L2 캐시메모리로 전송될 것이고 그로인해 더 이상 콘플릭트하지 않을 것이다.
따라서, 기입요구는 기입요구와 미해결한 요구간의 콘플릭트가 해결될때까지 캐시메모리 서브시스템에 의해 거부되거나 또는 "블로킹"된다. 그 다음 요구는 또한 이 기입 요구가 블로킹되어 있는 동안 외부버스논리에 의해 수신될 수 있다는 것을 주목해야 한다. 그 다음 요구가 서비스되는지 또는 블로킹되는지는 제 6도 및 제 7도의 단계에 따라서 요구의 개개의 주소에 의존적이다.
본 발명의 대안적인 실시예에서, 외부버스논리는 단계(648)에서 판독라인버퍼의 모든 데이타를 L2 캐시메모리로 전송하도록 백사이드 버스논리에 요구한다. 따라서, 신호요구를 위한 데이타를 전송하기 보다는 오히려, 백사이드 버스논리는 판독라인버퍼의 데이타 모두를 전송한다.
본 발명의 일 구현에서, 거부를 수신할 시에, 외부버스 요구큐는 백사이드 큐의 끝에 거부된 요구를 배치한다. 그후 외부버스 요구큐는 백사이드 버스논리로 요구를 발생하여 백사이드 큐에서의 트랜잭션을 수행한다. 결과적으로, 거부된 기입 요구는 큐의 톱에 전하고 다시 백사이드 버스논리에 의해 시도된다. 외부버스 요구큐는 다시 기입요구 세트 정보가 임의의 현재 미해결한 요구에 매치하는지를 체크하여, 동시에 또다른 비교를 수행한다. 매치가 있다면, 처리는 다시 반복된다.
대안적인 실시예에서, 거부 지시는 요구 에이전트로 복귀된다. 이 실시예에서, 요구는 외부버스논리로부터 제거되고 요구 에이전트(agent)는 후에 요구를 재시도하는 역할을 한다. 예컨대, 요구 에이전트는 캐시 백사이드 버스논리가 요구를 수용할때까지 그 동작을 정지할 수 있다. 대안적으로, 요구 에이전트는 다른 명령어를 계속 처리하고 있고 후에 상기 요구를 시도한다.
[판독 요구에 대한 응답]
제 7도는 본 발명의 일 실시예에서 판독 요구에 응답하는데 있어서 캐시메모리 서브시스템에 의해 수반되는 단계를 도시하는 순서도이다. 먼저 판독요구는 요구 에이전트로부터 외부버스논리에 의해 수신된다 (단계 705). 본 발명의 일 실시예에서, 이 요구 에이전트는 데이타 캐시유닛 메모리이다. 대안적으로, 요구 에이전트는 명령어 페치 유닛일 수 있다. 요구의 소스에 상관없이, 요구는 외부버스논리에 의해 수신된다. 판독요구는 요구된 데이타가 시스템 메모리에 기억되어 있는 메모리주소를 포함한다. 이 주소는 또한 데이타가 판독되어야 하는 캐시메모리의 세트를 판단하는데 이용된다.
요구를 수신할 시에, 외부버스논리는 요구를 외부버스논리내의 백사이드 큐를 거쳐 백사이드 버스논리로 발송한다. 그후 백사이드 버스논리는 요구가 L2 캐시메모리에서 히트하는지를 체크한다 (단계 710). 요구가 캐시에서 히트한다면, 백사이드 버스논리는 요구를 서비스한다 (단계 715). 상기에 논의된 바와 같이, 요구를 서비스한다는 것은 백사이드 버스논리가 요구를 수용하고 그것을 수행한다는 것을 의미한다. 요구가 캐시에서 히트한다면, 요구는 캐시라인을 요구 에이전트로 복귀시킴으로써 서비스된다(단계 715).
그러나, 요구가 캐시에서 미스한다면, 백사이드 버스논리는 "미스"신호를 외부버스논리로 발행한다. 이것은 데이타를 시스템 메모리로부터 검색하는 부가적인 태스크를 수행해야 한다는 것을 외부버스논리에 지시한다. 수행될 부가적인 태스크는 L2 캐시의 희생라인이 더티상태인지 및/ 또는 재기입 버퍼에 이용가능한 공간이 있는지에 근거하여 판단된다.
요구가 L2 캐시에서 미스한다면, 외부버스논리는 요구된 주소가 시스템 메모리에 대한 임의의 현재 미해결한 요구와 동일한 주소인지를 판단한다 (단계 720). 본 발명의 일 실시예에서, 이 판단은 외부버스 요구큐내의 제어논리에 의해 행해진다.
제어논리는 현재 미해결한 요구의 주소에 대해 판독요구의 주소를 체크한다.
일 구현에서, 제어논리는 외부버스 요구큐의 트랜잭션 큐에 있는 요구만을 체크한다.
외부버스논리가 단계(720)에서 매치하는 미해결한 주소를 발견한다면, 요구는 거부된다 (단계 725). 거부의 취급은 제 6도를 참조하여 상기에 논의된 바와 같다.
즉, 외부버스논리는 판독라인버퍼 엔트리를 L2 캐시메모리로 전송하기 위해서 백사이드 버스논리를 요구하고, 그후 일단 판독라인버퍼 엔트리가 전송된다면 다시 요구를 시도한다. 제 6도에서의 논의와 마찬가지로, 외부버스논리는 요구가 더이상 시스템 메모리에 대한 이전에 미해결한 요구의 주소에 매치하지 않을때까지 상기 판독요구를 블로킹한다.
단계(720)로 되돌아가서, 외부버스논리가 단계(720)에서 매치하는 미해결한 주소를 발견하지 않는다면, 판독 요구는 임의의 현재 미해결한 요구와 콘플릭트하지 않는다. 다음에 백사이드 버스논리는 캐시의 희생라인이 더티상태인지를 체크한다 (단계 730). 희생라인이 캐시에서 변경되었다면 더티상태에 있고 그 변경은 시스템 메모리에서 행해지지 않았다. 따라서, 더티 희생라인은 간단히 중복기입될 수 없다; 그렇게 행하는 것은 캐시라인에 행해진 변경의 손실을 가져온다. 본 발명의 일 실시예에서, L2 캐시메모리는 요구가 L2 캐시에서 미스할 경우에 희생라인주소 및 그 라인의 상태를 백사이드 버스논리로 복귀한다.
L2 캐시의 희생라인이 더티상태에 있지 않다면, 백사이드 버스논리는 요구를 서비스한다 (단계 735). 이 상황에서, 서비스 수단은 데이타를 시스템 메모리로부터 검색하기 위해 신호를 외부버스논리로 발행한다. 그후 데이타는 백사이드 버스논리의 판독라인 버퍼로 외부버스논리에 의해 전송된다. 그 데이타를 L2 캐시메모리로 전송하려는 요구는 외부버스 요구큐에 의해 백사이드 버스큐에 배치된다.
단계(730)로 되돌아가서, 희생라인이 더티상태에 있다면, 백사이드 버스제어논리는 재기입 버퍼에 이용가능한 공간이 있는지를 체크한다 (단계 740). 희생라인은 더티상태에 있기 때문에 간단히 중복기입될 수 없다. 재기입 버퍼에 이용가능한 공간이 있다면, 백사이드 버스논리는 요구를 서비스한다 (단계 745). 이러한 환경하에서, 요구를 서비스한다는 것은 희생라인을 재기입 버퍼로 (및 그 다음에 시스템 메모리)로 전송하는것, 요구된 데이타라인을 시스템 메모리로부터 페치하는 것, 데이타라인을 요구 에이전트 로 복귀시키는 것, 및 캐시메모리의 적합한 세트에 데이타라인을 기억시키는 것을 포함한다.
그러나, 단계(740)에서, 캐시제어기가 재기입버퍼에 이용가능한 공간이 없다고 판단하면 판독요구는 거부된다 (단계 725). 요구가 캐시에서 미스했고 시스템 메모리로부터 검색되어야 하기 때문에 요구는 거부된다; 그러나, 희생라인은 더티상태이고 희생라인을 일시적으로 기억시킬 재기입버퍼에 어떤 공간도 존재하지 않는다. 일 실시예에서, 외부버스논리는 재기입버퍼의 엔트리를 거부에 응답하여 시스템 메모리로 전송하고 단계 710 내지 740을 반복한다. 대안적으로, 외부버스논리는 공간이 이용가능하게 될때까지 단계(740)에서 체크를 반복할 수 있다.
따라서, 본 발명의 캐시메모리는 특정 환경하에서만 요구 에이전트로부터 수신된 요구를 블로킹한다. 이러한 특정환경이 만족된다면, 본 발명은 환경이 더이상 만족되지 않을때까지 그 특정한 요구를 일시적으로 블로킹한다. 그러나, 캐시메모리는 다른 요구가 또한 이러한 특정환경을 만족시키지 않는다면 요구 에이전트로부터 수신된 다른 요구를 계속 서비스할 것이다. 그러므로, 본 발명의 캐시메모리는 이들 에이전트가 가지는 캐시메모리로의 액세스를 증가시킴으로써 효율적으로 마이크로프로세서 등의 요구 에이전트를 지원한다.
상기 설명이 축소된 요구 블로킹을 갖는 캐시메모리를 L2 캐시메모리인 것으로서 기재하더라도, 본 발명의 정신과 영역내에 다른 캐시메모리가 있는 것으로 평가될 것이다. 예컨대, 본 발명의 축소된 요구 블로킹 방법은 레벨-1 캐시메모리 또는 레벨-3 캐시메모리에 이용될 수 있다.
또한, 상기 설명이 외부버스논리유닛과 백사이드 버스논리유닛으로 구성되어 있는 캐시메모리 서브시스템을 설명할지라도, 본 발명은 이러한 구성에 제한되지 않는다는 것을 주목해야 한다. 광범위한 캐시메모리 서브시스템이 본 발명의 교시를 구현할 수 있고 이와 같은 서브시스템은 본 발명의 정신과 영역내에 있는 것으로 평가될 것이다.
본 발명의 수많은 수정과 변경이 상기 설명을 토대로 본 기술의 당업자에 의해 이해될 것이지만, 예시에 의해 도시되고 설명된 특정 실시예는 결코 제한적인 것으로 고려되도록 의도되지 않는 것으로 이해될 것이다. 따라서, 특정 실시예의 세부내용에 대한 참조는 본 발명에 본질적인 것으로서 고려되는 특징만을 주장하는 특허청구범위의 영역을 제한하도록 의도되지는 않는다.

Claims (4)

  1. 메모리 서브시스템에서 캐시메모리를 타겟으로 하는 요구 에이전트로부터 제 1 요구에 응답하는 방법에 있어서,
    (a) 제 1 요구가 캐시메모리에서 히트하는지를 판단하는 단계;
    (b) 제 1 요구가 제 1 요구 이전에 캐시메모리에 의해 수신되고 캐시메모리에서 미스된 제 2 요구와 콘플릭트하는지를 판단하는 단계; 및
    (c) 상기 제 1 요구가 캐시메모리에서 히트한다면 제 1 요구에 대응하는 캐시라인을 상기 요구 에이전트로 복귀시키고, 그렇지 않다면 상기 제 1 요구를 거부하는 단계;
    로 구성되는 것을 특징으로 하는 방법.
  2. 메모리 서브시스템에서 캐시메모리를 타겟으로 하는 제 1 요구 에이전트로부터 제 1 요구에 응답하는 방법에 있어서,
    (a) 제 2 요구에 대응하는 데이타를 제 2 요구 에이전트로 복귀하는 처리중에 있는 캐시메모리에 의해, 제 2 요구가 제 1 요구 이전에 제 2 요구 에이전트로부터 수신되었는지를 판단하는 단계;
    (b) 상기 제 1 요구와 상기 제 1 요구가 캐시메모리의 동일 세트로 매핑하는지를 체크하는 단계; 및
    (c) 제 1 요구와 제 2 요구가 캐시메모리의 별개의 세트로 매핑한다면 제 1 요구에 대응하는 캐시라인을 제 1 요구 에이전트로 복귀시키고, 그렇지 않다면 상기 제 1 요구를 블로킹하는 단계;
    로 구성되는 것을 특징으로 하는 방법.
  3. 복수의 캐시메모리 장소를 포함하는 캐시메모리;
    메인 시스템 메모리로 재기입되고 있는 상기 복수의 캐시메모리 장소의 한 캐시메모리 장소로부터의 데이타를 일시적으로 기억하기 위한 재기입 버퍼;
    캐시라인을 그 캐시라인을 요구했던 에이전트로 복귀하기 위해 캐시메모리에 결합된 제 1 캐시 제어논리유닛;
    요구를 거부하기 위해 재기입 버퍼와 캐시메모리에 결합된 제 2 캐시 제어논리유닛; 및
    캐시메모리 서브시스템에 의해 수신된 제 1 요구를 캐시 제어논리유닛이 서비스하는 처리중에 있는 제 2 요구와 비교하는 제 2 캐시 제어논리유닛에 결합된 비교논리유닛; 으로 구성되는 것을 특징으로 하는 메모리 서브시스템.
  4. 버스;
    버스에 결합된 프로세서;
    버스에 결합된 시스템 메모리;
    복수의 캐시메모리 장소를 포함하는 프로세서에 결합된 캐시메모리; 및
    캐시메모리 제어기; 로 구성되고,
    상기 캐시메모리 제어기는 메인 시스템 메모리로 재기입되고 있는 상기 복수의 캐시메모리 장소의 한 캐시메모리장소로부터의 데이타를 일시적으로 기억하기 위한 재기입 버퍼,
    캐시라인을 그 캐시라인을 요구했던 에이전트로 복귀하기 위해 캐시메모리에 결합된 제 1 캐시 제어논리유닛,
    요구를 거부하기 위해 재기입 버퍼와 캐시메모리에 결합된 제 2 캐시 제어논리유닛, 및
    캐시메모리 서브시스템에 의해 수신된 제 1 요구를 캐시 제어논리유닛이 서비스하는 처리중에 있는 제 2 요구와 비교하는 제 2 캐시 제어논리유닛에 결합된 비교논리유닛, 으로 구성되는 것을 특징으로 하는 컴퓨터 시스템.
KR1019950046155A 1994-12-21 1995-12-02 축소된요구블로킹을갖는캐시메모리 KR100252570B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/360,328 US5642494A (en) 1994-12-21 1994-12-21 Cache memory with reduced request-blocking
US8/360,328 1994-12-21
US08/360,328 1994-12-21

Publications (2)

Publication Number Publication Date
KR960024987A KR960024987A (ko) 1996-07-20
KR100252570B1 true KR100252570B1 (ko) 2000-04-15

Family

ID=23417522

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950046155A KR100252570B1 (ko) 1994-12-21 1995-12-02 축소된요구블로킹을갖는캐시메모리

Country Status (3)

Country Link
US (1) US5642494A (ko)
KR (1) KR100252570B1 (ko)
GB (1) GB2296353B (ko)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5893160A (en) * 1996-04-08 1999-04-06 Sun Microsystems, Inc. Deterministic distributed multi-cache coherence method and system
US6038645A (en) * 1996-08-28 2000-03-14 Texas Instruments Incorporated Microprocessor circuits, systems, and methods using a combined writeback queue and victim cache
US6272600B1 (en) * 1996-11-15 2001-08-07 Hyundai Electronics America Memory request reordering in a data processing system
US6026471A (en) * 1996-11-19 2000-02-15 International Business Machines Corporation Anticipating cache memory loader and method
US6000011A (en) * 1996-12-09 1999-12-07 International Business Machines Corporation Multi-entry fully associative transition cache
US5895485A (en) * 1997-02-24 1999-04-20 Eccs, Inc. Method and device using a redundant cache for preventing the loss of dirty data
US6269426B1 (en) * 1997-06-24 2001-07-31 Sun Microsystems, Inc. Method for operating a non-blocking hierarchical cache throttle
US6154815A (en) * 1997-06-25 2000-11-28 Sun Microsystems, Inc. Non-blocking hierarchical cache throttle
US6105108A (en) * 1997-10-24 2000-08-15 Compaq Computer Corporation Method and apparatus for releasing victim data buffers of computer systems by comparing a probe counter with a service counter
US6078992A (en) * 1997-12-05 2000-06-20 Intel Corporation Dirty line cache
US6209068B1 (en) * 1997-12-29 2001-03-27 Intel Corporation Read line buffer and signaling protocol for processor
US6430654B1 (en) * 1998-01-21 2002-08-06 Sun Microsystems, Inc. Apparatus and method for distributed non-blocking multi-level cache
US6418514B1 (en) * 1998-02-17 2002-07-09 Internationl Business Machines Corporation Removal of posted operations from cache operations queue
US6345340B1 (en) * 1998-02-17 2002-02-05 International Business Machines Corporation Cache coherency protocol with ambiguous state for posted operations
US6330643B1 (en) * 1998-02-17 2001-12-11 International Business Machines Corporation Cache coherency protocols with global and local posted operations
DE59906194D1 (de) * 1998-05-07 2003-08-07 Infineon Technologies Ag Cache-speicher für zweidimensionale datenfelder
US6038693A (en) * 1998-09-23 2000-03-14 Intel Corporation Error correction scheme for an integrated L2 cache
US6519682B2 (en) 1998-12-04 2003-02-11 Stmicroelectronics, Inc. Pipelined non-blocking level two cache system with inherent transaction collision-avoidance
US6438650B1 (en) * 1998-12-16 2002-08-20 Intel Corporation Method and apparatus for processing cache misses
US7555603B1 (en) * 1998-12-16 2009-06-30 Intel Corporation Transaction manager and cache for processing agent
US6772383B1 (en) * 1999-05-27 2004-08-03 Intel Corporation Combined tag and data ECC for enhanced soft error recovery from cache tag errors
US6434641B1 (en) * 1999-05-28 2002-08-13 Unisys Corporation System for reducing the number of requests presented to a main memory in a memory storage system employing a directory-based caching scheme
US6587930B1 (en) * 1999-09-23 2003-07-01 International Business Machines Corporation Method and system for implementing remstat protocol under inclusion and non-inclusion of L1 data in L2 cache to prevent read-read deadlock
US6356980B1 (en) * 1999-11-09 2002-03-12 International Business Machines Corporation Method and system for bypassing cache levels when casting out from an upper level cache
US6370618B1 (en) 1999-11-09 2002-04-09 International Business Machines Corporation Method and system for allocating lower level cache entries for data castout from an upper level cache
US6385695B1 (en) 1999-11-09 2002-05-07 International Business Machines Corporation Method and system for maintaining allocation information on data castout from an upper level cache
US6988172B2 (en) * 2002-04-29 2006-01-17 Ip-First, Llc Microprocessor, apparatus and method for selectively associating store buffer cache line status with response buffer cache line status
US7032077B2 (en) * 2002-12-23 2006-04-18 Hewlett-Packard Development Company, L.P. Multiple cache coherency
US6996698B2 (en) * 2003-05-12 2006-02-07 International Business Machines Corporation Blocking processing restrictions based on addresses
JP4550511B2 (ja) * 2004-07-27 2010-09-22 富士通株式会社 演算処理装置、演算処理装置の制御方法
EP2115598B1 (en) * 2007-01-25 2011-03-30 Nxp B.V. Hardware triggered data cache line pre-allocation
KR101471114B1 (ko) * 2008-03-06 2014-12-10 삼성전자주식회사 프로세서 및 컴퓨팅 시스템
US8281227B2 (en) 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
US8307258B2 (en) 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements
US8874855B2 (en) * 2009-12-28 2014-10-28 Empire Technology Development Llc Directory-based coherence caching
US8806294B2 (en) * 2012-04-20 2014-08-12 Freescale Semiconductor, Inc. Error detection within a memory
JP6127907B2 (ja) * 2012-11-12 2017-05-17 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US9798620B2 (en) 2014-02-06 2017-10-24 Sandisk Technologies Llc Systems and methods for non-blocking solid-state memory
CN104951239B (zh) * 2014-03-26 2018-04-10 国际商业机器公司 高速缓存驱动器、主机总线适配器及其使用的方法
US10102129B2 (en) * 2015-12-21 2018-10-16 Intel Corporation Minimizing snoop traffic locally and across cores on a chip multi-core fabric
CN112799977B (zh) * 2021-02-26 2022-07-19 中国人民解放军国防科技大学 计算机的缓存分区和缓存访问实时性保护方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US4783736A (en) * 1985-07-22 1988-11-08 Alliant Computer Systems Corporation Digital computer with multisection cache
GB2230120B (en) * 1989-04-07 1992-12-02 Intel Corp Read/write ordering apparatus and method for a microprocessor
EP0568231B1 (en) * 1992-04-29 1999-03-10 Sun Microsystems, Inc. Methods and apparatus for providing multiple outstanding operations in a cache consistent multiple processor computer system
US5434993A (en) * 1992-11-09 1995-07-18 Sun Microsystems, Inc. Methods and apparatus for creating a pending write-back controller for a cache controller on a packet switched memory bus employing dual directories

Also Published As

Publication number Publication date
GB9520329D0 (en) 1995-12-06
GB2296353A (en) 1996-06-26
KR960024987A (ko) 1996-07-20
US5642494A (en) 1997-06-24
GB2296353B (en) 2000-02-09

Similar Documents

Publication Publication Date Title
KR100252570B1 (ko) 축소된요구블로킹을갖는캐시메모리
US11803486B2 (en) Write merging on stores with different privilege levels
US5627993A (en) Methods and systems for merging data during cache checking and write-back cycles for memory reads and writes
US5398325A (en) Methods and apparatus for improving cache consistency using a single copy of a cache tag memory in multiple processor computer systems
US5388247A (en) History buffer control to reduce unnecessary allocations in a memory stream buffer
US5586294A (en) Method for increased performance from a memory stream buffer by eliminating read-modify-write streams from history buffer
US6665774B2 (en) Vector and scalar data cache for a vector multiprocessor
US6366984B1 (en) Write combining buffer that supports snoop request
US5809524A (en) Method and apparatus for cache memory replacement line identification
US20030126365A1 (en) Transfer of cache lines on-chip between processing cores in a multi-core system
US5551000A (en) I/O cache with dual tag arrays
US6345320B1 (en) DMA address buffer and cache-memory control system
US6434665B1 (en) Cache memory store buffer
US12001345B2 (en) Victim cache that supports draining write-miss entries
US12007907B2 (en) Victim cache with write miss merging
JPH04102146A (ja) 高性能キャッシュ
JPH10207773A (ja) バス接続装置
JPH0895855A (ja) 演算処理システムに用いられるプリフェッチバッファ装置
JPH08235067A (ja) I/oキャッシュメモリ

Legal Events

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

Payment date: 20130104

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20140103

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20141230

Year of fee payment: 16

EXPY Expiration of term