KR100827510B1 - 비순차적인 dma 명령 큐에서 명령 순서 형성 - Google Patents

비순차적인 dma 명령 큐에서 명령 순서 형성

Info

Publication number
KR100827510B1
KR100827510B1 KR1020067013085A KR20067013085A KR100827510B1 KR 100827510 B1 KR100827510 B1 KR 100827510B1 KR 1020067013085 A KR1020067013085 A KR 1020067013085A KR 20067013085 A KR20067013085 A KR 20067013085A KR 100827510 B1 KR100827510 B1 KR 100827510B1
Authority
KR
South Korea
Prior art keywords
command
flag
instruction
barrier
computer program
Prior art date
Application number
KR1020067013085A
Other languages
English (en)
Other versions
KR20060132856A (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 KR20060132856A publication Critical patent/KR20060132856A/ko
Application granted granted Critical
Publication of KR100827510B1 publication Critical patent/KR100827510B1/ko

Links

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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Details Of Television Systems (AREA)
  • Communication Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

방법, 장치, 컴퓨터 프로그램은 메모리 액세스(access) 제어를 위해서 제공된다. 다수의 버스(bus) 구조에서 다이렉트 메모리 액세스(Direct Memory Access, DMA) 유닛은 평범한 것이 되었다. 그러나, 제한된 시스템 자원의 유지는 다중 DMA 유닛에 대한 도전이 되었다. 생성된 다수의 명령을 유지하고 의존을 보존하기 위해서, 명령에 임베드된 플래그 또는 장벽 명령이 사용된다. 이러한 작동은 명령을 실행하여 의존을 보존하기 위한 순서를 제어할 수 있다.

Description

비순차적인 DMA 명령 큐에서 명령 순서 형성 {Establishing command order in an out of order DMA command queue}
본 발명은 일반적으로 다이렉트 메모리 액세스(Direct Memory Access, DMA) 제어와 관련이 있고, 보다 상세하게는 DMA 제어 유닛에서 명령 정렬을 유지하기 위한 메카니즘(mechanism)을 제공한다.
종래의 시스템에서는, 다이렉트 메모리 액세스(DMA) 유닛은 직접적으로 메모리에 접근할 수 있는 장치이고, 그러므로 메인 프로세서를 우회한다. 이러한 타입의 시스템은 몇몇의 버스(bus) 구조에 존재한다. 그러나, 시스템에서 DMA 유닛을 효과적이고 정연하게 사용하기 위해서는 메모리의 DMA 사용에 제어와 제한이 있어야 한다.
DMA 유닛은 DMA 사용의 제어를 수행한다. 일반적으로, DMA 유닛에 대한 메모리 사용을 위한 요청이나 명령은 만들어진다. DMA 유닛은 정연한 방법으로 요청이나 명령을 수행하도록 허락하는 가상의 게이트키퍼(gatekeeper)로서 작동하게 된다. 그러나 요청이나 명령을 만드는 다수의 DMA 유닛, 하나의 DMA 유닛에 의한 다수의 명령, 또는 이들의 어떠한 결합이 존재할 수 있다. 시스템을 방해하는 다중 요청의 문제를 완화하기 위해, DMA 유닛은 큐(queue)에 일련의 DMA 유닛 요청 또는 명령을 저장시킨다.
일반적으로, 일련의 DMA 유닛 요청 또는 명령은 요청 또는 명령이 DMA 유닛에 도착하는 순서에 따라 실행되거나 엄격한 순서에 의해 실행된다. 그러나 엄격한 순서는 많은 비용이 든다. 엄격한 순서의 결과에 의해 야기될 수 있는 많은 문제가 있다. 예를 들어, 우선 순위가 높은 DMA 명령은 우선 순위가 낮은 DMA 명령에 의해 지연될 수 있다.
엄격한 정렬 방식이 많은 비용이 드는 다른 이유는 가상 메모리 시스템이 DMA를 위하여 사용될 때이다. 만약 가상 주소로부터 실제 주소에 대한 번역이 사용될 수 없다면, DMA 유닛은 번역 실수가 해결될 때까지 기다려야 한다. 때때로 번역 실수가 하드웨어에 의해 해결될 수 있고, 때때로 실수는 소프트웨어에 의해 해결될 수 있다. 다른 경우에, 번역 잘못을 해결하는 잠재는 매우 길다. 다른 경우에, 이러한 DMA 명령은 느린 장치에 대한 또는 느린 장치로부터 현재 DMA 명령에 대한 의존이 없는 큐에서 되돌아 온 DMA 명령이 실행되는 것을 막는다.
로드(load)와 저장을 위하여, PowerPC®과 같은 어떤 종래의 시스템은 약하게 정렬되거나 약하게 일관된 메모리 모델의 사용을 통하여 수행을 개선할 수 있다. 약하게 정렬된 메모리 모델의 개념은 DMA 명령의 실행까지 확대될 수 있다. DMA 유닛을 위한 약하게 정렬된 모델에서, 태그는 각각의 명령과 관련이 있다. 명령은 어떤 순서로 완료된다. 그러나, 태그(tag)는 제어 소프트웨어가 순서 및 명령과 관련되거나 의존적인 그룹을 모니터(monitor)하는 것을 허락한다.
그렇지만, 어떤 순서로 명령의 완료를 허락하는 것은 다수의 문제를 내포한다. 예를 들어, 이어지는 명령의 실행에 우선하여 명령이 완료되는 요구가 존재하는 경우이다. 그러므로, DMA 명령의 실행을 위한 종래의 방법과 장치와 관련된 적어도 몇 개의 문제를 다루는 DMA 명령을 정렬하기 위한 방법 및/또는 장치에 대한 요구가 있다.
본 발명 및 그에 따른 이점에 대한 완전한 이해를 위하여, 첨부된 도면에 대한 다음과 같은 설명을 참고한다.
도 1은 개선된 DMA 제어기를 구비하는 시스템을 도시하고 있는 블록 다이아그램이다.
도 2는 멀티프로세서(multiprocessor, MP) 시스템을 도시하고 있는 블록 다이아그램이다.
도 3은 개선된 DMA 제어기 시스템을 구비하는 펜스 플래그의 작동을 도시하고 있는 플로우 차트이다.
도 4는 개선된 DMA 제어기 시스템에 구비되어 있는 장벽 플래그의 작동을 도시하고 있는 플로우 차트이다.
도 5는 개선된 DMA 제어기 시스템에 구비되어 있는 장벽 명령의 작동을 도시하고 있는 플로우 차트이다.
본 발명은 메모리 액세스를 위한 장치를 제공한다. 적어도 명령을 지시할 수 있는 하나의 기능과, 적어도 하나의 플래그를 할당된 태그 번호와 관련된 명령에 임베드(embed)할 수 있는 기능을 포함하는 적어도 하나의 프로세서가 제공된다. 또한 복수의 통신 채널 중 적어도 하나의 제 1의 통신 채널을 통하여 상기 적어도 하나의 프로세서에 의해 복수의 명령이 입력되는 복수의 통신 포트(port)가 제공된다. 또한, 복수의 태그(tag)된 명령을 생성하기 위하여 복수의 명령의 각각의 명령에 태그 번호를 할당하는 태그 큐(tag queue)를 포함한다. 복수의 태그된 명령을 저장하며, 명령을 정렬하는 기능을 더 구비하는 명령 큐(queue)가 또한 제공된다.
이하에서는 본 발명의 완전한 이해를 제공하기 위해서 특정한 세부적인 설명들이 기재된다. 그러나, 당해 기술 분야에서 통상의 지식을 가진 자는 이러한 세부적인 설명이 없더라도 본 발명을 실시할 수 있다는 것을 인식할 것이다. 한편, 공지의 구성 요소는 불필요한 설명으로 본 발명을 모호하게 하지 않기 위하여 개략적이거나 블록 다이아그램 형태로 도시된다. 또한, 전체적으로, 네트워크 통신, 전자기적인 신호처리 기술 및 이와 유사한 것과 관련된 구체적인 설명 중 본 발명의 완벽한 이해를 하는데 필요하다고 생각하지 않으며, 관련 기술 분야에서 통상의 지식을 가진 자가 이해할 수 있는 것이라고 생각되는 것들은 이를 생략하였다.
명시적인 다른 기재가 없는 한, 여기에 기술된 모든 기능은 하드웨어 또는 소프트웨어 또는 이들의 어떤 결합 내에서 수행될 것이라는 것을 언급한다. 그러나, 본 발명의 바람직한 실시예에서, 명시적인 다른 기재가 없는 한, 이러한 기능들은 컴퓨터와 같은 프로세서 또는 이러한 컴퓨터 프로그램 코드에 따른 전자의 데이터 프로세서, 소프트웨어, 및/또는 이러한 기능을 수행하도록 코드된 집적 회로에 따라서 수행된다.
도 1에 도시된 바와 같이, 참조 번호 100은 일반적으로 개선된 DMA 제어기를 구비한 시스템을 나타낸다. 시스템(100)은 개선된 DMA 제어기(110), PU(Processing Unit, 130), 메모리 유닛(132), 메모리(120), 및 멀티프로세서 코히런트 버스(multiprocessor coherent bus, 190)를 포함한다. 개선된 DMA 제어기(110)는 DMA 명령 큐(140), 태그 큐(150), 전개와 번역 논리(160), 아웃바운드(outbound) 데이터 버퍼(170), 인바운드(inbound) 데이터 버퍼(180)를 더 포함한다.
개선된 DMA 제어기(110)를 구비한 시스템(100)에서, 명령은 지시되고 실행된다. 메로리 유닛(132)을 구비한 PU(130)는 DMA 명령 큐(140)에 명령을 지시한다. PU(130)는 메인 PU(MPU) 또는 시너지스틱 PU(synergistic PU, SPU)를 포함하는 어떠한 형태의 프로세서가 될 수 있다. 메모리 유닛(132)은 캐쉬를 포함하지만 그에 한정되지 않는 다양한 메모리 형태가 될 수 있다. DMA 명령 큐(140)에 보내진 명령은 태그(tag)되고, 각각의 명령을 위한 태그는 태그 큐(150)에 기록된다. 태그는 명령에 대해 각각 다르거나 명령의 특정한 형태에 대해 특이할 수 있으므로, 태그 그룹을 형성할 수 있다. DMA 명령 큐(140)로부터, 기록과 읽기 명령은 시스템 메모리(도시되지 않음)를 포함하는 다양한 구성에 대해 지시된다.
그 다음에, 데이터의 전송은 아웃바운드 데이터 버퍼(170)와 인바운드 데이터 버퍼(180)를 통하여 발생한다. 물론 디코딩과 같은 명령의 실행에 연관된 다른 많은 단계가 있을 수 있다.
그러나, DMA 명령 큐(140)에 있는 명령은 단순히 무작위적으로 실행되는 것은 아니다. 종래의 시스템에서, DMA 명령 큐(140)와 같은 DMA 명령 큐에 있는 명령은 엄격하게 정렬된 계획하에서 도착하는 순서에 따라 실행된다. 이에 반해, 개선된 DMA 제어기(110)는 약하게 정렬된 계획을 이용하여 다양한 순서에 따른 실행을 허락한다. 게다가, 개선된 DMA 제어기(110)는 또한 일련의 임베드된 플래그를 이용한다. PU(130)는 지시된 명령에 플래그를 임베드한다. 물론 펜스와 장벽 플래그가 DMA 제어기(140)에 의해 임베드되는 것이 가능하나, 그것은 더 복잡하다. 또한 임베드된 플래그는 각각의 명령에 대해 의존적으로 작동하고 명령의 순차적인 실행을 위한 것이다. 예를 들어, 우선 순위가 낮은 명령 전에 우선 순위가 높은 명령을 실행하는 것과 같은, 임베드된 플래그를 이용하는 다른 많은 이유가 있다.
보다 상세하게, 명령에 임베드될 수 있는 두개의 플래그: 장벽 플래그와 펜스 플래그가 있다. 양자는 동일한 태그 그룹에 있는 명령에만 영향을 미친다. 일반적으로, 임베드된 펜스 플래그(fence flag)는 임베드된 펜스 플래그를 구비하는 명령보다 우선적으로 지시된 동일한 태그 그룹에 있는 모든 명령이 완료될 때까지 명령이 실행되는 것을 허락하지 않는다. 펜스 플래그는 임베드된 펜스 플래그를 구비하는 명령보다 우선적으로 지시된 동일한 태그 그룹에 있는 모든 명령이 펜스 플래그를 구비하는 명령의 실행보다 우선적으로 완료될 것을 요구한다. 펜스 플래그는 큐(queue)에 있는 이어지는 명령에 영향을 미치지 않는다. 예를 들어, 펜스를 구비하는 명령 뒤에 지시된 명령은 펜스를 구비하는 명령 전에 실행될 수 있다.
반면에, 장벽 플래그는 동일한 태그 그룹에 있는 모든 선행하고 이어지는 명령에 영향을 미친다. 일반적으로, 장벽 플래그(barrier flag)는 동일한 태그 그룹에 있는 어떤 이어지는 명령이 장벽 플래그를 구비하는 명령을 포함하여, 장벽 플래그를 포함하는 명령보다 우선적으로 지시된 명령의 실행 전에 실행되는 것을 허락하지 않는다. 예를 들어, 장벽을 구비하는 명령 뒤에 지시된 동일한 태그 그룹에 포함된 명령은 장벽을 구비하는 명령 전에 실행될 수 없다. 일반적으로, 장벽을 포함하는 명령보다 우선적으로 지시된 동일한 태그 그룹에 포함되는 모든 명령이 완료된 때, 장벽 플래그를 구비하는 명령과 동일한 태그 플래그에 있는 이어지는 명령은 실행될 수 있다. 그러므로, 장벽이 한번 제거되면, 그 다음에 정규의 비순차적인 작동이 계속될 수 있다.
PU(130)는 또한 펜스 또는 장벽 플래그를 임베드하는 대신에 장벽 명령(barrier command)을 지시할 수 있는 능력을 가지고 있다. 장벽 명령은 큐에 있는 모든 명령에 작동한다. 모든 이어지는 명령은 태그에 상관없이, 모든 선행되어 지시된 명령이 완료될 때까지 장벽 명령에 의해 실행이 차단된다. 장벽이 한번 제거되면, 그 다음에 정규의 비순차적인 작동이 계속될 수 있다.
장벽 명령과 플래그를 비교하면, 미묘하지만 의미있는 차이가 존재한다. 장벽 명령이 모든 태그 그룹에 작용하는 것에 반하여, 명령에 임베드된 특정한 플래그 태그는, 이름이 의미하는 바와 같이, 단지 동일한 태그 그룹에 있는 명령에 작용한다. 그렇다고 할지라도 장벽 플래그와 장벽 명령은 각각 우선적이고 이어져서 지시된 명령에 영향을 미친다는 유사한 특성을 가지고 있다. 그러나 두 명령의 효과의 유효범위는 다르다.
개선된 DMA 시스템(100)을 작동시키기 위하여, 일련의 필요한 연결이 존재한다. PU(130)는 제 1 통신 채널(도시되지 않음)을 통하여 메모리 유닛(132)에 연결된다. 또한, PU(130)는 제 2 통신 채널(101)을 통하여 DMA 명령 큐(140)에 연결된다. 메모리 유닛(132)는 제 3 통신 채널(112)을 통하여 메모리에 연결된다. 메모리(120)는 제 4 통신 채널(102)을 통하여 아웃바운드 데이터 버퍼(170)에 연결된다. 메모리(120)는 또한 제 5 통신 채널(103)을 통하여 인바운드 데이터 버퍼(180)에 연결된다. DMA 명령 큐는 제 6 통신 채널(104)과 제 7 통신 채널(105)을 통하여 전개와 번역 논리(160)에 연결된다. 제 6 통신 채널(104)은 명령을 전달하고, 제 7 통신 채널(105)는 임베드된 플래그를 전달한다. 태그 큐(150)는 제 8 통신 채널(106)을 통하여 전개와 번역 논리(160)에 연결된다. 아웃바운드 데이터 버퍼(170)는 제 9 통신 채널(107)을 통하여 MP 코히런트 버스(MP coherent bus, 190)에 연결된다. 아웃바운드 데이터 버퍼는 제 10 통신 채널(108)을 통하여 MP 코히런트 버스에 연결된다. 전개와 번역 논리(160)는 제 11 통신 채널(109)을 통하여 MP 코히런트 버스에 연결된다.
도 2에 도시된 바와 같이, 참조 번호 200은 일반적으로 MP 시스템을 나타낸다. MP 시스템은 공유 메모리(210), 로컬 메모리(212), 제 1 PU(220), 제 1 레벨 2(L2) 캐쉬(222), 제 1 DMA 제어기(224), 제 2 DMA 제어기(226), 제 2 PU(228), 및 제 2 L2 캐쉬(230)를 포함한다. 제 1 L2 캐쉬(222)와 제 2 L2 캐쉬(230)는 잘 알려져 있고 그들 각각의 프로세서를 위한 아웃바운드 메모리 인터페이스로 작동한다.
MP 시스템(200)에서, 다중 프로세서는 다양한 메모리 장치로부터 데이터를 읽거나 기록하기 위하여 결합하여 또는 독립적으로 작동할 수 있다. PU(220)는 읽기 명령, 기록 명령 등과 같은 다양한 형태의 명령을 제 1 DMA 제어기(224)에 지시할 수 있다. 제 2 PU(228)는 또한 읽기 명령, 기록 명령 등과 같은 다양한 형태의 명령을 제 2 DMA 제어기(226)에 지시할 수 있다. 제 1 DMA 제어기(224)와 제 2 DMA 제어기(226)는 로컬 메모리(212) 또는 공유 메모리(210) 중 어느 하나로부터 데이터를 읽거나 기록할 수 있다. 또한, 도 2에 도시된 바와 같이, 각각의 DMA 제어기를 위한 다중 PU 또는 하나의 PU가 존재할 수 있다. 반대로, 도 2에 도시된 바와 같이, 다중 DMA 제어기 또는 하나의 DMA 제어기가 존재할 수 있다. 또한, 도 2에 도시된 바와 같이, 하나의 또는 다중 PU가 존재할 수 있다.
MP 시스템(200)을 작동시키기 위해서, 일련의 필요한 연결이 존재한다. PU(220)은 제 12 통신 채널(도시되지 않음)을 통하여 제 1 L2 캐쉬(222)와 상호 연결된다. PU(220)은 또한 제 13 통신 채널(242)를 통하여 제 1 DMA 제어기(224)에 연결된다. 제 1 L2 캐쉬(222)는 제 14 통신 채널(240)을 통하여 공유 메모리(210)에 연결된다. 제 1 DMA 제어기(224)는 제 15 통신 채널(244)을 통하여 공유 메모리(210)에 연결된다. 제 1 DMA 제어기(224)는 또한 제 16 통신 채널(248)을 통하여 로컬 메모리(212)에 연결된다. 제 2 PU(228)는 제 17 통신 채널(도시되지 않음)을 통하여 제 2 L2 캐쉬(230)와 상호 연결된다. 제 2 L2 캐쉬(230)는 제 18 통신 채널(254)을 통하여 로컬 메모리(212)에 연결된다. 제 2 PU(228)는 제 19 통신 채널(252)을 통하여 제 2 DMA 제어기(226)에 연결된다. 제 2 DMA 제어기(226)는 제 20 통신 채널(250)을 통하여 로컬 메모리에 연결된다. 제 2 DMA 제어기(226)는 또한 제 21 통신 채널(246)을 통하여 공유 메모리(210)에 연결된다.
도 3, 4, 및 5는 각각 임베드된 펜스, 임베드된 장벽 및 장벽 명령의 작동을 도시하는 플로우 차트(flow chart)이다. 이러한 플로우 차트는 단지 하나의 임베드된 플래그 또는 장벽 명령의 존재를 보여주기 위해 단순화되었다. 그러나, 다중의 플래그 및/또는 명령을 조합하는 것도 가능하다.
도 3에 도시된 바와 같이, 참조 번호 300은 일반적으로 개선된 DMA 제어기를 구비하는 펜스 플래그의 작동을 도시하는 플로우 차트를 나타낸다. 또한 도 3은 플래그의 어떤 다른 형태의 이용은 도시하지 않는다.
단계 302와 304에서, 명령은 각각 지시되고 펜스 플래그와 함께 임베드된다. 도 1의 PU(130)는 단계 302에서 명령을 지시한다. 명령은 읽기 명령, 기록 명령 등과 같은 다양한 형태의 명령이 될 수 있다. 명령은 단계 304에서 펜스 플래그와 함께 임베드된다. 펜스 플래그와 함께 명령을 임베드하는 것은 애플리케이션(application) 및/또는 컴파일러(compiler)를 사용하는 도 1의 PU(130)에 의해 수행된다. 펜스 플래그는 다양한 이유로 임베드될 수 있다. 예를 들어, 펜스 플래그는 동일한 태그를 구비하는 우선적으로 지시된 모든 명령 각각의 순차적인 실행을 위하여 임베드될 수 있다. 펜스 플래그는 읽기 명령과 같은 다양한 명령에 임베드될 수 있다. 또한, 펜스 플래그는 단지 동일한 태그 그룹에 포함되는 명령에만 영향을 미친다. 게다가, 도 1의 PU(130)는 단계 302에서 지시될 때 명령에 태그를 할당한다.
단계 306과 308에서, 명령은 전송되고 하나의 태그 그룹과 관련된다. 도 1의 PU(130)는 단계 306에서 임시 저장을 위해서 지시되고 임베드된 명령을 DMA 명령 큐(140)에 전송한다. 한번 수신되면, 명령은 단계 308에서 할당된 태그에 기초한 특정한 태그 그룹과 관련된다.
단계 310, 311 및 314에서, 실행이 예정되어 있는 DMA 명령 큐로부터 다음 명령을 찾는다. 단계 310에서, 다음 이용 가능한 명령을 위해 DMA 명령 큐를 검색한다. 일반적으로, 명령은 명령 큐에 있는 가장 오래된 명령과 같은, 명령 큐에 있는 다른 명령들의 상대적인 연령에 근거하여 선택된다. 일단 다음 명령이 선택되면, 단계 311에서 명령이 임베드된 펜스 플래그를 포함하는지 여부에 대한 결정이 내려진다. 만약 명령이 임베드된 펜스 플래그를 포함하지 않는다면, 명령은 단계 314에서 실행될 수 있다. 그러나, 만약 임베드된 펜스 플래그가 존재한다면, 다른 단계들이 진행될 것이다.
만약 단계 311에서 명령이 임베드된 펜스 플래그를 포함한다고 결정하면, 그러면, 단계 312에서, 명령의 실행 필수 조건이 점검된다. 펜스 플래그는 임베드된 펜스 플래그를 구비하는 명령보다 우선적으로 지시된 동일한 태그 그룹에 있는 모든 명령이 펜스 플래그를 구비하는 명령의 실행보다 우선적으로 완료될 것을 요구한다. 만약 명령의 실행 필수 조건이 만족되지 않는다면, 명령은 DMA 명령 큐에 남아 있고, 실행할 수 있는 명령을 찾기 위해서 단계 310과 311은 반복된다. 명령의 실행 필수 조건이 만족될 때까지 명령은 DMA 명령 큐에 남아 있을 것이다. 그러므로, 단계 310에서, 실행될 다음 명령은 임베드된 펜스 플래그를 구비하는 명령의 지시보다 우선적으로 지시된 동일한 태그를 포함하는 명령이어야 한다. 만약 다음 예정된 명령이 펜스 플래그의 지시에 이어져서 지시된다면, 도 1의 DMA 제어기(110)는 태그에 관계없이 이어지는 명령을 실행할 수 있다. 그러나, 도 1의 DMA 제어기(110)는 명령 큐에서 어떤 이전에 지시된 명령을 찾는 것을 계속하여야한다. 만약 동일한 태그 그룹에서 이전 명령이 존재하지 않는다면, 임베드된 펜스에 대한 요구는 만족되고 임베드된 펜스 플래그를 구비하는 명령은 실행될 수 있다. 그러나, 임베드된 펜스 플래그를 포함하는 명령은 완료되지 않은 이전에 지시된 어떤 명령이 더 이상 존재하지 않을 때까지 실행될 수 없다.
단계 310 내지 314는 단계 302 내지 308과 병렬적으로 실행된다. 도 1의 PU(130)가 명령을 내릴 때까지 단계 302 내지 308은 반복된다. 단계 310 내지 314는 DMA 명령 큐에 명령이 남아있지 않을 때까지 계속하여 실행된다 .
도 4에 도시된 바와 같이, 참조 번호 400은 일반적으로 개선된 DMA 제어기를 구비하는 장벽 플래그의 작동을 도시하는 플로우 차트이다. 또한 도 4는 플래그의 어떤 다른 형태의 이용을 도시하지는 않는다.
단계 402와 404에서, 명령은 각각 지시되고 장벽 플래그와 함께 임베드된다. 도 1의 PU 130은 단계 402에서 명령을 지시한다. 명령은 읽기 명령, 기록 명령 등과 같은 다양한 형태의 명령이 될 수 있다. 명령은 단계 404에서 장벽 플래그와 함께 임베드된다. 장벽 플래그와 함께 명령을 임베드하는 것은 애플리케이션(application) 및/또는 컴파일러(compiler)를 사용하는 도 1의 PU(130)에 의해 수행된다. 장벽 플래그는 다양한 이유로 임베드될 수 있다. 예를 들어, 장벽 플래그는 이 명령의 순차적인 실행과 동일한 태그를 포함하는 우선적으로 지시된 모든 명령 각각을 구비하는 동일한 태그 그룹에 있는 모든 순차적인 명령을 위해서 임베드될 수 있다. 장벽 플래그는 읽기 명령과 같은 다양한 명령에 임베드될 수 있다. 또한 장벽 플래그는 단지 동일한 태그 그룹에 있는 명령에만 영향을 미친다. 게다가, 도 1의 PU(130)는 단계 402에서 지시될 때 명령에 태그를 할당한다.
단계 406과 408에서, 명령은 전송되고 하나의 태그 그룹과 관련된다. 도 1의 PU(130)는 단계 406에서 임시 저장을 위해서 지시되고 임베드된 명령을 DMA 명령 큐(140)에 전송한다. 한번 수신되면, 명령은 단계 408에서 할당된 태그에 기초한 특정한 태그 그룹과 관련된다.
단계 410, 411 및 414에서, 실행이 예정되어 있는 DMA 명령 큐로부터 다음 명령을 찾는다. 단계 410에서, 다음 이용 가능한 명령을 위해 DMA 명령 큐를 검색한다. 일반적으로, 명령은 명령 큐에 있는 가장 오래된 명령과 같은, 명령 큐에 있는 다른 명령들의 상대적인 연령에 근거하여 선택된다. 일단 다음 명령이 선택되면, 단계 411에서 명령이 임베드된 장벽 플래그를 포함하는지 여부에 대한 결정이 내려진다. 만약 명령이 임베드된 장벽 플래그를 포함하지 않는다면, 명령은 실행될 수 있다. 그러나, 만약 임베드된 장벽 플래그가 존재한다면, 다른 단계들이 진행될 것이다.
만약 단계 411에서 명령이 임베드된 장벽 플래그를 포함한다고 결정되면, 그러면, 단계 412에서, 명령의 실행 필수 조건이 점검된다. 장벽 플래그는 임베드된 펜스를 구비하는 명령보다 우선적으로 지시된 동일한 태그 그룹에 있는 모든 명령이 장벽 플래그를 구비하는 명령 후에 지시된 어떤 명령의 실행보다 우선적으로 완료될 것을 요구한다. 만약 명령의 실행 필수 조건이 만족되지 않는다면, 명령은 DMA 명령 큐에 남아있고, 실행될 수 있는 명령을 찾기 위해서 단계 410과 411은 반복된다. 명령의 실행 필수 조건이 만족될 때까지 명령은 DMA 명령 큐에 남아 있을 것이다. 그러므로, 단계 410에서, 실행될 다음 명령은 임베드된 장벽 플래그를 구비하는 명령의 지시보다 우선적으로 지시된 동일한 태그를 구비하는 명령이어야 한다. 만약 다음 예정된 명령이 동일한 태그 그룹에 있고 장벽 플래그를 구비하는 명령의 지시에 이어져서 지시되고 장벽 요구가 만족되지 않는다면, 단계 412에서 점검은 실패하고 도 1의 DMA 제어기(110)는 이어지는 명령을 실행할 수 없다. 도 1의 DMA 제어기(110)는 어떤 이전에 지시된 명령을 찾기 위해 명령 큐를 검색하는 것을 계속해야 한다. 만약 동일한 태그 그룹에 있는 이전 명령이 존재하지 않는다면, 임베드된 장벽에 대한 요구는 만족되고 임베드된 장벽 플래그를 구비하는 명령과 동일한 태그 그룹에 포함되는 모든 이어져서 지시된 명령은 실행될 수 있다. 만약 다음 실행 예정된 명령이 동일한 태그 그룹에 있지 않다면, 도 1의 DMA 제어기(110)는 명령을 실행할 수 있다.
단계 410 내지 414는 단계 402 내지 408과 병렬적으로 실행된다. 도 1의 PU(130)가 명령을 지시할 때 단계 402 내지 408은 반복된다. 단계 410 내지 414는 DMA 명령 큐에 명령이 남아있지 않을 때까지 계속하여 실행된다 .
도 5에 도시된 바와 같이, 참조 번호 500은 일반적으로 개선된 DMA 제어기를 포함하는 장벽 명령의 작동을 도시하는 플로우 차트를 나타낸다. 또한, 도 5는 플래그의 어떤 다른 형태의 이용은 도시하지 않는다.
단계 502와 504에서, 장벽 명령은 각각 지시되고 도 1의 DMA 명령 큐(140)에 전송된다. 단계 502에서 도 1의 PU(130)는 장벽 명령을 지시한다. 장벽은 모든 이어져서 지시된 명령을 위한 의존을 형성한다. 의존은 장벽 명령보다 우선적으로 지시된 모든 명령이 완료될 것을 요구한다. 본질적으로, 장벽 명령은 태그 그룹에 관계없이 모든 이전 명령이 실행될까지 어떤 이어져서 지시된 명령의 실행을 막는다. 장벽 명령은 다양한 이유로 이용될 수 있다. 예를 들어, 장벽 명령은 이전에 지시된 모든 명령에 관하여 이 명령의 순차적인 실행과 모든 이어지는 명령을 위하여 이용될 수 있다. 단계 504에서, 도 1의 PU(130)는 지시된 장벽 명령을 임시 저장을 위하여 DMA 명령 큐(140)에 전송한다.
단계 506, 508 및 510에서, DMA 명령 큐로부터 실행 예정된 다음 명령을 찾는다. 단계 510에서, 다음 이용 가능한 명령을 위해 DMA 명령 큐를 검색한다. 일반적으로, 명령은 명령 큐에 있는 가장 오래된 명령과 같은, 명령 큐에 있는 다른 명령들의 상대적인 연령에 근거하여 선택된다. 단계 508에서, 명령 실행 필수조건은 점검된다. 장벽 명령은 장벽 명령보다 우선하여 지시된 모든 명령이 태그 그룹에 관계없이, 장벽 명령 후에 지시된 어떤 명령의 실행보다 우선하여 완료될 것을 요구한다. 만약 명령의 실행 필수 조건이 만족되지 않는다면, 명령은 DMA 명령 큐에 남아있고, 실행할 수 있는 명령을 찾기 위해서 단계 506과 508은 반복된다. 명령의 실행 필수 조건이 만족될 때까지 명령은 DMA 명령 큐에 남아 있을 것이다. 그러므로, 단계 506에서, 실행될 다음 명령은 장벽 명령의 지시보다 우선적으로 지시된 명령이어야 한다. 만약 다음 예정된 명령이 장벽 명령의 지시에 부수적으로 지시되고 장벽 요구가 만족되지 않는다면, 단계 508에서 점검은 실패하고 도 1의 DMA 제어기(110)은 장벽 명령을 완료할 수 없거나 또는 이어지는 명령을 실행할 수 없다. 도 1의 DMA 제어기(110)는 어떤 이전에 지시된 명령을 찾기 위해 명령 큐를 검색하는 것을 계속해야 한다. 만약 이전 명령이 존재하지 않는다면, 장벽 명령과 모든 이어져서 지시된 명령에 대한 의존을 위한 요구가 만족된다. 일단 장벽 명령에 의해 만들어진 의존이 결정되면, 장벽 명령의 지시에 이어져서 지시된 모든 명령은 실행될 수 있다.
단계 506 내지 510은 단계 502 내지 504와 병렬적으로 실행된다. 도 1의 PU(130)이 명령을 내릴 때 단계 502와 504는 반복된다. 단계 506 내지 510은 DMA 명령 큐에 명령이 남아있지 않을 때까지 계속하여 실행된다 .
본 발명에 개시된 실시예들은 그것의 본래 의미를 벗어나지 않는 다양한 변형과 변화가 만들어질 수 있다는 것은 앞선 상세한 설명으로부터 알 수 있다. 상술한 상세한 설명은 단지 실시예를 보여주기 위한 것이고 그에 한정하여 해석하여서는 안된다. 본 발명의 범위는 다음의 청구범위에 기재된 내용에 의해서만 한정되어야 한다.

Claims (19)

  1. 메모리 액세스(access) 제어 장치에 있어서,
    적어도 명령을 지시할 수 있는 기능 및 적어도 하나의 플래그(flag)를 할당된 태그(tag) 번호와 관련되어 있는 명령에 임베드(embed)할 수 있는 기능을 포함하는 적어도 하나의 프로세서(processor);
    복수의 통신 채널 중 적어도 하나의 제 1의 통신 채널을 통하여 상기 적어도 하나의 프로세서에 의해 복수의 명령이 입력되는 복수의 통신 포트(port);
    복수의 태그(tag)된 명령을 생성하기 위하여 복수의 명령의 각각의 명령에 상기 할당된 태그 번호를 할당하는 태그 큐(tag queue); 및
    상기 복수의 태그된 명령을 저장하며, 상기 명령을 정렬하는 기능을 더 구비하는 명령 큐(queue); 를 포함하는 것을 특징으로 하는 메모리 액세스(access) 제어 장치.
  2. 제1항에 있어서,
    상기 명령 큐로부터 적어도 하나의 태그된 명령을 적어도 제 2의 통신 채널에 전달하는 전개와 번역 논리(unroll and translation logic)를 더 포함하는 것을 특징으로 하는 메모리 액세스(access) 제어 장치.
  3. 제 2항에 있어서,
    적어도 하나의 메모리와 연결되도록 설정되어 있는 복수의 데이터 버퍼(buffer)를 더 포함하는 것을 특징으로 하는 메모리 액세스(access) 제어 장치.
  4. 제 3항에 있어서,
    상기 복수의 데이터 버퍼는 상기 제 2 통신 채널과 연결되도록 설정되어 있는 것을 특징으로 하는 메모리 액세스(access) 제어 장치.
  5. 제 1항에 있어서,
    상기 태그 번호는 태그된 명령이 그룹화 되도록 하여, 복수의 태그 그룹을 형성하는 것을 특징으로 하는 메모리 액세스(access) 제어 장치.
  6. 제 5항에 있어서,
    상기 적어도 하나의 플래그는 제 1 플래그와 제 2 플래그를 더 포함하는 것을 특징으로 하는 메모리 액세스(access) 제어 장치.
  7. 제 6항에 있어서,
    상기 제 1 플래그는 임베드된 펜스(fence) 플래그를 구비하는 적어도 하나의 명령보다 우선하여 지시된 모든 명령이 실행될 때까지 지시된 제 1 태그 그룹에 임베드된 펜스 플래그를 구비하는 적어도 하나의 명령의 실행을 막기 위한 펜스 플래그를 더 포함하는 것을 특징으로 하는 메모리 액세스(access) 제어 장치.
  8. 제 6항에 있어서,
    상기 제 2 플래그는 장벽 플래그가 임베드된 적어도 하나의 명령 후에 지시된 제 1 태그 그룹 내의 이어지는 명령의 실행을 막기 위한 장벽 플래그를 더 포함하는 것을 특징으로 하는 메모리 액세스(access) 제어 장치.
  9. 제 1항에 있어서,
    상기 프로세서는 태그 그룹에 관계없이, 적어도 장벽 명령 후에 지시된 어떤 이어지는 명령의 실행을 막기 위한 장벽 명령을 지시할 수 있는 능력을 더 포함하는 것을 특징으로 하는 메모리 액세스(access) 제어 장치.
  10. 메모리 액세스(access) 제어 방법에 있어서,
    프로세서로부터 DMA 제어기에 제 1 명령을 수신하여 메모리 작동을 수행하는 단계;
    상기 제 1 명령에 플래그를 임베드하여 임베드된 플래그를 생성하는 단계;
    상기 제 1 명령에 태그 번호를 태그하는 단계;
    상기 제 1 명령을 명령 목록에 큐(queue)하는 단계;
    상기 명령 목록을 적어도 상기 DMA 제어기의 엔트리 순서에 기초하여, 또한 적어도 상기 임베드된 플래그에 기초하여 정렬하는 단계;
    상기 정렬 단계에서 정렬된 순서에 따라 상기 명령 목록을 수행하는 단계; 를 포함하는 것을 특징으로 하는 메모리 액세스(access) 제어 방법.
  11. 제 10항에 있어서,
    동일한 태그 번호를 구비하는 명령을 태그 그룹에 관련시키는 단계를 더 포함하는 것을 특징으로 하는 메모리 액세스(access) 제어 방법.
  12. 제 11항에 있어서,
    상기 플래그는, 임베드된 펜스 플래그를 구비하는 적어도 하나의 명령보다 우선하여 지시된 모든 명령이 실행될 때까지 지시된 제 1 태그 그룹에 임베드된 펜스 플래그를 구비하는 적어도 하나의 명령의 실행을 막기 위한 펜스 플래그를 더 포함하는 것을 특징으로 하는 메모리 액세스(access) 제어 방법.
  13. 제 10항에 있어서,
    상기 플래그는 장벽 플래그가 임베드된 적어도 하나의 명령 후에 지시된 어떤 이어지는 명령의 실행을 막기 위한 장벽 플래그를 더 포함하는 것을 특징으로 하는 메모리 액세스(access) 제어 방법.
  14. 메모리 액세스(access) 제어 방법에 있어서,
    프로세서로부터 DMA 제어기에 제 1 명령을 수신하여 메모리 작동을 수행하는 단계;
    상기 제 1 명령에 태그 번호를 태그하는 단계;
    상기 제 1 명령을 명령 목록에 큐(queue)하는 단계;
    태그 그룹에 관계없이, 장벽 명령 후에 지시된 어떤 이어지는 명령의 실행을 막기 위한 장벽 명령을 지시하는 단계;
    상기 명령 목록을 정렬하는 단계; 및
    상기 정렬 단계에서 정렬된 순서에 따라 상기 명령 목록을 수행하는 단계; 를 포함하는 것을 특징으로 하는 메모리 액세스(access) 제어 방법.
  15. 메모리 액세스 제어를 위한 컴퓨터 프로그램을 수록하는 기록 매체로서,
    상기 컴퓨터 프로그램은,
    프로세서로부터 DMA 제어기에 제 1 명령을 수신하여 메모리 작동을 수행하기 위한 컴퓨터 프로그램 코드;
    상기 제 1 명령에 플래그를 임베드하여 임베드된 플래그를 생성하기 위한 컴퓨터 프로그램 코드;
    상기 제 1 명령에 태그 번호를 태그하기 위한 컴퓨터 프로그램 코드;
    명령 목록에 상기 제 1 명령을 큐(queue)하기 위한 컴퓨터 프로그램 코드;
    상기 DMA 제어기 및 임베드된 플래그의 엔트리 순서에 기초하여 상기 명령 목록을 정렬하기 위한 컴퓨터 프로그램 코드; 및
    순차적으로 정렬된 상기 명령 목록을 수행하기 위한 컴퓨터 프로그램 코드; 를 포함하는 것을 특징으로 하는 기록 매체.
  16. 제 15항에 있어서,
    상기 컴퓨터 프로그램은 명령을 태그 그룹 안에서 동일한 태그 번호와 관련시키는 컴퓨터 프로그램 코드를 더 포함하는 것을 특징으로 하는 기록 매체.
  17. 제 16항에 있어서,
    상기 플래그는 임베드된 펜스 플래그를 구비하는 적어도 하나의 명령보다 우선하여 지시된 모든 명령이 실행될 때까지 지시된 제 1 태그 그룹에 임베드된 펜스 플래그를 구비하는 적어도 하나의 명령의 실행을 막기 위한 펜스(fence) 플래그를 더 포함하는 것을 특징으로 하는 기록 매체.
  18. 제 15항에 있어서,
    상기 플래그는 장벽 플래그가 임베드된 적어도 하나의 명령 후에 지시된 어떤 이어지는 명령의 실행을 막기 위한 장벽 플래그를 더 포함하는 것을 특징으로 하는 기록 매체.
  19. 메모리 액세스 제어를 위한 컴퓨터 프로그램을 수록하는 기록 매체로서,
    상기 컴퓨터 프로그램은,
    프로세서로부터 DMA 제어기에 제 1 명령을 수신하여 메모리 작동을 수행하기 위한 컴퓨터 프로그램 코드;
    상기 제 1 명령에 태그 번호를 태그하기 위한 컴퓨터 프로그램 코드;
    명령 목록에 상기 제 1 명령을 큐(queue)하기 위한 컴퓨터 프로그램 코드;
    태그 그룹에 관계없이, 장벽 명령 후에 지시된 어떤 이어지는 명령의 실행을 막기 위한 장벽 명령을 지시하는 컴퓨터 프로그램 코드;
    상기 명령 목록을 정렬하기 위한 컴퓨터 프로그램 코드; 및
    순차적으로 정렬된 상기 명령 목록을 실행하기 위한 컴퓨터 프로그램 코드; 를 포함하는 것을 특징으로 하는 기록 매체.
KR1020067013085A 2004-07-15 2005-07-06 비순차적인 dma 명령 큐에서 명령 순서 형성 KR100827510B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/891,772 2004-07-15
US10/891,772 US7243200B2 (en) 2004-07-15 2004-07-15 Establishing command order in an out of order DMA command queue

Publications (2)

Publication Number Publication Date
KR20060132856A KR20060132856A (ko) 2006-12-22
KR100827510B1 true KR100827510B1 (ko) 2008-05-06

Family

ID=35478627

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067013085A KR100827510B1 (ko) 2004-07-15 2005-07-06 비순차적인 dma 명령 큐에서 명령 순서 형성

Country Status (9)

Country Link
US (1) US7243200B2 (ko)
EP (1) EP1711899B1 (ko)
JP (1) JP4553936B2 (ko)
KR (1) KR100827510B1 (ko)
CN (1) CN100504827C (ko)
AT (1) ATE407403T1 (ko)
DE (1) DE602005009494D1 (ko)
TW (1) TWI294573B (ko)
WO (1) WO2006006084A2 (ko)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060090015A1 (en) * 2004-10-26 2006-04-27 Bradfield Travis A Pipelined circuit for tag availability with multi-threaded direct memory access (DMA) activity
US20060129764A1 (en) * 2004-12-09 2006-06-15 International Business Machines Corporation Methods and apparatus for storing a command
US7774512B2 (en) * 2005-02-08 2010-08-10 Sony Computer Entertainment Inc. Methods and apparatus for hybrid DMA queue and DMA table
US7596670B2 (en) * 2005-11-30 2009-09-29 International Business Machines Corporation Restricting access to improve data availability
GB2433333B (en) * 2005-12-13 2011-07-13 Advanced Risc Mach Ltd Distributed direct memory access provision within a data processing system
US8285923B2 (en) * 2008-12-08 2012-10-09 Western Digital Technologies, Inc. Disk drive and method using native command queuing tags to identify logical block size and implement protection information
US8627017B2 (en) * 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
GB2469299B (en) * 2009-04-07 2011-02-16 Imagination Tech Ltd Ensuring consistency between a data cache and a main memory
US8316219B2 (en) 2009-08-31 2012-11-20 International Business Machines Corporation Synchronizing commands and dependencies in an asynchronous command queue
US9779057B2 (en) 2009-09-11 2017-10-03 Micron Technology, Inc. Autonomous memory architecture
US8631284B2 (en) * 2010-04-30 2014-01-14 Western Digital Technologies, Inc. Method for providing asynchronous event notification in systems
US8762682B1 (en) 2010-07-02 2014-06-24 Western Digital Technologies, Inc. Data storage apparatus providing host full duplex operations using half duplex storage devices
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US9858241B2 (en) * 2013-11-05 2018-01-02 Oracle International Corporation System and method for supporting optimized buffer utilization for packet processing in a networking device
JP5730733B2 (ja) * 2011-09-28 2015-06-10 京セラドキュメントソリューションズ株式会社 情報処理装置及び情報処理方法
US9348775B2 (en) 2012-03-16 2016-05-24 Analog Devices, Inc. Out-of-order execution of bus transactions
JP2013242766A (ja) * 2012-05-22 2013-12-05 Denso Corp リクエスト処理装置
US9288257B2 (en) * 2013-05-01 2016-03-15 International Business Machines Corporation Managing file transfer commands
US9779138B2 (en) 2013-08-13 2017-10-03 Micron Technology, Inc. Methods and systems for autonomous memory searching
US10003675B2 (en) 2013-12-02 2018-06-19 Micron Technology, Inc. Packet processor receiving packets containing instructions, data, and starting location and generating packets containing instructions and data
US20160092123A1 (en) * 2014-09-26 2016-03-31 Pankaj Kumar Memory write management in a computer system
US20160092118A1 (en) * 2014-09-26 2016-03-31 Intel Corporation Memory write management in a computer system
US10489158B2 (en) 2014-09-26 2019-11-26 Intel Corporation Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores
US9715464B2 (en) * 2015-03-27 2017-07-25 Microsoft Technology Licensing, Llc Direct memory access descriptor processing
US9584378B1 (en) 2015-12-22 2017-02-28 International Business Machines Corporation Computer-implemented command control in information technology service environment
US10534540B2 (en) * 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol
US10223307B2 (en) 2017-06-15 2019-03-05 International Business Machines Corporation Management of data transaction from I/O devices
KR102262209B1 (ko) * 2018-02-09 2021-06-09 한양대학교 산학협력단 더미 입출력 요청을 이용한 배리어 명령 전달 방법 및 그 장치
EP4081898A1 (en) * 2020-01-17 2022-11-02 Huawei Technologies Co., Ltd. A system and method for optimizing time overhead in multi-core synchronization
CN111522511B (zh) * 2020-04-22 2022-04-22 杭州宏杉科技股份有限公司 命令处理方法及装置
US11579801B2 (en) * 2020-06-09 2023-02-14 Samsung Electronics Co., Ltd. Write ordering in SSDs
WO2023235003A1 (en) * 2022-06-02 2023-12-07 Micron Technology, Inc. Command fencing for memory-based communication queues

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050027903A1 (en) * 2003-07-31 2005-02-03 Internationl Business Machines Corporation Non-fenced list DMA command mechanism

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0184791A1 (en) * 1984-12-07 1986-06-18 Nec Corporation Information processing device capable of rapidly processing instructions of different groups
US5481694A (en) * 1991-09-26 1996-01-02 Hewlett-Packard Company High performance multiple-unit electronic data storage system with checkpoint logs for rapid failure recovery
JPH05120242A (ja) * 1991-10-30 1993-05-18 Toshiba Corp データ処理装置
JP3276516B2 (ja) * 1994-09-13 2002-04-22 株式会社リコー 三次元形状生成装置
JPH10105347A (ja) * 1996-10-02 1998-04-24 Hitachi Ltd ディスクアレイ制御システム
US6088772A (en) * 1997-06-13 2000-07-11 Intel Corporation Method and apparatus for improving system performance when reordering commands
US6047334A (en) * 1997-06-17 2000-04-04 Intel Corporation System for delaying dequeue of commands received prior to fence command until commands received before fence command are ordered for execution in a fixed sequence
EP0889413A3 (en) * 1997-06-30 2002-03-27 Sun Microsystems, Inc. System and method for interconnecting personal computer in computer workstation
US6038646A (en) * 1998-01-23 2000-03-14 Sun Microsystems, Inc. Method and apparatus for enforcing ordered execution of reads and writes across a memory interface
JP2000040057A (ja) * 1998-07-23 2000-02-08 Nec Eng Ltd 計算機システム、バッファ制御装置及び転送方法
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
JP2002196975A (ja) * 1999-07-12 2002-07-12 Matsushita Electric Ind Co Ltd データ処理装置
US6513109B1 (en) * 1999-08-31 2003-01-28 International Business Machines Corporation Method and apparatus for implementing execution predicates in a computer processing system
DE60005860T2 (de) * 2000-01-03 2004-08-05 Advanced Micro Devices, Inc., Sunnyvale Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle
US6694427B1 (en) * 2000-04-20 2004-02-17 International Business Machines Corporation Method system and apparatus for instruction tracing with out of order processors
JP4546629B2 (ja) * 2000-05-25 2010-09-15 株式会社日立製作所 記憶システム、記憶システムの応答方法及び記録媒体
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
US6594736B1 (en) * 2000-08-15 2003-07-15 Src Computers, Inc. System and method for semaphore and atomic operation management in a multiprocessor
JP2002140234A (ja) * 2000-11-02 2002-05-17 Hitachi Ltd キャッシュ装置
US7398376B2 (en) * 2001-03-23 2008-07-08 International Business Machines Corporation Instructions for ordering execution in pipelined processes
JP3402600B2 (ja) * 2001-12-03 2003-05-06 株式会社リコー 三次元形状生成装置
JP2004129129A (ja) * 2002-10-07 2004-04-22 Seiko Epson Corp 通信制御回路、通信制御装置、マイクロコンピュータ及び電子機器
US7421694B2 (en) * 2003-02-18 2008-09-02 Microsoft Corporation Systems and methods for enhancing performance of a coprocessor
US7073043B2 (en) * 2003-04-28 2006-07-04 International Business Machines Corporation Multiprocessor system supporting multiple outstanding TLBI operations per partition
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
US7480754B2 (en) * 2003-06-27 2009-01-20 Seagate Technology, Llc Assignment of queue execution modes using tag values
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
US20050027903A1 (en) * 2003-07-31 2005-02-03 Internationl Business Machines Corporation Non-fenced list DMA command mechanism

Also Published As

Publication number Publication date
US7243200B2 (en) 2007-07-10
JP4553936B2 (ja) 2010-09-29
WO2006006084A8 (en) 2006-04-20
TWI294573B (en) 2008-03-11
KR20060132856A (ko) 2006-12-22
DE602005009494D1 (de) 2008-10-16
EP1711899A2 (en) 2006-10-18
WO2006006084A2 (en) 2006-01-19
EP1711899B1 (en) 2008-09-03
US20060015652A1 (en) 2006-01-19
CN101031897A (zh) 2007-09-05
TW200617680A (en) 2006-06-01
CN100504827C (zh) 2009-06-24
WO2006006084A3 (en) 2006-07-20
JP2007529833A (ja) 2007-10-25
ATE407403T1 (de) 2008-09-15

Similar Documents

Publication Publication Date Title
KR100827510B1 (ko) 비순차적인 dma 명령 큐에서 명령 순서 형성
US8135942B2 (en) System and method for double-issue instructions using a dependency matrix and a side issue queue
JP4678623B2 (ja) 非対称型異種混合マルチプロセッサ環境(asymmetric heterogeneous multiprocessor environment)におけるメモリバリア要素(Primitive)
CN1294484C (zh) 利用重新调度的重放队列中断处理器中的重放依赖关系循环
US9830189B2 (en) Multi-threaded queuing system for pattern matching
US20080189501A1 (en) Methods and Apparatus for Issuing Commands on a Bus
US20130262840A1 (en) Instruction merging optimization
US9513916B2 (en) Instruction merging optimization
US11507386B2 (en) Booting tiles of processing units
US20100058035A1 (en) System and Method for Double-Issue Instructions Using a Dependency Matrix
EP3407184A2 (en) Near memory computing architecture
US6518973B1 (en) Method, system, and computer program product for efficient buffer level management of memory-buffered graphics data
KR20140131781A (ko) 메모리 제어 장치 및 방법
US20220283847A1 (en) Task dispatch
US20080282050A1 (en) Methods and arrangements for controlling memory operations
US8589735B2 (en) Creating randomly ordered fields while maintaining the temporal ordering based on the value of the fields
US20080077777A1 (en) Register renaming for instructions having unresolved condition codes
KR20210096062A (ko) 예외 발생 이벤트 처리 시스템 및 방법
US12073222B2 (en) Instruction ordering
US20080282051A1 (en) Methods and arrangements for controlling results of memory retrival requests
US11093282B2 (en) Register file write using pointers
US10990443B2 (en) Utilization profiling and scheduling operations using thread specific execution units usage of a multi-core multi-threaded processor
CN118170439A (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: 20130404

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140401

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180418

Year of fee payment: 11