KR100228940B1 - 메모리 일관성 유지 방법 - Google Patents

메모리 일관성 유지 방법 Download PDF

Info

Publication number
KR100228940B1
KR100228940B1 KR1019960001883A KR19960001883A KR100228940B1 KR 100228940 B1 KR100228940 B1 KR 100228940B1 KR 1019960001883 A KR1019960001883 A KR 1019960001883A KR 19960001883 A KR19960001883 A KR 19960001883A KR 100228940 B1 KR100228940 B1 KR 100228940B1
Authority
KR
South Korea
Prior art keywords
bus
data
memory
memory controller
snoop
Prior art date
Application number
KR1019960001883A
Other languages
English (en)
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 포만 제프리 엘
Application granted granted Critical
Publication of KR100228940B1 publication Critical patent/KR100228940B1/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
    • 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)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 데이타 프로세싱 시스템에 있어서 메모리 일관성을 유지하는 방법에 관한 것이다. 이 데이타 프로세싱 시스템은 이중버스 메모리 제어기를 갖는 메모리 시스템을 포함하며, 이 메모리 제어기는 제 1 버스를 통해 제 1 버스 마스터에 접속되고 제 2 버스를 통해 제 2 버스 마스터에 연결된다. 본 발명의 방법은 데이타 프로세싱 유닛내의 어드레스/데이타 멀티플렉스 버스상의 속성에 대해 제 1 버스 혹은 제 2 버스를 가로질러 스누핑하므로써 메모리 일관성을 유지한다. 스누프 동작이 요구되는 때를 판정하기 위해, 시스템은 이중 버스 메모리 제어기를 통해 두 버스중의 하나에 대한 액세스를 요청하는 것부터 시작한다. 일단 버스제어가 승인되면 요구 데이타는 마스터 버스 제어기를 사용하여 전송된다. 스누프 동작은 버스를 통해 데이타를 전송하는 동안 무효 데이타 신호(invalid data signal)를 수신할 때 시작된다. 스누프는 무효 데이타 신호가 수신된 이후에만 주입되며, 최종 스누프 주입은 최종 판독 데이타가 판독된 이후에만 발생할 수 있다.

Description

메모리 일관성 유지 방법
제1도는 본 발명의 대표적인 마이크로프로세서의 블럭도.
제2도는 제1도의 프로세싱 유닛에 접속된 메모리 시스템의 블럭도.
제3도는 제공된 스누프 윈도우의 제1스누프의 타이밍도.
제4도는 제공된 스누프 윈도우내에서 수행되는 최종 스누프의 타이밍도.
* 도면의 주요부분에 대한 부호의 설명
10 : 마이크로프로세서 12 : 정수 유닛
14 : 부동 소수점 유닛 16 : 분기 프로세싱 유닛
18 : 로드/저장 유닛 20 : 시스템 레지스터 유닛
22 : 인스트럭션 캐쉬 24 : 데이타 캐쉬
26 : 인스트럭션 메모리 관리 유닛 28 : 데이타 메모리 관리 유닛
30 : 데이타 변환 룩어사이드 버퍼
32 : 인스트럭션 변환 룩어사이드 버퍼
34 : 인스트럭션 블럭 어드레스 변환 어레이
36 : 데이타 블럭 어드레스 변환 어레이
42 : 프로세서 버스 인터페이스 44 : 되복제 버퍼
46 : 터치 로드 버퍼 48, 50 : 태그
52 : 인스트럭션 유닛 54 : 순차적 인출기
56 : 인스트럭션 큐 58 : 디스패치 유닛
60 : GPR 화일 62 : GP 재명명 레지스터
64 : FP 재명명 레지스터 102 : 메모리 제어기
104 : 버스 마스터 B(DMA) 106 : DRAM
본 발명은 전반적으로 데이타 저장 시스템에 관한 것으로, 보다 구체적으로, 프로세싱 유닛 내부 혹은 외부에 캐쉬 유닛을 구비한 데이타 저장 시스템에 관한 것이다. 더 구체적으로, 본 발명은 향상된 스누핑 방안(improved snooping scheme)에 의해 메모리 일관성을 유지하는 캐쉬 유닛을 구비한 데이타 저장 시스템에 관한 것이다.
오늘날 다수의 컴퓨터 시스템은 컴퓨터 시스템에 상충되는 요구들을 충족시키기 위해 여러 레벨의 메모리 저장 장치를 구비한다. 예를 들면, 컴퓨터 시스템은 고속으로 동작하도록 설계되고, 메모리 장치는 이 컴퓨터 시스템내에서 사용되는 프로세싱 유닛과 동일한 속도로 동작할 필요가 있다. 불행하게도, 고속 메모리 소자의 가격은 마이크로프로세서 자체의 가격과 비슷하므로, 고속의 메모리를 사용할 경우 시스템 전체의 가격이 상승하게 된다. 하나의 타협안으로 특정한 응용에 대해서 저속이고 저가인 메모리 유닛을 사용하는 것이 있다. 이러한 응용중 하나는 프로세싱 유닛이 정보를 사용하기 전에 저속의 동적 RAM 메모리를 사용하여 이 정보를 임시 보유하는 것이다. 또다른 방안으로 프로세싱 유닛과 동일한 속도로 동작하는 소형의 값비싼 고속 캐쉬 유닛을 사용하는 것이다. 이러한 캐싱 유닛은 대용량의 단기적(short-term) 저장 메모리에 비해 소형이기 때문에, 컴퓨터 시스템의 전체 가격에 대해서는 그다지 큰 영향을 끼치지 않는다. 마지막으로, 통상적으로 다른 유형의 메모리에 비해 상대적으로 저가인 하드 디스크 드라이브와 같은 대용량의 장기 저장 메모리가 제공된다.
불행하게도, 컴퓨터 시스템이 상이한 유형의 메모리 및 상이한 종류의 메모리 위치를 가진다면, 메모리 제어기가 프로세싱 유닛 또는 컴퓨터 시스템에 접속된 주변 장치와 같은 임의의 다른 자원에 의해 요구되거나 혹은 프로세싱된 가장 최근의 정확한 데이타를 관리하는 데 있어서 문제점이 야기될 수 있다. 따라서, 프로세싱 시스템은 사용되는 여러 유형의 메모리 유닛들 사이에 메모리 일관성(memory coherency)을 유지해야 한다.
일관성 있는 메모리 시스템의 주요한 목적은 이 시스템을 사용하는 모든 장치에 동일한 메모리 이미지를 제공하는 데 있다. 일관성은 공유 자원들의 동기화 및 공동 사용을 허용한다. 일관성이 없다면, 하나의 메모리 위치에 대한 다수의 복제본(이들 복제본들 중 몇몇은 오류값(stale value)을 가짐)이 존재할 수 있으며, 그 결과 오류값이 사용될 경우 에러가 야기될 수 있다. 시스템내의 각각의 잠재적 버스 마스터(bus master)는 내부 캐쉬 상태를 관리하기 위한 규칙을 따라야 한다.
캐쉬 일관성 프로토콜(cache coherency protocol)의 하나의 유형으로는 공유 상태를 배제한 표준 MESI 4-상태 프로토콜의 일관성 서브세트(coherent subset of standard MESI four-state protocol)이 있다. 데이타는 공유될 수 없기 때문에, 프로세서는 마치 기록 미쓰(수정 목적의 판독(read-with-intent-to-modify))가 발생한 것처럼 모든 캐쉬 블럭을 채우도록 신호하여, 프로세서의 캐쉬 블럭 채움 동작 전에 프로세서 외부의 모든 캐쉬내의 대응하는 데이타 복제본을 플러시(flush)한다.
일관성을 유지하기 위해, 버스상에서 프로세서에 의해 관측된 모든 전역 판독 동작(all global reads)은 마치 이들이 기록 동작(writes)인 것처럼 스누핑되어, 프로세서가 변경된 캐쉬 블럭을 메모리에 되기록할 수 있도록 하고, 프로세서가 캐쉬 블럭이 변경되지 않으면 캐쉬 블럭을 무효화시키거나 혹은 캐쉬 블럭을 단순히 무효화시킬 수 있도록 한다.
멀티플렉스 버스가 존재하는 경우 한가지 문제점은 판독 트랜잭션 동안 스누프 사이클이 실행될 수 없다는 것이다. 예를 들면, 시스템 메모리 제어기를 구비한 이중 버스 아키텍쳐(dual bus architecture)에서, 시스템 메모리 제어기는 제 1 버스에 접속된 마스타가 현재의 판독 트랜잭션을 완료할 때까지 기다려야 한다. 이어서, 메모리 제어기는 제 2 버스에 접속된 다른 마스터가 시스템 메모리를 액세스할 수 있도록 하여 메모리 일관성을 보장한다.
따라서, 멀티플렉싱된 버스 및 둘 이상의 버스 마스터 혹은 이중 버스 메모리 제어기를 갖는 프로세싱 시스템에 대한 버스 프로토콜로서, 데이타 단계 혹은 판독 트랙잭션 동안 스누프 동작을 제공함으로써 일관성을 제어하는 버스 프로토콜이 필요하다.
따라서, 본 발명의 목적은 데이타 저장 시스템을 제공하는 데 있다.
본 발명의 다른 목적은 프로세싱 유닛 내부 혹은 외부에 캐쉬 유닛을 구비한 데이타 저장 시스템을 제공하는 데 있다.
본 발명의 또다른 목적은 향상된 스누핑 방안에 의해 메모리 일관성이 유지되는 캐쉬 유닛을 구비한 데이타 저장 시스템을 제공하는 데 있다.
전술한 목적은 이하 개시되는 본 발명에 의해 성취된다. 본 발명에 따라, 데이타 프로세싱 시스템에 있어서 메모리 일관성을 유지하는 방법이 이하 개시된다. 데이타 프로세싱 시스템은 이중 버스 메모리 제어기를 갖는 메모리 시스템을 포함하며, 메모리 제어기는 제 1 버스를 통해 제 1 버스 마스터에 접속되고 제 2 버스를 통해 제 2 버스 마스터에 접속된다. 본 발명의 방법은 데이타 프로세싱 유닛내의 어드레스/데이타 멀티플렉스 버스상의 속성에 대해 제 1 버스 혹은 제 2 버스를 가로질러 스누핑함으로써 메모리 일관성을 유지시킨다. 스누프 동작이 요구되는 때를 판정하기 위해, 시스템은 이중 버스 메모리 제어기를 통해 두 버스 중 하나에 대한 액세스를 요구함으로써 개시된다. 일단 버스의 제어가 승인되면 마스터 버스 제어기에 의해 요구 데이타가 전송된다. 스누프의 동작은 버스를 통해 데이타를 전송하는 동안 무효 데이타 신호를 수신할 때 개시된다. 스누프는 무효데이타 신호가 수신된 이후에만 제공되고, 최종 스누프는 최종 판독 데이타가 판독된 이후에만 제공될 수 있다.
전술한 본 발명의 장점, 목적 및 특징들은 이하 개시되는 본 발명의 실시예의 상세한 설명으로부터 더욱 명백하게 이해될 것이다.
제 1 도에서는 본 발명이 구현되는 대표적인 마이크로프로세서(10)의 블럭도가 도시되어 있다. 마이크로프로세서(10)는 예를 들면, 파워 PC RISC 프로세서 계열로부터 선택될 수 있다. 이러한 특정 마이크로프로세서(10)는 32 비트 아키텍처를 구현하여, 32 비트 유효 어드레스(effective address)와, 32 비트 및 64 비트의 부동 소수점 데이타 유형(floating point data type)을 제공한다. 특히, 프로세서는 클럭 사이클당 3개의 인스트럭션을 발행(issue)하거나 철회(retire)할 수 있다. 이들 인스트럭션은 성능 향상을 위해 비순서적으로(out-of-order) 실행되지만, 일관되고 체계적인 동작을 위해 완료 동작은 순차적으로(in-order) 이루어진다.
마이크로프로세서(10)는 또한 정수 유닛(integer unit)(IU)(12), 부동 소수점 유닛(floating point unit: FPU)(14), 분기 프로세싱 유닛(branch processing unit: BPU)(16), 로드-저장 유닛(load-store unit: LSU)(18) 및 시스템 레지스터 유닛(system resister unit: SRU)(20)을 포함하는 5개의 실행 유닛을 포함한다.
또한, 마이크로프로세서(10)는 물리적으로 어드레싱되는 두 개의 캐쉬를 포함하는데, 그 중 하나는 인스트럭션 캐쉬(22)이고, 다른 하나는 데이타 캐쉬(24)이다. 이들 캐쉬는 모두 2 웨이 세트 연관 캐쉬(two-way set associative caches)이다. 또한, 마이크로프로세서(10)는 두 개의 메모리 관리 유닛(MMU), 즉, 인스트럭션 메모리 관리 유닛(MMU)(26) 및 데이타 메모리 관리 유닛(MMU)(28)을 포함한다. 두 MMU는 64 엔트리의 2 웨이 세트 연관 데이타 및 인스트럭션 변환 룩어사이드 버퍼(date and instruction translation look aside buffers: DTLB 및 ITLB)(30, 32)를 제각기 포함하며, 이들 DTLB(30) 및 ITLB(32)는 요구 페이징의 가상 메모리 어드레스 변환(demand-paged virtual memory address translation) 및 가변 크기의 블럭 변환(vaiable-sized block translation)을 지원한다. 또한, 마이크로프로세서(10)는 제각기 4개의 엔트리를 갖는 두 개의 독립된 인스트럭션 및 데이타 블럭 어드레스 변환 어레이(instruction and data block address translation: IBAT 및 DBAT)(34, 36)를 사용함으로써 블럭 어드레스 변환을 지원한다. 유효 어드레스는 블럭 변환동안 BAT 어레이(34, 36)내의 모든 4개의 엔트리와 동시에 비교된다.
또한, 마이크로프로세서(10)는 선택가능한 멀티플렉싱된 32 비트 어드레스 및 64 비트 데이타 버스(38)를 포함한다. 마이크로프로세서(10)에 대한 인터페이스 프로토콜은 다수의 마스터가 중앙 외부 중재기(central external arbiter)를 통해 시스템 자원에 대해 경쟁할 수 있도록 한다. 버스(38)는 프로세서 버스 인터 페이스(42)에 접속되고, 이 인터페이스는 되복제 버퍼(copy-back buffer)(44) 및 터치 로드 버퍼(touch load buffer)(46)를 포함한다. 프로세서 버스 인터페이스는 또한 인스트럭션 캐쉬(22), 데이타 캐쉬(24) 및 태그 유닛(48, 50)에 접속되고, 이들 태그 유닛은 데이타 캐쉬(24) 및 인스트럭션 캐쉬(22)에 각각 접속된다. 인스트럭션 캐쉬(22)는 또한 인스트럭션 유닛(52)에 접속되고, 데이타 캐쉬(24)는 로드/저장 유닛(18)에 접속된다. 인스트럭션 캐쉬(22, 24)는 또한 자신들의 태그 유닛(50, 48)을 통해 메모리 관리 유닛(26, 28)에 제각기 접속된다. 인스트럭션 인출 및 발행은 인스트럭션 유닛(52)에서 제어된다. 캐쉬 혹은 내부 메모리 액세스를 위한 어드레스의 변환은 MMU(26, 28)에 의해 제어된다.
또한, 인스트럭션 유닛(52)은 실행 장치에 대한 인스트럭션 흐름의 중앙 제어를 제공하기 위해, 순차적 인출기(54), 인스트럭션 큐(56), 디스패치 유닛(58) 및 분기 프로세싱 유닛(BPU)(16)을 포함한다. 인스트럭션 유닛(52)은 순차적 인출기(54) 및 BPU(16)로부터의 정보를 기초로 하여 인출될 다음 인스트럭션의 어드레스를 결정한다.
인스트럭션 유닛(52)은 인스트럭션 캐쉬(22)로부터 인스트럭션을 인출하여 큐(56)에 제공한다. BPU(16)는 순차적 인출기(54)로부터 분기 인스트럭션을 추출하며, 조건 분기를 평가(evaluate)하는 동안 미정의(unresolved) 조건 분기상에서 정적 분기 예측(static branch prediction)을 사용하여, 인스트럭션 유닛이 예측된 목표 인스트럭션 스트림으로부터 인스트럭션을 인출할 수 있도록 한다. 인스트럭션 큐(56)는 하나 이상의 인스트럭션을 보유하도록 설계되며, 한 사이클 동안 인스트럭션 유닛(52)으로부터 하나 이상의 인스트럭션을 로딩할 수 있다. 순차적인 인출기(54)는 인스트럭션 큐내의 공간이 허용되는 한 인스트럭션을 계속 로딩할 수 있다. 디스패치 유닛(58)은 소스 및 목적지 레지스터의 종속성 검사(dependeny cheking)를 수행하고, 디스패치 직렬화를 결정하고, 필요시 후속 인스트럭션 디스패치를 금지시킨다.
분기 프로세싱 유닛(16)은 순차적 인출기(54)로부터 분기 인스트럭션을 수신하며, 이들 인스트럭션을 조기에 수행하기 위해 조건 분기 인스트럭션에 대해 CR 예견 동작(CR lookahead operations)을 수행하여, 다수의 경우에 있어서 0 사이클 분기 효과(effect of a zero cycle branch)가 성취될 수 있도록 한다.
로드/저장 유닛(18)은 모든 로드 및 저장 인스트럭션을 실행하며, GPR(60), FPR(62) 및 캐쉬/메모리 서브시스템 사이에 데이타 전송 인터페이스를 제공한다. 로드/저장 인스트럭션(18)은 유효 어드레스를 계산하고, 데이타 정렬(data alignment)하고 로드/저장 스트링 및 다수의 인스트럭션을 순차화(sequence)한다. 로드 및 저장 인스트럭션은 프로그램 순서에 따라 발행되고 변환되지만, 메모리 액세스는 실질적으로 비순서적으로 수행된다. 엄격한 순서화를 수행하기 위해 동기화 인스트럭션(synchronizing instruction)이 제공된다.
데이타 종속성이 없는 경우, 캐쉬가능한 로드는 사이클당 일회의 최대 처리량을 가지며 두 사이클의 전체 지연 시간을 갖는 소정의 사변적인 방식(speculative manner)으로 실행된다. 캐쉬로부터 제거된 데이타는 완료 유닛(68)이 이 값을 GPR 혹은 FPR에 인도할 때까지 재명명 버퍼(rename buffer)(64, 66)내에 유지된다. 저장 동작은 사변적으로 실행되지 않으며, 완료 유닛(68)이 메모리에 대한 저장 동작이 완료되었음을 신호할 때까지 저장 큐내에 유지된다. 실제로 로드 혹은 저장 동작을 수행하는 데 걸리는 시간은 이 동작이 캐쉬, 시스템 메모리 또는 I/O 장치를 포함하는지의 여부에 따라 달라진다.
MMU(26, 28)는 인스트럭션 및 데이타용의 가상 메모리 및 물리적 메모리를 모두 지원한다. 또한, MMU(26, 28)는 공간에 대한 액세스 특권(access privileges)을 블럭 및 페이지 단위로 제어한다. LSU(18)는 데이타 로드 및 저장에 대한 유효 어드레스를 계산하며, 캐쉬 메모리로/로부터의 데이타 정렬을 수행하고, 로드 및 저장 스트링과 다수 워드 인스트럭션(multiple word instructions)을 순차화한다. 인스트럭션 유닛(52)은 인스트럭션을 인출하기 위한 유효 어드레스를 계산한다.
어드레스가 생성된 후에, 유효 어드레스의 상위 비트는 적절한 MMU에 의해 물리적 어드레스 비트로 변환된다. 이와 동시에, 하위 어드레스 비트는 캐쉬로 제공되어 2 웨이 세트 연관 태그 어레이에 대한 인덱스를 형성한다. MMU가 어드레스를 변환한 후 물리적 어드레스의 상위 비트를 캐쉬로 전송하면, 캐쉬의 탐색이 완료된다.
캐쉬 유닛(22, 24)은 제각기 32 비트의 라인 길이를 가지며, 64 비트 인터페이스를 인스트럭션 인출기(54) 및 로드/저장 유닛(18)에 각각 제공한다. 인접한 로직 혹은 태그(48, 50)는 사전 요구된 정보를 선택하고 구성하여, 이 정보를 요구 유닛에 전송한다. 캐쉬에 대한 기록 동작은 바이트 단위로 수행될 수 있으며, 캐쉬에 대한 완전한 판독-변경-기록 동작이 매 사이클 내에 수행될 수 있다. 로드/저장 유닛(18) 및 인스트럭션 인출기(54)는 인출될 데이타 혹은 인스트럭션의 어드레스를 캐쉬(24, 22)에게 제공한다. 캐쉬 히트(cache hit)인 경우, 캐쉬는 두 개의 워드를 요구 유닛으로 복귀시킨다.
데이타 캐쉬 태그(48)는 단일 포트를 가지고 있으므로, 로드 혹은 저장 및 스누프(snoop) 액세스는 자원 경쟁을 야기시킨다. 스누프 액세스는 최우선 순위를 가지므로, 스누프 액세스가 태그 기록과 일치하지 않는다면, 태그(48)에 대한 최초의 액세스를 수행할 것이다. 스누프 액세스가 태그 기록과 일치하는 경우, 스누프는 재시도되고 캐쉬에 대한 액세스를 위해 다시 중재되어야 한다. 스누프 액세스로 인해 지연되는 로드 혹은 저장 동작은 스누프에 뒤따르는 클럭 사이클에서 실행된다.
제 2 도는 제 1 도의 제 1 버스 마스터 A 또는 프로세싱 유닛(10)에 접속된 메모리 시스템(100)의 블럭도이다. 메모리 시스템(100)은 또한 이중 버스 메모리 제어기(102)를 포함하며, 이 메모리 제어기(102)는 버스 라인 A를 통해 제 1 버스 마스터 A에 접속되고, 제 2 버스 라인 B를 통해 제 2 버스 마스터 B 혹은 DMA(direct memory access) 유닛(104)에 접속된다. 메모리 제어기(102)는 또한 단기간 메모리 혹은 DRAM(106)에 접속된다. 이중 버스 메모리 제어기(102)가 판독 데이타 대신 어드레스/데이타 버스의 속성에 대해 마스터 버스를 가로질러 DRAM(106)에 스누핑할 수 있도록 하는 프로토콜이 제공된다. 제 3 도는 클럭 사이클 6 내지 10 사이에 존재하는 제공된 스누프 윈도우(injected snoop wondow)내에서 첫번째 스누프에 대한 타이밍도를 도시한 도면이다.
제 3 도의 타이밍도에는 클럭 신호(CLK), 버스 요구 신호(BR_), 버스 허가 신호(BG_), 전송 개시 신호(TS_), 어드레스 인식 신호(AACK_), 어드레스 혹은 데이타 신호(A/D(0:63)), 버스 비지 신호(bus busy signal: BB_), 전송 인식 신호(TA_), 어드레스 재시도 신호(ARTRY_), 전송 에러 인식 신호(TEA_)가 도시되어 있다. 판독 어드레스 신호(RA), 스누프 어드레스 신호(SA) 및 판독 데이타(D0 ... D3) 등과 같이 부가적인 신호들이 또한 도시되어 있다.
타이밍도에서 일련의 초기 신호 동안, 클럭 사이클은 각 클럭 사이클 마다 하이에서 로우로 변하며, 버스 요구는 제 1 클럭 사이클 동안에 지속된다. 제 2 클럭 사이클 동안 버스 요구 단정 시간 사이의 중간 부분에서, 버스가 허가되었음을 나타내는 신호가 단정되고, 일단 버스 요구 사이클이 정상 상태로 되돌아 가면 제 3 클럭 사이클에서 전송 개시 신호가 단정된다. 제 3 클럭 사이클 동안, A/D신호로 도시된 바와 같이, 판독 어드레스가 프로세서에 의해 구동된다. 이어서, 제 4 클럭에서 버스 비지 신호가 개시될 때, 버스 허가가 종료되고 전송 개시 신호도 종료된다. 이러한 BB_ 신호가 단정된 후 제 4 클럭 사이클 동안, A/D 라인상에서 3상 신호(tri-state signal)가 단정된다. 이어서, 제 5 클럭 사이클 동안, 어드레스 데이타 라인(A/D)상에서 무효 데이타가 발생되면 전송 개시 라인은 3 상태로 된다.
무효 데이타 단위가 검출되면, 클럭 사이클 6 및 10 사이에 제공된 스누프 윈도우내에 스누프가 제공된다. 이때, 전송 개시 신호가 단정되고 스누핑된 어드레스가 메모리 제어기에 의해 A/D라인상에서 구동된다. 제 7 클럭 사이클에서 전송 개시 신호가 종료되면, TA_ 라인상에서 전송 인식 신호가 제공되고, 메모리 제어기는 제 1 판독 데이타(D0)를 제어한다. 제 6 클럭에서 스누프가 히트(hit)되었음을 나타내기 위해, 어드레스 재시도 신호가 프로세서에 의해 ARTRY_ 라인상에서 단정되면, 메모리 제어기에 의해 제 2 판독 데이타(D1)가 또한 구동된다. 스누프가 히트되었음을 나타내기 위해 프로세서(10)에 의해 ARTRY_ 신호가 구동된다. 스누프가 미쓰(miss)되면, 이 신호는 접속되지 않을 것이다. 제 9 클럭 사이클에서 메모리 제어기에 의해 제 3 판독 데이타가 구동되고, 이어서 제 10 클럭 사이클에서 무효 데이타가 감지되고, TA 라인상에서 전송 인식 신호가 비활성화된다. 다음 클럭 사이클(사이클 11)에서 메모리 제어기에 의해 제 4 판독 데이타가 구동된다. 이어서 제 12 클럭 사이클에서, A/D 라인과 같이 TS_ 라인이 3 상태로 되며, 이것은 BB_ 라인상에서 버스 비지 신호가 무효화되고 TA_ 라인상에서 전송 인식 신호가 무효화된 이후에 발생된다. 사이클 13에서, BB_ 라인 및 TA_ 라인이 3 상태로 되고, 마지막으로, 사이클 14에서 ARTRY_ 라인이 3 상태로 된다. 이러한 전체 시간 동안 어드레스 인식 라인 및 전송 에러 인식 라인은 비활성화된다.
제 4 도는 제공된 스누프 윈도우(클럭 사이클 6-10)에서 수행되는 최종 스누프의 타이밍도이다. 제 4 도에 도시된 타이밍도와 제 3 도에 제공된 스누프 윈도우의 제 1 스누프에 대한 타이밍도 간의 차이점은 TA_ 라인이 스누프 사이클(클럭 10)에서 하이(무효 신호)로 구동되고, 제 2 TS_ 펄스가 메모리 제어기에 의해 구동된다는 점이다. 또한, 최종 스누프는 최종 판독 데이타(D3)가 판독되기 전에 제공되어진다.
이상 본 발명이 바람직한 실시예에 따라 구체적으로 기술되었지만, 본 기술분야에 통상의 지식을 가진 자라면, 전술한 본 발명이 본 발명의 사상 및 범주를 이탈하지 않는 범위내에서 여러 가지 변경이 이루어질 수 있음을 이해할 것이다.

Claims (8)

  1. 이중버스 메모리 제어기를 포함하는 메모리 시스템을 구비하는 데이타 프로세싱 시스템에서, 메모리 일관성(memory coherency)을 유지하기 위한 방법에 있어서, ① 상기 이중 버스 메모리 제어기를 제 1 버스 및 제 2 버스 모두에 접속하는 단계와, ② 상기 데이타 프로세싱 시스템에서 어드레스/데이타 멀티플렉스 버스(address/data multiplex bus)상의 속성에 대해 상기 이중 버스 메모리 제어기를 이용하여 상기 제 1 또는 제 2 버스 중 어느 하나를 가로질러 스누핑(snooping)을 수행하는 단계와, ③ 상기 제 1 또는 제 2 버스상에 무효 데이타가 검출된 것에 응답하여, 상기 이중 버스 메모리 제어기를 이용하여 판독 트랜잭션 동안 상기 제 1 또는 제 2 버스상에 스누프 어드레스(snoop address)를 제공하는 단계를 포함하는 메모리 일관성 유지 방법.
  2. 제 1 항에 있어서, ① 상기 스누핑 단계를 수행하기 전에, 상기 이중 버스 메모리 제어기에 의한 액세스를 위해 상기 제 1 또는 제 2 버스의 액세스를 요구하는 단계와, ② 버스 액세스를 요구한 후에 상기 제 1 또는 제 2 버스의 제어를 허가(grant)하는 단계와, ③ 상기 제 1 또는 제 2 버스를 통해 데이타의 전송을 개시하는 단계와, ④ 무효 데이타 신호를 수신하는 단계를 더 포함하는 메모리 일관성 유지 방법.
  3. 제 1 항에 있어서, 상기 스누핑 수행 단계는 최종 판독 데이타 동작이 수행되기 전에 이루어지는 메모리 일관성 유지 방법.
  4. 제 1 항에 있어서, 상기 데이타 프로세싱 시스템에 의해 스누프 히트(snoop hit)이 발생되었음을 인식하는 단계를 더 포함하는 메모리 일관성 유지 방법.
  5. 데이타 프로세싱 시스템에 있어서, ① 제 1 버스 마스터에 접속되는 제 1 버스와 제 2 버스 마스터에 접속되는 제 2 버스를 구비한 이중 버스 메모리 제어기를 포함하는 메모리 시스템과, ② 상기 데이타 프로세싱 시스템에서 어드레스/데이타 멀티플렉스 버스상의 속성에 대해 상기 이중 버스 메모리 제어기를 이용하여 상기 제 1 또는 제 2 버스를 가로질러 스누핑을 수행함으로써 메모리 일관성을 유지시키는 수단과, ③ 상기 제 1 또는 제 2 버스상에 무효 데이타가 검출된 것에 응답하여 상기 이중 버스 메모리 제어기를 이용하여 판독 트랜잭션 동안 상기 제 1 또는 제 2 버스상에 스누프 어드레스를 제공하는 수단을 포함하는 데이타 프로세싱 시스템.
  6. 제 5 항에 있어서, 상기 유지 수단은 상기 이중 버스 메모리 제어기에 의한 액세스를 위해 상기 제 1 또는 제 2 버스의 액세스를 요구하는 수단을 더 포함하는 데이타 프로세싱 시스템.
  7. 제 5 항에 있어서, 상기 유지 수단은, 버스 액세스를 요구한 후에 상기 제 1 또는 제 2 버스의 제어를 허가하고, 상기 제 1 또는 제 2 버스를 가로질러 데이타 전송을 제어하는 데이타 프로세싱 시스템.
  8. 제 7 항에 있어서, 상기 유지 수단은 버스 액세스를 요구한 후에 상기 제 1 또는 제 2 버스의 제어를 허가하고, 무효 데이타 신호 수신시 데이타 전송을 개시하는 데이타 프로세싱 시스템.
KR1019960001883A 1995-02-10 1996-01-29 메모리 일관성 유지 방법 KR100228940B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/387,148 US5893921A (en) 1995-02-10 1995-02-10 Method for maintaining memory coherency in a computer system having a cache utilizing snoop address injection during a read transaction by a dual memory bus controller
US8/387,148 1995-02-10

Publications (1)

Publication Number Publication Date
KR100228940B1 true KR100228940B1 (ko) 1999-11-01

Family

ID=23528678

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960001883A KR100228940B1 (ko) 1995-02-10 1996-01-29 메모리 일관성 유지 방법

Country Status (4)

Country Link
US (1) US5893921A (ko)
EP (1) EP0726523A3 (ko)
JP (1) JPH08263373A (ko)
KR (1) KR100228940B1 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6513091B1 (en) 1999-11-12 2003-01-28 International Business Machines Corporation Data routing using status-response signals
US6526469B1 (en) 1999-11-12 2003-02-25 International Business Machines Corporation Bus architecture employing varying width uni-directional command bus
US6557069B1 (en) 1999-11-12 2003-04-29 International Business Machines Corporation Processor-memory bus architecture for supporting multiple processors
US6643752B1 (en) * 1999-12-09 2003-11-04 Rambus Inc. Transceiver with latency alignment circuitry
US7363422B2 (en) * 2000-01-05 2008-04-22 Rambus Inc. Configurable width buffered module
US7356639B2 (en) 2000-01-05 2008-04-08 Rambus Inc. Configurable width buffered module having a bypass circuit
US7266634B2 (en) 2000-01-05 2007-09-04 Rambus Inc. Configurable width buffered module having flyby elements
US7017002B2 (en) * 2000-01-05 2006-03-21 Rambus, Inc. System featuring a master device, a buffer device and a plurality of integrated circuit memory devices
US6502161B1 (en) * 2000-01-05 2002-12-31 Rambus Inc. Memory system including a point-to-point linked memory subsystem
US7404032B2 (en) * 2000-01-05 2008-07-22 Rambus Inc. Configurable width buffered module having switch elements
US6587905B1 (en) 2000-06-29 2003-07-01 International Business Machines Corporation Dynamic data bus allocation
US6715085B2 (en) * 2002-04-18 2004-03-30 International Business Machines Corporation Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function
US7089419B2 (en) 2002-04-18 2006-08-08 International Business Machines Corporation Control function with multiple security states for facilitating secure operation of an integrated system
US7266842B2 (en) * 2002-04-18 2007-09-04 International Business Machines Corporation Control function implementing selective transparent data authentication within an integrated system
US6851056B2 (en) 2002-04-18 2005-02-01 International Business Machines Corporation Control function employing a requesting master id and a data address to qualify data access within an integrated system
TWI282513B (en) * 2002-06-12 2007-06-11 Mediatek Inc A pre-fetch device of instruction for an embedded system
US6944698B2 (en) * 2002-07-08 2005-09-13 International Business Machines Corporation Method and apparatus for providing bus arbitrations in a data processing system
US6976132B2 (en) * 2003-03-28 2005-12-13 International Business Machines Corporation Reducing latency of a snoop tenure
US7461268B2 (en) * 2004-07-15 2008-12-02 International Business Machines Corporation E-fuses for storing security version data
US7340568B2 (en) * 2005-02-11 2008-03-04 International Business Machines Corporation Reducing number of rejected snoop requests by extending time to respond to snoop request
US7464225B2 (en) * 2005-09-26 2008-12-09 Rambus Inc. Memory module including a plurality of integrated circuit memory devices and a plurality of buffer devices in a matrix topology
US7562271B2 (en) 2005-09-26 2009-07-14 Rambus Inc. Memory system topologies including a buffer device and an integrated circuit memory device
US11328764B2 (en) 2005-09-26 2022-05-10 Rambus Inc. Memory system topologies including a memory die stack
US20080065837A1 (en) * 2006-09-07 2008-03-13 Sodick Co., Ltd. Computerized numerical control system with human interface using low cost shared memory
US8510509B2 (en) * 2007-12-18 2013-08-13 International Business Machines Corporation Data transfer to memory over an input/output (I/O) interconnect
US7958314B2 (en) * 2007-12-18 2011-06-07 International Business Machines Corporation Target computer processor unit (CPU) determination during cache injection using input/output I/O) hub/chipset resources
US9336003B2 (en) 2013-01-25 2016-05-10 Apple Inc. Multi-level dispatch for a superscalar processor

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5157774A (en) * 1987-09-28 1992-10-20 Compaq Computer Corporation System for fast selection of non-cacheable address ranges using programmed array logic
US5072369A (en) * 1989-04-07 1991-12-10 Tektronix, Inc. Interface between buses attached with cached modules providing address space mapped cache coherent memory access with SNOOP hit memory updates
US5119485A (en) * 1989-05-15 1992-06-02 Motorola, Inc. Method for data bus snooping in a data processing system by selective concurrent read and invalidate cache operation
JPH03219345A (ja) * 1990-01-25 1991-09-26 Toshiba Corp 多ポートキャッシュメモリ制御装置
EP0461923B1 (en) * 1990-06-15 1997-10-01 Compaq Computer Corporation True least recently used replacement apparatus
US5293603A (en) * 1991-06-04 1994-03-08 Intel Corporation Cache subsystem for microprocessor based computer system with synchronous and asynchronous data path
US5228134A (en) * 1991-06-04 1993-07-13 Intel Corporation Cache memory integrated circuit for use with a synchronous central processor bus and an asynchronous memory bus
US5426765A (en) * 1991-08-30 1995-06-20 Compaq Computer Corporation Multiprocessor cache abitration
US5359723A (en) * 1991-12-16 1994-10-25 Intel Corporation Cache memory hierarchy having a large write through first level that allocates for CPU read misses only and a small write back second level that allocates for CPU write misses only
US5341487A (en) * 1991-12-20 1994-08-23 International Business Machines Corp. Personal computer having memory system with write-through cache and pipelined snoop cycles
US5463753A (en) * 1992-10-02 1995-10-31 Compaq Computer Corp. Method and apparatus for reducing non-snoop window of a cache controller by delaying host bus grant signal to the cache controller
US5353415A (en) * 1992-10-02 1994-10-04 Compaq Computer Corporation Method and apparatus for concurrency of bus operations
US5394555A (en) * 1992-12-23 1995-02-28 Bull Hn Information Systems Inc. Multi-node cluster computer system incorporating an external coherency unit at each node to insure integrity of information stored in a shared, distributed memory

Also Published As

Publication number Publication date
EP0726523A3 (en) 1996-11-20
US5893921A (en) 1999-04-13
EP0726523A2 (en) 1996-08-14
JPH08263373A (ja) 1996-10-11

Similar Documents

Publication Publication Date Title
KR100228940B1 (ko) 메모리 일관성 유지 방법
US8180981B2 (en) Cache coherent support for flash in a memory hierarchy
US5787486A (en) Bus protocol for locked cycle cache hit
US5774700A (en) Method and apparatus for determining the timing of snoop windows in a pipelined bus
US5913224A (en) Programmable cache including a non-lockable data way and a lockable data way configured to lock real-time data
CA1315896C (en) Store queue for a tightly coupled multiple processor configuration with two-level cache buffer storage
TW591384B (en) Method and system for speculatively invalidating lines in a cache
US5784590A (en) Slave cache having sub-line valid bits updated by a master cache
US6138208A (en) Multiple level cache memory with overlapped L1 and L2 memory access
US7707361B2 (en) Data cache block zero implementation
US5696937A (en) Cache controller utilizing a state machine for controlling invalidations in a network with dual system busses
US8195881B2 (en) System, method and processor for accessing data after a translation lookaside buffer miss
JPH0659976A (ja) 遅延プッシュをコピー・バック・データ・キャッシュに再ロードする方法
US11321248B2 (en) Multiple-requestor memory access pipeline and arbiter
US11720495B2 (en) Multi-level cache security
US20190155729A1 (en) Method and apparatus for improving snooping performance in a multi-core multi-processor
WO1988006762A1 (en) Central processor unit for digital data processing system including cache management mechanism
US5590310A (en) Method and structure for data integrity in a multiple level cache system
US6408363B1 (en) Speculative pre-flush of data in an out-of-order execution processor system
KR100322223B1 (ko) 대기행렬및스누프테이블을갖는메모리제어기
US6643766B1 (en) Speculative pre-fetching additional line on cache miss if no request pending in out-of-order processor
US7464227B2 (en) Method and apparatus for supporting opportunistic sharing in coherent multiprocessors
US8108621B2 (en) Data cache with modified bit array
US6976130B2 (en) Cache controller unit architecture and applied method
KR100218616B1 (ko) 현재의 트랜잭션동안 다음 어드레스를 제공하기 위한 전송방법 및 시스템

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
LAPS Lapse due to unpaid annual fee