KR100218616B1 - 현재의 트랜잭션동안 다음 어드레스를 제공하기 위한 전송방법 및 시스템 - Google Patents
현재의 트랜잭션동안 다음 어드레스를 제공하기 위한 전송방법 및 시스템 Download PDFInfo
- Publication number
- KR100218616B1 KR100218616B1 KR1019960001881A KR19960001881A KR100218616B1 KR 100218616 B1 KR100218616 B1 KR 100218616B1 KR 1019960001881 A KR1019960001881 A KR 1019960001881A KR 19960001881 A KR19960001881 A KR 19960001881A KR 100218616 B1 KR100218616 B1 KR 100218616B1
- Authority
- KR
- South Korea
- Prior art keywords
- address
- cache
- transaction
- data
- unit
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0859—Overlapped cache accessing, e.g. pipeline with reload from main memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
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)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 발명은 프로세싱 유닛내의 데이터 캐시 유닛에서의 기록 트랜잭션의 어드레스 단계(address phase)동안 다음 판독 어드레스를 제공하는 프로토콜 및 시스템에 관한 것이다. 프로세싱 유닛은 각기 어드레스 버스 및 데이터 버스에 접속된 데이터 캐시 유닛 및 인스트럭션 캐시 유닛을 포함한다. 두 버스는 또한 마이크로프로세서로부터 분리된 시스템 메모리 제어기에 접속된다. 이 프로토콜 및 시스템은 현재 기록 트랜잭션내의 어드레스 단계동안 다음 판독 어드레스 및 다음 트랜잭션을 제공한다.이 프로토콜은 현재 데이터 트랜잭션내의 사전인출된 어드레스를 로드하고, 이후 현재 데이터 트랜잭션에 접합된 사전인출된 어드레스를 사용하여 다음 라인 채움 어드레스를 발생한다. 사전 인출된 어드레스는 다음 라인 채움 어드레스를 발생하는데 사용된다. 라인 채움 어드레스는 캐시 판독 실패가 발생하였는지의 여부를 판정하고, 캐시 판독 실패가 발생하였다면, 수정된 캐시 라인을 메인 시스템 메모리로 되복제하고, 이후 판독 실패한 캐시 라인을 시스템 메모리 제어기로부터 내부 캐시로 로딩하므로써 발생한다.
Description
제1도는 본 발명의 바람직한 실시예에 따른 대표적인 마이크로프로세서의 블록도.
제2도는 본 발명을 사용하여 생성되는 어드레스 블록을 도시한 도면.
제3도는 제2도의 라인 채움 어드레스를 생성하는데 사용되는 64비트 데이터 유닛의 기능적인 동작의 예를 도시한 도면.
* 도면의 주요부분에 대한 부호의 설명
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 재명명 레지스터
본 발명은 전반적으로 데이터 저장 시스템에 관한 것으로, 특히, 프로세싱 유닛 내에 캐시 유닛(cache unit)을 구비한 데이터 저장 시스템에 관한 것이다. 더욱 구체적으로, 본 발명은 기록 트랜잭션(write transaction) 동안 다음 판독 트랜잭션 어드레스(read transactions address)를 제공하는 프로세싱 시스템의 메모리 관리 시스템에 관한 것이다.
오늘날 다수의 컴퓨터 시스템은 컴퓨터 시스템에 상충되는 요구들을 충족시키기 위해 여러 레벨의 메모리 저장 장치를 구비한다. 예를 들면, 컴퓨터 시스템은 고속으로 동작하도록 설계되고, 메모리 장치는 컴퓨터 시스템내에서 사용되는 프로세싱 유닛과 동일한 속도로 동작할 필요가 있다.불행하게도, 고속 메모리 소자의 가격은 마이크로프로세서 자체의 가격과 비슷하므로, 고속 메모리를 사용할 경우 시스템 전체의 가격이 상승하게 된다. 하나의 타협안으로 특정한 응용에 대해서 저속이지만 저가인 메모리 유닛을 사용하는 것이 있다. 이러한 응용 중 하나는 프로세싱 유닛이 정보를 사용하기 전에 저속의 동적 RAM메모리를 사용하여 이 정보를 임시 보유하는 것이다. 또다른 방안으로는 프로세싱 유닛과 동일한 속도로 동작하는 소형의 값비싼 고속 캐시 유닛을 사용하는 것이다. 이러한 캐시유닛은 대용량의 단기적(short-term)저장 메모리에 비해 소형이기 때문에, 컴퓨터 시스템의 전체 가격에 대해서는 그다지 큰 영향을 끼치지 않는다. 마지막으로, 통상적으로 다른 유형의 메모리에 비해 상대적으로 저가인 하드 디스크 드라이브와 같은 대용량의 장기 저장 메모리가 제공된다.
불행하게도, 컴퓨터 시스템이 상이한 유형의 메모리 및 상이한 종류의 메모리 위치를 가진다면, 메모리 제어기가 프로세싱 유닛 또는 컴퓨터 시스템에 접속된 주변 장치와 같은 임의의 다른 자원에 의해 요구되거나 혹은 프로세싱된 가장 최근의 정확한 데이터를 관리하는데 있어서 여러 가지 문제점이 야기될 수 있다. 따라서, 프로세싱 시스템은 사용되는 여러 유형의 메모리 유닛들 사이에 메모리 일관성(memory coherency)을 유지해야 한다.
일관성있는 메모리 시스템의 주 목적은 이 시스템을 사용하는 모든 장치에 동일한 메모리 이미지를 제공하는 데 있다. 일관성은 공유 자원들의 동기화 및 공동 사용을 허용한다. 일관성이 없다면, 이 시스템내에 메모리 위치에 대한 다수의 복제본(이들 복제본들 중 몇몇은 오류값(stale value)을 가짐)이 존재할 수 있으며, 그 결과 오류값이 사용될 경우 에러가 야기될 수 있다.시스템내의 각각의 잠재적 버스 마스터(bus master)는 캐시 상태를 관리하기 위한 규칙에 따라야 한다.
캐시 일관성 프로토콜(cache coherency protocol)의 하나의 유형으로는 공유 상태를 배제한 표준 MESI 4-상태 프로토콜의 일관성 서브셋(coherent subset of standard MESI four-state protocol)이 있다. 데이터는 공유될 수 없기 때문에, 프로세서는 마치 기록 미쓰(miss)(수정 목적의 판독(read-with-intent-to-mod fy))가 발생한 것처럼 모든 캐시 블록을 채우도록 신호하여, 프로세서의 캐시 블록 채움 동작 전에 프로세서 외부의 모든 캐시내에 대응하는 데이터 복제본을 플러시(flush)한다.
일관성을 유지하기 위해, 시스템은 내부 판독 트랜잭션 부재시 내부 캐시에 대한 메모리 시스템 판독 동작을 수행한다. 부재가 발생되면, 데이터는 메모리 시스템으로부터 내부 캐시로 로딩되어야 한다. 판독 트랜잭션에 이어서, 다음 트랜잭션에 대한 어드레서 버퍼가 로딩되어야 한다. 판독 로드의 이벤트들을 분리하고 다음 트랜잭션 어드레스를 검출하는 것은 시스템의 성능을 저하시킨다.
따라서, 시스템 메로리 판독 트랜잭션 동안 다음 판독 트랜잭션의 어드레스버퍼를 마이크로프로세싱 유닛내의 내부 캐시에 로딩할 수 있는 캐싱 메모리 시스템내 데이터 관리 방법이 필요하다.
따라서, 본 발명의 목적은 개선된 데이터 저장 시스템을 제공하는 데 있다.
본 발명의 다른 목적은 프로세싱 유닛 내부에 캐시 유닛을 구비한 개선된 데이터 저장 시스템을 제공하는 데 있다.
본 발명의 또다른 목적은 프로세싱 시스템내에 기록 트랜잭션 동안에 다음 판독 트랜잭션 어드레서를 제공하는 개선된 메모리 관리 시스템을 제공하는데 있다.
전술한 목적은 이하 개시되는 실기예에 의해 달성된다. 본 발명은 프로세싱 유닛의 데이터 캐시 유닛내에 기록 트랜잭션의 어드레서 단계(address phase)동안 다음 판독 어드레스를 제공하는 프로토콜 및 시스템을 제공한다. 프로세싱 유닛은 어드레스 버스 및 데이터 버스에 제각기 접속된 데이터 캐시 유닛 및 인스트럭션 캐시 유닛을 포함한다. 두 버스는 마이크로프로세서로부터 분리된 시스템 메모리 제어기에 또한 접속된다. 본 발명의 프로토콜 및 시스템은 현재의 기록 트랜잭션의 어드레스 단계 동안 다음 판독 어드레스 및 다음 트랜잭션을 제공한다.
본 발명의 프로토콜은 현재의 데이터 트랜잭션내에서 사전인출된 어드레스를 로딩하고, 이어서 현재이 데이타 트랜잭션 접속된 사전인출된 어드레스를 사용하여 다음 라인 채움 어드레스(next line fill address)를 생성한다. 사전인출된 어드레스는 다음 라인 채움 어드레스를 생성하는데 사용된다. 라인 채움 어드레스는 캐시 판독 미쓰가 발생했는지의 여부를 판정하고, 캐시 판독 미쓰가 발생하였다면 변경된 캐시 라인(mod fied cache line)을 메인 시스템 메모리에 되복제하고, 이어서 캐시 판독 미쓰로부터 기인하는 미쓰된 캐시 판독 라인(missed cache read line)을 시스템 메모리 제어기로부터 내부 캐시로 로딩하는 경우에 생성된다.
전술한 본 발명의 장점, 목적 및 특징들은 이하 개시되는 본 발명의 실시예의 상세한 설명을 참조하면 더욱 명백하게 이해될 것이다.
제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), 부동 소수점 유닛(Ffloating 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웨이 세트 연관 데이터및 인스트럭션 변환 룩어사이드 버퍼(data and Instruction transiation 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 pred ction)을 사용하여, 인스트럭션 유닛이 예측된 목표 인스트럭션 스트림으로부터 인스트럭션을 인출할 수 있도록 한다. 인스트럭션 큐(56)는 하나 이상의 인스트럭션을 보유하도록 설계되며, 한 사이클 동안 인스트럭션 유닛(52)으로부터 하나 이상의 인스트럭션을 로딩할 수 있다. 순차적 인출기(54)는 인스트럭션 큐내의 공간이 허용되는 한 인스트럭션들을 계속 로딩한다. 디스패치 유닛(58)은 소스 및 목적지 레지스터의 종속성 검사(dependecy cheking)를 수행하고, 디스패치 직렬화를 결정하고, 필요시 후속 인스트럭션 디스패치를 금지시킨다.
분기 프로세싱 유닛(16)은 인출기(54)로부터 분기 인스트럭션을 수신하며, 이들 인스트럭션을 조기에 수행하기 위해 조건 분기 인스트럭션에 대해 CR 예견 동작(CR Iookahead 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)는 사전 요구된 정보를 선택하고 구성하여, 이 정보를 요구 유닛에 전송한다. 캐시에 대한 기록 동작은 바이트 단위로 수행될 수 있으며, 캐시에 대한 완전한 판독-변경-기록 동작(complete read-modify-write operation)이 매 사이클 내에 수행될 수 있다. 로드/저장 유닛(18) 및 인스트럭션 인출기(54)는 인출될 데이터 혹은 인스트럭션의 어드레스를 캐시(24,22)에게 제공한다. 캐시카 히트(hit)된 경우, 캐시는 두 개의 워드를 요구 유닛으로 복귀시킨다.
데이터 캐시 태그(48)는 단일 포트를 가지고 있으므로, 로드 혹은 저장 및 스누프(snoop)액세스는 자원 경쟁을 야기시킨다. 스누프 액세스는 최우선 순위를 가지므로, 스누프 액세스가 태그 기록과 일치하지 않는다면, 태그(48)에 대한 최초의 액세스를 수행할 것이다. 스누프 액세스가 태그 기록과 일치하는 경우, 스누프는 재시도되고 캐시에 대한 액세스를 위해 다시 중재되어야 한다. 스누프 액세스로 인해 지연되는 로드 혹은 저장 동작은 스누프에 뒤따르는 클럭 사이클에서 실행된다.
캐시(22,24)의 현존 설계에서는 현재의 트랜잭션 동안 다음 버스 트랜잭션의 다음 어드레스의 전송(broadcast)을 허용하지 않는다. 시스템이 다음 어드레스를 전송하거나 혹은 적어도 현재의 트랜잭션 동안 액세스를 위해 다음 어드레스를 제공할 수 있다면, 시스템 메모리 제어기 혹은 메모리 관리 유닛(26,28)은 마이크로프로세서 유닛(10) 외부의 메모리의 초기 메모리 액세스 시간을 줄일 수 있다. 이를 성취하기 위해, 본 발명은 제2도에 도시된 64비트 데이터 블록의 32비트 어드레스 및 11비트 속성을 이용하는 프로토콜을 제공한다. 이 프로토콜은 다음 판독 어드레스 트랜잭션이 현재의 기록 트랜잭션의 어드레스 단계 동안 사용할 수 있도록 한다.
구체적으로, 변경된 캐시 라인에서 캐시 판독 미쓰가 발생한 경우와 같은 캐시 트랜잭션 동안에, 변경된 캐시는 메인 시스템 메모리에 되복제된다. 이어서, 캐시 판독 미쓰로부터 기인하는 미쓰된 캐시 판독 라인이 메인 시스템 메모리로부터 내부 캐시로 로딩된다. 되복제 어드레스 단계 동안, 되복제 (기록)트랜잭션의 어드레스 및 속성과, 다음 라인 채움(판독)어드레스의 (사전인출된 어드레스로 지칭되는)상위 어드레스가 시스템 버스상으로 구동된다. 이후, 되복제 트랜잭션의 데이터 단계동안, 메모리 관리 유닛 혹은 시스템 메모리 제어기는 제2도에 도시된 바와 같이 사전인출된 어드레스를 인덱스 어드레스로 지칭되는 되복제 어드레스의 일부에 연접( concatenate)시킴으로써 다음 라인 채움 어드레스를 형성한다. 사전인출된 어드레스는 다음 라인 채움의 태그 엔트리(tag entry)로서 역할한다. 되복제의 인덱스 어드레스는 내부 캐시에 인덱싱하여 되복제 트랜잭션 및 라인 채움 트랜잭션이 동일한 인덱스 값을 공유할 수 있도록 하는데 사용되는 어드레스 비트이다.
시스템 메모리 제어기는 라인 채움의 행 및 열 어드레스를 생성한다. 대안적으로, 시스템 메모리 제어기는 프로세서 유닛이 라인 채움 트랜잭션을 제공하기 전에 라인 채움 데이터를 자신의 버퍼에 로딩할 수 있다. 이는 프로세서와 메인 시스템 메모리간의 사이클을 단축시켜 프로세서 버스의 대역폭을 증가시킨다.
제2도의 실시예에서, 내부 캐시가 4k 바이트 2 웨이 세트 연관 캐시이므로, 사전인출된 어드레스는 21 비트 폭을 갖고 인덱싱된 어드레스는 6 비트의 폭을 갖는다. 다른 설계의 경우에, 사전인출되고 인덱싱된 어드레스의 길이는 내부 캐시의 크기에 따라 변할 수 있다. 예를 들면, 8k 바이트의 2 웨이 세트 연관 캐시는 20 비트의 사전인출된 어드레스를 가지며, 7 비트의 인덱싱된 어드레스를 가질 것이며, 16k 바이트의 2 웨이 세트 연관 캐시는 19 비트의 사전인출된 어드레스 및 8 비트의 인덱싱된 어드레스를 가질 것이다.
제2도의 64 비트 데이터 유닛은 0-31의 비트 위치를 점유하는 32비트 폭의 되복제 어드레스를 포함한다. 인덱싱된 어드레스는 6 비트 폭을 가지며, 되복제 어드레스내에서 22-27의 비트 위치를 점유한다. 사전인출된 어드레스는 21 비트 폭을 가지고, 32∼52 비트 위치를 점유하며, 인덱싱된 어드레스와 결합하여 27 비트 폭의 다음 라인 채움 어드레스로서 기능한다. 마지막으로, 되복제 속성의 요소는 11 비트의 폭을 가지며, 52∼63의 비트 위치를 점유한다.
제3도는 메모리 제어기와 같은 타겟 장치에 의해 라인 채움 어드레스를 생성하는데 사용되는 64 비트 데이터 유닛의 기능적인 동작의 예를 도시한 흐름도이다. 단계(302)에서, 시스템은 내부 캐시 판독 트랜잭션을 실행한다. 단계(304)에서, 이러한 판독 트랜잭션이 내부 캐시에서 히트된다면, 단계(306)에서 내부 캐시에 의해 이용가능한 데이터가 생성된다. 그렇지 않고, 판독 미쓰가 발생한다면, 시스템은 단계(308)로 진행한다. 상기 판독 트랜잭션 동안 프로세서는 데이터를 시스템 메모리로부터 내부 캐시로 로딩해야 하기 때문에, 프로세스는 내부 캐시내의 기존의 변경된 데이터를 내부 캐시로부터 시스템 메인 메모리에 되기록하여 상기 판독 트랜잭션에 대해 이용가능한 공간이 확보되도록 한다. 따라서, 단계(308)에서, 시스템은 프로세서내의 모든 캐시의 내용을 시스템 메인 메모리에 되기록한다.
이러한 기록 트랜잭션의 어드레스 단계 동안, 단계(310)에서, 시스탬은 시스템 버스상의 다음 라인 채움 어드레스의 사전인출된 어드레스로부터 어드레스 속성을 로딩한다. 단계(312)에서, 사전인출된 어드레스와 인덱싱된 어드레스 값을 연접시켜 타겟 장치에 의해 발행된 다음 라인 채움 어드레스를 형성하는 데이터 베이스(data base) 부분이 수행된다. 이제, 다음 판독 트랜잭션 어드레스가 사전인출된 어드레스로서 제공되었으므로, 시스템 메모리 제어는 판독 데이터를 시스템 메모리로부터 버퍼에 로딩함으로써 사전인출된 어드레스를 이용할 수 있다. 따라서, 프로세스가 판독 트랜잭션을 수행할 때 이미 버퍼내에 데이터가 존재하므로, 메모리 제어기는 데이터를 프로세서에 즉시 전송할 수 있다.
이상 본 발명은 바람직한 실시예에 따라 구체적으로 설명되었지만, 본 기술 분야에 통사의 지식을 가진 자라면, 본 발명이 전술한 실시예로 한정되지 않고, 그 사상 및 범주를 벗어나지 않는 범위내에서 여러 가지 변경이 이루어질 수 있음을 이해할 것이다.
Claims (10)
- 어드레스 버스 및 데이터 버스에 접속된 캐시 유닛을 구비하는 프로세싱 유닛 - 상기 어드레스 버스 및 데이터 버스는 상기 프로세싱 유닛 외부의 시스템 메모리 제어기에 또한 접속되어 있음 - 내에서, 현재의 기록 트랜잭션(current write transaction) 동안 다음 판독 어드레스를 제공하기 위한 전송 방법에 있어서, ① 현재의 데이터 트랜잭션내에 되복제 트랜잭션의 되복제 어드레스 및 속성들과, 다음 라인 채움(next line-fill)에 대한 사전인출된 어드레스(pre-fetched address)를 시스템 버스상에 로딩하는 단계와, ② 상기 사전인출된 어드레스와 상기 되복제 어드레스의 일부를 연접(concatenate)시켜 다음 라인 채움 어드레스(next line fill address)를 생성하는 단계를 포함하는 현재의 트랜잭션 동안 다음 어드레스를 제공하기 위한 전송 방법.
- 제1항에 있어서, 상기 사전인출된 어드레스에 연접된 상기 되복제 어드레스의 상기 일부는 인덱싱된 어드레스(indexed addess)인 현재의 트랜잭션 동안 다음 어드레스를 제공하기 위한 전송 방법.
- 제1항에 있어서,라인 채움(line-fill)을 위해 상기 시스템 메모리 제어기에 의해 메모리 행 및 열 어드레스를 생성하는 단계를 더 포함하는 현재의 트랜잭션 동안 다음 어드레스를 제공하기 위한 전송방법.
- 제1항에 있어서, 라인 채움 트랜잭션이 발행되기 전에 다음 판독 트랜잭션의 데이터를 상기 시스템 메모리로부터 상기 프로세싱 유닛의 버퍼에 로딩하는 단계를 더 포함하는 현재의 트랜잭션 동안 다음 어드레스를 제공하기 위한 전송 방법.
- 제1항에 있어서, ① 캐시 판독 미쓰(miss)가 발생했는지를 판정하는 단계와, ② 상기 캐시 판독 미쓰가 발생하였다면, 변경된 캐시 라인 (modified cache line)을 메인 메모리 유닛에 되복제하는 단계와, ③ 상기 캐시 판독 미쓰로부터 기인하는 미쓰된 캐시 판독 라인을 상기 메인 메모리 유닛으로부터 내부 캐시로 로딩하는 단계를 포함하는 현재의 트랜잭션 동안 다음 어드레스를 제공하기 위한 전송 방법.
- 어드레스 버스 및 데이터 버스에 접속된 캐시 유닛을 구비하는 프로세싱 유닛- 상기 어드레스 버스 및 데이터 버스는 상기 프로세싱 유닛 외부의 시스템 메모리 제어기에 또한 접속되어 있음 - 내에서, 현재의 기록 트랜잭션의 어드레스 단계 동안 다음 판독 어드레스를 제공하기 위한 시스템에 있어서, ① 상기 캐시 유닛에 접속되어, 현재의 데이터 트랜잭션내에 되복제 트랜잭션의 되복제 어드레스 및 속성들과, 다음 라인 채움에 대한 사전인출된 어드레스를 시스템 버스상에 로딩하는 수단과, ② 상기 로딩 수단에 접속되어, 상기 사전인출된 어드레스와 상기 되복제 어드레스의 일부를 연접시킴으로써 다음 라인 채움 어드레스를 생성하는 수단을 포함하는 현재의 트랜잭션 동안 다음 어드레스를 제공하기 위한 시스템.
- 6항에 있어서, 상기 사전인출된 어드레스에 연접된 상기 되복제 어드레스의 상기 일부는 인덱싱된 어드레스인 현재의 트랜잭션 동안 다음 어드레스를 제공하기 위한 시스템.
- 6항에 있어서, 상기 생성 수단에 접속되어, 상기 라인 채움을 위해 시스템 메모리 제어기에 의해 메모리 행 및 열 어드레스를 생성하는 수단을 더 포함하는 현재의 트랜잭션 동안 다음 어드레스를 제공하기 위한 시스템.
- 6항에 있어서, 상기 생성 수단에 접속되어, 라인 채움 트랜잭션이 발행되기 전에 상기 다음 판독 트랜잭션의 데이터를 상기 시스템 메모리로부터 상기 프로세싱 유닛의 버퍼에 로딩하는 수단을 더 포함하는 현재의 트랜잭션 동안 다음 어드레스를 제공하기 위한 시스템.
- 6항에 있어서, ① 상기 생성 수단에 접속되어, 캐시 판독 미쓰가 발생했는지를 판정하는 수단과, ② 상기 판정 수단에 접속되어, 상기 캐시 판독 미쓰가 발생하였다면 변경된 캐시 라인을 상기 메인 메모리 유닛에 복제하는 수단과, ③ 상기 생성 수단에 접속되어, 상기 캐시 판독 미쓰로부터 기인하는 미쓰된 캐시 판독 라인을 상기 메인 메모리 유닛으로부터 내부 캐시로 로딩하는 수단을 더 포함하는 현재의 트랜잭션 동안 다음 어드레스를 제공하기 위한 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US8/386,978 | 1995-02-10 | ||
US08/386,978 US5687350A (en) | 1995-02-10 | 1995-02-10 | Protocol and system for performing line-fill address during copy-back operation |
US08/386,978 | 1995-02-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR960032191A KR960032191A (ko) | 1996-09-17 |
KR100218616B1 true KR100218616B1 (ko) | 1999-09-01 |
Family
ID=23527902
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019960001881A KR100218616B1 (ko) | 1995-02-10 | 1996-01-29 | 현재의 트랜잭션동안 다음 어드레스를 제공하기 위한 전송방법 및 시스템 |
Country Status (4)
Country | Link |
---|---|
US (1) | US5687350A (ko) |
EP (1) | EP0726524A3 (ko) |
JP (1) | JPH08263371A (ko) |
KR (1) | KR100218616B1 (ko) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7301541B2 (en) * | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
JP3934710B2 (ja) * | 1996-09-13 | 2007-06-20 | 株式会社ルネサステクノロジ | マイクロプロセッサ |
US6065099A (en) * | 1997-08-20 | 2000-05-16 | Cypress Semiconductor Corp. | System and method for updating the data stored in a cache memory attached to an input/output system |
US6502171B1 (en) | 1999-08-04 | 2002-12-31 | International Business Machines Corporation | Multiprocessor system bus with combined snoop responses explicitly informing snoopers to scarf data |
US6643800B1 (en) * | 2000-02-02 | 2003-11-04 | Hewlett-Packard Development Company, L.P. | Method and apparatus for testing microarchitectural features by using tests written in microcode |
US7797472B2 (en) * | 2004-08-25 | 2010-09-14 | Unisys Corporation | Method and apparatus for providing overlapping defer phase responses |
US9916252B2 (en) * | 2015-05-19 | 2018-03-13 | Linear Algebra Technologies Limited | Systems and methods for addressing a cache with split-indexes |
KR101842764B1 (ko) * | 2016-03-18 | 2018-03-28 | 연세대학교 산학협력단 | 하드웨어 가속기와 호스트 시스템 사이의 데이터 일관성 유지 장치 및 방법 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US4884197A (en) * | 1985-02-22 | 1989-11-28 | Intergraph Corporation | Method and apparatus for addressing a cache memory |
US5148536A (en) * | 1988-07-25 | 1992-09-15 | Digital Equipment Corporation | Pipeline having an integral cache which processes cache misses and loads data in parallel |
JPH03189845A (ja) * | 1989-12-13 | 1991-08-19 | Internatl Business Mach Corp <Ibm> | 階層メモリ・システムおよびキヤツシユ・メモリ・サブシステム |
US5226130A (en) * | 1990-02-26 | 1993-07-06 | Nexgen Microsystems | Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency |
US5251310A (en) * | 1990-06-29 | 1993-10-05 | Digital Equipment Corporation | Method and apparatus for exchanging blocks of information between a cache memory and a main memory |
US5247642A (en) * | 1990-12-05 | 1993-09-21 | Ast Research, Inc. | Apparatus for determining cacheability of a memory address to provide zero wait state operation in a computer system |
US5247643A (en) * | 1991-01-08 | 1993-09-21 | Ast Research, Inc. | Memory control circuit for optimizing copy back/line fill operation in a copy back cache system |
US5353429A (en) * | 1991-03-18 | 1994-10-04 | Apple Computer, Inc. | Cache memory systems that accesses main memory without wait states during cache misses, using a state machine and address latch in the memory controller |
GB2256512B (en) * | 1991-06-04 | 1995-03-15 | Intel Corp | Second level cache controller unit and system |
WO1993018459A1 (en) * | 1992-03-06 | 1993-09-16 | Rambus Inc. | Prefetching into a cache to minimize main memory access time and cache size in a computer system |
US5353426A (en) * | 1992-04-29 | 1994-10-04 | Sun Microsystems, Inc. | Cache miss buffer adapted to satisfy read requests to portions of a cache fill in progress without waiting for the cache fill to complete |
US5471602A (en) * | 1992-07-31 | 1995-11-28 | Hewlett-Packard Company | System and method of scoreboarding individual cache line segments |
US5275216A (en) * | 1992-08-07 | 1994-01-04 | Haedt Christopher R | Liquid overflow shut-off valve |
-
1995
- 1995-02-10 US US08/386,978 patent/US5687350A/en not_active Expired - Fee Related
-
1996
- 1996-01-23 EP EP96480013A patent/EP0726524A3/en not_active Withdrawn
- 1996-01-29 KR KR1019960001881A patent/KR100218616B1/ko not_active IP Right Cessation
- 1996-02-05 JP JP8018724A patent/JPH08263371A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
EP0726524A3 (en) | 1997-10-15 |
JPH08263371A (ja) | 1996-10-11 |
EP0726524A2 (en) | 1996-08-14 |
US5687350A (en) | 1997-11-11 |
KR960032191A (ko) | 1996-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100228940B1 (ko) | 메모리 일관성 유지 방법 | |
US6594728B1 (en) | Cache memory with dual-way arrays and multiplexed parallel output | |
EP0734553B1 (en) | Split level cache | |
US5809530A (en) | Method and apparatus for processing multiple cache misses using reload folding and store merging | |
US5793941A (en) | On-chip primary cache testing circuit and test method | |
US5586294A (en) | Method for increased performance from a memory stream buffer by eliminating read-modify-write streams from history buffer | |
US6138208A (en) | Multiple level cache memory with overlapped L1 and L2 memory access | |
US5388247A (en) | History buffer control to reduce unnecessary allocations in a memory stream buffer | |
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 | |
US5696937A (en) | Cache controller utilizing a state machine for controlling invalidations in a network with dual system busses | |
US5214770A (en) | System for flushing instruction-cache only when instruction-cache address and data-cache address are matched and the execution of a return-from-exception-or-interrupt command | |
US8499123B1 (en) | Multi-stage pipeline for cache access | |
US5675763A (en) | Cache memory system and method for selectively removing stale aliased entries | |
US20020093691A1 (en) | Live memory snapshot | |
US5550995A (en) | Memory cache with automatic alliased entry invalidation and method of operation | |
US5452418A (en) | Method of using stream buffer to perform operation under normal operation mode and selectively switching to test mode to check data integrity during system operation | |
KR100218616B1 (ko) | 현재의 트랜잭션동안 다음 어드레스를 제공하기 위한 전송방법 및 시스템 | |
KR100322223B1 (ko) | 대기행렬및스누프테이블을갖는메모리제어기 | |
US4648033A (en) | Look-aside buffer LRU marker controller | |
US6338128B1 (en) | System and method for invalidating an entry in a translation unit | |
US6574698B1 (en) | Method and system for accessing a cache memory within a data processing system | |
US11176042B2 (en) | Method and apparatus for architectural cache transaction logging | |
US8108624B2 (en) | Data cache with modified bit array | |
JP2000215102A (ja) | プロセッサ用の進歩したメモリ階層構造 | |
CA1315004C (en) | Instruction cache flush-on-rei control |
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 |