KR100190350B1 - 고성능 프레임 버퍼 및 캐쉬메모리 시스템 - Google Patents

고성능 프레임 버퍼 및 캐쉬메모리 시스템 Download PDF

Info

Publication number
KR100190350B1
KR100190350B1 KR1019900021313A KR900021313A KR100190350B1 KR 100190350 B1 KR100190350 B1 KR 100190350B1 KR 1019900021313 A KR1019900021313 A KR 1019900021313A KR 900021313 A KR900021313 A KR 900021313A KR 100190350 B1 KR100190350 B1 KR 100190350B1
Authority
KR
South Korea
Prior art keywords
cache
address
memory
data
block
Prior art date
Application number
KR1019900021313A
Other languages
English (en)
Other versions
KR910012933A (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 KR910012933A publication Critical patent/KR910012933A/ko
Application granted granted Critical
Publication of KR100190350B1 publication Critical patent/KR100190350B1/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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)

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)
  • Image Input (AREA)

Abstract

컴퓨터 시스템은 각각이 직접 맵핑된 캐쉬 메모리를 갖는 다수의 중앙처리장치(CPU)를 포함한다. 시스템은 또한 주 메모리 및 하나 또는 그 이상의 디스플레이 프레임 버퍼를 포함한다. 보통 캐쉬는 라이트 백(write back) 모드어서 작동되며, 갱신된 데이터는 캐쉬 블록이 새로운 데이터 블록을 기억하도록 재할당될 때만 주 메모리에 기입된다. 캐쉬에 기억된 각 데이터 블럭에 대한 태그는 대응 데이터 블럭이 또다른 CPU의 캐쉬에 기억될 수 있는지를 나타내는 공유 플래그를 포함한다. 기억된 데이터 블럭이 수정될 때, 그 블럭에 대한 태그가 인에이블된 공유 플래그를 갖는다면 즉시 주 메모리에 기입된다. 그 캐쉬가 영상 데이터 블럭에 대하여 라이트-드루(write-through) 모드로 작동되게 하기위하여, 시스템은 프레임 버퍼 데이터 블럭이 캐쉬에 기억될 때 마다 인에이블된 공유 플래그를 캐쉬에 기억한다. 캐쉬에 있는 회로는 CPU가 전체의 영상 데이터 블럭을 프레임 버퍼에 있는 어드레스에 기입할 때를 검출하여 영상 데이터를 캐쉬에 기억함이 없이 캐쉬가 영상 데이터 블럭을 직접 프레임 버퍼에 기입하게 한다. 캐쉬에 있는 어드레스 회로는 프레임 버퍼로 부터의 영상 데이터를 미리 정해진 캐쉬의 부분에만 기억시켜, 영상 데이터에 의해서 바뀌어 질 수 있는 캐쉬에 기억된 다른 데이터의 양을 제한한다.

Description

고성능 프레임 버퍼 및 캐쉬 메모리 시스템
제1도는 캐쉬 메모리를 갖는 다수의 프로세서와 하나 또는 그 이상의 프레임 버퍼를 포함하는 멀티프로세서 컴퓨터 시스템의 다이어그램.
제2도는 바람직한 실시예에서 공유메모리 버스의 성분 구성도.
제3도는 본 발명에 따른 캐쉬 메모리의 블럭 다이어그램.
제4도는 캐쉬 메모리의 태그 어레이(tag array)에 있는 하나의 태그 설명도.
제5도는 본 발명의 바람직한 실시예를 위한 어드레스 비트의 할당 설명도.
제6도는 본 발명에 따른 프레임 버퍼의 블록 다이어그램.
제7도는 어떤 프레임 데이터의 펫치를 피하기위한 캐쉬 제어 로직의 일부를 나타낸 블록 다이어그램.
제8도는 바람직한 실시예의 캐쉬 로직에 사용된 어드레스 회로의 블록 다이어그램.
제9도는 바람직한 실시예의 캐쉬로직에 사용된 비교기 회로의 블럭 다이어그램.
* 도면의 주요부분에 대한 부호의 설명
102 : CPU 120 : 주메모리
200 : 로우컬 버스 202 : 어드레스 버스
204 : 데이터버스 206 : 제어버스
220 : 메모리 어레이 222 : 레퍼런스블럭
238 : SHARED 플래그 260 : 캐쉬 제어로직
262 : 비교기 264 : 버퍼
266 : 캐쉬 로직회로 280 : 공유메모리 버스 인터페이스
300 : 비교기 302 : 비데오 램(RAM)
322 : 캐쉬로직의 상태기(state machine)
342, 344 : 버퍼
본 발명은 일반적으로 프레임 버퍼(frame buffer) 및 캐쉬 메모리를 포함하는 멀티프로세서 컴퓨터에 관한 것으로, 특히 프레임 버퍼에 기억된 영상 데이터를 갱신시킬때 라이트 백(write back) 캐쉬 메모리의 사용에 관련된 문제를 극복하기 위한 시스템에 관한 것이다.
제1도를 참고하면, 고성능 중앙처리장치(CPUs)(102, 104, 106)를 담고있는 시스템(100)은 보통 각 CPU에 캐쉬 메모리(110, 112, 114)를 제공한다. 시스템은 또한 입력/출력 프로세서(118)와 같은 다른 형태의 프로세서를 포함할 수 있다. 캐쉬 메모리는 CPU에 의하여 만들어진 각 레퍼런스를 위해 주 메모리(120)를 참조할 것을 요구하는 것 대신에, CPU의 메모리 레퍼런스의 대부분을 만족시킴으로써 CPU의 성능을 증가시킨다. 캐쉬의 억세스시간(즉, 10×10 초)은 보통 주 메모리의 억세스 시간보다 훨씬 적기때문에, 성능이 증가된다.
많은 프로세스(102-106)와 그 캐쉬(112-116)가 공통 메모리 버스(122)를 같이쓰는 멀티프로세서 시스템에서, 캐쉬는 또한 CPU들에 의해서 발생되 메모리트래픽(memory traffic)으로부터 버스를 보호한다. 캐쉬 블럭이 또다른 어드레스를 위해 필요될때만 캐쉬 블럭을 주 기억장치(120)로 되돌리는 라이트 백 방법은 특히 버스 트래픽(bus traffic)을 감소시키는 효과적인 방법이다.
비데오 램(video RAM)으로 보통 알려진 2 포트 다이나믹 메모리의 사용으로, 하나 또는 그 이상의 CPU 들의 실제 어드레스 공간에 디스플레이 픽셀맵(pixelmap)(또한 비트 맵으로 알려짐)을 놓는 프레임 버퍼(124, 126)를 직접 구성하게 된다. 그러한 프레임 버퍼들에 있는 비데오 램들은 래스터 스캔의 모니터(130 또는 132)를 리프레쉬하는데 사용되는 직렬 포트와 비데오 램들에 기억된 영상 데이터를 갱신시키는 CPU 들에 의하여 사용된 병렬 포트를 갖는다. 프레임 버퍼의 내용을 갱신시킬 CPU를 사용하여 전용 하드웨어(specialized hardware)의 사용에 대하여 실제적인 절약을 보일수 있고, 영상으로의 갱신이 계산되고 프레임 버퍼에 기억되는 속도는 현재 이용할 수 있는 고성능 CPU 들을 사용하여 매우 훌륭하다.
라이트-백 캐쉬가 메모리 매핑된 프레임 버퍼와 관련하여 사용될 때, 세개의 문제가 발생될 수 있다.
프레임 버퍼와 관련하여 라이트-백 캐쉬를 사용함으로써 생기는 제 1 의 문제는, 프레임 버퍼 데이터를 갖고있는 캐쉬블럭이 데이터의 다른 블럭을 가지고 있는데 필요될 때 까지, 캐쉬에 있는 데이터 값이 프레임 버퍼에 다시 기입되지 않는다는 것이다. 이리하여, 디스플레이상에서 영상의 변화는 픽셀맵이 CPU 에 의하여 수정된 후 임의의 시간동안 지연될 수 있다. 다시말하면, 디스플레이된 영상은 예측할 수 없는 시간동안 계산된 영상 데이터를 반영시키지 않을수 있다.
제 2 의 문제는 캐쉬들은 CPU에 의해서 발생된 동작이 기입동작일 때 조차도 캐쉬가 레퍼런스된 어드레스를 담고 있지않을 때 마다 주 메모리로부터 전체의 정보블럭을 자주 펫치(fetch)한다는 것이다. 보통의 프로그램에 있어서, 이것은 좋은 방법인데, 이는 대부분의 장소들이 기입되기전에 판독되기 때문이다. 프레임 버퍼에서, 이것은 빈번한 경우는 아니며, 장소들이 먼저 판독되지 않고 가끔 기입된다. 이러한 경우에, 캐쉬로 펫치된 데이터는 즉시 겹쳐 기입되어 그 펫치는 쓸데없는 작업이 된다.
제 3 의 문제는 캐쉬에서 필요되는 다른 데이터 블럭을 바꾸어 놓는 프레임 버퍼 데이터의 경향에 관한 것이다. 직접 맵핑된 캐쉬에서, 주 메모리의 특정 어드레스에 기억된 데이터가 캐쉬에 있는 오직 하나의 장소에 기억될 수 있다. 직접 맵핑된 캐쉬들은 다른 캐쉬 맵핑 조직보다 효과적이고 단가가 적기때문에 자주 사용된다. 불행하게도, 직접 맵핑된 캐쉬가 프레임 버퍼와 사용될 때, 전반적인 시스템 성능은 심하게 떨어질 수 있다. 이러한 이유는 CPU에 의한 프레임 버퍼의 레퍼런스는 보통 프로그램 레퍼런스의 공간 및 시간적 장소를 나타내지 않는다. 특히, 각 장소가 정확히 한번 레퍼런스 되면서 순차적인 프레임 버퍼장소의 연속 가동이 레퍼런스되는 경우가 가끔있다. 이결과 직접 맵핑된 캐쉬는 디스플레이 데이터로 채워지게 되는데, 이는 디스플레이 영상을 수정시킨 프로그램의 데이터와 프로그램 텍스트를 포함하여 다른 캐쉬정보를 바꾸어 놓는다. 이렇게 바꿔놓음으로써 캐쉬 누락의 수가 실제로 증가하게 되어, CPU에서 보면 평균 억세스 시간을 증가시켜 시스템의 성능을 낮춘다.
상기 문제에 대해 표준적인 종래 기술 해결은 시스템의 어드레스 공간의 비캐쉬된(uncached) 부분에서 프레임 버퍼를 동작시키는 것이다. 이것은 그러한 시스템은 프레임 버퍼(즉, 영상) 데이터의 처리를 위하여 캐쉬의 존재를 이용할 수 없다는 것을 의미한다.
본 발명은 상기에 리스트된 세개의 문제 각각을 언급한다. 캐쉬와 프레임 버퍼의 설계에 수정을 하여, 이전의 배치보다 더 효과적으로 프레임 버퍼를 지지하는 설계를 제공한다.
요약하면, 본 발명은 각각이 직접 맵핑된 캐쉬 메모리, 주 메모리, 그리고 하나 또는 그 이상의 프레임 버퍼를 갖는 많은 CPU들을 포함하는 멀티프로세서 컴퓨터 시스템이다. 각 캐쉬는 보통 라이트 백 모드(write back mode)로 동작하는데, 갱신된 데이터는 캐쉬 블럭이 새로운 데이터의 블럭을 기억시키도록 재할당될 때만 주 메모리에 다시 기입된다. 캐쉬는 그 캐쉬에 기억된 각 데이터 블럭을 위한 태그(tag)를 포함한다. 각 태그는 컴퓨터 어드레스 공간의 어느 부분이 해당 캐쉬 블럭에 기억되는지를 나타내고 대응하는 데이터 블럭이 또다른 CPU의 캐쉬에 기억될 수 있는지를 나타내는 공유 플래그를 포함한다. 기억된 데이터 블럭이 수정될 때, 그 블럭을 위한 태그가 인에블된 공유 플래그를 가지고 있을때 주 메모리에 즉시 기입된다.
캐쉬가 영상 데이터의 블럭을 위하여 라이트-드루 모드(write through mode)에서 동작하게 하려면, 프레임 버퍼 데이터의 한 블럭이 캐쉬에 기억될 때 마다 시스템은 캐쉬에 인에이블된 공유 플래그를 기억시킨다. 그외에, 캐쉬에 있는 플래그는 CPU가 영상데이터의 전체 블럭을 프레임 버퍼에 있는 한 어드레스에 기입할 때를 검출하고 캐쉬는 자신에 영상 데이터를 기억시키지 않고 직접 프레임 버퍼에 기입하게 한다. 최종적으로, 캐쉬에 있는 한 어드레스 회로에 의하여 프레임 버퍼로 부터의 영상 데이터가 캐쉬의 미리 정해진 부분내에만 기억되게 함으로써 영상 데이터에 의하여 바꾸어 질 수 있는 캐쉬내에 저장된 다른 데이터의 양을 제한한다.
본 발명을 기술하기전에, 제1도 및 제2도를 참조하면서, 바람직한 실시예가 동작되는 멀티프로세서 컴퓨터 시스템의 기본 동작을 설명한다.
시스템(100)에 있는 CPU(102, 104 및 106)는 캐쉬 메모리를 사용하고 중복되는 어드레스 공간을 갖는다. 그러므로, 특별한 메모리 블럭의 여러 사본(copy)들이 다른 프로세서의 캐쉬에 동시에 존재하는 것이 가능하다. 캐쉬 결합(cache coherence)을 유지하는 것은, 하나의 프로세서에 의하여 공유 어드레스 공간에 있는 재정된 장소에 데이터를 기입될 때 마다, 다른 프로세서를 위한 캐쉬들이 캐쉬 스누프(cache snoop) 동작을 수행한다는 것을 의미하며, 이 동안에, 각 캐쉬는 이것이 또한 지정된 똑같은 메모리 장소를 기억하는지를 결정한다. 그렇다면, 스누핑하는 캐쉬는 갱신되거나, 기억하는지를 결정한다. 그렇다면, 스누핑하는 캐쉬는 갱신되거나, 그 캐쉬 어레이에 있는 갱신된 블럭을 플래그시킨다. 많은 종래 기술논문은 캐쉬 결합의 여러면을 논의했다. 예를들면, IEEE의 컴퓨터상에서 처리 제 37권 제 8호 페이지 909-920(1988년 8월)에서 C.P. Thacker, L.C. Stewart, 및 E.H. Satterthwaite, Jr의 파이어 플라이 : 멀티프로세서 워크스테이션 , 및 Citicorp/TTI의 컴퓨터 아키텍쳐 회의 진행에서의 새로운 프론티어스라는 책에서 Charles P. Thacker의 공유 메모리를 위한 캐쉬 전략을 참조한다. 이 양자는 여기에서 참고로 설명되어 있다.
공유 메모리 버스(122)의 정확한 동작이 본 발명과 관련되어 있지 않지만, 그 동작에 대한 몇몇 배경정보는 바람직한 실시예의 동작을 이해하는데 유용하다. 바람직한 실시예에서, 메모리 버스(122)는 어드레스 신호 및 판독/기입 코맨드를 전송시키는데 사용되는 64 비트 2진 데이터 버스(142), 공유 신호라인(144), 더티(dirty) 신호라인(146), 3개 클럭라인(148), 중재버스(150), 2개 패러티 라인(152) 및 에러 수정코드를 전송시키는 14개 2진 라인(154)을 포함한다.
중재 버스(150)는 버스를 사용할 동시 요구를 중재하기 위하여 사용된다. 클럭라인(148)은 메모리 버스(122)에 대하여 데이터 전송의 타이밍을 제어하는데 사용되고, 패러티 및 에러 수정코드 라인(152, 154)은 표준 패러티와 에러 수정코드 신호를 전송하는데 사용된다.
데이터 버스(142)와 공유 신호라인(144)의 사용만은 본 발명에 관련된다. 64개 2진 데이터/어드레스 라인(142)은 시간적으로 멀티플렉스되어(time multiplexed) 어드레스 및 코맨드 신호들은 제 1 시간동안 전송되고 데이터는 나중의 시간동안 똑같은 라인상으로 전송된다. 캐쉬로의 CPU 억세스가 누락(miss)을 일으킬 때, 캐쉬는 판독 코맨드와 지정된 어드레스를 버스(122)상에 전송시킨다. 그리고나서, 보통 요구된 데이터 블럭이 주메모리(120)에 의하여 메모리 버스(122)상으로 전송된다. 그러나, 다른 캐쉬가운데 어느것이 지정된 어드레스에 보낼 더 많은 최신 데이터를 담고 있다면, 캐쉬가 주메모리 대신에 요구된 데이터를 보내는 경우에, 그 캐쉬는 인에이블 신호를 더티라인(146)상에 싣는다.
제3도를 참조하면, 각 CPU는 어드레스 버스(202), 데이터 버스(204) 및 제어버스(206)를 포함하는 로우칼(local) 버스(200)를 갖는다. 어드레스 버스(202)는 한 세트의 2진 어드레스 신호를 운반한다. 편의상, 어드레스 비트들은 ABCD로 표시된 4개의 보조세트로 나뉘어져 있는데, 여기에서 A는 최상위 비트들을 나타내고, B는 하나 또는 그 이상의 차상위 비트들을 나타내며, C는 그다음의 비트들을, D는 최하위 비트를 나타낸다. 각 어드레스의 비트들을 4개의 부분으로 나누는 이유는 다음의 설명으로부터 분명하게 될 것이다.
직접 맵 캐쉬는 다음과 같이 작용한다. 캐쉬(112)는 고속 메모리 어레이(220)를 담고 있는데, 이는 한 세트의 B1 블럭을 포함하고 있으며, 약 10×10 초의 억세스 시간을 갖는다. 어레이(220)에 있는 각 블럭(222)은 어떤 세트 크기를 가지며, 이는 일반적으로 2의 어떤 면(power)(즉, 2X, 여기에서 X는 양의 정수)과 같다. 바람직한 실시예에서, 각 블럭(222)은 8개의 워드(word)를 담고 있으며, 각 워드는 4개의 바이트를 담고 있다. 이리하여, 기본적인 어드레스 지정가능 기억장치는 32 비트워드이고, 3개의 어드레스 비트들은 한 블럭(222)에 있는 지정된 워드를 선택하는데 요구된다. 그외에, 각 블럭(222)에 대하여 한 태그(232)를 기억하는 고속 태그 메모리(230)가 있다.
제4도를 참조하면, 각 블럭의 태그(232)는, 어레이(220)에 있는 블럭의 위치를 따라, 블럭(222)의 주 메모리에 있는 장소를 확인하는 어드레스값(234)을 담고있다. 게다가, 각 태그(232)는 각 블럭(222)에 대한 두개의 상태 플래그, 즉, 블럭이 유효 데이터를 담고 있는지의 여부를 나타내는 유효 플래그(236)와 똑같은 데이터 블럭이 시스템에 있는 어느 다른 프로세서의 캐쉬에 기억될 수 있는지의 여부를 나타내는 SHARED 플래그(238)를 담고있다.
종래 기술에 있는 캐쉬 메모리를 포함하여, 캐쉬 메모리에 있는 SHARED 플래그의 동작은 다음과 같다. 제1도에 있는 캐쉬(112)와 같이 어느 한 캐쉬는 주 메모리로부터 한 데이터 블럭을 펫치할 때, 그 똑같은 데이터 블럭 데이터가 어떤 다른 캐쉬에 기억되어 있다면, 그 다른 캐쉬는 인에이블된 SHARED 신호를 공유라인(144)상에 실어 펫치를 행하는 캐쉬는 또다른 캐쉬도 그 블럭을 차지하고 있다는 것을 알게된다. 결국, 양쪽 캐쉬(112, 114)는 그 블럭에 대한 태그(232)에 있는 SHARED 플래그(238)를 세트시킨다. 명백히, 일단 한 특별블럭에 대한 SHARED 플래그(238)가 세트되면, 데이터 블럭이 두개의 캐쉬에 의하여 더이상 공유되지않는 경우에, 공유된 데이터 블럭은 또다른 데이터 블럭을 갖는 다른 캐쉬에 겹쳐서 질 수 있다. 그러나, SHARED 플래그는 여전히 이전에 공유된 데이터 블럭을 기억시키는 캐쉬에 여전히 세트된다. 그러므로, SHARED 플래그(238) 특별 데이터 블럭이 또다른 프로세서와 공유될 수 있다는 것을 나타낸다.
캐쉬(112)가 새로운 데이터를 캐쉬 블럭(222)에 기입할 때 마다, 캐쉬 로직회로(266)는 그 블럭의 태그를 위해 SHARED 플래그(238)를 조사한다. SHARED 플래그가 인에이블되면, 캐쉬 로직회로(266)는 라이트-드루동작(write-through operation)을 수행하는데, 이는 새로운 데이터가 블럭에 기억된 후에 캐쉬로직은 공유 메모리 버스(122)를 통하여 전체 블럭을 주 메모리(120) 및 그 블럭을 공유하는 어드 다른 캐쉬에 기입된다.
제5도를 참조하면, 주 메모리의 어드레스 공간은 어드레스 비트 ABCD에 의하여 표시되는데, 여기에서, D는 캐쉬 블럭(222)에 있는 각 워드의 장소 또는 어드레스를 지정하는데 필요한 비트들의 세트이다. 비트 BC는 어레이(220, 230)로의 인덱스로서 작용하고 어레이(220)에서 억세스되고 있는 블럭(222)의 위치를 확인한다. 특별한 라인에 대한 태그(232)는 메모리의 특별한 블럭의 A어드레스 비트들을 기억한다. 이리하여, 캐시 블럭(232)에 기억된 데이터의 주 메모리 장소는 A(대응하는 태그로부터)와 BC(블럭의 인덱스 값)에 의하여 확인된다.
바람직한 실시예에서, 32개의 어드레스 비트(A31 내지 A0)가 있고, 프레임 버퍼에 기억된 장소에 대해서만 A31은 1과 같다. A어드레스 비트는 A31 내지 A15이고, B어드레스 비트는 A14 내지 A11이며, C어드레스 비트는 A10 내지 A3이고, D어드레스 비트는 A2 내지 A0이다. 이리하여, 캐쉬(112)는 각각이 8개의 워드를 기억하는 4096 블럭을 담고 있다. 각 캐쉬블럭(222)은 대응하는 태그(232)에 기억된 17개 비트 어드레스 값에 의하여 표시된대로 컴퓨터 시스템의 어드레스 공간에 있는 217개 메모리 장소가운데 어느 하나로부터의 데이터를 기억시킬수 있다.
프레임 버퍼(124, 126)는 주메모리(120)의 일부로서 논리적으로 취급된다. 이리하여, A31이 1과 같고 프레임 버퍼에 기억되어 있는 어드레스를 가진 영상 데이터가 데이터 블럭이라 할지라도, 흔히 데이터 블럭이 주 메모리에 기입 된다고 말한다. 또다른 관점에서, 프레임 버퍼는, 주 메모리가 다른 세트의 메모리 회로에 있는 어드레스 공간의 다른 부분에 데이터를 기억시키는 표준 억세스 회로를 가지면서, 단순히 주 메모리(120)의 일부라고 생각될 수 있다.
캐쉬(112)의 보통 동작은 다음과 같다. CPU(102)가 메모리 억세스를 수행할 때, 억세스될 어드레스가 어드레스 버스(202)에 주어지고, 판독/기입 제어신호가 제어신호(206)에 주어진다.
기입동작동안, 데이터는 또한 데이터버스(204)에 주어진다. 상기에 기술된 것처럼, 주어진 데이터를 ABCD로서 표시하여, 캐쉬 제어로직(260)은 태그 어레이(230)에 인덱스를 주기위하여 BC어드레스 비트를 사용한다. 비교기(262)는 인덱스된 태그(232)의 값을 어드레스 비스(202)상의 A어드레스 비트와 비교한다. 이 비교가 수행되는 동안, 캐쉬 어레이(220)는 어드레스 비트 BCD를 사용하여 억세스된다. 비교기(262)는 태그(232)에 기억된 어드레스값(234)과 A어드레스 비트들이 같은지의 여부와 태그의 유효플래그(236)가 인에이블되었는지를 결정한다면, 버퍼(264)는 인에이블되어 캐쉬 어레이(220)에서 어드레스 지정된 장소와 데이터버스(204) 사이에 데이터의 흐름을 허용한다. 즉, 판독 동작동안, 캐쉬에 있는 어드레스 지정된 장소가 버스(204)에 주어지고, 기입동작동안, 버스(204)상의 데이터는 지정된 장소에서 캐쉬에 기입된다.
캐쉬(112)에 있는 비교기(262)가 히트(hit)를 찾지못하면, 캐쉬로직(266)은 억세스 요구를 그 공유메모리 버스 인터페이스(280)로 보내고, 그리고나서 이는 주메모리로 부터 CPU의 요구를 만족시키도록 지정된 데이터를 펫치한다. 더 특정하게, 인터페이스(280)는 주메모리로부터 어드레스 비트 ABD에 대응하는 전체의 데이터 블럭을 펫치하여 어드레스 비트 BC의 값에 대응하는 캐쉬 어레이(220)의 블럭(222)에 로드한다. 이것으로 캐쉬(112)는 CPU의 요구를 만족시킨다. 동시에, 리퍼런스 블럭(222)에 대한 태그 입력(232)은 이에 기억된 새로운 데이터의 소오스를 표시하도록 갱신된다.
로직회로(266)는 캐쉬 어레이 억세스회로(262, 264)의 상태를 지배하는 상태기(state machine)이다. 로직회로(266)은 또한 CPU가 캐쉬에 기억되지않은 메모리 장소를 참조할 때 새로운 데이터 블럭을 캐쉬에 로드하는 프로세스를 지배한다.
제 1 문제는 프레임 버퍼 데이터를 갖는 캐쉬 블럭이 다른 데이터 블럭을 갖도록 요구될 때 까지 라이트 백 캐쉬에 있는 데이터 값이 프레임 버퍼로 다시 기입되지 않는다는 것이다. 이 문제의 해결은 캐쉬가 프레임 버퍼 데이터를 갖고 있는 그러한 캐쉬 블럭에 대하여 라이트-드루모드로 동작하게 하는 것이다. 라이트-드루 캐쉬 작동의 상기 기술을 참조한다. 라이트-드루 캐쉬 동작에 대한 그외의 정보는 IEEE의 컴퓨터상에서 처리 제 37권 제 8호페이지 909-920(1988년 8월)에서 C.P. Thacker, L.C. Stewart 및 E.H. Satterthwaite, Jr. 의 파이어 플라이 : 멀티프로세서 워크스테이션 , 및 Citicorp/TTI의 컴퓨터 아키텍쳐 회의 진행에서의 새로운 프론티어스라는 책자에서 Charles Pl Thacker의 공유 메모리를 위한 캐쉬 전략을 참조한다. 이 양자는 상기에서 참고로 인용되어 설명되었다.
제6도를 참고하면, 제 1 문제의 해결은 인에이블된 SHARED 신호를 메모리 버스의 공유라인(144)상에 주도록 표준 프레임 버퍼(124)를 수정하는 것이다. 이것은 다음과 같이 행해졌다. 메모리 판독 또는 기입동작이 수행될 때 마다, 비교기(300)는 지정된 어드레스가 프레임 버퍼의 비데오 RAM(302)에 기억된 어드레스 공간의 일부에 대응하는지를 알아보도록 조사한다. 비교기는 최상위 비트, A31, 가 1과 같을때만 인에이블되고, 미리정해진 나머지 최상위 비트의 수는 미리 정해진 어드레스 범위값과 비교된다. 지정된 어드레스가 프레임 버퍼(124)에 있다면, 인에이블된 프레임 버퍼 억세스신호가 라인(306)에 주어지는데, 이는 비데오 RAM(302)으로의 억세스를 인에이블시킨다.
라인 306 상의 프레임 버퍼 억세스는 NAND 게이트(308)에 의하여 메모리 버스로부터의 판독 코맨드 신호와 논리적으로 AND 되고, 나타나는 SHARED 신호는 공유 신호라인(144)에 주어진다. 그리하여, 어느 CPU가 프레임 버퍼로부터 데이터 블럭을 판독한다면, 다음의 로직 SHARED 신호는 공유라인(144)상에 주어진다.
제3도를 참조하면, 수정된 프레임 버퍼(124)에 의하여 발생된 SHARED 신호에 의하여 프레임 버퍼 데이터를 수신한 캐쉬의 캐쉬로직(266)이 수신하는 캐쉬 블록에 대한 태그에서 인에이블된 SHARED 플래그(238)를 기억시키게 한다. 결국, CPU(102)가 캐쉬에 기억되어있는 새로운 프레임 버퍼 데이터를 수정할 때 마다, 라이트-드루동작은 캐쉬로직(266)에 의하여 수행되는데, 이는 억세스 캐쉬블록에 대한 SHARED 플래그가 인에블되기 때문이다.
이것은 갱신된 프레임 버퍼 데이터가 자동적으로 프레임 버퍼에 기입되기때문에 제 1 문제를 해결하는데, 이는 직접 맵핑된 프레임 버퍼와 연관된 라이트 백캐쉬를 사용하여 관련된 문제를 극복한다.
제 2 의 문제는 캐쉬블럭을 할당하기위하여 캐쉬 제어로직(260)에 의하여 사용된 방법을 변경시킴으로써 해결된다. 특히, CPU에 의하여 레퍼런스된 감소가 캐쉬에 포함되지 않을때 마다 한 블럭을 한 어드레스에 할당하거나 주메모리(120)로부터 새로운 내용을 펫치하지 않고, 레퍼런스가 판독 동작이거나 충분한 캐쉬블럭보다 적은 기입일 때만 한 블럭을 한 어드레스에 할당하고 주 메모리(120)로부터 새로운 내용을 펫치한다. CPU가 충분한 블럭의 기입을 행할때, 캐쉬는 레퍼런스된 어드레스를 위한 블럭을 할당하지도 않고 그 내요을 펫치하지도 않는다. 그 대신에, 캐쉬를 바이패스하면서 단순히 블럭을 메모리에 기입한다. 이것은 프레임 버퍼 데이터의 쓸데없는 펫치를 피하게한다.
충분한 블럭 기입은(1) 캐쉬 블럭의 사이즈를 한 워드로 세팅시키거나 (2) 캐쉬 블럭에 기입된 데이터를 누적시키고 단일 기입 동작으로서 전체의 블럭을 발생시킬수 있는 기입 버퍼를 포함하는 CPU를 사용함으로써 전형적으로 달성된다. 논의된 파이어플라이시스템(Firefly system)에서 사용되고, 이러한 두개의 옵션중 두번째는 본 발명의 바람직한 실시예에서 사용된다.
제7도를 참조하면, CPU(102)는 CPU(102)에 의하여 기입되는 데이터를 기억하고 제어신호(Write 및 Full Block)를 사용하여, 단일 기입 동작으로서 충분한 데이터의 블럭을 발생하는 기입버퍼(320)를 포함한다. Write와 Full Block 신호를 논리적으로 AND 시키는 AND게이트(324)를 포함한다. Write와 Full Block이 인에이블될 때, CPU는 데이터의 충분한 블럭(즉, 8개 워드)를 기입시킨다. AND 게이트의 출력은 버스 인터페이스(280)로 보내지는데, 이는 인터페이스(280)에게 데이터를 지정된 어드레스로 보낼것을 지시한다. AND 게이트의 출력은 인버터(326)에 의하여 반전되고, 나타나는 신호는 캐쉬의 데이터 버퍼(264)를 디스에이블시키는데 사용되어 CPU로 부터의 데이터가 캐쉬블럭 어레이(220)에 기입되지 않게된다. 더욱이, AND 게이트(324)로 부터의 출력은 캐쉬 논리의 상태기(322)로 보내지는데, 이는 버스 인터페이스(280)로 보내진 신호를 제외하고 상태기가 전체의 데이터 기입동작을 무시하게 한다.
제 3 의 문제는 프레임 버퍼 데이터가 캐쉬(120)의 작은 부분만을 허용함으로써 해결된다. 캐쉬의 이 영역이 디스플레이 정보로 채워지게 될 수 있지만, 캐쉬의 대부분은 프레임 버퍼에 만들어진 억세스에 의하여 방해받는다. 이것은 프레임 버퍼 데이터를 가진 캐쉬의 오염과 상기에 설명한 증가된 캐쉬 누락을 피한다.
본 발명의 바람직한 실시예에서, 직접 맵핑된 캐쉬가 사용된다. 이 캐쉬에 대한 어드레스 비트의 할당이 제5도에 도시되어 있는데, 각각이 데이터의 8개 워드를 기억하는 4096 개의 블럭을 갖는 캐쉬에 대응한다.
제3도, 제4도 및 제5도를 참고하면, 프레임 버퍼 데이터가 기억될 수 있는 캐쉬의 일부분을 제한시키기위하여, 프레임 버퍼용의 어드레스 공간의 영역을 준비해두고 그 캐쉬를 레퍼런스할 때 이러한 어드레스들을 다르게 해석한다. 바람직한 실시예에서, 프레임 버퍼 데이터가 캐쉬의 1/16만을 차지하도록 한다. A31 = 1 로 표시되어 프레임 버퍼 메모리를 위해 어드레스 공간의 반을 준비해 두었음을 주목한다.
제3도에 도시된 바와같이, 태그와 블럭 어레이(230, 220)를 어드레스 지정하는데 사용된 B 어드레스 비트를 수정하는 어드레스 회로(340)가 있다.
제8도를 참조하면, 어드레스 회로(340)는 다음과 같이 작용한다. 로우컬 어드레스 버스(202)상에 최상위 어드레스 비트(MSB, 또는 여기에서 A31 로 표시됨)가 1가 같을때 마다, CPU 는 프레임 버퍼에 있는 데이터를 레퍼런스한다. 어드레스 회로는 두개의 버퍼중 어느 하나(342 또는 344)를 선택적으로 인에이블시키도록 최상위 어드레스 비트를 사용한다. 특히, MSB가 0과 같을때(이는 CPU가 비프레임 버퍼 데이터(non-frame buffer data)를 레퍼런스하는 것을 의미한다.) 버퍼(342)가 인에이블되고, B어드레스 비트들이 어드레스 회로(340)에 의하여 변경되지 않고 전송된다. CPU 가 프레임 버퍼 데이터를 레퍼런스 하기때문에 MSB 가 1과 같을때, 버퍼(344)는 인에이블되어 B어드레스 비트가 어드레스 회로(340)에 의하여 1111과 같이 미리정해진 2진 값으로 교체되게 한다.
이리하여, 어드레스회로(340)는 버퍼(344)에 의하여 주어진 B어드레스 비트에 대해 미리정해진 2진 값에 의하여 정해진 캐쉬의 미리정해진 부분으로 프레임 버퍼장소의 모든 레퍼런스를 배치시킨다.
제3도를 보여진 바와같이, 부재번호(330)로 표시된 태그 어레이(230)의 하단 1/16에 있는 태그(332)는 다른 태그보다 다소 더 크다. 태그 어레이(230)의 부분(330)은 어드레스 회로(340)에 세트되어있는 B어드레스 비트에 대해 미리 정해진 어떤 값에 대응한다. 태그 어레이의 부분(330)에 있는 태그(332)는 A와 B어드레스 비트(제5도 참조)에 대응하는 어드레스 값을 기억해야 하는데 비해, 다른 태그는 오직 A어드레스 비트만을 기억한다. 이에 대한 이유는 B어드레스 비트들이 캐쉬에 저장되고있는 정확한 프레임 버퍼 장소를 결정하는데 필요하다는 것이다.
프레임 버퍼가 배치되어있는 캐쉬의 일부에 대한 태그(332)에 있는 여분의 비트들은 다음과 같이 취급된다. 제9도를 참조하면, 선택된 태그(즉, B'C 어드레스 비트에 대응하는 태그)로부터 수신된 태그 데이터는 두개의 성분, 즉, A어드레스 비트에 대응하는 어드레스 비트와 유효 플래그(236)를 포함하는 TAG-A, 태그 어레이의 일부분(330)에서만 기억된 B어드레스 비트에 대응하는 TAG-B를 포함한다.
바람직한 실시예의 캐쉬로직에 사용된 비교기회로(262)는 각각이 두개의 출력신호를 발생시키는 두개의 비교기(350, 352)를 포함한다. 비교기(350)는 어드레스 버스(202)로부터의 A어드레스 비트와 TAG-A를 비교한다. 두 세트의 어드레스 비트가 매칭되고, 유효 플래그가 인에이블된다면, 비교기(250)는 인에이블된 MATCH-A 신호를 출력시키고, 그렇지 않으면 인에이블된 NO-MATCH-A 신호를 출력시킨다. 비교기(352)는, 1과 같은 A31(제9도에서 MSB로 되어있음)에 의하여 표시된대로, CPU가 프레임 버퍼 데이터를 억세스할 때만 인에이블된다. 비교기(352)는 어드레스 버스(202)로 부터의 B어드레스 비트와 TAG-B를 비교한다. 두 세트의 어드레스 비트가 매칭되고 유효 플래그가 인에이블된다면, 비교기(350)는 인에이블된 MATCH-B 신호를 출력시키고, 그렇지 않다면 인에이블된 NO-MATCH-B 신호를 출력시킨다. AND 게이트(354)는 두개의 MATCH-A와 MATCH-B 신호를 결합하여 억세스된 태그가 로우컬 어드레스 버스(202)상에서 고차(high order)의 어드레스 비트와 매칭될 때만 인에이블된 MATCH 신호를 발생시킨다. OR 게이트(356)는 두개의 NO-MATCH-A와 NO-MATCH-B 신호를 결합하여 억세스된 태그가 로우컬 어드레스 버스(202)상에서 고차의 어드레스 비트와 매칭되지 않을때 인에이블된 NO-MATCH 신호를 발생시킨다.
여분의 어드레스 정보를 기억시키는 태그(332)와 비교기(262), 어드레스 회로(340)의 결합된 효과는 모든 프레임 버퍼 데이터를 캐쉬(112)의 작은 부분에 배치시킨다. 프레임 버퍼 장소에 대한 캐쉬의 특별부분의 선택은 교환(tradeoff)이다. 큰 부분(즉, ½ 또는 ¼)은 프레임 버퍼의 레퍼런스의 패턴이 보통 프로그램의 공간 및 시간장소를 나타낸다. 면 캐쉬는 이러한 레퍼런스를 더 효율적으로 만든다는 것을 의미한다. 한편, 큰 부분은 바람직하지 못한 프레임 버퍼 레퍼런스 패턴이 캐쉬로 부터의 프로그램 텍스트와 더 많은 정상 데이터를 교체할 것을 의미한다. 본 발명의 계획된 실행에서, 발명자들은 프레임 버퍼 데이터를 위해 128 kilobyte 캐쉬의 1/32를 사용한다.
본 발명의 몇몇 특정한 실시예를 참조하여 설명되었지만, 본 발명을 설명하기위한 것으로 본 발명을 제한시키는 것으로 해석해서는 안된다. 첨부된 특허청구의 범위에서 정해진 본 발명의 진정한 정신과 범위를 벗어나지 않고 당업자에 의한 여러 수정이 일어날 수 있다.
예를들어, 제7도에서 보는것 처럼, 영상 데이터가 프레임 버퍼로부터 판독될 때 공유신호를 주기위한 회로는 프레임 버퍼 데이터의 블럭이 캐쉬에 기억될 때 마다 인에이블된 SHARED 플래그를 기억하는 각 캐쉬에서 단순한 회로로 교체될 수 있다.

Claims (5)

  1. 데이터가 기억되고 상기 프로세서에 의해 검색되는 어드레스를 표시하는 어드레스 신호를 운반하는 어드레스 버스를 포함하는 메모리 버스에 의해 상기 프로세서에 결합되며, 소정 어드레스 공간내의 지정 어드레스에 데이터를 기억시키는 주메모리, 하나 이상의 프레임 버퍼에 저장된 영상 데이터를 디스플레이하기 위한 디스플레이 장치, 상기 주메모리보다 빠른 속도로 상기 어드레스 공간의 본 부분을 상기 프로세서가 억세스하도록 하기 위해 상기 프로세서 및 상기 메모리에 결합된 캐쉬 메모리를 포함하며, 상기 주메모리가 상기 어드레스 공간의 소정 부분의 어드레스에서 영상 데이터를 기억하기 위한 하나 이상의 프레임 버퍼, 및 상기 소정 부분 외에 상기 어드레스 공간의 부분에서 추가의 데이터를 기억하기 위한 다른 메모리를 포함하고, 상기 캐쉬 메모리는 상기 어드레스 공간의 부분이 각각의 상기 블록 기억되는 것을 표시하기 위한 데이터 및 태그 어레이의 블록을 기억하기 위한 직접 맵핑된 캐쉬 어레이를 포함하고, 상기 태그 어레이는 상기 캐쉬 메모리에 기억된 데이터의 상기 블록 각각을 위한 태그를 포함하고, 상기 캐쉬 메모리는 상기 캐쉬 어레이의 소정 부분에서만 상기 하나이상의 프레임 버퍼로부터 영상 데이터의 블록을 저장하기 위한 캐쉬 로직을 포함하고, 상기 소정 부분은 상기 캐쉬 어레이의 절반을 포함하고, 상기 캐쉬 로직은 상기 어드레스 버스상의 상기 어드레스 신호 일부분과 일치하는 캐쉬 어레이 어드레스를 생성하기 위해 상기 메모리 버스에 결합된 어드레스 로직을 포함하고, 상기 어드레스 로직은 상기 메모리 버스가 상기 어드레스 공간의 상기 소정 부분에서 어드레스를 가지는 영상 데이터를 운반할 때마다 소정 값으로 상기 캐쉬 어레이 어드레스의 하나 이상의 소정 비트를 대치하여, 소정 값으로 지정한 상기 하나 이상의 소정 비트를 가지는 캐쉬 어레이 어드레스에 대한 상기 캐쉬 어레이에서 영상 데이터의 저장을 제한하고, 상기 캐쉬 로직은 상기 하나 이상의 프레임 버퍼로부터 영상 데이터에 의해 디스플레이 될 수 있는 상기 캐쉬에 기억된 다른 데이터의 량을 제한하는 것을 특징으로 하는 컴퓨터 시스템.
  2. 다수의 프로세서, 어드레스 신호를 운반하는 어드레스 버스를 포함하는 메모리 버스에 의해 상기 프로세서에 결합되며, 다수의 프로세서에 의해 적어도 부분적으로 공유된 소정 어드레스 공간내의 지정 어드레스에서 데이터를 기억하기 위한 주메모리, 하나 이상의 프레임 버퍼에 기억된 영상 데이터를 디스플레이하기 위한 디스플레이 장치, 상기 메모리 버스에 결합되고, 상기 주메모리보다 빠른 속도에서 상기 어드레스 공간의 부분을 상기 프로세서가 억세스하도록 하기 위해 상기 프로세서중 하나에 결합된 다수의 캐쉬 메모리를 포함하고, 상기 주메모리가 상기 어드레스 공간 소정 부분의 어드레스에 영상 데이터를 기억하기 위한 하나 이상의 프레임 버퍼, 및 상기 소정 부분 외에 상기 어드레스 공간의 부분에 추가의 데이터를 기억하기 위한 다른 메모리를 포함하고, 각 상기 캐쉬 메모리는 상기 어드레스 공간의 부분이 각각의 상기 블록에 저장되는가를 표시하기 위한 데이터 및 태그 어레이 블록을 기억하기 위한 직접 맵핑된 캐쉬 어레이를 포함하고, 각 캐쉬 메모리가 상기 캐쉬 어레이의 소정 부분에서만 하나 이상의 프레임 버퍼로부터 영상 데이터의 블록을 기억하기 위한 캐쉬 로직을 포함하고, 상기 소정 부분이 상기 캐쉬 어레이의 절반을 포함하고, 상기 캐쉬 로직이 상기 어드레스 버스상의 어드레스 신호 부분에 일치하는 캐쉬 어레이 어드레스를 생성하기 위해 사이 메모리 버스에 결합된 어드레스 로직을 포함하고, 상기 어드레스 로직은 상기 메모리 버스가 상기 어드레스 공간의 상기 소정 부분에서 어드레스를 가지는 영상 데이터를 운반할 때마다 소정 값을 가지는 상기 캐쉬 어레이의 하나 이상의 소정 비트를 대치하는 회로를 포함하여, 상기 소정 값으로 지정한 하나 이상의 소정 비트를 가지는 캐쉬 어레이 어드레스에 대한 상기 캐쉬 어레이에서 영상 데이터의 기억을 제한하고, 상기 캐쉬 로직은 상기 하나 이상의 프레임 버퍼로부터 영상 데이터에 의해 대치되는 상기 캐쉬에 저장된 다른 데이터 량을 제한하는 것을 특징으로 하는 컴퓨터 시스템.
  3. 제2항에 있어서, 상기 어드레스 로직은 상기 메모리 버스가 상기 어드레스 공간의 상기 소정 부분에서 어드레스를 가지는 영상 데이터를 운반할 때마다 소정값을 가지는 상기 캐쉬 어레이 어드레스의 다수의 소정 비트를 대치하여, 상기 소정 값으로 지정한 상기 다수의 소정 비트를 가지는 캐쉬 어레이 어드레스에 대한 상기 캐쉬 어레이에서 영상 데이터의 기억을 제한하는 것을 특징으로 하는 컴퓨터 시스템.
  4. 프로세서, 데이터가 메모리에 의해 어드레스에 저장되는 것을 표시하는 신호를 운반하는 메모리 버스에 의해 상기 프로세서에 결합되며, 소정 어드레스 공간내의 지정 어드레스에서 데이터를 기억하기 위한 주메모리, 상기 하나 이상의 프레임 버퍼에 기억된 영상 데이터를 디스플레이하기 위한 디스플레이 장치, 상기 주메모리보다 빠른 속도에서 상기 어드레스 공간의 본 부분을 상기 프로세서가 억세스하도록 하기 위해 상기 메모리 버스 및 상기 프로세서에 결합된 캐쉬 메모리를 포함하고, 상기 주메모리는 상기 어드레스 공간의 소정 부분에서 어드레스에 영상 데이터를 기억하기 위한 하나 이상의 프레임 버퍼, 및 상기 소정 부분 외에 상기 어드레스 공간의 부분에서 추가의 데이터를 기억하기 위한 다른 메모리를 포함하고, 상기 캐쉬 메모리는 상기 어드레스 공간의 부분이 각각의 상기 블록에 기억되는가를 표시하기 위한 데이터 및 태그 어레이의 블록을 기억하기 위한 직접 맵핑된 캐쉬 어레이를 포함하고, 상기 태그 어레이가 상기 캐쉬 메모리에 저장된 상기 데이터의 블록 각각을 위한 태그를 포함하고, 상기 태그는 어드레스 값, 및 상태 플래그를 표시하고, 상기 캐쉬 메모리는 상기 하나 이상의 프레임 버퍼로부터 영상 데이터의 블록이 상기 캐쉬 메모리에 저장될 때마다 상기 캐쉬 메모리에서 인에이블된 상태 플래그를 기억하기 위한 상태 로직을 포함하고, 여기서 상기 상태 로직은, 만약 상기 데이터의 블록이 다른 프로세서에 결합된 다른 캐쉬 메모리에서 역시 저장되지 않으면, 상기 다른 메모리에 일치하는 상기 어드레스 공간의 부분에서 어드레스를 가지는 데이터의 블록이 상기 캐쉬 메모리에 저장될 때마다 상기 캐쉬 메모리에서 디스에이블된 상태 플래그를 저장하고, 상기 캐쉬 메모리는 상기 데이터의 블록이 상기 프로세서에 의해 수정되고 블록용 상기 상태 태그가 인에블될 때마다 상기 주메모리에 대한 상기 캐쉬 메모리에 저장된 데이터의 블록을 자동적으로 기록하기 위한 캐쉬 로직을 포함하고, 상기 캐쉬 로직은 상기 프로세서에 의해 수정되고 상기 데이터의 블록이 상기 캐쉬 메모리로부터 대치될 때만 상기 블록을 위한 상기 태그에서 디스에이블된 상태 플래그를 가지는, 상기 캐쉬 메모리에 저장된 데이터의 상기 주메모리 블록을 기록하고, 그래서 상기 캐쉬 메모리는 상기 하나 이상의 프레임 버퍼에 영상 데이터의 수정된 블록을 항상 기록하는 것을 특징으로 하는 컴퓨터 시스템.
  5. 다수의 프로세서, 데이터가 상기 프로세서에 의해 저장되는 어드레스를 표시하는 신호를 운반하는 메모리 버스에 의해 프로세서에 의해 결합되며, 소정 어드레스 공간내의 지정 어드레스에 기억하는 주메모리, 상기 하나 이상의프레임 버퍼에서 저장된 영상 데이터를 디스플레이하는 디스플레이 장치, 상기 메모리 버스에 결합되고, 상기 주메모리보다 빠른 속도에서 상기 어드레스 공간의 본 부분을 상기 프로세서가 억세스하도록 하기 위해 상기 프로세서중의 하나에 결합된 다수의 캐쉬 메모리를 포함하고, 상기 주메모리가 상기 어드레스 공간 소정 부분의 어드레스에 영상 데이터를 기억하기 위한 하나 이상의 프레임 버퍼, 및 상기 소정 부분 외에 상기 어드레스 공간의 부분에서 추가의 데이터를 기억하기 위한 다른 메모리를 포함하고, 각 상기 캐쉬 메모리는 상기 어드레스 공간의 부분이 각각의 상기 블록에 저장되는가를 표시하기 위한 데이터 및 태그 어레이의 블록을 기억하기 위한 직접 맵핑된 캐쉬 어레이를 포함하고, 상기 태그 어레이는 상기 캐쉬 메모리에 저장된 데이터의 상기 데이터의 블록 각각을 위한 태그를 포함하고, 상기 태그는 어드레스 값, 및 데이터의 상기 블록이 상기 캐쉬 메모리 중의 다른 하나에 기억될 때 인에이블되는 공유 플래그를 포함하고, 각 캐쉬 메모리는 데이터의 블록이 상기 프로세서에 의해 수정되고 상기 블록용 상기 태그가 인에이블된 공유 플래그를 가질 때마다 상기 주메모리에 대한 상기 캐쉬 메모리에 저장된 데이터의 블록을 자동적으로 기록하기 위한 캐쉬 논리를 포함하고, 상기 캐쉬 논리는 상기 프로세서에 의해 수정되고 데이터의 상기 블록이 상기 캐쉬 메모리로부터 대치될 때만 상기 블록용 상기 태그에서 디스에이블된 공유 플래그를 가지는 상기 캐쉬 메모리에서 저장된 데이터의 상기 주메모리 블록을 기록하고, 상기 캐쉬 로직은 상기 캐쉬 메모리에 결합된 상기 프로세서 외에, 상기 다수의 프로세서중 어떤 것이 상기 캐쉬 메모리에서 역시 기록되는 데이터를 억세스할 때마다 상기 메모리 버스상의 공유 신호를 주장하고, 각 캐쉬 메모리는 (A) 영상 데이터의 상기 블록이 상기 캐쉬 메모리중 다른 하나에 저장되는 것에도 불구하고, 하나 이상의 프레임 버퍼로부터 영상 데이터의 블록이 상기 캐쉬 메모리에 저장될 때마다, (B) 데이터의 블록이 상기 캐쉬 메모리에 저장될 때마다, 상기 캐쉬 메모리에서 인에이블된 공유 플래그를 기억하기 위한 공유 플래그 로직을 포함하고, 상기 데이터의 블록은 상기 다른 메모리에 일치하는 상기 어드레스의 공간 부분에서 어드레스를 가지며, 상기 메모리 버스상에 공유 신호 존재는 상기 기억된 데이터의 블록이 상기 캐쉬 메모리의 다른 하나에 기억될 수 있다는 것을 가리키고, 여기서 상기 공유 플래그 로직은 상기 다른 메모리에 일치하는 상기 어드레스 공간의 부분에서 어드레스를 가지는 데이터의 블록이 상기 캐쉬 메모리에 기억되고 비공유된 신호가 상기 메모리 버스상에 존재하지 않을 때마다 상기 캐쉬 메모리에서 디스에이블된 상태 플래그를 저장하고, 그것에 의해 상기 캐쉬 메모리는 영상 데이터의 수정 블록을 상기 하나 이상의 프레임 버퍼에 항상 기록하고, 상기 캐쉬 메모리의 다른 하나와 공유되고 상기 다른 메모리에 일치하는 상기 어드레스 공간의 부분에서 어드레스를 가지는 수정 데이터를 상기 다른 메모리에 기록하는 것을 특징으로 하는 컴퓨터 시스템.
KR1019900021313A 1989-12-22 1990-12-21 고성능 프레임 버퍼 및 캐쉬메모리 시스템 KR100190350B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US45595289A 1989-12-22 1989-12-22
US7455952 1989-12-22
US07454952 1989-12-22

Publications (2)

Publication Number Publication Date
KR910012933A KR910012933A (ko) 1991-08-08
KR100190350B1 true KR100190350B1 (ko) 1999-06-01

Family

ID=23810861

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019900021313A KR100190350B1 (ko) 1989-12-22 1990-12-21 고성능 프레임 버퍼 및 캐쉬메모리 시스템

Country Status (4)

Country Link
US (1) US5276851A (ko)
EP (1) EP0435475B1 (ko)
KR (1) KR100190350B1 (ko)
DE (1) DE69025302T2 (ko)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835945A (en) * 1990-08-06 1998-11-10 Ncr Corporation Memory system with write buffer, prefetch and internal caches
JPH05108473A (ja) * 1991-03-20 1993-04-30 Hitachi Ltd デ−タ処理システム
US5581731A (en) * 1991-08-30 1996-12-03 King; Edward C. Method and apparatus for managing video data for faster access by selectively caching video data
US5491811A (en) * 1992-04-20 1996-02-13 International Business Machines Corporation Cache system using mask bits to recorder the sequences for transfers of data through cache to system memory
US5590310A (en) * 1993-01-14 1996-12-31 Integrated Device Technology, Inc. Method and structure for data integrity in a multiple level cache system
JPH06332664A (ja) * 1993-03-23 1994-12-02 Toshiba Corp 表示制御システム
US6311286B1 (en) * 1993-04-30 2001-10-30 Nec Corporation Symmetric multiprocessing system with unified environment and distributed system functions
TW234174B (en) * 1993-05-14 1994-11-11 Ibm System and method for maintaining memory coherency
US5504874A (en) * 1993-09-29 1996-04-02 Silicon Graphics, Inc. System and method of implementing read resources to maintain cache coherency in a multiprocessor environment permitting split transactions
WO1995015528A1 (en) * 1993-11-30 1995-06-08 Vlsi Technology, Inc. A reallocatable memory subsystem enabling transparent transfer of memory function during upgrade
JP3544557B2 (ja) * 1994-04-08 2004-07-21 オリンパス株式会社 画像ファイル装置
US5666514A (en) * 1994-07-01 1997-09-09 Board Of Trustees Of The Leland Stanford Junior University Cache memory containing extra status bits to indicate memory regions where logging of data should occur
JPH09245179A (ja) * 1996-03-08 1997-09-19 Mitsubishi Electric Corp コンピュータグラフィックス装置
US6222552B1 (en) 1996-07-26 2001-04-24 International Business Machines Corporation Systems and methods for caching depth information of three-dimensional images
EP0821324A3 (en) * 1996-07-26 1999-05-06 International Business Machines Corporation Cache memory for Z-buffer
US6351788B1 (en) * 1996-10-30 2002-02-26 Hitachi, Ltd. Data processor and data processing system
JP3592004B2 (ja) * 1996-10-31 2004-11-24 キヤノン株式会社 情報共有管理システム及び情報共有システム管理装置と方法
US6128711A (en) 1996-11-12 2000-10-03 Compaq Computer Corporation Performance optimization and system bus duty cycle reduction by I/O bridge partial cache line writes
US6122708A (en) * 1997-08-15 2000-09-19 Hewlett-Packard Company Data cache for use with streaming data
US6324633B1 (en) * 1999-12-29 2001-11-27 Stmicroelectronics, Inc. Division of memory into non-binary sized cache and non-cache areas
US6965641B1 (en) * 2000-03-02 2005-11-15 Sun Microsystems, Inc. Apparatus and method for scalable buffering in a digital video decoder
US6751720B2 (en) 2000-06-10 2004-06-15 Hewlett-Packard Development Company, L.P. Method and system for detecting and resolving virtual address synonyms in a two-level cache hierarchy
US6995771B2 (en) * 2001-12-07 2006-02-07 Intel Corporation Sparse refresh of display
US6888551B2 (en) * 2001-12-07 2005-05-03 Intel Corporation Sparse refresh of display
US7558900B2 (en) * 2004-09-27 2009-07-07 Winbound Electronics Corporation Serial flash semiconductor memory
US7562190B1 (en) 2005-06-17 2009-07-14 Sun Microsystems, Inc. Cache protocol enhancements in a proximity communication-based off-chip cache memory architecture
US7496712B1 (en) 2005-06-17 2009-02-24 Sun Microsystems, Inc. Proximity communication-based off-chip cache memory architectures
US7444473B1 (en) 2005-06-17 2008-10-28 Sun Microsystems, Inc. Speculative memory accesses in a proximity communication-based off-chip cache memory architecture
US7509460B2 (en) * 2006-05-04 2009-03-24 Sun Microsystems, Inc. DRAM remote access cache in local memory in a distributed shared memory system
US8495299B2 (en) 2009-11-16 2013-07-23 Microsoft Corporation Non-blocking data transfer via memory cache manipulation
CN102216911A (zh) * 2011-05-31 2011-10-12 华为技术有限公司 一种数据管理方法、装置及数据芯片
JP6155723B2 (ja) * 2013-03-18 2017-07-05 富士通株式会社 レーダ装置及びプログラム

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4077059A (en) * 1975-12-18 1978-02-28 Cordi Vincent A Multi-processing system with a hierarchial memory having journaling and copyback
US4084231A (en) * 1975-12-18 1978-04-11 International Business Machines Corporation System for facilitating the copying back of data in disc and tape units of a memory hierarchial system
US4075686A (en) * 1976-12-30 1978-02-21 Honeywell Information Systems Inc. Input/output cache system including bypass capability
US4141067A (en) * 1977-06-13 1979-02-20 General Automation Multiprocessor system with cache memory
US4268907A (en) * 1979-01-22 1981-05-19 Honeywell Information Systems Inc. Cache unit bypass apparatus
US4433374A (en) * 1980-11-14 1984-02-21 Sperry Corporation Cache/disk subsystem with cache bypass
US4466059A (en) * 1981-10-15 1984-08-14 International Business Machines Corporation Method and apparatus for limiting data occupancy in a cache
US4500954A (en) * 1981-10-15 1985-02-19 International Business Machines Corporation Cache bypass system with post-block transfer directory examinations for updating cache and/or maintaining bypass
US4429363A (en) * 1981-10-15 1984-01-31 International Business Machines Corporation Method and apparatus for managing data movements from a backing store to a caching buffer store
US4742454A (en) * 1983-08-30 1988-05-03 Amdahl Corporation Apparatus for buffer control bypass
US4942518A (en) * 1984-06-20 1990-07-17 Convex Computer Corporation Cache store bypass for computer
JPH0630075B2 (ja) * 1984-08-31 1994-04-20 株式会社日立製作所 キャッシュメモリを有するデータ処理装置
US4685082A (en) * 1985-02-22 1987-08-04 Wang Laboratories, Inc. Simplified cache with automatic update
US5045996A (en) * 1986-11-12 1991-09-03 Xerox Corporation Multiprocessor cache memory housekeeping
JPH0668735B2 (ja) * 1987-02-09 1994-08-31 日本電気アイシーマイコンシステム株式会社 キヤツシユメモリ−
US4956803A (en) * 1987-07-02 1990-09-11 International Business Machines Corporation Sequentially processing data in a cached data storage system
US5025366A (en) * 1988-01-20 1991-06-18 Advanced Micro Devices, Inc. Organization of an integrated cache unit for flexible usage in cache system design
US4939641A (en) * 1988-06-30 1990-07-03 Wang Laboratories, Inc. Multi-processor system with cache memories
US5027110A (en) * 1988-12-05 1991-06-25 At&T Bell Laboratories Arrangement for simultaneously displaying on one or more display terminals a series of images

Also Published As

Publication number Publication date
KR910012933A (ko) 1991-08-08
US5276851A (en) 1994-01-04
EP0435475A2 (en) 1991-07-03
DE69025302D1 (de) 1996-03-21
EP0435475B1 (en) 1996-02-07
EP0435475A3 (en) 1992-08-05
DE69025302T2 (de) 1996-10-02

Similar Documents

Publication Publication Date Title
KR100190350B1 (ko) 고성능 프레임 버퍼 및 캐쉬메모리 시스템
US4928225A (en) Coherent cache structures and methods
US5325504A (en) Method and apparatus for incorporating cache line replacement and cache write policy information into tag directories in a cache system
US6418523B2 (en) Apparatus comprising a translation lookaside buffer for graphics address remapping of virtual addresses
US7415575B1 (en) Shared cache with client-specific replacement policy
US5561780A (en) Method and apparatus for combining uncacheable write data into cache-line-sized write buffers
US5029070A (en) Coherent cache structures and methods
KR100190351B1 (ko) 2-레벨 캐시 메모리의 방해 감소장치 및 방법
US5146603A (en) Copy-back cache system having a plurality of context tags and setting all the context tags to a predetermined value for flushing operation thereof
JP2662603B2 (ja) 無効要求を選別する方法及び装置
US5091851A (en) Fast multiple-word accesses from a multi-way set-associative cache memory
US4959777A (en) Write-shared cache circuit for multiprocessor system
US5404489A (en) System and method for minimizing cache interruptions by inhibiting snoop cycles if access is to an exclusive page
US6069638A (en) System for accelerated graphics port address remapping interface to main memory
JP3264319B2 (ja) バスブリッジ
US20040073740A1 (en) System and method for increasing the snoop bandwidth to cache tags in a cache memory sybsystem
US5724547A (en) LRU pointer updating in a controller for two-way set associative cache
KR100285533B1 (ko) 라이트 드루 가상 캐시메모리, 에일리어스 어드레싱 및 캐시플러시
US5850534A (en) Method and apparatus for reducing cache snooping overhead in a multilevel cache system
US6065099A (en) System and method for updating the data stored in a cache memory attached to an input/output system
US6223266B1 (en) System and method for interfacing an input/output system memory to a host computer system memory
JPH11288386A (ja) コンピュータシステム
US6751700B2 (en) Date processor and storage system including a set associative cache with memory aliasing
US6282625B1 (en) GART and PTES defined by configuration registers
US5386538A (en) Data cache access for signal processing systems

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

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee