KR20010102285A - 직접 메모리 접근 촉진 방법 및 장치 - Google Patents

직접 메모리 접근 촉진 방법 및 장치 Download PDF

Info

Publication number
KR20010102285A
KR20010102285A KR1020017010598A KR20017010598A KR20010102285A KR 20010102285 A KR20010102285 A KR 20010102285A KR 1020017010598 A KR1020017010598 A KR 1020017010598A KR 20017010598 A KR20017010598 A KR 20017010598A KR 20010102285 A KR20010102285 A KR 20010102285A
Authority
KR
South Korea
Prior art keywords
data
dma engine
memory
buffer
dma
Prior art date
Application number
KR1020017010598A
Other languages
English (en)
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 KR20010102285A publication Critical patent/KR20010102285A/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
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)
  • Multi Processors (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

연산 시스템에서 집적 메모리 접근을 촉진시키기 위한 방법 및 장치가 공개된다. 한 실시예에서, 연산 시스템(100)은 중앙 처리 장치(CPU)(114)와 메인 시스템 메모리(106)를 가진다. CPU(114)에 연결되는 DMA 엔진(110)은 바람직한 데이터 세트를 식별하는 제 1 DMA 처리를 실행한다. 식별되면, DMA 엔진(110)은 식별된 바람직한 데이터 세트를 메인 시스템 메모리(106)로부터 메모리 세그먼트(115)로 이동시키고, 이때 상기 메모리 세그먼트는 메인 시스템 메모리(106)보다 프로세서(114)에 시간상 가깝다.

Description

직접 메모리 접근 촉진 방법 및 장치{METHODS AND APPARATUS FOR FACILITATING DIRECT MEMORY ACCESS}
여러 장치 중에서, 패킷 지향 객체 상에서의 처리를 실행하기 위해 고성능 프로세서가 사용된다. 이것의 예로는 이더넷-ATM 프로토콜 브리지를 들 수 있다. 이 상황에서, 프로세서는 데이터 페이로드(payload)를 포함하는 일부 래퍼(wrapper)를 검사하고 수정하기 위해 호출된다. 데이터 전송 구조를 설명하자면, 먼저 데이터가 증착되고, 이어서, 데이터가 메인 메모리로부터 나온다. 불행하게도, 이는 마이크로프로세서 지향 처리에 반갑지 않은 일이다. 왜냐하면, 고성능 CPU는 메인 메모리보다 고속이기 때문이다. 메모리 접근 완료를 기다리고자 프로세서가 사이클의 50%를 소모하는 것이 이런 종류의 장치에는 드문 일이 아니다. 최고성능의 마이크로프로세서는 캐시 메모리 세트에 의해 메인 메모리로부터 분리되기 때문에, 캐시 일부를 수동으로(즉, 프로그램 제어로) 무효화시킴으로서 장치의 속도면 성능을 개선시킬 수 있다. 이때, 새 패킷으로부터 적절한 데이터가 상기 캐시부분으로 판독될 것이다.
이 기술이 성능을 크게 개선시킬 수 있으나, 이는 프로세서 및 캐시 구조에 관한 것으로서 프로그래머에 의한 하부 하드웨어의 폭넓은 이해를 필요로한다. 더욱이, 최적화된 코드는 이전 것을 필요로하지 않고, 따라서 매 새 제품마다 새로운 최적화가 이루어진다.
따라서, 고속 처리 환경에서 메모리에 접근하기 위해 플랫폼에 독립적인 기술 향상이 요망된다.
본 발명은 연산 시스템에 관한 것이고, 특히 데이터 처리 시스템에서 메모리의 직접 메모리 접근에 관한 것이다. 보다 특히, 본 발명은 고속 프로세서에 의해 메모리 장치의 직접 접근을 촉진시키는 방법 및 장치를 지향한다.
도 1은 발명의 한 실시예에 따르는 연산 시스템.
도 2는 IEEE 802.3(1985) 표준에 따르는 대표 이더넷 네트워크에서 전송되는 데이터 패킷의 포맷을 도시하는 도면.
도 3은 발명의 한 실시예에 따르는 연산 시스템의 작동을 기술하는 과정의 순서도.
도 4는 발명의 한 실시예에 따라 도 3에 도시되는 식별 구현의 순서도.
도 5는 본 발명의 구현에 적절한 범용 컴퓨터 시스템의 도면.
본 발명의 목적에 따라, 연산 시스템에서 직접 메모리 접근을 촉진시키기 위한 장치 및 방법이 공개된다. 한 실시예에서, 연산 시스템은 중앙 처리 장치(CPU)와 메인 시스템 메모리를 가지며, CPU에 연결된 DMA 엔진은 바람직한 데이터 세트를 식별하는 DMA 처리를 먼저 실행한다. 식별된 후, DAM 엔진은 바람직한 식별 데이터 세트를 메인 시스템 메모리로부터, 메인 시스템 메모리보다 프로세서에 시간상 더 가까운 메모리 세그먼트로 이동시킨다.
선호되는 실시예에서, 메모리 세그먼트는 프로세서에 통합되는 스크래치 패드형 메모리이다.
또다른 실시예에서, 데이터 저장을 위해 배열되는 메인 시스템 메모리와 중앙 처리 장치(CPU)를 가지는 연산 시스템에서, 메인 메모리로부터 메인 시스템 메모리보다 시간상 CPU에 가까운 메모리 세그먼트로 바람직한 데이터 세트를 이동시키는 방법이 기술된다. 바람직한 데이터 세트를 포함하는 다수의 데이터 세트가 메인 시스템 메모리에 포함되는 버퍼풀(buffer pool) 사이에 분포된다. 바람직한 데이터 세트는 버퍼풀의 일부인 관련 국부 버퍼에 저장되는 것으로 식별된다. 식별된 바람직한 데이터 세트는 국부 버퍼로부터 인출(fetch)되고, 국부 버퍼로부터 메인 시스템 메모리보다 CPU에 시간상 가까운 메모리 세그먼트로 이동한다.
선호되는 실시예에서, 메모리 세그먼트는 프로세서에 통합되는 스크래치 패드형 메모리다.
메모리 접근에서 본질적인 개선사항은 하드웨어 기반의 DMA를 이용함으로서 달성될 수 있다. 이는 메인 메모리보다 프로세서에 시간상 가까운 고속 스크래치 패드 메모리나 캐시 메모리로 적절한 데이터를 이동시킨다. 캐시 메모리가 사용될 때, 프로세서는 마스터에 의해 메모리에 대한 데이터 기록의 스누프 히트의 갱신 작동을 지원한다. 그러나, 고속 스크래치 패드 메모리가 사용될 경우, DMA는 메인메모리로부터 스크래치 패드 메모리까지 메모리간 전송을 실행한다. 어느 경우에도, 데이터 패킷이 CPU에 의해 처리되기 전에 데이터 패킷이 메모리에 축적됨에 따라 특별한 DMA 채널이 요구된다. 이는 데이터가 초기에 입/출력 장치로부터 들어오기 때문에 캐시나 고속 스크래치 패드에 데이터가 위치할 경우, 다량의 캐시나 스크래치 패드가 소모되어 다른 잠재적으로 가치있는 데이터나 코드를 밀어낸다. 충분한 수의 패킷이 대기해 있을 경우, 캐시나 스크래치 패드의 오버플러우가 가능하여, 결국 성능에 손실을 야기한다. 따라서, 선호되는 실시예에서, 창의적인 DMA 처리는 핑퐁-형 버퍼 배열로 데이터를 인출함으로서 DMA 인출 작동을 실행한다. 이러한 배열에서, 두 개 이상의 스크래치 패드나 캐시 세그먼트가 사용되어, 한 버퍼나 캐시 세그먼트로 데이터가 인출되고 다른 버퍼나 캐시 세그먼트에서 프로세서가 작동한다.
선호되는 실시예에서, 적절한 데이터 사례가 패킷 시작과 패킷 크기로부터의 오프셋에 의해 규정된다. 오프셋 부분이 버퍼 크기로 나누어질 때, 정부부분은 가로질러야할 버퍼의 수를 나타내고, 나머지는 버퍼 자체로의 오프셋을 나타낸다.
도 1에서, 발명의 한 실시예에 따르는 연산 시스템(100)이 도시된다. 연산 시스템(100)은 DMA 채널(104)을 통해 메인 메모리(106)에 연결되는 입/출력 장치(102)를 포함한다. 메인 메모리(106)는 데이터 및 코드 저장을 위해 배열되는 DRAM으로 형성되는 것이 일반적이다. 메인 메모리(106)는 하드웨어나 소프트웨어로 구성되는 DMA 엔진(110)을 포함하는 DMA 제어기 유닛(108)에 연결된다. DMA 제어기 유닛(108)은 여러 데이터 버퍼(112-1 ~ 112-n)를 포함한다. 여기서는 (110-1과110-2)만이 도시된다. 설명중인 실시예에서, 각각의 데이터 버퍼(112)는 DMA 엔진(110)에 의해 결정되는 바와 같이 사전 인출된 데이터나 데이터 패킷의 일부를 저장하도록 배열된다. 선호되는 실시예에서, 버퍼(112)는 다수의 데이터 패킷이 버퍼(112)에 누적되는 것을 방지하기 위해 핑퐁-형 배열에서 연결된다. 이 방식으로, DMA 채널(104)의 파이프라이닝이 전체 프로세서 출력량을 개선시킨다.
설명되는 실시예에서, 사전인출된 데이터는 L2형 캐시(116) 메모리를 가지는 프로세서 유닛(114)에서 얻을 수 있다. 선호되는 실시예에서, 인출 데이터는 프로세서(114)의 일부로 통합되는 메모리 세그먼트(115)에 저장된다. 캐시 메모리가 사용되는 경우에, 공유 더티 데이터가 버스로 방송될 때 버스로부터 공유 데이터의 사본을 갱신할 수 있어야 한다.
도 2는 IEEE 802.3(1985) 표준에 따르는 이더넷 네트워크에서 전송되는 데이터 포맷을 도시한다. 한 개의 패킷은 8바이트 길이의 프리앰블(202)을 포함한다. 프리앰블의 마지막 바이트(또는 옥테트)는 시작 프레임 구분문자(start frame delimiter)이다(도시되지 않음). 시작 프레임 구분문자 다음에, 6바이트의 수신지 어드레스(DA)(204)가 사용되어 이더넷 패킷을 수신할 노드를 식별한다. DA(204) 다음에, 6바이트 길이의 소스 어드레스(SA)(206)가 사용되어, 전송된 패킷 상에서 직접 전송 노드를 식별한다. SA(206) 다음에, 길이/종류 필드(L/T)(208)(2바이트)가 사용되어, 이어지는 데이터 필드의 길이와 종류를 나타낸다. 당 분야에 공지된 바와 같이, 길이가 제공될 경우 패킷은 802.3 패킷으로 분류되고, 종류 필드가 제공될 경우 패킷은 이더넷 패킷으로 분류된다.
아래 기술되는 LLC 층에 의해 암호화될 수 있는 정보를 데이터 필드가 포함하기 때문에, 그 다음의 데이터 필드는 LLC 데이터(210)로 분류된다. LLC 데이터(210) 다음에 패드(212)가 도시된다. 당 분야에 공지된 바와 같이, 주어진 이더넷 패킷이 64바이트 미만일 경우, 적어도 64바이트로 이더넷 패킷 크기를 증가시키기 위하여 대부분의 매체 접근 제어기는 LLC 데이터(210) 다음에 1과 0의 패딩을 추가할 것이다. 패드(212)가 추가된다면, 필요할 경우, 수신 단부에서 붕괴 패킷을 점검하기 위해, 패킷 단부에 4바이트 순환 여유 검사(CRC) 필드(214)가 이어진다. "프레임"은 패킷 내 포함된 데이터의 일부를 지칭한다.
일반적으로 이더넷-형 네트워크에서, 프로세서(114)는 이더넷 프레임(200)의 일부(소스 어드레스 데이터 필드 SA(206)나 수신지 어드레스 필드 DA(204))에만 관심을 가진다. 이 경우에, DMA 엔진(110)은 특정 이더넷 프레임을 분석할 것이고, 관련 기술어 세트 등에 의해 논리적으로 링크된 버퍼풀(118)에 포함된 임의 버퍼에 분석 결과를 저장할 것이다.
도시되지 않으나, 달리 알려진 TCP(전송 제어 프로토콜)라는 패킷형 데이터 포맷은 인터넷을 통해 컴퓨터 사이에 메시지 유닛 형태로 데이터를 전송하기 위해 인터넷 프로토콜과 함께 사용되는 방법(프로토콜)이다. IP가 데이터의 실제 운송을 좌우하지만, TCP는 인터넷을 통한 효율적 운송을 위해 메시지를 분해한 데이터 개별 유닛(패킷)을 기억한다. 가령, HTML 파일이 웹서버로부터 클라이언트로 전송될 때, 상기 서버 내의 전송 제어 프로토콜(TCP) 프로그램층은 파일을 한 개 이상의 패킷으로 분할하고, 패킷에 번호를 붙여, 이들을 개별적으로 IP 프로그램층으로 보낸다.
각각의 패킷이 동일한 수신지 IP 어드레스를 가지지만, 네트워크를 통해 달리 이동할 수도 있다. 다른 단부(클라이언트 프로그램)에서, TCP는 개별 패킷을 다시 모으고, 클라이언트에 보내기 위해 이들이 도착할때까지 기다린다.TCP는 연결 지향 프로토콜로 알려져 있다. 연결 지향 프로토콜이란, 각 단부에서 응용 프로그램에 의해 교환될 메시지들이 교환되는 시간까지 연결이 구축되고 유지되는 것을 의미한다. TCP는 IP가 관리하는 패킷으로 메시지가 나누어지는 것을 보장할 책임이 있고, 패킷을 다시 조립하여 다른 단부의 완전한 메시지로 만드는 것을 보장할 책임이 있다.
이더넷 프레임의 경우에, TCP 프로그램층과 관련된 데이터 패킷은 소스 및 수신지 어드레스에 관련된 모든 정보를 포함하는 TCP 헤더와 관련될 것이다.
이더넷 프레임(200)의 경우와 비슷한 방식으로, TCP 기반 통신 시스템에서, 프로세서(114)가 TCP 헤더 일부(가령, 수신지 어드레스)에만 관심있기 때문에, DMA 엔진(110)은 데이터를 여러 부분으로 나누고, 그 일부만이 현 프로세서 작업에 적절하다. 데이터 패킷이 상대적으로 클 수 있기 때문에, DMA 엔진(110)은 특정 메모리 관리 기법에 의해 논리적으로 규정되는 버퍼풀(118) 형태를 취하는 일련의 버퍼로 유입 데이터를 분배한다. 따라서, 패킷들이 여러 버퍼에 걸칠 수 있고, 그래서 래퍼(wrapper)로부터의 적절한 데이터가 임의 버퍼에 위치할 수 있다. 데이터 패킷을 인출하기 위해, 버퍼는 논리적으로 링크되어야 한다. 버퍼 링크는 가령, 기술어 링, 기술어의 링크 목록, 또는 단순히 버퍼의 링크 목록과 같이 여러 방식으로 시행될 수 있다. 사전 인출 작용에서, DMA 엔진은 적절한 데이터의 위치에 목록을 "걸으면서 내려오게"할 수 있어야 하고, 이 데이터만을 전송하여야 한다. 데이터의 다중 사례가 필요할 경우, DMA 엔진은 다음 사례로 계속되어야 하고, 스크래치 패드 버퍼나 캐시 세그먼트로 이를 전송시키며, 그리고 필요할 경우 다음 사례로 진행한다.
DMA 엔진(110)에 의해 표시되는 바와 같이, 데이터는 기술어를 바탕으로 프로세서(114)에 의해 요구되는 바와 같이 버퍼풀(118)의 버퍼 중 특정 하나로부터 사전인출된다. 상기 기술어는 특정 버퍼를 거기 저장된, 그리고 버퍼(112-2)에 저장된 데이터부분에 링크시키고, 이는 프로세서(114)에서 가용하다. 버퍼풀(118)의 버퍼 각각을 링크시킴으로서, DMA 엔진(110)은 다음 버퍼를 결정하기 위해 포인터를 사용할 수 있고, 이를 위해 데이터가 사전인출되고 버퍼(112-1)에 저장되어야 한다. 이는 핑퐁-형 관리 기법에서 프로세서(114)에서 가용하다.
일부 실시예에서, 스크래치 패드 메모리 대신에 프로세서 캐시에 바람직한 데이터를 제공하는 것이 가능하다. 이러한 기법은 프로세서 캐시가 전면 버스로부터 캐시 라인의 대체를 지원할 경우 가능하다. 한 예로, "일리노이즈" 스누핑 프로토콜이라고 알려진 한 프로토콜과 같은 스누핑 프로토콜이 사용될 수 있다. 이 특정 프로토콜은 국부 캐시를 이용하여 또다른 캐시나 DMA 엔진(110)으로부터의 입력을 갱신한다. 이 구현에서, 프로그래머는 공유 메모리 영역을 규정하고, 상기 공유 메모리 영역은 초기엔 캐시로의 프로그램 인출에 의해 유도되고, 이어서 DMA 엔진(110)에 의해 갱신된다. 데이터가 갱신된다면, 메인 메모리에 명백하게 기록될것이고, 상기 DMA 처리가 캐시로부터 코히어런시 갱신을 수용할 경우, 또다른 DMA 처리에 제공될 것이다.
또다른 실시예에서, 입/출력 사건은 버퍼풀(120) 상에 DMA 채널(104)을 분포시킴으로서 DMA 채널(104)이 시스템 메모리(106)로 데이터를 불러오게 한다. 그후, 프로세서(114)는 데이터 패킷의 형태를 취하는 특정 데이터 세트로부터 바람직한 데이터라 부리는 선택된 데이터에서 처리 작업을 시작한다. 프로세서(114)에 의한 현 패킷 처리와 함께 인출이 발생하도록 메인 메모리로부터 메모리 세그먼트(115)의 위치까지 처리될 다음 패킷으로부터 바람직한 데이터 세트를 인출하기 위해 또다른 DMA 채널을 개시한다. 이 방식으로, 제 2 DMA 채널이 바람직한 데이터를 메인 메모리(106)로부터의 지정 위치로 인출하고, 그후 인출 작업 완료시 프로세서(114)에 이를 알린다.
도 3에서, 연산 시스템(300)의 작동을 설명하는 처리과정(300)이 발명의 한 실시예에 따라 도시된다. 처리과정(300)은 DMA 레지스터로부터 데이터에 접근하는 과정을 포함하는 DMA 처리를 프로세서가 시작함으로서 개시된다(단계302). 단계304에서, 현 데이터 패킷에 대해 기술어가 검색되고, 이후 단계 305에서, 바람직한 데이터와 연관된 적절한 데이터 오프셋이 연산된다. 그후 단계 306에서, 바람직한 데이터를 내장하는 국부 버퍼가 식별된다. 한 실시예에서, 바람직한 데이터를 내장하는 국부 버퍼는 도 4에 추가 설명되는 바와 같이 "포인터 워크(pointer walk)" 처리를 통해 식별된다. 바람직한 국부 버퍼가 식별되면, 식별된 국부 버퍼의 데이터 오프셋이 단계308에서 계산되고, 그후 단계310에서, 바람직한 데이터 패킷이 선택된 캐시 요소(310)로 이동한다. 선호되는 실시예에서, 캐시 요소는 메인 메모리보다 프로세서에 시간상 더 가깝다. 단계312에서, 결정된 오프셋이 최종 오프셋인 지에 관한 결정이 행하여진다. 연산된 오프셋이 최종 오프셋이 아니라고 결정될 경우, DMA 처리를 예로 드는 단계306으로 제어가 진행된다. 그러나, 연산된 오프셋이 최종 오프셋이라고 결정될 경우, 단계 314에서 적절한 데이터가 캐시 요소로부터 검색됨을 프로세서는 통보받는다.
도 4에서, 발명의 특정한 실시예에 따라, 앞서 기술한 포인터 워크 처리를 포함하여, 식별 작동(306)의 특정 구현을 설명하는 과정(400)의 순서도가 도시된다. 앞서 기술한 식별 작동은 DMA 엔진(110)에 의해 실행되는 포인터 워크 처리를 지향하지만, 어떤 적절한 식별 처리도 발명과 함께 사용될 수 있다.
설명되는 실시예에서, 포인터 워크 처리(400)는 현재 버퍼 크기에 데이터 누산기(DPA)를 더함으로서 시작된다(단계402). 단계 404에서, DPA의 값이 바람직한 데이터 오프셋보다 큰 지를 결정한다. DPA값이 바람직한 데이터 오프셋보다 크다고 결정될 경우, 포인터 워크 처리는 단계406에서 완료된다고 결정되며, 과정(400)이 정지한다. 그렇지 않을 경우, 정당한 기술어가 기술어 체인에서 최종 기술어인 지 결정되는 단계 408로 제어가 진행된다. 정당한 기술어가 실제 최종 기술어라고 결정될 경우, 오류 플랙이 던져지는 단계 410으로 제어가 진행된다. 그렇지 않을 경우, 다음 기술어가 인출되는 단계 412로 제어가 진행되고, 그후 제어는 단계 402로 복귀한다.
도 5는 본 발명 구현에 적절한 범용 컴퓨터 시스템(500)의 도면이다. 컴퓨터시스템(500)은 주기억장치(504)(일반적으로 ROM)와 주기억장치(506)(일반적으로 RAM)를 포함하는 메모리 장치에 연결되는 프로세서(502)(중앙 처리 장치나 CPU로 불림)를 포함한다.
컴퓨터 시스템(500), 특히 CPU(502)는 당 분야에 잘 알려진 바와 같이 가상 머신을 지원하도록 배열될 수 있다. 컴퓨터 시스템(500) 상에서 지원되는 가상 머신의 한 예가 도 5를 바탕으로 아래에 기술될 것이다. 당 분야에 공지된 바와 같이, ROM은 CPU(502)에 일방향으로 데이터와 명령을 전송하도록 작동하고, RAM은 양방향으로 데이터와 명령을 전송하는 데 사용된다. CPU(502)는 가변적인 수의 프로세서를 포함할 수 있다. 주기억장치(504, 506)는 컴퓨터에 의해 판독가능한 매체를 포함할 수 있다. 대량 기억 장치인 보조기억장치(508)는 CPU(502)에 양방향으로 연결되고, 추가 데이터 기억 용량을 제공한다. 대량 기억 장치(508)는 컴퓨터 코드, 데이터, 등을 포함하여 프로그램을 저장하기 위해 사용될 수 있는 컴퓨터에 의해 판독가능한 매체이다. 일반적으로, 대량 기억 장치(508)는 하드디스크나 테이프와 같은 기억 매체로서, 주기억장치(504, 506)보다 속도가 느리다. 대량 기억 장치(508)는 자기/종이 테이프 판독기나 다른 공지 장치의 형태를 취할 수도 있다. 대량 기억 장치(508) 내에 유지되는 정보는 가상 메모리로 RAM(506)의 일부로 표준 방식으로 통합될 수 있다. CD-ROM과 같은 특정 주기억장치(504)는 CPU(502)에 단방향으로 데이터를 보낼 수 있다.
CPU(502)는 비디오 모니터, 트랙볼, 마우스, 키보드, 마이크로폰, 터치식 디스플레이 장치, 트랜스듀서 카드 판독기, 자기/종이 테이프 판독기, 태블릿, 스타일러스, 음성/필기 인식장치, 또는 그외 다른 공지 입력 장치와 같은 장치들을 포함할 수 있는 한 개 이상의 입력/출력 장치(510)에 연결된다. 마지막으로, CPU(502)는 네트워크 연결(512)을 이용하여 인터넷이나 인트라넷같은 컴퓨터나 통신 네트워크에 연결될 수 있다. 이러한 네트워크 연결로, CPU(502)는 네트워크로부터 정보를 수신할 수 있고, 앞서 기술된 방법 단계를 실행하는 과정에서 네트워크에 정보를 출력할 수 있다. CPU(502)를 이용하여 실행될 명령 순서로 나타나는 이러한 정보는 반송파로 구체화되는 컴퓨터 데이터 신호의 형태로 네트워크로부터 수신되고 네트워크로 출력될 수 있다. 앞서 기술된 장치 및 물질은 컴퓨터 하드웨어 및 소프트웨어 분야에서 친숙할 것이다.

Claims (18)

  1. 실행 명령을 이행하도록 배열되는 중앙 처리 장치(CPU)를 가지는 연산 시스템에서 CPU에 연결되는 직접 메모리 접근 엔진(DMA 엔진)으로서, 상기 엔진은 메인 시스템 메모리로부터 메인 시스템 메모리보다 프로세서에 시간상 가까운 메모리 세그먼트까지 첫 번째 바람직한 데이터 세트를 인출하기 위해 배열되는 제 1 DMA 처리를 실행하고, 상기 인출 과정은 CPU에 의한 바람직한 제 2 데이터 세트의 처리와 동시에 이루어지는 것을 특징으로 하는 DMA 엔진.
  2. 제 1 항에 있어서, 상기 DMA 엔진은 버퍼풀 사이에 분포되는 데이터를 내장하는 버퍼풀에 연결되고, 이때 분포된 데이터는 바람직한 데이터 세트를 포함하는 것을 특징으로 하는 DMA 엔진.
  3. 제 2 항에 있어서, 버퍼풀이 메인 시스템 메모리에 포함되는 것을 특징으로 하는 DMA 엔진.
  4. 제 3 항에 있어서, 분포된 데이터가 제 2 DMA 처리에 의해 입/출력 장치로부터 버퍼풀까지 전달되는 것을 특징으로 하는 DMA 엔진.
  5. 제 4 항에 있어서, 제 2 DMA 처리가 DMA 엔진에 의해 실행되는 것을 특징으로 하는 DMA 엔진.
  6. 제 5 항에 있어서, 데이터가 데이터 패킷의 형태를 취하며, 이때 데이터 패킷은 구현된 정보를 포함하는 것을 특징으로 하는 DMA 엔진.
  7. 제 6 항에 있어서, 구현된 정보가 바람직한 데이터 식별에 사용되는 것을 특징으로 하는 DMA 엔진.
  8. 제 7 항에 있어서, 데이터 패킷은 ATM 데이터 패킷이고, 구현된 정보는 ATM 헤더인 것을 특징으로 하는 DMA 엔진.
  9. 제 8 항에 있어서, 상기 제 1 처리는 적절한 데이터 패킷이 데이터 패킷 크기와 데이터 패킷 시작부로부터 제 1 오프셋 부분에 의해 규정되어, 오프셋 부분이 버퍼풀의 제 1 버퍼와 관련된 버퍼 크기로 나누어질 때, 최종 정수부는 가로질러야 하는 버퍼풀의 다수의 버퍼를 나타내고, 최종 나머지 부분은 버퍼풀 제 2 버퍼로의 제 2 오프셋 부분을 의미하는 것을 특징으로 하는 DMA 엔진.
  10. 제 6 항에 있어서, 제 1 DMA 처리는 이전에 인출된 데이터 세트 상에서의 CPU 작동과 동시에 바람직한 데이터를 인출하는 것을 특징으로 하는 DMA 엔진.
  11. 제 1 항에 있어서, DMA 엔진은 고유 메모리 스누핑 캐시 코히어런시 프로토콜을 이용하고, 이때 스누핑된 버스로부터 공유 데이터가 갱신되는 것을 특징으로 하는 DMA 엔진.
  12. 제 11 항에 있어서, 공유 메모리 스누핑 캐시 코히어런시 프로토콜은 일리노이스 프로토콜인 것을 특징으로 하는 DMA 엔진.
  13. 데이터 저장을 위한 메인 시스템 메모리와 중앙 처리 장치(CPU)를 가지는 연산 시스템에서, 메인 시스템 메모리로부터 메인 시스템 메모리보다 CPU에 시간상 가까운 메모리 세그먼트까지 바람직한 데이터 세트를 이동시키는 방법으로서, 상기 방법은,
    - 메인 시스템 메모리에 포함된 버퍼풀에 다수의 데이터 세트를 분배하고, 이때 다수의 데이터 세트는 상기 바람직한 데이터 세트를 포함하며,
    - 관련 국부 버퍼에 저장된 바람직한 데이터 세트를 식별하고, 이때 상기 국부 버퍼가 버퍼풀에 포함되며,
    - 국부 버퍼로부터 식별된 바람직한 데이터 세트를 인출하고,
    - 국부 버퍼로부터 메모리 세그먼트까지 식별된 바람직한 데이터 세트를 전달하는, 이상의 단계를 포함하는 것을 특징으로 하는 방법.
  14. 제 13 항에 있어서, 상기 방법은,
    - CPU에 의해 이동된 바람직한 세트 상에서 작동하고,
    - 작동과 동시에 제 2 국부 버퍼로부터 바람직한 제 2 데이터 세트를 인출하는, 이상의 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  15. 제 14 항에 있어서, 분포된 다수의 데이터 세트가 DMA 엔진에 의해 지향하는 바와 같이 입/출력 장치로부터 운송되는 것을 특징으로 하는 방법.
  16. 제 15 항에 있어서, 상기 데이터 세트는 바람직한 데이터 식별을 위해 DMA 엔진에 의해 사용되는 구현된 정보를 가지는 데이터 패킷인 것을 특징으로 하는 방법.
  17. 제 16 항에 있어서, 구현된 정보가 헤더인 것을 특징으로 하는 방법.
  18. 제 17 항에 있어서, 데이터 패킷이 ATM 데이터 패킷인 것을 특징으로 하는 방법.
KR1020017010598A 1999-02-22 2000-02-18 직접 메모리 접근 촉진 방법 및 장치 KR20010102285A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12102299P 1999-02-22 1999-02-22
US60/121,022 1999-02-22
PCT/US2000/004247 WO2000051004A1 (en) 1999-02-22 2000-02-18 Methods and apparatus for facilitating direct memory access

Publications (1)

Publication Number Publication Date
KR20010102285A true KR20010102285A (ko) 2001-11-15

Family

ID=22393995

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017010598A KR20010102285A (ko) 1999-02-22 2000-02-18 직접 메모리 접근 촉진 방법 및 장치

Country Status (6)

Country Link
EP (1) EP1163596A4 (ko)
JP (1) JP2002538522A (ko)
KR (1) KR20010102285A (ko)
CN (1) CN1153153C (ko)
AU (1) AU3369700A (ko)
WO (1) WO2000051004A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8634415B2 (en) 2011-02-16 2014-01-21 Oracle International Corporation Method and system for routing network traffic for a blade server
US9489327B2 (en) 2013-11-05 2016-11-08 Oracle International Corporation System and method for supporting an efficient packet processing model in a network environment
EP3066568B1 (en) * 2013-11-05 2019-09-11 Oracle International Corporation System and method for supporting efficient packet processing model and optimized buffer utilization for packet processing in a network environment
KR20190123984A (ko) 2018-04-25 2019-11-04 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
CN112506437A (zh) * 2020-12-10 2021-03-16 上海阵量智能科技有限公司 芯片、数据搬移方法和电子设备
CN114691562A (zh) * 2020-12-29 2022-07-01 中科寒武纪科技股份有限公司 用于dma操作的方法、装置、设备、集成电路芯片和板卡

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4481578A (en) * 1982-05-21 1984-11-06 Pitney Bowes Inc. Direct memory access data transfer system for use with plural processors
US4608631A (en) * 1982-09-03 1986-08-26 Sequoia Systems, Inc. Modular computer system
US5175841A (en) * 1987-03-13 1992-12-29 Texas Instruments Incorporated Data processing device with multiple on-chip memory buses
US5003465A (en) * 1988-06-27 1991-03-26 International Business Machines Corp. Method and apparatus for increasing system throughput via an input/output bus and enhancing address capability of a computer system during DMA read/write operations between a common memory and an input/output device
US5359723A (en) * 1991-12-16 1994-10-25 Intel Corporation Cache memory hierarchy having a large write through first level that allocates for CPU read misses only and a small write back second level that allocates for CPU write misses only
US5524265A (en) * 1994-03-08 1996-06-04 Texas Instruments Incorporated Architecture of transfer processor
US5603050A (en) * 1995-03-03 1997-02-11 Compaq Computer Corporation Direct memory access controller having programmable timing
US5987590A (en) * 1996-04-02 1999-11-16 Texas Instruments Incorporated PC circuits, systems and methods
US5893153A (en) * 1996-08-02 1999-04-06 Sun Microsystems, Inc. Method and apparatus for preventing a race condition and maintaining cache coherency in a processor with integrated cache memory and input/output control

Also Published As

Publication number Publication date
JP2002538522A (ja) 2002-11-12
WO2000051004A1 (en) 2000-08-31
EP1163596A4 (en) 2004-12-01
AU3369700A (en) 2000-09-14
CN1153153C (zh) 2004-06-09
CN1352773A (zh) 2002-06-05
EP1163596A1 (en) 2001-12-19

Similar Documents

Publication Publication Date Title
US8843655B2 (en) Data transfer, synchronising applications, and low latency networks
US9569366B2 (en) System and method to provide non-coherent access to a coherent memory system
JP3836838B2 (ja) マルチプロセッサ・システムでのプロセッサ相互接続を使用するマイクロプロセッサ通信の方法およびデータ処理システム
US6611883B1 (en) Method and apparatus for implementing PCI DMA speculative prefetching in a message passing queue oriented bus system
JP5066707B2 (ja) 順次処理を減らしたtcp/ipオフロードデバイス
JP2008512797A (ja) 決定性有限オートマトン(dfa)処理
US5353419A (en) Memory-side driven anticipatory instruction transfer interface with processor-side instruction selection
US20110173396A1 (en) Performing High Granularity Prefetch from Remote Memory into a Cache on a Device without Change in Address
JP2018045700A (ja) ネットワークプロセッサにおけるマルチコア相互接続
JP4667092B2 (ja) 情報処理装置、情報処理装置におけるデータ制御方法
CN111431757A (zh) 虚拟网络的流量采集方法及装置
US20060036817A1 (en) Method and system for supporting memory unaligned writes in a memory controller
WO2005043799A1 (en) Determining a checksum for packet data
JP3836837B2 (ja) マルチプロセッサ・システムでのマイクロプロセッサ通信の方法、処理ユニット、およびデータ処理システム
Tianhua et al. The design and implementation of zero-copy for linux
KR20010102285A (ko) 직접 메모리 접근 촉진 방법 및 장치
JP3836839B2 (ja) クラスタベースのマルチプロセッサ・システムでのマイクロプロセッサ通信の方法およびデータ処理システム
US7720930B2 (en) Systems and methods using NIC-based prefetching for host TCP context lookup
JPH07239808A (ja) 分散データ管理方式
US6389478B1 (en) Efficient non-contiguous I/O vector and strided data transfer in one sided communication on multiprocessor computers
US7284075B2 (en) Inbound packet placement in host memory
JP2003099324A (ja) マルチメディアプロセッサ用のストリーミングデータキャッシュ
JPH09167143A (ja) メッセージ受信制御方式
US20210073130A1 (en) Prefetching of completion notifications and context
US7089367B1 (en) Reducing memory access latencies from a bus using pre-fetching and caching

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination