KR101531078B1 - 데이터 처리 시스템 및 데이터 처리 방법 - Google Patents

데이터 처리 시스템 및 데이터 처리 방법 Download PDF

Info

Publication number
KR101531078B1
KR101531078B1 KR1020107029593A KR20107029593A KR101531078B1 KR 101531078 B1 KR101531078 B1 KR 101531078B1 KR 1020107029593 A KR1020107029593 A KR 1020107029593A KR 20107029593 A KR20107029593 A KR 20107029593A KR 101531078 B1 KR101531078 B1 KR 101531078B1
Authority
KR
South Korea
Prior art keywords
entry
cache
store
buffer circuit
error
Prior art date
Application number
KR1020107029593A
Other languages
English (en)
Other versions
KR20110025188A (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 KR20110025188A publication Critical patent/KR20110025188A/ko
Application granted granted Critical
Publication of KR101531078B1 publication Critical patent/KR101531078B1/ko

Links

Images

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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (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

프로세서(16) 및 캐시(40)는 시스템 인터커넥트(12)를 통해 시스템 메모리(13)에 결합된다. 캐시에 결합된 제1 버퍼 회로(44)는 하나 이상의 데이터 워드들을 수신하고, 하나 이상의 엔트리들(46) 각각에 하나 이상의 데이터 워드들을 저장한다. 제1 엔트리의 하나 이상의 데이터 워드들은 에러 없는 수신에 응답해서 캐시에 기록된다. 캐시에 결합된 제2 버퍼 회로(50)는 스토어 요청들을 저장하기 위한 하나 이상의 엔트리들을 갖는다. 각각의 엔트리는 제1 스토어 요청으로부터 형성된 엔트리가 제2 버퍼 회로로부터 시스템 메모리에 기록되는 유효 엔트리인지를 결정하는 연관된 제어 비트 (S)를 갖는다. 하나 이상의 데이터 워드들의 에러 없는 수신을 기반으로, 연관된 제어 비트는 에러 결정을 기반으로 제2 버퍼 회로의 엔트리를 무효화하는 값으로 세팅된다.

Description

데이터 처리 시스템 및 데이터 처리 방법{DATA PROCESSING SYSTEM AND DATA PROCESSING METHOD}
본 발명은 일반적으로 데이터 처리 시스템들에 관한 것으로, 특히, 스토어 할당 캐시 미스에서 에러 복구를 위한 스토어 버퍼 사용에 관한 것이다.
현재 다수의 데이터 처리 시스템들에서, 스토어에 대한 캐시 미스에서 카피백 스토어(copyback stores)를 위해 캐시에서 기록 할당이 지원될 때, 스토어 데이터가 라인필 버퍼(linefill buffer)에 배치되고, 스토어 데이터와 병합될 캐시에 대한 데이터의 라인에 대해 페치가 개시되며, 캐시가 새롭게 변경된 캐시 라인에 의해 갱신된다. 스토어 데이터는 메모리에 기록되지 않는다. 예를 들어, 시스템 에러로 인해, 또는 캐시 라인을 제공하는 메모리로부터 정정 불가능한 메모리 에러로 인해, 캐시 라인을 페칭할 때 에러가 발생하면, 라인필 버퍼의 라인은 타당화(validate)될 수 없고 캐시에 배치될 수 없으며, 고유 스토어 및 임의의 다음 스토어들로부터, 고유 캐시 라인의 메모리로부터의 리턴을 기다리면서 라인필 버퍼로 일시적으로 저장된 동일한 라인까지의 스토어 데이터는 손실될 수 있다. 이러한 시스템들에서, 쉽게 복구될 수 없기 때문에, 이러한 에러들은 상당한 성능 히트들을 야기할 수 있다.
본 발명은, 유사한 참조 부호들이 유사한 소자들을 나타내는 첨부 도면들에 의해 일례로서 설명되며 이들로만 제한되지 않는다. 도면들의 소자들은 편의상 명료하게 도시된 것으로 반듯이 비율적으로 그려지는 것은 아니다.
도 1은 본 발명의 일 실시예에 따른 데이터 처리 시스템을 블록도로 도시한다.
도 2는 본 발명의 일 실시예에 따른, 도 1의 데이터 처리 시스템의 캐시 및 버퍼 회로의 일부를 블록도로 도시한다.
도 3은 본 발명의 일 실시예에 따른, 도 2의 캐시 및 버퍼 회로의 오퍼레이션을 플로우챠트로 도시한다.
도 4 및 도 5는 상이한 일례의 시나리오들에 따른, 도 2의 캐시 및 버퍼 회로 내의 다양한 신호들의 타이밍도들을 도시한다.
도 6 및 도 7은 상이한 일례의 시나리오들에 따른, 도 2의 캐시 및 버퍼 회로의 스토어 버퍼 큐의 일부를 도시한다.
도 8은 본 발명의 일 실시예에 따른, 도 1의 데이터 처리 시스템의 캐시 및 버퍼 회로의 일부를 블록도로 도시한다.
도 9는 일례의 시나리오에 따른, 도 8의 캐시 및 버퍼 회로의 스토어 버퍼 큐의 일부를 도시한다.
데이터 처리 시스템들 내의 캐시 라인 페칭 중에 발생하는 에러들은 성능 및 신뢰성에 유해할 수 있다. 일 실시예에서, 캐시에서 미스되는 논-라이트스루 스토어 액세스(non-writethrough store access)는 캐시에서 미스될 때 다수의 장소들에 저장된다. 예를 들어, 라인필 버퍼 엔트리(또는 라인필 버퍼가 존재하지 않는 경우, 할당된 캐시 엔트리에 직접)에 저장될 뿐만 아니라, 시스템 메모리로의 저장을 위한 시스템 인터커넥트에 배치하기 전에 라이트스루 스토어 액세스들을 버퍼링하는데 통상 사용되는, 스토어 버퍼(SB) 큐에 저장된다. 이러한 방식으로, 캐시에서 미스되는 논-라이트스루 스토어 액세스들로부터의 스토어 데이터는, 캐시에 저장되기 위해 스토어 데이터와 병합되는 대응 캐시 라인 페치 중에 에러가 발생하는 경우에는 손실되지 않는다. 논-라이트스루 스토어 액세스로부터의 스토어 데이터가 조건적 스토어 액세스로서 SB 큐에 저장되기 때문에, 캐시 엔트리 할당을 위한 대응 캐시 라인 페치 중에 임의의 에러가 발생할 때, SB 큐의 엔트리는 조건적 스토어 액세스로부터 무조건적(unconditional) 스토어 액세스로 변환될 수 있으며, 이는 차례로 메모리(13)에 기록된다. 즉, 그 후 라이트스루 스토어 액세스(writethrough store access)로서 처리될 것이다. 일 실시예에서, 이는, 엔트리(유효한 경우, 즉, 1로 세팅된 V 비트를 갖는 경우)가 라이트스루 스토어 액세스(무조건적 스토어 액세스)인지 논-라이트스루 액세스(조건적 스토어 액세스)인지를 나타내는 SB 큐의 각각의 엔트리에 비트(S)를 포함함으로써 달성된다. 또한, 일 실시예에서, 라인필 버퍼의 엔트리들의 수에 따라, 각각의 엔트리에 임의의 수의 S 비트들이 존재할 수 있다. 이러한 방식으로, 향상된 에러 복구가 달성될 수 있어서, 성능이 향상되고 더 신뢰성 있게 된다.
본 명세서에서 사용되는 용어 "버스(bus)"는, 데이터, 어드레스, 제어, 또는 상태 등의 하나 이상의 각종 타입들의 정보를 전송하는데 사용될 수 있는 복수의 신호들 또는 도체들을 나타내는데 사용된다. 본 명세서에 기술된 도체들은 싱글 도체, 복수의 도체들, 단방향 도체들, 또는 양방향 도체들과 관련하여 설명 또는 기술될 수 있다. 그러나, 상이한 실시예들은 도체들의 구현을 변경할 수 있다. 예를 들어, 개별 단방향 도체들은 양방향 도체들 대신 사용될 수 있으며, 그 반대도 성립된다. 또한, 복수의 도체들은 다수의 신호들을 직렬로 또는 시간 다중화 방식으로 전송하는 싱글 도체로 대체될 수 있다. 유사하게, 다수의 신호들을 캐리하는 싱글 도체들은 상기 신호들의 부집합들을 캐리하는 각종 상이한 도체들로 분리될 수 있다. 따라서, 신호들을 전송하기 위한 다수의 옵션들이 존재한다.
용어들 "어서트(assert)" 또는 "세팅(set)" 및 "부정(negate)"(또는 "디어서트(deassert)" 또는 "클리어(clear)")는, 각각, 신호의 렌더링, 상태 비트, 또는 논리적 참 또는 논리적 거짓 상태로의 유사 장치들을 나타낼 때 본 명세서에서 사용된다. 논리적 참 상태가 논리 레벨 1이면, 논리적 거짓 상태는 논리 레벨 0이다. 또한, 논리적 참 상태가 논리 레벨 0이면, 논리적 거짓 상태는 논리 레벨 1이다. 본 명세서에 기술된 각각의 신호는 포지티브 또는 네가티브 논리로서 설계될 수 있는데, 네가티브 논리는 신호 이름 위에 바(bar)로서 표시되거나 이름 뒤에 '*'로서 표시될 수 있다. 네가티브 논리 신호의 경우에, 논리적 참 상태가 논리 레벨 0에 대응하는 경우, 신호는 액티브 로우(active low)이다. 포지티브 논리 신호의 경우에, 논리적 참 상태가 논리 레벨 1에 대응하는 경우, 신호는 액티브 하이(active high)이다. 본 명세서에 기술된 신호들 중 임의의 신호가 네가티브 또는 포지티브 논리 신호들로 설계될 수 있음을 주지하라. 따라서, 다른 실시예들에서, 포지티브 논리 신호들로서 기술된 신호들은 네가티브 논리 신호들로서 구현될 수 있으며, 네가티브 논리 신호들로서 기술된 신호들은 포지티브 논리 신호들로서 구현될 수 있다.
버스 도체들 또는 값의 비트 로케이션들을 나타내는데 '[]'이 본 명세서에서 사용된다. 예를 들어, "버스 60 [7:0]" 또는 "버스 60의 도체들 [7:0]"은 버스 60의 8개의 하위 순서 도체들을 나타내고, "어드레스 비트들 [7:0]" 또는 "ADDRESS [7:0]"은 어드레스 값의 8개의 하위 순서 비트들을 나타내고, "신호 [0:1]"은 신호의 2개의 개별 값들(예를 들어, 신호 [0] 및 신호 [1])을 나타낸다. 숫자 앞의 심볼 "$"는, 숫자가 16진법(hexadecimal or base sixteen form)으로 표시됨을 나타낸다. 숫자 앞의 심볼 "%"는, 숫자가 2진법(binary or base two form)으로 표시됨을 나타낸다.
도 1은 스토어 할당 캐시 미스에서 에러 복구를 위해 스토어 버퍼를 사용하는 데이터 처리 시스템(10)을 도시한다. 시스템 인터커넥트(12)는 데이터 처리 시스템(10) 내의 데이터를 통신하도록 동작한다. 일 실시예에서, 시스템 인터커넥트(12)는 다중-비트 시스템 버스로서 구현될 수 있다. 대안으로, 크로스-바 스위치(cross-bar switch)로서, 또는 포인트-투-포인트 또는 다른 인터커넥션 메카니즘으로서 구현될 수 있다. 시스템 메모리(13)는 데이터 처리 시스템(10)의 정보를 저장하기 위해 시스템 인터커넥트(12)에 연결된다. 버스 인터페이스 유닛(BIU)(14)은 시스템 인터커넥트(12)에 연결된 제1 입력/출력을 갖는다. 데이터 처리 시스템(10)은 또한 하나 이상의 실행 유닛들(16), 명령 디코더(18), 명령 페치 유닛(20), 레지스터 파일들(22), 글로벌 제어(24), 예외 로직(26), 로드/스토어 유닛(28), 및 캐시 및 버퍼 회로(30)를 포함한다. BIU(14)의 제2 입력/출력은 명령 페치 유닛(20)의 제1 입력/출력에 연결된다. BIU(14)의 출력은 글로벌 제어(24)의 제1 입력에 연결된다. BIU(14)의 제3 입력/출력은 로드/스토어 유닛(28)의 제1 입력/출력에 연결된다. BIU(14)의 제4 입력/출력은 캐시(30)의 제1 입력/출력에 연결된다. 명령 페치 유닛(20)의 제2 입력/출력은 글로벌 제어(24)의 제1 입력/출력에 연결된다. 명령 페치 유닛(20)의 제1 출력은 글로벌 제어(24)의 제2 입력에 연결된다. 명령 페치 유닛(20)의 제2 출력은 명령 디코더(18)의 입력에 연결된다. 명령 디코더(18)의 입력/출력은 글로벌 제어(24)의 제2 입력/출력에 연결된다. 명령 디코더(18)의 제1 출력은 글로벌 제어(24)의 제3 입력에 연결된다. 실행 유닛들(16)의 출력은 글로벌 제어(24)의 제4 입력에 연결된다. 명령 디코더(18)의 제2 출력은 실행 유닛들(16)의 제1 입력에 연결된다. 글로벌 제어(24)의 제3 입력/출력은 실행 유닛들(16)의 제1 입력/출력에 연결된다. 실행 유닛들(16)의 제2 입력/출력은 레지스터 파일들(22)의 제1 입력/출력에 연결된다. 글로벌 제어(24)의 제4 입력/출력은 예외 로직(26)의 입력/출력에 연결된다. 예외 로직(26)은 또한 예외 요청들을 수신하기 위한 입력을 갖는다. 글로벌 제어(24)의 제5 입력/출력은 캐시(30)의 제2 입력/출력에 연결된다. 글로벌 제어(24)의 제6 입력/출력은 로드/스토어 유닛(28)의 제2 입력/출력에 연결된다. 로드/스토어 유닛(28)의 제3 입력/출력은 레지스터 파일들(22)의 제2 입력/출력에 연결된다. 로드/스토어 유닛(28)의 제4 입력/출력은 캐시(30)의 제3 입력/출력에 연결된다. 글로벌 제어(24)의 제7 입력/출력은 BIU(14)의 제5 입력/출력에 연결된다. 데이터 처리 시스템(10) 내의 제어 회로의 로케이션은 특정하게 구현됨을 알 것이다. 예를 들어, 각종 제어 회로는, 글로벌 제어(24) 보다 더 제한된 제어를 위해 명령 페치 유닛(20), 명령 디코더(18), 실행 유닛들(16) 및 레지스터 파일들(22)의 각각의 기능 유닛들 내에 위치할 것이다. 다수의 비트 도체들인 도시된 도체들 및 버스들은 도체 또는 버스 사이의 '/'로 표시된다.
동작시, 글로벌 제어(24), 명령 페치 유닛(20), 명령 디코더(18), 실행 유닛들(16), 예외 로직(26), 레지스터 파일들(22), 로드/스토어 유닛(28), BIU(14), 시스템 인터커넥트(12), 및 메모리(13)는 모두 본 기술 분야에 공지된 바와 같이 동작하며, 캐시 및 버퍼 회로(30)의 오퍼레이션을 기술하는데 필요한 정도를 제외하고 본 명세서에는 더 상세히 기술되지 않을 것이다. 캐시 및 버퍼 회로(30)의 세부 사항들은 도 2 내지 도 9와 관련하여 제공될 것이다. 시스템(10)의 전체 유닛들은 싱글 집적 회로에 위치할 수도 있고, 복수의 집적 회로들에 위치할 수도 있음을 주지하라. 또한, 캐시 및 버퍼 회로(30) 등의 캐시 및 버퍼 회로를 포함하는 다양한 상이한 아키텍처들이 사용될 수 있음을 주지하라.
도 2는 본 발명의 일 실시예에 따른, 데이터 처리 시스템(10)의 캐시 및 버퍼 회로(30)의 일부를 블록도로 도시한다. 캐시 및 버퍼 회로(30)는 캐시(40), 라인필 버퍼(44)(또한 제1 버퍼 또는 리로드 버퍼라고도 함), 및 스토어 버퍼(SB) 회로(50)를 포함한다. 캐시(40)는 캐시 제어 회로(42)를 포함하고, 로드/스토어 유닛(28), SB 회로(50), 라인필 버퍼(44), 및 BIU(14)에 양방향으로 연결된다. 모든 입력들 및 출력들이 캐시(40)로 향하든지 캐시(40)로부터 유래된 것으로 도시되었지만, 이들 중 일부 또는 전부는 캐시(40) 내의 캐시 제어 회로(42)로 직접 향하든지 또는 상기 회로로부터 유래될 수 있다.
캐시(40)는 로드/스토어 유닛(28)으로부터의 로드 및 스토어 요청들을 수신한다. 따라서, 캐시(40)는 도체들(56)을 통해 요청 타입(예를 들어, 스토어 또는 로드 타입을 나타냄) 및 대응 요청 어드레스를 수신한다. 캐시(40)는 또한 도체들(58)을 통해 각각의 로드 및 스토어 요청에 대응하는 라이트스루(WT) 속성 및 기록 할당(WA) 속성을 수신한다. 다른 신호들은 양방향 도체들(60)을 통해 로드/스토어 유닛(28) 및 캐시(40) 사이에서 통신될 수 있다. 예를 들어, 데이터는 캐시(40)의 데이터 포트를 통해 통신될 수 있다. 따라서, 스토어 요청과 연관된 스토어 데이터는 도체들(60)을 경유해서 데이터 포트를 통해 캐시(40)에 제공될 수 있다.
캐시(40)는 로드/스토어 유닛(28)(예를 들어, 도체들(60)을 통해 수신될 수 있음)으로부터의 스토어 데이터를 라인필 버퍼(44)에 제공하고, 도체들(66)을 통해 라인필 버퍼(44)로부터 캐시 라인 데이터를 수신한다. 따라서, 도체들(66)이 캐시(40)의 데이터 포트에 결합될 수 있음을 주지하라. 또한, 필요할 때, 도체들(66)을 통해 캐시(40) 및 라인필 버퍼(44) 사이에서 다른 신호들이 통신될 수 있다. 캐시(40)는 또한 도체들(64)을 통해 BIU(14)(시스템 인터커넥트(12)로부터 BIU(14)로 제공됨)로부터 판독 데이터를 수신하고, 도체들(68)을 통해 BIU(14)(시스템 인터커넥트(12)로부터 상기 신호들을 수신함)로부터 판독 준비 신호, 판독 에러 신호, 및 라인필 종료 신호를 수신한다. 캐시 제어 회로(42)는, 예를 들어, 필요한 경우, 도체들(60)을 통해 로드/스토어 유닛(28)으로 다시 판독 데이터를 제공할 수 있다. 판독 데이터는 또한 도체들(64)을 통해 BIU(14)로부터 라인필 버퍼(44)에 제공된다.
캐시(40)는 스토어 버퍼(SB) 큐(54)의 엔트리에 저장하기 위해 메모리(13)에 기록되는 스토어 데이터를 SB 회로(50)에 제공한다. SB 회로(50)는 또한 SB 큐(54)의 각각의 엔트리에 도체들(82)을 통해 결합된 스토어 버퍼(SB) 제어 회로(52)를 포함해서, SB 제어 회로(52)가, 필요한 경우, 선택된 엔트리의 적합한 필드들을 갱신할 수 있으며, BIU(14)의 다음 엔트리를 출력할 수 있다. 모든 입력들 및 출력들이 SB 회로(50)로 들어가거나 SB 회로(50)로부터 유래된 것으로 도시되지만, 이들 중 일부 또는 전부는 SB 제어 회로(52) 또는 SB 큐(54)에 직접 입력되거나 SB 제어 회로(52) 또는 SB 큐(54)로부터 직접 출력될 수 있다. 캐시(40)는 도체(72)를 통해 SB 회로(50)에 스토어 할당 에러 신호를 제공하며, 도체(74)를 통해 SB 회로(50)에 스토어 할당 종료 신호를 제공한다. 필요한 경우, 도체들(70)을 통해 캐시(40) 및 SB 회로(50) 사이에서 다른 신호들이 통신될 수 있다. SB 회로(50)는, 후에 BIU(14)에 의해 시스템 인터커넥트(12)에 통신될 수 있는 기록 어드레스, 기록 데이터, 기록 요청, 및 기록 제어를 도체들(76)을 통해 BIU(14)에 제공한다. SB 회로(50)는 또한 BIU(14)에 의해 시스템 인터커넥트(12)로부터 통신될 수 있는 기록 준비 신호를 도체(78)를 통해 BIU(14)로부터 수신한다. 필요한 경우, 도체들(80)을 통해 BIU(14)를 경유해서 시스템 인터커넥트(12)(및, 예를 들어, 메모리(13)) 및 SB 회로(50) 사이에서 다른 신호들이 통신될 수 있다.
본 실시예에서, 라인필 버퍼(44)는, 싱글 엔트리, 엔트리(46)를 타당화(validation)할 때 캐시(40)에 저장되는 새로운 캐시 라인에 대응하는 엔트리(46)를 포함한다. 엔트리(46)는, 캐시 라인에 대한 어드레스, 캐시 라인 데이터의 4개의 더블워드들(DW0, DW1, DW2, DW3), 유효 플래그, 및 병합 플래그들을 포함한다. 본 실시예에서, 하나의 워드는 4 바이트들을 포함하고, 하나의 더블워드는 8개의 바이트들을 포함한다. 그러나, 다른 실시예들에서, 워드는 2 바이트들로, 더블워드는 4 바이트들로 정의될 수도 있다. 또한, 다른 실시예들에서, 라인필 버퍼(44)는 임의의 수의 엔트리들을 포함할 수 있으며, 각각의 엔트리는 임의의 수의 더블워드들을 포함할 수 있다. 본 실시예에서, 병합 플래그들은 라인필 버퍼 엔트리의 캐시 라인 필 시에 어떤 바이트들이 메모리(13)로부터 페치된 값들로 갱신될 것인지를 나타내기 위해 DW0-3의 모든 바이트에 대한 플래그를 포함한다. 이러한 병합 플래그들은 메모리(13)로부터 페치된 총 캐시 라인 데이터와 로드/스토어 유닛(28)으로부터의 스토어 요청으로부터의 라인필 버퍼 엔트리에 기록된 스토어 데이터를 병합하는데 사용된다. 유효 플래그는 엔트리가 유효한지의 여부를 나타낸다. 타당할 때(엔트리(46)의 V가 세팅될 때, 즉, V=1일 때), 엔트리(46)의 캐시 라인은 캐시(40)에 저장될 수 있다.
SB 큐(54)는 원형 큐로서 하드웨어로 구현될 수 있다. SB 큐(54)의 각각의 엔트리는, 유효 비트(V), 스토어 타입 비트(S), 어드레스 필드, 데이터 필드, 및 연관된 상태 정보를 포함한다. 본 실시예에서, 각각의 데이터 필드는 더블워드이고, 상태 정보는 데이터 필드 내에 있는 스토어 데이터의 크기 정보를 포함한다. 일 실시예에서, SB 큐(54)의 엔트리의 S 비트는, 엔트리가 라이트스루 스토어 액세스(즉, 라이트스루 엔트리)에 대응하는지 또는 카피백 스토어 액세스(즉, 카피백 엔트리)에 대응하는지를 나타낸다. 본 실시예에서, 라인필 버퍼(44)에 오직 싱글 엔트리만 존재하기 때문에, 각각의 엔트리는 싱글 S 비트를 포함한다. 그러나, 라인필 버퍼(44)의 라인필 버퍼 엔트리들의 수에 따라, 1 보다 많은 S 비트가 SB 큐(54)의 각각의 엔트리에 포함될 수도 있음을 주지해야 하며, 이는 더 상세히 후술될 것이다.
추가 회로가 캐시 및 버퍼 회로(30)에 포함될 수도 있음을 주지해야 하지만, 도 2에서는 설명을 복잡하게 하지 않기 위해 추가 회로가 제외되었다. 예를 들어, 캐시 및 버퍼 회로(30)는 또한 본 기술 분야에 공지된 바와 같이 동작하는 카피백 버퍼(도시되지 않음)를 포함할 수 있다. 또한, 도시된 신호들 외의 다른 신호들이 또한 캐시 및 버퍼 회로(30)에 존재할 수도 있다.
동작시, 캐시 제어 회로(42)는 로드/스토어 유닛(28)으로부터 로드 및 스토어 요청들을 수신한다. 스토어 요청들 및 스토어 액세스들(즉, 기록 액세스들)만이 본 명세서에서 기술될 것이며, 로드 요청들의 프로세싱은 본 기술 분야에 공지된 바와 같이 발생할 수 있음을 주지하자. 각각의 스토어 요청은 대응 스토어 어드레스(도체(56)에 의해 제공됨) 및 연관된 속성들을 가지며, 스토어 액세스 또는 기록 액세스로서 언급될 수도 있다. 본 명세서에 기술될 연관된 속성들은 WT 및 WA 속성들이다. 이러한 속성들은, 본 기술 분야에 공지된 바와 같이, 각종 상이한 방법들로 각각의 스토어 요청을 위해 제공될 수 있다. 예를 들어, 각각의 스토어 요청에 대해 로드/스토어 유닛(28)으로부터 제공될 수 있다. 대안으로, 메모리 관리 유닛(MMU)(도시되지 않음)에 의해 제공될 수 있으며, 여기서, 각각의 메모리 페이지는 특정 집합의 속성들을 갖는다. 이러한 경우에, 스토어 요청이 액세스중인 메모리 페이지는 WT 및 WA의 값들을 나타낸다. 또 다른 일례에서, 캐시 제어 회로(42) 자체는 WT 및 WA 속성들을 생성 또는 제공할 수 있다. 또한, 일례에서, 각각의 스토어 요청 또는 스토어 액세스는 자신의 속성 스페시파이어들(specifiers)을 가질 수 있다.
일 실시예에서, WT 속성이 값 1을 가질 때, 스토어 액세스는 라이트스루 스토어 액세스(메모리(13)로의 라이트스루가 실행되는 스토어 액세스)이며, WT 속성이 값 0을 가질 때, 스토어 액세스는 카피백 스토어 액세스 또는 논-라이트스루 스토어 액세스(즉, 라이트스루가 실행되지 않는 스토어 액세스)이다. 더 상세히 후술되는 바와 같이, 임의의 라이트스루 스토어 액세스들은 메모리(13)로부터 기록된다. 이는 SB 큐(54)의 엔트리로의 저장을 위해 SB 회로(50)에 라이트스루 스토어 액세스를 제공함으로써 실행된다. SB 큐(54)는, 예를 들어, 큐 또는 원형 큐(즉, 원형 버퍼)로서 구현될 수 있으며, 가장 먼저 저장된 엔트리는 데이터를 (BIU(14)를 통해) 메모리(13)에 기록하라는 각각의 스토어 버퍼 요청을 제공받는다. 라이트스루 스토어 액세스(WT=1인 스토어 액세스)가 SB 큐(54)의 엔트리에 저장될 때, 대응 V 비트는 유효 엔트리임을 나타내기 위해 1로 세팅되고, 대응 S 비트는 라이트스루 스토어 액세스임을 나타내기 위해 0으로 클리어되어서 무조건 메모리(13)에 기록된다.
일 실시예에서, WA 속성이 1의 값을 가질 때, 스토어 액세스가 캐시(40)에서 미스될 때 캐시(40)로의 기록 할당이 실행된다. 즉, 스토어 액세스의 어드레스에 대응하는 캐시(40)에서 새로운 캐시 라인이 할당되며, 캐시 라인은 메모리(13)로부터 페치되어서 스토어 액세스의 스토어 데이터와 병합되며, 새로운 병합 캐시 라인이 캐시(40)에 배치된다. WA 속성이 0의 값을 가질 때, 스토어 액세스를 위해, 캐시(40)로의 어떠한 기록 할당도 실행되지 않는다. 스토어 액세스가 기록 할당의 스토어 액세스(WA=1인 스토어 액세스)이지만 라이트스루 스토어 액세스가 아닐 때(WT=0), 캐시(40)에서 미스될 때, 스토어 액세스는 SB 큐(54)의 엔트리 뿐만 아니라 라인필 버퍼(44)의 엔트리(예를 들어, 엔트리(46))에 저장된다. 이러한 경우에, SB 큐(54)의 엔트리의 대응 V 비트는 유효 엔트리임을 나타내기 위해 1로 세팅되고, 대응 S 비트는 라이트스루 스토어 액세스가 아님(즉, 카피백 스토어 액세스임)을 나타내기 위해 1로 세팅되어서, 라인필 버퍼(44)의 엔트리(46)로의 대응 캐시 라인 페치가 에러를 야기하는지의 여부에 따라, 조건적으로 메모리(13)에 기록된다. 즉, 스토어 액세스가 캐시(40)에서 미스될 때, 캐시 라인은 메모리로부터 라인필 버퍼(44)(예를 들어, 엔트리(46))로 페치되어서 스토어 액세스의 스토어 데이터와 병합되고, 엔트리(46)로의 대응 캐시 라인 페치가 성공적으로(즉, 에러 없이) 완료되면, SB 큐(54)의 논-라이트스루 스토어 액세스의 대응 엔트리는 대응 S 및 V 비트들을 클리어함으로써 플러시(즉, 무효화)된다. (엔트리(46)의 로딩이 성공적일 때, 타당해지며, 병합 플래그들의 세팅들을 기반으로 엔트리(46)로 병합된 스토어 액세스에 대응하는 스토어 데이터를 포함해서, 엔트리(46)의 캐시 라인은 캐시(40)에 저장되며, 이후의 시간에, 메모리(13)와 코히런트하게 됨을 주지하라.)
그러나, 엔트리(46)로의 대응 캐시 라인 페치가 성공적으로 완료되지 않으면(예를 들어, 메모리(13)로부터의 라인 페치 중에 에러가 야기되면), SB 큐(54)의 논-라이트스루 스토어 액세스의 대응 엔트리가 S 비트를 0으로 클리어하고 V 비트를 1로 세팅되게 함으로써 라이트스루 스토어 액세스로 변환된다. 이러한 방식으로, 논-라이트스루 스토어 액세스의 대응 엔트리는 마치 라이트스루 스토어 액세스인 것처럼 무조건적이 되어서, 이 스토어 액세스가 스토어 데이터를 손실되게 하는 대신 메모리(13)에 기록되게 한다. 즉, 엔트리(46)로의 캐시 라인 페치가 성공적으로 완료되지 않으면, 스토어 데이터(48) 등의 페치된 캐시 라인과 병합된 임의의 새로운 스토어 데이터를 포함해서, 어떠한 캐시 라인(즉, 어떠한 엔트리(46))도 캐시(40)에 다시 기록되지 않아서 손실된다. 따라서, SB 큐(54)가 논-라이트스루 스토어 액세스(즉, 카피백 스토어 액세스) 뿐만 아니라 라이트스루 스토어 액세스를 저장하는데 사용될 수 있으며, 라이트스루 스토어 액세스는 무조건 메모리(13)에 기록되고, 논-라이트스루 스토어 액세스는, 라인필 버퍼(44)로의 캐시 라인 페치의 결과를 기반으로, 조건적으로 메모리(13)에 기록된다. 즉, 논-라이트스루 스토어 액세스는, 일시적으로 버퍼링된 논-라이트스루 스토어 버퍼 엔트리를 생성하기 위해 라이트스루 스토어(예를 들어, SB 큐(54))를 실행하는데 사용되는 스토어 버퍼의 엔트리에서 일시적으로 버퍼링될 수 있다.
SB 큐(54)가 라이트스루 스토어를 실행하기 위해 통상 사용됨을 주지하라; 그러나, 본 발명의 일 실시예에서, 동일한 SB 큐(54)가 논-라이트스루 스토어 액세스들을 일시적으로 버퍼링 또는 저장하기 위해 사용되며, 엔트리의 S 비트는 라이트스루 스토어 액세스 및 논-라이트스루 스토어 액세스를 구별하는데 사용될 수 있다. 또한, 다른 실시예에서, 라인필 버퍼(44)가 존재하지 않을 수도 있음을 주지하라. 이러한 경우에, 기록 할당(WA=1)의 스토어 액세스의 새로운 스토어 데이터는, 캐시 미스일 때, 캐시(40)의 할당된 엔트리(및 SB 큐(54)의 엔트리)에 직접 기록되며, 할당된 엔트리에 대한 페칭 캐시 라인은 새로운 데이터와 병합되어 캐시(40)의 할당된 엔트리에 직접 저장된다. 이러한 경우에, 캐시(40)의 각각의 엔트리는 병합 플래그들을 포함할 수 있으며, 또는 병합 플래그들은 캐시 제어 회로(42)의 엔트리와 무관하게 저장될 수 있다. 따라서, 본 실시예의 경우, 엔트리(46) 및 라인필 버퍼(44)와 관련해서 상술된 설명들은 새로운 스토어 데이터를 캐시(40)에 직접 기록하는 경우에 적용되며, SB 큐(54)의 논-라이트스루 스토어 액세스들은 캐시(40)로의 직접 캐시 라인 페치의 성공적인 완료 여부를 기반으로 조건적으로 메모리(13)에 기록된다. 또한, 라인필 버퍼가 존재하는지의 여부와 무관하게, 본 기술 분야에 공지된 임의의 기록 할당 방법이 할당을 위한 캐시(40)의 대체 엔트리를 식별하고 대체를 위해 식별된 엔트리의 현재 데이터를 메모리와 코히런트하게 하는데 사용될 수 있음을 주지하라.
도 2의 오퍼레이션은 이하의 도 3 내지 도 6을 참조해서 더 상세히 기술될 것이다. 또한, 도 2의 실시예에서, DW1의 최종 2개의 바이트들에 저장된 스토어 데이터(48)는 로드/스토어 유닛(28)으로부터 캐시 제어 회로에 의해 수신된 스토어 요청에 의해 제공된 스토어 데이터에 대응하며, 일례로서 제공된다.
도 3은 본 발명의 일 실시예에 따른, 캐시(40)의 관점에서 본 캐시 및 버퍼 회로(30)의 오퍼레이션을 플로우챠트로 도시한다. 흐름(100)은 개시(102)에서 시작하여, 블록(104)로 진행해서, 캐시(40)가 스토어 요청(스토어 액세스 요청 또는 스토어 액세스라고도 할 수 있음)을 수신한다. 이 스토어 요청은 본 기술 분야에 공지된 바와 같이 동작하는 로드/스토어 유닛(28)으로부터 수신될 수 있다. 흐름은 블록(106)으로 진행해서, 스토어 요청의 속성들이 검사된다. 예를 들어, 일 실시예에서, 스토어 요청의 WT 및 WA 속성들은 둘 다 검사된다. 흐름은 결정 블록(108)으로 진행해서, WT=0인지가 결정된다. WT≠0(즉, WT=1)이면, 스토어 요청은 라이트스루 요청이며, 흐름은 블록(110)으로 진행해서, 스토어 요청의 스토어 어드레스 및 스토어 데이터가 SB 큐(54)의 엔트리에 저장되고, 해당 엔트리에 대해, 대응 S 비트는 클리어되고(S=0) 대응 V 비트가 세팅(V=1)된다. 일 실시예에서, 스토어 요청은 SB 제어 회로(52)에 의해 선택된 SB 큐(54)의 다음 엔트리(일 실시예에서, 최신 엔트리에 이은 엔트리에 대응함)에 저장된다. 따라서, 라이트스루 스토어 요청(즉, 라이트스루 스토어 액세스)은 SB 버퍼 회로(50)에 저장된다. 그 후 흐름은 결정 블록(112)으로 진행해서, 스토어 요청들이 WA=1인 캐시 미스를 야기하는지가 결정된다. 그렇다면, 흐름은 블록(116)으로 진행해서, 오퍼레이션이 계속해서 캐시 미스 처리를 행하고, 흐름은 종료(132)로 진행한다. 결정 블록(112)에서, 스토어 요청이 WA=1인 캐시 미스를 야기하지 않는다고 결정되면, 흐름은 결정 블록(114)으로 진행해서, 스토어 요청이 캐시 히트를 야기하는지가 결정된다. 그렇다면, 흐름은 블록(118)으로 진행해서, 캐시(40)가 스토어 요청으로 갱신되고, 그 후 흐름은 종료(132)로 진행한다. 캐시 히트를 야기하지 않으면, 흐름은 종료(132)로 진행한다. 따라서, 스토어 요청이 캐시 미스를 야기하지만 WA=0이면, 캐시 기록 할당이 실행되지 않으며, 캐시(40)는 그 상태 그대로이다.
일 실시예에서, WA=1의 캐시 미스 처리는, 캐시(40)로의 기록 할당을 실행하는 것을 포함한다. 기록 할당 중에, 캐시 제어 회로(42)는 대체될 캐시(40)의 엔트리를 선택하기 위해 대체 알고리즘을 사용한다(임의의 공지된 대체 알고리즘, 예를 들어, 적어도 최신에 사용된 대체 알고리즘 또는 라운드 로빈(round robin)이 사용될 수 있음). 선택된 엔트리의 데이터가 오염되어 있으면(즉, 변경되어서 메모리(13)에 저장된 데이터와 상이할 때), BIU(14)를 통해 메모리(13)에 기록되거나 플러싱(flushed)된다. 일 실시예에서, BIU(14)에 제공되기 전에 먼저 버퍼(예를 들어, 카피백 버퍼)에 저장된다. 이러한 방식으로, 메모리(13)는 이 엔트리에 대해 코히런트하게 되며, 플러싱하는 임의의 공지된 방법이 사용될 수 있다. 데이터의 일부 또는 전부가 선택된 엔트리로부터 플러싱된 후, 필요하면, 캐시(40)에서 미스된 새로운 스토어 요청이 선택된 엔트리에 저장될 수 있다. 일 실시예에서, 스토어 요청과 연관된 스토어 데이터는 라인필 버퍼(44)의 엔트리(46)에 저장되고, 새로운 스토어 데이터(48)는 DW1의 제2 2개의 바이트들에 위치한다. 또한, 메모리(13)로부터의 캐시 라인의 데이터의 라인에 대한 페치가 개시되며, 병합 플래그들이 메모리로부터 페치된 캐시 라인 데이터와 스토어 요청으로부터의 새로운 스토어 데이터(48)를 적합하게 병합하는데 사용된다. 즉, 새로운 캐시 라인이 메모리(13)로부터 페치될 때, 메모리(13)로부터 페치된 새로운 캐시 라인의 오직 DW0, DW1의 제1 2 바이트들, DW2, 및 DW3이 엔트리(46)에 저장되어서, 새로운 데이터(48)가 겹쳐 쓰기 되지 않는다. 라인필 버퍼 엔트리를 채울 때 에러가 발생하지 않는다고 가정하면, 엔트리(46)는 타당하게 되며(V가 1로 세팅됨) 캐시(40)의 선택된 엔트리에 저장될 수 있어서, 기록 할당이 완료된다. 엔트리(46)의 채우기의 완료는, BIU(14)로부터 캐시 제어 회로(42)에 의해 수신된 라인필 종료 신호의 어서트(assert)를 통해 나타나고, 에러 없음 표시는, BIU(14)로부터 캐시 제어 회로(42)에 의해 수신된 판독 에러 신호의 부정(negation)을 통해 나타남을 주지하라.
다른 실시예에서, 데이터의 일부 또는 전부가 캐시(40)의 선택된 엔트리로부터 플러싱된 후에, 필요한 경우, 캐시(40)에서 미스된 새로운 스토어 요청이 라인필 버퍼(존재하지 않을 수도 있음)에 먼저 저장되는 대신 선택된 엔트리에 직접 저장될 수 있다. 이러한 다른 실시예에서, 스토어 요청과 연관된 스토어 데이터는 대체를 위해 식별된 캐시(40)의 엔트리에 저장되며, 새로운 스토어 데이터는 본 일례의 경우 DW1의 제2 2 바이트들에 여전히 위치하게 된다. 또한, 메모리(13)로부터의 캐시 라인의 데이터의 라인에 대한 페치가 개시되며, 병합 플래그들은 메모리로부터 캐시(40)의 식별된 대체 엔트리에 직접 페치된 캐시 라인과 스토어 요청으로부터의 새로운 스토어 데이터를 적합하게 병합하는데 사용된다. 또한, 캐시(40)의 식별된 엔트리를 채울 때 에러가 발생하지 않는다고 가정하면, 새로운 값이 메모리(13)의 값과 상이하기 때문에, 캐시(40)의 식별된 엔트리는 타당해지고(대응 V 비트가 1로 세팅됨) 오염되거나 변경된 것으로 마킹된다.
캐시 미스 처리에 대한 캐시 라인 페치 중에 에러가 발생하면, 엔트리(46) 또는 캐시(40)의 식별된 엔트리는 타당하게 되지 않음을 주지하라. 그러나, 스토어 버퍼 회로(50)에 저장되었기 때문에(블록(110)), 새로운 스토어 데이터는 손실되지 않으며, 조건적 상태(S=1)가 무조건적 상태(S=0)로 변경되어, 메모리(13)에 무조건적으로 기록된다.
스토어 요청으로 캐시(40)를 갱신하는 것(블록(118))은 캐시 히트를 야기한 캐시(40)의 기존 엔트리에 새로운 스토어 데이터를 기록하는 것을 포함할 수 있다. 또한, 적합한 캐시 엔트리 상태 정보가 갱신될 수 있다. 이러한 캐시 갱신을 실행하는 임의의 공지된 방법이 사용될 수 있다.
결정 블록(108)으로 돌아가서, 스토어 요청에 대해 WT=0 이면(즉, 스토어 요청이 논-라이트스루 스토어 요청이면), 흐름은 결정 블록(120)으로 진행해서, 스토어 요청이 캐시 미스를 야기하는지가 결정된다. 그렇지 않으면(즉, 스토어 요청이 캐시 히트를 야기하면), 흐름은 블록(118)으로 진행해서, 캐시(40)는 스토어 요청으로 갱신된다. 캐시 미스를 야기하면, 흐름은 결정 블록(122)으로 진행해서, WA=1인지의 여부가 결정된다. 그렇다면(스토어 요청이 기록 할당 스토어 액세스임을 나타내면), 흐름은 블록(124)으로 진행해서, 스토어 요청의 스토어 어드레스 및 스토어 데이터가 SB 큐(54)의 엔트리에 저장되고, 해당 엔트리에 대해, 대응 S 비트 및 V 비트가 세팅된다(S=1, V=1). 일 실시예에서, 스토어 요청은 SB 제어 회로(52)에 의해 선택된 SB 큐(54)의 다음 엔트리(일 실시예에서, 최신 엔트리에 이은 엔트리에 대응함)에 저장된다. 따라서, 논-라이트스루 스토어 요청(즉, 논-라이트스루 스토어 액세스)이 라이트스루 스토어 요청들을 저장하는데 통상 사용되는 SB 버퍼 회로(50)에 저장된다. 상술된 바와 같이, S 및 V 비트들을 모두 갖는 SB 큐(54)에 저장된 스토어 요청은, 스토어 요청의 기록 할당의 캐시 라인 페치가 성공적으로 완료되는지의 여부에 따라, 메모리(13)에 조건적으로 저장된다. 그러나, S 비트가 클리어되는 상태로 SB 큐(54)에 저장되는, 라이트스루 스토어 요청의 경우에, 스토어 요청은 무조건 메모리(13)에 저장된다.
블록(124) 후에, 흐름은 블록(126)으로 진행해서, 블록(116)과 관련해서 기술된 캐시 미스 처리와 유사하게, 캐시 미스 처리가 계속된다. 그러나, 블록(126)의 캐시 미스 처리는 엔트리(46)로의(또는 라인필 버퍼가 사용되지 않는 경우, 대체를 위해 식별된 캐시(40)의 엔트리로 직접) 캐시 라인 페치를 위한 추가 에러 처리를 포함한다. 즉, 상술된 바와 같이, 엔트리(46)로의 캐시 라인 페치의 완료는 라인필 종료 신호의 어서트를 통해 나타날 수 있으며, 캐시 라인 페치의 에러는 판독 에러 신호의 어서트를 통해 나타날 수 있다. 이러한 방식으로, 캐시 제어 회로(42)는 캐시 라인 페치가 종료될 때를 인식하며, 페치가 성공적이었는지(에러 없이 완전히 완료되었는지) 또는 성공적이지 않은지(에러가 있는지)의 여부를 인식한다. 그 후, 캐시 제어 회로(42)는, 판독 에러 신호 및 라인필 종료 신호를 기반으로, 스토어 할당 에러 신호 및 스토어 할당 종료 신호를 각각 생성할 수 있으며, 상기 신호들은 SB 제어 회로(52)에 제공된다. 캐시 라인 페치 중에 에러가 발생할 때, 엔트리(46)(또는 대체를 위해 식별된 캐시(40)의 엔트리)는 타당하게 되지 않는데, 즉, 대응 V 비트는 클리어된다(V=0). 또한, SB 제어 회로(52)가 (캐시 제어 회로(42)에 의해 제공된 스토어 할당 에러 신호의 어서트를 통해) 캐시 라인 페치 중에 에러가 발생했음을 알 때, SB 제어 회로(52)는 임의의 어서트된 S 비트들을 클리어해서, 논-라이트스루 스토어 액세스로서 나타내기 위해 유효(V=1)한 것으로 마킹되었지만 아직 '1'로 세팅된 S 비트를 갖는 임의의 엔트리는 메모리(13)에 기록될 유효 라이트스루 스토어 액세스로 변환된다.
다시 결정 블록(122)으로 돌아가서, WA≠1이면(즉, WA=0, 기록 할당이 실행되지 않음을 나타내면), 흐름은 블록(128)으로 진행해서, 스토어 요청에 대해 WT=0이더라도(결정 블록(108)에서 다시 결정됨), 스토어 요청이 라이트스루 스토어 요청으로서 처리된다. 즉, 블록(128)에서, 스토어 요청의 스토어 어드레스 및 스토어 데이터는 SB 큐(54)의 엔트리에 저장되고, 해당 엔트리의 경우, 라이트스루 스토어 요청에 대해 블록(110)에서 실행된 것처럼, 대응 S 비트는 클리어되고(S=0), 대응 V 비트는 세팅된다(V=1). 일 실시예에서, 블록(110)과 관련해서 상술된 바와 같이, 스토어 요청은 SB 제어 회로(52)에 의해 선택된 SB 큐(54)의 다음 엔트리(일 실시예에서, 최신 엔트리에 이은 엔트리에 대응함)에 저장된다. 따라서, 논-라이트스루 스토어 요청(즉, 논-라이트스루 스토어 액세스)이 라이트스루 요청인 것처럼 SB 버퍼 회로(50)에 저장된다. S 비트가 클리어(S=0)되기 때문에, 메모리(13)에 무조건 기록된다. (WA=0이기 때문에, 스토어 요청은 캐시(40)에 할당되지 않음을 주지하라.) 블록(128) 후에, 흐름은 종료(132)로 진행한다.
도 4 및 도 5는 상이한 일례의 시나리오들에 따른, 캐시 및 버퍼 회로(30) 내의 다양한 신호들의 타이밍도들을 도시한다. 도 4에서는, 캐시 라인 페치 중에 라인필 에러가 발생한다고 가정되며, 도 5에서는, 캐시 라인 페치 중에 라인필 에러가 발생하지 않는다고 가정된다. 도 4 및 도 5 각각에서, 클록 사이클들은 설명의 편의상 상부에 0-10으로 번호가 매겨지며, 본 실시예들에서, 각각의 클록 사이클은 하이 클록 페이즈(high clock phase) 및 로우 클록 페이즈(low clock phase)를 포함한다. 또한, 도 4 및 도 5의 실시예들에서, BIU 판독 포트는 시스템 인터커넥트(12)로부터 신호들을 수신하는 입력들과 관련되며, 예를 들어, 판독 데이터(BIU(14)로부터 도체(64)를 통해 제공됨), 및 판독 준비, 판독 에러, 및 라인 필 종료(BIU(14)로부터 도체(68)를 통해 제공됨)를 포함할 수 있음을 주지하라. BIU 기록 포트는 시스템 인터커넥트(12)에 신호들을 제공하는 출력들과 관련되며, 예를 들어, 기록 데이터(BIU(14)에 도체(76)를 통해 제공됨), 및 기록 준비(BIU(14)에 도체(78)를 통해 제공됨)를 포함할 수 있다. BIU 판독 및 기록 포트들을 통해 다른 신호들이 통신될 수도 있음을 주지해야 하지만, 이는 도 4 및 도 5와 관련해서 기술되지는 않을 것이다. 도 4 및 도 5는 또한 스토어 할당 종료 신호(도체(72)를 통해, 예를 들어, 캐시 제어 회로(42)로부터 SB 제어 회로(52)에 제공됨), 스토어 할당 에러 신호(도체(74)를 통해, 예를 들어, 캐시 제어 회로(42)로부터 SB 제어 회로(52)에 제공됨), 라인필 요청 신호(도체(62)를 통해, 예를 들어, 캐시 제어 회로(42)로부터 시스템 인터커넥트(12)로 BIU(14)를 경유해서 제공됨), 및 스토어 버퍼 요청(도체(80)를 통해, 예를 들어, SB 제어 회로(52)로부터 시스템 인터커넥트(12)로 BIU(14)를 경유해서 제공됨)를 포함한다. 스토어 버퍼 요청 신호는, (도체(76)를 통해 출력되는) SB 큐(54)로부터의 다음 스토어 버퍼 요청이 메모리에 기록됨을 메모리(13)에 나타낼 수 있다. 도 4는, 또한, 캐시 제어 회로(42)로부터 SB 제어 회로(52)로 제공되는 신호일 수 있거나, 또는 스토어 할당 에러 및 스토어 할당 종료 신호들에 응답해서 SB 제어 회로(52)에 의해 내부적으로 생성된 신호일 수 있는, 타당성 조건 스토어 버퍼 엔트리 신호를 포함한다. 도 5는, 또한, 캐시 제어 회로(42)로부터 SB 제어 회로(52)로 제공되는 신호일 수 있거나, 또는 스토어 할당 에러 및 스토어 할당 종료 신호들에 응답해서 SB 제어 회로(52)에 의해 내부적으로 생성된 신호일 수 있는, 플러시 조건 SB 엔트리(S 비트가 세팅된, S=1인 엔트리)를 포함한다.
먼저 도 4를 참조하면, 캐시 라인 페치 중에 라인필 에러가 발생한다고 가정된다. 따라서, 클록 사이클 0으로 시작해서, 스토어 N에 대한 기록 할당의 스토어 미스에 응답해서, 캐시 라인이 메모리(13)로부터 페치될 필요가 있음을 나타내기 위해 라인필 요청 신호가 어서트된다. 따라서, 이 요청 신호는 BIU(14) 및 시스템 인터커넥트(12)를 통해 메모리(13)에 송신된다. 이 라인필 요청 신호는, 상술된 바와 같이, 캐시(40) 내의 스토어 요청 미스에 응답해서 기록 할당을 실행할 때, 캐시 제어 회로(42)에 의해 생성될 수 있다. 따라서, 클록 사이클 1에서, 요청된 캐시 라인 필(스토어 N 라인필)에 대응하는 스토어 어드레스가 BIU(14)를 통해 어드레스 버스에 배치된다. (도 4 및 도 5의 일례들에서, 시스템 인터커넥트(12)가 개별 데이터 및 어드레스 버스들을 포함하고, 공통 어드레스 버스가 데이터 판독 포트 및 데이터 기록 포트 둘 다를 위해 사용됨을 주지하라.) 캐시 라인 필의 데이터는, DW0이 수신되는 기간인 클록 사이클 4때까지, BIU(14)로 리턴하기를 시작하지 않는다. 판독 준비 신호가 사이클 4에서 어서트되어서, 더블워드 DW0이 캐시 제어 회로(42)에 의해 수용되어서, 사이클 4의 끝에서 라인필 버퍼(44)에 제공될 수 있다. 각각의 다음 사이클 중에, 이상적으로, 모든 4개의 더블워드들(DW0-DW3)이 수신될 때까지, 캐시 라인 페치의 다음 더블워드가 수신된다.
캐시 제어 회로(42)가 캐시 라인 필 어드레스를 송신해서 대응 데이터가 리턴되는 사이에, SB 제어 회로(52)는 스토어 버퍼 요청 신호를 어서트해서, SB 큐(54)의 무조건 엔트리들이 메모리(13)에 기록될 수 있다. 따라서, 클록 사이클 2 중에, 스토어 버퍼 요청 신호가 어서트되고, SB 회로(50)는, 메모리에 기록되는 SB 큐(54)(SB X, 여기서 "X"는 다음 엔트리와 관련됨)의 다음 엔트리(이 다음 엔트리는 SB 제어 회로(52)에 의해 선택될 수 있음)에 대응하는 어드레스를 이하의 클록 사이클, 사이클 3에서 시스템 인터커넥트(12)의 어드레스 버스에 배치되는 BIU(14)에 제공한다. 클록 사이클 3 중에, SB 회로(50)는, SB 큐(54)(SB X)의 다음 엔트리에 대응하는 스토어 데이터를 클록 사이클 4에서 시스템 인터커넥트(12)의 데이터 버스에 배치되는 BIU(14)에 제공한다. 즉, 현 일례에서, SB 회로(50)는 먼저 어드레스를 BIU(14)에 제공하고, 다음 클록 사이클에서, 대응 데이터를 BIU(14)에 제공한다고 가정된다. 시스템 인터커넥트(12)는 SB 회로(50)로부터 BIU(14)에 의해 수신된 후의 클록 사이클에서 제공되는 어드레스 및 데이터로 구동된다. 또한, 클록 사이클 3 중에, 스토어 버퍼 요청 신호가 여전히 어서트되기 때문에, SB 회로(50)는 SB 큐(54)(SB X+1)의 다음 엔트리에 대응하는 어드레스를 클록 사이클 4에서 시스템 인터커넥트(12)의 어드레스 버스에 배치되는 BIU(14)에 제공한다.
그러나, 클록 사이클 4 중에, 시스템 인터커넥트(12)가 SB X의 어드레스와 연관된 스토어를 아직 완료하지 않았다는 사실로 인해, 기록 판독 신호는 BIU(14)에 의해 아직 어서트되지 않았다. 따라서, BIU 회로(14)는 사이클 5 중에 SB X에 대응하는 스토어 데이터를 계속해서 제공하고, 다음 스토어 요청의 어드레스, SB X+1의 어드레스를 계속해서 공급한다. 클록 사이클 5에서, 제1 기록 요청이 완료되고, 기록 판독 신호가 어서트되며, 시스템 인터커넥트(12)에 제공된 SB X+1의 어드레스가 메모리(13)에 의해 포착된다. 유사하게, 클록 사이클 6 중에, 어드레스의 성공적인 프리젠테이션 및 포착 후의 사이클에서, SB X+1에 대응하는 스토어 데이터가 BIU(14)에 의해 시스템 인터커넥트(12)에 제공된다. 기록 판독 신호가 사이클 6의 끝에 어서트되기 때문에, 시스템 인터커넥트(12)에 배치된 스토어 데이터는 메모리(13)에 의해 성공적으로 포착되고, SB X+1에 대한 기록 사이클이 완료된다. 또한, 클록 사이클 5 중에, 스토어 버퍼 요청 신호가 부정되어서, 다음 엔트리가 S=1 및 V=1인 조건 스토어로서 마킹되기 때문에, 다음 엔트리(사이클 0에서 캐시 미스가 라인필을 개시한, 스토어 N에 대응하는 SB X+2)가 아직 BIU(14)에 제공되지 않으며, 사이클 0의 캐시에 의해 개시된 라인필 요청은 아직 완료되지 않는다.
다시 캐시 라인 페치를 참조하면, 시스템 인터커넥트(12)를 통해 메모리(13)로부터 수신된 DW0은 클록 사이클 4에서 BIU(14)로부터 캐시 제어 회로(42)로 리턴됨을 주지하라. 판독 준비 신호가 어서트되어서, BIU(14)가 판독 데이터를 제공할 것을 캐시 제어 회로(42)에 나타내고, 판독 에러 신호가 부정되어서, DW0의 리턴 중에 에러가 발생하지 않음을 나타냄을 주지하라. 4개의 더블워드들의 캐시 라인 페치가 아직 완료되지 않았기 때문에, 라인필 종료 신호가 또한 부정된다. 사이클 5 및 사이클 6 각각에서, DW1 및 DW2는, 각각, 유사한 방식으로 리턴되고, 판독 준비가 어서트되며, 판독 에러가 부정되고, 라인필 종료가 부정된다. 그러나, 사이클 7에서, 판독 에러 신호가 어서트되어서, DW3의 메모리 페치 중에 에러가 발생했음을 나타낸다. 이 에러는, 예를 들어, 시스템 에러이거나, 또는 캐시 라인을 제공하는 메모리(13)로부터의 정정 불가능 메모리 에러로 인한 것일 수 있다. 또한, 사이클 7에서, 라인필 요청이 완료중이기 때문에, 라인필 종료 신호가 어서트된다. BIU(14)에 의해 캐시 제어 회로(42)에 제공된 판독 에러 신호 및 라인필 종료 신호의 어서트에 응답해서, 캐시 제어 회로(42)는, 또한, 클록 사이클 7에서, 스토어 할당 에러 신호 및 스토어 할당 종료 신호를 어서트한다. 이러한 방식으로, SB 제어 회로(52)는, 조건 스토어 버퍼 엔트리들이 타당하게 됨을 인식해서, 만약의 경우에, 조건 스토어 버퍼 엔트리들(V 비트들 및 S 비트들이 1로 세팅됨)을, 상술된 바와 같이, V 비트들이 1로 세팅되지만 S 비트들은 0으로 클리어되는 무조건 스토어 버퍼 엔트리들로 변환한다. 이는, 예를 들어, 도 4의 클록 사이클 7의 타당한 조건 스토어 버퍼 엔트리 신호의 어서트에 의해 나타난다.
클록 사이클 7의 타당한 조건 스토어 버퍼 엔트리 신호의 어서트에 응답해서, 엔트리 SB X+2는 타당해지고, 고유 스토어, 스토어 N에 대한 기록 할당의 성공적이지 않은 라인필로 인해, 상태를 조건 스토어로부터 무조건 스토어로 변경해서 메모리(13)에 기록되게 한다. 라인필 버퍼(44)가 성공적으로 채워지지 않아서, 캐시에 저장되기에 타당하지 않기 때문에, 엔트리 SB X+2는, 스토어 N이 단지 손실 또는 폐기되게 하는 대신 메모리에 라이트스루될 수 있게 하는 스토어 어드레스, 데이터, 및 관련 상태 정보를 포함한다. 클록 사이클 7의 타당한 조건 스토어 버퍼 엔트리 신호의 어서트에 응답해서, S=1, V=1 상태 정보가 S=0, V=1로 변경되는, 스토어 버퍼 엔트리 X+2의 타당성(validation)으로 인해, 스토어 버퍼 요청 신호는 클록 사이클 7에서 다시 어서트됨을 주지하라. 그 후, 클록 사이클 8에서, 다음 엔트리(SB X+2)에 대응하는 어드레스가 BIU(14)에 의해 시스템 인터커넥트(12)에 제공되고, 클록 사이클 9에서, 이 다음 엔트리(SB X+2)에 대응하는 스토어 데이터가 BIU(14)에 의해 제공된다. 클록 사이클 9에서, 메모리로의 스토어가 완료되고, 기록 준비 신호가 클록 사이클 9에서 다시 어서트된다. 큐의 헤드의 스토어 버퍼 엔트리가 S=1, V=1로 마킹되고, 할당 라인필의 성공적인 완료를 기반으로, 타당성 또는 무효성을 대기하기 때문에, 스토어 버퍼 요청이 SB 제어 회로(52)에 의해 사이클 5에서 부정됨을 주지하라. 유효 엔트리가 SB 큐(54)에 존재하더라도, 논-라이트스루 스토어여서, 통상 스토어가 메모리(13)에 대해 실행되지 않기 때문에, 스토어 버퍼 요청은 아직 어서트되지 않을 수도 있다. 그러나, 라인필 요청이 성공적으로 완료되지 않기에, 스토어 데이터는 결국 기록된다.
이제 도 5를 참조하면, 캐시 라인 페치 중에 라인필 에러가 발생하지 않는다고 가정된다. 상술된 도 4의 클록 사이클들 0-6의 설명은 도 5의 클록 사이클들 0-6에도 적용되어서, 반복되지 않는다. 따라서, 이제 도 5의 클록 사이클 7을 참조하면, DW3, 캐시 라인 페치의 최종 더블워드가 BIU(14)에 의해 캐시 제어 회로(42)에 제공됨을 주지하라. 또한, 클록 사이클 7에서, 라인필 종료 신호가 BIU(14)에 의해 어서트되어서, 캐시 라인 페치가 완료됨을 나타낸다. 그러나, 도 4의 일례와 달리, 클록 사이클 7(또는 클록 사이클들 4-7 중 임의의 클록 사이클에서), 판독 에러 신호가 어서트되지 않아서, 라인필 에러가 발생하지 않았음을 나타낸다. 따라서, 클록 사이클 7에서, 캐시 제어 회로(42)는 스토어 할당 종료 신호만을 어서트하고, 클록 사이클들 4-7 중 임의의 클록 사이클에서 스토어 할당 에러 신호들을 어서트할 필요가 없었다. 이러한 방식으로, SB 제어 회로(52)는, 조건 스토어 버퍼 엔트리들(V 비트들 및 S 비트들이 1로 세팅됨)이, 만약의 경우에, V 비트들 및 S 비트들을 클리어(V=0 및 S=0)함으로써 플러시(무효화)됨을 인식한다. 이는, 예를 들어, 도 5의 클록 사이클 8에서 플러시 조건 스토어 버퍼 엔트리의 어서트에 의해 나타난다. 본 일례에서, 성공적인 라인필 할당이 발생했기 때문에, 스토어 N에 대한 스토어 데이터는 메모리(13)로부터 리턴된 라인필 데이터와 라인필 버퍼에서 병합되고, 라인은 그 후 캐시(40)에 저장된다. 스토어 N이 논-라이트스루 스토어이기 때문에, 이 때에는 스토어에 대한 메모리(13)로의 기록이 실행되지 않는다.
도 6 및 도 7은 상이한 일례의 시나리오들에 따른, SB 큐(54)의 일부를 도시한다. 도 6을 먼저 참조하면, 도 6은 유효 비트들이 세팅되지만(V=1) S 비트들이 클리어(S=0)되어서, 유효 라이트스루 스토어 액세스를 나타내는 2개의 무조건 스토어 액세스들(엔트리들 X 및 X+1)을 포함하는 SB 큐(54)의 일부를 도시한다. 다음 엔트리(X+2, 즉, 시간상 최신 엔트리)는 유효 비트 및 S 비트가 세팅되는(V=1 및 S=1) 조건 스토어 액세스를 포함해서, 대응 캐시 라인 필이 에러 없이 완료되면 SB 큐(54)로부터 플러시되고, 아니면, 대응 캐시 라인 필이 에러를 야기하면 (S 비트를 클리어함으로써) 라이트스루 스토어 액세스로 변환되는 유효 논-라이트스루 스토어를 나타낸다. 캐시 라인 필 요청에 응답해서, 캐시 라인 페치가 발생중인 동안, 동일한 캐시 라인으로의 다음 스토어 액세스들이 처리될 수 있음을 주지하라. 예를 들어, 도 6의 SB 큐(54)의 시간의 스냅샷이 라인필 요청의 개시에 대응할 수 있는 반면, 도 7의 SB 큐(54)의 시간의 스냅샷은, 캐시 라인 페치가 진행중인 동안 SB 큐(54)에 추가되는 바를 도시할 수 있다.
예를 들어, 도 7을 참조하면, 대응 스토어 데이터가 엔트리 X+2에 저장되는 스토어 액세스에 의한 캐시 미스에 응답해서 실행되는 캐시 라인 페치가 여전히 발생중이라고 가정된다. 즉, DW0-DW3의 페치가 아직 완료되지 않았다. 그러나, DW0-DW3의 페치 중에, 동일한 캐시 라인으로의 다음 스토어 액세스가 캐시(40)에서 미스되고, DW0-DW3의 페치가 여전히 발생중인 동안, SB 큐(54)의 다음 엔트리, X+3에 기록된다. 따라서, 엔트리들 X+2 및 X+3 각각이 동일한 캐시 라인에 대응하지만, 캐시 라인의 상이한 더블워드들에 대응함을 주지하라. 예를 들어, X+2는 어드레스, ADDRY에서 캐시 라인의 DW1에 있을 수 있으며, X+3은 (ADDRY에서) 동일한 캐시 라인의 DW0에 있을 수 있다. 또한, DW0-DW3의 페치가 여전히 발생중인 동안, 또 다른 스토어 액세스가 캐시 제어 회로(42)에 의해 처리될 수 있으며, 이 스토어 액세스는 어드레스 ADDRZ에 대한 라이트스루 스토어 액세스이다. 이는 또한 SB 큐(54)의 다음 엔트리, X+4에 배치된다. 그러나, 엔트리들 X+3 및 X+2와 달리, 라이트스루 스토어이기 때문에, 엔트리 X+4의 S 비트는 세팅되지 않는다(즉, S=0). 따라서, X+3 및 X+2 등의 다수의 조건, 논-라이트스루, 엔트리들은 캐시 라인 페치 중에 SB 큐(54)에 입력될 수 있음을 주지하라.
또한, 도 7의 일례를 여전히 참조하면, 도 4를 참조해서 기술된 바와 같이, BIU(14)를 통해 SB 큐(54)로부터 메모리(13)에 다음 엔트리를 기록하라는 각각의 스토어 버퍼 요청에 의해, SB 제어 회로(52)는 시간상 제일 처음 엔트리를 선택해서 BIU(14)에 출력한다. 도 7의 일례에서, 엔트리 X가 시간상 제일 처음이라고 간주된다(이어서, 순서대로, X+1, X+2, X+3, X+4). 즉, 도 6 및 도 7의 SB 큐(54)는 원형 버퍼(또는 원형 큐)로서 기술될 수 있다. 따라서, 스토어 버퍼 요청 신호를 어서트할 때, 그리고, 기록 준비 데이터가 어서트된 것으로 가정하면, 엔트리 X의 어드레스는 BIU(14)에 제공되고, 이어서, 다음 클록 사이클에서, 엔트리 X의 스토어 데이터가 제공된다. 그 후 제공된 다음 엔트리는 엔트리 X+1에 대응한다. 따라서, 스토어 버퍼 요청 신호가 어서트된다고 가정되면, 또는 다음 시간에 어서트될 때, 엔트리 X+1의 어드레스 및 X+1의 스토어 데이터는 BIU(14)에 제공된다. 그 후 제공된 다음 엔트리는 엔트리 X+2에 대응한다. 그러나, 캐시 라인 페치가 여전히 발생중일 수 있기 때문에, 엔트리들 X+2 및 X+3은 아직 타당해지거나 플러싱되지 않을 수도 있다. 이러한 경우에, 스토어 버퍼가 유효 엔트리들을 갖더라도, 스토어 버퍼 요청 신호는 부정되고, 스토어 액세스는 SB 큐(54)로부터 BIU(14)로 제공되지 않는다. 즉, 출력되는 다음 엔트리가 V=1 및 S=0인, 유효, 무조건 스토어 액세스에 대응할 때까지 SB 큐(54)의 비우기(emptying)가 중단된다. 따라서, 캐시 라인 페치가 완료되고, 에러 없이 완료되면, 엔트리들 X+2 및 X+3 각각은 SB 큐(54)로부터 플러싱, 즉, 무효화된다. 즉, 엔트리들 X+2 및 X+3의 V 비트들 및 S 비트들 각각은 클리어된다(V=0 및 S=0). 따라서, 스토어 버퍼 요청 신호가 어서트되면, 일례에서 엔트리 X+4에 대응하는 다음 유효 무조건 엔트리(시간상 초기 유효 엔트리)가 SB 제어 회로(52)에 의해 선택되어 BIU(14)에 제공된다. 그러나, 캐시 라인 페치가 에러를 야기하면, 엔트리들 X+2 및 X+3 각각은 엔트리들의 S 비트들을 클리어함으로써 라이트스루 엔트리들로 변환된다. 그 후, 스토어 버퍼 요청 신호가 어서트되면, 다음 무조건 유효 엔트리, 타당한 엔트리 X+2가 BIU(14)에 제공되고, 이어서, 차례 대로, 타당한 엔트리 X+3이 제공되며, 그 후 엔트리 X+4가 제공된다.
다른 실시예에서, SB 큐(54)의 비우기가 중단되는 대신, 다음 유효 엔트리가 S 비트가 세팅되는 조건 엔트리일 때, SB 제어 회로(52)는 다음 유효 무조건 엔트리를 탐색할 수 있어서, 부적절한 SB 큐(54)를 비울 수 있다.
도 8은, 라인필 버퍼가 다수의 엔트리들을 포함하여서, SB 큐의 각각의 엔트리는 다수의 S 비트들을 포함하고, 각 S 비트는 각각의 라인필 버퍼 엔트리에 대응하는, 본 발명의 일 실시예에 따른, 데이터 처리 시스템(10)의 캐시 및 버퍼 회로(30)의 일부를 블록도로 도시한다. 도 2와 관련해서 유사한 참조 부호들이 유사한 소자들을 나타내는 도 8을 참조하면, 캐시 및 버퍼 회로(30)는 2개의 엔트리들, 엔트리 0(146) 및 엔트리 1을 포함하는 라인필 버퍼(144)(도 2의 라인필 버퍼(44)와 유사함)를 포함한다. 2개의 엔트리들로 인해, 캐시 제어 회로(42)는 2개의 상이한 캐시 라인들의 캐시 라인 페치들을 야기하는 2개의 기록 할당 스토어 요청들을 동시에 처리할 수 있다. 또한, 라인필 버퍼(144)에 2개의 엔트리들이 존재함으로 인해, 캐시 제어 회로(42)는 라인필 버퍼(144)의 각각의 엔트리에 각각 대응하는, 2개의 스토어 할당 에러 신호들, 스토어 할당 에러 [0:1], 및 2개의 스토어 할당 종료 신호들, 스토어 할당 종료 [0:1]을 SB 제어 회로(152)(SB 제어 회로(52)와 유사함)에 제공한다. SB 회로(150)(SB 회로(50)와 유사함)는, 각각의 엔트리가 2개의 S 비트들, 라인필 버퍼(144)의 엔트리 0에 대응하는 S0 비트 및 라인필 버퍼(144)의 엔트리 1에 대응하는 S1 비트를 포함한다는 점을 제외하고 SB 큐(54)와 유사한 SB 큐(154)를 포함한다. 따라서, S0은, 엔트리 0의 캐시 라인 필이 라이트스루 액세스인 스토어 액세스에 대응하는지 또는 논-라이트스루 액세스인 스토어 액세스에 대응하는지를 나타내고, S1은, 엔트리 1의 캐시 라인 필이 라이트스루 액세스인 스토어 액세스에 대응하는지 또는 논-라이트스루 액세스인 스토어 액세스에 대응하는지를 나타낸다.
라인필 버퍼(144) 및 SB 회로(150)의 오퍼레이션은 라인필 버퍼(44) 및 SB 회로(50)와 관련해서 상술된 바와 유사하다. 그러나, 캐시(40)에 대한 기록 할당 스토어 액세스가 미스를 야기하고, 캐시 제어 회로(42)가 라인필 버퍼(144)의 엔트리 0의 캐시 라인 필을 요청할 때, 스토어 데이터는 엔트리 0 및 SB 큐(154)의 엔트리 둘 다에 기록되며, 엔트리의 V 비트가 세팅되고(V=1), 엔트리의 S0이 세팅되며(S0=1), 엔트리의 S1 비트가 클리어(S1=0)되는데, 이 엔트리는 엔트리 0의 캐시 라인 필에 대응하기 때문이다. SB 큐(154)의 엔트리의 나머지 필드들은 SB 큐(54)와 동일한 방식으로 갱신된다. 또한, 라인필 버퍼(144)의 엔트리 0의 스토어 데이터는, 상술된 바와 같이, 캐시 라인 페치 데이터와 병합된다. 따라서, 엔트리 0의 캐시 라인 필이 에러를 야기할 때, 엔트리 0(V 비트 및 S0 비트가 세팅됨, V=1 및 S0=1)에 대응하는 SB 큐(154)의 각각의 조건 엔트리는, V 비트 세팅을 유지하고 S0 비트를 클리어(S0=0)함으로써, 무조건 스토어 액세스, 즉, 라이트스루 스토어 액세스로 변환되며, S1 비트 또한 0이다. 따라서, 엔트리 0의 캐시 라인 필의 경우, 엔트리 0에 대한 라인필이 완료될 때 SB 큐(154)에서 S0 비트가 검사된다.
유사하게, 캐시(40)에 대한 기록 할당 스토어 액세스가 미스를 야기하고, 캐시 제어 회로(42)가 라인필 버퍼(144)의 엔트리 1의 캐시 라인 필을 요청할 때, 스토어 데이터는 엔트리 1 및 SB 큐(154)의 엔트리 둘 다에 기록되며, SB 큐 엔트리의 V 비트가 세팅되고(V=1), 엔트리의 S1 비트가 세팅되지만(S1=1), 엔트리의 S0 비트는 클리어(S0=0)되는데, 이 엔트리는 엔트리 1의 캐시 라인 필에 대응하기 때문이다. SB 큐(154)의 엔트리의 나머지 필드들은 SB 큐(54)와 동일한 방식으로 갱신된다. 또한, 엔트리 1의 스토어 데이터는, 상술된 바와 같이, 캐시 라인 페치 데이터와 병합된다. 따라서, 엔트리 1의 캐시 라인 필이 에러를 야기할 때, 엔트리 1(V 비트 및 S1 비트가 세팅됨, V=1 및 S1=1)에 대응하는 SB 큐(154)의 각각의 조건 엔트리는, V 비트 세팅을 유지하고 S1 비트를 클리어(S1=0)함으로써, 무조건 스토어 액세스, 즉, 라이트스루 스토어 액세스로 변환되며, S0 비트 또한 0이다. 따라서, 엔트리 1의 캐시 라인 필의 경우, 라인필 버퍼(144)의 엔트리 1에 대한 라인필이 완료될 때 SB 큐(154)에서 S1 비트가 검사된다.
예를 들어, 도 9는 엔트리들 X+2 및 X+3이 논-라이트스루 엔트리들에 대응하는 SB 큐(154)의 일부를 도시한다. 또한, 도 9의 일레에서, S 필드의 제1 비트, 즉, 가장 왼편의 비트는 S0 비트이고, S 필드의 제2 비트, 즉, 가장 오른편 비트는 S1 비트이다. 도 9의 일례에서, 어드레스, ADDRY로의 캐시 라인 페치는 라인필 버퍼(144)의 엔트리 0에서 실행중이고, 어드레스, ADDRW로의 캐시 라인 페치는 라인필 버퍼(144)의 엔트리 1에서 실행중이라고 가정된다. 엔트리 0의 경우에, 스토어 액세스에 대응하는 스토어 데이터는 ADDRY로부터 페치된 캐시 라인의 DW1이고, 엔트리 X+2의 대응 V 및 S0 비트들이 세팅된다(V=1 및 S0=1, 여기서 S1은 0으로 클리어된다). 엔트리 1의 경우, 캐시 라인 필을 야기하는 스토어 액세스에 대응하는 스토어 데이터는 ADDRW로부터 페치된 캐시 라인의 DW1이고, 엔트리 X+3의 대응 V 및 S1 비트들이 세팅된다(V=1 및 S1=1, 여기서 S0은 0으로 클리어된다). 엔트리 0의 캐시 라인 필이 어떻게 완료되는지에 따라, 엔트리 X+2는 타당해지거나 플러싱된다(그러나, 엔트리 0의 캐시 라인 필의 결과는, S0 비트가 클리어된, 엔트리 X+3에는 영향을 주지 않는다). 유사하게, 엔트리 1의 캐시 라인 필이 어떻게 완료되는지에 따라, 엔트리 X+3은 타당해지거나 플러싱된다(그러나, 엔트리 1의 캐시 라인 필의 결과는, S1 비트가 클리어된, 엔트리 X+2에는 영향을 주지 않는다).
상술된 바와 같이, 라인필 버퍼(144)로의 캐시 라인 페치가 진행중인 동안, SB 큐(154)는 비워질 수 있다. 일 실시예에서, 스토어 버퍼 요청 신호의 어서트에 응답해서 제공되는 다음 엔트리가 엔트리 X+2이면, S0 비트가 세팅된 상태에서, 엔트리 X+2가 여전히 조건 스토어 액세스 엔트리이기 때문에, SB 큐(154)의 비우기가 중단된다. 즉, 일 실시예에서, SB 큐(154)로부터 출력될 다음 엔트리의 S0 또는 S1이 세팅되면, 큐의 비우기가 중단된다.
이제까지, 캐시에서 미스될 때 2개의 상이한 위치들에 논-라이트스루 스토어 액세스를 저장하기 위한 메카니즘이 제공되었음을 알 것이다. 즉, SB 큐(라이트스루 스토어 액세스들을 저장하는데만 통상 사용됨) 뿐만 아니라 라인필 버퍼 엔트리(라인필 버퍼가 존재하지 않는 경우에는, 할당된 캐시 엔트리에 직접) 둘 다에 저장된다. 이러한 방식으로, 캐시에서 미스되는 논-라이트스루 스토어 액세스들로부터의 스토어 데이터는, 캐시에 저장되기 위해 스토어 데이터와 병합되는 대응 캐시 라인 페치 중에 에러가 발생하는 경우에 손실되지 않는다. 논-라이트스루 스토어 액세스로부터의 스토어 데이터가 조건 스토어 액세스로서 SB 큐에 저장되기 때문에, 대응 캐시 라인 페치에서 임의의 에러들이 발생할 때, SB 큐의 엔트리는 조건 스토어 액세스로부터 무조건 스토어 액세스로 변환될 수 있으며, 무조건 스토어 액세스는 차례로 메모리(13)에 기록된다. 즉, 라이트스루 스토어 액세스로서 처리된다. 일 실시예에서, 이는, 엔트리(유효한 경우, 즉, V 비트가 1로 세팅된 경우)가 라이트스루 스토어 액세스(무조건 스토어 액세스)인지 또는 논-라이트스루 액세스(조건 스토어 액세스)인지를 나타내는 SB 큐의 각각의 엔트리에서 비트(S)를포함함으로써 실행된다. 또한, 일 실시예에서, 라인필 버퍼의 엔트리들의 수에 따라, 임의의 수의 S 비트들이 각각의 엔트리에 존재할 수 있다. 이러한 방식으로, 향상된 에러 복구가 달성될 수 있어서, 성능이 향상되고 더 신뢰성 있게 될 수 있다.
본 발명을 구현하는 장치가, 대개는, 본 기술 분야에 공지된 전자 컴포넌트들 및 회로들로 구성되기 때문에, 본 발명의 기초 개념들의 이해를 위해, 또한, 본 발명의 교시를 흐리거나 혼란시키지 않기 위해, 상술된 바와 같이 필요하다고 생각되는 것 이상으로 설명되지는 않는다.
상술된 실시예들 중 일부는, 적절하게, 다양한 상이한 정보 처리 시스템들을 사용해서 구현될 수 있다. 예를 들어, 도 1, 도 2 및 도 8과 그 설명은 일례의 정보 처리 아키텍처를 기술하더라도, 이 일례의 아키텍처는 단지 본 발명의 각종 양상들을 기술하는데 유용한 참조를 제공하기 위해 제시된다. 물론, 아키텍처의 기술은 설명을 위해 간단하게 된 것으로, 본 발명에 따라 사용될 수 있는 다수의 상이한 타입들의 적합한 아키텍처들 중 단지 하나에 지나지 않는다. 당업자는, 논리 블록들 간의 경계들이 단지 예시적인 것이며, 다른 실시예들이 논리 블록들 또는 회로 소자들을 병합할 수 있으며, 또는 각종 논리 블록들 또는 회로 소자들에 다른 기능 분해를 부가할 수도 있음을 알 것이다.
따라서, 본 명세서에 도시된 아키텍처들은 단지 일례이며, 동일한 기능을 달성하는 다수의 다른 아키텍처들이 구현될 수 있다는 사실을 알 것이다. 요약에서, 여전히 한정적이지만, 동일한 기능을 달성하는 임의의 컴포넌트 장치는 효율적으로 "연관"되어서, 희망 기능이 달성된다. 따라서, 특정 기능을 달성하도록 결합된 본 명세서의 임의의 두개의 컴포넌트들은 서로 "연관"된 것으로 보일 수 있어서, 아키텍처들 또는 중개 컴포넌트들과 무관하게, 희망 기능이 달성된다. 유사하게, 연관된 임의의 2개의 컴포넌트들은 희망 기능을 달성하기 위해 서로 "동작 가능하게 연결된" 것으로서 또는 "동작 가능하게 결합된" 것으로서 간주될 수 있다.
또한, 예를 들어, 일 실시예에서, 시스템(10)의 도시된 소자들은 싱글 집적 회로에 또는 동일한 디바이스 내에 위치한 회로이다. 대안으로, 시스템(10)은 서로 인터커넥트된 임의의 수의 개별 집적 회로들 또는 개별 디바이스들을 포함할 수 있다. 또한, 예를 들어, 시스템(10) 또는 그 일부들은 물리적 회로의 소프트(soft) 또는 코드 표현들이거나, 물리적 회로로 변환 가능한 로지컬 표현들일 수 있다. 시스템(10) 또는 그 일부들은 임의의 적합한 타입의 하드웨어 기술 언어로 구현될 수 있다.
또한, 당업자는, 상술된 오퍼레이션들의 기능 간의 경계들이 단지 예시적인 것임을 알 것이다. 다수의 오퍼레이션들의 기능은 싱글 오퍼레이션에 결합될 수 있고/있으며, 또는 싱글 오퍼레이션의 기능이 추가 오퍼레이션들에 분산될 수도 있다. 또한, 다른 실시예들은 특정 오퍼레이션의 다수의 인스턴스들을 포함할 수 있으며, 오퍼레이션들의 순서는 다양한 다른 실시예들에서 변경될 수 있다.
일 실시예에서, 시스템(10)은 퍼스널 컴퓨터 시스템 등의 컴퓨터 시스템이다. 다른 실시예들은 상이한 타입들의 컴퓨터 시스템들을 포함할 수 있다. 컴퓨터 시스템들은 하나 이상의 사용자들에게 독립적인 컴퓨팅 파워를 제공하도록 설계될 수 있는 정보 핸들링 시스템들이다. 컴퓨터 시스템들은, 미니컴퓨터, 서버, 워크스테이션, 퍼스널 컴퓨터, 노트패드, 퍼스널 디지털 어시스턴트, 전자 게임, 자동차 및 다른 내장 시스템들, 셀 폰 및 각종 다른 무선 디바이스들을 포함하지만 이들로만 제한되지 않는 다수의 형태들로 발견될 수 있다. 전형적인 컴퓨터 시스템은 적어도 하나의 프로세싱 유닛, 연관된 메모리 및 다수의 입력/출력(I/O) 디바이스들을 포함한다.
컴퓨터 시스템은 프로그램에 따라 정보를 처리하고, I/O 디바이스들을 통해 결과 출력 정보를 생성한다. 프로그램은 특정 애플리케이션 프로그램 및/또는 오퍼레이팅 시스템 등의 명령들의 리스트이다. 컴퓨터 프로그램은 통상 컴퓨터 판독 가능 기억 매체에 내부적으로 저장되거나, 또는 컴퓨터 판독 가능 전송 매체를 통해 컴퓨터 시스템에 송신된다. 컴퓨터는 실행 프로그램 또는 프로그램의 일부, 현 프로그램 값들 및 상태 정보와, 프로세스 실행을 관리하기 위해 오퍼레이팅 시스템에 의해 사용되는 리소스들을 통상 포함한다. 부모 프로세스는 다른 자식 프로세스들을 낳아서, 부모 프로세스의 전체 기능을 실행하는 것을 돕는다. 부모 프로세스가 부모 프로세스의 전체 기능 중 일부를 실행하기 위해 자식 프로세스들을 명확하게 낳기 때문에, 자식 프로세스들(및 손자 프로세스들 등)에 의해 실행되는 기능들은 종종 부모 프로세스에 의해 실행되는 것으로 기술될 수 있다.
본 발명이 특정 실시예들을 참조해서 본 명세서에 기술되더라도, 각종 수정들 및 변경들은 이하의 청구항에 기재된 본 발명의 범위 내에서 이루어질 수 있다. 예를 들어, 라인필 버퍼들은 캐시 및 버퍼 회로 내에 존재할 수도 존재하지 않을 수도 있다. 따라서, 명세서 및 도면들은 제한적인 의미라기 보다는 예시적으로 간주되며, 모든 변경들은 본 발명의 범위 내에 포함된다. 특정 실시예들과 관련해서 본 명세서에 기술된 임의의 이점들, 장점들, 또는 솔루션들은 임의의 청구항 또는 모든 청구항들의 중대하거나, 필수적이거나, 또는 본질적인 피처 또는 요소로서 해석되어서는 안된다.
본 명세서에서 사용된 용어 "결합(coupled)"은 직접적 결합 또는 기계적 결합으로만 제한되지 않는다.
또한, 본 명세서에서 사용된 용어들 "하나의(a, an)"는 1 이상으로서 정의된다. 또한, 동일한 청구항이 서론 구절 "하나 이상의" 또는 "적어도 하나의" 및 "하나의(a, an)" 등의 무한 관사들을 포함하더라도, 청구항들에서 "적어도 하나의" 및 "하나 이상의" 등의 서론 구절의 사용은 무한적 관사들 "하나의(a, an)"에 의한 다른 청구항 요소의 서론이 오직 하나의 요소를 포함하는 발명들로 소개된 청구항 요소를 포함하는 임의의 특정 청구항을 제한함을 의미한다고 해석되어서는 안된다. 한정 관사들이 사용될 때도 동일하게 적용된다.
달리 지시되지 않는 한, "제1(first)" 및 "제2(second)" 등의 용어들이 기술된 용어들의 요소들을 임시로 구별하는데 사용된다. 따라서, 이러한 용어들이 요소들의 일시적 또는 다른 우선 순위를 반듯이 나타내는 것은 아니다.
추가 텍스트:
1. 데이터 처리 시스템에 있어서,
시스템 인터커넥트를 통해 시스템 메모리에 결합된 프로세서와,
상기 프로세서에 결합된 캐시 - 상기 캐시는 데이터를 저장하며, 제어 정보를 수신하기 위해 제1 데이터 포트 및 하나 이상의 제어 입력들을 가짐 - 와,
상기 시스템 인터커넥트로부터 하나 이상의 데이터 워드들을 수신하기 위해 상기 캐시에 결합된 제1 버퍼 회로 - 상기 제1 버퍼 회로는 하나 이상의 엔트리들 각각에 상기 하나 이상의 데이터 워드들을 저장하고, 상기 하나 이상의 엔트리들의 제1 엔트리의 상기 하나 이상의 데이터 워드들은 상기 시스템 인터커넥트로부터 상기 하나 이상의 데이터 워드들의 에러 없는 수신에 응답해서 캐시에 기록됨 - 와,
상기 캐시에 결합된 제2 버퍼 회로 - 상기 제2 버퍼 회로는 스토어 요청들을 저장하기 위한 하나 이상의 엔트리들을 가지며, 각각의 엔트리는 제1 스토어 요청으로부터 형성된 엔트리가 상기 제2 버퍼 회로로부터 상기 시스템 메모리에 기록되는 유효 엔트리인지를 결정하는 연관된 제어 비트를 가짐 - 와,
상기 캐시 및 제2 버퍼 회로에 결합된 제어 회로 - 상기 제어 회로는 상기 하나 이상의 데이터 워드들의 에러 없는 수신이 발생했는지를 결정하는 에러 결정을 제공하고, 상기 에러 결정을 기반으로 상기 제2 버퍼 회로의 엔트리를 무효화하는 값으로 상기 연관된 제어 비트를 선택적으로 세팅함 -
를 포함하는 데이터 처리 시스템.
2. 1항에 있어서,
상기 제1 버퍼 회로는 라인필 버퍼를 포함하고, 상기 제2 버퍼 회로는 라이트스루 스토어들(writethrough stores)에 대한 스토어 버퍼를 포함하는 데이터 처리 시스템.
3. 2항에 있어서,
상기 연관된 제어 비트로부터 분리된 상기 제2 버퍼 회로의 선정된 스토어 요청의 타당성(validity)을 설정하기 위한 선정된 스토어 요청과 연관된 유효 비트를 더 포함하고, 에러 결정이 상기 제1 버퍼 회로의 상관된 엔트리를 채울 때 에러가 발생하지 않음을 나타내면, 상기 연관된 제어 비트가 상기 제2 버퍼 회로의 상기 선정된 스토어 요청을 무효화하는 데이터 처리 시스템.
4. 3항에 있어서,
상기 제2 버퍼 회로의 상기 선정된 스토어 요청과 연관된 복수의 제어 비트들을 더 포함하고, 상기 복수의 제어 비트들 각각은 상기 제1 버퍼 회로의 상이한 엔트리에 상관되며, 상기 제어 회로는 상기 복수의 제어 비트들 중 오직 하나의 제어 비트만을 사용해서 상기 제2 버퍼 회로의 상기 선정된 스토어 요청의 무효(invalidation)를 나타내는 데이터 처리 시스템.
5. 3항에 있어서,
상기 제2 버퍼 회로는 상기 제1 기억 버퍼의 상기 제1 엔트리의 상이한 부분들에 상관된 복수의 엔트리들을 더 포함하는 데이터 처리 시스템.
6. 1항에 있어서,
상기 에러 결정이 에러 없음을 나타내고, 상기 연관된 제어 비트가 어서트(assert)될 때, 상기 제어 회로는 상기 제1 스토어 요청을 무효화하기 위해 상기 제1 스토어 요청과 연관된 상기 제2 버퍼 회로의 엔트리의 타당성 비트 및 상기 연관된 제어 비트를 디어서트(deassert)하고, 상기 에러 결정이 에러를 나타내고, 상기 연관된 제어 비트가 어서트(assert)될 때, 상기 제어 회로는 상기 제1 스토어 요청을 타당화하기 위해 상기 연관된 제어 비트를 디어서트하고 상기 제1 스토어 요청과 연관된 상기 제2 버퍼 회로의 엔트리의 타당성 비트를 어서트하는 데이터 처리 시스템.
7. 한 방법에 있어서,
데이터 처리 시스템의 인터커넥트를 통해 시스템 메모리에 결합된 데이터 프로세서에 의해 사용되도록 복수의 캐시 엔트리들을 캐시에 제공하는 단계와,
상기 캐시에 대한 논-라이트스루 기록 액세스(non-writethrough write access)에 대해 캐시 미스가 발생했다고 결정하는 단계와,
상기 캐시 미스에 대한 복수의 캐시 엔트리들 중 하나의 캐시 엔트리의 할당이 요구되는지를 결정하는 단계와,
상기 캐시 미스에 대한 복수의 캐시 엔트리들 중 하나의 캐시 엔트리의 할당이 요구되면:
할당된 엔트리에 대응하는 데이터의 페치를 개시하는 단계와,
상기 스토어 버퍼의 일시적으로 버퍼링된 논-라이트스루 스토어 버퍼 엔트리를 생성하기 위해 라이트스루 스토어를 실행하는데 사용된 스토어 버퍼의 엔트리에 상기 논-라이트스루 스토어 액세스를 임시로 버퍼링하는 단계와,
할당에 대한 데이터의 페치가 에러 없이 완료되었음을 결정하는 단계와,
에러 없이 완료되었다는 결정에 응답해서, 임시로 버퍼링된 논-라이트스루 스토어 버퍼 엔트리를 무효화하는 단계와,
할당에 대한 데이터의 페치가 에러 없이 완료되지 않았다는 결정에 응답해서, 상기 임시로 버퍼링된 논-라이트스루 스토어 버퍼 엔트리를 상기 시스템 메모리에 다음으로 저장하는 단계
를 포함하는 방법.
8. 7항에 있어서,
상기 캐시에 결합된 라인필 버퍼에 상기 논-라이트스루 스토어 액세스를 임시로 버퍼링하는 단계를 더 포함하고, 상기 논-라이트스루 스토어 액세스가 2개의 로케이션들에 저장되고 상기 2 로케이션들 중 한 로케이션이 데이터를 페치할 때 검출된 에러의 결정을 기반으로 선택적으로 무효화되는 방법.
9. 8항에 있어서,
할당에 대한 데이터의 페치가 에러 없이 완료되지 않았다는 결정에 응답해서, 상기 임시로 버퍼링된 논-라이트스루 스토어 버퍼 엔트리를 타당화 한 후, 상기 타당화된 엔트리를 상기 시스템 메모리에 저장하는 단계를 더 포함하는 방법.
10. 9항에 있어서,
상기 스토어 버퍼의 상기 임시로 버퍼링된 논-라이트스루 스토어 버퍼의 타당성 비트를 갱신함으로써 상기 임시로 버퍼링된 논-라이트스루 스토어 버퍼 엔트리를 무효화하는 단계와,
제어 비트를 사용해서 각각의 엔트리를 라이트스루 엔트리 또는 논-라이트스루 엔트리로서 식별함으로써 상기 스토어 버퍼의 엔트리들을 식별하는 단계
를 더 포함하는 방법.
11. 10항에 있어서,
상기 캐시로의 할당을 위해 데이터를 페치할 때 에러가 발생했는지의 결정에 응답해서 상기 제어 비트를 선택적으로 인에이블 또는 디스에이블하는 단계를 더 포함하는 방법.
12. 11항에 있어서,
상기 스토어 버퍼의 각각의 엔트리에 복수의 제어 비트들을 제공하는 단계를 더 포함하고, 상기 복수의 제어 비트들이 상기 라인필 버퍼의 상이한 엔트리에 상관되는 방법.
13. 11항에 있어서,
상기 라인필 버퍼의 싱글 엔트리의 상이한 일부부들에 상기 스토어 버퍼의 엔트리들을 상관하는 단계를 더 포함하는 방법.
14. 한 방법에 있어서,
시스템 인터커넥트를 통해 시스템 메모리에 프로세서를 결합하는 단계와,
상기 프로세서에 캐시를 결합하는 단계 - 상기 캐시는 데이터를 저장하며, 제어 정보를 수신하기 위해 제1 데이터 포트 및 하나 이상의 제어 입력들을 가짐 - 와,
상기 시스템 인터커넥트로부터 하나 이상의 데이터 워드들을 수신하기 위해 상기 캐시에 제1 버퍼 회로를 결합하는 단계 - 상기 제1 버퍼 회로는 하나 이상의 엔트리들 각각에 상기 하나 이상의 데이터 워드들을 저장하고, 상기 하나 이상의 엔트리들의 제1 엔트리의 상기 하나 이상의 데이터 워드들은 상기 시스템 인터커넥트로부터 상기 하나 이상의 데이터 워드들의 에러 없는 수신에 응답해서 캐시에 기록됨 - 와,
상기 캐시에 제2 버퍼 회로를 결합하는 단계 - 상기 제2 버퍼 회로는 스토어 요청들을 저장하기 위한 하나 이상의 엔트리들을 가지며, 각각의 엔트리는 제1 스토어 요청으로부터 형성된 엔트리가 상기 제2 버퍼 회로로부터 상기 시스템 메모리에 기록되는 유효 엔트리인지를 결정하는 연관된 제어 비트를 가짐 - 와,
상기 캐시 및 제2 버퍼 회로에 제어 회로를 결합하는 단계 - 상기 제어 회로는 상기 하나 이상의 데이터 워드들의 에러 없는 수신이 발생했는지를 결정하는 에러 결정을 제공하고, 상기 에러 결정을 기반으로 상기 제2 버퍼 회로의 엔트리를 무효화하는 값으로 상기 연관된 제어 비트를 선택적으로 세팅함 -
를 포함하는 방법.
15. 14항에 있어서,
상기 제1 버퍼 회로를 라인필 버퍼로서 구현하는 단계와,
상기 제2 버퍼 회로를 라이트스루 스토어들을 위한 스토어 버퍼로서 구현하는 단계를 더 포함하는 데이터 처리 시스템.
16. 15항에 있어서,
상기 연관된 제어 비트로부터 분리된 상기 제2 버퍼 회로의 선정된 스토어 요청의 타당성을 설정하기 위한 선정된 스토어 요청과 연관된 유효 비트를 제공하는 단계와,
에러 결정이 상기 제1 버퍼 회로의 상관된 엔트리를 채울 때 에러가 발생하지 않았음을 나타내면, 상기 연관된 제어 비트로 상기 제2 버퍼 회로의 상기 선정된 스토어 요청을 무효화하는 단계
를 더 포함하는 방법.
17. 16항에 있어서,
상기 제2 버퍼 회로의 상기 선정된 스토어 요청과 연관된 복수의 제어 비트들을 제공하는 단계를 더 포함하고, 상기 복수의 제어 비트들 각각은 상기 제1 버퍼 회로의 상이한 엔트리에 상관되며, 상기 제어 회로는 상기 복수의 제어 비트들 중 오직 하나의 제어 비트만을 사용해서 상기 제2 버퍼 회로의 상기 선정된 스토어 요청의 무효를 나타내는 방법.
18. 16항에 있어서,
상기 제1 버퍼 회로의 상기 제1 엔트리의 상이한 부분들에 상관된 상기 제2 버퍼 회로의 복수의 엔트리들을 제공하는 단계를 더 포함하는 방법.
19. 14항에 있어서,
상기 에러 결정이 에러 없음을 나타내고, 상기 연관된 제어 비트가 어서트될 때, 상기 제1 스토어 요청을 무효화하기 위해 상기 제1 스토어 요청과 연관된 상기 제2 버퍼 회로의 엔트리의 타당성 비트 및 상기 연관된 제어 비트를 디어서트하는 단계와,
상기 에러 결정이 에러를 나타낼 때, 상기 제1 스토어 요청을 타당화하기 위해 상기 연관된 제어 비트를 디어서트하고 상기 제1 스토어 요청과 연관된 상기 제2 버퍼 회로의 엔트리의 타당성 비트를 어서트하는 단계
를 더 포함하는 방법.
20. 14항에 있어서,
상기 캐시에 결합된 로드/스토어 유닛으로부터의 스토어 데이터로 상기 제1 버퍼 회로의 상기 하나 이상의 엔트리들 중 상기 제1 엔트리의 제1 부분을 채우는 단계와,
상기 시스템 인터커넥트로부터의 데이터로 상기 제1 버퍼 회로의 상기 하나 이상의 엔트리들 중 상기 제1 엔트리의 제2 부분을 채우는 단계를 더 포함하고, 상기 에러 결정이, 상기 시스템 인터커넥트로부터의 상기 하나 이상의 데이터 워드들이 에러가 있다고 결정하는 방법.

Claims (20)

  1. 데이터 처리 시스템으로서,
    시스템 인터커넥트를 통해 시스템 메모리에 결합된 프로세서;
    상기 프로세서에 결합된 캐시 - 상기 캐시는 데이터를 저장하고, 또한 제어 정보를 수신하기 위한 하나 이상의 제어 입력들 및 제1 데이터 포트를 가짐 - ;
    상기 캐시에 결합되어, 상기 시스템 인터커넥트로부터 하나 이상의 데이터 워드들을 수신하기 위한 제1 버퍼 회로 - 상기 제1 버퍼 회로는 하나 이상의 엔트리들 각각에 상기 하나 이상의 데이터 워드들을 저장하고, 상기 하나 이상의 엔트리들 중 제1 엔트리의 하나 이상의 데이터 워드들은 상기 시스템 인터커넥트로부터의 상기 하나 이상의 데이터 워드들의 에러 없는 수신에 응답해서 상기 캐시에 기록됨 - ;
    상기 캐시에 결합된 제2 버퍼 회로 - 상기 제2 버퍼 회로는 스토어 요청들을 저장하기 위한 하나 이상의 엔트리들을 가지며, 각각의 엔트리는 제1 스토어 요청으로부터 형성된 엔트리가 상기 제2 버퍼 회로로부터 상기 시스템 메모리에 기록될 유효 엔트리인지 여부를 판정하는 연관된 제어 비트를 가지고, 상기 제1 버퍼 회로는 라인필(linefill) 버퍼를 포함하고, 상기 제2 버퍼 회로는 라이트스루 스토어들(writethrough stores)에 대한 스토어 버퍼를 포함함 - ;
    상기 캐시 및 제2 버퍼 회로에 결합된 제어 회로 - 상기 제어 회로는 상기 하나 이상의 데이터 워드들의 에러 없는 수신이 발생했는지 여부를 판정하는 에러 판정을 제공하고, 상기 에러 판정에 기초하여 상기 제2 버퍼 회로의 엔트리를 무효화하는 값으로 상기 연관된 제어 비트를 선택적으로 세팅함 - ; 및
    상기 연관된 제어 비트로부터 분리된 상기 제2 버퍼 회로의 선정된(predetermined) 스토어 요청의 유효성(validity)을 설정하기 위한 상기 선정된 스토어 요청과 연관된 유효 비트
    를 포함하고
    상기 에러 판정이 상기 제1 버퍼 회로의 상관된 엔트리를 채울 때 에러가 발생하지 않음을 나타내면, 상기 연관된 제어 비트가 상기 제2 버퍼 회로의 상기 선정된 스토어 요청을 무효화하는, 데이터 처리 시스템.
  2. 데이터 처리 시스템으로서,
    시스템 인터커넥트를 통해 시스템 메모리에 결합된 프로세서;
    상기 프로세서에 결합된 캐시 - 상기 캐시는 데이터를 저장하고, 또한 제어 정보를 수신하기 위한 하나 이상의 제어 입력들 및 제1 데이터 포트를 가짐 - ;
    상기 캐시에 결합되어, 상기 시스템 인터커넥트로부터 하나 이상의 데이터 워드들을 수신하기 위한 제1 버퍼 회로 - 상기 제1 버퍼 회로는 하나 이상의 엔트리들 각각에 상기 하나 이상의 데이터 워드들을 저장하고, 상기 하나 이상의 엔트리들 중 제1 엔트리의 하나 이상의 데이터 워드들은 상기 시스템 인터커넥트로부터 상기 하나 이상의 데이터 워드들의 에러 없는 수신에 응답해서 상기 캐시에 기록됨 - ;
    상기 캐시에 결합된 제2 버퍼 회로 - 상기 제2 버퍼 회로는 스토어 요청들을 저장하기 위한 하나 이상의 엔트리들을 가지며, 각각의 엔트리는 제1 스토어 요청으로부터 형성된 엔트리가 상기 제2 버퍼 회로로부터 상기 시스템 메모리에 기록될 유효 엔트리인지 여부를 판정하는 연관된 제어 비트를 가짐 - ; 및
    상기 캐시 및 제2 버퍼 회로에 결합된 제어 회로
    를 포함하고,
    상기 제어 회로는 상기 하나 이상의 데이터 워드들의 에러 없는 수신이 발생했는지 여부를 판정하는 에러 판정을 제공하고, 상기 에러 판정에 기초하여 상기 제2 버퍼 회로의 엔트리를 무효화하는 값으로 상기 연관된 제어 비트를 선택적으로 세팅하며,
    상기 에러 판정이 에러 없음을 나타내고 상기 연관된 제어 비트가 어서트(assert)될 때, 상기 제어 회로는 상기 제1 스토어 요청을 무효화(invalidate)하기 위해 상기 제1 스토어 요청과 연관된 상기 제2 버퍼 회로의 엔트리의 유효성 비트 및 상기 연관된 제어 비트를 디어서트(deassert)하고, 상기 에러 판정이 에러를 나타내고 상기 연관된 제어 비트가 어서트(assert)될 때, 상기 제어 회로는 상기 제1 스토어 요청을 유효화(validate)하기 위해 상기 연관된 제어 비트를 디어서트하고 상기 제1 스토어 요청과 연관된 상기 제2 버퍼 회로의 엔트리의 유효성 비트를 어서트하는, 데이터 처리 시스템.
  3. 데이터 처리 방법으로서,
    시스템 인터커넥트를 통해 시스템 메모리에 프로세서를 결합하는 단계;
    상기 프로세서에 캐시를 결합하는 단계 - 상기 캐시는 데이터를 저장하고, 또한 제어 정보를 수신하기 위한 하나 이상의 제어 입력들 및 제1 데이터 포트를 가짐 - ;
    상기 시스템 인터커넥트로부터 하나 이상의 데이터 워드들을 수신하기 위해 상기 캐시에 제1 버퍼 회로를 결합하는 단계 - 상기 제1 버퍼 회로는 하나 이상의 엔트리들 각각에 상기 하나 이상의 데이터 워드들을 저장하고, 상기 하나 이상의 엔트리들 중 제1 엔트리의 상기 하나 이상의 데이터 워드들은 상기 시스템 인터커넥트로부터 상기 하나 이상의 데이터 워드들의 에러 없는 수신에 응답해서 상기 캐시에 기록됨 - ;
    상기 캐시에 제2 버퍼 회로를 결합하는 단계 - 상기 제2 버퍼 회로는 스토어 요청들을 저장하기 위한 하나 이상의 엔트리들을 가지며, 각각의 엔트리는 제1 스토어 요청으로부터 형성된 엔트리가 상기 제2 버퍼 회로로부터 상기 시스템 메모리에 기록될 유효 엔트리인지 여부를 판정하는 연관된 제어 비트를 가짐 - ;
    상기 캐시 및 제2 버퍼 회로에 제어 회로를 결합하는 단계 - 상기 제어 회로는 상기 하나 이상의 데이터 워드들의 에러 없는 수신이 발생했는지 여부를 판정하는 에러 판정을 제공하고, 상기 에러 판정에 기초하여 상기 제2 버퍼 회로의 엔트리를 무효화하는 값으로 상기 연관된 제어 비트를 선택적으로 세팅함 -
    상기 제1 버퍼 회로를 라인필 버퍼로서 구현하는 단계;
    상기 제2 버퍼 회로를 라이트스루 스토어들을 위한 스토어 버퍼로서 구현하는 단계;
    상기 연관된 제어 비트로부터 분리된 상기 제2 버퍼 회로의 선정된 스토어 요청의 유효성을 설정하기 위한 선정된 스토어 요청과 연관된 유효 비트를 제공하는 단계; 및
    상기 에러 판정이 상기 제1 버퍼 회로의 상관된 엔트리를 채울 때 에러가 발생하지 않았음을 나타내면, 상기 연관된 제어 비트로 상기 제2 버퍼 회로의 상기 선정된 스토어 요청을 무효화하는 단계
    를 포함하는, 데이터 처리 방법.
  4. 데이터 처리 방법으로서,
    시스템 인터커넥트를 통해 시스템 메모리에 프로세서를 결합하는 단계;
    상기 프로세서에 캐시를 결합하는 단계 - 상기 캐시는 데이터를 저장하고, 또한 제어 정보를 수신하기 위한 하나 이상의 제어 입력들 및 제1 데이터 포트를 가짐 - ;
    상기 시스템 인터커넥트로부터 하나 이상의 데이터 워드들을 수신하기 위해 상기 캐시에 제1 버퍼 회로를 결합하는 단계 - 상기 제1 버퍼 회로는 하나 이상의 엔트리들 각각에 상기 하나 이상의 데이터 워드들을 저장하고, 상기 하나 이상의 엔트리들 중 제1 엔트리의 상기 하나 이상의 데이터 워드들은 상기 시스템 인터커넥트로부터 상기 하나 이상의 데이터 워드들의 에러 없는 수신에 응답해서 상기 캐시에 기록됨 - ;
    상기 캐시에 제2 버퍼 회로를 결합하는 단계 - 상기 제2 버퍼 회로는 스토어 요청들을 저장하기 위한 하나 이상의 엔트리들을 가지며, 각각의 엔트리는 제1 스토어 요청으로부터 형성된 엔트리가 상기 제2 버퍼 회로로부터 상기 시스템 메모리에 기록될 유효 엔트리인지 여부를 판정하는 연관된 제어 비트를 가짐 - ;
    상기 캐시 및 제2 버퍼 회로에 제어 회로를 결합하는 단계 - 상기 제어 회로는 상기 하나 이상의 데이터 워드들의 에러 없는 수신이 발생했는지 여부를 판정하는 에러 판정을 제공하고, 상기 에러 판정에 기초하여 상기 제2 버퍼 회로의 엔트리를 무효화하는 값으로 상기 연관된 제어 비트를 선택적으로 세팅함 - ;
    상기 에러 판정이 에러 없음을 나타내고, 상기 연관된 제어 비트가 어서트될 때, 상기 제1 스토어 요청을 무효화하기 위해 상기 제1 스토어 요청과 연관된 상기 제2 버퍼 회로의 엔트리의 유효성 비트 및 상기 연관된 제어 비트를 디어서트하는 단계; 및
    상기 에러 판정이 에러를 나타낼 때, 상기 제1 스토어 요청을 유효화하기 위해 상기 연관된 제어 비트를 디어서트하고 상기 제1 스토어 요청과 연관된 상기 제2 버퍼 회로의 엔트리의 유효성 비트를 어서트하는 단계
    를 포함하는 데이터 처리 방법.
  5. 데이터 처리 방법으로서,
    시스템 인터커넥트를 통해 시스템 메모리에 프로세서를 결합하는 단계;
    상기 프로세서에 캐시를 결합하는 단계 - 상기 캐시는 데이터를 저장하고, 또한 제어 정보를 수신하기 위한 하나 이상의 제어 입력들 및 제1 데이터 포트를 가짐 - ;
    상기 시스템 인터커넥트로부터 하나 이상의 데이터 워드들을 수신하기 위해 상기 캐시에 제1 버퍼 회로를 결합하는 단계 - 상기 제1 버퍼 회로는 하나 이상의 엔트리들 각각에 상기 하나 이상의 데이터 워드들을 저장하고, 상기 하나 이상의 엔트리들 중 제1 엔트리의 상기 하나 이상의 데이터 워드들은 상기 시스템 인터커넥트로부터 상기 하나 이상의 데이터 워드들의 에러 없는 수신에 응답해서 상기 캐시에 기록됨 - ;
    상기 캐시에 제2 버퍼 회로를 결합하는 단계 - 상기 제2 버퍼 회로는 스토어 요청들을 저장하기 위한 하나 이상의 엔트리들을 가지며, 각각의 엔트리는 제1 스토어 요청으로부터 형성된 엔트리가 상기 제2 버퍼 회로로부터 상기 시스템 메모리에 기록될 유효 엔트리인지 여부를 판정하는 연관된 제어 비트를 가짐 - ;
    상기 캐시 및 제2 버퍼 회로에 제어 회로를 결합하는 단계 - 상기 제어 회로는 상기 하나 이상의 데이터 워드들의 에러 없는 수신이 발생했는지 여부를 판정하는 에러 판정을 제공하고, 상기 에러 판정에 기초하여 상기 제2 버퍼 회로의 엔트리를 무효화하는 값으로 상기 연관된 제어 비트를 선택적으로 세팅함 - ;
    상기 캐시에 결합된 로드/스토어(load/store) 유닛으로부터의 스토어 데이터로 상기 제1 버퍼 회로의 상기 하나 이상의 엔트리들 중 상기 제1 엔트리의 제1 부분을 채우는 단계; 및
    상기 시스템 인터커넥트로부터의 데이터로 상기 제1 버퍼 회로의 상기 하나 이상의 엔트리들 중 상기 제1 엔트리의 제2 부분을 채우는 단계 - 상기 에러 판정은, 상기 시스템 인터커넥트로부터의 상기 하나 이상의 데이터 워드들이 에러가 있는 것으로 판정함 -
    를 포함하는 데이터 처리 방법.
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020107029593A 2008-05-30 2009-03-27 데이터 처리 시스템 및 데이터 처리 방법 KR101531078B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/130,570 2008-05-30
US12/130,570 US8131951B2 (en) 2008-05-30 2008-05-30 Utilization of a store buffer for error recovery on a store allocation cache miss
PCT/US2009/038560 WO2009154838A2 (en) 2008-05-30 2009-03-27 Utilization of a store buffer for error recovery on a store allocation cache miss

Publications (2)

Publication Number Publication Date
KR20110025188A KR20110025188A (ko) 2011-03-09
KR101531078B1 true KR101531078B1 (ko) 2015-06-23

Family

ID=41381243

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107029593A KR101531078B1 (ko) 2008-05-30 2009-03-27 데이터 처리 시스템 및 데이터 처리 방법

Country Status (5)

Country Link
US (1) US8131951B2 (ko)
KR (1) KR101531078B1 (ko)
CN (1) CN102216898B (ko)
TW (1) TW200949533A (ko)
WO (1) WO2009154838A2 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8166246B2 (en) * 2008-01-31 2012-04-24 International Business Machines Corporation Chaining multiple smaller store queue entries for more efficient store queue usage
JP5417879B2 (ja) * 2009-02-17 2014-02-19 富士通セミコンダクター株式会社 キャッシュ装置
US9652560B1 (en) * 2011-07-18 2017-05-16 Apple Inc. Non-blocking memory management unit
RU2475822C1 (ru) * 2011-12-08 2013-02-20 Учреждение Российской академии наук Научно-исследовательский институт системных исследований РАН (НИИСИ РАН) Подсистема памяти ядра микропроцессора
US8838888B2 (en) * 2012-03-19 2014-09-16 International Business Machines Corporation Conditional write processing for a cache structure of a coupling facility
US9003158B2 (en) 2012-10-19 2015-04-07 Freescale Semiconductor, Inc. Flexible control mechanism for store gathering in a write buffer
US9009411B2 (en) * 2012-11-20 2015-04-14 Freescale Semiconductor, Inc. Flexible control mechanism for store gathering in a write buffer
US9158725B2 (en) 2012-11-20 2015-10-13 Freescale Semiconductor, Inc. Flexible control mechanism for store gathering in a write buffer
US9081689B2 (en) 2013-01-14 2015-07-14 Freescale Semiconductor, Inc. Methods and systems for pushing dirty linefill buffer contents to external bus upon linefill request failures
US9183055B2 (en) * 2013-02-07 2015-11-10 Advanced Micro Devices, Inc. Selecting a resource from a set of resources for performing an operation
US9304940B2 (en) 2013-03-15 2016-04-05 Intel Corporation Processors, methods, and systems to relax synchronization of accesses to shared memory
US9785545B2 (en) * 2013-07-15 2017-10-10 Cnex Labs, Inc. Method and apparatus for providing dual memory access to non-volatile memory
JP5658336B1 (ja) * 2013-09-04 2015-01-21 Necプラットフォームズ株式会社 ストアマージ処理装置、ストアマージ処理システム、ストアマージ処理方法、及び、ストアマージ処理プログラム
WO2016097812A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Cache memory budgeted by chunks based on memory access type
CN106155922B (zh) * 2015-04-07 2019-03-05 龙芯中科技术有限公司 失效处理方法、系统、sfb及访存失效装置
CN106710627B (zh) * 2015-11-18 2019-11-26 凌阳科技股份有限公司 多晶胞芯片及其存储器装置
TWI588831B (zh) * 2016-01-29 2017-06-21 智原科技股份有限公司 非揮發性記憶體加速器及存取加速方法
CN111656335B (zh) * 2018-01-29 2023-11-17 美光科技公司 存储器控制器
EP3850492A1 (en) * 2019-02-13 2021-07-21 Google LLC Caching streams of memory requests
US11176038B2 (en) 2019-09-30 2021-11-16 International Business Machines Corporation Cache-inhibited write operations
US11392380B2 (en) 2019-12-28 2022-07-19 Intel Corporation Apparatuses, methods, and systems to precisely monitor memory store accesses

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6279077B1 (en) * 1996-03-22 2001-08-21 Texas Instruments Incorporated Bus interface buffer control in a microprocessor
US20060271738A1 (en) * 2005-05-24 2006-11-30 Texas Instruments Incorporated Configurable cache system depending on instruction type
US20080109606A1 (en) * 2006-11-03 2008-05-08 Lataille Norbert Bernard Eugen Cache logic, data processing apparatus including cache logic, and a method of operating cache logic

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0752399B2 (ja) * 1988-06-30 1995-06-05 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン 記憶システム
US5148916A (en) * 1991-09-25 1992-09-22 Tillyer Sr John N Razor blade carrier
US5829025A (en) * 1996-12-17 1998-10-27 Intel Corporation Computer system and method of allocating cache memories in a multilevel cache hierarchy utilizing a locality hint within an instruction
US6643745B1 (en) * 1998-03-31 2003-11-04 Intel Corporation Method and apparatus for prefetching data into cache
US6148348A (en) * 1998-06-15 2000-11-14 Sun Microsystems, Inc. Bridge interfacing two processing sets operating in a lockstep mode and having a posted write buffer storing write operations upon detection of a lockstep error
EP1215577B1 (en) * 2000-08-21 2012-02-22 Texas Instruments Incorporated Fault management and recovery based on task-ID
US6678792B2 (en) * 2001-06-22 2004-01-13 Koninklijke Philips Electronics N.V. Fast and accurate cache way selection
JP3663393B2 (ja) * 2001-06-27 2005-06-22 インターナショナル・ビジネス・マシーンズ・コーポレーション 複数プロセッサ・データ処理システムをチェックポインティングする方法、プロセッサ・ユニットおよびコンピュータ・システム
US7475195B2 (en) * 2005-05-24 2009-01-06 International Business Machines Corporation Data processing system, cache system and method for actively scrubbing a domain indication
US7600077B2 (en) * 2007-01-10 2009-10-06 Arm Limited Cache circuitry, data processing apparatus and method for handling write access requests

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6279077B1 (en) * 1996-03-22 2001-08-21 Texas Instruments Incorporated Bus interface buffer control in a microprocessor
US20060271738A1 (en) * 2005-05-24 2006-11-30 Texas Instruments Incorporated Configurable cache system depending on instruction type
US20080109606A1 (en) * 2006-11-03 2008-05-08 Lataille Norbert Bernard Eugen Cache logic, data processing apparatus including cache logic, and a method of operating cache logic

Also Published As

Publication number Publication date
CN102216898B (zh) 2013-12-04
WO2009154838A3 (en) 2010-04-22
US20090300294A1 (en) 2009-12-03
WO2009154838A2 (en) 2009-12-23
CN102216898A (zh) 2011-10-12
TW200949533A (en) 2009-12-01
US8131951B2 (en) 2012-03-06
KR20110025188A (ko) 2011-03-09

Similar Documents

Publication Publication Date Title
KR101531078B1 (ko) 데이터 처리 시스템 및 데이터 처리 방법
JP5357017B2 (ja) 高速で安価なストア−ロード競合スケジューリング及び転送機構
KR100708010B1 (ko) 인덱스와 선택적 경로 정합에 기반하여 데이터를 포워딩하는 저장 버퍼
US8364907B2 (en) Converting victim writeback to a fill
US20230254907A1 (en) Pipelined read-modify-write operations in cache memory
US8327077B2 (en) Method and apparatus of parallel computing with simultaneously operating stream prefetching and list prefetching engines
US9158725B2 (en) Flexible control mechanism for store gathering in a write buffer
US6481251B1 (en) Store queue number assignment and tracking
CN103729306B (zh) 高速缓存块无效的方法和数据处理设备
US10108467B2 (en) Data processing system with speculative fetching
JP2007507791A (ja) トレースキャッシュベースのプロセッサ中の例外命令を処理するためのシステム及び方法
JP2007536626A (ja) ロードオペレーションの投機的な結果をレジスタ値にリンクするメモリファイルを検証するためのシステムおよび方法
US9092346B2 (en) Speculative cache modification
US8504777B2 (en) Data processor for processing decorated instructions with cache bypass
US9009411B2 (en) Flexible control mechanism for store gathering in a write buffer
US20210011729A1 (en) Managing Commit Order for an External Instruction Relative to Queued Instructions
US11748109B2 (en) System and method for implementing strong load ordering in a processor using a circular ordering ring
CN115563027B (zh) 存数指令的执行方法、系统及装置
US6704854B1 (en) Determination of execution resource allocation based on concurrently executable misaligned memory operations
US8990512B2 (en) Method and apparatus for error correction in a cache
JP2020536310A (ja) アドレス変換なしで動作する読み込み/格納ユニットでの実効アドレスのシノニムの処理
US10261909B2 (en) Speculative cache modification
US11176042B2 (en) Method and apparatus for architectural cache transaction logging
US20100057997A1 (en) Cache snoop limiting within a multiple master data processing system

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

Year of fee payment: 4