KR100243853B1 - 개량된메모리아키텍쳐를위한방법및장치 - Google Patents

개량된메모리아키텍쳐를위한방법및장치 Download PDF

Info

Publication number
KR100243853B1
KR100243853B1 KR1019920007921A KR920007921A KR100243853B1 KR 100243853 B1 KR100243853 B1 KR 100243853B1 KR 1019920007921 A KR1019920007921 A KR 1019920007921A KR 920007921 A KR920007921 A KR 920007921A KR 100243853 B1 KR100243853 B1 KR 100243853B1
Authority
KR
South Korea
Prior art keywords
memory
processor
store
load
store operation
Prior art date
Application number
KR1019920007921A
Other languages
English (en)
Other versions
KR920022101A (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 KR920022101A publication Critical patent/KR920022101A/ko
Application granted granted Critical
Publication of KR100243853B1 publication Critical patent/KR100243853B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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, look ahead
    • 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

개량된 메모리 모델과 구현이 개시된다.
이 메모리 모델은 다중 프로세서에 의해 시작된 메모리 동작에 대한 부분 순서를 제공하기 위해 총 기억순서매김(TSO)와 부분기억순서매김(PSO)을 포함한다. TSO메모리 모델은 기억 및 자동 로드-기억동작에 대해 FIFO 기억버퍼를 표현한다. 이 로드 동작은 FIFO 기억버퍼내에 위치하지 않는다.
이 로드동작은 FIFO 기억버퍼에서 동일 위치에 기억된 값에 대해 검사한다; 만약 그 값이 발견되지 않으면 그후 요구된 값이 메모리로 부터 복귀된다. PSO 메모리모델은 또한 기억 및 자동로드기억동작에 대해 기억버퍼를 포함한다. 그러나 TSO 모델과 다르게 PSO 모델에서 기억 버퍼는 FIFO가 아니다. PSO모델에서 프로세서는 소정의 순서대로 기억 및 자동 로드-기억을 시작할수 있다; 그러나 이러한 동작 프로세서에 의해 시작된 순서를 벗어나서 메모리에 의해 실행될수 있다. 이 실행순서는 오직 번지 메칭과 STBAR 동작에 의해서만 보증된다. STBAR 동작에 의해 분리된 두개의 기억동작은 프로세서에 의해 시작된 순서대로 동작을 실행할 것이다. PSO 모델에서 로드 동작은 기억버퍼내에 위치하지 않는다. 로드동작은 우선 기억버퍼내에서 동일 위치에 기억된 값에 대해 검사한다; 만약 그 값이 발견되지 않으면 그후 요구된 값이 메모리로부터 복귀된다.

Description

개량된 메모리 아키텍쳐를 위한 방법 및 장치
제1도는 본발명의 교시를 포함하는 메모리 시스템에 결합되는 종래의 다중 프로세서의 블록도.
제2도는 종래 강일관성 메모리 모델의 개념도.
제3도는 본발명의 교시를 이용하는 메모리 모델의 개념도.
제4도는 프로세서의 개념도.
제5도는 본발명의 교시를 이용하는 전체기억순서매김(TSO) 메모리 모델의 개념도.
제6도는 본발명의 교시를 이용하는 부분기억순서매김(PSO) 메모리 모델의 개념도.
제7도는 프로세서의 Flush명령 동작을 도시하는 도.
제8도는 본발명의 교시를 이용하는 바람직한 실시예를 도시하는 멀티 프로세서 시스템의 개념도.
제9도는 프로세서의 더욱 자세한 개념도.
제10도는 외부개시의 개념도.
[발명의 배경]
본 발명은 컴퓨터의 메모리 시스템에 관한 것으로 특히 멀티프로세서 데이터 처리시스템에서 사용하기 위한 개량된 메모리 모델에 관한 것이다.
멜티프로세서 시스템은 메모리 시스템에 연결된 다수의 프로세서를 포함한다. 프로세서는 보통 Load, Store 및 아토믹 Load-Store와 같은 동기동작을 사용해서 메모리 시스템과 대화한다. 프로그램을 실행할 때, 프로세서는 레지스터의 내용을 다른 레지스터에 더하거나 서브루틴 콜을 수행하는 것과 같은 다른 동작을 실행할 수 있다. 그러나 이러한 동작들은 프로세서에 의해서 관찰될 때 메모리 시스템의 거동에 영향을 주지 않는다. 프로세서에 의해서 관찰될 때 메모리 시스템의 이러한 거동을 "메모리 모델"이라 부른다.
메모리 모델에 대한 "상세"는 어떻게 메모리 시스템이 동작해야 하는 가에 대한 설명이다. 그러한 상세의 주목적은 하드웨어 설계자와 프로그래머가 독립적으로 작업하는 것을 허용하면서, 어떤 프로그램이든지 상세에 적합한 컴퓨터 시스템의 어떠한 구현상에서도 의도한대로 작용할 것이란 것을 계속해서 확신시키는 것이다. 이상적으로는 상세는 "형식적(formal)"이어야 하고 상세에 대한 적합성이 몇몇 레벨에서 증명되어야만 한다. 그러나 실제 많은 경우에 상세는 "비형식적"이거나 존재하지 않으며, 이 경우 특정 하드웨어 구현은 디폴트에 의해서 메모리 모델의 상세가 된다.
메모리는 N포트 디바이스로서 모델화되며, 여기서 N은 프로세서의 갯수이다. 메모리 모델은 다중 프로세서 시스템뿐 아니라 단일 프로세서 시스템에도 적용된다(제1도 참조). 프로세서는 메모리 동작을 발함으로써 메모리 시스템과 통신한다. 프로세서는 개별포트를 통해 동작을 발한다. 제1도에 도시된 바와 같이, 프로세서 (P1)는 개별포트(11)를 통해 메모리 시스템(10)과 통신한다. 마찬가지로, 프로세서 (PN)는 포트(N)를 통해 메모리(10)와 통신한다.
메모리 모델은 강(혹은 연속)일관성(Strong Consistency)으로부터 다른 타입의 약일관성(Weak Consistency)사이의 어느 곳이든 분포할 수 있다. 강일관성이란 대부분의 프로그래머들에게 친숙한 메모리 모델이다. 강일관성 모델에서 모든 프로세서의 메모리동작은 개별 프로세서의 신호발생순서와 호환하는 단일 글로벌 순서로 실행하는 것처럼 보인다. 이 모델은 직관적으로는 흥미를 끌고 대체적으로 이해가 되는 반면에, 특히 컴퓨터 시스템이 다수의 프로세서를 포함하고 있을 때 최악의 성능을 제공한다. 강일관성 모델에 대한 더 많은 정보에 대해서는 1979년 9월 IEEE Trans. on Computers에서 L. Lampor에 의해 발표된 "How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs"를 참조하라.
더 약한 메모리 모델이 기준 가능한 멀티프로세서의 더 효율적인 구현을 허용하도록 개발되었다. 유감스럽게도, 약 메모리 모델은 강일관성 모델보다 이해하기가 더욱 어려우며, 병렬 소프트웨어 프로그램이 작성될 수 있는 방식을 제한한다. 더 약한 메모리 모델을 구현하는 것은 역시 하드웨어 설계자 입장에서는 상당한 주의를 요하며 더 약한 메모리 모델을 사용하는 것은 프로그래머 입장에서는 강일관성에 의해 제공된 모델을 병합하는 것을 피해야 하는 각별한 노력을 요한다.
따라서 메모리 모델의 선택은 프로그램하는데 있어서의 편리함과 하드웨어에서 고성능에 대한 잠재력을 제공하는 것 사이의 평균(trade-off)을 취해야 하는 것을 포함한다. 이러한 평균에 대한 더 많은 정보는 Proc. Symp. Architectural Support for Programming Languages and Operating Systems(1982)의 2쪽 내지 11쪽에서 Hennessy 등에 의한 "Hardware/Software Tradeoffs for Increased Performance"를 참조하라.
앞으로 설명되는 바와 같이 본발명은 전체기억순서매김(TSO)과 부분기억순서매김(PSO)이란 두개의 개량된 메모리 모델에 대한 형식적인 상세를 설명하고 있으며, 이들 모두는 충분히 "강해서" 프로그램에 있어 편리하고 또한 충분히 "약해서" 고성능을 제공한다.
본 발명의 목적은 하드웨어 설계자들이 약메모리 모델에 의거하여 하드웨어를 설계하독록 허용하면서 동시에 프로그래머들이 강메모리 모델에 의거하여 프로그램을 작성하도록 허용하는 메모리모델을 제공하는데 있다.
[발명의 요약]
두개의 특정모델 즉, 전체기억순서매김(TSO)과 부분기억순서매김(PSO)을 갖는 개량된 메모리 아키텍쳐가 개시된다. 상기 메모리 모델들은 Load와 Store 같은 메모리 동작의 의미론을 정의하며, 프로세서에 의해 이러한 동작이 발해진 순서가 어떻게 메모리에 의해 실행되는 순서에 관계되는가를 설명한다. 이 모델들은 단일프로세서 및 메모리 공유 멀티프로세서 모두에 적용된다. 강일관성의 요구가 더욱 절박하므로 강일관성 메모리 모델을 수행하는 장치는 TSO 와 PSO둘 다를 또한 지원한다. PSO는 TSO의 더 높은 실행버젼이다.
전체기억순서매김(TSO) 메모리 모델은 모든 프로세서의 Store, Flush, 및 아토믹 Load-Store 동작들이 "메모리순서"라고 불리는 단일순서로 순차적으로 메모리에 의해서 실행된다. 더욱이 주어진 프로세서에 대한 메모리 순서에서 Store, Flush, 및 아토믹 Load-Store 동작의 시켄스는 프로세서에 의해 발해진 시켄스와 동일하다. 프로세서에 의해 발해진 Store, Flush, 및 아토믹 Load-Store는 프로세서의 전용 FIFO 기억버퍼에 위치한다.
Load 동작의 경우에, 프로세서는 우선 프로세서의 기억버퍼가 동일 메모리 위치에 대해서 Store를 포함하는가를 판단한다. 만약 프로세서의 기억버퍼가 Store를 포함한다면 그후 Load동작은 가장 최근의 Store의 값을 복귀시킨다; 그렇지 않으면 Load 동작은 직접 메모리로 가며, 프로세서는 블록킹된다. 즉, Load 동작이 값을 복귀시킬 때까지 추가의 메모리 동작을 발하는 것이 금지된다. 아토믹 Load-Store동작은 Load와 Store동작 둘 다처럼 작용한다. 아토믹 Load-Store 등 작은 기억버퍼내에 위치하 며(Store 동작과 유사하게), 아토믹( atomic) Load-Store 동작은 Load 동작의 경우에서처럼 프로세서를 블록킹한다. 다시말해 아토믹 Load-Store 동작은 프로세서의 기억버퍼가 공백이 될 때까지 프로세서를 블록킹하며 그후 메모리로 진행한다.
부분기억순서매김(PSO) 메모리 모델은 모든 프로세서의 Store, Flush, 및 아토믹 Load-Store 동작이 메모리순서로 순차적으로 메모리에 의해 실행되는 것을 보장한다. 그러나 주어진 프로세서에 대한 Store, Flush 및 아토믹 Load-Store 동작의 메모리순서는 일반적으로 이 프로세서에 의해 발해졌던 순서와는 동일하지 않다. 발하는 순서(issuing order)와 메모리순서간의 일치는 STBAR이라 불리우는 새로운 명령을 사용하여 제공된다. 만약 두개의 동작이 프로세서의 발하는 순서에서 STBAR에 의해 분리되거나 두개의 동작이 동일 메모리 위치를 참조한다면 그후 두개의 대응동작의 메모리 순서는 발하는 순서와 동일하다.
프로세서에 의해 발해진 Store, Flush 및 아토믹 Load-Store는 프로세서의 전용 기억버퍼내에 위치한다. 부분기억순서매김 메모리 모델의 기억버퍼가 FIFO가 아닐지라도 프로세서의 기억버퍼는 동일 메모리 위치로 아토믹 Load-Store과 Store의 순서를 유지시킨다. 그렇지 않으면 기억버퍼는 오직 STBAR 명령에 의해 분할된다.
[발명의 상세한 설명]
Load-Store 아키텍쳐 컴퓨터 시스템에서 사용하기 위해 특별히 적용되는 개량된 메모리 아키택쳐가 개시된다. 아래 설명에서 본발명의 완벽한 이해를 제공하기 위해 특정 메모리 장치. 아키텍처 및 구성요소가 제시된다. 그러나 본 발명이 이러한 구체적인 설명없이도 실행될 수 있다는 것은 당해 기술자에겐 명백할 것이다. 그 밖의 경우에는 본 발명을 필요없이 불명료하게 하지 않도록 공지된 회로들은 도면의 형태로 순서대로 도시된다.
[기본 메모리 모델]
본 발명의 메모리 아키텍처에 대한 상세는 컴퓨터 시스템 상에서 실행하는 소프트웨어 프로그램에 의해 관찰되는 거동을 특정하는 모델이다. 하드웨어는 그 구현이 메모리 모델에 적합한 한 어떤식으로든 실행될 수 있다. 메모리 모델의 상세는 소프트웨어 프로그램과 하드웨어의 구현이 각각 독립적으로 개발되도록 허용하는 한편 어떤 소프트웨어 프로그램이든지 아무 구현에서 실행하도록 계속해서 허용한다.
제2도에 종래의 강일관성 메모리 시스템의 개념적인 설명이 도면형태로 도시된다. 개념적으로 단일포트 메모리(20)는 "스위치(21)"를 통해 프로세서로부터 메모리 동작을 수신한다. 각 프로세서는 개별포트를 통해 메모리동작을 발한다. 제2도에 도시되듯이 개별 프로세서의 포트는 번호 22, 23, 24 및 25에 의해 구별된다. 메모리가 동작을 실행하는 순서는 스위치가 프로세서의 포트를 선택하는 순서에 대응한다. 실제 선택과정은 포트(22), 포트(23), 포트(24) 및 포트(25)사이에서 움직이는 스위치(21)에 의해 개념적으로 설명된다.
제3도에 본발명의 교시를 포함하는 메모리 모델의 개념적인 설명이 도면의 형태로 도시된다. 앞서 설명한 바와 같이, 각 프로세서는 포트를 통해 단일포트 메모리(30)로 메모리 동작을 발한다. 프로세서의 각 포트는 전용의 기억버퍼, 예를 들면, Store, Flush, 및 아토믹 LoadStore를 유지하는 기억버퍼(32, 33, 34 또는 35)를 포함한다. 개념적으로 스위치(31)는 각 메모리 동작을 계속하는 동안 한번에 단일포트 메모리(30)를 프로세서의 포트들중의 하나에 연결시킨다. 스위치(31)가 하나의 포트에서 다른 포트로 옮겨가는 순서는 프로그램 관점에서는 판단적이 아니며, 이 순서는 메모리동작의 메모리순서를 정의한다. 본발명의 메모리 모델의 구조 및 동작에 관한 부가적인 구체적 사항은 아래에서 설명된다.
아토믹 Load-Store명령은 자동시켄스 "Load에 의해 복귀된 값의 어떤 임의적인 함수인 값의 Store에 의해 뒤따르는 Load"로 정의된다. 예를 들어, Swap, Compare-and-Swap 및 Fetch-and-Add는 모두 아토믹 Load-Store 동작이다.
제4도에 프로세서의 개념적인 설명이 도시된다. 프로세서(40)는 이상화된 프로세서(IP)(41)와 명령버퍼(IBuf)(43)를 포함한다. 이상화된 프로세서(41)는 오버랩없이 한번에 하나씩 명령을 실행한다. 각 명령에 대해서 이상화된 프로세서(41)는 명령버퍼(43)로부터 명령을 인출(fetch)하고, 명령을 실행하고, 프로세서의 메모리 포트로 직접 임의의 데이터 Load와 Store를 발한다. 만약 명령이 명령버퍼(43)내에 이미 있다면, 명령버퍼(43)는 이상화된 프로세서(41)에 의해 인출된 각 명령에 대해 프로세서의 메모리 포토를 통해 명령 Load를 발한다. 명령버퍼(43)는 이상화된 프로세서(41)로부터 인출된 명령을 기다리기보다는 메모리포트를 통해 명령을 미리 인출한다.
전체기억순서매김(TSO)과 부분기억순서매김(PSO)으로 언급되는 두개의 모델을 갖는 본발명의 메모리 아키텍처가 개시된다.
[전체기억순서매김(TSO)]
제5도에 본발명의 전체기억순서매김(TSO) 메모리 모델이 도면의 형태로 개념적으로 개시된다. 프로세서의 각 포트는 전용의 FIFO 기억버퍼(51, 52,53 또는 54로 구별되는)를 포함한다. 프로세서는 프로세서의 개별포트를 통해 단일포트 메모리(50)로 메모리 동작을 발한다. 개념적으로 스위치(55)는 각 메모리 동작이 계속되는 동안 단일포트 메모리(50)를 한번에 포트들중의 하나에 연결시킨다. 프로세서에 의해 발해진 Store, Flush, 및 아토믹 Load-Store는 프로세서의 FIFO 기억버퍼내에 위치한다. TSO 메모리 모델은 모든 프로세서의 Store, Flush, 및 아토믹 Load-Store 명령이 단일포트 메모리(50)에 의해 "메모리순서"라고 부르는 것에 따라 순차적으로 실행되도록 보장한다. 이들 동작의 메모리순서는 프로세서의 포트가 선택되는 순서에 대응한다. 선택과정은 기억버퍼(51,52,53 및 54)를 포함하는 포트들 사이에서 움직이는 스위치(55)에 의해 개념적으로 도시된다. 그러므로 단일 포트 메모리(50)가 주어진 프로세서에 대해 이러한 동작들을 실행하는 순서는 프로세서가 동작들을 발하는 순서와 동일하다.
프로세서가 Load 동작을 발하면 프로세서는 제일 먼저 기억버퍼가, 발해진 Load동작과 동일한 메모리 위치에 Store 동작을 포함하는 지를 판단하기 위해 프로세서 전요의 FIFO 기억버퍼를 검사한다. 만약 프로세서의 FIFO기억버퍼가 동일한 메모리 위치에 Store동작을 포함한다면 Load 동작은 가장 최근의 Store 동작의 값을 복귀시키며, 그렇지 않다면 Load 동작은 직접 단일포트 메모리(50)로 간다. Load 동작이 값을 복귀시킬 때까지 프로세서는 Load이후 어떠한 메모리동작이든 발하는 것이 금지된다.
아토믹 Load-Store 동작은 Load 및 Store 동작처럼 동작한다. Store동작과 마찬가지로 아토믹 Load-Store 동작은 프로세서의 FIFO 기억버퍼내에 위치하며; 아토믹 Load-Store 동작은 또한 프로세서를 블록킹한다( Load 동작과 비슷하게), 다시말해, 아토믹 Load-Store 동작은 프로세서의 FIFO 기억버퍼가 빌 때까지 프로세서가 어떠한 동작이든 발하는 것을 금지시키며 그후 단일포트 메모리(50)로 진행한다. LoadStore 동작이 프로세서를 블록킹하면 프로세서에 의해 발해진 어떠한 동작도 프로세서 전용의 FIFO 기억버퍼내에 위치할 수 없다. 단일포트 메모리(50)는 아토믹 Load-Store 동작을 자동으로 실행한다. 즉 LoadStore 동작의 Load 및 Store 동작 사이에는 어떠한 동작도 끼어들 수 없다.
본 발명의 TSO 메모리 모델은 강일관성 메모리 모델보다 고성능을 가져온다. TSO 모델을 위해 작성된 프로그램은 강일관성 메모리 모델을 구현하는 컴퓨터 시스템상에서 또한 실행될 것이다.
제5도에 도시된 직관적 모델에 덧붙여 TSO 모델은 6개의 공리, 즉 순서( Order), 원자가(Atomicity), Termination, Value, LoadOp 및 StoreStore를 이용해서 형식적으로 또한 설명될 수 있다.
이와 같은 형식적인 설명이 부록A에 나타난다.
[부분기억순서매김(PSO)]
제6도에 본 발명의 부분기억순서매김(PSO) 메모리 모델의 도면형태로 개념적으로 도시된다. PSO 모델은 TSO 모델과 강일관성 모델 둘다보다 고성능을 제공한다. 더욱이 PSO 모델을 위해 작성된 프로그램은 강일관성 모델을 구현하는 컴퓨터 시스템이나 TSO 모델을 구현하는 컴퓨터 시스템상에서 또한 실행될 것이다. TSO 모델과 마찬가지로 프로세서의 각 포트는 프로세서에 의해 발해진 Store, Flush 및 아토믹 Load-Store 동작들이 위치하는 전용의 기억버퍼를 포함한다. 그러나 PSO 모델의 기억버퍼는 FIFO가 아니고, STBAR 명령과 번지부합에 의해서 순서매김되므로 기억버퍼내 두개의 동작은 오직 프로세서가 발한 순서대로 STBAR에 의해 분리되거나 동일번지로 발해진 경우에만 순서매김된다. 프로세서에 의해 발해진 Store, Flush 및 아토믹 Load-Store는 프로세서의 기억버퍼 내에 위치한다. 메모리 동작의 순서는 프로세서의 포트가 선택되는 순서에 대응한다. 제6도를 다시 참조하면, 선택과정이 각 메모리동작이 계속되는 동안 한번에 단일포트 메모리(80)를 프로세서의 포트들중의 하나에 연결시키는 스위치(89)에 의해 개념적으로 도시된다. 스위치(89)가 한 포트에서 다른 포트로 옮겨가는 순서는 프로그램의 관점에서 보면 판단적인 것이 아니며 그리고 동작시 메모리순서를 정의한다.
프로세서가 Load 동작을 발하면, 프로세서는 먼저 동일 메모리위치에 Store 동작을 포함하는지를 판단하기 위해 프로세서의 기억버퍼를 검사한다. 만약 프로세서의 기억버퍼가 동일 메모리 위치에 Store 동작을 포함한다면, Load 동작은 가장 최근의 Store 동작의 값을 복귀시킨다. 그렇지 않으면 Load 동작은 직접 단일포트 메모리(80)로 가며(제6도), Load 동작은 또한 Load 동작이 값을 복귀시킬 때까지 프로세서가 더 이상의 메모리 동작을 발하는 것을 블록킹한다.
아토믹 Load-Store 동작은 Load 및 Store 동작처럼 동작한다. 아토믹 Load-Store 동작은 기억버퍼내에 위치하면(Store 동작과 비슷하게), 아토믹 Load-Store 동작은 또한 프로세서를 블록킹한다(Store 동작과 비슷하게). 단일포트 메모리(80)는 아토믹 Load-Store 를 자동으로 실행한다. 즉 어떠한 동작도 아토믹 Load-Store 동작의 Load 및 Store사이에 끼어들수 없다.
PSO 모델은 또한 7개이 공리, 즉 순서, 원자가, Termination, Value, Load0p, StoreStore, 및 StoreStoreEq를 이용하여 형식적으로 설명될 수 있다. 이와 같은 형식 표현이 부록A에 나와있다.
[Flush 명령의 의미론]
Flush 명령은 Flush를 실행하는 프로세서에 의해 Flush의 타겟(즉, Flush에 의해 번지 지정된 메모리위치)으로 계속되는 명령인출들의 Flush하기 전에 프로세서에 의해 발해진 Load, Store 및 아토믹 Load-Store후 실행하는 것으로 나타나는 것을 보장한다. 멀티프로세서에서 Flush는 또한 Flush하기 전에 Flush를 실행하는 프로세서에 의해 발해진 Flush의 타겟으로의 Store 및 아토믹 Load-Store가 Flush의 실행후 모든 다른 프로세서의 명령인출들에 대해 가시적이 되도록 보장한다. 프로세서가 적절한 Flush 및 STBAR 명령(STBAR 명령은 PSO에 대해서만 필요)과 띄엄 띄엄 배치된 Store 또는 아토믹 Load-Store의 시켄스를 실행하면, 모든 프로세서의 명령 인출들에 대하여 만들어진 순서대로 일어나도록 변화가 나타난다.
제7도에 Flush 명령을 실행하는 프로세서(97)가 도면의 형태로 개념적으로 도시된다. 프로세서(97)의 명령버퍼(IBuf)(96)는 국소플러쉬(lflush)지연(95), IBuf 데이터(94) 및 원격플러쉬(rflush) FIFO(92)를 포함한다. lflush지연(95)은 몇 개의 고정된 수(K)의 명령에 의해 국소적으로 발생된 Flush의 실행을 지연시킨다. IBuf 데이터(94)는 IBuf(96)의 데이터를 포함한다. 원격플러시 FIFO(92)는 원격프로세서 (즉, 99, 990 및 995)에 의해 발생된 Flush동작을 포함한다.
프로세서(97)는 IBuf(96)로 국소플러시(lflush) 동작을 발하고 기억버퍼(98)내에 원격플러시(rflush) 동작을 위치시킴으로써 Flush "A"를 실행한다. IBuf(96)는 IBuf(96)내의 번지 "A"의 내용을 무효화함으로써 몇 개의 고정된 수의 명령(K)이 지연된 후에 lflush 동작을 실행한다. 기억버퍼(98)내에 위치한 rflush 동작은 순서매김을 위해서 Store 동작과 같이 취급된다. 즉 rflush 동작은 개념적으로 스위치(91)를 통해 단일포트 메모리(90)로 가고 다른 프로세서의 rflush FIFO 내에 위치함으로써 글로발 메모리 순서로 나타난다. 다른 프로세서들의 rflush FIFO는 93, 991 및 996에 의해 구별된다. rflush동작은 메모리의 내용에 아무런 영향도 주지 못한다. rflush가 그 프로세서의 rflush FIFO의 선두에 오면 원격 프로세서의 IBuf는 메모리 번지 "A"의 내용을 무효화시킨다. 예를 들어 rflush동작이 rflush FIFO(93)의 선두에 오면 원격프로세서( 99)의 IBuf(92)는 번지 "A"의 내용을 무효화시킨다.
lflush 동작은, 프로세서에 의한 Flush 동작후 K개 이상의 명령이 발해진 번지로 명령 Fetch가 프로세서의 IBuf내에는 위치하지 않고, 프로세서의 포트에서 명령 Load로서 발하는 순서로 나타나는 것을 보장한다. 예를 들어, 프로세서(97)에 의해 발해진 Flush "A" 동작에 대한 응답에서 lflush 동작은 Flush "A"동작후 적어도 K명령을 발하는 임의의 명령 Fetch가 IBUF(96)내에 위치하지 않고 프로세서(97)의 포트에서 명령 Load로서 발하는 순서대로 나타나는 것을 보장한다.
제7도에 도시된 직관적 모델에 부가해서, Flush 명령은 3개의 공리 즉, IFetchValue, FlushTermination, 및 IFetchIFetch를 이용해서 형식적으로 설명될 수 있다. 이와 같은 형식적인 설명이 부록A에 나타난다.
[바람직한 실시예]
바람직한 실시예의 아래 설명은 본 발명의 교지를 담고있는 주기억장치에 결합된 다중 프로세서시스템을 설명하고 있다. 제8도를 참고하면, 주기억장치(109)에 결합된 멀티프로세서시스템이 도면의 형태로 개념적으로 도시된다. 도시되듯이, 프로세서(104)는 프로세서 버스(110) 및 외부캐시(103)에 결합되고, 이 외부캐시( 103)는 메모리버스(101) 와 메모리버스(102) 모두에 결합된다. 마찬가지로 프로 세서(106)는 프로세서 버스(111) 및 외부캐시(105)에 결합되고, 이 외부캐시(105)는 메모리버스(101)와 메모리버스(102) 모두에 결합된다. 도시되듯이, 프로세서( 108)은 프로세서 버스(112) 및 외부캐시(107)에 결합되고 이 외부캐시(107)은 메모리버스(101)와 메모리버스(102) 모두에 결합된다. 본 실시예에서는 더높은 대역폭을 제공하기 위해 하나의 메모리 버스가 아니라 두개의 메모리버스가 실행되며, 이것은 시스템으로 하여금 더많은 프로세서와 구성되도록 허용한다. 예를들어, 메모리버스(101)는 조정자(116)에 결합되며, 메모리버스(102)는 조정자(117)에 결합된다. 버스조정자에 대한 더많은 정보는 1990년 11월 30일자로 출원된 "Arbitration of Packet Switched Buses, including Buses for Shared MZemory Multiprocessor"란 제목의 미국특허 출원(출원번호 07/621.123호)을 참조하라.
각 프로세서의 외부캐시(즉, 103, 105 및 107)는 메모리 버스들을 통해서 주기억장치(109)로 트랜잭션을 송신한다. 현재의 바람직한 실시예에서, 메모리버스(101, 102)는 트랜잭션 번지에 기초해서 인터리브된다.
각 메모리버스들은 적어도 4개의 트랜잭션 즉, ReadBlock 트랜잭션, WriteSh ared 트랜잭션, 아토믹 Op-Shared 트랜잭션, 및 FlushBlock 트랜잭션을 지원한다. 요구된 데이터가 외부캐시(즉, 103)에서 발견되지 않을 때, 주기억장치(즉, 109)로부터 혹은 다른 외부캐시(즉, 105)로부터 데이터의 블록을 판독하기 위해 외부캐시(즉, 103)에 의해 ReadBlock 트랜잭션이 발해진다. 프로세서(즉, 104)가 공유된 위치로 기록동작을 발하면, WriteShared가 하나의 외부캐시(예를 들어, 103)에 의해 발해져서 다른 외부캐시(예를들어 105 및 107)로 기록을 동시 통신한다. "공유된" 위치는 하나 이상의 외부캐시내에 존재하는 메모리의 블록이다. 아토믹 Op-Shared 트랜잭션이 외부캐시(예를들어, 103)에 의해 발해져서 공유된 위치로 아토믹 Load-Store 동작을 동시 통신한다. FlushBlock이 외부캐시(즉, 103)에 의해 시발해져서 주기억 장치(즉, 109)로 데이터의 블록을 기록한다.
상기 트랜잭션들을 지원하는 것에 부가하여, 각 메모리버스는 외부캐시(즉, 103)로 하여금 그 외부캐시(즉, 103)가 특정메모리동작에서 나타나는 번지를 갖는 메모리블록을 갖는가와 이 메모리블록이 그 외부캐시의 프로세서(즉, 104)에 의해 최종적으로 기록되었는가(스누핑(Snooping)이라고도 함)를 다른 외부캐시(즉, 103 및 107)에 대해 표시하도록 허용한다. 만약 메모리블록이 외부캐시의 프로세서에 의해 기록된다면 이 메모리 블록은 그 프로세서에 의해 "소유된"것으로 언급된다. 메모리버스에 관한 더 자세한 정보는 1990년 11월 30일자 출원된 "Consistent Packet Switched Bus for Shared Memory Multiprocessors"란 명칭의 미국특허출원(출원번호 : 07/620,528)을 참조하라.
각 프로세서는 사용될 메모리 모델이 TSO 모델인지 혹은 PSO 모델인지를 표시하는 모드비트를 갖는다. 만약 모드 비트가 PSO 모델로 설정되면, 프로세서는 PSO메모리 모델의 상세에 따라서 메모리 동작들을 발한다. 만약 모드 비트가 TSO 모델로 설정되면, 프로세서는 TSO 메모리 모델의 상세에 따라서 메모리 동작들을 발한다.
명령 Fetch 및 명령 실행유니트에 부가해서, 프로세서(즉, 104)는 또한 기억버퍼 및 내부캐시를 포함한다. 제9도를 참고하면, 프로세서(104)의 더 자세한 개념적 설명이 도면의 형태로 도시된다. 프로세서(104)는 기억버퍼(1102), 내부캐시(1104), 및 명령 Fetch과 명령 실행유니트(1100)를 포함한다. 내부캐시(1104)는 프로세서(104)의 명령들과 데이터를 유지한다. 내부캐시(1104)의 내용은 또한 프로세서(104)의 개별 외부캐시(즉, 103)의 내용의 서브세트이다. 프로세서(104)가 Store 동작을 발할 때, 그리고 만약 내부캐시(1104)의 내용이 또한 Store 동작에 의해 참조되는 동일 메모리위치를 포함한다면 프로세서(104)는 내부캐시(1104)의 내용을 갱신하며 그렇지 않으면 프로세서(104)는 내부캐시(104)를 바이패스한다. 내부캐시(1104)의 내용에 상관없이, 프로세서(104)는 프로세서 버스(110)를 통해 프로세서(104)의 외부캐시(103)로 Store 동작을 발한다(제8도). 기억버퍼(1102)는 Store 와 아토믹 Load-Store 동작들이 프로세서 버스(110)를 통해 가기전에 프로세서(104)에 의해 발해진 이 동작들을 버퍼링는 FIFO큐이다.
제10도를 참고하면, 외부캐시(103)에 대한 좀더 자세한 개념적 설명이 도면의 형태로 도시된다. 외부캐시(103)는 캐시기억장치(1200), 제어논리회로(1202), 큐(1204) 및 큐(1206)를 포함한다. 제어논리회로(1202)는 프로세서로부터 동작을 수신하여 그 동작이 외부캐시(103)내에서 실행될 수 있는지를 판단한다. 만약 동작이 외부캐시(103) 내에서 전적으로 실행될 수 있다면 제어논리회로(1202)는 동작을 발한 프로세서에 따라서 응답한다. 예를 들면, 프로세서는 외부캐시(103)로 Load 동작을 발할 수 있으며 외부캐시(103)는 Load 동작에 의해 요구되는 데이터를 포함하며 그후 제어논리회로(1202)는 캐시기억장치(1200)로부터 데이터를 판단하고 Load 동작을 발한 프로세서로 데이터를 복귀한다. 만약 외부캐시(103)가 Load 동작에 의해 요구된 데이터를 포함하지 않는다면 제어논리회로(1202)는 번지의 인터리브에 따라 Read Block 트랜잭션을 큐(1204) 혹은 큐(1206)중 하나에 위치시킨다. 이 ReadBlock 트랜잭션은 적절한 버스(101 또는 102)를 통해 가며 얼마후 주기억장치(109) 혹은 다른 캐시(즉, 105, 107)가 Read Block에 대해 응답한다(제8도). 응답이 적절한 메모리버스상에서 주신되면, 제어논리회로(1202)는 응답을 Load 동작을 발한 프로세서로 보내고 데이터를 ReadBlocd응답으로부터 캐시기억장치(1200)에 기록한다.
프로세서가 공유된 메모리 위치로 Store 동작을 발하면 제어논리회로(1202)는 번지에 따라서 Store 동작을 수신해서 큐(1204)혹은 큐(1206)내에 위치시킨다. 여기서 중요한 점은 이들 큐는 독립적으로 중재되는 버스(즉, 메모리버스 101 또는 102)로 작동하므로 Store가 실행될 순서와 프로세서에 의해 발해진 순서가 동일하다는 보장은 없다. 어떻게 이 순서가 실행에 의해 보장되는지 아래의 Store 동작 설명부분에서 설명될 것이다.
아래의 예는 본발명의 취지를 이용하는 바람직한 실시예의 주기억장치로서 프로세서에 의해 발해진 메모리동작의 실행을 설명한다.
[PSO 모드 동작]
[Load 동작의 설명]
제9도를 참고하면, 프로세서(104)가 Load명령을 실행할때 프로세서의 실행 유니트(1100)는 요구된 데이터에 대해서 내부캐시(1104)를 검사한다. Load명령에 응답하여 만약 요구된 데이터가 내부캐시(1104)내에서 발견되면 ("히트"라고도 함) 실행유니트(1104)는 내부캐시(1104)로부터 데이터를 판독한다. 만약 요구된 데이터가 내부캐시(1104)내에 발견되지 않으면 ("미스"라고도 함) 프로세서(104)는 동일 메모리 위치에 Store 동작이 있는지를 판단하기 위해 기억버퍼(1102)를 검사한다. 만약 동일 메모리 위치에 Store 동작이 있으면 Load 동작은 가장 최근의 Store 동작에 의해 기록된 값을 복귀시킨다. 그렇지 않으면 프로세서(104)는 프로세서 버스(110)을 통해 외부캐시(103)로 Load 동작을 발한다. 제8도를 참조하면, Load 동작에 대한 응답에서 만약 요구된 데이터가 외부캐시(103)내에 발견되면, 외부캐시(103)는 프로세서 버스(110)을 통해 프로세서(104)로 요구된 데이터를 복귀한다. 만약 요구된 데이터가 외부캐시(103)내에서 발견되지 않으면 외부캐시(103)는 적절한 메모리 버스상에서(번지의 인터리브에 따른 메모리버스 101또는 102) ReadBlock 트랜잭션을 발하고 응답을 기다린다. 만약 Load 동작의 번지에 의해 점유될 캐시위치가 다른 번지에 의해 현재 점유되고 그 번지가 외부캐시(103)에 의해 "점유됨"으로 표시되면, 외부캐시(103)는 FlushBlock 트랜잭션을 발해서 테이터를 주기억장치(109)에 기록한다. 제10도를 참조하면 ReadBlock에 대한 응답이 수신되면 외부캐시(103)는 데이터를 캐시기억장치(1200)로 집어 넣어서 Load 동작에 응답하여 데이터를 프로세서 버스로 복귀시킨다.
제9도를 다시 참고하면, 프로세서(104)가 프로세서 버스(110)를 통해 데이터를 수신하면, 프로세서(104)는 데이터 내부캐시(1104)로 위치시키며 또한 데이터를 실행유니트(1100)로 복귀한다.
[Store 동작의 설명]
프로세서의 실행유니트(1100)에 의해 실행된 Store명령은 프로세서의 기억버퍼(1102)에 직접 위치한다(제9도). Store명령에 대한 응답에서, 만약 내부캐시 (1104)가 번지지정된 메모리 위치를 포함하면 그후 내부캐시(1104)의 내용은 또한 갱신된다. 그러므로 프로세서에 의해 발해진 모든 Store명령들은 이 프로세서의 외부캐시로 송신된다.
만약 프로세서(104)의 외부캐시(103)가 Store 동작에 의해 번지지정된 메모리 위치를 포함하고 있지 않다면 그후 이 프로세서의 외부캐시는 적절한 메모리 버스상에서 ReadBlock 트랜잭션을 발하며 메모리버스상에서 응답을 기다린다(제8도). 만약 Store 동작의 번지에 의해 점유될 캐시위치가 현재 또다른 번지에 의해 점유되며, 이 번지가 이 외부캐시(103)에 의해 "소유된"으로 표시될 경우, 외부캐시(103)는 주기억장치(109)로 데이터를 기록하기 위하여 FlushBlock을 또한 발한다. 외부캐시(103)가 ReadBlocd 트랜잭션에 대한 응답에서 적절한 메모리 버스로부터 응답 데이터를 수신하면, 외부캐시(103)는 외부캐시(103)의 캐시기억장치의 데이터를 집어넣으며 마치 외부캐시(103)가 Store 동작에 의해 번지지정된 메모리 위치를 초기에 포함했었던 것처럼 Store 동작에 응답한다.
만약 외부캐시(103)가 Store 동작에 의해 번지지정된 메모리위치를 포함한다면 그후 제어논리회로(1202)는 캐시위치가 공유되었는지를 판단한다(제10도), 만약 외부캐시(103) 내 캐시위치가 공유되지 않았다면 그후 제어논리회로(1202)는 캐시기억장치(1200)를 Store 동작의 값으로 갱신시킨다. 만약 외부캐시(103) 내 캐시위치가 공유되면, 그후 제어논리회로(1202)는 적절한 메모리 버스상에서 주기억장치(109)로 WriteShared 트랜잭션을 송신한다. 주기억장치(109)는 번지내에 존재했던 데이터값과 번지를 포함하는 WriteShared 트랜잭션에 대해 응답을 발생시킨다. 외부캐시 (103)가 주기억장치(109)로부터 응답을 수신하면 외부캐시(103)는 캐시기억장치 (1200)를 WriteShared 트랜잭션의 값으로 갱신시킨다.
[아토믹 Load-Store 동작의 설명]
실행유니트(1100)에 의해 실행된 아토믹 Load-Store명령이 직접 기억버퍼( 1102)에 위치된다(제9도). 실행유니트(1100)는 아토믹 Load-Store 동작이 값을 복귀시킬 때까지 대기한다. 즉, 아토믹 Load-Store 동작이 값을 복귀할 때까지 또다른 명령을 발하지 않는다.
만약 프로세서(104)의 내부캐시(1104)가 아토믹 Load-Store 동작에 의해 번지지정된 위치를 포함한다면 그후 내부캐시(1104)의 내용은 또한 아토믹 Load-Store 동작에 의해 기록된 값으로 갱신된다. 그러므로, 모든 아토믹 Load-Store 동작은 외부캐시(즉, 103)로 또한 송신된다(Store 동작과 비슷하게). 만약 외부캐시(103)가 아토믹 Load-Store 동작에 대한 응답에서 요구된 데이터를 포함하지 않는다면, 그후 외부캐시(103)는 적절한 메모리버스상에서 ReadBlock 트랜잭션을 발하며 응답을 기다린다(제8도). 아토믹 Load-Store명령의 번지에 의해 점유될 캐시 위치가 또다른 번지에 의해 점유되고 그 번지가 외부캐시(103)에 의해 "소유된"으로 표시된다면 외부캐시(103)는 주기억장치(109)로 현재의 데이터를 기록하기 위하여 FlushBlock 트랜잭션을 발한다. 외부캐시(103)가 ReadBlock 트랜잭션에 대한 응답에서 적절한 메모리버스로부터 응답 데이터를 수신하면 외부캐시(103)는 데이터를 캐시기억장치(1200)에 집어넣으며, 마치 외부캐시(103)가 요구된 위치를 최초로 포함하는 것처럼 아토믹 Load-Store 동작에 응답한다.
만약 외부캐시(103)가 아토믹 Load-Store에 의해 번지지정된 위치를 포함한다면, 그후 제어논리회로(1202)는 캐시위치가 공유되었는지를 판단한다. 만약 외부캐시(103) 내 캐시위치가 공유되어 있지 않으면 그후 제어논리회로(1202)는 판독과 기록사이에 어떠한 Store도 끼어들 수 없도록 아토믹적으로 위치를 판독하고 새값을 기록한다. 만약 외부캐시(103)내 캐시위치가 공유되어 있으면 제어논리회로(1202)는 적절한 메모리 버스상에서 주기억장치(109)로 아토믹 Op-Shared 트랜잭션을 송신한다(제8도). 주기억장치(109)는 트랜잭션의 요구파트로서 번지와 값을 포함하는 아토믹 Op-Shared 트랜잭션에 대한 응답을 발생시킨다. 외부캐시(103)가 주기억장치로부터 응답을 수신하면 외부캐시(103)는 어떠한 Store 동작도 판독과 기록사이에서 끼어들지 못하도록 캐시위치를 판독해서 새데이터값을 기록한다. 최종적으로 외부캐시(103)는 프로세서 버스를 통해 아토믹 Load-Store 동작을 발하는 프로세서로 캐시위치로부터 판독된 데이터값을 복귀시킨. 프로세서(104)가 아토믹 Load-Store에 의해 복귀된 데이터 값을 수신하면 프로세서(104)는 데이터값을 실행 유니트(1100)로 송신하며 그후 실행유니트(1100)는 다음 명령을 실행하기 위해 진행한다(제9도).
[STBAR 동작의 설명]
실행유니트(1100)에 의해 발해진 STBAR 동작은 프로세서(104)의 기억버퍼내에 위치한다(Store 동작과 비슷함)(제9도 참조). STBAR 동작이 기억버퍼(1102)의 헤드에 도달하면 프로세서(104)는 기억버퍼(1102)로부터 STBAR를 제거하며, 프로세서(104)는 이어지는 Store 동작이 프로세서 버스상에 나타나도록 허용하기 전에 STBAR 동작에 앞서 그 프로세서의 외부캐시로 발해졌던 모든 Store 동작이 실행완료될 때까지 대기한다. 프로세서의 대기상태는 프로세서가 PSO 메모리 모델의 주요순서매김요구를 이행하도록 허용하여 STBAR 명령전에 발해진 모든 Store명령이 STBAR 명령후에 발해졌던 임의의 Store명령전의 실행을 완료한다. STBAR 명령은 프로세서의 실행유니트(즉, 1100)를 블록킹하지 않는다.
[Flush 명령의 설명]
Flush 명령은 프로세서(104)의 실행유니트(1100) 및 명령 Fetch 로 하여금 어떠한 내부명령버퍼이든 깨끗하게 비우고 Flush후에 발해졌던 명령을 실행하고 있는 어떠한 내부파이프라인 스테이지든 플러시(flush)하도록 한다.
[ReadBlock 트랙잭션의 설명]
외부캐시(103)가 메모리버스(101 또는 102)로부터 ReadBlock 트랜잭션을 수신하면, 외부캐시(103)는 ReadBlock 트랜잭션의 번지가 외부캐시의 캐시기억장치내에 존재하는지와 번지가 이 외부캐시에 의해 "소유된"것인지를 판단한다(제8도). 제10도를 다시 참조하면, 만약 ReadBlock 트랜잭션의 번지가 캐시기억장치내에 존재하고 번지가 이 외부캐시(103)에 의해 "소유된"경우 이 외부캐시(103)는 주기억장치(109)가 ReadBlock 요구에 대해 응답하는 것을 금지하며 이 외부캐시(103)의 캐시기억장치로부터 인출된 데이터를 포함하는 응답을 발생시킨다.
[WriteShared 트랜잭션의 설명]
외부캐시(103)가 WriteShared 트랜잭션을 주기억장치로 발하고 응답을 수신하면, 이 외부캐시(103)는 그후 그 응답의 데이터를 캐시기억장치(1200)에 기록한다(제1도). 그 다음, 이 외부캐시(103)는 캐시위치를 소유된 것으로 표시하고 Store가 완료되었음을 프로세서(104)에 통지한다.
제8도를 다시 참조하면 외부캐시(103)가 다른 외부캐시(105)에 의해 발해졌던 WriteShared 트랜잭션에 대한 응답을 주기억장치(109)로부터 수신하면, 외부캐시 (103)는 WriteShared 트랜잭션에 의해 번지지정된 위치가 외부캐시(103)내에 존재하지 않을 경우 아무것도 하지 않는다. 만약 위치가 외부캐시(103)내에 존재하지 않으면 외부캐시(103)는 외부캐시(103)의 캐시기억장치에 데이터를 기록하고, 위치를 소유되지 않은 것으로 기록하며, 위치가 내부캐시내에 존재하면 캐시위치를 무효화하기 위해 프로세서(104)의 내부캐시로 요구를 송신한다. 내부캐시의 내용은 외부캐시 내용의 서브세트이므로 내부캐시위치의 무효화는 프로세서의 내부캐시와 외부캐시사이의 데이터의 일관성을 유지한다. 캐시 일관성에 관한 더 자세한 내용은 1990년 11월 30일 출원된 "Consistency Protocols for Shared Memory Multiprocessors"란 명칭의 미국특허출원(출원번호:07/620,496호)을 참조하라.
[아토믹 Op-Shared 트랜잭션의 설명]
외부캐시(103)와 주기억장치(109)에 대해 아토믹 Op-Shared 트랜잭션을 발하고 응답을 수신하면, 이 외부캐시(103)는 캐시위치를 소유된 것으로 표시하고, 이전값을 아토믹적으로 판독하여 새로운 값을 캐시위치에 기록하며 캐시위치로부터 판독된 값을 프로세서로 복귀시킨다(제8도). 외부캐시(103)가 다른 외부캐시(105)에 의해 발해졌던 아토믹 Op-Shared 트랜잭션에 대한 응답을 주기억장치(109)로부터 수신하는 경우, 아토믹 Op-Shared 트랜잭션에 의해 번지지정된 위치가 외부캐시(103)내에 존재하지 않으면 외부캐시(103)는 아무것도 하지 않는다. 만약 아토믹 Op-Shared 트랜잭션에 의해 번지 지정된 위치가 외부캐시내에 존재한다면, 그후 외부캐시(103)는 이전값을 아토믹적으로 판독해서 새값을 외부캐시(103)의 캐시기억장치에 기록하며, 그 위치를 소유되지 않은 것으로 표시하고, 그리고 위치가 내부캐시에 존재한다면 캐시 위치를 무효화하기 위하여 프로세서(104)의 내부캐시로 요구를 송신한다. 캐시위치의 무효화는 프로세서의 내부캐시와 외부캐시 사이에 데이터의 일관성을 유지한다.
[FlushBlock 트랜잭션의 설명]
외부캐시는 메모리버스상에서 FlushBlock 트랜잭션을 무시한다.
[TSO 모드 동작]
[Load 동작의 설명]
TSO 모드에서 Load 동작의 설명은 PSO 모드에서와 동일하다.
[Store 동작의 설명]
만약 프로세서(104)에 의해 앞서 발해진 Store 동작이 완료되지 않았다면 프로세서(104)는 프로세서 버스(110) 상 Store 동작을 발하지 않는다는 점을 제외하고는 TSO 모드에서의 Store 동작의 설명은 PSO 모드에서와 동일하다.
[아토믹 Load-Store 동작의 설명]
TSO 모드에서의 아토믹 Load-Store 동작에 대한 설명은 PSO 모드에서와 동일하다.
[STBAR 동작의 설명]
TSO 모드에서 실행될때 프로세서는 STBAR 동작을 무시한다. 다시말해, STBAR 동작은 널(null) 동작("Nop")으로서 실행된다.
[Flush 동작의 설명]
TSO 모드에서의 Flush 명령에 대한 설명은 PSO 모드에서와 동일하다.
[ReadBlock 트랜잭션의 설명]
TSO 모드에서의 ReadBlock 트랜잭션에 대한 설명은 PSO 모드에서와 동일하다.
[WriteShared 트랜잭션의 설명]
TSO 모드에서의 WriteShared 트랙잭션에 대한 설명은 PSO 모드에서와 동일하다.
[아토믹 Op-Shared 트랜잭션의 설명]
TSO 모드에서의 아토믹 Op-Shared 트랜잭션에 대한 설명은 PSO 모드에서와 동일하다.
[FlushBlock 트랜잭션의 설명]
TSO 모드에서의 FlushBlock 트랜잭션에 대한 설명은 PSO 모드에서와 동일하다.
[부록 A]
이하에서는 주로 컴퓨터 시스템의 메모리동작의 기호적인 표현과 아키텍쳐를 자세히 설명한다. 이러한 아키텍쳐와 기호적인 설명 및 표현들은 데이터 처리기술 분야의 기술자들이 작업의 핵심을 당해분야의 다른 기술자에게 가장 효과적으로 전달하기 위해 사용하는 하나의 수단이다. TSO와 PSO 실행을 위해 앞서 설명된 본발명의 메모리 모델을 더욱 명확히 정의하기 위해 아래의 공리적인 설명이 제공된다.
본 발명은 메모리 모델을 설명하고 있다는 점을 명심해야 한다. 이와 같은 형식적인 설명은 어떠한 컴퓨터 시스템에서든 실행될 수 있는 소프트웨어 프로그램과 하드웨어의 구현사이의 인터페이스를 상세히 설명한다.
아래에는 공리에서 사용될 표기법이 설명된다.
데이타 Load 동작은 L로 표시된다. Store 동작은 S로 표시된다. 아토믹 Load-Store는 [L;S]로 표시되며, 여기서 대괄호 [ ] 는 원자가를 표시한다. STBAR 는로 표시된다.
명령 Flush 는 F로 표시된다. 명령 Fetch는 IF로 표시되며 명령 Load는 IL로 표시한다. Load, 명령 Fetch, 혹을 명령 Load, 혹은 Store 동작에 의해 복귀된 값은 [Val]로 표시된다. L, S,, F, IF 및 IL 에서 위첨자는 프로세서 번호를 언급한다. 이들 동작(즉, L, S,,F, IF 및 IL)에서 아래첨자는 메모리 위치를 표시한다.
# 다음의 숫자는 Store 동작에 의해 기록된 값을 표시한다. 예를 들어,
Si a#0 프로세서 i에 의해 발해진 위치 "a"로의 Store를 표시.
Li a프로세서 i에 의해 발해진 위치 "a"로부터의 Load를 표시.
[Li a; Si a] 프로세서 i에 의해 발해진 위치 "a"로의 아토믹 Load-Store를 표시.
프로세서 i에 의해 발해진 STBAR를 표시.
ILi a프로세서 i에 의해 발해진 위치 "a"로부터의 명령 Load를 표시.
Fi a프로세서 i에 의해 발해진 위치 "a"로의 명령 Flush를 표시.
IFi a프로세서 i에 의해 발해진 위치 "a"로부터의 명령 Flush를 표시.
Val[Li a] Li a명령에 의해 복귀된 값을 표시.
Val[Si a] Si a명령에 의해 기억된 직후 위치 "a"에서의 값을 표시.
SOp S 또는 F에 대한 속기 표기를 표시
Op L, S, 또는 F에 대한 속기 표기를 표시
(Op; )∞ Op의 무한대 시켄스를 표시
[TSO 공리]
TSO 메모리 모델의 의미론은 6개의 공리 즉, 순서, 원자가, 종료, 값, LoadOp, 및 StoreStore에 의해 표현된다.
순서공리는 모든 Store 및 Flush에 대해 부분 순서()가 존재함을 말한다. 순서공리는 다음과 같이 정의된다.
원자가 공리는 아토믹 Load-Store 동작이 Store전에 Load를 발함을 즉, Load-Store 동작의 Load 부분이 부분순서()에서 Store전에 나타남과, 그리고 Load와 Store사이에는 메모리순서에서 다른 Store가 있을 수 없음을 말한다. 원자가 공리는 다음과 같이 정의한다.
종료공리는 모든 Store와 아토믹 Load-Store 동작이 마침내 종료되는 것을 말한다. 이것은 만약 하나의 프로세서가 Store 동작을 발하고 다른 프로세서가 Store 동작으로서 동일 메모리 위치로 반복해서 Load 동작을 발한다면 부분순서()에서 Store 동작 다음에 Load 동작이 있음을 표시함으로써 형식화된다. 종료공리는 아래와 같이 정의된다.
값 공리는 데이터 Load의 값이 가장 최근의 Store 동작에 의해 메모리 위치에 기록된 값임을 말한다. 값 공리는 아래와 같이 정의된다.
LoadOp 공리는 Load 동작후에 발해진 동작이 메모리부분순서()에서 후에 나타남을 말한다. 이 공리는 Load 동작이 임의의 이어지는 동작을 발하기 전에 완료되도록 프로세서가 대기함을 표시한다. LoadOp 공리는 아래와 같이 정의된다.
StoreStore 공리는 프로세서에 의해 발해진 Store 및 Flush 동작이 메모리 부분순서()에서 동일순서로 나타남을 말한다. 이 공리는 프로세서가 발하는 순서로 메모리가 Store 및 Flush 동작을 실행한다는 사실을 보여준다. StoreStore 공리는 아래와 같이 정의된다.
[PSO 공리]
PSO 메모리 모델은 7개의 공리 즉, 순서, 원자가 종료, 값, LoadOp, StoreStore 및 StoreStoreEq 공리에 의해 설명된다. 이 공리는 아래와 같이 정의된다.
순서공리는 모든 Store 및 Flush 에 의해 부분순서()가 존재함을 말한다. 순서공리는 다음과 같이 정의된다.
원자가 공리는 아토믹 Load-Store 동작이 Store전에 Load를 발함을 즉, Load-Store 동작의 Load 부분이 부분순서()에서 Store전에 나타남과, 그리고 Load와 Store사이에는 메모리순서에서 다른 Store가 있을 수 없음을 말한다. 원자가 공리는 다음과 같이 정의한다.
종료공리는 모든 Store와 아토믹 Load-Store 동작이 마침내 종료되는 것을 말한다. 이것은 만약 하나의 프로세서가 Store 동작을 발하고 다른 프로세서가 Store 동작으로서 동일 메모리 위치로 반복해서 Load 동작을 발한다면 Store 동작 다음에 Load 동작이 있음을 표시함으로써 형식화된다. 종료공리는 아래와 같이 정의된다.
값 공리는 데이터 Load의 값이 가장 최근의 Store 동작에 의해 메모리 위치에 기록된 값임을 말한다. 값 공리는 아래와 같이 정의된다.
LoadOp 공리는 Load 동작후에 발해진 동작이 메모리부분순서()에서 후에 나타남을 말한다. 이 공리는 Load 동작이 임의의 이어지는 동작을 발하기 전에 완료되도록 프로세서가 대기함을 표시한다. LoadOp 공리는 아래와 같이 정의된다.
StoreStore 공리는 프로세서에 의해 발해진 Store 및 Flush 동작이 메모리 부분순서()에서 동일순서로 나타남을 말한다. 이 공리는 프로세서가 STBAR에 의해 분리될 때에만 프로세서가 발하는 순서로 메모리가 Store 및 Flush 동작을 실행한다는 사실을 보여준다. StoreStore 공리는 아래와 같이 정의된다.
StoreStoreEq 공리는 프로세서에 의해 주어진 메모리 위치로 발해진 Store 및 Flush 동작이 메모리 부분순서()에서 동일순서로 나타남을 말한다. 이 공리는 프로세서가 STBAR를 이용하여 Store 동작을 분리시키지 않더라도 프로세서에 의해 발해졌던 순서로 동일 메모리 위치에 Store 동작을 메모리가 실행하는 것을 나타낸다. StoreStoreEq 공리는 아래와 같이 정의된다.
[Flush 공리]
Flush 명령은 Flush를 발하는 프로세서의 명령 인출들을 이 프로세서의 Load, Store, 및 아토믹 Load-Store에 동기화시키며, 다른 모든 프로세서의 명령인출로 하여금 Flush전에 Flush 타겟으로 행해진 어떠한 Store이든 관찰하도록 한다.
Flush의 의미론은 3개의 공리 즉 IFetchValue, FlushTermination, 및 IFetchIFetch 공리에 의해 설명된다. IFetchValue 공리에서 기호"〈K〉"는 K개 이상의 명령의 임의적인 시켄스를 표시하는데 사용된다.
IFetchValue 공리는 명령인출의 값이 (S;F) 시켄스에 의해 그 위치에 기록된 값임을 말한다. 두 개의 항이 결합하여 가장 최근의 시켄스를 정의한다. 제1항은 다른 프로세서에 의한 시켄스에 해당하고, 제2항은 Load를 발한 프로세서에 의한 TL퀸스에 해당한다. 제1 시켄스 세트에서 Store 및 Flush는 상이한 프로세서에 의해 발해질 수 있음에 주의하라. 또한 제2 시켄스 세트에서 Flush는 Flush의 타겟으로 명령인출전의 어떤 임의의 명령이 반드시 뒤따라야 한다.
IFetchValue 공리는 아래와 같이 정의된다.
FlushTermination 공리는 하나의 프로세서에 의해서 행해진 S;F 시켄스가 마침내 모든 프로세서의 명령인출에 의해 관찰될 것임을 말한다. FlushTermination 공리는 아래와 같이 정의된다.
IFetchIFetch 공리는 프로세서에 의해 발해진 두개의 명령인출이 부분순서()에서 동일순서로 나타남을 말한다. IFetchIFetch 공리는 아래와 같이 정의된다.
본 발명이 바람직한 실시예 및 공리들과 연관하여 설명되어 있지만 앞서 설명에 비추어 당업자에게는 여러가지 대체, 수정, 변형 및 이용이 가능하다는 것이 명백하다.

Claims (17)

  1. 적어도 하나의 프로세서와 메모리 수단을 구비하고, 각 프로세서는 기억버퍼를 구비하며, 메모리 번지를 포함하는 Load 및 Store 동작들을 구비하는 상기 메모리 수단용 메모리 동작들을 생성시키고, 상기 Store 동작은 데이터를 더 포함하는 컴퓨터 시스템에서 프로세서에 의해 발해진 메모리 동작들의 실행방법으로서, 프로세서에 의해 발해진 각 Store 동작을 상기 프로세서의 대응 기억버퍼에 기억시키는 단계; 기억버퍼가 발해진 Load 동작과 동일한 메모리 번지를 구비하는 Store 동작을 포함하는지를 판단하기 위해 Load 동작을 발하는 프로세서에 대응하는 기억버퍼를 탐색하는 단계; Store 동작이 상기 발해진 Load 동작과 동일한 메모리 번지를 포함하면 Store 동작으로 부터 상기 기억버퍼에 가장 최근에 기억된 데이터를 복귀시키는 단계; 어떠한 Store 동작도 상기 발해진 Load 동작과 동일한 메모리 번지를 포함하지 않을 때 실행을 위하여 상기 메모리 수단으로 상기 Load 동작을 전송하는 단계; 상기 메모리 수단이 상기 발해진 Load 동작을 위한 데이터를 복귀할 때까지 상기 Load 동작을 발하는 상기 프로세서가 추가 메모리 동작을 발하지 못하도록 하는단계; STBAR 동작전에 발해진 모든 Store 동작이 상기 STBAR 동작후에 발해진 모든 Store 동작전에 상기 메모리 수단에서 실행완료되어야 할 때 상기 기억버퍼에 포함된 Store 동작을 분리시키기 위해 상기 대응 기억버퍼에 STBAR 동작을 위치시킴으로써 STBAR 동작을 발하는 단계 ; Store 동작이 동일한 번지를 구비할 때 상기 프로세서에 의해 발해진 순서로 상기 기억버퍼에 기억된 상기 Store 동작만을 순서매김하는 단계; 상기 STBAR 동작이 상기 기억버퍼에서 마주칠 때 상기 기억버퍼내의 다음 이어지는 Store 동작이 상기 STBAR 동작전의 메모리 동작이 완료될 때까지 상기 메모리 수단에 전송되지 않도록 상기 Store 동작의 실행을 위하여 상기 기억버퍼로부터 상기 메모리 수단으로 상기 Store 동작을 전송하는 단계를 구비하는 것을 특징으로 하는 메모리 동작들의 실행방법.
  2. 제1항에 있어서, 상기 메모리 동작은 Load 동작에 의해 검색된 값에 의존하는 Store 동작이 뒤따르는 Load 동작을 구비하는 아토믹 Load-Store 동작을 더 포함하고, 상기 아토믹 Load-Store 동작을 발하는 상기 프로세서의 상기 기억버퍼에 상기 아토믹 Load-Store 동작을 기억시키는 단계; 실행을 위하여 상기 메모리 수단에 상기 아토믹 Load-Store 동작을 전송하는 단계; 상기 메모리 수단이 상기 발해진 아토믹 Load-Store 동작을 위한 데이터를 복귀할 때까지 상기 아토믹 Load-Store 동작을 발하는 상기 프로세서가 추가의 메모리 동작을 발하지 못하도록 하는 단계를 구비하는 것을 특징으로 하는 메모리 동작들의 실행방법.
  3. 제1항에 있어서, 각 프로세서는 각 대응 프로세서의 데이터와 명령을 기억하기 위한 내부캐시를 구비하고, 상기 프로세서가 Store 동작을 발할 때 Store 동작에서 요청된 메모리 번지가 상기 내부 캐시에 있는지의 여부를 판단 하기 위해 Store 동작을 발하는 대응 프로세서에 대한 내부캐시를 탐색하는 단계 ; 발해진 Store 동작의 메모리 번지가 상기 내부캐시에 있을 때 상기 Store 동작의 동일한 메모리 번지에 대응하는 상기 내부캐시의 데이터를 갱신하는 단계 ; 상기 프로세서가 Load 동작을 발할 때 같은 메모리 번지가 상기 내부캐시에 있는지를 판단가히 위해 Load 동작을 발하는 대응 프로세서의 내부캐시를 탄색하는 단계 ; 발해진 Load 동작의 메모리 번지가 상기 내부캐시에 있을 때 내부캐시내의 대응위치의 데이터를 판독하는 단계를 더 구비하는 것을 특징으로 하는 메모리동작들의 실행방법.
  4. 제1항에 있어서, 상기 메모리 수단의 주기억장치와 그리고 각 프로세서에 대하여 각 대응 프로세서를 위한 데이터 및 명령을 기억하는 외부캐시를 구비하고, 상기 메모리 수단내의 상기 Load 동작을 실행하는 단계는 프로세서로부터 상기 외부캐시에 Load 동작을 수신하고, 상기 외부캐시가 상기 Load 동작과 동일한 메모리 번지를 구비하도록 상기 Load 동작이 상기 외부 캐시 내에서 실행가능한지를 판단하는 단계 ; 상기 외부캐시가 상기 Load 동작과 동일한 메모리 번지를 구비할 때 상기 외부캐시로부터 상기 프로세서로 상기 메모리 번지에 있는 데이터를 전송하는 단계 ; 상기 프로세서로부터 수신된 Load 동작이 상기 외부캐시내에서 실행가능하지 않다면 상기 주기억장치로 ReadBlock 트랜잭션을 실행하되, 상기 ReadBlock 트랜잭션은 상기 주기억장치로부터 상기 외부캐시로 데이터를 전송하는 실행단계 ; 상기 주기억장치로 FlushBlock 트랜잭션을 실행하는 단계 ; 상기 주기억장치로부터 전송된 상기 데이터로 상기 외부캐시를 갱신하는 단계 ; 및 상기 주기억장치로부터 전송된 상기 데이터를 상기 프로세서로 전송하는 단계를 구비하는 것을 특징으로 하는 메모리 동작들의 실행방법.
  5. 제1항에 있어서, 상기 메모리 수단은 주기억장치와 그리고 각 프로세서에 대하여 각 대응 프로세서를 위한 데이터 및 명령을 기억하는 외부캐시를 구비하고, 상기 메모리 수단내의 상기 Store 동작을 실행하는 단계는 프로세서로부터 상기 외부캐시에 Load 동작을 수신하고, 상기 외부캐시가 상기 Store 동작과 동일한 메모리 번지를 구비하도록 상기 Store 동작이 상기 외부 캐시 내에서 실행가능한지를 판단하는 단계 ; 상기 외부캐시가 상기 Store 동작과 동일한 메모리 번지를 구비할 때 상기 외부캐시의 상기 메모리 번지에 상기 Store 동작에 대응하는 데이터를 기억시키는 단계 ; 상기 외부캐시가 상기 Store 동작과 동일한 메모리 번지를 구비할 때 상기 외부캐시의 상기 메모리 번지가 다른 프로세서에 의해 공유되는지를 판단하는 단계 ; 상기 메모리 번지가 다른 프로세서에 의해 공유된다면 상기 주기억장치로 WriteShared 트랜잭션을 실행하는 단계 ; 상기 프로세서로 부터 검색된 상기 Store 동작이 상기 외부캐시 내에서 실행가능하지 않다면 상기 주기억장치로 ReadBlock 트랜잭션을 실행하되, 상기 ReadBlock 트랜잭션은 상기 주기억장치로부터 상기 외부캐시로 상기 Store 동작과 동일한 상기 메모리 번지에서 상기 주기억장치에 위치하는 데이터를 전송하는 단계와, 상기 외부캐시에 전송된 상기 데이터를 기억시키는 단계와, 상기 Store 동작과 동일한 상기 메모리 번지에서 상기 외부캐시내에 상기 Store 동작으로부터의 데이터를 갱신하는 단계를 포함하는 실행단계 ; 상기 주기억장치로 FlushBlock 트랜잭션을 실행하되, 상기 Store 동작에 응답하여 상기 외부캐시에 기억된 데이터가 상기 외부캐시에 의해 소유된 데이터에 의해 점유되는 상기 외부캐시 내의 위치로 기록되면 상기 FlushBlock 트랜잭션은 상기 외부캐시로부터 상기 주기억장치로 데이터를 기록하는 단계를 포함하는 실행단계를 구비하는 것을 특징으로 하는 메모리 동작들의 실행방법.
  6. 적어도 하나의 프로세서와 메모리 수단을 구비하고, 각 프로세서는 기억버퍼를 구비하며, 메모리 번지를 포함하는 Load 및 Store 동작들을 구비하는 상기 메모리 수단용 메모리 동작들을 생성시키고, 상기 Store 동작은 데이터를 더 포함하는 컴퓨터 시스템에서 프로세서에 의해 발해진 메모리 동작들의 실행방법으로서, 프로세서에 의해 발해진 각 Store 동작을 상기 프로세서의 대응 기억버퍼에 기억시키되, 상기 동작을 상기 프로세서에 의해 발해진 순서로 기억되는 단계 ; 기억버퍼가 발해진 Load 동작과 동일한 메모리 번지를 구비하는 Store 동작을 포함하는지를 판단하기 위해 Load 동작을 발하는 프로세서에 대응하는 기억버퍼수단을 탐색하는 단계 ; Store 동작이 상기 발해진 Load 동작과 동일한 메모리 번지를 포함하면 Store 동작으로 부터 상기 기억버퍼에 가장 최근에 기억된 데이터를 복귀시키는 단계 ; 어떠한 Store 동작도 상기 발해진 Load 동작과 동일한 메모리 번지를 포함하지 않을 때 실행을 위하여 상기 메모리 수단으로 상기 Load 동작을 전송하는 단계 ; 상기 메모리 수단이 상기 발해진 Load 동작을 위한 데이터를 복귀할 때까지 상기 Load 동작을 발하는 상기 프로세서가 추가 메모리 동작을 발하지 못하도록 하는 단계 ; 상기 기억버퍼에 기억된순서로 상기 Store 동작의 실행을 위하여 상기 기억버퍼로부터 상기 메모리 수단으로 상기 Store 명령을 전송하는 단계를 구비하는 것을 특징으로 하는 메모리 동작들의 실행방법.
  7. 제6항에 있어서, 상기 메모리 동작은 Load 동작에 의해 검색된 값에 의존하는 Store 동작이 뒤따르는 Load 동작을 구비하는 아토믹 Load-Store 동작을 더 포함하고, 상기 아토믹 Load-Store 동작을 발하는 상기 프로세서의 상기 기억버퍼에 상기 아토믹 Load-Store 동작을 기억시키는 단계 ; 상기 프로세서에 의해 발해진 순서로 상기 기억버퍼 내의 상기 아토믹 Load-Store 동작을 순서매김하는 단계 ; 실행을 위하여 상기 메모리 수단에 상기 아토믹 Load-Store 동작을 전송하는 단계; 상기 메모리 수단이 상기 발해진 아토믹 Load-Store 동작을 위한 데이터를 복귀할 때까지 상기 아토믹 Load-Store 동작을 발하는 상기 프로세서가 추가의 메모리 동작을 발하지 못하도록 하는 단계를 구비하는 것을 특징으로 하는 메모리 동작들의 실행방법.
  8. 제6항에 있어서, 각 프로세서는 각 대응 프로세서의 데이터와 명령을 기억하기 위한 내부캐시를 구비하고, 상기 프로세서가 Store 동작을 발할 때 Store 동작에서 요청된 메모리 번지가 상기 내부캐시에 있는지의 여부를 판단하기 위해 Store 동작을 발하는 대응 프로세서에 대한 내부캐시를 탐색하는 단계 ; 발해진 Store 동작의 메모리 번지가 상기 내부캐시에 있을 때 상기 Store 동작의 동일한 메모리 번지에 대응하는 상기 내부캐시의 데이터를 갱신하는 단계 ; 상기 프로세서가 Load 동작을 발할 때 동일한 메모리 번지가 상기 내부캐시에 있는지를 판단가히 위해 Load 동작을 발하는 대응 프로세서의 내부캐시를 탐색하는 단계 ; 발해진 Load 동작의 메모리 번지가 상기 내부캐시에 있을 때 내부캐시내의 대응위치의 데이터를 판독하는 단계를 더 구비하는 것을 특징으로 하는 메모리동작들의 실행방법.
  9. 제6항에 있어서, 상기 메모리 수단의 주기억장치와 그리고 각 프로세서에 대하여 각 대응 프로세서를 위한 데이터 및 명령을 기억하는 외부캐시를 구비하고, 상기 메모리 수단내의 상기 Load 동작을 실행하는 단계는 프로세서로부터 상기 외부캐시에 Load 동작을 수신하고, 상기 외부캐시가 상기 Load 동작과 동일한 메모리 번지를 구비하도록 상기 Load 동작이 상기 외부 캐시 내에서 실행가능한지를 판단하는 단계 ; 상기 외부캐시가 상기 Load 동작과 동일한 메모리 번지를 구비할 때 상기 외부캐시로부터 상기 프로세서로 상기 메모리 번지에 있는 데이터를 전송하는 단계 ; 상기 프로세서로부터 수신된 Load 동작이 상기 외부캐시내에서 실행가능하지 않다면 상기 주기억장치로 ReadBlock 트랜잭션을 실행하되, 상기 ReadBlock 트랜잭션은 상기 주기억장치로부터 상기 외부캐시로 데이터를 전송하는 실행단계 ; 상기 주기억장치로 FlushBlock 트랜잭션을 실행하는 단계 ; 상기 주기억장치로부터 전송된 상기 데이터로 상기 외부캐시를 갱신하는 단계 ; 상기 주기억장치로부터 전송된 상기 데이터를 상기 프로세서로 전송하는 단계를 구비하는 것을 특징으로 하는 메모리 동작들의 실행방법.
  10. 제6항에 있어서, 상기 메모리 수단은 주기억장치와 그리고 각 프로세서에 대하여 각 대응 프로세서를 위한 데이터 및 명령을 기억하는 외부캐시를 구비하고, 상기 메모리 수단내의 상기 Store 동작을 실행하는 단계는 프로세서로부터 상기 외부캐시에 Load 동작을 수신하고, 상기 외부캐시가 상기 Store 동작과 동일한 메모리 번지를 구비하도록 상기 Store 동작이 상기 외부 캐시 내에서 실행가능한지를 판단하는 단계 ; 상기 외부캐시가 상기 Store 동작과 동일한 메모리 번지를 구비할 때 상기 외부캐시의 상기 메모리 번지에 상기 Store 동작에 대응하는 데이터를 기억시키는 단계 ; 상기 외부캐시가 상기 Store 동작과 동일한 메모리 번지를 구비할 때 상기 외부캐시의 상기 메모리 번지가 다른 프로세서에 의해 공유되는지를 판단하는 단계 ; 상기 메모리 번지가 다른 프로세서에 의해 공유된다면 상기 주기억장치로 WriteShared 트랜잭션을 실행하는 단계 ; 상기 프로세서로 부터 검색된 상기 Store 동작이 상기 외부캐시 내에서 실행가능하지 않다면 상기 주기억장치로 ReadBlock 트랜잭션을 실행하되, 상기 ReadBlock 트랜잭션은 상기 주기억장치로부터 상기 외부캐시로 상기 Store 동작과 동일한 상기 메모리 번지에서 상기 주기억장치에 위치하는 데이터를 전송하는 단계와, 상기 외부캐시에 전송된 상기 데이터를 기억시키는 단계와, 상기 Store 동작과 동일한 상기 메모리 번지에서 상기 외부캐시내에 상기 Store 동작으로부터의 데이터를 갱신하는 단계를 포함하는 실행단계 ; 상기 주기억장치로 FlushBlock 트랜잭션을 실행하되, 상기 Store 동작에 응답하여 상기 외부캐시에 기억된 데이터가 상기 외부캐시에 의해 소유된 데이터에 의해 점유되는 상기 외부캐시 내의 위치로 기록되면 상기 FlushBlock 트랜잭션은 상기 외부캐시로부터 상기 주기억장치로 데이터를 기록하는 단계를 포함하는 실행단계를 구비하는 것을 특징으로 하는 메모리 동작들의 실행방법.
  11. 적어도 하나의 프로세서와 메모리 수단을 구비하고, 각 프로세서는, 메모리 번지를 포함하는 Load 및 Store 동작들을 구비하는 상기 메모리 수단용 메모리 동작들을 생성시키고, 상기 Store 동작은 데이터를 더 포함하는 컴퓨터 시스템에서 프로세서에 의해 발해진 메모리 동작들을 실행하는 장치로서, 프로세서에 의해 발해진 각 Store 동작을 기억시키기 위하여 각 프로세서에 연결된 기억버퍼수단 ; 기억버퍼가 발해진 Load 동작과 동일한 메모리 번지를 구비하는 Store 동작을 포함하는지를 판단하기 위해 상기 기억버퍼에 연결되어 상기 Load 동작을 발하는 프로세서에 대응하는 기억버퍼를 탐색하는 비교수단으로서, Store 동작이 상기 발해진 Load 동작과 동일한 메모리 번지를 포함하면 Store 동작으로 부터 상기 기억버퍼에 가장 최근에 기억된 데이터를 복귀시키는 비교수단 ; 상기 메모리 수단이 상기 발해진 Load 동작을 위한 데이터를 복귀할 때까지 상기 Load 동작을 발하는 상기 프로세서가 추가 메모리 동작을 발하지 못하도록 하는 대기수단 : 상기 기억버퍼 내의 Store 동작을 순서매김하기 위하여 상기 기억버퍼에 연결된 부분순서매김수단으로서, STBAR 동작전에 발해진 모든 Store 동작이 상기 STBAR 동작후에 발해진 모든 Store 동작전에 상기 메모리 수단에 실행완료되어야 할 때 상기 기억버퍼에 포함된 Store 동작을 분리시키기 위해 상기 대응 기억버퍼에 STBAR 동작을 위치시킴으로써 STBAR 동작을 발하며, Store 동작이 동일한 번지를 구비할 때 상기 프로세서에 의해 발해진 순서로 상기 기억버퍼에 기억된 상기 Store 동작만을 순서매김하는 부분순서매김수단 ; 상기 메모리 수단에 상기 Load 및 Store 동작을 전송하기 위하여 상기 비교수단과 상기 부분순서매김수단에 연결된 전송수단으로서, 어떠한 Store 동작도 발해진 상기 Load 동작과 동일한 메모리 번지를 포함하고 있지 않을 때 실행을 위하여 상기 메모리 수단에 상기 Load 동작을 전송하고 그리고 상기 STBAR 동작이 상기 기억버퍼에서 마주칠 때 상기 STBAR 동작전의 메모리 동작이 완료될 때까지 상기 기억버퍼내의 다음 이어지는 Store 동작이 상기 메모리 수단에 전송되지 않도록 상기 Store 동작의 실행을 위하여 상기 기억버퍼로부터 상기 메모리 수단으로 Store 동작을 전송하는 전송구단을 구비하는 것을 특징으로 하는 메모리 동작들의 실행장치.
  12. 제11항에 있어서, 상기 메모리 동작은 Load 동작에 의해 검색된 값에 의존하는 Store 동작이 뒤따르는 Load 동작을 구비하는 아토믹 Load-Store 동작을 더 포함하고, 상기 기억버퍼는 상기 아토믹 Load-Store 동작을 발하는 상기 프로세서의 상기 기억버퍼에 상기 아토믹 Load-Store 동작을 기억시키고 ; 상기 부분순서매김수단은 아토믹 Load-Store 동작들이 동일한 번지를 구비할 때 발해진 순서로 상기 기억버퍼에 기억된 상기 아토믹 Load-Store 동작만을 순서매김하고 ; 상기 전송수단은 실행을 위하여 상기 메모리 수단에 상기 아토믹 Load-Store 동작을 전송하고 ; 상기 대기수단은 상기 메모리 수단이 상기 발해진 아토믹 Load-Store 동작을 위한 데이터를 복귀할 때까지 상기 아토믹 Load-Store 동작을 발하는 상기 프로세서가 추가의 메모리 동작을 발하지 못하도록 하는 것을 특징으로 하는 메모리 동작들의 실행장치.
  13. 제11항에 있어서, 각 대응 프로세서를 위한 데이터와 명령을 구비하며 각 프로세서에 연결된 내부캐시 ; 내부캐시에 연결되어, 상기 프로세서가 Store 동작을 발할 때 Store 동작에서 요청된 메모리 번지가 상기 내부캐시에 있는지의 여부를 판단하기 위해 Store 동작을 발하는 대응 프로세서에 대한 내부캐시를 탐색하고, 상기 프로세서가 Load 동작을 발할 때 같은 메모리 번지가 상기 내부캐시에 있는지를 판단하기 위해 Load 동작을 발하는 대응 프로세서에 대한 내부캐시를 탐색하는 캐시 비교수단 ; 상기 내부캐시에 연결되어, 발해진 Store 동작의 메모리 번지가 상기 내부캐시에 있을 때 상기 Store 동작의 동일한 메모리 번지에 대응하는 상기 내부캐시의 데이터를 갱신하고, 발해진 Load 동작의 메모리 번지가 상기 내부캐시에 있을 때 내부캐시내의 대응위치의 데이터를 판독하는 캐시 억세스 수단을 더 구비하는 것을 특징으로 하는 메모리동작들의 실행장치.
  14. 적어도 하나의 프로세서와 메모리 수단을 구비하고, 각 프로세서는 메모리 번지를 포함하는 Load 및 Store 동작들을 구비하는 상기 메모리 수단용 메모리 동작들을 생성시키고, 상기 Store 동작은 데이터를 더 포함하는 컴퓨터 시스템에서 프로세서에 의해 발해진 메모리 동작들의 실행장치로서, 프로세서에 의해 발해진 각 Store 동작을 기억시키기 위하여 각 프로세서에 연결된 기억버퍼 ; 상기 기억버퍼에 연결되어, 기억버퍼가 발해진 Load 동작과 동일한 메모리 번지를 구비하는 Store 동작을 포함하는지를 판단하기 위해 상기 Load 동작을 발하는 상기 프로세서에 대응하는 기억버퍼를 탐색하고, Store 동작이 상기 발해진 Load 동작과 동일한 메모리 번지를 포함하면 Store 동작으로 부터 상기 기억버퍼에 가장 최근에 기억된 데이터를 복귀시키는 비교수단 ; 상기 메모리 수단이 상기 발해진 Load 동작을 위한 데이터를 복귀할 때까지 상기 Load 동작을 발하는 상기 프로세서가 추가 메모리 동작을 발하지 못하도록 하는 대기수단 : 상기 기억버퍼에 연결되어 상기 프로세서에 의해 발해진 순서로 상기 기억버퍼 내의 Store 동작을 순서매김하는 전체순서매김수단 ; 및 상기 비교수단과 상기 전체순서매김수단에 연결되어 상기 메모리 수단에 상기 Load 및 Store 동작을 전송하되, 어떠한 Store 동작도 상기 발해진 상기 Load 동작과 동일한 메모리 번지를 포함하지 않을 때 실행을 위하여 상기 메모리 수단으로 상기 Load 동작을 전송하고, 발해진 순서로 상기 메모리 동작들을 실행하기 위하여 상기 기억버퍼로부터 상기 메모리 수단으로 상기 Store 명령을 전송수단을 구비하는 것을 특징으로 하는 메모리 동작들의 실행장치.
  15. 제14항에 있어서, 상기 전체순서매김수단은 선입선출(FIFO) 버퍼를 구비하는 것을 특징으로 하는 메모리 동작들의 실행장치.
  16. 제12항에 있어서, 각각의 프로세서가 각 대응 프로세서의 데이터 및 명령을 기억하는 내부캐시를 구비하는 메모리 동작들의 실행장치로서, 각 대응 프로세서를 위한 데이터와 명령을 구비하며 각 프로세서에 연결된 내부캐시 ; 상기 내부캐시에 연결되어, 상기 프로세서가 Store 동작을 발할 때 Store 동작에서 요청된 메모리 번지가 상기 내부캐시에 있는지의 여부를 판단하기 위해 Store 동작을 발하는 대응 프로세서에 대한 내부캐시를 탐색하고 ; 상기 프로세서가 Load 동작을 발할 때 요청된 메모리 번지가 상기 내부캐시에 있는지를 판단하기 위해 Load 동작을 발하는 대응 프로세서에 대한 내부캐시를 탐색하는 캐시 비교수단 ; 상기 내부캐시에 연결되어, 발해진 Store 동작의 메모리 번지가 상기 내부캐시에 있을 때 상기 Store 동작의 동일한 메모리 번지에 대응하는 상기 내부캐시의 데이터를 갱신하고, 발해진 Load 동작의 메모리 번지가 상기 내부캐시에 있을 때 내부캐시내의 대응위치의 데이터를 판독하는 캐시 억세스 수단을 더 구비하는 것을 특징으로 하는 메모리동작들의 실행장치.
  17. 제16항에 있어서, 상기 메모리 동작은 Load 동작에 의해 검색된 값에 의존하는 Store 동작이 뒤따르는 Load 동작을 구비하는 아토믹 Load-Store 동작을 더 포함하고, 상기 기억버퍼는 상기 아토믹 Load-Store 동작을 발하는 상기 프로세서의 상기 기억버퍼에 상기 아토믹 Load-Store 동작을 기억시키고 ; 상기 전체순서매김수단은 상기 프로세서에 의해 발해진 순서로 상기 기억버퍼내의 아토믹 Load-Store 동작을 순서매김하고 ; 상기 전송수단은 실행을 위하여 상기 메모리 수단에 상기 아토믹 Load-Store 동작을 전송하고 ; 상기 대기수단은 상기 메모리 수단이 상기 발해진 아토믹 Load-Store 동작을 위한 데이터를 복귀할 때까지 상기 아토믹 Load-Store 동작을 발하는 상기 프로세서가 추가의 메모리 동작을 발하지 못하도록 하는 것을 특징으로 하는 메모리 동작들의 실행장치.
KR1019920007921A 1991-05-17 1992-05-11 개량된메모리아키텍쳐를위한방법및장치 KR100243853B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US702,781 1991-05-17
US07/702,781 US5265233A (en) 1991-05-17 1991-05-17 Method and apparatus for providing total and partial store ordering for a memory in multi-processor system

Publications (2)

Publication Number Publication Date
KR920022101A KR920022101A (ko) 1992-12-19
KR100243853B1 true KR100243853B1 (ko) 2000-02-01

Family

ID=24822571

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019920007921A KR100243853B1 (ko) 1991-05-17 1992-05-11 개량된메모리아키텍쳐를위한방법및장치

Country Status (5)

Country Link
US (1) US5265233A (ko)
EP (1) EP0514024B1 (ko)
JP (1) JPH05233421A (ko)
KR (1) KR100243853B1 (ko)
DE (1) DE69231197T2 (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5398325A (en) * 1992-05-07 1995-03-14 Sun Microsystems, Inc. Methods and apparatus for improving cache consistency using a single copy of a cache tag memory in multiple processor computer systems
US5434993A (en) * 1992-11-09 1995-07-18 Sun Microsystems, Inc. Methods and apparatus for creating a pending write-back controller for a cache controller on a packet switched memory bus employing dual directories
US6144930A (en) * 1993-06-09 2000-11-07 Compaq Computer Corporation Method for providing a memory model of a memory device for use in simulation
US5506967A (en) * 1993-06-15 1996-04-09 Unisys Corporation Storage queue with adjustable level thresholds for cache invalidation systems in cache oriented computer architectures
DE69423206T2 (de) * 1994-04-28 2000-09-07 Hewlett Packard Co Rechnervorrichtung mit Mitteln zum Erzwingen der Ausführung von Befehlen in regelmässiger Folge
US5745732A (en) * 1994-11-15 1998-04-28 Cherukuri; Ravikrishna V. Computer system including system controller with a write buffer and plural read buffers for decoupled busses
US5699538A (en) * 1994-12-09 1997-12-16 International Business Machines Corporation Efficient firm consistency support mechanisms in an out-of-order execution superscaler multiprocessor
US6073211A (en) * 1994-12-13 2000-06-06 International Business Machines Corporation Method and system for memory updates within a multiprocessor data processing system
US5692153A (en) * 1995-03-16 1997-11-25 International Business Machines Corporation Method and system for verifying execution order within a multiprocessor data processing system
US5797043A (en) * 1996-03-13 1998-08-18 Diamond Multimedia Systems, Inc. System for managing the transfer of data between FIFOs within pool memory and peripherals being programmable with identifications of the FIFOs
US5822553A (en) * 1996-03-13 1998-10-13 Diamond Multimedia Systems, Inc. Multiple parallel digital data stream channel controller architecture
US5778244A (en) * 1996-10-07 1998-07-07 Timeplex, Inc. Digital signal processing unit using digital signal processor array with recirculation
US6748493B1 (en) 1998-11-30 2004-06-08 International Business Machines Corporation Method and apparatus for managing memory operations in a data processing system using a store buffer
US6678810B1 (en) 1999-12-30 2004-01-13 Intel Corporation MFENCE and LFENCE micro-architectural implementation method and system
US7538772B1 (en) * 2000-08-23 2009-05-26 Nintendo Co., Ltd. Graphics processing system with enhanced memory controller
US6678807B2 (en) * 2000-12-21 2004-01-13 Intel Corporation System and method for multiple store buffer forwarding in a system with a restrictive memory model
JP4180569B2 (ja) * 2003-01-27 2008-11-12 富士通株式会社 記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法
US20050210204A1 (en) * 2003-01-27 2005-09-22 Fujitsu Limited Memory control device, data cache control device, central processing device, storage device control method, data cache control method, and cache control method
US7360035B2 (en) 2004-09-01 2008-04-15 International Business Machines Corporation Atomic read/write support in a multi-module memory configuration
US7606998B2 (en) * 2004-09-10 2009-10-20 Cavium Networks, Inc. Store instruction ordering for multi-core processor
JP4973730B2 (ja) * 2007-06-20 2012-07-11 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US8244987B2 (en) 2008-12-04 2012-08-14 Electronics And Telecommunications Research Institute Memory access device including multiple processors
KR101635395B1 (ko) * 2010-03-10 2016-07-01 삼성전자주식회사 멀티포트 데이터 캐시 장치 및 멀티포트 데이터 캐시 장치의 제어 방법
US9052890B2 (en) 2010-09-25 2015-06-09 Intel Corporation Execute at commit state update instructions, apparatus, methods, and systems
US8713259B2 (en) * 2010-11-17 2014-04-29 Advanced Micro Devices, Inc. Method and apparatus for reacquiring lines in a cache
US9361103B2 (en) * 2012-11-02 2016-06-07 Advanced Micro Devices, Inc. Store replay policy
JP6191172B2 (ja) * 2013-03-12 2017-09-06 日本電気株式会社 メモリコントローラ、プロセッサ、演算処理方法、及び、演算命令ライブラリ。
US10345883B2 (en) 2016-05-31 2019-07-09 Taiwan Semiconductor Manufacturing Co., Ltd. Power estimation
US11914511B2 (en) * 2020-06-22 2024-02-27 Apple Inc. Decoupling atomicity from operation size

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4136386A (en) * 1977-10-06 1979-01-23 International Business Machines Corporation Backing store access coordination in a multi-processor system
JPS621067A (ja) * 1985-02-25 1987-01-07 Hitachi Ltd ベクトル処理装置
JPH0731669B2 (ja) * 1986-04-04 1995-04-10 株式会社日立製作所 ベクトル・プロセツサ
US5023776A (en) * 1988-02-22 1991-06-11 International Business Machines Corp. Store queue for a tightly coupled multiple processor configuration with two-level cache buffer storage
US5148536A (en) * 1988-07-25 1992-09-15 Digital Equipment Corporation Pipeline having an integral cache which processes cache misses and loads data in parallel
US5043886A (en) * 1988-09-16 1991-08-27 Digital Equipment Corporation Load/store with write-intent for write-back caches
US4905141A (en) * 1988-10-25 1990-02-27 International Business Machines Corporation Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification
US5202972A (en) * 1988-12-29 1993-04-13 International Business Machines Corporation Store buffer apparatus in a multiprocessor system
US5201041A (en) * 1988-12-29 1993-04-06 International Business Machines Corporation Cache bypass apparatus
US5185871A (en) * 1989-12-26 1993-02-09 International Business Machines Corporation Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions

Also Published As

Publication number Publication date
EP0514024B1 (en) 2000-06-28
DE69231197D1 (de) 2000-08-03
US5265233A (en) 1993-11-23
EP0514024A2 (en) 1992-11-19
EP0514024A3 (ko) 1994-05-04
DE69231197T2 (de) 2001-03-15
KR920022101A (ko) 1992-12-19
JPH05233421A (ja) 1993-09-10

Similar Documents

Publication Publication Date Title
KR100243853B1 (ko) 개량된메모리아키텍쳐를위한방법및장치
KR100567099B1 (ko) L2 디렉토리를 이용한 멀티프로세서 시스템의 가-저장촉진 방법 및 장치
EP1399823B1 (en) Using an l2 directory to facilitate speculative loads in a multiprocessor system
US5909699A (en) Method and apparatus for supporting read, write, and invalidation operations to memory which maintain cache consistency
US5148533A (en) Apparatus and method for data group coherency in a tightly coupled data processing system with plural execution and data cache units
US6085294A (en) Distributed data dependency stall mechanism
KR100274327B1 (ko) 캐시가 일관된 다중 처리기 컴퓨터 시스템에서 다중 미결동작을 제공하기 위한 장치 및 그 방법
US5551005A (en) Apparatus and method of handling race conditions in mesi-based multiprocessor system with private caches
US6141734A (en) Method and apparatus for optimizing the performance of LDxL and STxC interlock instructions in the context of a write invalidate protocol
US5751995A (en) Apparatus and method of maintaining processor ordering in a multiprocessor system which includes one or more processors that execute instructions speculatively
US8321634B2 (en) System and method for performing memory operations in a computing system
US6718839B2 (en) Method and apparatus for facilitating speculative loads in a multiprocessor system
JP2902976B2 (ja) キャッシュフラッシュ装置
EP1311956B1 (en) Method and apparatus for pipelining ordered input/output transactions in a cache coherent, multi-processor system
US20030126365A1 (en) Transfer of cache lines on-chip between processing cores in a multi-core system
PL178832B1 (pl) Sposób utrzymywania spójności pamięci w systemie komputerowym
TW200821832A (en) Low-cost cache coherency for accelerators
JPH0619786A (ja) キャッシュコヒーレンスを維持する方法及び装置
JPH02166539A (ja) フェッチ方法
US6105108A (en) Method and apparatus for releasing victim data buffers of computer systems by comparing a probe counter with a service counter
US7533223B1 (en) System and method for handling memory requests in a multiprocessor shared memory system
US5875468A (en) Method to pipeline write misses in shared cache multiprocessor systems
KR20060102565A (ko) 라이트 백 캐시 내에서 동시 발생하는 스누프 푸시 또는스누프 킬 연산중에 라이트 백 연산을 취소하는 시스템 및방법
US7464227B2 (en) Method and apparatus for supporting opportunistic sharing in coherent multiprocessors
US20060179173A1 (en) Method and system for cache utilization by prefetching for multiple DMA reads

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
FPAY Annual fee payment

Payment date: 20031106

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee