KR100308677B1 - 복수l1캐쉬라인의파이프라인형스누핑 - Google Patents

복수l1캐쉬라인의파이프라인형스누핑 Download PDF

Info

Publication number
KR100308677B1
KR100308677B1 KR1019980013630A KR19980013630A KR100308677B1 KR 100308677 B1 KR100308677 B1 KR 100308677B1 KR 1019980013630 A KR1019980013630 A KR 1019980013630A KR 19980013630 A KR19980013630 A KR 19980013630A KR 100308677 B1 KR100308677 B1 KR 100308677B1
Authority
KR
South Korea
Prior art keywords
cache
stage
snoop
data
access
Prior art date
Application number
KR1019980013630A
Other languages
English (en)
Other versions
KR19990006389A (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 KR19990006389A publication Critical patent/KR19990006389A/ko
Application granted granted Critical
Publication of KR100308677B1 publication Critical patent/KR100308677B1/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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

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

본 발명의 캐쉬 시스템은 임계 경로 지연의 증가 없이 세트 연관 캐쉬를 액세스하고, 캐쉬 액세스의 대기 시간이 증가되는 단점을 감소시키며, 스누프 비지 시간을 감소시키고, MRU 미스 및 캐쉬 미스에 대한 응답을 제공한다. L1 캐쉬 및 L2 캐쉬를 포함하는 2 레벨 캐쉬 서브시스템이 제공된다. 제 1 스누프 요구로부터의 디렉토리 액세스가 평가되고 있는 동안에 제 2 스누프 요구에 대해 캐쉬 디렉토리가 액세스된다. 요구(REQUEST) 스테이지 동안에, L1 캐쉬의 디렉토리에 대한 디렉토리 액세스 스누프가 요구되고; 이 요구에 응답하여 액세스(ACCESS) 스테이지 동안에, 스누프(SNOOP) 스테이지로부터의 결과가 처리되는 동안 캐쉬 어레이가 액세스된다. 다중 데이터 전송이 L1 캐쉬로부터 요구되면, 파이프라인 보유는 요구 및 스누프 스테이지로 발행되고, 액세스 스테이지는 반복된다. 플러시(FLUSH) 스테이지 동안에, 액세스 스테이지 동안 L1 캐쉬로부터 판독된 캐쉬 데이터가 L2 캐쉬로 전송된다.

Description

복수 L1 캐쉬 라인의 파이프라인형 스누핑{PIPELINED SNOOPING OF MULTIPLE L1 CACHE LINES}
본 발명은 세트 연관형 캐쉬(set associative cache) 및 직접-매핑형 캐쉬(direct-mapped cache)와 같은 컴퓨터 시스템의 캐쉬(cache)에 관한 것으로, 특히 스누프 비지 시간(reducing snoop busy time)을 감소시키는 것에 관한 것이다.
컴퓨터 시스템에서 성능 향상을 위해 캐쉬를 사용하는 것은 잘 알려져 있으며 널리 사용되고 있다. 예를 들어, 본 명세서에서 참조되어 본 발명의 일부를 이루는 L. Liu의 미국 특허 제 5,4,18,922 호 ("History Table for Set Prediction for Accessing a Set Associative Cache") 및 L. Liu의 미국 특허 제 5,392,410 호 ("History Table for Prediction of Virtual Address Translation for Cache Access")의 내용 참조.
캐쉬는 최근에 사용된 메모리 데이터를 유지하는 고속 버퍼(high speed buffer)이다. 프로그램에 대한 참조 특성의 국지성(locality of reference nature) 때문에 대부분의 데이터 액세스는 캐쉬에서 이루어지는데, 이러한 경우 대용량 메모리에 대한 액세스가 느려지는 것을 피할 수 있다.
전형적인 고성능 프로세서 설계에 있어서, 캐쉬 액세스 경로(cache access path)는 임계 경로(critical path)를 형성한다. 즉, 얼마나 빠르게 캐쉬 액세스가 수행될 수 있는가에 의해 프로세서의 사이클 시간(cycle time)이 영향을 받는다.
통상적인 공유 메모리 멀티프로세서 시스템은 시스템의 메모리 서브시스템(subsystem)에 동기 메카니즘을 부여한다. 이 메모리 서브시스템은 로컬 프로세서(local processor)와 관련하여 하나 또는 그 이상의 레벨을 갖는 캐쉬 메모리를 포함한다. 이 프로세서/캐쉬 서브시스템은 주메모리(main memory)에 연결되는 버스(bus)를 공유한다. 시스템의 프로세서 캐쉬가 데이터의 가장 최신의 (갱신된) 버전(version)에 대해 탐색되도록 메모리에 대한 소정의 액세스가 요구하는 스누핑 프로토콜(snooping protocol)이 채택된다. 로컬 프로세서에 의해 알 수 있는 바와 같이 스누핑이 발생할 때 간섭(interference)이 최소화되도록 스누핑 프로토콜을 최적화하는 것이 중요하다. 스누프의 결과 메모리 액세스가 캐쉬 데이터를 기다리는 경우에 데이터를 가능한 빨리 캐쉬 밖으로 이동시키는 것도 역시 중요하다.
예시된 시스템에 따르면, 레벨 1 (L1) 캐쉬 라인 크기보다 2를 몇 번 거듭제곱한 정도 더 큰 레벨 2 (L2) 캐쉬 라인 크기를 가지는 두 개의 레벨로 이루어진 서브시스템이 구현된다. 두 캐쉬는 라이트백(writeback) 방식을 선택하고, L1은 세트-연관형 방식이다. L1은 갱신된 데이터(modified data)를 캐쉬 라인의 어느 부분이 포함하고 있는가를 추적하는 서브라인(sublines)으로 재분할(subdivide)된다. 캐쉬 서브시스템은 다중-레벨을 포함(multi-level inclusion)하는데, 여기서 L1에 상주(resident)하는 모든 블록들은 반드시 L2에도 상주해야 한다. 버스로부터의 스누프 요구는 L2에서 수신되며, 필요한 경우, 스누프 요구는 L1에도 전송된다. 그러나 L1으로 전송되는 스누프 요구는 L2 캐쉬 라인에 관련된 데이터를 포함할 수도 있는 L1 캐쉬의 연속적인 모든 엔트리(entry)에 대해 L1 디렉토리의 액세싱을 요구한다. 각각의 디렉토리 액세스는 개별 요구(individual request)로서 L1 캐쉬 서브시스템으로 보내진다. 디렉토리 액세스의 결과인 각 캐쉬 판독 액세스(cache read access)는 슬롯 히트(slot hit) 및 서브라인 오프셋(subline offset)을 나타내는 캐쉬 디렉토리 정보를 대기한다. 슬롯 히트 정보는 캐쉬 액세스와 병렬로 사용될 수 있지만 서브라인 오프셋은 캐쉬 판독전 사이클에서 어드레스를 발생시키는데 사용된다.
도 7을 참조하면, 단일 전송된 L2 스누프 요구가 두 개의 L1 디렉토리 액세스를 요구하는 예가 나타나 있다. 2개의 L1 라인은 각각 자신의 서브라인들에서 모두 갱신된 데이터를 가지기 때문에 L1으로부터의 떠난 두 개의 데이터 전송은 각각의 디렉토리 액세스를 요구한다. 이 예는 상기 예시된 시스템의 설계에 관련된 두 가지 문제점을 나타낸다.
(1) L1 디렉토리 또는 L1 캐쉬 중 어느 하나가 스누프 동작에 의해서 사용되고 있으면 스누프되고 있는 L1 캐쉬에 관련된 프로세서가 L1 캐쉬 서브시스템을 액세스하는 것이 방해받는다. 이것은 1에서 9까지의 사이클에 걸쳐서 프로세서 파이프를 보유하는 것(캐쉬 비지: cache busy)으로 예시되어 있다. 이러한 자원의 사용은 다른 사이클에서도 발생하며, 이것은 스누프 동작에 필요한 전체 비지시간을 증가시킨다.
(2) 제 1 및 제 2 캐쉬 블록 전송 사이에 지연이 존재하며, 이로 인해 스누프와 관련된 메모리 액세스를 수행할 수 있는 시점을 지연시킨다.
본 발명의 목적은 L1 스누프 동작에서 요구되는 사이클의 수를 감소시키는 것이다.
본 발명의 또 다른 목적은 스누프와 관련된 메모리 액세스에서 지연을 유발하는 제 1 및 제 2 캐쉬 블록 사이의 지연을 제거하는 것이다.
본 발명에 따르면, 캐쉬를 포함하는 컴퓨터 시스템을 동작시키는 장치 및 방법은 제 1 스누프 요구로부터 디렉토리 액세스를 평가하는 동안 제 2 스누프 요구에 대한 디렉토리를 액세스하는 것을 포함한다.
본 발명의 다른 특징에 따르면, L1 캐쉬 및 L2 캐쉬를 포함하는 2 레벨 캐쉬 서브시스템을 포함하는 컴퓨터 시스템을 동작시키기 위한 장치 및 방법이 제공된다. 요구 스테이지(REQUEST stage) 동안에 L1 캐쉬의 디렉토리에 대한 디렉토리 액세스 스누프가 요구되고; 이에 응답하여, 스누프 스테이지(SNOOP stage) 동안에 디렉토리는 액세스되며; 액세스 스테이지(ACCESS stage) 동안에 스누프 스테이지의 결과를 처리하는 동안 캐쉬 어레이(array)가 액세스된다. 상기 스테이지들은 파이프라인형 방식에서 완전히 겹쳐진다. 만일 다중 데이터 전송(multiple data transfers)이 L1 캐쉬로부터 요구되면, 파이프라인 보유(pipeline hold)가 요구 스테이지 및 스누프 스테이지로 발행되고, 액세스 스테이지가 반복된다. 플러시 스테이지(FLUSH stage) 동안에 L1 캐쉬로부터 캐쉬 데이터가 판독되어, 액세스 스테이지 동안에 L2 캐쉬로 전송된다.
본 발명의 기타 특징과 장점은 다음의 바람직한 실시예의 상세한 설명 및 첨부 도면을 참조하여 명확하게 이해될 것이다.
도 1은 본 발명의 바람직한 실시예가 실현되는 전형적인 마이크로프로세서 구조를 나타낸 도면.
도 2는 도 1의 마이크로프로세서에서 본 발명의 바람직한 실시예가 실현되는 것을 나타낸 블록 다이어그램인 도 2a 내지 도 2d가 어떻게 관련되었는가를 나타낸 도면.
도 3 내지 도 6은 시스템과 도 1의 L2 캐쉬 버스 인터페이스 (101) 및 (103)을 나타낸 블록 다이어그램으로 도 3은 시스템 데이터 버스를 일반적으로 나타낸 블록 다이어그램이고, 도 4는 시스템 버스 제어를 나타낸 블록 다이어그램이며, 도 5는 L2 캐쉬 데이터 버스를 나타낸 블록 다이어그램이고, 도 6은 L2 캐쉬 제어를 나타낸 블록 다이어그램이다.
도 7은 종래 기술에 따른 스누프 동작을 나타낸 표.
도 8 내지 도 9는 본 발명의 바람직한 실시예의 스누프 비지 타이밍을 나타낸 표.
도 10은 본 발명의 파이프라인형 L1 스누프 동작을 실현하는 4개의 스테이지를 나타낸 논리 플로우 다이어그램.
<도면의 주요부분에 대한 부호의 설명>
102 : 시스템 버스
104 : L2 캐쉬
106 : 고정 소수점 유닛(FXU)
108 : 부동 소수점 유닛(FPU)
110 : 로드/저장 유닛(LSU)
112 : 인스트럭션 유닛(IU)
114 : 인스트럭션 캐쉬 유닛(ICU)
116 : 데이터 캐쉬 유닛(DCU)
118 : L2 캐쉬 제어 유닛(CCU)
120 : 프로세서 인터페이스 유닛(PIU)
122 : 클록 분배 및 제어
124 : 어드레스 번역 유닛(ATU)
126 : 시스템 메모리
본 발명을 수행하기 위한 최적 모드
제 1 부
도 1을 참조하여 본 발명의 바람직한 실시예가 구현된 마이크로 프로세서 구조를 기술한다.
마이크로프로세서 칩 (100)은 시스템 버스 (102)와 L2 캐쉬 (104)를 인터페이스하도록 구성되고, 이하의 기능 유닛(functional units)들, 즉: 고정 소수점 유닛(FXU : fixed point unit) (106), 부동 소수점 유닛(FPU : floating point unit) (108), 로드 저장 유닛(LSU : load store unit) (110), 인스트럭션 유닛(IU) (112), 인스트럭션 캐쉬 유닛(ICU) (114), 데이터 캐쉬 유닛(DCU) (116), L2 캐쉬 제어 유닛 (118), 프로세서 인터페이스 유닛(PIU) (120), 클록 분배 및 제어 (122), 및 어드레스 번역 유닛(ATU) (124)를 포함한다. 멀티프로세서 환경에서, 수개의 프로세서 (100)과 이와 관련된 L2 캐쉬 (104)는 버스 (101)에 상응하는 버스들을 통하여 시스템 버스 (102)와 인터페이스할 수 있으며, 시스템 버스 (102)를 통하여 (간혹 L3 메모리로 불리우는) 주메모리 (126)에 대한 액세스를 공유한다.
마이크로프로세서 (100)의 다양한 기능 유닛들은 후술하는 바와 같은 데이터, 어드레스, 및/또는 제어 I/O 핀, 라인 및/또는 버스와 인터페이스한다. 도면 참조시, "라인"은 단일 신호 라인 또는 신호 라인들의 집합(즉, 버스)을 지칭할 수 있다. 본 발명에 밀접하게 관련된 기능 유닛들은, 이하에서 상세히 설명되는 바와 같이, 로드/저장 유닛(LSU) (110), 데이터 캐쉬 유닛(DCU) (116), L2 캐쉬 제어 유닛(CCU) (118), 및 어드레스 번역 유닛(ATU) (124)를 포함한다.
개략적으로 살펴보면, 칩 (100) 상의 기능 유닛들은 다음과 같이 통신한다. 클록 분배 및 제어 (122)는 마이크로프로세서 칩(100) 상의 모든 기능 유닛들에게 클록 신호를 제공한다. 시스템 버스 (102)는 양방향 버스(bidirectional bus) (101)를 통하여 PIU (120)에 인터페이스하고, PIU (120)은 버스 (105)를 통하여 CCU (118)과 인터페이스한다. L2 캐쉬 (104)는 버스 (103)을 통하여 CCU (118)과통신한다. CCU (118)은 버스 (109)를 통하여 ICU (114)와 인스트럭션을 통신하고, 버스 (111)을 통하여 DCU (116)과 인스트럭션을 통신하며, 버스 (107)을 통하여 ATU (124)에 어드레스 정보를 제공하고 미스 인터페이스 신호(miss interface signals)를 수신한다. LSU (110) 및 IU (112)는 라인 (129) 및 (131)을 통하여 ATU (124)에 요구 인터페이스(request interface)를 제공하고 번역 상태 정보(translation state information)를 수신한다. ATU (124)는 라인 (115)를 통하여 ICU (114)로 번역된 어드레스를 제공하고, 라인 (113)을 통하여 DCU (116)으로 번역된 어드레스를 제공한다. ICU (114)는 버스 (119)를 통하여 인스트럭션 유닛 (112)에 인터페이스한다. DCU (116)은 버스 (121)을 통하여 FXU (106), FPU (108) 및 LSU (110)으로 데이터를 제공하고, IU (112)는 버스 (123)을 통하여 FXU (106), FPU (108) 및 LSU (110)으로 인스트럭션을 제공한다. LSU (110)은 버스 (125)를 통하여 DCU (116)으로 데이터를 제공한다. FPU (108)은 LSU (110)까지는 버스 (127)을 통하여 그리고 LSU (110)에서는 버스 (125)를 통하여 DCU (116)으로 데이터를 제공하고 DCU (116)에서 데이터를 수신한다. 프로세서 (100)은 시스템 버스 (102)를 통하여 주메모리에 액세스한다.
마이크로프로세서 코어(core) (100)
도 2a 내지 도 2d, 및 도 3 내지 도 6을 참조하면, 마이크로프로세서 (100)의 코어가 도시되어 있다. 일반적으로 도 2a는 로드/저장 유닛(LSU) (110)에, 도 2b는 어드레스 번역 유닛(ATU) (124)에, 도 2c는 데이터 캐쉬 유닛(DCU) (116)에 해당한다. 도 3 내지 도 6은 일반적으로 L2 캐쉬 제어 유닛(CCU) (118)과 프로세서인터페이스 유닛(PIU) (120)에 해당한다.
디스패치 블록 (300)은 인스트럭션 유닛 (112)으로부터 다수의 실행 유닛 (106), (108), (110)의 디코드 스테이지 버퍼로 인스트럭션을 전송하는데, 이 디코드 스테이지 버퍼는 LSU 파이프라인 버퍼 (302)로 향하는 버스 (301) (LSU (110)으로 향하는 버스 (123)의 일부분임)을 포함한다.
로드/저장 유닛 (110)의 기능은 로드 및 저장 인스트럭션을 위한 64 비트 와이드 버스(64 bit wide bus) (313) 상에 유효 어드레스를 발생시키고, 범용 레지스터 (GPR) 데이터용 소스 및 싱크(source and sink)로서의 역할을 하는 것이다. 캐쉬 (400)에 기록하는 동안, 레지스터 (314) 및 (316)은 각각 데이터 및 어드레스를 보유하고; 유효 어드레스는 버스 (303) 상에 있고, 데이터 선택 블록(data select block) (320)은 버스 (323) 상으로 데이터를 출력한다. 캐쉬가 판독하는 동안, 캐쉬 (400)으로부터 나온 데이터는 라인 (461)로 입력되어 레지스터 (330)에서 래치되며, 레지스터 (330)으로부터 라인 (333)을 통하여 범용 레지스터 (306) 또는 고정 소수점 유닛 (106)으로 전송된다.
LSU 파이프라인 버퍼 (302)의 출력은 라인 (303)을 통하여 LSU 디코드 및 어드레스 발생 블록(address generation block : AGEN) (304)로 입력되는데, AGEN (304)는 범용 레지스터 (306) 및 어드레스 발생 가산기(도시되지 않음)를 포함한다. 디코드 블록 (304)의 데이터 출력은 라인 (311)을 통하여 데이터 레지스터 (314)로 입력되고, 데이터 레지스터 (314)로부터 라인 (319)를 통하여 데이터 선택 블록 (320)으로 입력된다. AGEN (304)의 어드레스 출력은 라인 (313)을 통하여 실행 스테이지의 버퍼(EXECUTE stage buffer) (316)으로 입력되고, 버스 (309)를 통하여는 실 어드레스(real address) MRU (430)으로 입력된다. AGEN (304) 출력은 또한 제어 라인 (307)을 포함하는데, AGEN (304) 출력은 데이터 캐쉬 제어 블록 (470)에 대한 실제 또는 가상 모드 어드레스 지정(real or virtual mode addressing)을 나타내도록 설정한다.
버퍼 (316)의 출력은 라인 (317)을 통하여 데이터 선택 블록 (320) 및 데이터 캐쉬 어드레스 레지스터 (408), DIR 어드레스 레지스터 (414) 및 레지스터 슬롯 MRU 어드레스 레지스터 (406)으로 입력된다. 레지스터 (408)의 출력은 라인 (409)를 통하여 멀티플렉서 (412)로 입력된다. 데이터 선택 블록 (320)은 로드 저장 유닛 (110)으로부터 데이터 캐쉬 (400)으로 저장되는 데이터를 포함하는데, 이 데이터는 멀티플렉서 (432)를 경유하는 저장 데이터 출력 라인 (323), 라인 (433), 정렬(align) 블록 (460), 라인 (461), 레지스터 (456), 라인 (457), 및 멀티플렉서 (426)을 경유하는 라인 (427)을 통하여 입력된다. 데이터 선택 블록 (320)은 또한 라인 (321)을 통하여 데이터 캐쉬 제어기 (470)으로 제어 신호를 제공한다. 멀티플렉서 (432)로의 기타 입력은 1) 데이터 캐쉬 (400)에도 입력되며 멀티플렉서 (426) 및 라인 (427)을 경유하는 L2 보정 데이터 (609), 2) 라인 (621)을 통하여 DC로 향하는 바이패스 데이터, 및 3) 멀티플렉서 (426)을 경유하여 라인 (427)로 향하는 라인 (453)을 경유하는 비정렬(unalign) 데이터(저장 합성 및 정정(store merging and correction)으로 알려진) 레지스터 (452)이다. 멀티플렉서 (432)의 출력 라인 (433)은 또한 정렬 블록 (460) 및 라인 (461)을 경유하여 레지스터 (456)으로 입력되며, 레지스터 (456)으로부터 라인 (451) 상의 캐스트아웃(castout) 버퍼 (450)의 출력과 함께 멀티플렉서 (424)를 경유하여 라인 (425) 상의 L2 캐쉬 제어기로 입력된다. 정렬 블록 (460)은, 본 실시예에 있어서, 데이터 캐쉬 (400)의 데이터를 판독 시에는 4 워드 경계(quad word boundaries)에 정렬하고, 저장시에는 멀티플렉서 (432)로부터 4 워드 경계에 정렬하는 배럴 로테이터(barrel rotator) 또는 시프터(sifter)이다.
라인 (367)(라인 (131)의 일부분) 상의 인스트럭션 유닛 (112)로부터의 유효 어드레스는 레지스터 (364)에서 래치되고 라인 (365)를 통하여 ITLB (358)과 ISLB (354)에 위치한 비교 및 어드레스 선택 블록 (356)으로 입력된다. AGEN (304)로부터의 라인 (313)은 레지스터 (384)에서 래치되고, 라인 (385)를 통하여 DTLB 어레이 (378) 및 DSLB (376)에 위치한 비교 및 어드레스 선택 블록 (374)로 입력된다. 본 발명의 바람직한 실시예에 있어서, DTLB (378)은 앞서의 Liu에 의해 기술된 바와 같은 표준 설계(standard design)일 수 있다. Liu의 DTLB 설계는 32 비트 와이드(32 bit wide)임에 반하여, 본 발명의 바람직한 실시예에서는 64 비트 와이드 DTLB (378)이 사용된다.
라인 (325) 상의 데이터 선택 (320) 출력은 풋어웨이 (PUTAWAY) 스테이지 버퍼 (330)으로 입력되고, PUTAWAY 스테이지 버퍼 (330)은 또한 (라인 (401) 및 정렬 블록 (460)을 경유하여) LSU (110)을 위한 데이터는 데이터 캐쉬 (400)으로부터 라인 (461)을 통하여 수신하며, FPU (108)의 결과에 대한 데이터는 버스 (127)의 일부분인 라인 (327)을 통해서 수신한다. PUTAWAY 스테이지 버퍼 (330)의 출력은 라인 (333)을 통하여 FPU (108)의 부동 소수점 레지스터, 특수 목적 레지스터(special purpose register) (334)(이들중 일부는 타이머임), 및 범용 레지스터 (306)으로 입력된다. 특수 목적 레지스터 (334)의 출력 라인 (335)는 데이터 선택 블록 (320)으로 귀환되는데, 이 데이터 선택 블록 (320)은 프로세서로 하여금 특수 목적 레지스터 (334)의 출력을 판독할 수 있게 한다. 캐쉬 (400)으로부터 페치할 때 라인 (333)은 FPU (108)을 위한 데이터를 전송한다.
인스트럭션 세그먼트 참조 버퍼(instruction segment look aside buffer: ISLB) (354)의 선택된 출력은 라인 (359)를 통한 ITLB (358)의 가상 어드레스 출력과 함께 라인 (355)를 통하여 비교기 (362)로 입력된다. ITLB 실 어드레스 출력 라인 (361)은 (인스트럭션 디렉토리 (352)를 포함하는) IC 제어 (350)으로 입력되고, 라인 (361) 상의 상태(status) 정보는 ATU 제어 (370)으로 입력된다. 비교기 (362)의 출력은 라인 (363)을 통하여 IC 제어 (350) 및 ATU 제어 (370)으로 입력된다. DSLB (376)의 출력은 라인 (379) 상의 DTLB (378)의 출력과 함께 라인 (377)을 통하여 비교기 (382)로 입력된다. 비교기 (382)의 출력은 라인 (383)을 통하여 ATU 제어 (370) 및 DC 제어 (470)으로 입력된다. DTLB (378)의 상태 출력 (381)은 ATU 제어 (370) 및 DC 제어 (470)으로 입력된다. ATU 제어 (370)의 출력은 데이터 캐쉬 제어기 (470)으로 향하는 제어 라인 (369), L2 어드레스로 향하는 라인 (371), ATU 기록 데이터로 향하는 라인 (373)을 통해 출력된다. IC 제어 (350) 출력은 L2 어드레스 라인 (351)을 통해 출력된다. DTLB (378)로부터의 실 어드레스는 라인 (381)을 통하여 DC 어드레스 레지스터 (408) 및 디렉토리 어드레스 레지스터 (414)로 입력된다.
예측된 실 어드레스 비트가 50 : 51로 표시되는 라인 (431) 상의 예측된(predicted) 실 어드레스 MRU (430)의 출력 신호는 레지스터 (410) 및 (416)에서 래치된다. 라인 (411) 상의 데이터 캐쉬 어드레스 레지스터 (410)의 출력은 레지스터 (408)의 출력의 50 : 51 비트와 함께 멀티플렉서 (412)에서 멀티플렉스(multiplex)되고, 멀티플렉서 (412)의 출력은 라인 (413)을 통하여 데이터 캐쉬 (400)으로 입력된다. 같은 방식으로, 레지스터 (416)의 출력은 라인 (417)을 통하여 멀티플렉서 (436)으로 입력되어 멀티플렉서 (436)에서 라인 (415) 상의 레지스터 (414)의 출력의 50 : 51 비트와 함께 멀티플렉스되고, 멀티플렉스된 결과는 라인 (437)을 통하여 디렉토리 어레이 (440)으로 입력된다. 라인 (415) 상의 레지스터 (414)의 출력은 또한 어드레스 레지스터 (408)로 입력된다.
실 주소 MRU (430)의 기능은 데이터 캐쉬 (400) 및 디렉토리 어레이 (440)에 예측된 실 주소 비트 50 : 51을 제공하는 것이다.
페치 스테이지(fetch stage) 동안, 데이터 캐쉬 (400)의 출력 (401)은 비정렬 데이터 레지스터 (452) 및 정렬 블록 (460)으로 입력되고, 정렬 블록 (460)의 출력은 라인 (461)을 통하여 레지스터 (456) 및 (330)으로 입력된다. 라인 (401)은 로드 저장 유닛 (110)에 의해서 데이터 캐쉬 (400)으로부터 판독되는 데이터, L2 캐쉬 제어기 (118)에 대한 스누프 데이터, 데이터 캐쉬 (400)에 대한 부분 저장(partial store)을 위한 합성 데이터(merge data), 및 캐스트아웃 버퍼 (450)에 대한 캐스트아웃 데이터를 포함한다. 슬롯 MRU (402)의 출력 라인 (403)은 데이터 캐쉬 (400)의 출력 상에 있는 멀티플렉서(도시되지 않음)를 통해 버스 (401) 상에 로드하기 위한 4 세트로된 데이터 중 하나의 세트를 선택하는 것을 제어한다.
캐스트아웃 버퍼 (450)의 출력은 라인 (453)의 레지스터 (452)의 출력 및 DC 풋어웨이 레지스터(DC putaway register) (456)으로부터의 라인 (457) 상의 출력과 함께 멀티플렉서 (424)에서 멀티플렉스되고, 그 결과는 라인 (425)를 통하여 L2 캐쉬 제어기로 향한다. 레지스터 (452)의 출력은 또한 DC 풋어웨이 레지스터 (456) 및 라인 (609) 상의 정정된 L2 데이터와 함께 데이터 캐쉬 입력 멀티플렉서 (426)으로 입력되고, 멀티플렉서 (426)의 출력은 라인 (427)을 통하여 데이터 캐쉬 (400) 및 멀티플렉서 (432)로 입력된다. 레지스터 (406)의 출력은 라인 (407)을 통하여 슬롯 MRU (402)로 입력된다. 슬롯 MRU (402)의 출력 (403)은 데이터 캐쉬 (400)으로 입력되는데, 데이터 캐쉬 (400)은 (Liu에 의해 개시된 바와 같이)적절한 캐쉬 세트(cache set)를 선택하는 데이터 멀티플렉서를 제어한다.
데이터 캐쉬(DC) 제어 (470)은 (디렉토리 어레이 히트 또는 미스(miss)를 의미하는) 라인 (441) 상의 디렉토리 어레이 (440), 라인 (307) 상의 AGEN (304), 라인 (321) 상의 데이터 선택 및 실행 사이클 제어 블록 (320), 라인 (369) 상의 ATU 제어 (370), 및 라인 (383) 상의 비교기 (382)로부터의 입력들을 수신한다. 데이터 캐쉬 제어 (470)의 출력은 L2 어드레스 라인 (471)로 공급되고, 미스 상태(miss condition)를 의미하는 신호를 포함한다. 미스 정보는 또한 LSU (110) 내의 ATU 제어 (370) 및 PA 제어(도시되지 않음)로 전송된다.
데이터 캐쉬 제어 (470)의 기능은 데이터 캐쉬 (400)과 양방향으로 데이터흐름(플로우)을 멀티플렉싱하는 것을 제어하며, 그 결과를 로드/저장 유닛 (110), 어드레스 번역 유닛(124), 및 L2 캐쉬 제어 유닛 (118)에 전송하고, 데이터를 데이터 캐쉬 (400) 내로 기록하는 것을 제어하는 것이다.
데이터 디렉토리 (440)은 데이터 캐쉬 (400)에 실 어드레스의 내용(contents)이 존재하는지의 여부와 캐쉬 라인이 갱신, 공유 또는 무효 상태인지의 여부를 표시하는 어드레스 태그(tags)를 포함한다. 데이터 디렉토리 (440)은 또한 각 단일 클래스(congruence class)를 위한 LRU 포인터를 포함하는데, 이 LRU 포인터는 데이터 캐쉬 (400) 라인 중 어느 것이 교체되어야 하는지를 표시한다.
어드레스 번역 유닛(ATU) 제어 (370)은 유효 어드레스로부터 가상 어드레스로 또는 실 어드레스로의 번역을 제어한다. 어드레스 번역 유닛(ATU) 제어 (370)은 라인 (353)을 통하여 정정된(corrected) L2 데이터를 수신하고, 라인 (375)를 통하여 DTLB 재로드(reload) 데이터 출력을 인스트럭션 번역 참조 버퍼(ITLB) (358) 및 데이터 번역 참조 버퍼(DTLB) (378)과 ISLB (354) 및 DSLB (376)에 제공한다. 참조 테이블 (354), (358), (376), (378)에 관하여, 만일 미스 상태가 검출되면, ATU 시퀀서(sequencer) (370)은 버스 (371)을 통하여 L2 캐쉬에 데이터(어드레스 및 길이)를 요구한다(도 6 참조). L2가 버스 (353)을 통하여 응답하면(도 5 참조), ATU는 소정의 경우 참조 버퍼 (378), (376), (354), (358)용 데이터를 선택하기 위해 데이터를 조사하거나, 또는 인스트럭션 유닛으로 번역 예외(translation exception)를 반송한다. ATU 제어 (370)은 세그먼트 및 페이지 테이블 갱신(page table updates)을 추적하여 라인 (371)을 통하여 L2 제어로 전송한다. 라인 (381)은 비교를 위해 실 어드레스를 데이터 캐쉬 디렉토리로 제공한다.
유효 어드레스는 ISLB (354)의 비교기 (356)에서 가상 어드레스와 비교된다. 만일 유효 어드레스와 가상 어드레스가 일치한다면, 가상 어드레스에 대한 유효 어드레스의 유효한 번역이 버퍼 (354)에 존재하며, 버퍼 (354)는 라인 (355)를 통하여 가상 어드레스를 비교 블록 (362)로 전송한다.
ITLB (358)은 실 어드레스에 대한 가상 어드레스 번역을 실행하기 위해 레지스터 (364)로부터 라인 (365)를 통하여 액세스된다. ITLB (358)로의 어드레스 입력은 라인 (367)을 통하여 IU (112)로부터 전송된 유효 어드레스의 일부분이다. 비교기 (362)는 라인 (355) 및 (359) 상의 가상 어드레스를 비교하고, 그 결과를 라인 (363)을 통하여 전송한다. ITLB 어레이 (358)의 관련된 각 가상 어드레스와 연관된 어드레스는 실 어드레스이다. 라인 (363) 상의 신호는 라인 (361) 상의 어드레스가 유효한지의 여부를 표시한다.
DTLB (378)은 레지스터 (384)로부터의 어드레스에 의해서 액세스된다. 비교기 (382)는 라인 (379) 및 (377) 상의 데이터를 비교하고, 그 결과를 라인 (383)을 통하여 전송한다. 라인 (383) 상의 신호는 라인 (379) 상의 주소가 유효한지의 여부를 표시한다.
시스템 버스 인터페이스 (120)
도 3 내지 도 6을 참조하면, 도 1의 시스템 버스 인터페이스 (120) 및 L2 캐쉬 제어 유닛 (118)이 상세하게 기술되어 있다.
도 1의 상위 블록 다이어그램과 도 3 내지 도 6에서의 바람직한 실시예의 보다 상세한 설명간의 대응 관계는 다음과 같다. 도 1의 버스 (101)은 도 3 내지 도 6에서 드라이버/리시버(driver/receiver) (556)에 위치한 시스템 제어 라인 (559), 드라이버/리시버 (564)에 위치한 시스템 어드레스 라인 (569), 드라이버/리시버 (512)에 위치한 시스템 데이터 하이 버스 (513), 드라이버/리시버 (516)에 위치한 시스템 데이터 로우 버스 (517)에 대응한다. L2 캐쉬 (104)로 향하는 버스 (103)은 드라이버 (690)에서 나오는 L2 캐쉬 어드레스 라인 (691), 드라이버 (692)에서 나오는 L2 태그 어드레스 라인 (693), 드라이버/리시버 (694)에 위치한 L2 태그 데이터 라인 (697), 및 드라이버/리시버 (644)에 위치한 L2 캐쉬 데이터 버스(645)에 대응한다. 도 1의 ICU 버스 (109)는 (ICU로부터 나오는) IC 요구 라인 (351)과 (ICU로 향하는) DOIC 레지스터 (606)의 출력 라인 (607) 및 라인 (617) 상의 IC 멀티플렉서 (616)로의 바이패스에 대응한다. 도 1의 DCU 버스 (111)은 (DCU로부터 나오는) DC 요구 라인 (471) 및 데이터 캐쉬 기록 데이터 버스 (425)와, (DCU로 향하는) 라인 (621) 상의 DC 멀티플렉서 (620)으로의 바이패스와 데이터 캐쉬 데이터 아웃 (DODC) 레지스터 (608)의 출력 라인 (609)에 대응한다. 도 1의 어드레스 번역 유닛 (ATU) 입력/출력 버스 (107)은 ATU 요구 라인 (371), ATU 기록 데이터 버스 (373), 및 멀티플렉서 (612)의 출력 라인 (353)에 대응한다.
도 4 내지 도 6을 참조하면, ATU 요구 라인 (371), IC 요구 라인 (351), DC 요구 라인 (471)으로부터의 어드레스/커맨드(command) 레지스터 (650)내에 래치되며, 또한 리시버 (564)로부터 나오는 라인 (565) 상에 시스템 버스 주소를 래치하는 레지스터 (566)에서의 주소로부터 라인 (567) 상으로부터의 L2 캐쉬 제어 (118)에 대한 요구는 래치된다. 이러한 어드레스/커맨드 신호는 라인 (651) 및 (653)에 의해 접속되는 레지스터 (650), (652) 및 (654)에서 요구되는 바와 같이 래치된다. 제 3 레지스터 (654)의 출력은 라인 (655)를 통하여 제어 블록 (660)으로 입력된다. 제 1 스테이지 레지스터 (650)의 출력은 라인 (651)을 통하여 레지스터 (652), L2 캐쉬 어드레스 신호 (691)을 제공하는 드라이버 (690), L2 태그 어드레스 신호 (693)을 제공하는 드라이버 (692), ECC 체킹 회로 (684), 어드레스 비교기 (664), 제어 블록 (660), 캐쉬 제어기(CC) 스누프 어드레스 레지스터 (670), 프로세서 어드레스 레지스터 CBPADR (674) 및 CBMADR (676), 및 어드레스 멀티플렉서 (680)으로 입력된다. ECC (684) 출력은 라인 (697)을 통하여 L2 태그 데이터를 제공하는 드라이버 (694)로 라인 (685)를 경유하여 입력된다. CBPADR 어드레스 레지스터 (674)는 캐쉬 미스가 발생되는 경우 시스템 버스에 대한 어드레스를 포함하고, CBPADR 어드레스 레지스터 (674)의 출력은 라인 (675)를 경유하여 멀티플렉서 (680)으로 입력된다. CBMADR 어드레스 레지스터 (676)은 스누프 어드레스 부분을 포함하고, CBMADR 어드레스 레지스터 (676)의 출력은 라인 (677)을 통하여 멀티플렉서 (680)으로 입력된다. L2 태그 데이터 라인 (697)로부터의 리시버 (694) 출력은 라인 (695)를 통하여 L2 태그 인 레지스터(L2 tag in register) (L2TAGIN) (688)로 입력되고, L2 태그 인 레지스터 (688)로부터 라인 (689)를 통하여 에러 정정 코드(ECC) 블록 (686)으로 입력된다. ECC 블록 (686)의 출력은 라인 (687)을 통하여 비교기 (664), 어드레스 레지스터 (670), (674) 및 (676)으로 입력된다. 비교기 (664)의 출력은 라인 (665)를 통하여 제어 블록 (660)으로 입력된다. CCS 어드레스 레지스터 (670)의 출력 라인 (671)은 데이터 캐쉬 스누프 어드레스를 나타낸다. 어드레스 아웃(out) 멀티플렉서 (680)의 출력은 라인 (681)을 통하여 어드레스 아웃 레지스터 (560)으로 입력되고, 라인 (561)과 드라이버 (564)를 경유하여 시스템 어드레스 버스 (569)로 입력된다. 제어 블록 (660)의 출력은 라인 (663)을 통하여 조정(arbitration) 및 제어 블록 (552)로 입력되고, 라인 (661)을 통하여는 어드레스/커맨드 레지스터 (658)로 입력된다. 조정 및 제어 블록 (552)는 라인 (557)을 통하여 리시버 (556)으로부터 제어 데이터를 수신하고, 라인 (555)를 통하여 제어 블록 (660)으로 출력을 제공하며, L2 캐쉬 미스가 발생될 경우 요구 아웃 제어 신호가 라인 (553)과 드라이버 (556)을 경유하여 시스템 제어 버스 (559)로 전송된다. 제어 블록 (660)의 또 다른 출력은 라인 (661)을 통하여 어드레스/커맨드 레지스터 (658)로 전송되고, 어드레스/커맨드 레지스터 (658)의 출력은 라인 (659)를 통하여 멀티플렉서 (672)로 전송된다. 멀티플렉서 (672)는 또한 라인 (653) 및 (655)로부터 입력을 수신하고, 자신의 출력을 라인 (673)을 통하여 레지스터 (650)으로 다시 입력한다.
도 5를 참조하면, ECC 블록 (632), DOIC 레지스터 (606), DODC 레지스터 (608), L2PDO 레지스터 (636), 멀티플렉서 (616) 및 멀티플렉서 (620)은 버스 (625)를 통하여 데이터 입력 레지스터 (624)로부터 각각 입력을 수신한다. ECC 블록 (632)의 출력은 라인 (633)을 통하여 L2 데이터 아웃 레지스터 (638)로 입력되고, 라인 (639)를 통하여 드라이버 (644)로 입력된다. L2PDO 레지스터 (636)의 출력은 라인 (637)을 통하여 인페이지(inpage) 버퍼 (646)으로 입력되고, 인페이지버퍼 (646)의 출력은 라인 (647)을 통하여 L2PDI 레지스터 (642) 및 ECC 회로 (632)로 입력된다. L2PDI 레지스터 (642)의 출력은 라인 (643)을 통하여 DOIC 레지스터 (606), DODC 레지스터 (608), CCDI 레지스터 (624)와 바이패스 멀티플렉서 (620) 및 (616)으로 입력된다. 멀티플렉서 (620) 및 (616)의 출력은 바이패스 데이터를 나타내며, 라인 (621) 및 (617)을 통하여 DC 및 IC로 각각 입력된다. 데이터 캐쉬 기록 데이터 라인 (425)는 CMCD 레지스터 (628) 및 CCDI 레지스터 (624)로 입력된다. CMCD 레지스터 (628)의 출력은 라인 (629)를 통하여 L2PDO 레지스터 (636) 및 캐스트아웃 버퍼 (602)로 입력된다.
도 3 및 도 5를 참조하면, 버스 (645)로부터의 L2 캐쉬 데이터는 리시버 (644)에서 수신되고, 라인 (649)를 통하여 L2 데이터 인 레지스터 (640)으로 입력되며, 라인 (641)을 통하여 ECC 회로 (634)와 바이패스 멀티플렉서 (616) 및 (620)으로 입력된다. ECC 회로 (634)로부터, L2 캐쉬 데이터는 라인 (635)를 통하여 캐쉬 제어기 데이터 인 레지스터(CCDI) (624), DOIC 레지스터 (606) 및 DODC 레지스터 (608)로 입력된다. DODC 레지스터 (608)의 출력 (609)는 데이터 캐쉬 유닛(도 1 참조) (116), DC 바이패스 멀티플렉서 (620), ATU 멀티플렉서 (612) 및 캐스트아웃 버퍼 (602)로 입력된다. DOIC 레지스터 (606)의 출력은 라인 (607)을 통하여 인스트럭션 캐쉬 유닛(도 1 참조) (114), ATU 멀티플렉서 (612) 및 캐스트아웃 버퍼 (602)로 입력된다. 라인 (603) 상의 캐스트아웃 버퍼 (602)의 출력은 데이터 하이(high) 출력 레지스터 (502) 및 멀티플렉서 (520)으로 입력되고, 멀티플렉서 (520)의 출력은 라인 (521)을 통하여 데이터 출력 레지스터 (502) 및 (504)로 입력된다.
동작 중에, 레지스터 (624) 및 (636)은 인페이지 버퍼 (646) 및 레지스터 (642)에 대하여 파이프라인 버퍼를 형성한다. 인페이지 버퍼 (646)은 시스템 버스로부터 라인을 캐쉬(cache)한다. L2 데이터 인 레지스터 (640)으로부터 바이패스 멀티플렉서 (616) 및 (620)까지의 라인 (641)은 에러 정정이 요구되지 않을 경우에 캐쉬 미스에 대한 사이클이 필요 없도록 한다. DOIC 레지스터 (606)은 인스트럭션 캐쉬 유닛 (114)에 정정된 데이터를 제공하고, DODC 레지스터 (608)는 데이터 캐쉬 유닛 (116)에 정정된 데이터를 제공한다. DOIC 레지스터 (606) 또는 DODC 레지스터 (608) 중 어느 것도 ATU (124)에 데이터를 공급할 수 있다.
L2 캐쉬 데이터의 경로 지정(routing)을 위한 통상적인 경로(path)는 레지스터 (640), ECC (634)와 DOIC 레지스터 (606) 및 DODC 레지스터 (608)을 경유한다.
프로세서 인터페이스 유닛 (120)
도 3을 참조하면, 도 1의 프로세서 인터페이스 유닛 (120)과 관련 회로가 보다 상세하게 설명된다. 도 3은 PIU (120) 및 시스템 버스 (102)의 데이터 플로우의 일부분을 나타낸다.
시스템 버스 (102)의 데이터 하이 버스 (513) 및 데이터 로우 버스 (517)은 각각 드라이버/리시버 (512) 및 (516), 라인 (503) 상의 데이터 하이 출력 레지스터 (502), 라인 (515) 상의 데이터 하이 입력 레지스터 (506), 라인 (505) 상의 데이터 로우 출력 레지스터 (504), 및 라인 (519) 상의 데이터 로우 입력 레지스터 (508)을 경유하여 통신한다. 각각의 버스 (513), (517)은 8 바이트의 데이터를 처리할 수 있고, 16 바이트 데이터 버스를 제공한다. 만일 시스템이 8 바이트에서만 동작되는 경우, 입력/출력 레지스터 중 한 세트 (즉, (504), (508))만 사용된다.
라인 (507) 및 (509) 상의 시스템 데이터 입력 레지스터 (506) 및 (508)의 출력은 각각 멀티플렉서 (524)로 입력되고, 멀티플렉서 (524)의 출력은 라인 (507) 상의 레지스터 (506)의 출력과 함께 라인 (525)를 통하여 캐쉬 제어 데이터 인(CCDI) 레지스터 (624)로 입력되는데(도 5 참조), 이 캐쉬 제어 데이터 인 레지스터 (624)는 캐쉬 제어기의 주(main) 데이터 입력 레지스터이다. 데이터 입력 레지스터 (624)의 출력은 버스 (625)를 통하여 멀티플렉서 (520)으로 입력된다.
로드/저장 유닛 (LSU) (110)
로드/저장 유닛 (LSU) (110)은 고정 소수점 및 부동 소수점 로드 및 저장과 캐쉬 관리 동작(cache management operations)을 디코드하고, 데이터 캐쉬 유닛 (DCU) (116)으로 유효 어드레스 및 저장 커맨드를 전송하는 기능을 한다. LSU (110)은 또한 대부분의 특수 목적 레지스터 (SPR) (334)로의 이송 인스트럭션 및 특수 목적 레지스터 (314)로부터의 이송 인스트럭션을 처리한다. 로드/저장 유닛으로서의 기능 이외에도, LSU (110)은 또한 대부분의 인스트럭션 실행 인터록(interlock)의 검출과 파이프라인 유지 신호(pipeline hold signals) 결과의 발생을 통해 인스트럭션이 디스패치(dispatch)된 후의 인스트럭션 실행 시퀀스 동작을 제어한다.
LSU (110)은 4개의 32×18 레지스터 어레이 매크로로 이루어진 6 포트 레지스터 파일(six port register file) (306)을 제공하는데, 이 6 포트 레지스터파일(six port register file) (306)은 2개의 기록 포트와 4개의 판독 포트를 가지는 32×72 어레이로 배열된다. 이 어레이에는 64-비트 범용 레지스터 (GPRs) (306)이 구비되어 있다. GPR 어레이 (306)은 또한 LSU (110) 뿐만 아니라 고정 소수점 유닛 (FXU) (106)의 디코드 스테이지(도시되지 않음)를 위한 오퍼랜드를 제공한다. FXU (106)은 소정의 경우에 라인 (327)을 통하여 결과 오퍼랜드(result operand) 및 어드레스를 제공할 뿐만 아니라, FXU (106) 자체의 인스트럭션을 디코드하고 필요한 오퍼랜드(necessary operand)에 대한 요구를 LSU (110)에 발생시킨다. LSU (110)은 유효 어드레스 (EA)를 발생하는데 필요한 레지스터 및 인스트럭션을 저장하기 위한 데이터에 대해 GPRs (306)을 액세스한다. 라인 (461)을 통하여 데이터 캐쉬 (116)으로부터 수신된 데이터 오퍼랜드 및 갱신된 유효 어드레스가 LSU (110)에 의해서 GPRs (306)에 다시 기록된다. 라인 (327)은 FPU 결과를 포함하고, 레지스터 (330)으로 입력된다.
부동 소수점 로드 및 저장의 처리에 있어서, LSU (110)은 GPR (306)으로부터의 오퍼랜드를 사용하는 유효 어드레스를 발생하고, 부동 소수점 유닛 (FPU) (108)로부터의 필요한 부동 소수점 레지스터 (FPR) 오퍼랜드를 액세스한다.
LSU (110)에 디스패치된 인스트럭션은 I-페치 사이클(I-fetch cycle)의 마지막에 LSU (110)의 디코드(DECODE) 사이클 인스트럭션 레지스터 (302) 내에 유지된다. LSU (110)의 기본적인 파이프는 3 개의 스테이지, 즉: 디코드(DECODE) 스테이지 (302/304), 실행(EXECUTE) 스테이지 (316/320), 및 풋어웨이(PUTAWAY) 스테이지 (330)으로 되어 있다. (302/304)에 대응하는 DECODE 사이클 동안에, 인스트럭션은디코드되고 오퍼랜드는 GPR (306) 어레이로부터 페치된다. 어드레스 지정 오퍼랜드(addressing operand)는 64-비트 어드레스 발생 (AGEN) 가산기로 게이트(gated)되고, 64-비트 유효 주소는 계산된다. 유효 어드레스 (EA)는 라인 (313)을 통하여 어드레스 번역 유닛 (ATU) (124) 및 데이터 캐쉬 유닛 (DCU) (116)으로 전송되고, DECODE 사이클의 마지막에 실행(EXECUTE) 사이클 동안 유효 어드레스를 보유하는 파이프라인 버퍼 (316)에서 래치된다.
EXECUTE 사이클 동안에, 저장 동작을 위한 오퍼랜드는 라인 (323)을 통하여 DCU (116)으로 전송되는데, 이 오퍼랜드는 블록 (460)에서 정렬되고, 데이터 캐쉬 (400)의 PUTAWAY 레지스터 (456)에 저장된다. EXECUTE 사이클의 마지막에서, 로드 타입 인스트럭션(load type instruction)이 실행중인 경우, 데이터 오퍼랜드는 라인 (461)을 통하여 DCU (116)으로부터 LSU (110)으로 복귀하고, PUTAWAY용 파이프라인 버퍼 (330)에 저장된다.
PUTAWAY 사이클 (330) 동안에, 라인 (333)으로 표시되는 바와 같이 두 개의 8-바이트 또는 한 개의 16-바이트 오퍼랜드까지 GPR (306)에 기록될 수 있다. 부동 소수점 로드는 사이클 당 하나의 8-바이트 오퍼랜드로 제한된다. GPR (306)은 PUTAWAY 사이클 (330)의 거의 마지막까지 기록되지 않는다. 이것은 어레이에 기록되고 있는 오퍼랜드가 파이프라인 인터록을 감소시키기 위해 어레이를 우회하여 바이패스될 것을 요구한다. GPR (306)에 대한 기록의 지연은 또한 수행될 대수 로드 동작(algebraic load operations)을 위한 부호 확장(sign extension)을 가능하게 하는데, 이것은 인스트럭션에 대한 EXECUTE (316/320) 사이클 및 PUTAWAY (330) 사이클간의 경로 지연(path delay)의 균형을 맞추는데 도움을 준다.
고정 소수점 유닛 (FXU) (106)
고정 소수점 유닛 (FXU) (106)은 저장 액세스 인스트럭션(storage access instruction)을 포함하지 않는 고정 소수점 인스트럭션을 실행한다. FXU (106)은 64-비트 가산기, 64-비트 논리 유닛, 64-비트 회전-합성(rotate-merge) 유닛, 및 곱셈(multiply) 인스트럭션 동안에 사이클 당 2-비트 곱셈 형성(2-bit-per-cycle product formation)을 지원하는 64-비트 올림 저장 가산기(64-bit carry save adder)를 포함한다.
나눗셈(division) 동작 동안에, 시프트된 피제수(dividend)로부터 제수(divisor)를 반복적으로 빼줌으로써 사이클 당 1 비트(one bit per cycle)의 몫이 발생된다.
부동 소수점 유닛 (FPU) (108)
부동 소수점 유닛 (FPU) (108)은 저장 액세스 인스트럭션을 제외한 부동 소수점 인스트럭션을 실행한다. 하나의 예시적인 실시예에 있어서, FPU (108)은 5-포트의 32×72-비트 레지스터 어레이, 32-비트 상태-제어 레지스터, 3-비트 오버랩 스캔 부스 인코더 유닛(3-bit overlap scan booth encoder unit), 2-비트 몫 발생 유닛, 106-비트 올림 저장 가산기, 106-비트 증분-전가산기(106-bit increment-full adder), 오퍼랜드 정렬 시프터 유닛, 정규화기(normalizer) 유닛 및 라운더(rounder) 유닛을 포함한다.
어드레스 번역 유닛 (ATU) (124)
도 2b를 참조하면, 어드레스 번역 유닛 (ATU) (124)는 로드/저장 유닛 (LSU) (110)으로부터의 유효 어드레스 (EA) 및 인스트럭션 유닛 (112)로부터의 인스트럭션 유효 어드레스를 L1 캐쉬를 액세스하기 위해 데이터 및 인스트럭션 캐쉬에 의해 사용되는 실 어드레스와 L2 캐쉬 (104)를 액세스하기 위해 L2 캐쉬 제어 유닛 (118)에 의해 사용되는 실 어드레스로 번역한다.
마이크로프로세서 (100)은 세그먼트 참조 버퍼 (SLB) (354) 및 (376)과 번역 참조 버퍼 (TLB) (358) 및 (378)을 구비하는데, 이 버퍼들은 세그먼트 및 페이지 테이블 엔트리를 위한 캐쉬의 기능을 한다. 참조 버퍼에서 요구된 엔트리가 발견되지 않으면, ATU (124)는 메모리 (126) 또는 L2 캐쉬 (104)로부터의 세그먼트 및 페이지 테이블 엔트리를 액세스하기 위하여 L2 캐쉬 제어 (118)에 대한 페치를 개시(initiate)한다.
ATU (124)는 임의의 번역 데이터 저장 인터럽트(DSI)를 로드/저장 유닛 (110)에 보고하고 임의의 번역 인스트럭션 인터럽트를 인스트럭션 유닛 (112)에 보고한다. 참조 비트, 변경 비트 및 태그 변경 비트는 모두 ATU (124)로부터의 캐쉬 제어 (118)에 대한 저장 요구에 의해 갱신된다.
마이크로프로세서 (100)은 인스트럭션 어드레스 번역을 위한 4-엔트리 SLB (354) 및 데이터 어드레스 번역을 위한 8-엔트리 SLB (376)을 제공한다. SLB (354) 및 (376)은 완전히 조합된 배열로 되어 있는 가장 최근에 번역된 세그먼트를 포함한다. 세그먼트 번역이 인에이블 되면, 유효 데이터 또는 인스트럭션 어드레스의 ESID (유효 세그먼트 ID) 부분은 (356) 및 (374)에서 각 SLB (354) 및 (376) ESID의 모든 엔트리와 동시에 비교된다.
ATU (124)는 실 어드레스에 대한 가상 어드레스 번역의 결과를 각각 보유하는 별도의 인스트럭션 TLB 및 데이터 TLB (358) 및 (378)을 포함한다. 실 어드레스에 대한 가상 어드레스 번역이 활성 상태에 있는 경우, SLB (354) 및 (376)의 일치로부터의 VSID가 비교기 (362) 및 (382)에서 TLB (358) 및 (378)에 저장된 VSID와 비교된다. 비교 결과가 일치되면, 일치된 TLB (358) 및 (378) 엔트리에 저장된 실 페이지 번호(real page number : RPN)가 실 어드레스를 형성하는데 사용된다. 엔트리의 각 256개 쌍 각각에 대해 LRU 비트에 의해 각각의 TLB (358) 및 (378) 내에서 치환(replacement)은 독립적으로 수행된다.
L1 데이터 캐쉬 유닛 (DCU) (116)
바람직한 실시예에 있어서, L1 데이터 캐쉬 유닛 (DCU) (116)은 다음의 속성, 즉: 64 KB 사이즈, 64 바이트 라인 사이즈, 4-웨이 세트-연관(associative), 라인 당 2 서브라인-갱신 비트, MRU 슬롯 선택, 40-비트 실 어드레스, 프로세서에 대한 양방향(to/from) 16-바이트 데이터플로우, 내부 저장 설계(store-in design) 및 다중-프로세서 지원(multi-processor supports)의 속성을 가진다. 용어 "캐쉬 라인"은 단일 캐쉬 디렉토리 엔트리에 대응하는 캐쉬 내에서의 64-바이트 데이터 블록을 나타낸다. 슬롯 MRU (402)는 실행 사이클 동안에 4 개의 캐쉬 데이터 세트 중 하나의 세트를 선택한다. 실 어드레스 MRU (430)은 캐쉬 (400) 및 캐쉬 디렉토리 (440)에 비트 50 : 51을 공급한다. 에러 정정(ECC)(도시되지 않음)은 캐쉬 (400) 및 캐쉬 디렉토리 (440)을 통하여 공급된다. 라이트-스루(thru) 모드가 구비된다.
서브어레이의 집합을 나타내는 데이터 캐쉬 (116)의 어레이 (400)은 1024×78 1R1W "가상" 2-포트 어레이 매크로에 기초한 것으로, 프로세서 사이클 내에서 판독 동작을 제공하고 그 후 기록 동작이 이어진다. 비록 개입 기록 동작(intervening write operation)이 존재하더라도 다음 판독 동작을 시작할 때까지 판독 데이터는 어레이 출력 상에 유효하게 남아있다. 이 어레이들 중 8개는 64KB 캐쉬(400)을 형성하는데 사용된다. 2 개의 어레이는 슬롯 하나당 라인 (401)로 표시되는 어레이의 16-바이트 데이터플로우 입출력(in and out)을 형성하는데 사용된다. 데이터 패리티는 어레이에 저장된다. 어레이에 저장된 최종 비트는 데이터 캐쉬를 액세스하는데 사용되는 어드레스의 비트 50 : 51을 가로지르는(across) 홀수(odd) 어드레스 패리티이다.
2 개의 어레이에는 데이터 캐쉬 디렉토리 (440)가 구비될 필요가 있다. 디렉토리는 5개의 ECC 체크 비트와 함께 28-비트 실 페이지 번호 (RPN)를 구비한다. 1개의 유효 비트 및 2개의 서브라인 갱신 상태 비트는 보전되고, 3 개의 체크 비트는 유효 비트 및 서브라인 갱신 상태 비트와 함께 저장된다. RPN 및 상태 필드는 특정 디렉토리 어레이 어드레스에서 액세스되는 4 개 세트를 나타내기 위하여 4번 복제된다. 3-비트 LRU는 최소 사용 빈도 슬롯을 표시하기 위해 2 개의 디렉토리 어레이 사이에서 공유된다.
슬롯 MRU (402)는 논리적으로 각각의 엔트리가 데이터 캐쉬 (400)에서의 캐쉬 라인에 관련되는 1024×4 어레이로서 나타난다. 논리 어레이 (400)에 액세스하기 위해 사용되는 48 : 57의 비트 48 : 51은 유효 어드레스 비트이다. 부정확한 슬롯 추측(incorrect slot guess) 또는 캐쉬 미스가 발생할 때마다 MRU (402) 비트가 갱신된다.
실 어드레스(RA) MRU (430)은 캐쉬 (400) 및 캐쉬 디렉토리 (440) 모두를 주소 지정하기 위한 실 어드레스 비트 50 및 51의 예측(prediction)을 발생하는데 사용된다. 라인 (309)로 표시되는 바와 같이, 어레이 (430)은 파이프라인의 AGEN 스테이지 (304)의 일부분으로 판독된다. 만일 로드/저장 유닛 파이프라인 EXECUTE 스테이지 유지 또는 래치된(lached) PUTAWAY 스테이지 유지가 존재한다면 어레이 (430)의 출력은 사용되지 않는다. 실 모드(real mode)는 또한 어레이 (430) (도 2c 참조) 출력이 사용되는지 여부를 결정(determine)하는데 사용된다. 실 모드 결정(determination)은 실 또는 가상 모드 주소 지정으로 제어 라인 (307)을 설정하는 AGEN (304)에서 발생한다. 실 모드가 결정되면, 로드/저장 유효 어드레스 (LSEA) (317)의 비트 50 : 51은 RA MRU 어레이 (430)의 출력 대신에 캐쉬 (400)를 액세스하기 위한 레지스터 (408) 및 캐쉬 디렉토리 (440)을 액세스하기 위한 레지스터 (414)에 의해 사용된다.
번역된 어드레스 비트 50 : 51과 관련하여 잘못된(wrong) 예측이 발생할 때마다 실 어드레스(RA) MRU 어레이 (430)은 라인 (281)을 경유하는 DC 어드레스 레지스터 (408)로부터 갱신된다. 또한, 데이터 캐쉬 어드레스 레지스터 (408) 및 데이터 캐쉬 디렉토리 어드레스 레지스터 (414)는 캐쉬 (400) 및 캐쉬 디렉토리 (440) 어레이를 재 액세스하기 위한 라인 (381)을 경유하는 어드레스 비트 50 : 51의 정확한 값(value)으로 갱신된다. 멀티플렉서 (412)는 데이터 캐쉬 제어 블록 (470)의 제어 하에 스위칭되어 어드레스 레지스터 (408)이 캐쉬 어레이 (400)을 액세스하는데 사용된다. 멀티플렉서 (436)도 동일한 기능을 가져 레지스터 (414)는 디렉토리 어레이 (440)을 액세스하는데 사용된다. LSU (110) 파이프라인은 동일한 사이클에서 캐쉬 (400) 및 디렉토리 (440)이 병렬로 재 액세스될 수 있도록 한 사이클 동안 지연된다. 데이터는 다음 사이클에서 라인 (461)을 경유하여 LSU (110)으로 복귀된다.
인스트럭션 캐쉬 유닛 (ICU) (114)
인스트럭션 캐쉬 유닛 (ICU) (114)는 물리(physical) 어레이, 어드레스 비교, 및 64KB 4-웨이 연관 인스트럭션 캐쉬에 단일-비트 에러 검출 및 복구를 제공하는 에러 체킹 회로를 포함한다. 단일-사이클 캐쉬 액세스는 선택된 128-바이트 캐쉬 라인으로부터 4개의 인스트럭션까지 제공한다. 인스트럭션 캐쉬 유닛 (114)는 기타 기능 유닛으로 브랜치 예측(branch prediction)을 포함하는 인스트럭션을 제공한다.
L2 캐쉬 제어 유닛 (118)
L2 캐쉬 제어 유닛 (118)의 기능은 프로세서 (100)에 전용(private) L2 캐쉬 (104)에 대한 액세스를 제공하고, 또한 멀티프로세서 동작을 위한 메모리 일관성 제어도 지원하는 시스템 버스 (102)를 경유하여 메모리 (126)에 대한 액세스를 제공하는 것이다. L2 캐쉬 (104)에는 외부 SRAM이 구비되어 있는데, 이 SRAM 중 한 세트는 디렉토리용으로 다른 한 세트는 데이터용이다.
CCU (118)은 4개의 소스로부터 커맨드를 수용(accept)하는데, 여기서 4개의 소스는 데이터 캐쉬 유닛 (116), 인스트럭션 캐쉬 유닛 (114), 어드레스 번역 유닛 (124) 및 프로세서 인터페이스 유닛(PIU) (120)을 경유하는 시스템 버스 (102)이다. 이러한 커맨드를 처리하기 위해, CCU (118)은 도 6에 도시된 버퍼 구조(buffer structure)를 사용한다. 외부 및 내부 커맨드는 CCU 제어 (660)에 의해 우선 순위가 정해지고 ADR/CMD 버퍼 (650)내에 위치된다. ADR/CMD 버퍼 (650)의 출력 (651)은 히트/미스(hit/miss) 상태를 결정하는 드라이버 회로 (692)에 의해 구동되는 L2 디렉토리(도시되지 않음)를 인터페이스 라인 (693)을 경유하여 액세스하는데 사용된다. 또한, 버스 (651)로부터의 적절한 어드레스 비트는 데이터 캐쉬 스누프가 수행되기를 필요로 하는지 여부를 결정하는 제어 (660)에서 L1 상태 어레이 (도시되지 않음)를 액세스하는데 동시에 사용된다. 마지막으로, ADR/CMD 버퍼 (650)은 요구된 L2 디렉토리에서 상태 및 태그 정보의 갱신을 제어하는데 사용되는데, 이러한 프로세스는 본 발명 기술 분야에서 잘 알려진 것이다.
4개의 L2 히트/미스 상태는 다음과 같다.
1) 변경 (Modified)
이 라인은 메모리와는 다르고, 어떠한 다른 일관성 캐쉬도 이 라인의
카피(copy)를 갖지 않는다.
2) 배타 (Exclusive)
이 라인은 메모리와 동일하고 어떠한 다른 일관성 캐쉬도 이 라인의
카피(copy)를 갖지 않는다.
3) 공유 (Shared)
이 라인은 메모리와 동일하고 다른 캐쉬들도 이 라인의 카피를 가질 수
있다.
4) 무효 (Invalid)
이 캐쉬 및 이 프로세서의 데이터 캐쉬는 이 라인의 카피를 갖지 않는다.
데이터가 L2 캐쉬에도 존재하는 경우에만 데이터는 데이터 캐쉬에 존재
할수 있다.
커맨드는 단지 3 사이클 동안만 ADR/CMD 버퍼 (650)에 머무르며, 그 동안 커맨드는 ADR/CMD 버퍼 (652) 또는 ADR/CMD 버퍼 (658)로 이동한다. 프로세서 커맨드가 ADR/CMD 버퍼 (650)에 존재할 경우에 프로세서 커맨드는 ADR/CMD 버퍼 (652)로 이동하고, 프로세서 커맨드가 필요로 하는 데이터 플로우와 같은 자원(resources)은 사용될 수 없다. 자원이 사용가능해질 때까지 커맨드는 ADR/CMD 버퍼 (652)에 머무를 것이다.
시스템 버스 스누프 커맨드가 데이터 경로(path)를 사용할 필요가 있는 경우에 커맨드는 제어 블록 (660)을 경유하여 ADR/CMD 버퍼 (650)으로부터 ADR/CMD 버퍼 (658)로 이동한다. 자원이 사용가능해질 때까지 커맨드는 ADR/CMD 버퍼 (658)에 머무를 것이다. 시스템 버스를 통하여 어드레스 커맨드를 발행할 필요가 있는 커맨드는 ADR/CMD 버퍼 (654)에 위치된다. 시스템 버스 (102)로부터 성공적인(successful) 어드레스 상태 및 응답을 수신하기 전까지 커맨드는 ADR/CMD버퍼 (654)에 머물며, 필요한 경우에는 재 시도된다. 만일 데이터 이동(movement)이 요구되면 커맨드는 CCU 데이터 플로우 로직(CCU data flow logic)으로 전송된다.
2개의 분리된 기능 동작을 수행하기 위해서는 ADR/CMD 버퍼 (658)로부터 ADR/CMD 버퍼 (650)으로의 피드백이 필요하다. 첫 번째 피드백의 경우는 시스템 버스 (102)로부터의 공유 어드레스 응답과 마주치는 프로세서 판독 커맨드를 위한 것이다. 프로세서 판독 커맨드가 처음에 ADR/CMD 버퍼 (650) 내의 존재하는 경우, L2 디렉토리는 L2는 오직 하나의 데이터 카피를 가지는 것을 나타내는 배타(Exclusive)로 표시된다. 또 다른 장치(device)가 시스템 버스 (102) 상의 공유 어드레스 응답에 의해서, 또한 상기 데이터 카피를 가지고 있음을 표시하는 경우 L2 디렉토리는 배타로부터 공유(Shared)로 변경되어야 한다.
두 번째 피드백 동작은 데이터의 기록이 가능하기 전에 성공적인 시스템 버스 (102)의 어드레스 상태 및 응답을 기다려야 하는 프로세서 기록 동작에 사용된다. L2 디렉토리에서 공유(shared)를 히트(hit)하는 프로세서 저장 또는 데이터-캐쉬-블록-제로(data-cache-block-zero) 인스트럭션에 대해, 프로세서는 데이터를 갱신하기 전에 프로세서가 라인을 배타 상태로 보유했는가를 확인해야 한다. 프로세서가 공유 라인의 소유권을 획득하기 전에 프로세서는 다른 장치에게 공유 라인을 잃을 수도 있으므로, 디렉토리 액세스를 재 시작하기 위한 피드백 경로가 제공된다.
L2 캐쉬 제어 유닛 스누프 동작
시스템 버스 (102)로부터의 스누프 커맨드는 프로세서 인터페이스 유닛(120)을 통해 입력되고 버스 (567)을 경유하여 ADR/CMD 버퍼 (650)로 제공된다. 동시에 시프트 레지스터(도시되지 않음)의 동작이 시작된다. 시프트 레지스터는 스누프 커맨드를 "타임 아웃(time out)"시키는데 사용된다. 스누프 커맨드는 고정된 시간 내에 응답을 요구하지만, 커맨드는 ADR/CMD 버퍼 (650)로 입력되기 전에 더 높은 우선 순위(higher priority)를 갖는 다른 커맨드로 인하여 지연될 수 있다. 만일 시프트 레지스터가 "타임 아웃"되면, 어드레스 재시도 응답(address retry response)이 시스템 버스 (102)로 발행될 것이다.
스누프 커맨드가 ADR/CMD 버퍼 (650) 내로 수용되면 L2 디렉토리 및 L1 상태 어레이가 체크된다. 만일 커맨드가 L2 디렉토리 및 L1 상태 어레이에서 히트되면, 스누프 커맨드는 데이터 캐쉬로 발행된다. 만일 데이터가 스누프 커맨드를 완료(complete)하기 위해 이동되어야 한다면, 데이터는 우선 L2 캐쉬로부터 나와서 캐스트아웃 버퍼 (602)로 이동될 것이다. 그 후 데이터 캐쉬가 변경된 데이터 카피를 가지고 있다면, 데이터 캐쉬의 데이터 카피는 캐스트아웃 버퍼 (602)로 이동되고 후속적으로 버스 (603)을 경유하여 시스템 버스 (102)로 이송된다.
메모리 관리 방법(memory management policy)에 따르면 세그먼트 및 페이지 번역 테이블 엔트리는 ATU (124)에 의해 L1 데이터 캐쉬로부터 직접 액세스되지 않아야 한다. 따라서, 기타 방식의 스누프 동작은 ATU 커맨드에 대하여 수행된다. ATU 커맨드가 입력되면, 데이터 캐쉬는 L1 상태 어레이를 사용하여 스누프된다. 만일 데이터 캐쉬가 변경된 데이터를 가지고 있다면, 데이터가 데이터 캐쉬로부터 L2데이터 RAM으로 이동될 때까지 ATU 커맨드가 정지된다.
프로세서 인터페이스 유닛 (PIU) / 버스 인터페이스 유닛 (BIU) (120)
도 1 및 도 3을 참조하면, 프로세서 인터페이스 유닛 (PIU) (120)은 메인 시스템 버스 (102)에 관한 모든 통신을 제어하고 모니터한다. PIU (120)의 주요 기능은 다음과 같다.
1) 커맨드, 어드레스 및 데이터를 CCU (118) 및 시스템 버스 (102) 사이에서
수송한다.
2) CCU (118)의 인터럽트를 요구하지 않는 입력된 커맨드-어드레스 전송을
제거한다.
3) 프로세서 유닛 (100) 및 6xx 버스 (602) 사이의 클록 도메인 차이를
보상한다.
4) 프로세서 실행시간 진단(Processor Run-Time Diagnostics) (PRD)을 위한
시스템 체크스톱 로직(system checkstop logic)을 보전하고 모니터한다.
일반적으로, 시스템 버스 인터페이스 또는 프로세서 인터페이스 유닛 (PIU) (120)은 L2 캐쉬 제어기 (CCU) (118)로부터 라인 (663)을 통하여 커맨드를 수신하고, 블록 (552)에서 시스템 버스 클록 도메인으로 변환하여 라인 (559)를 통하여 버스 (102)로 전송한다. 시스템 버스 인터페이스 또는 프로세서 인터페이스 유닛 (PIU) (120)은 라인 (559)를 통하여 수신된 커맨드에 관한 상태 및 응답 정보를 모니터하고, 라인 (555)를 통하여 CCU (118)로 통지한다. 커맨드가 라인 (559)를 통하여 버스로부터 도착하면, PIU (120)은 커맨드를 3개의 카테고리 중 하나로 분류하는데, 3개의 카테고리는 마스터 동작(master operation), 스누프 동작 및 기타 동작이다. 마스터 동작은 PIU (120)과 동일한 칩 (100) 상의 CCU (118)에 의해 발생한다. 마스터 동작은 상태 및 응답이 모니터될 필요가 있으며, 상태 및 응답 정보가 입력되면 CCU (118)을 갱신한다. 스누프 동작은 기타 버스 유닛에 의해서 발생되며 CCU (118)의 인터럽트를 요구한다. PIU (120)은 스누프를 표시하는 CCU (118)로 스누프 동작을 전송할 것이며 상태 및 응답을 계속 모니터한다. 기타 동작은 CCU (118)의 인터럽트를 요구하지 않는 기타 다른 유닛에 의해서 발생된다. 이 기타 동작의 경우 PIU (120)은 CCU (118)에 통지하지 않고 단지 상태 및 응답을 모니터할 뿐이다.
클록 분배 및 제어 (122)
클록 분배 및 제어 (122)는 게이팅(gating), 셰이핑(shaping) 그리고 오프 칩 캐쉬(off chip cache) 및 디렉토리 클록뿐만 아니라 내부 클록을 분배하기 위한 로직을 포함한다.
정상적인 시스템 동작 중에, 모든 클록은 위상 동기 루프(PLL) 회로에 의해 단일 오실레이터 입력으로부터 획득되어 단일 오실레이터 입력에 동기되는데, 위상 동기 루프는 입력 오실레이터 및 주파수 증배기 기능에 관련된 "제로 지연" 클록 트리를 제공한다. 마이크로프로세서 (100)은 이 기능을 사용하여 내부 프로세서 로직을 시스템 버스 (102)의 인터페이스 로직보다 빠른 속도(rate)로 실행시키는데, 시스템 버스 (102)의 인터페이스 로직은 오실레이터 입력과 같은 속도로 실행된다. 제 2 온-칩 (100) PLL은 오프-칩 L2 캐쉬 (104)를 위한 클록을 발생시키기 위해 사용된다. 제 2 PLL은 자신의 입력으로 제 1 PLL의 주파수 증배된 출력을 사용한다. 캐쉬 칩에 대한 경로를 일치시키기 위해 구성된 오프-칩 피드백 경로는 프로세서 클록 도메인(processor clock domain)에 대해 스큐 지연(low skew delay)이 낮아지고 프로세서 (100) 및 캐쉬 (104) 사이의 동기적 통신을 가능하게 한다.
제 2 부
복수 L1 캐쉬 라인의 파이프라인 스누핑
본 발명의 바람직한 실시예에 따르면, 데이터 전송 갭(gap)이 제거되고 완전히 겹쳐진 4개의 스테이지로 구성된 파이프라인 L1 데이터 캐쉬 (400)의 스누프 동작을 제공함으로써 프로세서의 전체 스누프 비지 시간은 감소된다. 이것은 (DC 액세스 사이클 동안의 DC 제어 상태에서) 선행(previous) 디렉토리 액세스가 평가되고 있는 동안에 다음번 스누프 요구(next snoop request)에 대한 디렉토리 (440)의 액세스를 발생시키고 오프셋이 알려지기 전의 제 1 서브라인에서 캐쉬 액세스가 1 사이클 먼저 시작되도록 한다. 오프셋은 서브라인 변경 비트(subline modify bits)에 기초한 데이터 캐쉬 제어 (470)에서 계산된다. 만일 서브라인이 변경되지 않았다면 데이터 캐쉬 (400)으로부터 레지스터 (452)로 불필요한 데이터(unnecessary data) 전송이 일어날 수 있으며, 그 결과 사이클 절약(cycle saved)이 전혀 없게 된다. 그러나 서브라인이 변경되면, 1 사이클이 절약된다.
도 10을 참조하면, 본 발명의 파이프라인 방식의 L1 스누프 동작의 겹쳐진 4개 스테이지는 REQUEST (571), SNOOP (572), ACCESS (573), FLUSH (574)이다. 상기스테이지들을 포함하는 다수의 레지스터, 어레이 및 제어는 도 2c 및 도 6과 관련하여 이미 기술된 바 있으며, 도 2a의 로드/저장 유닛 (110)에 관해 기술된 것들과는 개별의 파이프라인 스테이지이다.
REQUEST (571) 동안에, 디렉토리 액세스 스누프 요구는 L1 캐쉬 디렉토리 (440)에서 보류(pending)된다. DC 제어 (470)에 의해 결정되는 바와 같이 디렉토리 어드레스 레지스터 (414)가 사용 가능하다면, 스누프 어드레스는 캐쉬 제어 스누프 (CCS) 어드레스 레지스터 (670)으로부터 DC 스누프 어드레스 라인 (671)을 통하여 레지스터 (414)로 래치된다(도 6 참조).
SNOOP (572) 동안에, 캐쉬 디렉토리 (440)이 액세스되고, 스누프의 결과는 DC 제어 (470)에서 래치된다. 동시에, 데이터 캐쉬 판독 어드레스 레지스터 (408)은 다음 사이클에서의 액세스를 위한 라인 (410)으로부터의 스누프 파이프라인의 액세스 스테이지에 사용되는 어드레스를 래치한다.
ACCESS (573) 동안에, SNOOP 스테이지의 결과가 처리되는 동안 캐쉬 어레이 (400)이 액세스된다. 액세스 스테이지 동안에 캐쉬 어레이 (400)에서 판독된 데이터는 레지스터 (452)에서 래치된다.
FLUSH (574) 동안에, ACCESS 스테이지 동안 레지스터 (452)에서 래치된 캐쉬 데이터는 DC 기록 데이터 라인 (425)을 통하여 L2 CCU로 전송된다.
상술한 바와 같이 데이터 캐쉬가 스누프되면, 스누프 결과 발생하는 임의의 데이터 전송이 L2 CCU로 전송된다. 그 후 L2 CCU는 스누프 요구의 발생 장소(originator)에 따라서 상기 데이터를 L2 캐쉬 또는 시스템 버스로 전송한다.예를 들면, ATU 요구 결과 발생하는 스누프는 스누프 동작에 의해 전송되고 있는 데이터를 L2 캐쉬로 입력시킨다. 반면에, 만일 스누프가 시스템 버스 동작으로부터 발생하면 데이터는 시스템 버스로 전송된다. L2 캐쉬 라인 사이즈에 대응하는 전체 128 바이트가 시스템 버스로 전송될 수 있도록 L1으로부터의 스누프 데이터가 L2 캐쉬 데이터와 합성될 수 있다. 데이터가 시스템 버스 상에 존재할 때, 데이터는 동작에 따라 주메모리 또는 기타 프로세서로 전송될 것이다.
다중 데이터 전송이 소정의 캐쉬 라인에 대해 L1 캐쉬로부터 요구되면, 파이프라인 보유는 파이프라인의 REQUEST 및 SNOOP 스테이지로 전송되고, 그 후ACCESS 스테이지가 반복된다. 따라서, 데이터 전송의 발생이 없을 때 동작이 완전히 파이프라인 방식(pipelined)으로 이루어지고, 데이터 전송이 발생되면 적어도 하나의 지연(stall) 사이클이 요구된다.
도 8 및 도 9를 참조하면, 본 발명의 바람직한 실시예에 따른 타이밍(timing)이 도 7의 동작과 비교해 향상된 동작을 나타낸다. 도 7에서와 마찬가지로, 도 8 및 도 9에서 "1" 및 "2"로 표시되는 2개 스누프 요구의 사이클 타임 1-10 (도 7 참조), 1-7 (도 8 참조) 및 1-5 (도 8 참조)를 통한 진행 상황(progress)이 다수의 스테이지 (571) 내지 (574)를 통하여 도시되어 있다. 프로세서에 제공된 캐쉬 비지 시간(cache busy time)은 3개 사이클만큼 감소되고, L1 캐쉬 (400)으로부터의 데이터 전송들 간의 갭은 제거된다. L1으로부터의 데이터 전송 경로는 멀티플렉서 (424)를 통하여 캐쉬 판독 라인 (425)으로 향하는 라인 (453)이다.
사이클 번호 3은 캐쉬 (400)으로부터의 또 다른 4워드(quadword)(16바이트)를 판독하기 위해 ACCESS 스테이지 (573)을 반복할 필요성 때문에 언제 파이프라인 보유(hold)가 발생하는가를 나타낸다: 후행 사이클로 진행하는 현재 위치에서 선행 SNOOP 스테이지 (572)는 보유된다. 제 1 캐쉬 라인으로부터의 데이터 전송이 요구되지 않았다면, 보유(hold)가 발생하지 않을 것이고 후행 사이클에서 ACCESS 스테이지 (573)이 제 2 캐쉬 라인으로 진행할 것이다.
도 8의 실시예는 다양한 L1 및 L2의 구성으로 확대될 수 있다. 예를 들어, 본 발명의 다른 실시예는 32 바이트 L1 라인 사이즈 및 128 바이트 L2 라인 사이즈를 제공한다. 이 경우의 각 전송된 L2 스누프에 대해 L1 디렉토리 (440)의 4개까지 액세스가 발생하고, 이전 실시예(implementation)와 비교해 사이클 절약(cycle saving)은 더욱 향상된다.
본 발명은 또한 REQUEST (571), SNOOP (572) 및 ACCESS 스테이지(573) 각각이 진행되는 것을 차단(block)하는데 사용되는 파이프라인의 FLUSH 스테이지 (574)의 보유 상태(hold condition)를 발생하도록 한다. 본 발명의 실시예는 또한 L1 캐쉬 데이터 에러 정정을 수행하는 상기 메커니즘을 이용한다. 이러한 보유 상태는 FLUSH 스테이지 (574)에서 DC 제어 (470)에 의해 발생된다.
본 발명은 또한 기타 다른 시스템 구조에까지 확장될 수 있다. 특히, L2 캐쉬 (104)는 본 발명 방법의 효과를 달성하는데 필요 적인 것은 아니다. 메모리 액세스 요구(즉, DMA 동작)는 소정 실시예에 있어서 L1 캐쉬 (400) 라인 사이즈를 능가(exceed)하고, L1 캐쉬 (400) 스누핑이 필요한 경우에는 본 발명을 이용할 수 있다.
본 발명의 바람직한 실시예의 방법은 L1 스누프 동작에 요구되는 사이클의 수를 감소시키고, 스누프와 관련하여 메모리 액세스에서 지연을 발생시키는 제 1 및 제 2 캐쉬 블록간의 지연을 제거하는 장점이 있다.
본 명세서에서는 본 발명의 특정 실시예가 예시 목적으로 기술되었지만, 본 발명의 정신 및 범위를 벗어남이 없이 다양한 변경이 가능하다.
따라서, 본 발명의 보호 범위는 첨부된 청구범위 및 그 균등물에 의해서만 정해진다.

Claims (8)

  1. 스누프(snoop) 동작을 실행하기 위한 캐쉬(cache)를 포함하는 컴퓨팅 시스템을 동작시키기 위한 방법에 있어서,
    a) 요구 스테이지(request stage), 스누프 스테이지, 및 액세스(access) 스테이지를 실행하는 단계;
    b) 상기 요구 스테이지 동안에, 상기 캐쉬의 디렉토리(cirectory)에 대한 액세스를 요구하는 단계;
    c) 제1클록 사이클에서 실행된 상기 스누프 스테이지 동안에, 상기 캐쉬의 디렉토리를 액세스하는 단계;
    d) 상기 제1 클록 사이클에 이어지는 다음 번 클록 사이클에서 실행된 상기 액세스 스테이지 동안에, 상기 스누프 스테이지의 결과를 처리하는 동안에 상기 캐쉬의 데이터 어레이들(data arrays)을 동시에 액세스하는 단계; 및
    e) 상기 액세스 스테이지 동안에 상기 캐쉬 밖으로의 다중 데이터 전송이 요구되는 경우, 상기 요구 및 스누프 스테이지에 대한 보유(hold)를 출력하는(issuing)단계를 포함하는 컴퓨팅 시스템 동작 방법.
  2. L1 캐쉬 및 L2 캐쉬 제어를 포함하는 2 레벨 캐쉬 서브시스템을 포함하는 컴퓨팅 시스템을 동작시키는 방법에 있어서,
    a) 요구 스테이지 동안에 상기 L1 캐쉬의 디렉토리에 대한 디렉토리 액세스스누프를 요구하는 단계;
    b) 상기 요구에 응답하여, 스누프 스테이지 동안에 상기 디렉토리를 액세스하는 단계;
    c) 액세스 스테이지 동안에 상기 스누프 스테이지로부터의 결과를 처리하는 동안 상기 L1 캐쉬 어레이를 액세스하는 단계― 상기 L1 캐쉬
    밖으로의 다중 데이터 전송이 요구되는 경우,
    가) 상기 요구 및 스누프 스테이지에 대한 파이프라인 보유 (pipeline hold)를 출력하는 단계
    나) 상기 액세스 스테이지를 반복하는 단계를 포함함―; 및
    d) 플러시 스테이지 동안에, 상기 액세스 스테이지 동안 상기 L1 캐쉬로부터 판독된 캐쉬 데이터를 상기 L2 캐쉬 제어기로 전송하는 단계를 포함하는 컴퓨팅 시스템 동작 방법.
  3. 제2항에 있어서,
    상기 플러시 스테이지 동안 보유 조건(hold condition)을 선택적으로 실행하는 단계를 추가로 포함하는 컴퓨팅 시스템 동작 방법.
  4. L1 캐쉬 및 시스템 장치를 포함하는 2 레벨 캐쉬 서브시스템을 포함하는 컴퓨팅 시스템에 있어서,
    a) 요구 스테이지 동안 상기 L1 캐쉬의 디렉토리에 대한 디렉토리 액세스
    스누프를 요구하는 수단;
    b) 상기 요구에 응답하여 스누프 스테이지 동안 상기 디렉토리를 액세스하는
    수단;
    c) 상기 스누프 스테이지로부터의 결과를 처리하는 동안에 액세스 스테이지 동안 상기 L1 캐쉬의 데이터 어레이들을 액세스하는 수단―상기 L1 캐쉬 밖으로의 다중 데이터 전송이 요구되는 경우,
    가) 상기 요구 및 스누프 스테이지에 대한 파이프라인 보유를 출력하는 수단; 및
    나) 상기 액세스 스테이지를 반복하는 수단을 포함함―; 및
    d) 상기 액세스 스테이지 동안 상기 L1 캐쉬로부터 판독된 캐쉬 데이터를 플러시 스테이지 동안 상기 시스템 장치로 전송하는 수단
    을 포함하는 컴퓨팅 시스템.
  5. 제4항에 있어서,
    상기 플러시 스테이지 동안 보유 조건을 선택적으로 실행하는 수단을 추가로 포함하는 컴퓨팅 시스템.
  6. 제4항에 있어서,
    상기 시스템 장치가 L2 캐쉬인 컴퓨팅 시스템.
  7. 제4항에 있어서,
    상기 시스템 장치가 주메모리 또는 다른 프로세서인 컴퓨팅 시스템
  8. 스누프 동작을 실행하기 위한 캐쉬를 포함하는 컴퓨팅 시스템에 있어서,
    a) 요구 스테이지, 스누프 스테이지, 및 액세스 스테이지를 실행하기 위한 수단;
    b) 상기 요구 스테이지 동안에, 상기 캐쉬의 디렉토리에 대한 액세스를 요구하기 위한 수단;
    c) 제1 클록 사이클에서 실행된 상기 스누프 스테이지 동안에, 상기 캐쉬의 디렉토리를 액세스하기 위한 수단;
    d) 상기 제1 클록 사이클에 이어지는 다음 번 클록 사이클에서 실행된 상기 액세스 스테이지 동안에, 상기 스누프 스테이지의 결과를 처리하는 동안에 상기 캐쉬의 데이터 어레이들을 동시에 액세스하기 위한 수단; 및
    e) 상기 액세스 스테이지 동안에 상기 캐쉬 밖으로의 다중 데이터 전송이 요구되는 경우, 상기 요구 및 스누프 스테이지에 대한 보유를 출력하는 수단
    을 포함하는 컴퓨팅 시스템.
KR1019980013630A 1997-06-12 1998-04-16 복수l1캐쉬라인의파이프라인형스누핑 KR100308677B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/873,991 1997-06-12
US08/873,991 US6065101A (en) 1997-06-12 1997-06-12 Pipelined snooping of multiple L1 cache lines
US8/873,991 1997-06-12

Publications (2)

Publication Number Publication Date
KR19990006389A KR19990006389A (ko) 1999-01-25
KR100308677B1 true KR100308677B1 (ko) 2001-10-19

Family

ID=25362751

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980013630A KR100308677B1 (ko) 1997-06-12 1998-04-16 복수l1캐쉬라인의파이프라인형스누핑

Country Status (4)

Country Link
US (2) US6065101A (ko)
KR (1) KR100308677B1 (ko)
CA (1) CA2240351C (ko)
TW (1) TW382672B (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6065101A (en) * 1997-06-12 2000-05-16 International Business Machines Corporation Pipelined snooping of multiple L1 cache lines
US6460119B1 (en) * 1997-12-29 2002-10-01 Intel Corporation Snoop blocking for cache coherency
US6981096B1 (en) * 1998-10-02 2005-12-27 International Business Machines Corporation Mapping and logic for combining L1 and L2 directories and/or arrays
US6397320B1 (en) 1999-06-25 2002-05-28 International Business Machines Corporation Method for just-in-time delivery of load data via cycle of dependency
US6393553B1 (en) 1999-06-25 2002-05-21 International Business Machines Corporation Acknowledgement mechanism for just-in-time delivery of load data
US6385694B1 (en) 1999-06-25 2002-05-07 International Business Machines Corporation High performance load instruction management via system bus with explicit register load and/or cache reload protocols
US6446166B1 (en) * 1999-06-25 2002-09-03 International Business Machines Corporation Method for upper level cache victim selection management by a lower level cache
US6430683B1 (en) 1999-06-25 2002-08-06 International Business Machines Corporation Processor and method for just-in-time delivery of load data via time dependency field
US6434667B1 (en) 1999-06-25 2002-08-13 International Business Machines Corporation Layered local cache with imprecise reload mechanism
US6463507B1 (en) 1999-06-25 2002-10-08 International Business Machines Corporation Layered local cache with lower level cache updating upper and lower level cache directories
US6505277B1 (en) * 1999-06-25 2003-01-07 International Business Machines Corporation Method for just-in-time delivery of load data by intervening caches
US6397300B1 (en) 1999-06-25 2002-05-28 International Business Machines Corporation High performance store instruction management via imprecise local cache update mechanism
US6425090B1 (en) 1999-06-25 2002-07-23 International Business Machines Corporation Method for just-in-time delivery of load data utilizing alternating time intervals
US6405285B1 (en) * 1999-06-25 2002-06-11 International Business Machines Corporation Layered local cache mechanism with split register load bus and cache load bus
US6427204B1 (en) 1999-06-25 2002-07-30 International Business Machines Corporation Method for just in-time delivery of instructions in a data processing system
US6418513B1 (en) 1999-06-25 2002-07-09 International Business Machines Corporation Queue-less and state-less layered local data cache mechanism
US6609171B1 (en) * 1999-12-29 2003-08-19 Intel Corporation Quad pumped bus architecture and protocol
US6647464B2 (en) * 2000-02-18 2003-11-11 Hewlett-Packard Development Company, L.P. System and method utilizing speculative cache access for improved performance
US6604162B1 (en) * 2000-06-28 2003-08-05 Intel Corporation Snoop stall reduction on a microprocessor external bus
US6904499B2 (en) * 2001-03-30 2005-06-07 Intel Corporation Controlling cache memory in external chipset using processor
US6799217B2 (en) * 2001-06-04 2004-09-28 Fujitsu Limited Shared memory multiprocessor expansion port for multi-node systems
US6751814B2 (en) * 2001-11-02 2004-06-22 Roy Mattson Whirlpool bath filter and suction device
US6871268B2 (en) * 2002-03-07 2005-03-22 International Business Machines Corporation Methods and systems for distributed caching in presence of updates and in accordance with holding times
US7085889B2 (en) * 2002-03-22 2006-08-01 Intel Corporation Use of a context identifier in a cache memory
US7237067B2 (en) * 2004-04-22 2007-06-26 Hewlett-Packard Development Company, L.P. Managing a multi-way associative cache
US7386682B2 (en) * 2005-02-11 2008-06-10 International Business Machines Corporation Reducing number of rejected snoop requests by extending time to respond to snoop request
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
US20060195662A1 (en) * 2005-02-28 2006-08-31 Honeywell International, Inc. Method for deterministic cache partitioning
US8190820B2 (en) * 2008-06-13 2012-05-29 Intel Corporation Optimizing concurrent accesses in a directory-based coherency protocol
US9430395B2 (en) * 2008-08-11 2016-08-30 International Business Machines Corporation Grouping and dispatching scans in cache
US7925840B2 (en) * 2008-09-05 2011-04-12 Arm Limited Data processing apparatus and method for managing snoop operations
KR101426512B1 (ko) * 2012-11-06 2014-08-05 경북대학교 산학협력단 경도 및 미생물의 개체수가 향상된 수질정화용 흙공
CN106484682B (zh) 2015-08-25 2019-06-25 阿里巴巴集团控股有限公司 基于统计的机器翻译方法、装置及电子设备
CN106484681B (zh) 2015-08-25 2019-07-09 阿里巴巴集团控股有限公司 一种生成候选译文的方法、装置及电子设备
GB2560336B (en) * 2017-03-07 2020-05-06 Imagination Tech Ltd Address generators for verifying integrated circuit hardware designs for cache memory

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2044689A1 (en) * 1990-06-15 1991-12-16 Roger E. Tipley Multilevel inclusion in multilevel cache hierarchies
US5339399A (en) * 1991-04-12 1994-08-16 Intel Corporation Cache controller that alternately selects for presentation to a tag RAM a current address latch and a next address latch which hold addresses captured on an input bus
GB2256512B (en) * 1991-06-04 1995-03-15 Intel Corp Second level cache controller unit and system
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
US5325503A (en) * 1992-02-21 1994-06-28 Compaq Computer Corporation Cache memory system which snoops an operation to a first location in a cache line and does not snoop further operations to locations in the same line
US5778447A (en) * 1992-04-30 1998-07-07 Alcatel Network Systems, Inc. System and method for fast memory access using speculative access in a bus architecture system
US5353415A (en) * 1992-10-02 1994-10-04 Compaq Computer Corporation Method and apparatus for concurrency of bus operations
US5634073A (en) * 1994-10-14 1997-05-27 Compaq Computer Corporation System having a plurality of posting queues associated with different types of write operations for selectively checking one queue based upon type of read operation
US5611071A (en) * 1995-04-19 1997-03-11 Cyrix Corporation Split replacement cycles for sectored cache lines in a 64-bit microprocessor interfaced to a 32-bit bus architecture
US5778438A (en) * 1995-12-06 1998-07-07 Intel Corporation Method and apparatus for maintaining cache coherency in a computer system with a highly pipelined bus and multiple conflicting snoop requests
US5809537A (en) * 1995-12-08 1998-09-15 International Business Machines Corp. Method and system for simultaneous processing of snoop and cache operations
US6065101A (en) * 1997-06-12 2000-05-16 International Business Machines Corporation Pipelined snooping of multiple L1 cache lines

Also Published As

Publication number Publication date
US6438657B1 (en) 2002-08-20
TW382672B (en) 2000-02-21
CA2240351C (en) 2001-10-30
CA2240351A1 (en) 1998-12-12
KR19990006389A (ko) 1999-01-25
US6065101A (en) 2000-05-16

Similar Documents

Publication Publication Date Title
KR100308677B1 (ko) 복수l1캐쉬라인의파이프라인형스누핑
US6115795A (en) Method and apparatus for configurable multiple level cache with coherency in a multiprocessor system
KR100308682B1 (ko) 다중방향연관외부마이크로프로세서캐쉬
EP0734553B1 (en) Split level cache
US5897655A (en) System and method for cache replacement within a cache set based on valid, modified or least recently used status in order of preference
Tendler et al. POWER4 system microarchitecture
US6067616A (en) Branch prediction device with two levels of branch prediction cache
US9372808B2 (en) Deadlock-avoiding coherent system on chip interconnect
US6216200B1 (en) Address queue
US7162613B2 (en) Mechanism for processing speculative LL and SC instructions in a pipelined processor
US5893921A (en) 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
WO2015057846A1 (en) Computer processor employing cache memory with pre-byte valid bits
US5845324A (en) Dual bus network cache controller system having rapid invalidation cycles and reduced latency for cache access
US5835949A (en) Method of identifying and self-modifying code
JPH0659976A (ja) 遅延プッシュをコピー・バック・データ・キャッシュに再ロードする方法
US6665767B1 (en) Programmer initiated cache block operations
US5940877A (en) Cache address generation with and without carry-in
JP3159435B2 (ja) ロード/ロード検出及びリオーダー方法及び装置
KR100308674B1 (ko) 멀티사이클데이터캐쉬판독을위한데이터레지스터
GB2200481A (en) Maintaining coherence between a microprocessor&#39;s integrated cache and external memory
US5905999A (en) Cache sub-array arbitration
US5895486A (en) Method and system for selectively invalidating cache lines during multiple word store operations for memory coherence
US6675287B1 (en) Method and apparatus for store forwarding using a response buffer data path in a write-allocate-configurable microprocessor
JP2001043133A (ja) マルチプロセッサ・システムにおいてライトスルー・ストア・オペレーションでキャッシュ・コヒーレンシを維持するための方法およびシステム
WO1991013402A1 (en) Two-level branch prediction cache

Legal Events

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

Payment date: 20060725

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee