KR100641988B1 - 비대칭형 단일 칩 이종 멀티프로세서 컴퓨터 시스템, 공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법, 및 아토믹 업데이트 장치 - Google Patents

비대칭형 단일 칩 이종 멀티프로세서 컴퓨터 시스템, 공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법, 및 아토믹 업데이트 장치 Download PDF

Info

Publication number
KR100641988B1
KR100641988B1 KR1020040027540A KR20040027540A KR100641988B1 KR 100641988 B1 KR100641988 B1 KR 100641988B1 KR 1020040027540 A KR1020040027540 A KR 1020040027540A KR 20040027540 A KR20040027540 A KR 20040027540A KR 100641988 B1 KR100641988 B1 KR 100641988B1
Authority
KR
South Korea
Prior art keywords
data
atomic
memory access
processor unit
direct memory
Prior art date
Application number
KR1020040027540A
Other languages
English (en)
Other versions
KR20040100884A (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 KR20040100884A publication Critical patent/KR20040100884A/ko
Application granted granted Critical
Publication of KR100641988B1 publication Critical patent/KR100641988B1/ko

Links

Images

Classifications

    • 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
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47GHOUSEHOLD OR TABLE EQUIPMENT
    • A47G19/00Table service
    • A47G19/22Drinking vessels or saucers used for table service
    • A47G19/2205Drinking glasses or vessels
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65DCONTAINERS FOR STORAGE OR TRANSPORT OF ARTICLES OR MATERIALS, e.g. BAGS, BARRELS, BOTTLES, BOXES, CANS, CARTONS, CRATES, DRUMS, JARS, TANKS, HOPPERS, FORWARDING CONTAINERS; ACCESSORIES, CLOSURES, OR FITTINGS THEREFOR; PACKAGING ELEMENTS; PACKAGES
    • B65D85/00Containers, packaging elements or packages, specially adapted for particular articles or materials
    • B65D85/70Containers, packaging elements or packages, specially adapted for particular articles or materials for materials not otherwise provided for
    • B65D85/804Disposable containers or packages with contents which are mixed, infused or dissolved in situ, i.e. without having been previously removed from the package
    • B65D85/808Disposable containers or packages with contents which are mixed, infused or dissolved in situ, i.e. without having been previously removed from the package for immersion in the liquid to release part or all of their contents, e.g. tea bags
    • 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
    • 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
    • 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
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0038System on Chip

Landscapes

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

Abstract

본 발명은 DMA 전송을 사용하는 공유 메모리를 구비한 비대칭형 단일 칩 이종 멀티프로세서 컴퓨터 시스템에서 아토믹 업데이트 프리미티브를 제공한다. 예약식 겟 로크 라인 커맨드, 조건부 풋 로크 라인 커맨드 및 비조건부 풋 로크 라인 커맨드를 포함하는 세트로부터 적어도 하나의 로크 라인 커맨드가 생성된다.

Description

비대칭형 단일 칩 이종 멀티프로세서 컴퓨터 시스템, 공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법, 및 아토믹 업데이트 장치{METHOD TO PROVIDE ATOMIC UPDATE PRIMITIVES IN AN ASYMMETRIC HETEROGENEOUS MULTIPROCESSOR ENVIRONMENT}
본 발명 및 그 장점을 더 완벽하게 이해하기 위해서 첨부된 도면과 연관시켜서 다음의 상세한 설명을 참조한다.
도 1은 시스템 메모리, DMA 엔진, 아토믹 설비 및 로컬 저장부에 연결된 다수의 버스의 시스템 맵을 개략적으로 도시하는 도면,
도 2는 예약식 DMA 겟 로크 라인 및 조건부 풋 로크 라인을 캐시 및 로컬 저장부 내외로 사용하는 방법을 도시하는 도면,
도 3은 비조건부 DMA 풋 로크 라인을 사용하는 방법을 도시하는 도면.
본 발명은 일반적으로 메모리의 아토믹 업데이트(atomic update)에 관한 것 이고, 더 상세하게는 어태치 프로세서 유닛(APU)을 가지고 직접 메모리 액세스 커맨드를 사용해서 아토믹 업데이트를 이용하는 것에 관한 것이다.
종래의 대칭형 멀티프로세서 시스템에서, 즉 복수의 메인 프로세서 유닛(MPU)을 포함하는 멀티프로세서에서, MPU는 로드/저장 인스트럭션을 사용해서 공통 공유 메모리에 직접 액세스한다. 이들 로드/저장 인스트럭션에 더해서, 다수의 MPU에서 실행중인 프로그램들이 공유하는 메모리로의 동기화 및 액세스를 제어하기 위해서 "아토믹" 판독/수정/기록 기능이 종종 제공된다. 일반적으로 "아토믹" 커맨드는 데이터 영역을 잠재적으로 액세스하는 다른 유닛에 비해서, 메모리 내에서 시퀀스가 하나의 연산인 것처럼 데이터가 판독되고, 수정되고, 기록되는 것을 가능하게 하는 커맨드로 정의된다. 이는 전체 시퀀스가 완료될 때까지 메모리 영역으로의 다른 유닛의 액세스를 로크 아웃하거나, 예약 및 조건부 저장 기술을 사용해서 더 프리미티브한 로드를 사용하는 하드웨어 시퀀스에 의해 행해졌다. 일반적으로, 이는 다른 MPU 또는 I/O 유닛이 메모리에 액세스해서 판독 또는 기록하기 전에 메모리 영역이 완전히 업데이트되고, 정합성을 갖는(consistent) 것을 즉, 아토믹 커맨드 또는 업데이트 시퀀스가 그 메모리 영역과 함께 "종료"되는 것을 보장한다.
아토믹 커맨드는 종종 "비교 및 스왑", "테스트 및 설정", "페치 및 무연산", "페치 및 저장" 등의 특정 인스트럭션의 형태를 취한다. 다른 기술은 더 기본적인 "로딩 및 저장" 및 "조건부 저장" 인스트럭션 쌍을 MPU에 제공하며, 이는 소프트웨어의 아토믹 연산 시퀀스를 구현하는 성능을 제공한다. 이런 기술은 동종 MPU로 이루어진 대칭형 멀티프로세서 시스템에 특히 효과가 있다.
비대칭 이종 멀티프로세서 시스템에서, MPU는 종래의 공유 메모리 스타일로 배치된다. 전용 프로세서인 어태치 프로세서 유닛(APU)은 직접 메모리 액세스(DMA) 엔진이 주문하는 블록 이동을 통해서 공유 메모리에 간접적으로 액세스할 수 있는 독자적인 전용 인스트럭션 및 데이터 메모리를 구비하고 있다. 복수의 MPU 및 APU가 DMA 엔진을 사용해서 공유 메모리에 피어(peers)로서 액세스하므로, 아토믹 업데이트 메커니즘의 범위를 DMA 엔진까지 확대할 필요가 있다. 일반적으로 이는 공유 메모리 내의 데이터로의 액세스를 조정하는 설비를 제공하기 위해서 행해진다. 이런 메커니즘을 구비하지 않는 다수의 APU가 존재하는 환경에서는 DMA 엔진으로의 커맨드를 통해서, 한번에 하나씩 각각의 APU로 작업을 분배해서 MPU의 마스터/슬레이브 방식을 사용하는 것은 APU의 유효 시간 및 개개의 APU에 작업을 할당하는 데 사용되는 MPU의 시간으로 인해서 시스템 사용 및 효율을 저하시킨다.
따라서, 공유 메모리의 아토믹 업데이트 시에, 다른 MPU 및 APU/DMA 엔진을 사용해서 피어로서 참여하면서 APU 로컬 저장부와 공유 시스템 메모리 사이에서 데이터를 카피하기 위해, APU에 의해 사용될 수 있는 DMA 엔진이 요구된다.
본 발명은 DMA를 사용하는 공유 메모리를 구비한 비대칭형 단일 칩 이종 멀티프로세서 컴퓨터 시스템용 아토믹 업데이트 프리미티브를 제공하는 것이다. 적어도 하나의 로크 라인 커맨드가 예약식 겟 로크 라인 커맨드(getllar:a get lock line command with reservation), 조건부 풋 로크 라인 커맨드(putllc:a put lock line conditional command) 및 비조건부 풋 로크 라인 커맨드(putllu:a put lock line unconditional command)를 포함하는 세트로부터 생성된다.
다음 설명에서, 본 발명의 완전한 이해를 제공하기 위해 많은 특정한 세부 사항이 설명될 것이다. 그러나 당업자는 본 발명이 이러한 특성 세부 사항없이 구현될 수 있다는 것을 이해할 것이다. 다른 예로, 본 발명이 불필요하게 상세해져서 불분명해지지 않도록, 잘 알려진 소자는 개략적으로 혹은 블록도의 형태로 도시되어 있다. 또한, 대부분의 경우, 네트워크 통신, 전자기 신호 기술 등에 관한 세부 사항은 본 발명을 완전하게 이해하는 데 필요한 것이 아니므로 생략되었으며, 이들은 당업자의 이해 범주 내에 있는 것으로 생각된다.
본 설명의 나머지 부분에서, 처리 장치(PU)는 디바이스에서 유일한 계산 프로세서가 될 수 있다. 이 경우, PU는 전형적으로 MPU(main processing unit)이라고 간주된다. 처리 장치는 주어진 계산 디바이스용으로 개발된 몇 가지 방법 또는 알고리즘에 따라서 계산 업무(computational load)를 공유하는 많은 처리 장치 중 하나가 될 수도 있다. 본 설명의 나머지 부분에서, MPU가 디바이스에서 유일한 계산 소자이건, MPU가 다른 MPU와 함께 계산 업무를 공유하건 간에, 프로세서를 지칭할 때는 모두 MPU란 용어를 사용한다.
특별히 별도로 언급하지 않으면, 여기서 설명되는 모든 기능은 하드웨어 또 는 소프트웨어로 혹은 이들의 조합으로 수행될 수 있다는 점에 주의한다. 그러나 별도로 설명되지 않는 한, 바람직한 실시예에서, 이 기능은 컴퓨터 프로그램 코드와 같은 코드, 소프트웨어 및/또는 이러한 기능을 수행하도록 코드화된 집적 회로에 따라서, 컴퓨터 또는 전자 데이터 프로세서와 같은 프로세서에 의해 수행된다.
도 1을 참조하면, 멀티프로세서 환경에서 APU(110)가 피어(a peer)로서 자동으로 자유롭게 참여하는 것을 가능하게 하는 시스템(100)이 개시된다. 이는 DMA 엔진(115)을 블록 모드로 사용해서 시스템 메모리(170)에 간접적으로 액세스할 수 있는 APU(110)를 사용함으로써 수행된다. 일반적으로 시스템(100)에서, APU(100)는 "로딩 및 예약(load and reserve)"(getllar) 로크 라인 커맨드 및 "조건부 저장(conditional store)"(putllc) 또는 "비조건부 저장(unconditional store)"(putllu) 로크 라인 커맨드를 사용해서 공유 메모리(170)의 액세스를 획득하고, 예약 그래뉼(reservation granule)을 로크함으로써 아토믹 판독/수정/기록 시퀀스를 사용한다.
시스템(100)은 버스 인터페이스 컨트롤러(BIC:150)에 연결된 하나 이상의 복합 MPU(193), 그리고 BIC(150)에 연결된 하나 이상의 복합 APU(192)를 포함한다. BIC(150)는 메모리 컨트롤러(160)에 연결되며, 이는 다시 시스템/공유 메모리(170)에 연결된다. 하나 이상의 MPU(180)를 구비한, 적어도 하나의 복합 APU/DMA(192) 및 적어도 하나의 복합 MPU 유닛(193)은 시스템의 계산 기능을 가진다.
복합 APU(192)는 로컬 저장부(105)에 연결된 APU(110)를 포함한다. APU(110)는 컨트롤 버스를 통해서 DMA 큐(120)에 연결된다. DMA 큐(120)는 DMA 엔 진에 연결된다. DMA 엔진(115)은 아토믹 설비(130)에 연결된다.
아토믹 설비(130)는 예약 스테이션(RS:135) 및 아토믹 캐시(137)를 포함한다. 아토믹 캐시(137)는 레벨 2(L2) 캐시가 될 수 있다. 아토믹 설비(130)는 컨트롤 버스 및 스누핑 버스(snoop bus)를 통해서 BIC(150)에 연결된다.
복합 MPU(193)는 BIC(150)에 연결된 L2 캐시(187)에 연결된 하나 이상의 MPU(180)를 포함한다. BIC(150)는 메모리 컨트롤러(160)에 연결되고, 이는 다시 시스템/공유 메모리(170)에 연결된다. 다른 실시예에서, 복수의 복합 APU(192)가 시스템(100)에서 사용되지만, 복합 MPU(193)을 사용하지 않고 DMA 커맨드를 통해서 APU(110)들 사이에서 아토믹 업데이트 시퀀스를 지원한다. 다른 방안으로, DMA 커맨드를 통해서 아토믹 업데이트 시퀀스를 지원하는 다른 유닛도 본 발명의 범주 내에 있다.
일반적으로, APU(110)는 동기화 등의 이유로, getllar, putllc 및 putllu 로크 라인 DMA 커맨드의 사용을 통해서 아토믹 조작을 이용한다. DMA 커맨드는 DMA 큐(120)에 의해 적절하게 소트된 후에, APU(110)의 요청시에 DMA 엔진(115)에 의해 발행된다. 전형적으로, 로크의 획득 및 로크의 릴리스가 APU(110)에서 실행되는 프로그램에 대해 동기화되어 있기 때문에, 로크 라인 DMA 커맨드는 즉시 실행을 위해서 DMA 큐(120)로 송신된다.
전형적으로 RS(135)는 DMA 커맨드 getllar의 발행에 의해 설정된다. DMA 엔진(115)의 커맨드에서 시스템 메모리(170)에서 선택된 메모리 어드레스의 데이터는 처리를 위해 로컬 저장부(105)에 전송된다. 전형적으로 이 데이터 전송은 캐시 라인인, 128 바이트가 될 수 있다. 이 데이터는 종종 아토믹 캐시(137)에서 발견될 수 있다(이전에 발행된 getllar가 이 데이터를 액세스하는데 사용된 경우). 그러나, 아토믹 캐시(137)에서 발견되지 않으면, BIC(150)에 데이터를 요청해서, 시스템 메모리(170) 또는 다른 어태치 유닛(각각, MPU 또는 APU)과 관련된 캐시로부터 검색된 데이터는 로컬 저장부(105)에 카피되고 또한 아토믹 캐시(137)에 카피된다.
또한, getllar 커맨드 동안 RS(135)의 예약 그래뉼(reservation granule)에 대해 "예약"이 이루어진다. 예약 그래뉼의 크기는 구현 방식에 따라 다르지만, 예약 그래뉼이 캐시 라인 크기와 일치하면 구현은 더 용이해진다. APU(110) 프로그램은 컨트롤 버스(103)를 통해서 DMA 큐(120)로부터 커맨드 완료 상태를 판독함으로써 getllar 커맨드의 완료를 대기한다. 컨트롤 버스(103)는 일반적으로 복수의 채널을 포함하고, 여기서 각각의 채널은 미리 정해진 정보를 전송한다. getllar 커맨드는 일단 예약이 RS(135)에 설정되고, 로컬 저장부(105)에 데이터가 카피되면 "완료"라고 보고한다. APU(110) 프로그램은 전형적으로 예컨대, 로크가 취해졌다거나 로크가 없음을 나타내는 값인 로컬 저장부(130) 내의 데이터를 로컬 저장 버스(107)를 통해서 예측 결과와 비교하고, 이 값이 예측 결과와 같지 않으면(로크가 취해졌음을 나타내는 값과 같이), 컨트롤 버스(101)를 통해서 getllar 커맨드를 DMA 큐(120)에 발행한다. 다른 실시예에서, 이 값이 예측 결과와 같으면(로크 없음과 같이), APU(110) 프로그램은 로컬 저장 버스(107)를 통해서 로컬 저장부 내의 데이터를 수정하고(로크가 취해졌음을 나타내도록), 컨트롤 버스(103)를 통해서 putllc 커맨드를 DMA 큐(120)에 발행함으로써 아토믹 캐시(137) 내의 데이터를 "아토믹(atomically)" 업데이트하거나 다른 방안으로, 로컬 저장부(105) 내에 구비하고 있는 데이터가 확실하게 시스템 메모리(170) 또는 시스템 메모리의 다른 유닛의 캐시로부터의 최근 카피본이 되게 한다.
"putllc" 커맨드 실행 전에, 예약 스테이션(135)에 저장된 예약 그래뉼 어드레스 내에 있는 어드레스에 대해서 아토믹 캐시(137)의 "킬(kill)" 타입 스누핑이 아토믹 설비(130)에 의해 BIC(150)로부터 수신되면, getllar 커맨드의 실행에 의해 미리 설정된 예약이 예약 스테이션(135)에서 재설정된다. 킬 타입 스누핑 커맨드는 BIC(150)에 어태치된 다른 유닛이 아토믹 캐시(137) 내에 포함될 수 있는 데이터를 수정(기록)하려 할 때 수신된다.
DMA 엔진(115)이 putllc의 결과, 로컬 저장부(105)로부터 아토믹 캐시(137) 또는 시스템 메모리(170)로 데이터를 카피할 기회를 갖기 전에 예약이 무효화되면, DMA 엔진(115)은 DMA 큐(120)에서 putllc 커맨드에 "예약 상실" 상태임을 표시해서 로컬 저장부(105)로부터 아토믹 캐시(137) 또는 시스템 메모리(170)로 데이터를 카피하지 않는다. 예약 스테이션(135) 내의 예약이 putllc 커맨드에 의해 주소지정된 예약 그래뉼에 대해 존재하는 경우, 아토믹 설비(130)는 킬 타입 스누핑 커맨드를 BIC(150)를 통해서 다른 유닛으로 송신함으로써 동일한 예약 그래뉼에 대해서 다른 유닛(APU 또는 MPU)이 그들의 아토믹 설비 내에 행했던 임의의 예약을 재설정한다. 이는 아토믹 설비(130)가 BIC(150)에 어태치된 다른 프로세서(MPU, APU)가 데이터의 업데이트 프로세싱을 완료하기 전에, 자신들의 데이터의 업데이트 프로세 싱을 종료하기 때문이며, 업데이트된 데이터는 다른 프로세서에 의해 더 사용되어야 하는 데이터이다.
DMA 엔진(115)은 로컬 저장부(105)로부터 아토믹 캐시(137)로 데이터를 카피하고, 예약 스테이션(135)에서 예약이 재설정된다. DMA 엔진(115)은 DMA 큐(120)의 putllc 커맨드를 "성공" 상태로 설정한다. APU(110) 프로그램은 컨트롤 버스(103)를 사용해서 대기하고, DMA 큐(120)로부터 putllc 커맨드의 완료 상태를 판독해서 상태가 "성공" 인지 "예약 상실"인지 판정한다. 만약 "성공"이면, 아토믹 연산은 완료되고, "예약 상실"이면, getllar 커맨드의 발행과 함께 개시하는 전체 시퀀스는 APU(110) 프로그램에 의해서 재시도되어야 한다.
"로크"를 유지하는 동안 수행되는 putllc 커맨드 및 후속하는 연산이 성공적으로 완료된 이후에, APU(110)는 putllu 커맨드를 발행해서 "로크"를 릴리스한다. putllu 커맨드는 일반적으로 APU(110) 로컬 저장부로부터 아토믹 캐시(137)로 데이터를 무조건적으로 전송하기 위해 사용된다. 캐시 라인이 아토믹 캐시(137)에 존재하며 배타적(present and exclusive)이라고 표시되어 있으면, DMA 엔진(115)은 APU(110) 로컬 저장부로부터 아토믹 캐시(137)로 데이터를 전송할 것이다.
캐시 라인이 존재하지만, 배타적이지 않음(present but not exclusive)이라고 표시되어 있으면, 아토믹 설비는 "디클레임(declaim)" 스누핑 커맨드를 발행해서, 그 데이터의 카피를 가지고 있는 다른 유닛의 캐시 내의 캐시 라인을 무효화시킨다. 이 라인이 이 캐시(137) 내에서 "배타적"이라고 표시되어 있으면, DMA 엔진(115)은 APU(110) 로컬 저장부로부터 아토믹 캐시(137)로 데이터를 전송한다. 마지막으로, 캐시 라인이 아토믹 캐시(137)에 존재하지 않으면, 아토믹 설비(130)는 BIC(150)를 통해서 스누핑 요청을 발행함으로써, 라인이 어떤 다른 유닛의 캐시에 존재하는지 여부를 결정한다. 라인이 다른 유닛의 캐시에 존재하면, 데이터는 다른 유닛의 캐시로부터 시스템(100)과 관련된 아토믹 캐시로 전송되고, 데이터를 포함하고 있는 캐시 라인은 데이터가 전송되어 온 캐시에서 무효화된다. 만약 데이터가 다른 유닛의 캐시에 존재하지 않으면, 메모리 컨트롤러(160)는 공유 메모리(170)로부터 데이터를 공급할 것이다. 다른 방안으로, 데이터를 포함하고 있는 아토믹 캐시의 캐시 라인이 "배타적"이라고 표시되기도 한다. 그러면 DMA 엔진(115)은 로컬 저장부(105)로부터 아토믹 캐시(137)로 데이터를 전송한다.
즉, "비교 및 스왑" 아토믹 업데이트에서, APU(110)는 로크 없음을 나타내는 값이 될 수 있는 비교 결과와 일치하는 값을 가질 때까지 반복해서(in a loop) getllar 커맨드를 발행할 것이다. 이 값이 적절하면, "스왑"이 시도된다. 즉, 이 값은 "로크가 취해짐"을 나타내는 값으로 변화된다. 이후에 putllc가 발행되어서 "이 값을 아토믹 스왑"하고, 어떤 경우에는 로크 없음이라는 오래된 값을 로크가 취해졌다는 새로운 값으로 스왑한다. 일단 이것이 성공하면, APU(110)는 그 자원을 "소유"하고, 즉 판독 또는 판독/기록 권한을 가지고, "로크된" 객체에 대해 다른 연산을 수행한다. 이후에 APU(110)가 종료되면, "로크를 릴리스"하거나, 즉 값을 "로크가 취해짐"에서 "로크 없음"의 값으로 변환한다. 이는 putllu 커맨드를 사용해서 이루어진다.
아토믹 캐시(137)는 아토믹 업데이트 수행시에 그 역할을 한다. 바로 이런 특성 때문에, 동일한 데이터의 아토믹 업데이트는 BIC(150)에 어태치된 다수의 복합 APU(APU/DMA 유닛:192), 복합 MPU(193)에 의해 주기적으로 동시에 시도될 수 있다. 아토믹 캐시(137)가 로크 라인과 관련된 최신 데이터를 가질 수 있기 때문에, 다른 캐시가 업데이트되어야 할 때, 다른 아토믹 캐시(137)로부터의 정보를 사용해서 업데이트될 수 있으면, 시스템 메모리(170)로부터의 정보는 필요없다. 본 실시예에서, 다수의 유닛 사이의 캐시 대 캐시 전송은 동일한 집적 회로 칩 상에서 이루어질 수 있으며, 실질적으로 2개의 별도의 집적 회로 칩 사이에서 일어나는 캐시 전송에 대해서 시스템 메모리보다 더 빠를 수 있다.
일반적으로, 시스템(100)은 아토믹 캐시(137)에서 동기화를 위해 사용되는 데이터의 DMA 전송 결과를 캐싱하지만, 동기화 방식이 아닌 메모리 전송과 같이 시스템 메모리(170)로부터 전송되는 모든 데이터를 캐싱하지는 않기 때문에 시간을 단축시킨다. 아토믹 캐시(137)가 시스템 메모리와 로컬 저장부 사이의 모든 DMA 데이터 전송을 캐싱하는 데 사용되는 캐시보다 더 작을 수 있기 때문에, 이는 칩 영역을 상당히 감소시킨다. 또한, 검색 그래뉼이 캐시 라인 크기 및 정렬 상태와 일치하도록 미리 정해질 수 있기 때문에, 아토믹 캐시(137)로부터 특정 데이터를 검색하는 데 필요한 시간이 단축된다. 비 로크 라인(non-lockline) DMA 커맨드는 다양한 전송 크기 및 정렬 상태를 가질 수 있다.
예컨대, 어떤 실시예에서는, 4개의 캐시 라인(128 바이트의 4배)이 아토믹 캐시(137) 내의 로크 라인 커맨드를 사용해서 액세스되는 데이터를 위해 예약되며, 이는 캐시 대 캐시, 캐시 대 로컬 저장부, 시스템 메모리 대 캐시 등 메모리 전송 의 기본 단위이다. 그러나, 당업자는 다른 예약 그래뉼이 사용될 수 있다는 것을 이해할 것이다. 또한, APU 자체는 필요한 동기화 및 상호 배제를 "로크 라인" 커맨드를 사용해서 직접 제공할 수 있다.
도 2를 참조하면, 시스템(100)에서 DMA 아토믹 전송을 사용하는 방법(200)이 개시된다. 방법(200)은 특정 커맨드 및 파라미터를 사용해서 아토믹 커맨드가 발행되었는지 여부 및 에러 상태로 인해서 커맨드의 부적절한 호출 또는 실행이 유발되었는지를 결정한다.
단계(205)에서, getllar 커맨드가 APU(110)에 의해 발행되고, APU(110)는 아토믹 DMA 커맨드 "getllar"를 연결된 제어 버스에 발행해서 DMA 큐(120)에 전송되게 한다. 이 실시예에서, getllar 커맨드는 3개의 파라미터를 포함한다. 제 1 파라미터는 로컬 저장부(105)에서 검색된 데이터가 마지막으로 전송되는 로컬 저장 어드레스(LSA)이다. 제 2 파라미터는 시스템 메모리 내의 데이터의 카피의 원본이 되는 하이 어드레스인 EAH(effective address high)이다. 제 3 파라미터는 시스템 메모리 내의 데이터의 카피 원본이 되는 로우 어드레스인 EAL(effective address low)이다. EAH 및 EAL 파라미터는 아토믹 업데이트 시퀀스에 포함된 공유 메모리 내의 위치를 정의한다.
단계(205)에서, getllar 커맨드는 큐 앞에 위치된다. 이 커맨드는 DMA 큐(120)에 위치된다. 이 커맨드 및 관련 파라미터는 일련의 "채널에 기록" 커맨드를 통해서 기록된다.
단계(210)에서, DMA 엔진은 시스템 메모리(170) 또는 L2 캐시(187) 또는 아토믹 캐시(137)로부터 로컬 저장부(105)로의 데이터의 전송을 주문한다. 단계(215)에서, 데이터가 아토믹 캐시(137)에서 발견되지 않으면, BIC(150)는 이 데이터 요청을 구현한다. BIC(150)는 복합 MPU(193) L2 캐시(187) 및/또는 복합 APU(192) 아토믹 캐시(137) 중 어느 하나로부터 스누핑 요청을 통해서 우선 선택된 데이터를 요청한다. 요청된 데이터가 어느 캐시에서도 발견되지 않으면, BIC(150)는 시스템 메모리(170)로부터 데이터를 요청한다. 단계(220)에서, 데이터가 L2 캐시(187) 또는 시스템 메모리(170)로부터 적절하게 전송되면, 전송되는 데이터의 카피가 아토믹 캐시(137)에 저장되고, DMA 엔진은 아토믹 캐시(137)로부터 로컬 저장부(105)로 데이터를 전송한다.
단계(225)에서, getllar 커맨드에 포함된 예약 그래뉼 위치를 나타내는 어드레스를 사용해서 DMA 엔진(115)에 의해 RS(135)로 예약이 설정된다. 단계(227)에서, APU(110)는 getllar 커맨드가 완료되었다는 완료 통지를 대기한다. 단계(230)에서, APU(110)는 그 로컬 저장부(105)에 위치되었던 데이터를 처리한다. 단계(235)에서, 로컬 저장부내의 로크 라인 데이터를 처리하고 수정한 이후에, APU(110)는 putllc 커맨드를 발행한다.
단계(240)에서, 아토믹 설비(130)는 예약 스테이션(130)이 getllar 커맨드에 의해 이전에 설정된 로크 라인 예약 그래뉼에 아직 예약을 가지고 있는지 결정한다. 예약이 없으면, putllc 커맨드 상태는 단계(242)에서 "오류"로 설정되고, 단계(290)로 넘어간다.
그러나, 예약이 아직 존재하면, 단계(265)에서, DMA 엔진(115)은 로컬 저장부(105)로부터 아토믹 캐시(137)로 데이터를 전송한다. 단계(270)에서, 이 캐시 라인의 예약 스테이션은 예약 스테이션(135)에서 재설정된다. 단계(280)에서, putllc 커맨드는 DMA 큐(120)에서 "성공"으로 저장된다. 단계(290)에서, APU 프로그램은 putllc 커맨드가 완료인지 비완료인지, 로크 라인 상태를 판독한다. 단계(295)에서, putllc 커맨드가 오류이면, 전체 시퀀스는 단계(205)에서 시작되어 재실행되고, 다른 getllar 커맨드가 발행된다. 그러나, putllc 커맨드가 성공이면, 도 2의 아토믹 업데이트 시퀀스는 단계(297)에서 종료한다.
도 3을 참조하면, putllu 커맨드를 발행하는 방법(300)이 개시된다. 일반적으로 putllu 커맨드는 도 2의 아토믹 업데이트 시퀀스에 의해 이전에 획득된 소프트웨어 로크를 릴리스하는 데 사용된다.
단계(305)에서, APU(110)는 putllu 커맨드를 DMA 큐에 발행한다. 단계(310)에서, DMA 엔진(115)은 putllu 커맨드를 처리해서 128바이트를 아토믹 캐시(137)에 기록할 것을 요청한다. 단계(315)에서, 아토믹 캐시(137)는 그 디렉토리를 판독해서 아토믹 캐시(137)에 라인이 존재하고, 배타 상태인지 결정한다. 단계(320)에서, 아토믹 캐시(137)는 캐시 라인이 관련 아토믹 캐시(137)에 존재하는지 여부 및 배타 상태인지 결정한다.
캐시 라인이 관련 아토믹 캐시(137)에 존재하지만, 배타 상태가 아니라면, 단계(330)에서 아토믹 캐시(137)는 배타적인 액세스로 데이터를 획득하도록 BIC(150)에 요청한다. "수정, 배타, 공유 그리고 무효화(Modified, Exclusive, Shared and Invalid)"(MESI) 캐시 제어 프로토콜이 사용되고 있지만, 다른 형태의 캐시 제어 프로토콜도 본 발명의 범주 내에 있다.
캐시 라인이 관련 아토믹 캐시(137)에 존재하고 배타적이면, 단계(338)에서 아토믹 설비(130)는 로컬 저장부(105)로부터 아토믹 캐시(137)로 데이터 전송을 개시하도록 DMA 엔진(115)에 주문한다. 일반적으로 아토믹 캐시(137) 내의 아토믹 데이터 전송을 수행하면, 로컬 저장부(105)로부터 시스템/공유 메모리(170)로의 전송 중으로 나타나는 전송보다 더 빠르게 전송 아토믹 캐시(137)로부터 로컬 저장부로의 데이터 버스를 통한 처리를 수행할 수 있다.
본 발명이 많은 형태 및 실시예를 취할 수 있다는 것을 이해할 것이다. 따라서, 본 발명의 사상 또는 범주를 벗어나지 않은 몇 가지 수정이 있을 수 있다. 여기서 설명된 성능은 다양한 프로그래밍 가능 모델이 가능하게 한다. 본 개시물은 어떤 특정 프로그래밍 모델을 선호하는 것이 아니며, 대신에 이러한 프로그래밍 모델이 만들어지는 토대가 되는 메커니즘에 관한 것이다.
바람직한 실시예 중 몇 개를 참조해서 본 발명을 설명했지만, 본래 한정하고자 하는 것이 아니고 예시일 뿐이며, 개시된 실시예가 광범위한 수정, 변형, 변화 및 대치가 이 개시물에서 고려되고, 일부 실시예에서, 본 발명의 몇 가지 특성이 다른 특성의 대응하는 사용없이 이용될 수 있다는 점에 주의한다. 많은 이러한 수정 및 변형이 본 실시예를 검토한 당업자에게는 자명할 것이다. 따라서, 첨부된 청구의 범위는 본 발명의 범에 내에서 이루어지는 방식으로 넓게 구성되어 있음을 이해할 것이다.
본 발명을 통해서, DMA 전송을 수행하는 공유 메모리를 구비한 비대칭형 단일 칩 이종 멀티프로세서 컴퓨터 시스템에서 아토믹 업데이트 프리미티브를 제공할 수 있다.

Claims (39)

  1. 삭제
  2. 예약식 겟 로크 라인 커맨드(a get lock line command with reservation), 조건부 풋 로크 라인 커맨드(a put lock line conditional command) 및 비조건부 풋 로크 라인 커맨드(a put lock line unconditional command) 중 하나를 생성하도록 구성된 어태치 프로세서 유닛과,
    상기 어태치 프로세서 유닛에 연결된 직접 메모리 액세스 엔진을 포함하되,
    상기 직접 메모리 액세스 엔진은 예약식 겟 로크 라인 커맨드, 조건부 풋 로크 라인 커맨드 및 비조건부 풋 로크 라인 커맨드 중 하나를 수신하는 데 사용될 수 있는
    비대칭형 단일 칩 이종 멀티프로세서 컴퓨터 시스템.
  3. 제 2 항에 있어서,
    상기 어태치 프로세서 유닛에 연결된 로컬 저장부를 더 포함하는
    비대칭형 단일 칩 이종 멀티프로세서 컴퓨터 시스템.
  4. 삭제
  5. 제 3 항에 있어서,
    상기 직접 메모리 액세스 엔진에 연결된 캐시 스누핑 버스(cache snoop bus)를 더 포함하는
    비대칭형 단일 칩 이종 멀티프로세서 컴퓨터 시스템.
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 컴퓨터 시스템에서 공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법에 있어서,
    프로세서 유닛이 로딩 및 예약 직접 메모리 액세스 커맨드를 발행해서 공유 메모리로부터 상기 프로세서 유닛과 관련된 로컬 저장부로 일정량의 데이터를 전송하는 것에 응답해서, 상기 프로세서 유닛과 관련된 로컬 저장부로 상기 일정량의 데이터를 로딩하는 단계와 - 상기 일정량의 데이터의 위치는 상기 로딩 및 예약 직접 메모리 액세스 커맨드에 의해 지정됨 - ,
    상기 일정량의 데이터를 예약하는 단계를 포함하는
    공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
  28. 제 27 항에 있어서,
    상기 일정량의 데이터는 캐시 라인이고,
    상기 프로세서 유닛과 관련된 로컬 저장부로 상기 일정량의 데이터를 로딩하는 단계는
    상기 일정량의 데이터가 상기 프로세서 유닛과 관련된 아토믹 캐시에 저장되어 있으면, 상기 아토믹 캐시로부터 상기 로컬 저장부로 상기 일정량의 데이터를 로딩하는 단계를 포함하는
    공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
  29. 제 28 항에 있어서,
    상기 프로세서 유닛과 관련된 로컬 저장부로 상기 일정량의 데이터를 로딩하는 단계는
    상기 일정량의 데이터가 다른 프로세서 유닛과 관련된 아토믹 캐시에 저장되어 있으면, 상기 다른 프로세서 유닛과 관련된 상기 아토믹 캐시로부터 상기 로컬 저장부로 상기 일정량의 데이터를 로딩하는 단계를 포함하는
    공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
  30. 제 28 항에 있어서,
    상기 프로세서 유닛과 관련된 로컬 저장부로 상기 일정량의 데이터를 로딩하는 단계는
    상기 일정량의 데이터가 상기 아토믹 캐시에 저장되어 있지 않으면, 상기 일정량의 데이터를 상기 공유 메모리로부터 상기 로컬 저장부로 로딩하는 단계를 더 포함하는
    공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
  31. 제 30 항에 있어서,
    상기 프로세서 유닛은 상기 로컬 저장부 내의 상기 일정량의 데이터에 대해서 연산을 수행해서 처리된 데이터를 형성하며,
    상기 프로세서 유닛의 조건부 저장 직접 메모리 액세스 커맨드를 수신하는 것에 응답해서 상기 예약이 아직 존재하고 있는지 판정하는 단계와,
    상기 예약이 존재하고 있으면 상기 처리된 데이터를 상기 로컬 저장부로부터 상기 아토믹 캐시로 카피하는 단계를 더 포함하는
    공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
  32. 제 31 항에 있어서,
    상기 일정량의 데이터의 예약을 릴리스하는 단계를 더 포함하는
    공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
  33. 제 31 항에 있어서,
    상기 일정량의 데이터 내에 있는 어드레스에 대한 킬(kill) 타입 스누핑에 응답해서 상기 예약을 재설정하는 단계를 더 포함하는
    공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
  34. 제 31 항에 있어서,
    상기 예약이 아직 존재하지 않으면, 상기 로딩 및 예약 직접 메모리 액세스 커맨드를 재시도하는 단계를 더 포함하는
    공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
  35. 제 28 항에 있어서,
    상기 프로세서 유닛은 상기 로컬 저장부 내의 상기 일정량의 데이터에 대해서 연산을 수행해서 처리된 데이터를 형성하며,
    상기 프로세서 유닛에서 비조건부 저장 직접 메모리 액세스 커맨드를 수신하는 것에 응답해서, 상기 처리된 데이터를 상기 로컬 저장부로부터 상기 아토믹 캐시로 카피하는 단계를 더 포함하는
    공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
  36. 제 35 항에 있어서,
    상기 일정량의 데이터의 예약을 릴리스하는 단계를 더 포함하는
    공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
  37. 제 35 항에 있어서,
    상기 로컬 저장부로부터 상기 아토믹 캐시로 상기 처리된 데이터를 카피하기 전에, 상기 캐시 라인이 배타적이지 않은지 판정하는 단계와,
    상기 컴퓨터 시스템에서 하나 이상의 다른 프로세서 유닛에 대해서 상기 캐시 라인을 무효화시키는 단계를 더 포함하는
    공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
  38. 제 27 항에 있어서,
    상기 컴퓨터 시스템은 단일 칩 이종 컴퓨터 시스템인
    공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
  39. 단일 칩 이종 멀티프로세서 컴퓨터 시스템에서 공유 메모리의 직접 메모리 액세스의 아토믹 업데이트 장치에 있어서,
    복수의 제 1 타입 프로세서 유닛과,
    제 2 타입 프로세서 유닛과,
    상기 복수의 제 1 타입 프로세서 유닛과 상기 제 2 타입 프로세서 유닛 사이에서 공유되는 공유 메모리와,
    상기 복수의 제 1 타입 프로세서 유닛 내에 주어진 프로세서 유닛과 관련된 직접 메모리 액세스 엔진과,
    상기 주어진 프로세서 유닛과 관련된 로컬 저장부와,
    상기 주어진 프로세서 유닛과 관련된 예약 스테이션을 포함하되,
    상기 주어진 프로세서 유닛은 로딩 및 예약 직접 메모리 액세스 커맨드를 발행해서 상기 공유 메모리로부터 상기 주어진 프로세서 유닛과 관련된 상기 로컬 저장부로 일정량의 데이터를 전송하고,
    상기 직접 메모리 액세스 엔진은 상기 로딩 및 예약 직접 메모리 액세스 커맨드를 수신해서 상기 주어진 프로세서 유닛과 관련된 상기 로컬 저장부로 상기 일정량의 데이터를 로딩하며,
    상기 일정량의 데이터의 위치는 상기 로딩 및 예약 직접 메모리 액세스 커맨드에 의해 지정되며,
    상기 소정의 프로세서 유닛과 관련된 예약 스테이션은 데이터량을 예약하는
    아토믹 업데이트 장치.
KR1020040027540A 2003-05-22 2004-04-21 비대칭형 단일 칩 이종 멀티프로세서 컴퓨터 시스템, 공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법, 및 아토믹 업데이트 장치 KR100641988B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/443,727 2003-05-22
US10/443,727 US7114042B2 (en) 2003-05-22 2003-05-22 Method to provide atomic update primitives in an asymmetric heterogeneous multiprocessor environment

Publications (2)

Publication Number Publication Date
KR20040100884A KR20040100884A (ko) 2004-12-02
KR100641988B1 true KR100641988B1 (ko) 2006-11-06

Family

ID=33450499

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040027540A KR100641988B1 (ko) 2003-05-22 2004-04-21 비대칭형 단일 칩 이종 멀티프로세서 컴퓨터 시스템, 공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법, 및 아토믹 업데이트 장치

Country Status (6)

Country Link
US (2) US7114042B2 (ko)
JP (2) JP3974597B2 (ko)
KR (1) KR100641988B1 (ko)
CN (1) CN1273899C (ko)
HK (1) HK1070719A1 (ko)
TW (1) TWI269180B (ko)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US7478390B2 (en) * 2003-09-25 2009-01-13 International Business Machines Corporation Task queue management of virtual devices using a plurality of processors
US7496917B2 (en) 2003-09-25 2009-02-24 International Business Machines Corporation Virtual devices using a pluarlity of processors
US7389508B2 (en) 2003-09-25 2008-06-17 International Business Machines Corporation System and method for grouping processors and assigning shared memory space to a group in heterogeneous computer environment
US7444632B2 (en) 2003-09-25 2008-10-28 International Business Machines Corporation Balancing computational load across a plurality of processors
US7516456B2 (en) * 2003-09-25 2009-04-07 International Business Machines Corporation Asymmetric heterogeneous multi-threaded operating system
US7549145B2 (en) 2003-09-25 2009-06-16 International Business Machines Corporation Processor dedicated code handling in a multi-processor environment
US20050071828A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation System and method for compiling source code for multi-processor environments
US7415703B2 (en) * 2003-09-25 2008-08-19 International Business Machines Corporation Loading software on a plurality of processors
US7523157B2 (en) * 2003-09-25 2009-04-21 International Business Machines Corporation Managing a plurality of processors as devices
US7657667B2 (en) * 2004-03-25 2010-02-02 International Business Machines Corporation Method to provide cache management commands for a DMA controller
US7774750B2 (en) * 2005-07-19 2010-08-10 Microsoft Corporation Common concurrency runtime
US7509463B2 (en) * 2005-12-01 2009-03-24 Sony Computer Entertainment, Inc. Cell processor atomic compare and swap using dedicated synergistic processor element
US7624237B2 (en) * 2006-05-03 2009-11-24 International Business Machines Corporation Compare, swap and store facility with no external serialization
US9274859B2 (en) 2006-05-25 2016-03-01 Nvidia Corporation Multi processor and multi thread safe message queue with hardware assistance
US7606961B2 (en) * 2006-06-28 2009-10-20 Kabushiki Kaisha Toshiba Computer system and data pre-fetching method
GB2443277B (en) * 2006-10-24 2011-05-18 Advanced Risc Mach Ltd Performing diagnostics operations upon an asymmetric multiprocessor apparatus
US8024521B2 (en) * 2007-03-13 2011-09-20 Sony Computer Entertainment Inc. Atomic operation on non-standard sized data using external cache
US8266391B2 (en) * 2007-06-19 2012-09-11 SanDisk Technologies, Inc. Method for writing data of an atomic transaction to a memory device
US20090077322A1 (en) * 2007-09-19 2009-03-19 Charles Ray Johns System and Method for Getllar Hit Cache Line Data Forward Via Data-Only Transfer Protocol Through BEB Bus
US8245004B2 (en) * 2008-02-01 2012-08-14 International Business Machines Corporation Mechanisms for communicating with an asynchronous memory mover to perform AMM operations
US8095758B2 (en) * 2008-02-01 2012-01-10 International Business Machines Corporation Fully asynchronous memory mover
US8275963B2 (en) * 2008-02-01 2012-09-25 International Business Machines Corporation Asynchronous memory move across physical nodes with dual-sided communication
US7941627B2 (en) * 2008-02-01 2011-05-10 International Business Machines Corporation Specialized memory move barrier operations
US8015380B2 (en) * 2008-02-01 2011-09-06 International Business Machines Corporation Launching multiple concurrent memory moves via a fully asynchronoous memory mover
US8356151B2 (en) * 2008-02-01 2013-01-15 International Business Machines Corporation Reporting of partially performed memory move
US8327101B2 (en) * 2008-02-01 2012-12-04 International Business Machines Corporation Cache management during asynchronous memory move operations
JP5151559B2 (ja) * 2008-02-29 2013-02-27 富士通株式会社 プログラム実行システム
US20090248919A1 (en) * 2008-03-25 2009-10-01 Jerzy Szwagrzyk Method for external fifo acceleration
US20090254712A1 (en) * 2008-04-02 2009-10-08 Naveen Cherukuri Adaptive cache organization for chip multiprocessors
US8412862B2 (en) 2008-12-18 2013-04-02 International Business Machines Corporation Direct memory access transfer efficiency
CN101950282B (zh) * 2010-08-30 2012-05-23 中国科学院计算技术研究所 一种多处理器系统及其同步引擎
US8341316B2 (en) * 2010-11-17 2012-12-25 Advanced Micro Devices, Inc. Method and apparatus for controlling a translation lookaside buffer
US9280348B2 (en) 2012-03-28 2016-03-08 International Business Machines Corporation Decode time instruction optimization for load reserve and store conditional sequences
CN104583975B (zh) 2012-06-15 2017-07-14 英特尔公司 无消歧乱序加载存储队列
EP2862063B1 (en) * 2012-06-15 2022-09-14 Intel Corporation A lock-based and synch-based method for out of order loads in a memory consistency model using shared memory resources
KR101996351B1 (ko) 2012-06-15 2019-07-05 인텔 코포레이션 통합된 구조를 갖는 동적 디스패치 윈도우를 가지는 가상 load store 큐
CN104583956B (zh) 2012-06-15 2019-01-04 英特尔公司 用于实现加载存储重新排序和优化的指令定义
EP2862084A4 (en) 2012-06-15 2016-11-30 Soft Machines Inc METHOD AND SYSTEM FOR IMPLEMENTING RECOVERY FROM A SPECULATIVE TRANSMISSION OF FAULT FORECASTS / ERRORS DUE TO THE CHANGE AND OPTIMIZATION OF MEMORY LOADS
KR101996592B1 (ko) 2012-06-15 2019-07-04 인텔 코포레이션 명확화 없는 비순차 load store 큐를 갖는 재정렬된 투기적 명령어 시퀀스들
US10320861B2 (en) 2015-09-30 2019-06-11 Google Llc System and method for automatic meeting note creation and sharing using a user's context and physical proximity
KR102407917B1 (ko) 2015-11-12 2022-06-10 삼성전자주식회사 멀티 프로세서에 의해 공유되는 메모리를 포함하는 멀티 프로세서 시스템 및 상기 시스템의 동작 방법
CN105354153B (zh) * 2015-11-23 2018-04-06 浙江大学城市学院 一种紧耦合异构多处理器数据交换缓存的实现方法
US9652385B1 (en) * 2015-11-27 2017-05-16 Arm Limited Apparatus and method for handling atomic update operations
CN109324838B (zh) * 2018-08-31 2022-05-10 深圳市元征科技股份有限公司 单片机程序的执行方法、执行装置及终端
US11119781B2 (en) 2018-12-11 2021-09-14 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a fronting load
US11106608B1 (en) * 2020-06-22 2021-08-31 International Business Machines Corporation Synchronizing access to shared memory by extending protection for a target address of a store-conditional request

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0135927B1 (ko) * 1994-11-21 1998-06-15 양승택 다중 프로세서 시스템에서 아토믹 명령어 수행시 데이타 버퍼를 사용한 메인 메모리 액세스 장치
WO1999023559A1 (en) 1997-11-05 1999-05-14 Unisys Corporation Split lock operation to provide exclusive access to memory during non-atomic operations
KR20000006264A (ko) * 1998-06-19 2000-01-25 케네쓰 올센 확률적큐로크
US6496905B1 (en) 1999-10-01 2002-12-17 Hitachi, Ltd. Write buffer with burst capability

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2045789A1 (en) 1990-06-29 1991-12-30 Richard Lee Sites Granularity hint for translation buffer in high performance processor
JPH08287022A (ja) 1995-03-31 1996-11-01 Internatl Business Mach Corp <Ibm> マルチプロセッサ・システム及びその排他的制御方法
US5727172A (en) * 1995-05-01 1998-03-10 Motorola, Inc. Method and apparatus for performing atomic accesses in a data processing system
US5822588A (en) * 1995-06-09 1998-10-13 Sun Microsystem, Inc. System and method for checking the use of synchronization locks in a multi-threaded target program
US5794068A (en) * 1996-03-18 1998-08-11 Advanced Micro Devices, Inc. CPU with DSP having function preprocessor that converts instruction sequences intended to perform DSP function into DSP function identifier
US5887134A (en) * 1997-06-30 1999-03-23 Sun Microsystems System and method for preserving message order while employing both programmed I/O and DMA operations
US6098156A (en) * 1997-07-22 2000-08-01 International Business Machines Corporation Method and system for rapid line ownership transfer for multiprocessor updates
US6728839B1 (en) * 1998-10-28 2004-04-27 Cisco Technology, Inc. Attribute based memory pre-fetching technique
US6347347B1 (en) * 1999-07-15 2002-02-12 3Com Corporation Multicast direct memory access storing selected ones of data segments into a first-in-first-out buffer and a memory simultaneously when enabled by a processor
JP3853114B2 (ja) * 1999-07-30 2006-12-06 松下電器産業株式会社 インターフェースの設計方法
US6493741B1 (en) * 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US6691178B1 (en) * 2000-02-22 2004-02-10 Stmicroelectronics, Inc. Fencepost descriptor caching mechanism and method therefor
JP2002163239A (ja) 2000-11-22 2002-06-07 Toshiba Corp マルチプロセッサシステムおよびその制御方法
US20030191863A1 (en) * 2001-07-02 2003-10-09 Globespanvirata Incorporated Communications system using rings architecture
US7266587B2 (en) * 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
US7185150B1 (en) * 2002-09-20 2007-02-27 University Of Notre Dame Du Lac Architectures for self-contained, mobile, memory programming

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0135927B1 (ko) * 1994-11-21 1998-06-15 양승택 다중 프로세서 시스템에서 아토믹 명령어 수행시 데이타 버퍼를 사용한 메인 메모리 액세스 장치
WO1999023559A1 (en) 1997-11-05 1999-05-14 Unisys Corporation Split lock operation to provide exclusive access to memory during non-atomic operations
KR20010031689A (ko) * 1997-11-05 2001-04-16 보베테 죤스 비-원자 연산동안 메모리에 배타적 접근을 제공하는분리된 잠금연산방법
KR20000006264A (ko) * 1998-06-19 2000-01-25 케네쓰 올센 확률적큐로크
US6496905B1 (en) 1999-10-01 2002-12-17 Hitachi, Ltd. Write buffer with burst capability

Also Published As

Publication number Publication date
JP2007122741A (ja) 2007-05-17
HK1070719A1 (en) 2005-06-24
US7114042B2 (en) 2006-09-26
JP2004348734A (ja) 2004-12-09
KR20040100884A (ko) 2004-12-02
US20070016733A1 (en) 2007-01-18
US20040236914A1 (en) 2004-11-25
TW200511023A (en) 2005-03-16
CN1573715A (zh) 2005-02-02
CN1273899C (zh) 2006-09-06
TWI269180B (en) 2006-12-21
JP4730742B2 (ja) 2011-07-20
JP3974597B2 (ja) 2007-09-12
US7814281B2 (en) 2010-10-12

Similar Documents

Publication Publication Date Title
KR100641988B1 (ko) 비대칭형 단일 칩 이종 멀티프로세서 컴퓨터 시스템, 공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법, 및 아토믹 업데이트 장치
CN108885583B (zh) 高速缓存存储器访问
US9501411B2 (en) Cache backing store for transactional memory
US6625698B2 (en) Method and apparatus for controlling memory storage locks based on cache line ownership
US9390026B2 (en) Synchronizing access to data in shared memory
TWI637265B (zh) 支援不同優先順序之異動性儲存器存取之方法、單元、系統及電腦程式產品
TW201107974A (en) Cache coherent support for flash in a memory hierarchy
JP4981041B2 (ja) キャッシュする方法、装置及びシステム
US9430380B2 (en) Managing memory transactions in a distributed shared memory system supporting caching above a point of coherency
US11445020B2 (en) Circuitry and method
JP2008503821A (ja) 小容量キャッシュシステムにおけるアトミック予約ライン上のライトバックを無効化する方法およびシステム
US20040117564A1 (en) System and method for reducing shared memory write overhead in multiprocessor systems
KR101695845B1 (ko) 캐시 일관성 유지 장치 및 방법, 이를 이용하는 멀티프로세서 장치
JP3550092B2 (ja) キャッシュ装置及び制御方法
US20200201766A1 (en) Selectively updating a coherence state in response to a storage update
US9367461B2 (en) Ordering constraint management within coherent memory systems
US20200201765A1 (en) Selectively updating a coherence state in response to a storage update
CN115686769A (zh) 根据cxl协议处理一致存储器事务的系统、装置和方法
US20200201764A1 (en) Selectively updating a coherence state in response to a storage update
JPH0944402A (ja) キャッシュメモリの記憶一致制御装置及び方法
CN116680229A (zh) 一种分布式共享内存协议的操作方法
CN116685958A (zh) 一种访问数据的方法和装置

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

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee