KR100876486B1 - 저장 성능 개선 - Google Patents

저장 성능 개선 Download PDF

Info

Publication number
KR100876486B1
KR100876486B1 KR1020050026670A KR20050026670A KR100876486B1 KR 100876486 B1 KR100876486 B1 KR 100876486B1 KR 1020050026670 A KR1020050026670 A KR 1020050026670A KR 20050026670 A KR20050026670 A KR 20050026670A KR 100876486 B1 KR100876486 B1 KR 100876486B1
Authority
KR
South Korea
Prior art keywords
data
storage
gosb
stored
cache
Prior art date
Application number
KR1020050026670A
Other languages
English (en)
Other versions
KR20060045031A (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 KR20060045031A publication Critical patent/KR20060045031A/ko
Application granted granted Critical
Publication of KR100876486B1 publication Critical patent/KR100876486B1/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation

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

저장 오퍼레이션 대기시간 및 RFO(read-for-ownership) 처리능력이 개선되는 저장 오퍼레이션 아키텍쳐가 개시된다. 본 발명의 실시예들은, RFO 오퍼레이션들의 비순차적 발행을 허용하고 저장 버퍼 대기시간 주기들을 보다 효율적으로 사용함으로써 마이크로프로세서 내의 저장 성능을 개선시키는 방법 및 장치에 관한 것이다.
Figure R1020050026670
대기시간, 저장 오퍼레이션, RFO 오퍼레이션, 비순차적 발행, LFB

Description

저장 성능 개선{IMPROVING STORE PERFORMANCE}
도 1은, 강력하게 순서화된(strongly ordered) 마이크로프로세서 아키텍쳐 내에서 발행된 저장 오퍼레이션(store operation)들을 처리하기 위한 종래 기술의 캐쉬 아키텍쳐를 도시하는 도면.
도 2는, 본 발명의 적어도 하나의 실시예가 사용될 수 있는 컴퓨터 시스템을 도시하는 도면.
도 3은, 본 발명의 적어도 하나의 실시예가 사용될 수 있는 버스 에이전트(bus agent)를 도시하는 도면.
도 4는, 저장 오퍼레이션들을 추적하고 전역적으로 관찰가능하게 된 대응하는 데이터 값들을 저장하는데 GoSB(global observation store buffer)가 사용되는 본 발명의 일 실시예를 나타내는 도면.
도 5는, GoSB 인덱스 및 GoSB 유효 필드들이 레벨-1(L-1) 캐쉬 또는 LFB(line-fill buffer) 엔트리들 내에 저장되지 않고, 그 대신 GoSB 인덱스 필드가 저장 버퍼의 엔트리들 내에 저장되는 본 발명의 일 실시예를 나타내는 도면.
도 6은, 본 발명의 적어도 하나의 실시예와 연관된 오퍼레이션들을 도시하는 흐름도.
<도면의 주요부분에 대한 부호의 설명>
205 : 프로세서
210 : 캐쉬 메모리
215 : 주 메모리
220 : HDD
본 발명의 실시예들은, 마이크로프로세서 아키텍쳐에 관한 것이다. 보다 구체적으로, 본 발명의 실시예들은 RFO(read-for-ownership) 오퍼레이션들의 비순차적 발행을 허용하고 저장 버퍼 대기시간(latency) 주기를 보다 효율적으로 사용함으로써 마이크로프로세서 내의 저장 성능을 개선시키는 방법 및 장치에 관한 것이다.
마이크로프로세서는 통상적으로 "FSB(front-side bus)"로 알려진 공유 컴퓨터 시스템 버스를 통해 컴퓨터 시스템과 통신한다. 그러나, 마이크로프로세서 성능이 개선되고 컴퓨터 시스템들이 동일한 FSB를 따라 상호접속된 다수의 프로세서들을 사용함에 따라, FSB는 성능의 병목점이 되어 왔다.
이러한 문제점에 대한 한가지 해결책은, 다중 프로세서 시스템 내의 다양한 프로세서들 간에 PtP(point-to-point) 링크들을 사용하는 것이다. PtP 링크들은 통상적으로 다중 프로세서 네트워크 내의 각 프로세서에 대해 전용 버스 트레이스들로서 구현된다. 통상적인 PtP 링크들이 FSB보다 많은 처리량을 제공하더라도, PtP 링크의 대기시간은 FSB의 대기시간보다 나쁘다.
PtP의 대기시간은 마이크로프로세서, 특히 저장 오퍼레이션들 간의 강력한 순서화(strong ordering)를 필요로 하는 마이크로프로세서 아키텍쳐에 의해 실행되는 저장 오퍼레이션들의 성능에 특히 영향을 준다. 강력한 순서화의 요구조건으로 인해, 예를 들면, 이전에 발행된 저장 오퍼레이션들은 통상적으로, 보다 나중의 저장 오퍼레이션들이 프로세서에 의해 발행될 수 있기 전에 시스템 내의 다른 버스 에이전트들에 액세스가능하게 되거나 또는 적어도 검출될 수 있어야만 한다. 컴퓨터 시스템 내의 다른 버스 에이전트들에 대한, 저장, 로드 또는 기타 오퍼레이션과 같은 오퍼레이션의 검출가능성은 종종 오퍼레이션의 "전역 관찰(global observation)"로 불리워진다. 통상적으로, 마이크로프로세서 오퍼레이션들 또는 명령어들은, 시스템 내의 다른 에이전트들이 오퍼레이션 또는 명령어의 존재를 검출할 수 있는 캐쉬 또는 다른 메모리에 저장된 후에만 전역적으로 관찰가능하게 된다.
강력한 순서화 마이크로프로세서 아키텍쳐 내의 저장 오퍼레이션들의 경우, 통상적인 마이크로프로세서들은, 이전의 저장 오퍼레이션이 전역적으로 관찰될 때까지, 저장 버퍼 또는 다른 저장 큐잉 구조(store queuing structure)로부터, 또는 소정의 경우 마이크로프로세서 실행 유닛으로부터 저장 오퍼레이션을 발행하지 않을 것이다. 통상적인 마이크로프로세서 아키텍쳐들 내에서의 저장 오퍼레이션의 발행은, RFO 오퍼레이션과 같은 오퍼레이션에 선행되어 캐쉬 라인, 또는 저장 오퍼레이션이 저장되어 전역적으로 관찰될 수 있는 다른 저장 영역에 대한 배타적 제어 를 획득할 수 있다. 그러나, 통상적인 마이크로프로세서 아키텍쳐에서는, 선행 저장 오퍼레이션들이 전역적으로 관찰될 때까지 RFO 오퍼레이션들이 발행되지 않는다.
도 1은 강력하게 순서화된 마이크로프로세서 아키텍쳐 내에서 발행된 저장 오퍼레이션들을 처리하기 위한 종래 기술의 캐쉬 아키텍쳐를 도시한다. 저장 버퍼는, 캐쉬 LFB(line fill buffer)를 통해 레벨-1(L1) 캐쉬의 어드레스 X 및 Y에 각각 저장되는 데이터 X1 및 Y1를 포함한다. 그러나, 통상적인 종래 기술에 따른 아키텍쳐들에서는, 저장 데이터 X1 및 Y1, 그들의 대응 RFO 오퍼레이션들도, L1 캐쉬 내의 데이터 X0와 어드레스 X가 전역적으로 관찰될 때까지 발행될 수 없다.
발행, 및 궁극적으로는 종래 기술에 따른 아키텍쳐 내에서의 저장 오퍼레이션들의 폐기(retiring) 과정에서의 대기시간으로 인해, 마이크로프로세서와 그 시스템의 전체 성능은 절충될 수 있다. 또한, PtP 다중 프로세서 시스템이 보다 널리 이용됨에 따라, 시스템 내의 각 프로세서는 데이터가 시스템 내의 다른 프로세서들에 의해 저장되는 것에 의존적일 수 있기 때문에 이러한 문제는 악화될 수 있다.
본 발명의 실시예들은, 유사한 참조번호들이 유사한 구성요소들을 나타내는 첨부 도면들의 도면들에 한정되지 않고 예로서 도시된다.
본 발명의 실시예들은 마이크로프로세서 아키텍쳐에 관한 것이다. 보다 구체적으로, 본 발명의 실시예들은 RFO(read-for-ownership) 오퍼레이션들의 비순차적 발행을 허용하고 저장 버퍼 대기시간 주기들을 보다 효율적으로 사용함으로써, 마이크로프로세서의 저장 성능을 개선시키는 방법 및 장치에 관한 것이다.
저장 버퍼 효율성을 개선시키면서 비순차적 RFO 오퍼레이션들을 용이하게 하기 위해서, 본 발명의 적어도 하나의 실시예는 전역적으로 관찰가능하게 된 저장 데이터를 추적하기 위해 GoSB(globally observable store buffer)와 같은, 저장 매체를 사용하는 것을 포함한다. GoSB 내의 전역적으로 관찰되는 데이터를 추적함으로써, 이전 저장 데이터가 전역적으로 관찰되었는지 여부에 관계없이 레벨-1(L1) 캐쉬 및 LFB(line-fill buffer)와 같은 스누프가능한 저장 장치들 내에 저장 데이터를 저장시킬 수 있어, 저장 데이터의 처리량 및 마이크로프로세서 내의 저장 오퍼레이션들의 성능을 증가시킬 수 있다.
도 2는 본 발명의 적어도 하나의 실시예와 함께 사용될 수 있는 컴퓨터 시스템을 도시한다. 프로세서(205)는 캐쉬 메모리(210) 및 주 메모리(215)로부터 데이터를 액세스한다. 본 발명의 일 실시예의 위치(206)가 도 2의 마이크로프로세서 내에 도시된다. 그러나, 본 발명의 실시예들은, 시스템 내의 다른 장치들 내에 별도의 버스 에이전트, 또는 시스템에 걸쳐 분산된 것으로서 구현될 수 있다. 주 메모리는 DRAM(dynamic random access memory), HDD(hard disk drive)(220), 또는 다양한 저장 장치 및 기술들을 포함하는 컴퓨터 시스템으로부터 떨어져 위치한 메모리 소스(230)일 수 있다. 캐쉬 메모리는 프로세스 내에 위치하거나 또는 프로세서 의 로컬 버스(207)와 같이, 프로세서에 근접하여 위치할 수 있다. 또한, 캐쉬 메모리는, 6개 트랜지스터(6T) 셀들과 같이 비교적 빠른 메모리 셀 또는 대략 동등하거나 또는 보다 빠른 액세스 속도를 갖는 다른 메모리 셀들로 구성될 수 있다.
도 3은, 본 발명의 적어도 하나의 실시예가 사용될 수 있는 버스 에이전트를 나타낸다. 특히, 도 3은, 본 발명의 적어도 하나의 실시예(305)의 하나 이상의 부분들을 포함하는 마이크로프로세서(301)를 나타낸다. 마이크로프로세서 내에서, 저장 오퍼레이션들과 같은 오퍼레이션들을 수행하기 위한 실행 유닛(310)이 도 3의 마이크로프로세서 내에 추가로 도시된다. 본 발명의 실시예들의 일부분들과 실행 유닛의 정확한 위치 또는 상대적인 위치는 도 3에 도시된 것들로 한정시키고자 하는 의도는 아니다.
도 4는 저장 오퍼레이션들을 추적하고 전역적으로 관찰가능하게 된 대응하는 데이터 값들을 저장하는데 GoSB(401)가 사용되는 본 발명의 일 실시예를 도시한다. 도 2의 GoSB의 각 엔트리(405)는, 엔트리가 참조될 수 있는 인덱스 값 필드(406), 저장 오퍼레이션의 목표 어드레스를 지시하는 어드레스 값 필드(407), 저장 오퍼레이션과 연관된 데이터를 저장하는 데이터 값 필드(408), 아직 전역적으로 관찰가능하지 않은 저장 오퍼레이션들의 수를 계수하기 위한 카운터 필드(410), 및 전역적으로 관찰가능한 저장 오퍼레이션에 대응하는 데이터가 이용가능하고 GoSB의 데이터 필드 내에 저장되었는지 여부를 각각 나타내는 유효 비트 필드들(409, 411)을 포함한다.
NcSQ(non-committed store queue)(415)도 도 4에 도시된다. NcSQ는 LFB(420) 또는 레벨-1(L1) 캐쉬(425)에 저장되었으나 아직 전역적으로 관찰가능하지 않은 저장 오퍼레이션들에 대응하는 데이터 및 어드레스 정보를 저장한다. 도 4에 도시된 실시예에서, NcSQ는, 특정 저장 오퍼레이션에 대응하는 어드레스 정보를 저장하기 위한 어드레스 필드(416), 저장 오퍼레이션에 대응하는 데이터를 저장하기 위한 데이터 필드(417) 및 GoSB 내의 대응하는 엔트리를 참조하기 위한 인덱스 정보를 저장하는 GoSB 인덱스 필드(418)를 포함하는 엔트리들을 갖는 FIFO(first-in-first-out) 큐이다.
도 4에 도시된 실시예에서, 저장 오퍼레이션들이 발행되고, 전달되고, 저장 버퍼(430)로부터 판독되며, NcSQ 및 L1 캐쉬나 LFB 내에 저장되고 대응하는 엔트리가 GoSB 내에 할당된다. 저장 데이터가 전역적으로 관찰가능하게 된 후, 데이터는 NcSQ로부터 대응하는 GoSB로 저장된다.
특정 목표 어드레스에 대응하는 저장 데이터를 NcSQ 내에 저장함에 따라, GoSB 내의 대응하는 카운터 필드는 증가한다. 저장 오퍼레이션들이 전역적으로 관찰가능하게 됨에 따라, 대응하는 저장 어드레스 및 데이터는 NcSQ로부터 제거되고 GoSB 내의 대응하는 카운터 필드는 감소한다. GoSB 카운터 필드가 0에 도달한 후, 대응하는 GoSB 엔트리는 할당해제(de-allocated)되고 새로운 저장 오퍼레이션으로 재할당될 수 있다.
도 4에 도시된 본 발명의 실시예에서, L1 캐쉬 및 LFB는 각각 저장 데이터에 대해, 마이크로프로세서와 같은 하나 이상의 버스 에이전트에 의해 스누프될 수 있다. L1 캐쉬 및 LFB의 각각의 엔트리는 GoSB 인덱스 필드(426) 및 GoSB 유효 필드(427)이다. GoSB 인덱스 필드는 GoSB 내의 대응하는 저장 데이터의 위치를 스누핑 에이전트에게 지시한다. GoSB 유효 필드는 대응하는 GoSB 인덱스가 유효한지 여부 및 아직 전역적으로 관찰가능하지 않은지 여부에 대해 지시한다. GoSB는 데이터에 대해 버스 에이전트에 의해 스누프될 수도 있고 데이터, 또는, 대안적으로, 스누핑 에이전트에 의해 사용될 가장 유효한 데이터에 대한 포인트를 제공할 수 있다. L1 캐쉬 또는 LFB와 GoSB 모두가 요청된 데이터를 포함하면, GoSB는 요청하는 에이전트에게 해당 데이터를 제공한다.
도 5는, GoSB 인덱스 및 GoSB 유효 필드들이 L1 캐쉬 또는 LFB 엔트리들 내에 저장되지 않고 대신 GoSB 인덱스(501) 필드가 저장 버퍼의 엔트리들 내에 저장되는 본 발명의 일 실시예를 도시한다. 도 5에 도시된 실시예에서, 저장 오퍼레이션이 저장 버퍼로부터 LFB 또는 L1 캐쉬로 판독되거나, 전송되거나, 또는 발행될 때까지 대기하기 보다 저장 오퍼레이션이 비추론적(non-speculative)으로 되자마자 GoSB 엔트리가 저장 오퍼레이션에 대해 할당될 수 있다.
대안적으로, GoSB 인덱스 필드(501)는 저장 버퍼와 논리적으로 연관될 수 있고, 대응하는 저장 버퍼 필드가 액세스될 때 특정 GoSB 인덱스 필드를 가리키기 위한 로직을 사용하여 저장 버퍼로서 동일 구조 내에 물리적으로 존재하지 않을 수 있다. 어느 한 경우에서, 저장 버퍼의 각 엔트리와 연관된 GoSB 인덱스 필드는, 스누핑 에이전트들로 하여금 GoSB 내의 저장 데이터를 빨리 찾도록 하여, 데이터가 GoSB 내에서 전역적으로 관찰가능하게 되자마자 스누핑 에이전트가 데이터를 검색할 수 있다. 도 5에 도시된 실시예에서, RFO 오퍼레이션들은 대응하는 저장 데이 터가 저장 버퍼 내에 저장되기 전에 발행될 수 있다. 도 5에 도시된 실시예의 다른 측면들은, 도 4에 도시된 본 발명의 실시예와 관련하여 이미 토의된 것들과 유사하다.
도 6은 본 발명의 적어도 하나의 실시예와 연관된 오퍼레이션들을 도시하는 흐름도이다. 도 6을 참조하면, 제1 저장 오퍼레이션이 마이크로프로세서 실행 로직으로부터 발행되고 대응하는 데이터가 오퍼레이션(601)에서 저장 버퍼 엔트리 내에 저장된다. 제1 저장 오퍼레이션이 저장 버퍼로부터 발행되기 전 또는 그 이후에, GoSB 엔트리는 할당되고 RFO 오퍼레이션이 실행되어 오퍼레이션(602)에서 L1 캐쉬 또는 LFB중 어느 하나 및 GoSB 내의 라인에 대한 배타적인 소유권을 얻는다. 그 후, 제1 저장 오퍼레이션 데이터가 NcSQ, 및 LFB 또는 L1 캐쉬 엔트리중 어느 하나 내에 저장된다. 대응하는 GoSB의 카운터는 오퍼레이션(603)에서 증가된다.
제2 저장 오퍼레이션이 발행되고 대응하는 데이터가 오퍼레이션(604)에서 저장 버퍼 엔트리 내에 저장된다. 제2 저장 오퍼레이션이 저장 버퍼로부터 발행되기 전 또는 그 이후에, GoSB 엔트리가 할당되고 RFO 오퍼레이션이 실행되어 오퍼레이션(605)에서 L1 캐쉬 또는 LFB중 어느 하나 및 GoSB 내의 라인에 대한 배타적인 소유권을 얻는다. 그 후, 제2 저장 오퍼레이션은 NcSQ, 및 LFB 또는 L1 캐쉬중 어느 하나로 이동하고, 대응하는 GoSB의 카운터는 오퍼레이션(606)에서 증가된다.
본 발명의 적어도 하나의 실시예에서, 제1 및 제2 저장 오퍼레이션 데이터는 동일한 시간 주기 내에 LFB 및 L1 캐쉬 내에 상주한다. 제2 저장에 대응하는 RFO 데이터가, 제1 저장 오퍼레이션의 데이터가 전역적으로 관찰가능하게 되기 이전에 L1 캐쉬 또는 LFB로부터 반환되면, 제2 저장 오퍼레이션은 오퍼레이션(607)에서 GoSB의 대응하는 엔트리가 아니라 L1 및/또는 LFB의 적절한 엔트리로 병합된다. 그러나, 제2 저장 오퍼레이션의 RFO 데이터가 L1 캐쉬 또는 LFB로부터 반환되기 이전에, 제1 저장 오퍼레이션의 데이터가 전역적으로 관찰가능하면, 제2 저장 오퍼레이션 데이터는 오퍼레이션(608)에서 GoSB의 적절한 엔트리로 병합될 수 있다. 카운터는, 각각 전역적으로 관찰가능하게 되지 않거나, 전역적으로 관찰가능하게 되거나, 전역적으로 관찰가능하게 되고 있는 GoSB 내의 할당된 특정 저장 오퍼레이션과 연관된 데이터의 수를 나타내기 위해 증가되거나 감소된다.
본원에 도시된 본 발명의 실시예들의 임의의 부분 또는 모든 부분들은, CMOS 회로 장치(하드웨어)를 사용한 로직, 마이크로프로세서와 같은 기계에 의해 실행될 때, 마이크로프로세서가 본원에 설명된 오퍼레이션들을 수행하게 하는 저장 매체 내에 저장된 명령어들(소프트웨어), 또는 하드웨어와 소프트웨어의 조합을 포함하나 이에 한정되지 않는 다양한 방법으로 구현될 수 있다. 본원에서 이루어진 "마이크로프로세서" 또는 "프로세서"에 대한 참조는, CMOS 장치들을 포함하여, 하나 이상의 입력 신호 또는 명령어들을 수신한 결과로서 오퍼레이션들을 수행할 수 있는 임의의 기계 또는 장치를 나타내고자 하는 것이다.
본 발명이 예시적인 실시예들을 참조하여 설명되었지만, 이러한 설명은 한정적인 의미로 해석되고자 하는 것은 아니다. 본 발명이 관련되는 기술 분야의 당업자들에게 자명한, 예시적인 실시예들 뿐만 아니라 다른 실시예들에 대한 다양한 수정들이 본 발명의 사상 및 범주 내에 존재하는 것으로 간주된다.
본 발명에 따르면, RFO(read-for-ownership) 오퍼레이션들의 비순차적 발행을 허용하고 저장 버퍼 대기시간 주기들을 보다 효율적으로 사용함으로써, 마이크로프로세서의 저장 성능을 개선시킬 수 있다.

Claims (38)

  1. 삭제
  2. 데이터를 저장하는 제1 저장 유닛;
    상기 데이터가 버스 에이전트(bus agent)에 의해 검출가능하게 된 이후에만 상기 데이터를 저장하는 제2 저장 유닛; 및
    상기 데이터가 상기 제1 저장 유닛에 저장되었는지 여부를 상기 제2 저장 유닛에게 표시하는 지시자(indicator)
    를 포함하는 프로세서.
  3. 제2항에 있어서,
    상기 제1 저장 유닛은 LFB(line fill buffer)인 프로세서.
  4. 제2항에 있어서,
    상기 제1 저장 유닛은 레벨-1 캐쉬인 프로세서.
  5. 제2항에 있어서,
    상기 제1 저장 유닛은 버스 에이전트에 저장될 데이터를 저장하는 저장 버퍼인 프로세서.
  6. 제2항에 있어서,
    상기 지시자는, 버스 에이전트에 의해 검출가능하지 않는 상기 데이터를 저장하기 위한 FIFO(first-in-first-out) 큐(queue)인 프로세서.
  7. 제6항에 있어서,
    상기 제2 저장 유닛은, FIFO 큐 내의 엔트리들의 수를 계수하는 카운터를 포함하는 버퍼인 프로세서.
  8. 삭제
  9. 저장 버퍼 - 상기 저장 버퍼에 있어서, 제1 데이터 값이 전역적으로 관찰되는지 여부에 상관없이 제2 데이터 값이 상기 저장 버퍼로부터 판독되고 캐쉬 메모리에 저장되되, 상기 제1 데이터 값은 상기 제2 데이터 값이 상기 저장 버퍼로부터 판독되기 이전에 상기 저장 버퍼로부터 판독됨 -; 및
    전역적으로 관찰된 후 상기 제1 및 제2 데이터 값들만을 저장하는 GoSB(global observation store buffer)
    를 포함하는 강력하게 순서화된 명령어 아키텍쳐(strong ordering instruction architecture)를 포함하는 프로세서.
  10. 제9항에 있어서,
    상기 캐쉬 메모리에 저장되었으나 아직 전역적으로 관찰되지 않는 데이터를 저장하는 NcSQ(non-committed store queue)를 더 포함하는 프로세서.
  11. 제10항에 있어서,
    상기 GoSB는 상기 NcSQ 내에 저장된 데이터의 수에 대응하는 카운트 값을 포함하는 프로세서.
  12. 제9항에 있어서,
    상기 GoSB는, 상기 GoSB 내에 저장될 각 데이터 값에 대한 인덱스 필드, 및 상기 GoSB 내에 저장될 데이터 값이 기입될 위치에 대응하는 어드레스 필드를 포함하는 프로세서.
  13. 제10항에 있어서,
    상기 NcSQ는, 전역적으로 관찰된 후, 대응하는 데이터 값이 저장될 상기 GoSB 내의 위치를 표시하는 인덱스 값을 저장하기 위한 인덱스 필드를 포함하는 프로세서.
  14. 제13항에 있어서,
    상기 캐쉬 메모리는 레벨-1(L1) 캐쉬를 포함하는 프로세서.
  15. 제13항에 있어서,
    상기 캐쉬 메모리는 레벨-1(L1) 캐쉬에 기입될 데이터를 저장하는 LFB(line fill buffer)를 포함하는 프로세서.
  16. 제13항에 있어서,
    데이터가, 전역적으로 관찰된 후, 상기 NcSQ로부터 제거되는 프로세서.
  17. 제15항에 있어서,
    상기 GoSB는, 상기 L1 캐쉬 또는 상기 LFB가 스누핑 에이전트(snooping agent)에게 상기 데이터를 제공하기 전에, 상기 스누핑 에이전트에 데이터 값을 제공하는 프로세서.
  18. 컴퓨터 시스템에 있어서,
    적어도 하나의 버스 에이전트 내에 제1 데이터 값을 저장하는 제1 명령어, 및 상기 제1 데이터 값이 적어도 하나의 버스 에이전트 내에 저장된 이후에 적어도 하나의 버스 에이전트 내에 제2 데이터 값을 저장하는 제2 명령어를 저장하기 위한 메모리 유닛;
    상기 제1 및 제2 데이터 값들중 하나가 적어도 하나의 버스 에이전트에 의해 검출가능하게 되기 이전에 상기 제1 및 제2 데이터 값들을 함께 저장하는 레벨-1(L1) 캐쉬 및 LFB(line fill buffer); 및
    상기 제1 및 상기 제2 데이터 값들중 어느 하나 또는 양자가 상기 제1 버스 에이전트에 의해 상기 L1 캐쉬 또는 상기 LFB 내에서 검출가능하게 되기 이전에 상기 제1 데이터 값 및 상기 제2 데이터 값중 어느 하나 또는 양자를 검출하는 제1 버스 에이전트
    를 포함하는 컴퓨터 시스템.
  19. 제18항에 있어서,
    적어도 하나의 버스 에이전트에 의해 검출가능하게 된 이후에 상기 제1 및 제2 데이터 값들을 저장하는 저장 매체를 더 포함하는 컴퓨터 시스템.
  20. 제18항에 있어서,
    상기 제1 버스 에이전트는, 상기 제1 및 제2 데이터 값들중 어느 하나 또는 양자에 대해 상기 L1 캐쉬 및 상기 LFB 중 어느 하나 또는 양자를 스누프하는 컴퓨터 시스템.
  21. 제19항에 있어서,
    상기 제1 및 제2 데이터 값들은 적어도 하나의 버스 에이전트 내에 프로그램 순서로 저장되는 컴퓨터 시스템.
  22. 제21항에 있어서,
    상기 제1 및 제2 명령어들은 상기 메모리 유닛 내에 프로그램 순서로 저장되 는 컴퓨터 시스템.
  23. 제22항에 있어서,
    상기 L1 캐쉬 및 상기 LFB중 어느 하나 또는 양자가 포인트-투-포인트 버스(point-to-point bus)를 통해 상기 제1 버스 에이전트에 결합되는 컴퓨터 시스템.
  24. 제23항에 있어서,
    상기 메모리 유닛은 DRAM(dynamic random access memory)인 컴퓨터 시스템.
  25. 제24항에 있어서,
    상기 L1 캐쉬 및 상기 LFB중 어느 하나 또는 양자는 마이크로프로세서 내에 있는 컴퓨터 시스템.
  26. 제25항에 있어서,
    상기 제1 버스 에이전트는 마이크로프로세서, DRAM, 자기 저장 매체, 버스 조정 장치(bus arbitration device), 및 무선 저장 매체를 포함하는 목록으로부터 선택된 장치를 포함하는 것을 특징으로 하는, 컴퓨터 시스템.
  27. 데이터가 대응하는 저장 오퍼레이션(store operation)이 비추론적(non-speculative)으로 된 이후, 및 상기 데이터가 저장 버퍼로부터 판독되기 전에 전역 적으로 관찰가능한 데이터를 저장하기 위한 GoSB(global observation store buffer) 내에 엔트리를 할당하는 할당 로직;
    상기 데이터가 전역적으로 관찰가능하게 되기 전에 상기 데이터를 저장하기 위해 상기 GoSB에 결합된 캐쉬 메모리; 및
    상기 캐쉬 메모리 내에 상기 데이터를 저장하기 전에 상기 캐쉬 내의 라인에 대한 배타적인 소유권을 획득하는 RFO(read-for-ownership) 로직
    을 포함하는 장치.
  28. 제27항에 있어서,
    상기 RFO 로직은, 상기 GoSB 엔트리가 할당되기 전에 상기 캐쉬 메모리 내의 상기 라인에 대한 배타적인 소유권을 획득하는 장치.
  29. 제28항에 있어서,
    상기 저장 버퍼는 상기 GoSB 내의 상기 할당된 엔트리의 상기 위치를 지시하기 위한 인덱스를 포함하는 장치.
  30. 제29항에 있어서,
    상기 GoSB 내의 상기 할당된 엔트리는, 상기 데이터가 전역적으로 관찰가능하게 되면 재할당되는 장치.
  31. 제1 저장 오퍼레이션을 발행하는 단계;
    저장 버퍼 내에 상기 제1 저장 오퍼레이션과 연관된 제1 데이터를 저장하는 단계;
    상기 제2 저장 오퍼레이션을 발행하는 단계;
    상기 저장 버퍼 내에 상기 제2 저장 오퍼레이션과 연관된 제2 데이터를 저장하는 단계;
    상기 제1 데이터를 저장 유닛 내에 저장하는 단계; 및
    상기 제1 데이터가 상기 저장 유닛 내에 저장되고 전역적으로 관찰가능하지 않는 시간 주기 동안 상기 제2 데이터를 상기 저장 유닛 내에 저장하는 단계
    를 포함하는 강력하게 순서화된 메모리 오퍼레이션들을 발행하는 방법.
  32. 제31항에 있어서,
    상기 제1 또는 제2 데이터가 상기 저장 유닛 내에 저장되기 전에 상기 저장 유닛 내의 라인에 대한 배타적인 제어를 획득하는 RFO 오퍼레이션을 발행하는 단계를 더 포함하는 방법.
  33. 제32항에 있어서,
    상기 제1 데이터 또는 제2 데이터가 전역적으로 관찰가능하게 된 이후, GoSB 내에 엔트리를 할당하는 단계를 더 포함하는 방법.
  34. 제33항에 있어서,
    상기 저장 유닛 내에 저장되나 전역적으로 관찰되지 않는 저장 어드레스 위치에 대응하는 데이터 값들의 수를 반영하기 위해 카운터를 갱신하는 단계를 더 포함하는 방법.
  35. 제34항에 있어서,
    상기 엔트리는 상기 카운터가 0이 된 후에 다른 데이터를 저장하기 위해 재할당되는 방법.
  36. 제35항에 있어서,
    상기 데이터 값들의 수를 표시하기 위해 NcSQ를 갱신하는 단계를 더 포함하는 방법.
  37. 제36항에 있어서,
    상기 저장 유닛은 레벨-1(L1) 캐쉬인 방법.
  38. 제36항에 있어서,
    상기 저장 유닛은 LFB(line-fill buffer)인 방법.
KR1020050026670A 2004-03-30 2005-03-30 저장 성능 개선 KR100876486B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/813,942 US7484045B2 (en) 2004-03-30 2004-03-30 Store performance in strongly-ordered microprocessor architecture
US10/813,942 2004-03-30

Publications (2)

Publication Number Publication Date
KR20060045031A KR20060045031A (ko) 2006-05-16
KR100876486B1 true KR100876486B1 (ko) 2008-12-31

Family

ID=35049879

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050026670A KR100876486B1 (ko) 2004-03-30 2005-03-30 저장 성능 개선

Country Status (5)

Country Link
US (2) US7484045B2 (ko)
JP (1) JP4452644B2 (ko)
KR (1) KR100876486B1 (ko)
CN (2) CN100480993C (ko)
TW (1) TWI318373B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8244985B2 (en) 2004-03-30 2012-08-14 Intel Corporation Store performance in strongly ordered microprocessor architecture

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7523265B2 (en) * 2005-03-18 2009-04-21 International Business Machines Corporation Systems and arrangements for promoting a line to exclusive in a fill buffer of a cache
US7836229B1 (en) 2006-06-23 2010-11-16 Intel Corporation Synchronizing control and data paths traversed by a data transaction
US7584335B2 (en) * 2006-11-02 2009-09-01 International Business Machines Corporation Methods and arrangements for hybrid data storage
CN101464839B (zh) * 2009-01-08 2011-04-13 中国科学院计算技术研究所 一种访存缓冲装置及方法
KR101539878B1 (ko) 2013-05-02 2015-07-27 후아웨이 테크놀러지 컴퍼니 리미티드 컴퓨터 시스템, pci 익스프레스 엔드포인트 디바이스에 액세스하는 방법 및 장치
US10754782B1 (en) * 2019-03-30 2020-08-25 Intel Corporation Apparatuses, methods, and systems to accelerate store processing

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000259412A (ja) 1999-03-05 2000-09-22 Internatl Business Mach Corp <Ibm> ストア命令転送方法およびプロセッサ
KR100295187B1 (ko) 1995-03-31 2001-09-17 윤종용 순서에따르지않고판독및기입명령을실행하는메모리제어기
US6374332B1 (en) * 1999-09-30 2002-04-16 Unisys Corporation Cache control system for performing multiple outstanding ownership requests
US20030070060A1 (en) 1991-07-08 2003-04-10 Nguyen Le Trong High-performance, superscalar-based computer system with out-of-order instruction execution

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043886A (en) * 1988-09-16 1991-08-27 Digital Equipment Corporation Load/store with write-intent for write-back caches
US5202969A (en) * 1988-11-01 1993-04-13 Hitachi, Ltd. Single-chip-cache-buffer for selectively writing write-back and exclusively writing data-block portions to main-memory based upon indication of bits and bit-strings respectively
JPH0680499B2 (ja) * 1989-01-13 1994-10-12 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチプロセッサ・システムのキャッシュ制御システムおよび方法
US5210848A (en) * 1989-02-22 1993-05-11 International Business Machines Corporation Multi-processor caches with large granularity exclusivity locking
US5119485A (en) * 1989-05-15 1992-06-02 Motorola, Inc. Method for data bus snooping in a data processing system by selective concurrent read and invalidate cache operation
US5255387A (en) * 1990-04-27 1993-10-19 International Business Machines Corporation Method and apparatus for concurrency control of shared data updates and queries
US5434970A (en) * 1991-02-14 1995-07-18 Cray Research, Inc. System for distributed multiprocessor communication
US5335335A (en) * 1991-08-30 1994-08-02 Compaq Computer Corporation Multiprocessor cache snoop access protocol wherein snoop means performs snooping operations after host bus cycle completion and delays subsequent host bus cycles until snooping operations are completed
TW234174B (en) * 1993-05-14 1994-11-11 Ibm System and method for maintaining memory coherency
US5751995A (en) * 1994-01-04 1998-05-12 Intel Corporation Apparatus and method of maintaining processor ordering in a multiprocessor system which includes one or more processors that execute instructions speculatively
US5680572A (en) * 1994-02-28 1997-10-21 Intel Corporation Cache memory system having data and tag arrays and multi-purpose buffer assembly with multiple line buffers
US5671444A (en) * 1994-02-28 1997-09-23 Intel Corporaiton Methods and apparatus for caching data in a non-blocking manner using a plurality of fill buffers
US5526510A (en) * 1994-02-28 1996-06-11 Intel Corporation Method and apparatus for implementing a single clock cycle line replacement in a data cache unit
US5867400A (en) * 1995-05-17 1999-02-02 International Business Machines Corporation Application specific processor and design method for same
US5652859A (en) 1995-08-17 1997-07-29 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues
US5893165A (en) 1996-07-01 1999-04-06 Sun Microsystems, Inc. System and method for parallel execution of memory transactions using multiple memory models, including SSO, TSO, PSO and RMO
US5860107A (en) * 1996-10-07 1999-01-12 International Business Machines Corporation Processor and method for store gathering through merged store operations
US6185660B1 (en) 1997-09-23 2001-02-06 Hewlett-Packard Company Pending access queue for providing data to a target register during an intermediate pipeline phase after a computer cache miss
US6009488A (en) 1997-11-07 1999-12-28 Microlinc, Llc Computer having packet-based interconnect channel
US6460119B1 (en) * 1997-12-29 2002-10-01 Intel Corporation Snoop blocking for cache coherency
DE19807872A1 (de) * 1998-02-25 1999-08-26 Pact Inf Tech Gmbh Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl.
US6557053B1 (en) * 2000-01-04 2003-04-29 International Business Machines Corporation Queue manager for a buffer
TW515952B (en) * 2001-04-23 2003-01-01 Mediatek Inc Memory access method
WO2003001383A2 (en) 2001-06-26 2003-01-03 Sun Microsystems, Inc. Using an l2 directory to facilitate speculative loads in a multiprocessor system
EP1402349A2 (en) 2001-06-26 2004-03-31 Sun Microsystems, Inc. Method and apparatus for facilitating speculative stores in a multiprocessor system
US6839808B2 (en) * 2001-07-06 2005-01-04 Juniper Networks, Inc. Processing cluster having multiple compute engines and shared tier one caches
JP3661614B2 (ja) 2001-07-12 2005-06-15 日本電気株式会社 キャッシュメモリ制御方法及びマルチプロセッサシステム
US6766665B2 (en) 2001-12-05 2004-07-27 Emhart Glass S.A. Glass container forming machine
JP4234361B2 (ja) * 2002-06-28 2009-03-04 富士通株式会社 記憶制御装置およびデータ格納方法
JP4180569B2 (ja) 2003-01-27 2008-11-12 富士通株式会社 記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法
US6859123B2 (en) 2003-04-03 2005-02-22 Ge Medical Systems Global Technology Company, Llc Methods and apparatus for positioning permanent magnetic blocks
US7325102B1 (en) * 2003-11-17 2008-01-29 Sun Microsystems, Inc. Mechanism and method for cache snoop filtering
US7117312B1 (en) * 2003-11-17 2006-10-03 Sun Microsystems, Inc. Mechanism and method employing a plurality of hash functions for cache snoop filtering
US7962696B2 (en) * 2004-01-15 2011-06-14 Hewlett-Packard Development Company, L.P. System and method for updating owner predictors
US7484045B2 (en) 2004-03-30 2009-01-27 Intel Corporation Store performance in strongly-ordered microprocessor architecture
US8475985B2 (en) 2005-04-28 2013-07-02 Xerox Corporation Magnetic compositions
JP2007044459A (ja) 2005-08-05 2007-02-22 Noboru Takahashi 電子レンジ用蒸し器
JP2009198253A (ja) 2008-02-20 2009-09-03 Hitachi Maxell Ltd 光学フィルムの検査装置及び検査方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030070060A1 (en) 1991-07-08 2003-04-10 Nguyen Le Trong High-performance, superscalar-based computer system with out-of-order instruction execution
KR100295187B1 (ko) 1995-03-31 2001-09-17 윤종용 순서에따르지않고판독및기입명령을실행하는메모리제어기
JP2000259412A (ja) 1999-03-05 2000-09-22 Internatl Business Mach Corp <Ibm> ストア命令転送方法およびプロセッサ
US6374332B1 (en) * 1999-09-30 2002-04-16 Unisys Corporation Cache control system for performing multiple outstanding ownership requests

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8244985B2 (en) 2004-03-30 2012-08-14 Intel Corporation Store performance in strongly ordered microprocessor architecture

Also Published As

Publication number Publication date
TWI318373B (en) 2009-12-11
CN101539889B (zh) 2011-11-09
US8244985B2 (en) 2012-08-14
JP2005310134A (ja) 2005-11-04
TW200620103A (en) 2006-06-16
KR20060045031A (ko) 2006-05-16
US20090144500A1 (en) 2009-06-04
CN101539889A (zh) 2009-09-23
US7484045B2 (en) 2009-01-27
CN100480993C (zh) 2009-04-22
US20050223177A1 (en) 2005-10-06
JP4452644B2 (ja) 2010-04-21
CN1677341A (zh) 2005-10-05

Similar Documents

Publication Publication Date Title
US12001345B2 (en) Victim cache that supports draining write-miss entries
US7305522B2 (en) Victim cache using direct intervention
US7941584B2 (en) Data processing apparatus and method for performing hazard detection
US7305523B2 (en) Cache memory direct intervention
US9892039B2 (en) Non-temporal write combining using cache resources
US20070136535A1 (en) System and Method for Reducing Unnecessary Cache Operations
KR100876486B1 (ko) 저장 성능 개선
US7380068B2 (en) System and method for contention-based cache performance optimization
US7577791B2 (en) Virtualized load buffers
US20030105929A1 (en) Cache status data structure
US10031848B2 (en) Method and apparatus for improving snooping performance in a multi-core multi-processor
US6839806B2 (en) Cache system with a cache tag memory and a cache tag buffer

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee