KR100866714B1 - 비대칭 혼성 멀티프로세서 환경에서의 메모리 배리어프리미티브들 - Google Patents

비대칭 혼성 멀티프로세서 환경에서의 메모리 배리어프리미티브들 Download PDF

Info

Publication number
KR100866714B1
KR100866714B1 KR1020077001629A KR20077001629A KR100866714B1 KR 100866714 B1 KR100866714 B1 KR 100866714B1 KR 1020077001629 A KR1020077001629 A KR 1020077001629A KR 20077001629 A KR20077001629 A KR 20077001629A KR 100866714 B1 KR100866714 B1 KR 100866714B1
Authority
KR
South Korea
Prior art keywords
memory
command
barrier
bus operation
dma
Prior art date
Application number
KR1020077001629A
Other languages
English (en)
Other versions
KR20070038518A (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 KR20070038518A publication Critical patent/KR20070038518A/ko
Application granted granted Critical
Publication of KR100866714B1 publication Critical patent/KR100866714B1/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
    • 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/46Multiprogramming arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)
  • Cosmetics (AREA)

Abstract

본 발명은 직접 메모리 접근 장치에서의 메모리 배리어들을 생성하기 위한 방법 및 장치를 제공한다. 메모리 배리어 명령이 수신되고 메모리 명령이 수신된다. 메모리 명령은 메모리 배리어 명령에 근거하여 실행된다. 버스 동작은 메모리 배리어 명령에 근거하여 시작된다. 버스 동작 승인은 버스 동작에 근거하여 수신된다. 메모리 배리어 명령은 버스 동작 승인에 근거하여 실행된다. 특정 실시형태에서, 메모리 배리어 명령들은 dmasync(direct memory access sync) 및 dmaeieio(direct memory access enforce in-order execution of input/output) 명령들이다.
메모리 배리어 명령, 버스 동작 승인, DMA, dmaeieio, dmasync

Description

비대칭 혼성 멀티프로세서 환경에서의 메모리 배리어 프리미티브들{Memory barriers primitives in an asymmetric heterogeneous multiprocessor environment}
본 발명은, DMA(Direct Memory Access) 제어, 더욱 구체적으로 DMA 메커니즘(mechanism)을 이용하여 비대칭 혼성 멀티프로세서 환경에서의 메모리 배리어 프리미티브들을 제공하는 것에 관한 것이다.
통상의 멀티프로세서(MP; multiprocessor) 시스템들에서, 복수의 프로세서들은 공통의 공유 메모리에 접근할 수 있다. 이러한 시스템들의 성능을 향상시키기 위해서, 저장장치 접근들의 순서화에 대한 저장장치 모델들은 일관성이 약하다. 일관성이 약하다는 것은 접근들이 프로세서에 의해 수행되는 순서, 이러한 접근들이 프로세서 버스 상에서 수행되는 순서, 접근들이 또 다른 프로세서 또는 메커니즘과 관련하여 수행되는 순서, 및 이러한 접근들이 저장장치에서 수행되는 순서가 모두 다를 수 있다는 것을 의미한다.
일관성이 약한 저장장치 모델은, 2개 이상의 프로세서들 및/또는 메커니즘들 사이에서 공유되는 저장장치에 접근하는 순서를 확보하기 위한 능력을 소프트웨어 프로그램 상에 부여한다. 통상의 대칭 멀티프로세서(SMP; symmetric multiprocessor)에서, 소프트웨어 프로그램이 공유 메모리에 대한 저장장치 접근 순서화를 가능하게 하는 몇몇 수단들이 제공된다. 예를 들어, 파워피씨(PowerPC®)에서는, "싱크(SYNC)"(또한 때때로 "헤비-웨이트 싱크(heavy-weight sync)"라 한다), "라이트웨이트 싱크(lightweight SYNC)", 및 "EIEIO(Enforce In-order Execution of I/O)"와 같은 복수의 메모리 배리어(barrier) 명령들이 제공된다. 일반적으로, 싱크 명령은 메모리 배리어을 생성한다. 즉, 주어진 프로세서에서, 프로그램 시퀀스(sequence)에서의 싱크 명령 이전의 임의의 로드 또는 저장 명령들은, 싱크 명령 이후의 임의의 명령이 실행될 수 있기 전에 모든 다른 프로세서들 및 메커니즘들에 대하여 완료되어야 한다.
라이트웨이트 싱크는, 라이트웨이트 싱크 다음의 명령에 의해 일어나는 로드가, 라이트웨이트 싱크에 선행하는 명령에 의해 행해지는 저장 이전에 수행될 수 있다는 것을 제외하면, 싱크 명령과 같은 순서화 기능을 제공하는 메모리 배리어를 생성하고, 순서화가 I/O 메모리(메모리 매핑 방식의 I/O; memory-mapped I/O)로의 접근들에 적용되지 않는다. EIEIO 명령은, 순서화가 I/O 메모리로의 접근들에 적용된다는 것을 제외한다면 싱크 명령과 같은 순서화 기능을 제공하는 메모리 배리어을 생성한다. EIEIO는 또한 저장들을 순서화한다.
통상의 MP 시스템에서, 메모리 배리어 명령들의 실행은, 혼성 MP 시스템 내의 비대칭 프로세서들 및/또는 장치들을 관리하기 위해 제어 프로세서들(즉, 처리 유닛(PU; processing unit)들) 상에 추가적인 워크로드(workload)를 위치시키는 강결합 프로세서들로 제한된다. 일부의 경우들에서, 이러한 제한은, 저장장치 순서화 가 제어될 수 없기 때문에 시스템 자원들을 관리하기 위해 비대칭 프로세서의 능력을 또한 제한할 수 있다.
그러므로, 적어도 통상의 시스템들 및 방법들과 관련된 문제점들 및 불이익들의 일부를 해결하는 메모리 배리어 명령들을 제공하기 위한 방법 및/또는 시스템에 대한 필요가 있다.
본 발명은 DMA 장치에서 메모리 배리어들을 생성하기 위한 방법을 제공한다. 메모리 배리어 명령이 수신되고 메모리 명령이 수신된다. 메모리 명령은 메모리 배리어 명령에 근거하여 실행된다. 버스 동작은 메모리 배리어 명령에 근거하여 시작된다. 버스 동작 승인은 버스 동작에 근거하여 수신된다. 메모리 배리어 명령은 버스 동작 승인에 근거하여 실행된다.
본 발명, 및 본 발명의 장점들을 더욱 완벽히 이해하기 위해, 이하의 첨부된 도면들과 관련하여 다음의 실시예들이 기술될 것이다:
도 1은 DMA 제어기를 갖는 시스템을 도시하는 블록도이고;
도 2는 멀티프로세서(MP; multiprocessor) 시스템을 도시하는 블록도이며;
도 3은 직접 메모리 접근 싱크(dmasync; direct memory access sync) 명령의 동작을 도시하는 순서도이고;
도 4는 직접 메모리 접근 EIEIO(dmaeieio; direct memory access enforce in-order execution of input/output) 명령의 동작을 도시하는 순서도이다.
이하에서는, 많은 구체적인 실시예들이 본 발명의 완벽한 이해를 제공하기 위하여 기술될 것이다. 그러나 당업자라면 본 발명은 이러한 구체적인 실시예 없이도 실시될 수 있다는 것을 알 것이다. 다른 경우들에서, 공지된 구성요소들은, 불필요한 세부사항으로 본 발명을 불명료하게 하지 않도록 개략적 또는 블록 형태로 도시되었다. 추가적으로, 대부분의 경우들에 있어서, 네트워크 통신들, 전자기 신호 기술들 등에 관한 실시예들은, 본 발명을 완벽히 이해하는 데에 필요한 것으로 고려되지 않고 당업자라면 이해할 수 있으므로 생략되었다.
다른 말이 없으면, 이하에서 기술된 모든 기능들은 하드웨어 또는 소프트웨어, 또는 이들의 조합들로 수행될 수 있다. 바람직한 실시형태에서, 다른 말이 없으면, 기능들은 컴퓨터 프로그램 코드, 소프트웨어, 및/또는 이러한 기능들을 수행하도록 코딩(coding)된 집적 회로들과 같은 코드에 따라서 컴퓨터 또는 전자 데이터 프로세서와 같은 프로세서에 의해 수행된다.
도 1을 참조하면, 도면 부호 100은 일반적으로 DMA 제어기를 갖는 시스템을 칭한다. 시스템(100)은 DMA 제어기(110), 처리 유닛(PU; processing unit; 130), 로컬 메모리(132), 메모리(120), 및 멀티프로세서 일관성 버스(multiprocessor(MP) coherent bus; 190)를 포함한다. DMA 제어기(110)는 DMA 명령 대기행렬(140), 태그 대기행렬(tags queue; 150), 언롤 앤드 트랜지션 로직(unroll and transition logic; 160), 아웃바운드 데이터 버퍼들(outbound data buffers; 170), 및 인바운드 데이터 버퍼들(inbound data buffers; 180)을 더 포함한다.
DMA 제어기(110)를 가진 시스템(100)에서, 명령들은 발행되고 실행된다. 로컬 메모리(132)를 가진 PU(130)는 명령들을 DMA 명령 대기행렬(140)로 발행한다. PU(130)는 예를 들어 주 PU(Main PU; MPU), 상승적 PU(Synergistic PU; SPU), 또는 다른 적합한 프로세서를 포함하는 임의의 종류의 프로세서이다. 로컬 메모리(132)는 캐시(cache)를 포함하지만 이에 제한되지 않는 다양한 메모리 유형들일 수 있다. DMA 명령 대기행렬(140)에 보내진 명령들은 태그(tag)되고 각각의 명령들에 대한 태그들은 태그 대기행렬(150)에서 추적된다. 태그들은 명령에 대해 개별적이거나 특정 그룹의 명령들에 대해 특정될 수 있어, 태그 그룹들을 형성할 수 있다. DMA 명령 대기행렬(140)로부터, 기록 및 판독 명령들이 다양한 구성요소들로 발행된다(도시되지 않음). 데이터 전송은 아웃바운드 데이터 버퍼들(170) 및 인바운드 데이터 버퍼들(180)을 통하여 이루어진다. 다수의 다른 단계들이, 예를 들어 디코딩(decoding)과 같은 명령의 실행에 포함될 수 있다.
통상의 시스템들에서, DMA 명령 대기행렬(140)과 같은 DMA 명령 대기행렬 내의 명령들은 엄격한 순서화 구조 하의 도착 순서로 실행된다. DMA 제어기(110)는, DMA 명령 대기행렬(140) 내의 명령들이 다양한 순서들로 실행될 수 있도록 약한 순서화 (또는 일관성이 약한) 구조를 이용하도록 구성된다. 특히, DMA 제어기(110)는 일련의 끼워진 플래그(flag)들을 사용하도록 구성된다. 끼워진 플래그들은 각각의 명령에 대해 종속되고 명령들의 다음 실행을 돕는다. 끼워진 플래그들은, 높은 우선순위 명령들이 낮은 우선순위 명령들 이전에 실행되는 것을 보증하기 위해 또한 이용된다.
특히, 명령에 끼워질 수 있는 2개의 플래그들, "배리어" 및 "펜스(fence)"가 있다. 이들 플래그들은 동일 태그 그룹 내의 명령들에게만 영향을 미친다. 일반적으로, 동일 태그 그룹 내에 있고 끼워진 펜스 플래그를 가진 명령 이전에 발행된 모든 명령들이 완료된 이후에, 끼워진 펜스 플래그는 명령이 실행되도록 한다. 즉, 펜스 플래그는, 끼워진 펜스를 가진 명령 이전에 발행된 동일 태그 그룹 내의 모든 명령들이 펜스 플래그를 가진 명령의 실행 이전에 완료되는 것을 필요로 한다. 펜스 플래그는 대기행렬 내의 다음 명령들에는 영향을 미치지 않는다. 그러므로 끼워진 펜스 플래그를 가진 명령 이후에 발행된 명령은 펜스를 가진 명령 이전에 실행될 수 있다.
배리어 플래그는 동일 태그 그룹 내의 모든 이전 및 다음 명령들에 영향을 미친다. 일반적으로, 배리어 플래그는, 배리어 플래그를 가진 명령 또는 동일 태그 그룹 내의 다음 명령들이 배리어 플래그를 가진 명령 이전에 발행된 동일 태그 그룹 내의 모든 명령의 실행 이전에 실행된다는 것을 허용하지 않는다. 예를 들어, 동일 태그 그룹 이내에 있고 배리어 플래그를 가진 명령 이후에 발행된 명령들은 배리어 플래그를 가진 명령 이전에 실행될 수 없다. 전형적으로, 배리어 플래그를 가진 명령 이전에 발행된 동일 태그 그룹 이내의 모든 명령들이 완료될 때, 배리어 플래그를 가진 명령 및 동일 태그 그룹 이내의 다음 명령들이 실행될 수 있다.
PU(130)는 끼워진 펜스 또는 배리어 플래그 대신에 배리어 명령을 발행하도록 구성된다. 배리어 명령은 태그 그룹에 관계없이 대기행렬 내의 모든 명령들로 동작한다. 배리어 명령은, 모든 이전에 발행된 명령들이 완료될 때까지 모든 다음 명령들이 실행되는 것을 방지한다. 그러므로 배리어 명령 이전에 발행된 모든 명령들은 대기행렬 내의 다음의 명령의 실행 이전에 완료된다. 전형적으로, 배리어 명령 이전에 발행된 모든 명령들이 완료될 때, 다음의 명령들이 실행될 수 있다.
DMA 제어기(110)는 또한 메모리 배리어 명령들을 수신하고 실행하도록 구성된다. 메모리 배리어 명령들은, 시스템 내의 하나 이상의 다른 프로세서들 및/또는 장치들에 대하여 MP 일관성 버스에 대한 메모리 트랜색션(transaction)들을 순서화하는 제어를 제공한다. 도시된 실시형태에서, DMA 제어기(110)는 직접 메모리 접근 싱크 및 직접 메모리 접근 EIEIO 명령들을 수신하도록 구성된다. 당업자라면, DMA 제어기(110)가 예를 들어 직접 메모리 접근 라이트웨이 싱크(dmalwsync; direct memory access lightweight SYNC) 명령을 포함하는 다른 직접 메모리 접근 메모리 장벽 명령들을 수신하도록 구성될 수 있다는 것을 이해한다.
일반적으로, dmasync 명령들은, 선행하는 DMA 명령의 효과들이 시스템 내의 모든 프로세서들 및/또는 메커니즘들에 대하여 완료된다는 것을 보증하기 위한 메커니즘을 제공한다. 일반적으로, dmaeieio 명령들은 시스템 내의 모든 프로세서들 및/또는 메커니즘들에 대한 버스 동작들을 순서화하기 위한 메커니즘을 제공한다. dmasync 명령들은 또한 버스 동작들을 순서화하기 위한 메커니즘을 제공하지만, dmaeieio 명령들에 대하여는 감소된 수행 속도로 메커니즘을 제공한다. 전형적으로, dmasync 및 dmaeieio 명령들은 명령 배리어를 이용하여 동작하도록 구성된다. 도시된 실시형태에서, dmasync 및 dmaeieio 명령들은 암시된 태그-특정 배리어를 포함한다. 당업자라면, DMA 제어기(110)는, 예를 들어 암시된 펜스를 가진 dmasync 명령 또는 암시된 펜스를 가진 dmaeieio 명령을 포함하여, 다른 직접 메모리 접근 메모리 배리어 명령들을 다른 형태들로 수신하도록 구성될 수 있다는 것을 이해할 것이다.
더욱 구체적으로, dmasync 명령은, 소프트웨어 프로그램이, 모든 이전에 발행된 DMA 메모리 기록들이 시스템 내의 또 다른 프로세서에 대하여 수행된다는 것을 보증하는 메커니즘을 제공한다. dmasync 명령은 강한 순서화가 필요할 때 이용되고, 공지된 파워피씨 싱크 명령이 프로세서 로드들 및 저장들에 대하여 행하는 것처럼 DMA 접근들에 대하여 같은 순서화를 제공한다. 특히, DMA 겟(Get) 명령들에 의해 생성된 접근들은 로드들로서 고려되고, DMA 풋(Put) 명령들에 의해 생성된 접근들은 순서화를 위한 저장들로서 고려된다. 모든 이전에 발행된 DMA 풋 명령들(즉, 메모리 기록들)이 수행될 것이라는 것을 보증하기 위해, 배리어 명령은 dmasync 명령을 선행한다. 도시된 실시형태에서, dmasync 명령이 태그되고 암시된 태그-특정 배리어를 포함한다. 선택적인 실시형태에서, 배리어 명령은 dmasync 명령을 선행한다. 또 다른 선택적인 실시형태에서, 펜스 명령은 dmasync 명령을 선행한다.
dmaeieio 명령은, DMA 메모리 기록들을 순서화하는 소프트웨어 프로그램에 대한 메커니즘을, 연속 기록이 요구되거나 캐싱(caching)이 억제되는 것으로 표시되지 않는 일관성 저장장치로 제공한다. dmaeieio 명령은, 또한 소프트웨어 프로그램이 DMA 메모리 판독 및 기록을 순서화하는 메커니즘을 캐싱이 억제되면서 감시되는 저장장치에 제공하고, 연속 기록이 요구되는 것으로 표시된 메모리에 저장한다. dmaeieio 명령은, 순서화가 특정 유형들의 진술된 접근들에 대해서만 필요할 때 이용된다. dmaeieio 명령은 공지된 파워피씨 EIEIO 명령이 프로세서 로드들 및 저장들에 대하여 행하는 것처럼 DMA 접근들에 대하여 동일한 순서화를 제공한다. 특히, DMA 겟 명령들에 의해 생성된 접근들은 로드들로서 고려되고 DMA 풋 명령들에 의해 생성된 접근들은 순서화를 위한 저장들로서 고려된다. 모든 이전에 발행된 DMA 명령들이 수행될 것이라는 것을 보증하기 위해서, 배리어 명령은 dmaeieio 명령을 선행한다. 도시된 실시형태에서, dmaeieio 명령이 태그되고 암시된 태그-특정 배리어를 포함한다. 선택적인 실시형태에서, 배리어 명령은 dmaeieio 명령을 선행한다. 또 다른 선택적인 실시형태에서, 펜스 명령은 dmaeieio 명령을 선행한다.
전체 전송 길이가 만족될 때까지, 언롤 앤드 트랜슬레이션 로직(unroll and translation logic; 160)을 통하여 DMA 제어기(100)는 DMA 명령( 및 관련된 파라미터(parameter)들)에 의해 기술된 DMA 동작을 하나 이상의 더 작은 버스 트랜색션들로 펼친다. 일관성이 약한 메모리 모델 내에서는, 언롤 앤드 트랜슬레이션 로직(160)에 의해 생성된 더 작은 버스 트랜색션들이, 다른 명령들로부터의 더 작은 버스 트랜색션들을 포함하여, 시스템 내의 다른 프로세서들뿐만 아니라 MP 일관성 버스(190)에 의해 순서에 맞지 않게 처리될 수 있다. 게다가, DMA 명령들은, 향상된 성능을 위해서 DMA 명령 대기행렬(140)에 보내지는 것과 다른 순서로 완료될 수 있다. 모든 경우들에서, 모든 DMA 명령들은, 소프트웨어에 대해, DMA 명령 대기행렬(140)에 보내지는 것과 같은 순서로 시작하는 것으로 나타난다.
DMA 시스템(100)이 동작하도록 하기 위해서, 일련의 필요한 접속들이 있다. PU(130)는 제 1 통신 채널(도시되지 않음)을 통하여 로컬 메모리(132)에 연결된다. PU(130)는 제 2 통신 채널(101)을 통하여 DMA 명령 대기행렬(140)에 연결된다. 로컬 메모리(132)는 제 3 통신 채널(112)을 통하여 메모리(120)에 연결된다. 메모리(120)는 제 4 통신 채널(102)을 통하여 아웃바운드 데이터 버퍼들(170)에 연결된다. 메모리(120)는 제 5 통신 채널(103)을 통하여 인바운드 데이터 버퍼들(108)에 연결된다. DMA 명령 대기행렬(140)은 제 6 통신 채널(104) 및 제 7 통신 채널(105)을 통하여 언롤 앤드 트랜지션 로직(160)에 연결된다. 태그 대기행렬(150)은 제 8 통신 채널(106)을 통하여 언롤 및 트랜지션 로직(160)에 연결된다. 아웃바운드 데이터 버퍼들(170)은 제 9 통신 채널(107)을 통하여 MP 일관성 버스(190)에 연결된다. 인바운드 데이터 버퍼들(180)은 제 10 통신 채널(108)을 통하여 MP 일관성 버스(190)에 연결된다. 언롤 및 트랜지션 로직(160)은 제 11 통신 채널(109)을 통하여 MP 일관성 버스(190)에 연결된다.
도면들의 도 2를 참조하면, 도면 부호 200은 일반적으로 MP 시스템을 지칭한다. MP 시스템(200)은 공유 메모리(210), 로컬 메모리(212), 제 1 PU(220), 제 1 캐시(222), 제 1 DMA 제어기(224), 제 2 DMA 제어기(226), 제 2 PU(228), 및 제 2 캐시(230)를 포함한다. 도시된 실시형태에서, 제 1 캐시(222) 및 제 2 캐시(230)는 시스템 캐시들이고, 공지되어 있으며, 각각의 프로세서들에 대한 외부 메모리 인터페이스로서 동작한다.
MP 시스템(200)의 멀티플 프로세서(multiple processor)들은 다양한 메모리 장치들로부터 데이터를 판독하고 그리고/또는 기록하는 것과 독립되거나 연관되어 동작한다. 제 1 PU(220)는 판독, 기록, dmasync, 및 dmaeieio 명령들을 제 1 DMA 제어기(224)에 발행하도록 구성된다. 제 2 PU(228)는 판독, 기록, dmasync, 및 dmaeieio 명령들을 제 2 DMA 제어기(226)에 발행하도록 구성된다. 제 1 DMA 제어기(224) 및 제 2 DMA 제어기(226)는 로컬 메모리(212) 및 공유 메모리(210)로부터 데이터를 판독하고 기록하도록 구성된다. 도시된 실시형태에서, 각각의 DMA 제어기에 대한 단일 PU가 있다.
동작에서, 제 1 DMA 제어기(224)는 공유 메모리(210)와 로컬 메모리(212) 사이에서 데이터를 이동하기 위해 제 1 PU(220)로부터 명령들을 수신한다. 유사하게, 제 2 DMA 제어기(226)는 공유 메모리(210)와 로컬 메모리(212) 사이에서 데이터를 이동하기 위해 명령들을 제 2 PU(228)로부터 수신한다. DMA 명령들에 대한 데이터 전송 방향은 PU의 시각으로부터 참조되기 때문에, 로컬 메모리(212)로부터 공유 메모리(210)로 데이터를 전송하는 명령은 풋(PUT) 명령들로 고려되는 반면에, 데이터를 공유 메모리(210)로부터 로컬 메모리(212)로 전송하는 명령들은 겟(GET) 명령들로 고려된다. DMA 명령들이 공급된 파라미터들은, 예를 들어 데이터 전송 크기, 태그, 및 주소 매김 정보와 같은 데이터 전송에 관한 추가적인 정보를 제공한다.
제 1 DMA 제어기(224)가 dmasync 명령에 접할 때, 제 1 DMA 제어기(224)는 dmasync 명령과 같은 태그를 가지고 dmasync 명령에 선행하는 DMA 명령 대기행렬로 보내지는 모든 명령들을 완료한다. 구체적으로, dmasync 명령과 같은 태그를 가진 모든 풋 명령들에 대한 기록 데이터는 멀티프로세서 일관성 버스로 전송되어야 하고 재시도 이벤트(event)를 일으킬 수 있는 프로토콜(protocol)의 임의의 점을 지 나야 한다. dmasync 명령과 같은 태그를 가진 모든 겟 명령들에 대한 판독 데이터는 로컬 메모리(212)에서 가시적이다.
dmasync와 같은 태그를 가진 모든 선행하는 명령들이 완료되면, DMA 제어기(224)는 싱크 버스 트랜색션(SBT; sync bus transaction)을 시작한다. 싱크 버스 트랜색션은 시스템 내의 다른 프로세서들 및/또는 메커니즘들에 대하여 배리어 포인트(point)로서 기능한다. 다른 프로세서들 및/또는 메커니즘들은 싱크 버스 트랜색션을 승인하기 전에 dymasync를 발행하는 프로세서에 의해 수행되는 모든 동작들을 완료해야 한다. DMA 제어기(224)는, 시스템 내의 모든 프로세서들 및/또는 메커니즘들이 싱크 버스 트랜색션을 승인한 이후에 dmasync 명령을 완료할 수 있다. 그러므로 dmasync 명령은, dmasync와 같은 태그를 가진 모든 DMA 명령들의 결과들이 시스템 내의 모든 프로세서들 및/또는 메커니즘들에 대하여 완료되고 가시적이라는 것을 보증한다. 제 2 DMA 제어기(226)는 dmasync 명령들을 제 1 DMA 제어기(224)와 같은 방식으로 처리한다.
제 1 DMA 제어기(224)가 dmaeieio 명령에 접할 때, 제 1 DMA 제어기(224)는 dmaeieio 명령과 같은 태그를 가지고 dmaeieio 명령에 선행하는 DMA 명령 대기행렬로 보내진 모든 명령들을 완료한다. 구체적으로, dmaeieio 명령과 같은 태그를 가진 모든 풋 명령들에 대한 기록 데이터는 멀티프로세서 일관성 버스로 전송되고 재시도 이벤트를 일으킬 수 있는 프로토콜 내의 임의의 점을 지나야 한다. dmaeieio 명령과 같은 태그를 가진 모든 겟 명령들에 대한 판독 데이터가 로컬 메모리(212)에서 가시적이다.
dmaeieio와 같은 태그를 가진 모든 선행하는 명령들이 완료된다면, DMA 제어기(224)는 eieio 버스 트랜색션을 시작한다. eieio 버스 트랜색션은, 특정 유형들의 접근들, 즉, 연속 기록이 요구되거나 캐싱이 억제되는 것으로 표시되지 않는 일관성 저장장치에 대한 DMA 메모리 기록들, 및 캐싱이 억제되고 감시되는 저장장치에의 DMA 메모리 판독 및 기록을 순서화하기 위해 시스템 내의 다른 프로세서들 및/또는 메커니즘들에 대한 배리어 포인트로서 기능한다. 다른 프로세서들 및/또는 메커니즘들은 모든 이전의 버스 트랜색션들의 순서화를 보증하기 위하여 eieio 버스 트랜색션을 승인하기 위해 대기한다. DMA 제어기(224)는, 시스템 내의 모든 프로세서들 및/또는 메커니즘들이 eieio 버스 트랜색션을 승인한 이후에 dmaeieio 명령을 완료할 수 있다. 그러므로 dmaeieio 명령은 DMA 동작의 가시성 대신에 순서화에 의해 시스템 성능을 향상시킬 수 있다. 제 2 DMA 제어기(226)는 제 1 DMA 제어기(224)와 같은 방식으로 dmaeieio 명령들을 처리한다.
dmasync 및 dmaeieio 명령들은 비대칭 프로세서 및/또는 장치가 통상의 MP 시스템의 일관성이 약한 저장장치 모델에 참여하는 것을 허용하여, 성능을 향상시킨다. 게다가, dmasync 및 dmaeieio 명령들은, PU가 저장장치로의 접근들을 순서화하는 것을 보증하는 것을 책임지는 것을 허용하여, 제어 프로세서들로부터의 책임을 제거하고, PU가 제어 프로세서들의 지원 없이 제어 프로세서들과 유사한 방식으로 자원을 제어할 수 있게 한다. 추가적으로, 제어 프로세서들이 저장장치로의 접근들의 순서화를 보증하는 책임을 완화하는 것은 제어 프로세서들 및 DMA 제어기의 이용 및 성능을 향상시키고, 제어 프로세서들이 멀티플 비대칭 유닛들에 의해 지나 치게 부담받는 것을 방지한다.
그러므로 dmasync 및 dmaeieio 명령들은, 약하게 순서화된 저장장치 모델 개념들의 통상의 MP 시스템들을, DMA 메커니즘을 이용한 공유 저장장치에 접근하는 프로세서들 및/또는 장치들을 이용하는 비대칭 혼성 멀티프로세서 환경으로 확장시킨다. 게다가, dmasync 및 dmaeieio 명령들은 로컬 및 개인 메모리와 함께 다른 비대칭 장치들과 통상의 대칭 MP 시스템에서 이용될 수 있다. dmasync 및 dmaeieio 명령들은 데이터를 시스템 메모리 내의 하나의 위치로부터 시스템 메모리 내의 또 다른 위치로 이동시키는 DMA 제어기에서 이용될 수 있다.
MP 시스템(200)이 동작하기 위해서, 일련의 필요한 연결들이 있다. PU(220)는 제 12 통신 채널(도시되지 않음)을 통하여 제 1 캐시(222)에 연결된다. PU(220)는 제 13 통신 채널(242)을 통하여 제 1 DMA 제어기(224)에 연결된다. 제 1 캐시(222)는 제 14 통신 채널(240)을 통하여 공유 메모리(210)에 연결된다. 제 1 DMA 제어기(224)는 제 14 통신 채널(244)을 통하여 공유 메모리(210)에 연결된다. 제 1 DMA 제어기(224)는 제 16 통신 채널(248)을 통하여 로컬 메모리(212)에 연결된다. 제 2 PU(228)는 제 17 통신 채널(도시되지 않음)을 통하여 제 2 캐시(230)에 연결된다. 제 2 캐시(230)는 제 18 통신 채널(254)을 통하여 로컬 메모리(212)에 연결된다. 제 2 PU(228)는 제 19 통신 채널(252)을 통하여 제 2 DMA 제어기(226)에 연결된다. 제 2 DMA 제어기(226)는 제 20 통신 채널(250)을 통하여 로컬 메모리(212)에 연결된다. 제 2 DMA 제어기(226)는 제 21 통신 채널(246)을 통하여 공유 메모리(210)에 연결된다.
도 3을 참조하면, 도면 부호 300은 dmasync 명령의 동작을 도시하는 순서도를 일반적으로 지칭한다. 처리는 단계 301에서 시작하여, DMA 제어기가 태그된 dmasync 명령을 수신한다. 예를 들어, 단계 301은, 태그된 dmasync 명령을 도 1의 PU(130)로부터 수신하는 도 1의 DMA 제어기(110)에 의해 수행된다. 설명을 위해, 도 3에서 수행되는 모든 단계들은 도 1의 DMA 제어기(110)에 의해 수행된다. 도 3에서 수행되는 단계들은, 도 2의 제 1 DMA 제어기(224) 및/또는 제 2 DMA 제어기(226)에 의해 수행될 수 있다는 것이 이해될 것이다.
다음으로, 결정 단계 305에서, DMA 제어기는, 단계 301에서 수신된 태그된 dmasync 명령 이전에 수신되고 동일한 태그를 가진 DMA 명령들에 대한 DMA 명령 대기행렬을 탐색한다. 선행하는 동일-태그 DMA 명령이 있다면, 처리는 단계 310으로 예 분지를 따라 계속된다. 단계 310에서, DMA 제어기는 선행하는 동일-태그 DMA 명령을 실행하고 처리는 단계 305로 복귀한다. 선행하는 동일-태그 DMA 명령이 없다면, 처리는 아니오 분지를 따라 단계 315로 계속된다.
단계 315에서, DMA 제어기는 싱크 버스를 발행한다. 다음으로, 결정 단계 320에서, DMA 제어기는 싱크 버스 트랜색션이 시스템 내의 프로세서 또는 장치에 의해 승인되었는 지 여부를 결정한다. 싱크 버스 트랜색션 승인이 수신되지 않았다면, 처리는 아니오 분지를 따라 단계 325로 계속된다. 단계 325에서, DMA 제어기가 대기한다. 일 실시형태에서, DMA 제어기는, 예를 들어 0.5 마이크로세컨드(microseconds)와 같은 예정된 기간 동안 동작들을 중지함으로써 대기한다. 또 다른 실시형태에서, DMA 제어기는 태그된 dmasync 명령과 같은 태그를 포함하지 않 는 DMA 명령들을 실행함으로써 대기한다. 그 다음에, 처리는 결정 단계 320으로 복귀한다.
결정 단계 320에서, 싱크 버스 트랜색션 승인이 수신된다면, 처리는 결정 단계 330으로 예 분지를 따라 계속된다. 결정 단계 330에서, DMA 제어기는, 싱크 버스 트랜색션이 시스템 내의 모든 프로세서들 및/또는 장치들에 의해 승인되었는 지 여부를 결정한다. 싱크 버스 트랜색션이 시스템 내의 모든 프로세서들 및/또는 장치들에 의해 승인되었다면, 처리는 아니오 분지를 따라 단계 325로 계속된다.
결정 단계 325에서, 싱크 버스 트랜색션이 시스템 내의 모든 프로세서들 및/또는 장치들에 의해 승인되었다면, 처리는 예 분지를 따라 단계 335로 계속된다. 단계 335에서, DMA 제어기는 dmasync 명령을 완료하고 처리가 종료된다. 이제, dmasync 다음의 명령들이 실행될 수 있다.
도 4를 참조하면, 도면 부호 400은 dmaeieio 명령의 동작을 묘사하는 순서도를 지칭한다. 처리는, DMA 제어기가 태그된 dmaeieio 명령을 수신하는 단계 401에서 시작한다. 예를 들어, 단계 401은, 도 1의 PU(130)로부터 태그된 dmaeieio 명령을 수신하는 도 1의 DMA 제어기(110)에 의해 수행된다. 설명을 위하여, 도 4 내에서 수행되는 모든 단계들이 도 1의 DMA 제어기(110)에 의해 수행된다. 도 4 내에서 수행되는 단계들은, 도 2의 제 1 DMA 제어기(224) 및/또는 제 2 DMA 제어기(226)에 의해 수행된다는 것이 이해될 것이다.
다음으로, 결정 단계 405에서, DMA 제어기는 단계 401에서 수신된 태그된 dmaeieio 명령과 같은 태그를 가지고 이전에 수신된 DMA 명령들에 대해 DMA 명령 대기행렬을 탐색한다. 선행하는 동일-태그 DMA 명령이 있다면, 처리는 예 분지를 따라 단계 410으로 계속된다. 단계 410에서, DMA 제어기는 선행하는 동일-태그 DMA 명령을 실행하고 처리는 단계 405로 복귀한다. 선행하는 동일-태그 DMA 명령이 없다면, 처리는 아니오 분지를 따라 단계 415로 계속된다.
단계 415에서, DMA 제어기는 eieio 버스 트랜색션을 발행한다. 다음으로, 결정 단계 420에서, DMA 제어기는 eieio 버스 트랜색션이 시스템 내의 프로세서 또는 장치에 의해 승인되었는 지 여부를 결정한다. eieio 버스 트랜색션 승인이 수신되지 않는다면, 처리는 아니오 분지를 따라 단계 425로 계속된다. 단계 425에서, DMA 제어기는 대기한다. 일 실시형태에서, DMA 제어기는, 예를 들어 0.5 마이크로세컨드(microseconds)와 같은 예정된 기간 동안 동작들을 중지함으로써 대기한다. 또 다른 실시형태에서, DMA 제어기는, 태그된 dmaeieio 명령과 동일한 태그를 포함하지 않는 DMA 명령들을 실행함으로써 대기한다. 그 다음에, 처리는 결정 단계 420으로 복귀한다.
결정 단계 420에서, eieio 버스 트랜색션 승인이 수신된다면, 처리는 예 분지를 따라 결정 단계 430으로 계속된다. 결정 단계 430에서, DMA 제어기는, eieio 버스 트랜색션이 시스템 내의 모든 프로세서들 및/또는 장치들에 의해 승인되었는 지 여부를 결정한다. eieio 버스 트랜색션이 시스템 내의 모든 프로세서들 및/또는 장치들에 의해 승인되지 않았다면, 처리는 아니오 분지를 따라 단계 425로 계속된다.
결정 단계 425에서, eieio 버스 트랜색션이 시스템 내의 모든 프로세서들 및 /또는 장치들에 의해 승인되었다면, 처리는 예 분지를 따라 단계 435로 계속된다. 단계 435에서, DMA 제어기는 dmaeieio 명령을 완료하고 처리가 종료한다.
단지 2개의 특정 메모리 배리어 명령들(dmasync 및 dmaeieio)이 본 명세서에서 기술되었지만, 다른 메모리 배리어 명령들 또는 다른 메모리 배리어 명령 형태들이 정의될 수 있다는 것을 당업자라면 이해할 것이다. 예를 들어, DMA 제어기는, 직접 메모리 접근 라이트웨이트 싱크(dmalwsync; direct memory access lightweight SYNC) 명령들, 또는 암시된 펜스를 가진 dmaeieio 명령을 수신하도록 구성될 수 있다.
게다가, 특정 메모리 배리어 명령들이 파워피씨 아키텍쳐(architecture)를 참조하여 기술되었을 지라도, 당업자라면 다른 메모리 배리어 명령들이 다른 아키텍쳐들을 참조하여 기술될 수 있다는 것을 이해할 것이다. 따라서, DMA 제어기는, 다른 아키텍쳐들에서의 메모리 배리어 명령들로서 순서화하기 위한 동일 DMA 접근들을 제공하는 메모리 배리어 명령들을 수신하도록 구성될 수 있다.
게다가, 본 명세서에서 특정 메모리 배리어 명령들은 약하게 순서화된 메모리 모델 및 비대칭 혼성 MP 환경에서의 동작에서 기술될지라도, 당업자라면 메모리 배리어 명령들이 다른 형태들의 메모리 모델들 및 대칭 MP 환경에서 이용될 수 있다는 것을 이해할 것이다.
상술한 상세한 설명으로부터, 다양한 변형예들 및 변화들이, 본 발명의 사상을 벗어나지 않는 범위 내에서 본 발명의 바람직한 실시형태에서 행해질 수 있다. 본 발명의 상세한 설명은 설명을 위한 것이고 제한을 위한 것이 아니다. 본 발명의 범위는 다음의 청구범위에 의해서만 제한되어야 한다.

Claims (26)

  1. DMA(Direct Memory Access) 장치에서의 메모리 배리어(barrier)들을 생성하기 위한 방법으로서,
    메모리 배리어 명령을 수신하는 단계;
    메모리 명령을 수신하는 단계;
    상기 메모리 배리어 명령에 근거하여 상기 메모리 명령을 실행시키는 단계;
    상기 메모리 배리어 명령에 근거하여 버스(bus) 동작을 시작하는 단계;
    상기 버스 동작에 근거하여 버스 동작 승인을 수신하는 단계; 및
    상기 버스 동작 승인에 근거하여 상기 메모리 배리어 명령을 실행시키는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제 1 항에 있어서, 상기 메모리 배리어 명령은 직접 메모리 접근 싱크(dmasync; direct memory access sync) 명령인 것을 특징으로 하는 방법.
  3. 제 1 항에 있어서, 상기 메모리 배리어 명령은 직접 메모리 접근 EIEIO(dmaeieio; direct memory access enforce in-order execution of input/output) 명령인 것을 특징으로 하는 방법.
  4. 제 1 항에 있어서, 상기 메모리 명령은 상기 메모리 배리어 명령 이전에 실 행되는 것을 특징으로 하는 방법.
  5. 제 1 항에 있어서, 상기 메모리 명령은 상기 메모리 배리어 명령 이후에 실행되는 것을 특징으로 하는 방법.
  6. 제 1 항에 있어서, 상기 버스 동작은 싱크 버스 트랜색션(sync bus transaction)인 것을 특징으로 하는 방법.
  7. 제 1 항에 있어서, 상기 버스 동작은 입력/출력(input/output; eieio) 버스 트랜색션의 엔포스 인-오더 실행(enforce in-order execution)인 것을 특징으로 하는 방법.
  8. 제 1 항에 있어서, 상기 메모리 배리어 명령은 적어도 메모리 명령 배리어 태그(tag)를 포함하고 상기 메모리 명령은 적어도 메모리 명령 태그를 포함하는 것을 특징으로 하는 방법.
  9. 제 8 항에 있어서, 상기 메모리 명령은 상기 메모리 명령 배리어 태그 및 상기 메모리 명령 태그에 근거하여 실행되는 것을 특징으로 하는 방법.
  10. DMA 동작들에서 메모리 배리어들을 생성하기 위한 장치로서,
    메모리 명령들 및 메모리 배리어 명령들을 수신하도록 구성된 제 1 통신 채널(channel);
    상기 제 1 통신 채널에 연결되고 메모리 배리어 명령에 근거하여 버스 동작을 시작하도록 구성된 언롤 로직(unroll logic);
    상기 언롤 로직에 연결되고 상기 버스 동작을 전송하며 버스 동작 승인을 수신하도록 구성된 제 2 통신 채널; 및
    상기 제 1 통신 채널, 상기 제 2 통신 채널, 및 상기 언롤 로직에 연결되며, 메모리 명령들을 실행하고, 상기 버스 동작 승인에 근거하여 메모리 배리어 명령들을 실행하도록 구성되는 DMA 제어기를 포함하는 것을 특징으로 하는 장치.
  11. 제 10 항에 있어서, 상기 메모리 배리어 명령들은 직접 메모리 접근 싱크 명령들인 것을 특징으로 하는 장치.
  12. 제 10 항에 있어서, 상기 메모리 배리어 명령들은 직접 메모리 접근 EIEIO 명령들인 것을 특징으로 하는 장치.
  13. 제 10 항에 있어서, 상기 버스 동작은 싱크 버스 트랜색션인 것을 특징으로 하는 장치.
  14. 제 10 항에 있어서, 상기 버스 동작은 EIEIO(Enforce In-order Execution of I/O) 버스 트랜색션인 것을 특징으로 하는 장치.
  15. 제 10 항에 있어서, 상기 메모리 명령들은 적어도 관련된 메모리 명령 태그를 포함하고 상기 메모리 배리어 명령들은 적어도 관련된 메모리 배리어 명령 태그를 포함하는 것을 특징으로 하는 장치.
  16. 제 15 항에 있어서, 상기 DMA 제어기는, 또한, 관련된 메모리 명령 태그 및 관련된 메모리 배리어 명령 태그에 근거하여 메모리 명령들을 실행하도록 구성되는 것을 특징으로 하는 장치.
  17. 제 10 항에 있어서, 상기 제 1 통신 채널 및 상기 언롤 로직에 연결된 DMA 명령 대기행렬을 더 포함하고, 상기 DMA 명령 대기행렬은 메모리 명령들 및 메모리 배리어 명령들을 순서대로 저장하도록 구성되는 것을 특징으로 하는 장치.
  18. 제 10 항에 있어서, 복수의 데이터 버퍼들을 더 포함하고, 상기 복수의 데이터 버퍼들은 적어도 메모리에 연결되도록 구성되는 것을 특징으로 하는 장치.
  19. 제 18 항에 있어서, 상기 복수의 데이터 버퍼들은 적어도 상기 제 2 통신 채널에 연결되도록 구성되는 것을 특징으로 하는 장치.
  20. DMA 장치에서 메모리 배리어들을 생성하기 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록매체로서, 상기 컴퓨터 프로그램은:
    메모리 배리어 명령을 수신하기 위한 컴퓨터 프로그램 코드;
    메모리 명령을 수신하기 위한 컴퓨터 프로그램 코드;
    상기 메모리 배리어 명령에 근거하여 상기 메모리 명령을 실행하기 위한 컴퓨터 프로그램 코드;
    상기 메모리 배리어 명령에 근거하여 버스 동작을 시작하기 위한 컴퓨터 프로그램 코드;
    상기 버스 동작에 근거하여 버스 동작 승인을 수신하기 위한 컴퓨터 프로그램 코드; 및
    상기 버스 동작 승인에 근거하여 상기 메모리 배리어 명령을 실행하기 위한 컴퓨터 프로그램 코드를 포함하는 것을 특징으로 하는 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록매체.
  21. 제 20 항에 있어서, 상기 메모리 배리어 명령은 직접 메모리 접근 싱크 명령인 것을 특징으로 하는 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록매체.
  22. 제 20 항에 있어서, 상기 메모리 배리어 명령은 직접 메모리 접근 EIEIO 명령인 것을 특징으로 하는 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록매체.
  23. 제 20 항에 있어서, 상기 버스 동작은 싱크 버스 트랜색션인 것을 특징으로 하는 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록매체.
  24. 제 20 항에 있어서, 상기 버스 동작은 EIEIO 버스 트랜색션인 것을 특징으로 하는 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록매체.
  25. 제 20 항에 있어서, 상기 메모리 배리어 명령은 적어도 하나의 메모리 배리어 태그를 포함하고, 상기 메모리 명령은 적어도 하나의 메모리 명령 태그를 포함하는 것을 특징으로 하는 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록매체.
  26. 제 25 항에 있어서, 상기 메모리 배리어 태그 및 상기 메모리 명령 태그에 근거하여 상기 메모리 명령을 실행하기 위한 컴퓨터 프로그램 코드를 더 포함하는 것을 특징으로 하는 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록매체.
KR1020077001629A 2004-07-29 2005-07-18 비대칭 혼성 멀티프로세서 환경에서의 메모리 배리어프리미티브들 KR100866714B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/902,474 US7725618B2 (en) 2004-07-29 2004-07-29 Memory barriers primitives in an asymmetric heterogeneous multiprocessor environment
US10/902,474 2004-07-29

Publications (2)

Publication Number Publication Date
KR20070038518A KR20070038518A (ko) 2007-04-10
KR100866714B1 true KR100866714B1 (ko) 2008-11-03

Family

ID=35733704

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077001629A KR100866714B1 (ko) 2004-07-29 2005-07-18 비대칭 혼성 멀티프로세서 환경에서의 메모리 배리어프리미티브들

Country Status (9)

Country Link
US (1) US7725618B2 (ko)
EP (1) EP1782220B1 (ko)
JP (1) JP4678623B2 (ko)
KR (1) KR100866714B1 (ko)
CN (1) CN101052954B (ko)
AT (1) ATE403905T1 (ko)
DE (1) DE602005008747D1 (ko)
TW (1) TWI391826B (ko)
WO (1) WO2006040692A1 (ko)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7200688B2 (en) 2003-05-29 2007-04-03 International Business Machines Corporation System and method asynchronous DMA command completion notification by accessing register via attached processing unit to determine progress of DMA command
US7243200B2 (en) 2004-07-15 2007-07-10 International Business Machines Corporation Establishing command order in an out of order DMA command queue
US7725618B2 (en) 2004-07-29 2010-05-25 International Business Machines Corporation Memory barriers primitives in an asymmetric heterogeneous multiprocessor environment
DE102004046438B4 (de) * 2004-09-24 2006-07-06 Infineon Technologies Ag Vorrichtung zum Steuern des Zugriffs von Verarbeitungseinrichtungen auf Speicher in einem eingebetteten System
US9026744B2 (en) * 2005-03-23 2015-05-05 Qualcomm Incorporated Enforcing strongly-ordered requests in a weakly-ordered processing
US7716387B2 (en) * 2005-07-14 2010-05-11 Canon Kabushiki Kaisha Memory control apparatus and method
GB2433333B (en) * 2005-12-13 2011-07-13 Advanced Risc Mach Ltd Distributed direct memory access provision within a data processing system
JP4446968B2 (ja) * 2006-02-22 2010-04-07 シャープ株式会社 データ処理装置
US7917676B2 (en) * 2006-03-10 2011-03-29 Qualcomm, Incorporated Efficient execution of memory barrier bus commands with order constrained memory accesses
US7610458B2 (en) * 2006-04-25 2009-10-27 International Business Machines Corporation Data processing system, processor and method of data processing that support memory access according to diverse memory models
US7454580B2 (en) * 2006-04-25 2008-11-18 International Business Machines Corporation Data processing system, processor and method of data processing that reduce store queue entry utilization for synchronizing operations
US7783817B2 (en) * 2006-08-31 2010-08-24 Qualcomm Incorporated Method and apparatus for conditional broadcast of barrier operations
US7941627B2 (en) * 2008-02-01 2011-05-10 International Business Machines Corporation Specialized memory move barrier operations
US8327101B2 (en) * 2008-02-01 2012-12-04 International Business Machines Corporation Cache management during asynchronous memory move operations
US8015380B2 (en) * 2008-02-01 2011-09-06 International Business Machines Corporation Launching multiple concurrent memory moves via a fully asynchronoous memory mover
US8275963B2 (en) * 2008-02-01 2012-09-25 International Business Machines Corporation Asynchronous memory move across physical nodes with dual-sided communication
US8095758B2 (en) * 2008-02-01 2012-01-10 International Business Machines Corporation Fully asynchronous memory mover
US8245004B2 (en) * 2008-02-01 2012-08-14 International Business Machines Corporation Mechanisms for communicating with an asynchronous memory mover to perform AMM operations
US8356151B2 (en) * 2008-02-01 2013-01-15 International Business Machines Corporation Reporting of partially performed memory move
US7991981B2 (en) * 2008-02-01 2011-08-02 International Business Machines Corporation Completion of asynchronous memory move in the presence of a barrier operation
JP5187038B2 (ja) * 2008-07-15 2013-04-24 セイコーエプソン株式会社 マルチプロセッサシステム及びそれを搭載した流体吐出装置
GB2469299B (en) * 2009-04-07 2011-02-16 Imagination Tech Ltd Ensuring consistency between a data cache and a main memory
US8352682B2 (en) * 2009-05-26 2013-01-08 Qualcomm Incorporated Methods and apparatus for issuing memory barrier commands in a weakly ordered storage system
US8997103B2 (en) * 2009-09-25 2015-03-31 Nvidia Corporation N-way memory barrier operation coalescing
US8832403B2 (en) * 2009-11-13 2014-09-09 International Business Machines Corporation Generation-based memory synchronization in a multiprocessor system with weakly consistent memory accesses
WO2012036954A2 (en) * 2010-09-15 2012-03-22 Rambus Inc. Scheduling amongst multiple processors
US20150033234A1 (en) * 2013-07-23 2015-01-29 Qualcomm Incorporated Providing queue barriers when unsupported by an i/o protocol or target device
CN108139903B (zh) * 2015-07-21 2019-11-15 安培计算有限责任公司 依dmb操作用加载/存储操作实施加载撷取/存储释放指令
KR101892357B1 (ko) * 2016-10-11 2018-08-27 한국과학기술원 실리콘 반도체를 기반으로 하는 광 빔 포밍 네트워크 칩
KR102262209B1 (ko) * 2018-02-09 2021-06-09 한양대학교 산학협력단 더미 입출력 요청을 이용한 배리어 명령 전달 방법 및 그 장치
DE102020127704A1 (de) 2019-10-29 2021-04-29 Nvidia Corporation Techniken zum effizienten transferieren von daten an einem prozessor
US11803380B2 (en) 2019-10-29 2023-10-31 Nvidia Corporation High performance synchronization mechanisms for coordinating operations on a computer system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6609192B1 (en) 2000-06-06 2003-08-19 International Business Machines Corporation System and method for asynchronously overlapping storage barrier operations with old and new storage operations

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5911051A (en) * 1996-03-29 1999-06-08 Intel Corporation High-throughput interconnect allowing bus transactions based on partial access requests
TW320701B (ko) * 1996-05-16 1997-11-21 Resilience Corp
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
US6209073B1 (en) * 1998-04-27 2001-03-27 International Business Machines Corp. System and method for interlocking barrier operations in load and store queues
US6205494B1 (en) * 1998-12-18 2001-03-20 Western Digital Corporation Controller with automatic generation of linked list of data transfer descriptors for sequential commands, with linked list being used for execution of sequential data transfers
US6347349B1 (en) * 1998-12-28 2002-02-12 International Business Machines Corp. System for determining whether a subsequent transaction may be allowed or must be allowed or must not be allowed to bypass a preceding transaction
US6647468B1 (en) * 1999-02-26 2003-11-11 Hewlett-Packard Development Company, L.P. Method and system for optimizing translation buffer recovery after a miss operation within a multi-processor environment
US6738836B1 (en) * 2000-08-31 2004-05-18 Hewlett-Packard Development Company, L.P. Scalable efficient I/O port protocol
US6658520B1 (en) * 2000-09-26 2003-12-02 Intel Corporation Method and system for keeping two independent busses coherent following a direct memory access
US6947049B2 (en) * 2001-06-01 2005-09-20 Nvidia Corporation Method and system for synchronizing updates of vertex data with a graphics processor that is fetching vertex data
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US8301844B2 (en) * 2004-01-13 2012-10-30 Hewlett-Packard Development Company, L.P. Consistency evaluation of program execution across at least one memory barrier
US7725618B2 (en) 2004-07-29 2010-05-25 International Business Machines Corporation Memory barriers primitives in an asymmetric heterogeneous multiprocessor environment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6609192B1 (en) 2000-06-06 2003-08-19 International Business Machines Corporation System and method for asynchronously overlapping storage barrier operations with old and new storage operations

Also Published As

Publication number Publication date
US20060026309A1 (en) 2006-02-02
JP2008508586A (ja) 2008-03-21
CN101052954A (zh) 2007-10-10
TWI391826B (zh) 2013-04-01
EP1782220B1 (en) 2008-08-06
US7725618B2 (en) 2010-05-25
DE602005008747D1 (de) 2008-09-18
JP4678623B2 (ja) 2011-04-27
EP1782220A1 (en) 2007-05-09
CN101052954B (zh) 2011-10-19
KR20070038518A (ko) 2007-04-10
WO2006040692A1 (en) 2006-04-20
TW200617685A (en) 2006-06-01
ATE403905T1 (de) 2008-08-15

Similar Documents

Publication Publication Date Title
KR100866714B1 (ko) 비대칭 혼성 멀티프로세서 환경에서의 메모리 배리어프리미티브들
EP1711899B1 (en) Establishing command order in an out of order dma command queue
JP5787629B2 (ja) マシンビジョン用マルチプロセッサシステムオンチップ
US5652856A (en) Memory controller having all DRAM address and control singals provided synchronously from a single device
US5426765A (en) Multiprocessor cache abitration
US10162755B2 (en) Techniques for implementing barriers to efficiently support cumulativity in a weakly-ordered memory system
JP2012038293A5 (ko)
US20080034146A1 (en) Systems and Methods for Transactions Between Processor and Memory
KR20040045035A (ko) 힌트 버퍼를 이용한 메모리 액세스 대기시간 숨김
US20170315922A1 (en) Implementing barriers to efficiently support cumulativity in a weakly-ordered memory system
US7877523B2 (en) Apparatus, computer program product, and system for completing a plurality of chained list DMA commands that include a fenced list DMA command element
US20180329826A1 (en) Implementing barriers to efficiently support cumulativity in a weakly ordered memory system
US5924120A (en) Method and apparatus for maximizing utilization of an internal processor bus in the context of external transactions running at speeds fractionally greater than internal transaction times
US20180018297A1 (en) Synchronous data input/output system using prefetched device table entry
JP2547949B2 (ja) データ・コヒーレンシを維持する方法及びシステム
WO2017088456A1 (zh) 多输入多输出处理器流水线数据同步装置及方法
US20070005865A1 (en) Enforcing global ordering using an inter-queue ordering mechanism
US6453375B1 (en) Method and apparatus for obtaining coherent accesses with posted writes from multiple software drivers
US7523467B1 (en) Virtual processing chains
JPS62288949A (ja) シリアライズ命令制御装置
JPS61269735A (ja) 電子計算機における命令キユ−制御方式
JP2001229074A (ja) メモリ制御装置と情報処理装置及びメモリ制御チップ
KR19980048939A (ko) 멀티 프로세서의 캐쉬 백업장치
JPS60189043A (ja) プロセツサ
JPH0277839A (ja) データ処理装置

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

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20131001

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20141007

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee