KR100641988B1 - 비대칭형 단일 칩 이종 멀티프로세서 컴퓨터 시스템, 공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법, 및 아토믹 업데이트 장치 - Google Patents
비대칭형 단일 칩 이종 멀티프로세서 컴퓨터 시스템, 공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법, 및 아토믹 업데이트 장치 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- A—HUMAN NECESSITIES
- A47—FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
- A47G—HOUSEHOLD OR TABLE EQUIPMENT
- A47G19/00—Table service
- A47G19/22—Drinking vessels or saucers used for table service
- A47G19/2205—Drinking glasses or vessels
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B65—CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
- B65D—CONTAINERS 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/00—Containers, packaging elements or packages, specially adapted for particular articles or materials
- B65D85/70—Containers, packaging elements or packages, specially adapted for particular articles or materials for materials not otherwise provided for
- B65D85/804—Disposable containers or packages with contents which are mixed, infused or dissolved in situ, i.e. without having been previously removed from the package
- B65D85/808—Disposable 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0038—System 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
본 발명 및 그 장점을 더 완벽하게 이해하기 위해서 첨부된 도면과 연관시켜서 다음의 상세한 설명을 참조한다.
도 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)
- 삭제
- 예약식 겟 로크 라인 커맨드(a get lock line command with reservation), 조건부 풋 로크 라인 커맨드(a put lock line conditional command) 및 비조건부 풋 로크 라인 커맨드(a put lock line unconditional command) 중 하나를 생성하도록 구성된 어태치 프로세서 유닛과,상기 어태치 프로세서 유닛에 연결된 직접 메모리 액세스 엔진을 포함하되,상기 직접 메모리 액세스 엔진은 예약식 겟 로크 라인 커맨드, 조건부 풋 로크 라인 커맨드 및 비조건부 풋 로크 라인 커맨드 중 하나를 수신하는 데 사용될 수 있는비대칭형 단일 칩 이종 멀티프로세서 컴퓨터 시스템.
- 제 2 항에 있어서,상기 어태치 프로세서 유닛에 연결된 로컬 저장부를 더 포함하는비대칭형 단일 칩 이종 멀티프로세서 컴퓨터 시스템.
- 삭제
- 제 3 항에 있어서,상기 직접 메모리 액세스 엔진에 연결된 캐시 스누핑 버스(cache snoop bus)를 더 포함하는비대칭형 단일 칩 이종 멀티프로세서 컴퓨터 시스템.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 컴퓨터 시스템에서 공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법에 있어서,프로세서 유닛이 로딩 및 예약 직접 메모리 액세스 커맨드를 발행해서 공유 메모리로부터 상기 프로세서 유닛과 관련된 로컬 저장부로 일정량의 데이터를 전송하는 것에 응답해서, 상기 프로세서 유닛과 관련된 로컬 저장부로 상기 일정량의 데이터를 로딩하는 단계와 - 상기 일정량의 데이터의 위치는 상기 로딩 및 예약 직접 메모리 액세스 커맨드에 의해 지정됨 - ,상기 일정량의 데이터를 예약하는 단계를 포함하는공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
- 제 27 항에 있어서,상기 일정량의 데이터는 캐시 라인이고,상기 프로세서 유닛과 관련된 로컬 저장부로 상기 일정량의 데이터를 로딩하는 단계는상기 일정량의 데이터가 상기 프로세서 유닛과 관련된 아토믹 캐시에 저장되어 있으면, 상기 아토믹 캐시로부터 상기 로컬 저장부로 상기 일정량의 데이터를 로딩하는 단계를 포함하는공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
- 제 28 항에 있어서,상기 프로세서 유닛과 관련된 로컬 저장부로 상기 일정량의 데이터를 로딩하는 단계는상기 일정량의 데이터가 다른 프로세서 유닛과 관련된 아토믹 캐시에 저장되어 있으면, 상기 다른 프로세서 유닛과 관련된 상기 아토믹 캐시로부터 상기 로컬 저장부로 상기 일정량의 데이터를 로딩하는 단계를 포함하는공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
- 제 28 항에 있어서,상기 프로세서 유닛과 관련된 로컬 저장부로 상기 일정량의 데이터를 로딩하는 단계는상기 일정량의 데이터가 상기 아토믹 캐시에 저장되어 있지 않으면, 상기 일정량의 데이터를 상기 공유 메모리로부터 상기 로컬 저장부로 로딩하는 단계를 더 포함하는공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
- 제 30 항에 있어서,상기 프로세서 유닛은 상기 로컬 저장부 내의 상기 일정량의 데이터에 대해서 연산을 수행해서 처리된 데이터를 형성하며,상기 프로세서 유닛의 조건부 저장 직접 메모리 액세스 커맨드를 수신하는 것에 응답해서 상기 예약이 아직 존재하고 있는지 판정하는 단계와,상기 예약이 존재하고 있으면 상기 처리된 데이터를 상기 로컬 저장부로부터 상기 아토믹 캐시로 카피하는 단계를 더 포함하는공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
- 제 31 항에 있어서,상기 일정량의 데이터의 예약을 릴리스하는 단계를 더 포함하는공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
- 제 31 항에 있어서,상기 일정량의 데이터 내에 있는 어드레스에 대한 킬(kill) 타입 스누핑에 응답해서 상기 예약을 재설정하는 단계를 더 포함하는공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
- 제 31 항에 있어서,상기 예약이 아직 존재하지 않으면, 상기 로딩 및 예약 직접 메모리 액세스 커맨드를 재시도하는 단계를 더 포함하는공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
- 제 28 항에 있어서,상기 프로세서 유닛은 상기 로컬 저장부 내의 상기 일정량의 데이터에 대해서 연산을 수행해서 처리된 데이터를 형성하며,상기 프로세서 유닛에서 비조건부 저장 직접 메모리 액세스 커맨드를 수신하는 것에 응답해서, 상기 처리된 데이터를 상기 로컬 저장부로부터 상기 아토믹 캐시로 카피하는 단계를 더 포함하는공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
- 제 35 항에 있어서,상기 일정량의 데이터의 예약을 릴리스하는 단계를 더 포함하는공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
- 제 35 항에 있어서,상기 로컬 저장부로부터 상기 아토믹 캐시로 상기 처리된 데이터를 카피하기 전에, 상기 캐시 라인이 배타적이지 않은지 판정하는 단계와,상기 컴퓨터 시스템에서 하나 이상의 다른 프로세서 유닛에 대해서 상기 캐시 라인을 무효화시키는 단계를 더 포함하는공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
- 제 27 항에 있어서,상기 컴퓨터 시스템은 단일 칩 이종 컴퓨터 시스템인공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법.
- 단일 칩 이종 멀티프로세서 컴퓨터 시스템에서 공유 메모리의 직접 메모리 액세스의 아토믹 업데이트 장치에 있어서,복수의 제 1 타입 프로세서 유닛과,제 2 타입 프로세서 유닛과,상기 복수의 제 1 타입 프로세서 유닛과 상기 제 2 타입 프로세서 유닛 사이에서 공유되는 공유 메모리와,상기 복수의 제 1 타입 프로세서 유닛 내에 주어진 프로세서 유닛과 관련된 직접 메모리 액세스 엔진과,상기 주어진 프로세서 유닛과 관련된 로컬 저장부와,상기 주어진 프로세서 유닛과 관련된 예약 스테이션을 포함하되,상기 주어진 프로세서 유닛은 로딩 및 예약 직접 메모리 액세스 커맨드를 발행해서 상기 공유 메모리로부터 상기 주어진 프로세서 유닛과 관련된 상기 로컬 저장부로 일정량의 데이터를 전송하고,상기 직접 메모리 액세스 엔진은 상기 로딩 및 예약 직접 메모리 액세스 커맨드를 수신해서 상기 주어진 프로세서 유닛과 관련된 상기 로컬 저장부로 상기 일정량의 데이터를 로딩하며,상기 일정량의 데이터의 위치는 상기 로딩 및 예약 직접 메모리 액세스 커맨드에 의해 지정되며,상기 소정의 프로세서 유닛과 관련된 예약 스테이션은 데이터량을 예약하는아토믹 업데이트 장치.
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)
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)
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)
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 |
-
2003
- 2003-05-22 US US10/443,727 patent/US7114042B2/en not_active Expired - Fee Related
-
2004
- 2004-04-21 KR KR1020040027540A patent/KR100641988B1/ko not_active IP Right Cessation
- 2004-05-07 TW TW093112936A patent/TWI269180B/zh not_active IP Right Cessation
- 2004-05-18 CN CNB2004100447825A patent/CN1273899C/zh not_active Expired - Fee Related
- 2004-05-18 JP JP2004148226A patent/JP3974597B2/ja not_active Expired - Fee Related
-
2005
- 2005-05-11 HK HK05103951A patent/HK1070719A1/xx not_active IP Right Cessation
-
2006
- 2006-08-30 US US11/468,317 patent/US7814281B2/en not_active Expired - Fee Related
- 2006-12-12 JP JP2006334314A patent/JP4730742B2/ja not_active Expired - Fee Related
Patent Citations (5)
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 |